public static <ENTITY> void modifySource( final List<FieldPredicate<ENTITY>> predicateBuilders, final SqlStreamOptimizerInfo<ENTITY> info, final AsynchronousQueryResult<ENTITY> query ) { requireNonNull(predicateBuilders); requireNonNull(info); requireNonNull(query); final List<FieldPredicate<ENTITY>> optimizedPredicateBuilders = optimize(predicateBuilders); final FieldPredicateView spv = info.getDbmsType().getFieldPredicateView(); final List<SqlPredicateFragment> fragments = optimizedPredicateBuilders.stream() .map(sp -> spv.transform(info.getSqlColumnNamer(), info.getSqlDatabaseTypeFunction(), sp)) .collect(toList()); final String sql = info.getSqlSelect() + " WHERE " + fragments.stream() .map(SqlPredicateFragment::getSql) .collect(joining(" AND ")); final List<Object> values = new ArrayList<>(fragments.size()); for (int i = 0; i < fragments.size(); i++) { final FieldPredicate<ENTITY> p = optimizedPredicateBuilders.get(i); final Field<ENTITY> referenceFieldTrait = p.getField(); @SuppressWarnings("unchecked") final TypeMapper<Object, Object> tm = (TypeMapper<Object, Object>) referenceFieldTrait.typeMapper(); fragments.get(i).objects() .map(tm::toDatabaseType) .forEach(values::add); } query.setSql(sql); query.setValues(values); }
if (predicate instanceof FieldPredicate) { final FieldPredicate<ENTITY> fieldPredicate = (FieldPredicate<ENTITY>) predicate; final SqlPredicateFragment fragment = spv.transform(columnNamer, columnDbTypeFunction, fieldPredicate); final Field<ENTITY> referenceFieldTrait = fieldPredicate.getField(); @SuppressWarnings("unchecked")
final SqlPredicateFragment fragment = sqlInfo.fieldPredicateView().transform( f -> tableAlias(stageIndex) + "." + sqlInfo.namingConvention().encloseField(f.identifier().getColumnId()), f -> f.findColumn(sqlInfo.project()).get().findDatabaseType(),
public static <ENTITY> void modifySource( final List<FieldPredicate<ENTITY>> predicateBuilders, final SqlStreamOptimizerInfo<ENTITY> info, final AsynchronousQueryResult<ENTITY> query ) { requireNonNull(predicateBuilders); requireNonNull(info); requireNonNull(query); final List<FieldPredicate<ENTITY>> optimizedPredicateBuilders = optimize(predicateBuilders); final FieldPredicateView spv = info.getDbmsType().getFieldPredicateView(); final List<SqlPredicateFragment> fragments = optimizedPredicateBuilders.stream() .map(sp -> spv.transform(info.getSqlColumnNamer(), info.getSqlDatabaseTypeFunction(), sp)) .collect(toList()); final String sql = info.getSqlSelect() + " WHERE " + fragments.stream() .map(SqlPredicateFragment::getSql) .collect(joining(" AND ")); final List<Object> values = new ArrayList<>(fragments.size()); for (int i = 0; i < fragments.size(); i++) { final FieldPredicate<ENTITY> p = optimizedPredicateBuilders.get(i); final Field<ENTITY> referenceFieldTrait = p.getField(); @SuppressWarnings("unchecked") final TypeMapper<Object, Object> tm = (TypeMapper<Object, Object>) referenceFieldTrait.typeMapper(); fragments.get(i).objects() .map(tm::toDatabaseType) .forEach(values::add); } query.setSql(sql); query.setValues(values); }
if (predicate instanceof FieldPredicate) { final FieldPredicate<ENTITY> fieldPredicate = (FieldPredicate<ENTITY>) predicate; final SqlPredicateFragment fragment = spv.transform(columnNamer, columnDbTypeFunction, fieldPredicate); final Field<ENTITY> referenceFieldTrait = fieldPredicate.getField(); @SuppressWarnings("unchecked")
final SqlPredicateFragment fragment = sqlInfo.fieldPredicateView().transform( f -> tableAlias(stageIndex) + "." + sqlInfo.namingConvention().encloseField(f.identifier().getColumnId()), f -> f.findColumn(sqlInfo.project()).get().findDatabaseType(),