private Collection<ColumnReference> mapForeignKeyColumns(final List<Table> tables) { requireNonNull(tables, "No tables provided"); final Collection<ColumnReference> fkColumnsMap = new HashSet<>(); for (final Table table: tables) { for (final ForeignKey foreignKey: table.getForeignKeys()) { for (final ForeignKeyColumnReference columnRef: foreignKey) { fkColumnsMap.add(columnRef); } } } return fkColumnsMap; } }
private void printForeignKeys(final Table table) { printForeignKeys(table, table.getForeignKeys()); }
TablesGraph(final NamedObjectList<MutableTable> tables) { super("catalog"); if (tables == null) { return; } for (final Table table: tables) { addVertex(table); for (final ForeignKey foreignKey: table.getForeignKeys()) { for (final ForeignKeyColumnReference columnRef: foreignKey) { addEdge(columnRef.getPrimaryKeyColumn().getParent(), columnRef.getForeignKeyColumn().getParent()); } } } }
TablesGraph(final NamedObjectList<MutableTable> tables) { super("catalog"); if (tables == null) { return; } for (final Table table: tables) { addVertex(table); for (final ForeignKey foreignKey: table.getForeignKeys()) { for (final ForeignKeyColumnReference columnRef: foreignKey) { addEdge(columnRef.getPrimaryKeyColumn().getParent(), columnRef.getForeignKeyColumn().getParent()); } } } }
final ForeignKey[] foreignKeys = table.getForeignKeys() .toArray(new ForeignKey[0]); Arrays.sort(foreignKeys,
@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")); }
private void printForeignKeys(final Table table) final Collection<ForeignKey> foreignKeysCollection = table.getForeignKeys(); if (foreignKeysCollection.isEmpty())
@Test public void fkReferences(final Connection connection) throws Exception { final SchemaCrawlerOptions schemaCrawlerOptions = DatabaseTestUtility.schemaCrawlerOptionsWithMaximumSchemaInfoLevel; int fkReferenceCount = 0; final Catalog catalog = getCatalog(connection, schemaCrawlerOptions); final Collection<Table> tables = catalog.getTables(); for (final Table table: tables) { final Collection<ForeignKey> foreignKeys = table.getForeignKeys(); for (final ForeignKey foreignKey: foreignKeys) { for (final ForeignKeyColumnReference fkColumnRef: foreignKey) { assertReferencedColumnExists(catalog, fkColumnRef.getPrimaryKeyColumn()); assertReferencedColumnExists(catalog, fkColumnRef.getForeignKeyColumn()); fkReferenceCount++; } } } assertThat(fkReferenceCount, is(26)); }
private Collection<ColumnReference> mapForeignKeyColumns(final List<Table> tables) { requireNonNull(tables, "No tables provided"); final Collection<ColumnReference> fkColumnsMap = new HashSet<>(); for (final Table table: tables) { for (final ForeignKey foreignKey: table.getForeignKeys()) { for (final ForeignKeyColumnReference columnRef: foreignKey) { fkColumnsMap.add(columnRef); } } } return fkColumnsMap; } }
@Test public void fkReferencesForGreppedTables2(final Connection connection) throws Exception { final SchemaCrawlerOptions schemaCrawlerOptions = SchemaCrawlerOptionsBuilder .builder() .includeGreppedColumns(new RegularExpressionInclusionRule(".*\\.AUTHORS\\..*")) .toOptions(); int fkReferenceCount = 0; final Catalog catalog = getCatalog(connection, schemaCrawlerOptions); final Collection<Table> tables = catalog.getTables(); for (final Table table: tables) { final Collection<ForeignKey> foreignKeys = table.getForeignKeys(); for (final ForeignKey foreignKey: foreignKeys) { for (final ForeignKeyColumnReference fkColumnRef: foreignKey) { assertReferencedColumnExists(catalog, fkColumnRef.getPrimaryKeyColumn()); assertReferencedColumnDoesNotExist(catalog, fkColumnRef.getForeignKeyColumn(), false); fkReferenceCount++; } } } assertThat(fkReferenceCount, is(1)); }
private Collection<ColumnReference> mapForeignKeyColumns(final List<Table> tables) { requireNonNull(tables, "No tables provided"); final Collection<ColumnReference> fkColumnsMap = new HashSet<>(); for (final Table table: tables) { for (final ForeignKey foreignKey: table.getForeignKeys()) { for (final ForeignKeyColumnReference columnRef: foreignKey) { fkColumnsMap.add(columnRef); } } } return fkColumnsMap; } }
@Test public void fkReferencesForGreppedTables1(final Connection connection) throws Exception { final SchemaCrawlerOptions schemaCrawlerOptions = SchemaCrawlerOptionsBuilder .builder() .includeGreppedColumns(new RegularExpressionInclusionRule(".*\\.BOOKAUTHORS\\..*")) .toOptions(); int fkReferenceCount = 0; final Catalog catalog = getCatalog(connection, schemaCrawlerOptions); final Collection<Table> tables = catalog.getTables(); for (final Table table: tables) { final Collection<ForeignKey> foreignKeys = table.getForeignKeys(); for (final ForeignKey foreignKey: foreignKeys) { for (final ForeignKeyColumnReference fkColumnRef: foreignKey) { assertReferencedColumnDoesNotExist(catalog, fkColumnRef.getPrimaryKeyColumn(), false); assertReferencedColumnExists(catalog, fkColumnRef.getForeignKeyColumn()); fkReferenceCount++; } } } assertThat(fkReferenceCount, is(2)); }
+ table.getTableConstraints().size()); out.println(" # indexes: " + table.getIndexes().size()); out.println(" # foreign keys: " + table.getForeignKeys().size()); out.println(" # imported foreign keys: " + table.getExportedForeignKeys().size());
table2.addIndex((MutableIndex) index); for (final ForeignKey fk: table0.getForeignKeys())
private void printForeignKeys(final Table table) { printForeignKeys(table, table.getForeignKeys()); }
private void printForeignKeys(final Table table) { printForeignKeys(table, table.getForeignKeys()); }
for (final Table table: tables) final Collection<ForeignKey> foreignKeys = table.getForeignKeys(); for (final ForeignKey foreignKey: foreignKeys)
for (final Table table: tables) final Collection<ForeignKey> foreignKeys = table.getForeignKeys(); for (final ForeignKey foreignKey: foreignKeys)
jsonTable.put("foreignKeys", handleForeignKeys(table.getForeignKeys())); if (!isBrief)
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; }