/** * Extracts all the HQL JOIN clauses from given filter expression. * @param filterExpression the filter expression to extract a join clause from * @return an HQL join clause */ protected String getJoinClauseFromFilters(FilterExpression filterExpression) { PredicateExtractionVisitor visitor = new PredicateExtractionVisitor(new ArrayList<>()); Collection<FilterPredicate> predicates = filterExpression.accept(visitor); Set<String> alreadyJoined = new HashSet<>(); return predicates.stream() .map(predicate -> extractJoinClause(predicate, alreadyJoined)) .collect(Collectors.joining(SPACE)); }
private Serializable extractId(FilterExpression filterExpression, String idFieldName, Class<?> relationClass) { Collection<FilterPredicate> predicates = filterExpression.accept(new PredicateExtractionVisitor()); return predicates.stream() .filter(p -> p.getEntityType() == relationClass && p.getOperator() == Operator.IN) .filter(p -> p.getValues().size() == 1) .filter(p -> p.getField().equals(idFieldName)) .findFirst() .map(p -> (Serializable) p.getValues().get(0)) .orElse(null); } }
PredicateExtractionVisitor extractor = new PredicateExtractionVisitor(); predicates = filterExpression.get().accept(extractor);
PredicateExtractionVisitor extractor = new PredicateExtractionVisitor(); Collection<FilterPredicate> predicates = filterExpression.get().accept(extractor);
PredicateExtractionVisitor extractor = new PredicateExtractionVisitor(new ArrayList<>());
PredicateExtractionVisitor extractor = new PredicateExtractionVisitor(); Collection<FilterPredicate> predicates = fe.accept(extractor); String filterClause = new HQLFilterOperation().apply(fe, USE_ALIAS);