/** * Adds a flattened version of all toplevel ANDed WHERE clauses. */ protected void addWhere(List<Predicate> clauses, WhereClause where) { if (where != null) { addWhere(clauses, where.predicate); } }
protected void addWhere(List<Predicate> clauses, Predicate expr) { if (expr.operator == Operator.AND && expr.lvalue instanceof Expression && expr.rvalue instanceof Expression) { addWhere(clauses, (Predicate) expr.lvalue); addWhere(clauses, (Predicate) expr.rvalue); } else if (expr.operator == Operator.AND && expr instanceof MultiExpression) { for (Predicate pred : ((MultiExpression) expr).predicates) { addWhere(clauses, pred); } } else { clauses.add(expr); } }
addFacetFilters(clauses, facetFilter); addTypes(clauses, query.from); addWhere(clauses, query.where); simplifyTypes(clauses); MultiExpression multiExpression = new MultiExpression(Operator.AND, clauses);