public Object walkBetween(Operand lvalue, Operand rvalue, boolean positive) { LiteralList l = (LiteralList) rvalue; Predicate va = new Predicate(lvalue, Operator.GTEQ, l.get(0)); Predicate vb = new Predicate(lvalue, Operator.LTEQ, l.get(1)); Predicate pred = new Predicate(va, Operator.AND, vb); if (!positive) { pred = new Predicate(pred, Operator.NOT, null); } return walkExpression(pred); }
@Override public SQLQuery transform(NuxeoPrincipal principal, SQLQuery query) { WhereClause where = query.where; Predicate predicate; if (where == null || where.predicate == null) { predicate = NO_FILE; } else { predicate = new Predicate(NO_FILE, Operator.AND, where.predicate); } return query.withPredicate(predicate); } }
protected SQLQuery addIsNotNullClauses(SQLQuery query, Collection<String> names) { List<Predicate> values = names.stream() .map(name -> new Predicate(new Reference(name), Operator.ISNOTNULL, null)) .collect(toList()); Predicate expr = new Predicate(query.where.predicate, Operator.AND, new MultiExpression(Operator.AND, values)); return query.withPredicate(expr); }
protected void addFacetFilters(List<Predicate> clauses, FacetFilter facetFilter) { if (facetFilter == null) { return; } for (String mixin : facetFilter.required) { // every facet is required, not just any of them, // so do them one by one Predicate expr = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.EQ, new StringLiteral(mixin)); clauses.add(expr); } if (!facetFilter.excluded.isEmpty()) { LiteralList list = new LiteralList(); for (String mixin : facetFilter.excluded) { list.add(new StringLiteral(mixin)); } Predicate expr = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.NOTIN, list); clauses.add(expr); } }
public void addFacetFilterClauses(FacetFilter facetFilter) { for (String mixin : facetFilter.required) { // every facet is required, not just any of them, // so do them one by one // expr = getMixinsMatchExpression(Collections.singleton(facet), // true); Predicate predicate = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.EQ, new StringLiteral(mixin)); toplevelPredicates.add(predicate); } if (!facetFilter.excluded.isEmpty()) { // expr = getMixinsMatchExpression(facetFilter.excluded, false); LiteralList list = new LiteralList(); for (String mixin : facetFilter.excluded) { list.add(new StringLiteral(mixin)); } Predicate predicate = new Predicate(new Reference(NXQL.ECM_MIXINTYPE), Operator.NOTIN, list); toplevelPredicates.add(predicate); } }
/** * Finds all the types to take into account (all concrete types being a subtype of the passed types) based on the * FROM list. * <p> * Adds them as a ecm:primaryType match in the toplevel operands. */ protected void addTypes(List<Predicate> clauses, FromClause node) { onlyRelations = true; Set<String> fromTypes = new HashSet<>(); FromList elements = node.elements; for (String typeName : elements.values()) { if (TYPE_DOCUMENT.equalsIgnoreCase(typeName)) { typeName = TYPE_DOCUMENT; } fromTypes.addAll(getDocumentTypeNamesExtending(typeName)); boolean isRelation = isTypeRelation(typeName); onlyRelations = onlyRelations && isRelation; } fromTypes.remove(TYPE_ROOT); LiteralList list = new LiteralList(); for (String type : fromTypes) { list.add(new StringLiteral(type)); } clauses.add(new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.IN, list)); }
predicate = new Predicate(predicate.rvalue, op, predicate.lvalue);
if (primaryTypes.size() == 1) { String pt = primaryTypes.iterator().next(); predicate = new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.EQ, new StringLiteral(pt)); } else { // primaryTypes.size() > 1 LiteralList list = new LiteralList(); list.add(new StringLiteral(pt)); predicate = new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.IN, list);
if (primaryTypes.size() == 1) { String pt = primaryTypes.iterator().next(); predicate = new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.EQ, new StringLiteral(pt)); } else { // primaryTypes.size() > 1 LiteralList list = new LiteralList(); list.add(new StringLiteral(pt)); predicate = new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.IN, list);
@Override public SQLQuery transform(Principal principal, SQLQuery query) { NuxeoPrincipal nuxeoPrincipal = (NuxeoPrincipal) principal; if (!nuxeoPrincipal.isAdministrator() && !StringUtils.equals(principal.getName(), "system")) { List<String> allGroups = nuxeoPrincipal.getAllGroups(); // if restricted profile if (!hasAllowedProfile(allGroups)) { // apply NOT_IN_DOMAIN restriction WhereClause where = query.where; Predicate predicate; if (where == null || where.predicate == null) { predicate = NOT_IN_DOMAIN; } else { predicate = new Predicate(NOT_IN_DOMAIN, Operator.AND, where.predicate); } query = new SQLQuery(query.select, query.from, new WhereClause(predicate), query.groupBy, query.having, query.orderBy, query.limit, query.offset); } } return query; }
list.add(new StringLiteral(type)); toplevelPredicates.add(new Predicate(new Reference(NXQL.ECM_PRIMARYTYPE), Operator.IN, list));