/** * Locate the {@link Index} child with the specified id if it exists, else * return an empty {@code Optional}. * * @param id the {@link HasId#getId()} of the index * @return the child found or an empty {@code Optional} */ default Optional<? extends Index> findIndex(String id) { return indexes().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 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()); }
table.indexes() .filter(i -> i.indexColumns().count() == 1) .filter(Index::isUnique)
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(); } }
.collect(toSet()); final Optional<? extends Index> found = table.indexes() .filter(idx -> idx.indexColumns() .map(IndexColumn::getId)
if (table.indexes() .filter(Index::isUnique) .noneMatch(idx -> oldPks.equals(idx.indexColumns()
.collect(toSet()); final Optional<? extends Index> found = table.indexes() .filter(idx -> idx.indexColumns() .map(IndexColumn::getId)
if (table.indexes() .filter(Index::isUnique) .noneMatch(idx -> oldPks.equals(idx.indexColumns()