Search in sources :

Example 1 with Column

use of org.openforis.collect.relational.model.Column in project collect by openforis.

the class SqlSchemaWriter method writeTable.

private void writeTable(Table<?> table) throws IOException {
    writer.write("CREATE TABLE ");
    if (!isSchemaless()) {
        writer.write(doubleQuote(schema.getName()));
        writer.write('.');
    }
    writer.write(doubleQuote(table.getName()));
    writer.write(" (");
    writer.write('\n');
    List<Column<?>> columns = table.getColumns();
    for (int i = 0; i < columns.size(); i++) {
        if (i > 0) {
            writer.write(',');
            writer.write('\n');
        }
        Column<?> column = columns.get(i);
        writeColumn(column);
    }
    if (includeForeignKeysInCreateTable && !table.getReferentialContraints().isEmpty()) {
        writer.write(',');
        writer.write('\n');
        List<ReferentialConstraint> fks = table.getReferentialContraints();
        for (int i = 0; i < fks.size(); i++) {
            ReferentialConstraint fk = fks.get(i);
            writer.write('\t');
            writeForeignKeyConstraint(fk);
            if (i < fks.size() - 1) {
                writer.write(", \n");
            }
        }
    }
    writer.write('\n');
    writer.write(");");
    writer.write('\n');
}
Also used : Column(org.openforis.collect.relational.model.Column) PrimaryKeyColumn(org.openforis.collect.relational.model.PrimaryKeyColumn) ReferentialConstraint(org.openforis.collect.relational.model.ReferentialConstraint) PrimaryKeyConstraint(org.openforis.collect.relational.model.PrimaryKeyConstraint) ReferentialConstraint(org.openforis.collect.relational.model.ReferentialConstraint) UniquenessConstraint(org.openforis.collect.relational.model.UniquenessConstraint)

Example 2 with Column

use of org.openforis.collect.relational.model.Column in project collect by openforis.

the class CodeTableDataExtractor method extractRow.

public Row extractRow(CodeListItem source) {
    Row row = new Row(table);
    List<Column<?>> columns = table.getColumns();
    for (int i = 0; i < columns.size(); i++) {
        Column<?> col = columns.get(i);
        Object val = extractValue(source, col);
        row.setValue(i, val);
    }
    return row;
}
Also used : CodeLabelColumn(org.openforis.collect.relational.model.CodeLabelColumn) CodeListDescriptionColumn(org.openforis.collect.relational.model.CodeListDescriptionColumn) CodeParentKeyColumn(org.openforis.collect.relational.model.CodeParentKeyColumn) CodePrimaryKeyColumn(org.openforis.collect.relational.model.CodePrimaryKeyColumn) Column(org.openforis.collect.relational.model.Column) CodeListCodeColumn(org.openforis.collect.relational.model.CodeListCodeColumn) Row(org.openforis.collect.relational.data.Row)

Example 3 with Column

use of org.openforis.collect.relational.model.Column in project collect by openforis.

the class DDLCreator method write.

public void write(Writer output) {
    Database db = new Database();
    db.setName(schema.getName());
    for (Table<?> table : schema.getTables()) {
        org.apache.ddlutils.model.Table ddlTable = new org.apache.ddlutils.model.Table();
        ddlTable.setName(table.getName());
        ddlTable.setSchema(schema.getName());
        for (Column<?> column : table.getColumns()) {
            org.apache.ddlutils.model.Column ddlColumn = new org.apache.ddlutils.model.Column();
            ddlColumn.setName(column.getName());
            ddlColumn.setType(column.getType().getName());
            ddlColumn.setTypeCode(column.getType().getCode());
            ddlColumn.setSizeAndScale(column.getLength() == null ? 0 : column.getLength(), 0);
            ddlTable.addColumn(ddlColumn);
        }
        db.addTable(ddlTable);
    }
    new DatabaseIO().write(db, output);
}
Also used : Table(org.openforis.collect.relational.model.Table) Column(org.openforis.collect.relational.model.Column) Database(org.apache.ddlutils.model.Database) DatabaseIO(org.apache.ddlutils.io.DatabaseIO)

Example 4 with Column

use of org.openforis.collect.relational.model.Column in project collect by openforis.

