private String sqlPrimaryKeyColumnList(Function<String, String> postMapper) { requireNonNull(postMapper); return table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .map(this::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
private String sqlPrimaryKeyColumnList(Function<String, String> postMapper) { requireNonNull(postMapper); return table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .map(this::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
/** * Locate the {@link PrimaryKeyColumn} child with the specified id if it * exists, else return an empty {@code Optional}. * * @param id the {@link HasId#getId()} of the primary key column * @return the child found or an empty {@code Optional} */ default Optional<? extends PrimaryKeyColumn> findPrimaryKeyColumn(String id) { return primaryKeyColumns().filter(child -> child.getId().equals(id)).findAny(); }
/** * Returns a {@code AND} separated list of {@link PrimaryKeyColumn} database * names, formatted in accordance to the current {@link DbmsType}. * * @param naming the current naming convention * @param table the table to format * @param postMapper mapper to apply to every column name * * @return list of fully quoted primary key column names */ public static String sqlPrimaryKeyColumnList(DatabaseNamingConvention naming, Table table, Function<String, String> postMapper) { requireNonNulls(naming, table, postMapper); return table.primaryKeyColumns() .map(SqlUtil::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
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()); }
.anyMatch(col -> isSame(column, col)) || ( table.primaryKeyColumns().count() == 1 && table.primaryKeyColumns() .map(PrimaryKeyColumn::findColumn) .filter(Optional::isPresent)
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(); } }
private void primaryKeyColumns(Connection conn, Table table, ProgressMeasure progress) { requireNonNulls(conn, table, progress); final SqlSupplier<ResultSet> supplier = () -> conn.getMetaData().getPrimaryKeys(null, null, table.getId()); final TableChildMutator<PrimaryKeyColumn> mutator = (pkc, rs) -> { final String columnName = rs.getString("COLUMN_NAME"); pkc.mutator().setId(columnName); pkc.mutator().setName(columnName); pkc.mutator().setOrdinalPosition(rs.getInt("KEY_SEQ")); }; tableChilds( table, PrimaryKeyColumn.class, table.mutator()::addNewPrimaryKeyColumn, supplier, rsChild -> rsChild.getString("COLUMN_NAME"), mutator ); if (!table.isView() && table.primaryKeyColumns().noneMatch(pk -> true)) { LOGGER.warn(format("Table '%s' does not have any primary key.", table.getId())); } }
protected void primaryKeyColumns(Connection connection, Table table, ProgressMeasure progressListener) { requireNonNulls(connection, table); final Schema schema = table.getParentOrThrow(); final SqlSupplier<ResultSet> supplier = () -> connection.getMetaData().getPrimaryKeys(jdbcCatalogLookupName(schema), jdbcSchemaLookupName(schema), metaDataTableNameForPrimaryKeys(table) ); final AbstractDbmsOperationHandler.TableChildMutator<PrimaryKeyColumn, ResultSet> mutator = (primaryKeyColumn, rs) -> { final String columnName = rs.getString("COLUMN_NAME"); primaryKeyColumn.mutator().setId(columnName); primaryKeyColumn.mutator().setName(columnName); primaryKeyColumn.mutator().setOrdinalPosition(rs.getInt("KEY_SEQ")); }; tableChilds(PrimaryKeyColumn.class, table.mutator()::addNewPrimaryKeyColumn, supplier, mutator, progressListener); if (!table.isView() && table.primaryKeyColumns().noneMatch(pk -> true)) { LOGGER.warn("Table '" + table.getId() + "' does not have any primary key."); } }
.noneMatch(col -> table.primaryKeyColumns().anyMatch(pkc -> DocumentDbUtil.isSame(pkc.findColumn().get(), col))) && table.columns().map(Column::getId).noneMatch("rowid"::equalsIgnoreCase)) { final Column column = table.mutator().addNewColumn(); if (table.primaryKeyColumns().anyMatch(pkc -> true)) { final Set<String> oldPks = table.primaryKeyColumns() .map(PrimaryKeyColumn::getId) .collect(toCollection(LinkedHashSet::new)); mutator.setUnique(true); table.primaryKeyColumns().forEachOrdered(pkc -> { final int ordNo = 1 + (int) pkReplacement.indexColumns().count(); final IndexColumn idxCol = mutator.addNewIndexColumn(); table.columns() .filter(col -> col.getAsString(ORIGINAL_TYPE).filter("INTEGER"::equalsIgnoreCase).isPresent()) .filter(col -> table.primaryKeyColumns().anyMatch(pkc -> DocumentDbUtil.isSame(pkc.findColumn().get(), col))) .forEach(col -> col.mutator().setAutoIncrement(true));
() -> table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .filter(HasEnabled::test)
private String sqlPrimaryKeyColumnList(Function<String, String> postMapper) { requireNonNull(postMapper); return table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .map(this::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
private String sqlPrimaryKeyColumnList(Function<String, String> postMapper) { requireNonNull(postMapper); return table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .map(this::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
/** * Returns a {@code AND} separated list of {@link PrimaryKeyColumn} database * names, formatted in accordance to the current {@link DbmsType}. * * @param naming the current naming convention * @param table the table to format * @param postMapper mapper to apply to every column name * * @return list of fully quoted primary key column names */ public static String sqlPrimaryKeyColumnList(DatabaseNamingConvention naming, Table table, Function<String, String> postMapper) { requireNonNulls(naming, table, postMapper); return table.primaryKeyColumns() .map(SqlUtil::findColumn) .map(Column::getName) .map(naming::encloseField) .map(postMapper) .collect(joining(" AND ")); }
private void primaryKeyColumns(Connection conn, Table table, ProgressMeasure progress) { requireNonNulls(conn, table, progress); final SqlSupplier<ResultSet> supplier = () -> conn.getMetaData().getPrimaryKeys(null, null, table.getId()); final TableChildMutator<PrimaryKeyColumn> mutator = (pkc, rs) -> { final String columnName = rs.getString("COLUMN_NAME"); pkc.mutator().setId(columnName); pkc.mutator().setName(columnName); pkc.mutator().setOrdinalPosition(rs.getInt("KEY_SEQ")); }; tableChilds( table, PrimaryKeyColumn.class, table.mutator()::addNewPrimaryKeyColumn, supplier, rsChild -> rsChild.getString("COLUMN_NAME"), mutator ); if (!table.isView() && table.primaryKeyColumns().noneMatch(pk -> true)) { LOGGER.warn(format("Table '%s' does not have any primary key.", table.getId())); } }
protected void primaryKeyColumns(Connection connection, Table table, ProgressMeasure progressListener) { requireNonNulls(connection, table); final Schema schema = table.getParentOrThrow(); final SqlSupplier<ResultSet> supplier = () -> connection.getMetaData().getPrimaryKeys(jdbcCatalogLookupName(schema), jdbcSchemaLookupName(schema), metaDataTableNameForPrimaryKeys(table) ); final AbstractDbmsOperationHandler.TableChildMutator<PrimaryKeyColumn, ResultSet> mutator = (primaryKeyColumn, rs) -> { final String columnName = rs.getString("COLUMN_NAME"); primaryKeyColumn.mutator().setId(columnName); primaryKeyColumn.mutator().setName(columnName); primaryKeyColumn.mutator().setOrdinalPosition(rs.getInt("KEY_SEQ")); }; tableChilds(PrimaryKeyColumn.class, table.mutator()::addNewPrimaryKeyColumn, supplier, mutator, progressListener); if (!table.isView() && table.primaryKeyColumns().noneMatch(pk -> true)) { LOGGER.warn("Table '" + table.getId() + "' does not have any primary key."); } }
.noneMatch(col -> table.primaryKeyColumns().anyMatch(pkc -> DocumentDbUtil.isSame(pkc.findColumn().get(), col))) && table.columns().map(Column::getId).noneMatch("rowid"::equalsIgnoreCase)) { final Column column = table.mutator().addNewColumn(); if (table.primaryKeyColumns().anyMatch(pkc -> true)) { final Set<String> oldPks = table.primaryKeyColumns() .map(PrimaryKeyColumn::getId) .collect(toCollection(LinkedHashSet::new)); mutator.setUnique(true); table.primaryKeyColumns().forEachOrdered(pkc -> { final int ordNo = 1 + (int) pkReplacement.indexColumns().count(); final IndexColumn idxCol = mutator.addNewIndexColumn(); table.columns() .filter(col -> col.getAsString(ORIGINAL_TYPE).filter("INTEGER"::equalsIgnoreCase).isPresent()) .filter(col -> table.primaryKeyColumns().anyMatch(pkc -> DocumentDbUtil.isSame(pkc.findColumn().get(), col))) .forEach(col -> col.mutator().setAutoIncrement(true));
() -> table.primaryKeyColumns() .sorted(comparing(PrimaryKeyColumn::getOrdinalPosition)) .filter(HasEnabled::test)