/** * Adds specified HAVING qualifier to the existing HAVING qualifier joining it using "OR". * @since 4.0 */ public void orHavingQualifier(Expression e) { havingQualifier = (havingQualifier != null) ? havingQualifier.orExp(e) : e; }
/** * Adds specified qualifier to the existing qualifier joining it using "OR". */ public void orQualifier(Expression e) { qualifier = (qualifier != null) ? qualifier.orExp(e) : e; }
void orQualifier(Expression qualifier) { if (this.qualifier == null) { this.qualifier = qualifier; } else { this.qualifier = this.qualifier.orExp(qualifier); } } }
/** * Adds specified parent entity qualifier to the existing qualifier joining it using * "OR". */ public void orParentQualifier(Expression e) { parentQualifier = (parentQualifier != null) ? parentQualifier.orExp(e) : e; }
/** * Adds specified qualifier to the existing qualifier joining it using "OR". */ public void orQualifier(Expression e) { qualifier = (qualifier != null) ? qualifier.orExp(e) : e; } }
/** * Returns a qualifier Expression that matches root entity * of this tree and all its subentities. */ public Expression qualifierForEntityAndSubclasses() { Expression qualifier = entity.getDeclaredQualifier(); if (qualifier == null) { // match all return null; } if (subentities != null) { Iterator it = subentities.iterator(); while (it.hasNext()) { EntityInheritanceTree child = (EntityInheritanceTree) it.next(); Expression childQualifier = child.qualifierForEntityAndSubclasses(); // if any child qualifier is null, just return null, since no filtering is possible if (childQualifier == null) { return null; } qualifier = qualifier.orExp(childQualifier); } } return qualifier; }
Expression trimmedInExpression(ASTPath path, Object[] values, int maxInSize) { Expression res = null; List<Object> in = new ArrayList<>(maxInSize); for (Object v : values) { in.add(v); if (in.size() == maxInSize) { Expression inExp = new ASTIn(path, new ASTList(in)); res = res != null ? res.orExp(inExp) : inExp; in = new ArrayList<>(maxInSize); } } if (in.size() > 0) { Expression inExp = new ASTIn(path, new ASTList(in)); res = res != null ? res.orExp(inExp) : inExp; } return res; }
/** * Returns a qualifier Expression that matches root entity of this tree and all its * subentities. */ public Expression qualifierForEntityAndSubclasses() { Expression qualifier = entity.getDeclaredQualifier(); if (qualifier == null) { // match all return null; } if (subentities != null) { for (EntityInheritanceTree child : subentities) { Expression childQualifier = child.qualifierForEntityAndSubclasses(); // if any child qualifier is null, just return null, since no filtering is // possible if (childQualifier == null) { return null; } qualifier = qualifier.orExp(childQualifier); } } return qualifier; }
/** * Creates and returns a select query that can be used to fetch a list of objects * given a list of ObjectIds. All ObjectIds must belong to the same entity. */ public static SelectQuery selectQueryForIds(List oids) { if (oids == null || oids.size() == 0) { throw new IllegalArgumentException("List must contain at least one ObjectId"); } SelectQuery sel = new SelectQuery(); sel.setRoot(((ObjectId) oids.get(0)).getEntityName()); Iterator it = oids.iterator(); ObjectId firstId = (ObjectId) it.next(); Expression exp = ExpressionFactory.matchAllDbExp( firstId.getIdSnapshot(), Expression.EQUAL_TO); while (it.hasNext()) { ObjectId anId = (ObjectId) it.next(); exp = exp.orExp(ExpressionFactory.matchAllDbExp( anId.getIdSnapshot(), Expression.EQUAL_TO)); } sel.setQualifier(exp); return sel; }