the class CodeTableDataExtractor method createDefaultCodeRow.

protected Row createDefaultCodeRow() {
    Row row = new Row(table);
    List<Column<?>> columns = table.getColumns();
    for (int i = 0; i < columns.size(); i++) {
        @SuppressWarnings("rawtypes") Column col = columns.get(i);
        Object val;
        if (col instanceof CodePrimaryKeyColumn) {
            val = DEFAULT_CODE_ROW_ID;
        } else if (col instanceof CodeListCodeColumn) {
            val = table.getDefaultCode();
        } else if (col instanceof CodeLabelColumn) {
            val = table.getDefaultCodeLabel(((CodeLabelColumn) col).getLanguageCode());
        } else {
            val = null;
        }
        row.setValue(i, val);
    }
    return row;
}
Also used : CodeLabelColumn(org.openforis.collect.relational.model.CodeLabelColumn) CodeListDescriptionColumn(org.openforis.collect.relational.model.CodeListDescriptionColumn) CodeParentKeyColumn(org.openforis.collect.relational.model.CodeParentKeyColumn) CodePrimaryKeyColumn(org.openforis.collect.relational.model.CodePrimaryKeyColumn) Column(org.openforis.collect.relational.model.Column) CodeListCodeColumn(org.openforis.collect.relational.model.CodeListCodeColumn) CodeListCodeColumn(org.openforis.collect.relational.model.CodeListCodeColumn) Row(org.openforis.collect.relational.data.Row) CodePrimaryKeyColumn(org.openforis.collect.relational.model.CodePrimaryKeyColumn) CodeLabelColumn(org.openforis.collect.relational.model.CodeLabelColumn)

Example 5 with Column

use of org.openforis.collect.relational.model.Column in project collect by openforis.

the class DataTableDataExtractor method extractRow.

private Row extractRow(Node<?> source) {
    List<Column<?>> columns = table.getColumns();
    Row row = new Row(table);
    for (int i = 0; i < columns.size(); i++) {
        Column<?> col = columns.get(i);
        Object val = extractColumnValue(source, col);
        row.setValue(i, val);
    }
    return row;
}
Also used : CodeValueFKColumn(org.openforis.collect.relational.model.CodeValueFKColumn) DataColumn(org.openforis.collect.relational.model.DataColumn) DataPrimaryKeyColumn(org.openforis.collect.relational.model.DataPrimaryKeyColumn) Column(org.openforis.collect.relational.model.Column) CoordinateLatLonColumn(org.openforis.collect.relational.model.CoordinateLatLonColumn) DataAncestorFKColumn(org.openforis.collect.relational.model.DataAncestorFKColumn) Row(org.openforis.collect.relational.data.Row)

Aggregations

Column (org.openforis.collect.relational.model.Column)8 CodeListCodeColumn (org.openforis.collect.relational.model.CodeListCodeColumn)4 Row (org.openforis.collect.relational.data.Row)3 DataAncestorFKColumn (org.openforis.collect.relational.model.DataAncestorFKColumn)3 ReferentialConstraint (org.openforis.collect.relational.model.ReferentialConstraint)3 Field (org.jooq.Field)2 Record (org.jooq.Record)2 CodeLabelColumn (org.openforis.collect.relational.model.CodeLabelColumn)2 CodeListDescriptionColumn (org.openforis.collect.relational.model.CodeListDescriptionColumn)2 CodeParentKeyColumn (org.openforis.collect.relational.model.CodeParentKeyColumn)2 CodePrimaryKeyColumn (org.openforis.collect.relational.model.CodePrimaryKeyColumn)2 PrimaryKeyColumn (org.openforis.collect.relational.model.PrimaryKeyColumn)2 PrimaryKeyConstraint (org.openforis.collect.relational.model.PrimaryKeyConstraint)2 UniquenessConstraint (org.openforis.collect.relational.model.UniquenessConstraint)2 ArrayList (java.util.ArrayList)1 DatabaseIO (org.apache.ddlutils.io.DatabaseIO)1 Database (org.apache.ddlutils.model.Database)1 Condition (org.jooq.Condition)1 Name (org.jooq.Name)1 TableLike (org.jooq.TableLike)1