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; }
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; }
@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()); }
@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); }
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); }
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; }
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; }
@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; }
@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 Column foreignKeyColumn = columnRef.getForeignKeyColumn();
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)); } } } }
if (options.isShowUnqualifiedNames()) fkColumnName = columnReference.getForeignKeyColumn().getShortName(); fkColumnName = columnReference.getForeignKeyColumn().getFullName();
final String fkColumnName; pkColumn = columnReference.getPrimaryKeyColumn(); fkColumn = columnReference.getForeignKeyColumn();
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; }
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; }
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); }
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); }
private void addWeakAssociation(final ColumnReference weakAssociation) { if (weakAssociation != null) { weakAssociations.add(weakAssociation); addWeakAssociationToTable(weakAssociation.getPrimaryKeyColumn() .getParent(), weakAssociation); addWeakAssociationToTable(weakAssociation.getForeignKeyColumn() .getParent(), weakAssociation); } }