@Override public final boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof BaseColumnReference)) { return false; } final ColumnReference other = (ColumnReference) obj; return Objects.equals(foreignKeyColumn, other.getForeignKeyColumn()) && Objects.equals(primaryKeyColumn, other.getPrimaryKeyColumn()); }
public static final List<String> foreignKeyColumnNames(final BaseForeignKey<? extends ColumnReference> foreignKey) { if (foreignKey == null) { return Collections.emptyList(); } final List<String> columnNames = new ArrayList<>(); for (final ColumnReference columnReference: foreignKey) { columnNames.add(columnReference.getForeignKeyColumn().getFullName()); } return columnNames; }
private void printWeakAssociations(final Table table) { final Collection<ColumnReference> weakAssociations = DatabaseWithAssociations .getWeakAssociations(table); for (final ColumnReference weakAssociation: weakAssociations) { if (table.equals(weakAssociation.getPrimaryKeyColumn().getParent())) { out.write(printColumnReference("", weakAssociation, false)); } } }
public static final List<String> foreignKeyColumnNames(final BaseForeignKey<? extends ColumnReference> foreignKey) { if (foreignKey == null) { return Collections.emptyList(); } final List<String> columnNames = new ArrayList<>(); for (final ColumnReference columnReference: foreignKey) { columnNames.add(columnReference.getForeignKeyColumn().getFullName()); } return columnNames; }
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)); } } } }
@Override public final boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof BaseColumnReference)) { return false; } final ColumnReference other = (ColumnReference) obj; return Objects.equals(foreignKeyColumn, other.getForeignKeyColumn()) && Objects.equals(primaryKeyColumn, other.getPrimaryKeyColumn()); }
public static boolean isForeignKeyUnique(final BaseForeignKey<?> foreignKey) { if (foreignKey == null) { return false; } final ColumnReference columnRef0 = foreignKey.getColumnReferences().get(0); final Table fkTable = columnRef0.getForeignKeyColumn().getParent(); final Collection<List<String>> uniqueIndexCoumnNames = uniqueIndexCoumnNames(fkTable); final List<String> foreignKeyColumnNames = foreignKeyColumnNames(foreignKey); return uniqueIndexCoumnNames.contains(foreignKeyColumnNames); }
@Override public int compareTo(final ColumnReference columnRef) { if (columnRef == null) { return -1; } int compare = 0; if (compare == 0) { compare = primaryKeyColumn.getFullName() .compareTo(columnRef.getPrimaryKeyColumn().getFullName()); } if (compare == 0) { compare = foreignKeyColumn.getFullName() .compareTo(columnRef.getForeignKeyColumn().getFullName()); } return compare; }
public static ForeignKeyCardinality findForeignKeyCardinality(final BaseForeignKey<?> foreignKey) { if (foreignKey == null) { return ForeignKeyCardinality.unknown; } final boolean isForeignKeyUnique = isForeignKeyUnique(foreignKey); final ColumnReference columnRef0 = foreignKey.getColumnReferences().get(0); final Column fkColumn = columnRef0.getForeignKeyColumn(); final boolean isColumnReference = fkColumn instanceof PartialDatabaseObject; final ForeignKeyCardinality connectivity; if (isColumnReference) { connectivity = ForeignKeyCardinality.unknown; } else if (isForeignKeyUnique) { connectivity = ForeignKeyCardinality.zero_one; } else { connectivity = ForeignKeyCardinality.zero_many; } return connectivity; }
@Override public int compareTo(final ColumnReference columnRef) { if (columnRef == null) { return -1; } int compare = 0; if (compare == 0) { compare = primaryKeyColumn.getFullName() .compareTo(columnRef.getPrimaryKeyColumn().getFullName()); } if (compare == 0) { compare = foreignKeyColumn.getFullName() .compareTo(columnRef.getForeignKeyColumn().getFullName()); } return compare; }
public static boolean isForeignKeyUnique(final BaseForeignKey<?> foreignKey) { if (foreignKey == null) { return false; } final ColumnReference columnRef0 = foreignKey.getColumnReferences().get(0); final Table fkTable = columnRef0.getForeignKeyColumn().getParent(); final Collection<List<String>> uniqueIndexCoumnNames = uniqueIndexCoumnNames(fkTable); final List<String> foreignKeyColumnNames = foreignKeyColumnNames(foreignKey); return uniqueIndexCoumnNames.contains(foreignKeyColumnNames); }
final Column primaryKeyColumn = columnRef.getPrimaryKeyColumn(); final Column foreignKeyColumn = columnRef.getForeignKeyColumn();
public static ForeignKeyCardinality findForeignKeyCardinality(final BaseForeignKey<?> foreignKey) { if (foreignKey == null) { return ForeignKeyCardinality.unknown; } final boolean isForeignKeyUnique = isForeignKeyUnique(foreignKey); final ColumnReference columnRef0 = foreignKey.getColumnReferences().get(0); final Column fkColumn = columnRef0.getForeignKeyColumn(); final boolean isColumnReference = fkColumn instanceof PartialDatabaseObject; final ForeignKeyCardinality connectivity; if (isColumnReference) { connectivity = ForeignKeyCardinality.unknown; } else if (isForeignKeyUnique) { connectivity = ForeignKeyCardinality.zero_one; } else { connectivity = ForeignKeyCardinality.zero_many; } return connectivity; }
private void printForeignKeys(final Table table, final Collection<? extends BaseForeignKey<?>> foreignKeys) { for (final BaseForeignKey<? extends ColumnReference> foreignKey: foreignKeys) { final ForeignKeyCardinality fkCardinality = findForeignKeyCardinality(foreignKey); for (final ColumnReference columnRef: foreignKey) { final Table referencedTable = columnRef.getForeignKeyColumn() .getParent(); final boolean isForeignKeyFiltered = referencedTable .getAttribute("schemacrawler.table.no_grep_match", false); if (isForeignKeyFiltered) { continue; } final boolean isFkColumnFiltered = referencedTable .getAttribute("schemacrawler.table.filtered_out", false); if (table.equals(columnRef.getPrimaryKeyColumn().getParent())) { formattingHelper.append(printColumnReference(identifiers .quoteName(foreignKey.getName()), columnRef, fkCardinality, isFkColumnFiltered)); } } } }
public static final List<String> foreignKeyColumnNames(final BaseForeignKey<? extends ColumnReference> foreignKey) { if (foreignKey == null) { return Collections.emptyList(); } final List<String> columnNames = new ArrayList<>(); for (final ColumnReference columnReference: foreignKey) { columnNames.add(columnReference.getForeignKeyColumn().getFullName()); } return columnNames; }
@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")); }
public static final List<String> foreignKeyColumnNames(final BaseForeignKey<? extends ColumnReference> foreignKey) { if (foreignKey == null) { return Collections.emptyList(); } final List<String> columnNames = new ArrayList<>(); for (final ColumnReference columnReference: foreignKey) { columnNames.add(columnReference.getForeignKeyColumn().getFullName()); } return columnNames; }
if (options.isShowUnqualifiedNames()) pkColumnName = columnReference.getPrimaryKeyColumn().getShortName(); pkColumnName = columnReference.getPrimaryKeyColumn().getFullName(); if (options.isShowUnqualifiedNames()) fkColumnName = columnReference.getForeignKeyColumn().getShortName(); fkColumnName = columnReference.getForeignKeyColumn().getFullName();
public static boolean isForeignKeyUnique(final BaseForeignKey<?> foreignKey) { if (foreignKey == null) { return false; } final ColumnReference columnRef0 = foreignKey.getColumnReferences().get(0); final Table fkTable = columnRef0.getForeignKeyColumn().getParent(); final Collection<List<String>> uniqueIndexCoumnNames = uniqueIndexCoumnNames(fkTable); final List<String> foreignKeyColumnNames = foreignKeyColumnNames(foreignKey); return uniqueIndexCoumnNames.contains(foreignKeyColumnNames); }
final String pkColumnName; final String fkColumnName; pkColumn = columnReference.getPrimaryKeyColumn(); fkColumn = columnReference.getForeignKeyColumn();