/** * Locate the {@link ForeignKey} child with the specified id if it exists, * else return an empty {@code Optional}. * * @param id the {@link HasId#getId()} of the foreign key * @return the child found or an empty {@code Optional} */ default Optional<? extends ForeignKey> findForeignKey(String id) { return foreignKeys().filter(child -> child.getId().equals(id)).findAny(); }
public static Stream<? extends Document> typedChildrenOf(Table table) { return Stream.of( table.columns().map(Document.class::cast), table.primaryKeyColumns().map(Document.class::cast), table.indexes().map(Document.class::cast), table.foreignKeys().map(Document.class::cast) ).flatMap(Function.identity()); }
public static Optional<? extends ForeignKeyColumn> getForeignKey(Table table, Column column) { requireNonNulls(table, column); return table.foreignKeys() .filter(HasEnabled::test) .filter(fk -> fk.foreignKeyColumns().count() == 1) // We can only handle one column FKs... .flatMap(ForeignKey::foreignKeyColumns) .filter(fkc -> fkc.findForeignTable().map(Table::isEnabled).orElse(false)) // We can only handle FKs pointing to an enabled Table .filter(fkc -> fkc.findForeignColumn().map(Column::isEnabled).orElse(false)) // We can only handle FKs pointing to an enabled column .filter(fkc -> DocumentDbUtil.isSame(column, fkc.findColumn().orElse(null))) .findFirst(); }
public static Stream<? extends Document> traverseOver(Table table) { return Stream.of( table.columns(), table.columns().flatMap(DocumentDbUtil::traverseOver), table.primaryKeyColumns(), table.primaryKeyColumns().flatMap(DocumentDbUtil::traverseOver), table.indexes(), table.indexes().flatMap(DocumentDbUtil::traverseOver), table.foreignKeys(), table.foreignKeys().flatMap(DocumentDbUtil::traverseOver) ).flatMap(Function.identity()); }
public static <T> Stream<T> traverseOver(Table table, Class<T> clazz) { if (Column.class.isAssignableFrom(clazz)) { return table.columns().map(clazz::cast); } else if (PrimaryKeyColumn.class.isAssignableFrom(clazz)) { return table.primaryKeyColumns().map(clazz::cast); } else if (Index.class.isAssignableFrom(clazz)) { return table.indexes().map(clazz::cast); } else if (ForeignKey.class.isAssignableFrom(clazz)) { return table.foreignKeys().map(clazz::cast); } else { final Stream.Builder<T> sb = Stream.builder(); table.columns().flatMap(c -> traverseOver(c, clazz)).forEachOrdered(sb::accept); table.primaryKeyColumns().flatMap(c -> traverseOver(c, clazz)).forEachOrdered(sb::accept); table.indexes().flatMap(c -> traverseOver(c, clazz)).forEachOrdered(sb::accept); table.foreignKeys().flatMap(c -> traverseOver(c, clazz)).forEachOrdered(sb::accept); return sb.build(); } }
table.foreignKeys() .filter(fk -> fksThatNeedNewNames.contains(fk.getId())) .forEach(fk -> {
public static Optional<? extends ForeignKeyColumn> getForeignKey(Table table, Column column) { requireNonNulls(table, column); return table.foreignKeys() .filter(HasEnabled::test) .filter(fk -> fk.foreignKeyColumns().count() == 1) // We can only handle one column FKs... .flatMap(ForeignKey::foreignKeyColumns) .filter(fkc -> fkc.findForeignTable().map(Table::isEnabled).orElse(false)) // We can only handle FKs pointing to an enabled Table .filter(fkc -> fkc.findForeignColumn().map(Column::isEnabled).orElse(false)) // We can only handle FKs pointing to an enabled column .filter(fkc -> DocumentDbUtil.isSame(column, fkc.findColumn().orElse(null))) .findFirst(); }
table.foreignKeys() .filter(fk -> fksThatNeedNewNames.contains(fk.getId())) .forEach(fk -> {