protected List<String> getLocalFkRefColumns(Table table) { List<String> columns = new ArrayList<String>(); for (ForeignKey fk : table.getForeignKeys()) { for (Reference ref : fk.getReferences()) { columns.add(ref.getLocalColumnName()); } } return columns; }
protected void readForeignKey(DatabaseMetaDataWrapper metaData, Map<String, Object> values, Map<String, ForeignKey> knownFks) throws SQLException { String fkName = (String) values.get("FK_NAME"); ForeignKey fk = (ForeignKey) knownFks.get(fkName); if (fk == null) { fk = new ForeignKey(fkName); fk.setForeignTableName((String) values.get("PKTABLE_NAME")); knownFks.put(fkName, fk); } Reference ref = new Reference(); ref.setForeignColumnName((String) values.get("PKCOLUMN_NAME")); ref.setLocalColumnName((String) values.get("FKCOLUMN_NAME")); if (values.containsKey("KEY_SEQ")) { ref.setSequenceValue(((Short) values.get("KEY_SEQ")).intValue()); } fk.addReference(ref); }
short fkColIdx = fkRs.getShort(5 + idx + idx); short pkColIdx = fkRs.getShort(6 + idx + idx); Reference ref = new Reference(); ref.setLocalColumnName(colRs.getString(1)); ref.setForeignColumnName(colRs.getString(1));
for (ForeignKey fk : table.getForeignKeys()) { for (Reference ref : fk.getReferences()) { if (ref.getLocalColumnName().equalsIgnoreCase(column.getName())) { objectValue = columnValues.get(fk.getForeignTableName() + "." + ref.getForeignColumnName()); if (objectValue != null) { columnValues.put(table.getName() + "." + column.getName(),
for (Reference ref : fk.getReferences()) { selectValues.put(ref.getLocalColumn(), row.getString(ref.getForeignColumnName()));
Reference ref = new Reference(); ref.setForeignColumnName((String) values.get("REFERENCED_COLUMN_NAME")); ref.setLocalColumnName((String) values.get("COLUMN_NAME")); if (values.containsKey("POSITION_IN_UNIQUE_CONSTRAINT")) { ref.setSequenceValue(((Number) values.get("POSITION_IN_UNIQUE_CONSTRAINT")) .intValue());
protected void removeInternalForeignKeyIndex(Connection connection, DatabaseMetaDataWrapper metaData, Table table, ForeignKey fk) throws SQLException { List<String> columnNames = new ArrayList<String>(); boolean mustBeUnique = !getPlatformInfo().isSystemForeignKeyIndicesAlwaysNonUnique(); for (int columnIdx = 0; columnIdx < fk.getReferenceCount(); columnIdx++) { String name = fk.getReference(columnIdx).getLocalColumnName(); Column localColumn = table.findColumn(name, getPlatform().getDdlBuilder() .isDelimitedIdentifierModeOn()); if (mustBeUnique && !localColumn.isPrimaryKey()) { mustBeUnique = false; } columnNames.add(name); } for (int indexIdx = 0; indexIdx < table.getIndexCount();) { IIndex index = table.getIndex(indexIdx); if ((mustBeUnique == index.isUnique()) && matches(index, columnNames) && isInternalForeignKeyIndex(connection, metaData, table, fk, index)) { fk.setAutoIndexPresent(true); table.removeIndex(indexIdx); } else { indexIdx++; } } }