Search in sources :

Example 71 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class DefaultDataBaseBuilder method buildPrimaryKey.

protected void buildPrimaryKey(AbstractTable table, ResultSet rs, PrimaryKey primaryKey) throws SQLException {
    String columnName = rs.getString(4);
    Column column = queries.getColumn(table, columnName);
    primaryKey.getColumns().add(column);
    column.setPrimaryKey(primaryKey);
}
Also used : Column(org.obeonetwork.dsl.database.Column)

Example 72 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class DefaultDataBaseBuilder method buildForeignKeys.

protected void buildForeignKeys(Table table) {
    Map foreignKeys = new HashMap();
    ResultSet rs = null;
    try {
        rs = metaData.getImportedKeys(null, schemaName, table.getName());
        while (rs.next()) {
            String pkSchemaName = rs.getString(2);
            String pkTableName = rs.getString(3);
            String fkName = rs.getString(12);
            String pkName = rs.getString(13);
            String foreignKeyId = tableContainer.getName() + "::" + table.getName() + "::" + fkName;
            ForeignKey foreignKey = (ForeignKey) foreignKeys.get(foreignKeyId);
            if (foreignKey == null) {
                foreignKey = CreationUtils.createForeignKey(table);
                foreignKey.setName(fkName);
                foreignKeys.put(foreignKeyId, foreignKey);
            }
            int keySeq = rs.getInt(9);
            ForeignKeyElement foreignKeyElement = CreationUtils.createForeignKeyElement(keySeq, foreignKey);
            foreignKey.getElements().add(foreignKeyElement);
            String pkColumnName = rs.getString(4);
            Column pkColumn = queries.getColumn(tableContainer, pkTableName, pkColumnName);
            if (pkColumn != null) {
                foreignKeyElement.setPkColumn(pkColumn);
            } else {
                AbstractTable pkTable = queries.getTable(pkTableName);
                if (pkTable == null) {
                    pkTable = CreationUtils.createTable(tableContainer, pkTableName);
                    pkColumn = CreationUtils.createColumn(pkTable, pkColumnName);
                } else {
                    pkColumn = queries.getColumn(pkTable, pkColumnName);
                }
                foreignKeyElement.setPkColumn(pkColumn);
            }
            String fkSchemaName = rs.getString(6);
            String fkTableName = rs.getString(7);
            String fkColumnName = rs.getString(8);
            Column fkColumn = queries.getColumn(tableContainer, fkTableName, fkColumnName);
            foreignKeyElement.setFkColumn(fkColumn);
            // Set target table
            if (foreignKey.getTarget() == null) {
                Table targetTable = (Table) pkColumn.getOwner();
                foreignKey.setTarget(targetTable);
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        JdbcUtils.closeResultSet(rs);
    }
}
Also used : ForeignKeyElement(org.obeonetwork.dsl.database.ForeignKeyElement) AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Table(org.obeonetwork.dsl.database.Table) AbstractTable(org.obeonetwork.dsl.database.AbstractTable) HashMap(java.util.HashMap) Column(org.obeonetwork.dsl.database.Column) ResultSet(java.sql.ResultSet) ForeignKey(org.obeonetwork.dsl.database.ForeignKey) HashMap(java.util.HashMap) Map(java.util.Map) SQLException(java.sql.SQLException)

Example 73 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class OracleDataBaseBuilder method buildSequences.

private void buildSequences(DatabaseMetaData metaData, TableContainer owner) {
    ResultSet rs = null;
    PreparedStatement pstmt = null;
    try {
        PreparedStatement psmt = metaData.getConnection().prepareStatement("SELECT SEQUENCE_NAME, INCREMENT_BY, MIN_VALUE, MAX_VALUE, LAST_NUMBER, CYCLE_FLAG, CACHE_SIZE " + "FROM user_sequences");
        rs = psmt.executeQuery();
        while (rs.next()) {
            String name = rs.getString(1);
            BigInteger increment = getBigIntValueForColumn(rs, 2);
            BigInteger minValue = getBigIntValueForColumn(rs, 3);
            BigInteger maxValue = getBigIntValueForColumn(rs, 4);
            BigInteger start = getBigIntValueForColumn(rs, 5);
            String cycleAsString = rs.getString(6);
            boolean cycle = "Y".equals(cycleAsString);
            BigInteger cacheSize = getBigIntValueForColumn(rs, 7);
            Sequence sequence = CreationUtils.createSequence(owner, name, increment, minValue, maxValue, start, cycle, cacheSize);
            // Look for a table that could correspond to the sequence
            if (name.endsWith("_SEQ")) {
                String tableName = name.substring(0, name.length() - "_SEQ".length());
                AbstractTable abstractTable = queries.getTable(tableName);
                if (abstractTable != null && abstractTable instanceof Table) {
                    Table table = (Table) abstractTable;
                    if (table.getPrimaryKey() != null && table.getPrimaryKey().getColumns().size() == 1) {
                        Column column = table.getPrimaryKey().getColumns().get(0);
                        column.setSequence(sequence);
                    }
                }
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        JdbcUtils.closeStatement(pstmt);
        JdbcUtils.closeResultSet(rs);
    }
}
Also used : AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Table(org.obeonetwork.dsl.database.Table) AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Column(org.obeonetwork.dsl.database.Column) ResultSet(java.sql.ResultSet) BigInteger(java.math.BigInteger) PreparedStatement(java.sql.PreparedStatement) Sequence(org.obeonetwork.dsl.database.Sequence) SQLException(java.sql.SQLException)

Example 74 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class CreationUtils method createColumn.

public static Column createColumn(AbstractTable abstractTable, String name) {
    if (abstractTable instanceof Table) {
        Table table = (Table) abstractTable;
        Column column = DatabaseFactory.eINSTANCE.createColumn();
        column.setName(name);
        column.setOwner(table);
        table.getColumns().add(column);
        return column;
    }
    return null;
}
Also used : Table(org.obeonetwork.dsl.database.Table) AbstractTable(org.obeonetwork.dsl.database.AbstractTable) Column(org.obeonetwork.dsl.database.Column)

Example 75 with Column

use of org.obeonetwork.dsl.database.Column in project InformationSystem by ObeoNetwork.

the class RenameColumnChangeImpl method setNewColumn.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public void setNewColumn(Column newNewColumn) {
    Column oldNewColumn = newColumn;
    newColumn = newNewColumn;
    if (eNotificationRequired())
        eNotify(new ENotificationImpl(this, Notification.SET, DbevolutionPackage.RENAME_COLUMN_CHANGE__NEW_COLUMN, oldNewColumn, newColumn));
}
Also used : Column(org.obeonetwork.dsl.database.Column) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl)

Aggregations

Column (org.obeonetwork.dsl.database.Column)83 Table (org.obeonetwork.dsl.database.Table)41 Test (org.junit.Test)31 AbstractTest (org.obeonetwork.database.m2doc.services.common.AbstractTest)31 TypeInstance (org.obeonetwork.dsl.typeslibrary.TypeInstance)11 EObject (org.eclipse.emf.ecore.EObject)9 AbstractTable (org.obeonetwork.dsl.database.AbstractTable)8 ForeignKey (org.obeonetwork.dsl.database.ForeignKey)7 ArrayList (java.util.ArrayList)6 Constraint (org.obeonetwork.dsl.database.Constraint)6 ForeignKeyElement (org.obeonetwork.dsl.database.ForeignKeyElement)6 Sequence (org.obeonetwork.dsl.database.Sequence)6 BigInteger (java.math.BigInteger)5 ResultSet (java.sql.ResultSet)5 SQLException (java.sql.SQLException)5 NativeType (org.obeonetwork.dsl.typeslibrary.NativeType)5 PreparedStatement (java.sql.PreparedStatement)4 Viewer (org.eclipse.jface.viewers.Viewer)4 ViewerFilter (org.eclipse.jface.viewers.ViewerFilter)4 IndexElement (org.obeonetwork.dsl.database.IndexElement)4