if (!options.isHideForeignKeyNames()) jsonFk.put("name", foreignKey.getName()); final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
@Test public void fkUtilities(final TestContext testContext, final Connection connection) throws Exception { final SchemaCrawlerOptionsBuilder schemaCrawlerOptionsBuilder = SchemaCrawlerOptionsBuilder .builder().withSchemaInfoLevel(SchemaInfoLevelBuilder.maximum()); final SchemaCrawlerOptions schemaCrawlerOptions = schemaCrawlerOptionsBuilder .toOptions(); final Catalog catalog = getCatalog(connection, schemaCrawlerOptions); final Schema schema = catalog.lookupSchema("PUBLIC.BOOKS").get(); assertThat("BOOKS Schema not found", schema, notNullValue()); final Table table = catalog.lookupTable(schema, "BOOKS").get(); assertThat("BOOKS Table not found", table, notNullValue()); final ForeignKey fk = table.getForeignKeys().toArray(new ForeignKey[0])[0]; assertThat("Foreign key not found", fk, notNullValue()); final ColumnReference columnReference = fk.getColumnReferences() .toArray(new ColumnReference[0])[0]; assertThat("Column reference not found", columnReference, notNullValue()); assertThat(MetaDataUtility .constructForeignKeyName(columnReference.getForeignKeyColumn(), columnReference.getPrimaryKeyColumn()), is("SC_AA4376_AFD2BA21")); assertThat(MetaDataUtility.findForeignKeyCardinality(fk), is(ForeignKeyCardinality.zero_many)); assertThat(MetaDataUtility.foreignKeyColumnNames(fk), containsInAnyOrder("PUBLIC.BOOKS.BOOKAUTHORS.BOOKID")); }
final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
final String name = foreignKey.getName(); final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown) printColumnReferences(tableName, foreignKey.getColumnReferences() .toArray(new ColumnReference[0]));
@Override public Optional<ForeignKey> lookupForeignKey(final String name) { if (foreignKey.getName().equals(name)) { return Optional.ofNullable(foreignKey); } else { return Optional.empty(); } }
private void printForeignKeys(final Table table) { for (final ForeignKey foreignKey: table.getForeignKeys()) { boolean isForeignKeyUnique = isForeignKeyUnique(foreignKey, table); for (final ColumnReference columnReference: foreignKey .getColumnReferences()) { if (table.equals(columnReference.getPrimaryKeyColumn().getParent())) { out.write(printColumnReference(foreignKey.getName(), columnReference, isForeignKeyUnique)); } } } }
.getColumnReferences()) table.removeForeignKey(fk.getFullName()); .getColumnReferences()) table.removeForeignKey(fk.getFullName());
if (!options.isHideForeignKeyNames()) jsonFk.put("name", foreignKey.getName()); final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown) .getColumnReferences(); jsonFk.put("columnReferences", handleColumnReferences(columnReferences));
@Override public Optional<ForeignKey> lookupForeignKey(final String name) { if (foreignKey.getName().equals(name)) { return Optional.ofNullable(foreignKey); } else { return Optional.empty(); } }
final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
if (!options.isHideForeignKeyNames()) jsonFk.put("name", foreignKey.getName()); final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
+ " sorted", expectedValues[i], equalTo(foreignKey.getName()));
public static final List<String> foreignKeyColumnNames(final ForeignKey foreignKey) { if (foreignKey == null) { return Collections.emptyList(); } final List<String> columnNames = new ArrayList<>(); for (final ForeignKeyColumnReference columnReference: foreignKey .getColumnReferences()) { columnNames.add(columnReference.getForeignKeyColumn().getFullName()); } return columnNames; }
final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
if (!options.isHideForeignKeyNames()) jsonFk.put("name", foreignKey.getName()); final ForeignKeyUpdateRule updateRule = foreignKey.getUpdateRule(); if (updateRule != null && updateRule != ForeignKeyUpdateRule.unknown) final ForeignKeyUpdateRule deleteRule = foreignKey.getDeleteRule(); if (deleteRule != null && deleteRule != ForeignKeyUpdateRule.unknown)
@Override public String getName() { return fk.getName(); }
private Map<String, ForeignKeyColumnReference> mapForeignKeyColumns(final List<Table> tables) { final Map<String, ForeignKeyColumnReference> fkColumnsMap = new HashMap<>(); for (final Table table: tables) { for (final ForeignKey fk: table.getForeignKeys()) { for (final ForeignKeyColumnReference fkMap: fk.getColumnReferences()) { fkColumnsMap.put(fkMap.getForeignKeyColumn().getFullName(), fkMap); } } } return fkColumnsMap; }
@Override public ForeignKey getForeignKey(final String name) { if (foreignKey.getName().equals(name)) { return foreignKey; } else { return null; } }
/** * {@inheritDoc} * <p> * Note: Since foreign keys are not always explicitly named in * databases, the sorting routine orders the foreign keys by the names * of the columns in the foreign keys. * </p> */ @Override public int compareTo(final NamedObject obj) { if (obj == null) { return -1; } final ForeignKey other = (ForeignKey) obj; final List<ForeignKeyColumnReference> thisColumnReferences = getColumnReferences(); final List<ForeignKeyColumnReference> otherColumnReferences = other .getColumnReferences(); return CompareUtility.compareLists(thisColumnReferences, otherColumnReferences); }
@Override public Optional<ForeignKey> lookupForeignKey(final String name) { if (foreignKey.getName().equals(name)) { return Optional.ofNullable(foreignKey); } else { return Optional.empty(); } }