public static Criteria combineCriteria(Criteria primaryCrit, Criteria additionalCrit, boolean disjunctively) { if(primaryCrit == null) { return additionalCrit; } if(additionalCrit == null) { return primaryCrit; } CompoundCriteria compCrit = new CompoundCriteria(); compCrit.setOperator((disjunctively?CompoundCriteria.OR:CompoundCriteria.AND)); if ((primaryCrit instanceof CompoundCriteria) && ((CompoundCriteria)primaryCrit).getOperator() == (disjunctively?CompoundCriteria.OR:CompoundCriteria.AND)) { compCrit.getCriteria().addAll(((CompoundCriteria)primaryCrit).getCriteria()); } else { compCrit.addCriteria(primaryCrit); } if ((additionalCrit instanceof CompoundCriteria) && ((CompoundCriteria)additionalCrit).getOperator() == (disjunctively?CompoundCriteria.OR:CompoundCriteria.AND)) { compCrit.getCriteria().addAll(((CompoundCriteria)additionalCrit).getCriteria()); } else { compCrit.addCriteria(additionalCrit); } return compCrit; }
/** * Sets the operator used in the logical expression. * @param operator The operator * @throws IllegalArgumentException If operator is invalid */ public void setOperator(int operator) { if (!isValidOperator(operator)) { throw new IllegalArgumentException(QueryPlugin.Util.getString("ERR.015.010.0002", operator)); //$NON-NLS-1$ } this.operator = operator; }
/** * Sets a "standard" unary criteria. * * @param operator The unary logical operator * @param criteria The criteria * * @see #set(int,List) */ public void set( int operator, Criteria criteria) { reset(); setOperator(operator); addCriteria(criteria); }
/** * Override equals() method. */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof CompoundCriteria)) { return false; } CompoundCriteria cc = (CompoundCriteria)obj; return cc.getOperator() == getOperator() && EquivalenceUtil.areEqual(cc.getCriteria(), getCriteria()); }
public void testSeparateCriteriaByAnd3() { CompareCriteria crit1 = exampleCompareCrit(1); CompareCriteria crit2 = exampleCompareCrit(2); CompareCriteria crit3 = exampleCompareCrit(3); CompoundCriteria compCrit1 = new CompoundCriteria(); compCrit1.setOperator(CompoundCriteria.AND); compCrit1.addCriteria(crit2); compCrit1.addCriteria(crit3); CompoundCriteria compCrit2 = new CompoundCriteria(); compCrit2.setOperator(CompoundCriteria.AND); compCrit2.addCriteria(crit1); compCrit2.addCriteria(compCrit1); helpTestSeparateCriteria(compCrit2, new Criteria[] { crit1, crit2, crit3 }); }
public static Criteria combineCriteria(List<Criteria> parts) { if(parts == null || parts.isEmpty()) { return null; } if (parts.size() == 1) { return parts.get(0); } return new CompoundCriteria(parts); }
public static Criteria applyDemorgan(Criteria input) { if (input instanceof NotCriteria) { NotCriteria not = (NotCriteria)input; return not.getCriteria(); } if (!(input instanceof CompoundCriteria)) { return new NotCriteria(input); } CompoundCriteria compCrit = (CompoundCriteria)input; int operator = (compCrit.getOperator()==CompoundCriteria.OR)?CompoundCriteria.AND:CompoundCriteria.OR; List<Criteria> criteria = new ArrayList<Criteria>(compCrit.getCriteria().size()); for (Criteria crit : compCrit.getCriteria()) { crit = new NotCriteria(crit); criteria.add(crit); } return new CompoundCriteria(operator, criteria); }
if (table.getColumnMap().keySet().containsAll(ElementCollectorVisitor.getElements(criteria, false))) { if (coveredCriteria == null) { coveredCriteria = new CompoundCriteria(); coveredCriteria.addCriteria(criteria); } else { covering = false; if (nonCoveredCriteria == null) { nonCoveredCriteria = new CompoundCriteria(); nonCoveredCriteria.addCriteria(criteria); critIter.remove();
/** * @param rootClause * @param query */ private void shredJoinTree(FromClause clause, Query query) { if(clause instanceof UnaryFromClause || clause instanceof SubqueryFromClause) { query.getFrom().addClause(clause); } else { JoinPredicate jp = (JoinPredicate) clause; List<Criteria> crits = jp.getJoinCriteria(); if(crits != null && crits.size() > 0) { Criteria joinCrit = null; if (crits.size() > 1) { joinCrit = new CompoundCriteria(crits); } else { joinCrit = crits.get(0); } query.setCriteria(CompoundCriteria.combineCriteria(joinCrit, query.getCriteria())); } // Recurse through tree shredJoinTree(jp.getLeftClause(), query); shredJoinTree(jp.getRightClause(), query); } }
public void testClone2() { ElementSymbol e1 = new ElementSymbol("e1"); //$NON-NLS-1$ CompareCriteria ccrit1 = new CompareCriteria(e1, CompareCriteria.EQ, new Constant("abc")); //$NON-NLS-1$ CompoundCriteria comp = new CompoundCriteria(CompoundCriteria.AND, ccrit1, null); UnitTestUtil.helpTestEquivalence(0, comp, comp.clone()); }
public void visit(CompoundCriteria obj) { preVisitVisitor(obj); visitNodes(obj.getCriteria()); postVisitVisitor(obj); } public void visit(Constant obj) {
query.setCriteria( CompoundCriteria.combineCriteria(c, inc) ); return true;
/** * Constructs an instance of this class given the criteria. Subclasses are * responsible for defining how the criteria are inter-related in a logical * expression. * @param criteria List of {@link Criteria} being added */ public CompoundCriteria( List<? extends Criteria> criteria ) { this(); Iterator<? extends Criteria> iter = criteria.iterator(); while ( iter.hasNext() ) { addCriteria( iter.next() ); } }
/** * Constructs an instance of this class given a general logical expression. * The logical expression is constructed in terms of an operator (either OR * or AND), and a set of criteria clauses. * * @param operator The logical operator * @param criteria The list of {@link Criteria} */ public CompoundCriteria( int operator, List criteria ) { this(); set(operator,criteria); }
public void visit(CompoundCriteria crit) { int operator = crit.getOperator(); // Verify capabilities are supported if(operator == CompoundCriteria.OR && !this.caps.supportsCapability(Capability.CRITERIA_OR) && !willBecomeConstant(crit)) { markInvalid(crit, "OR criteria not supported by source"); //$NON-NLS-1$ } }
public void testSeparateCriteriaByAnd4() { CompareCriteria crit1 = exampleCompareCrit(1); CompareCriteria crit2 = exampleCompareCrit(2); CompareCriteria crit3 = exampleCompareCrit(3); CompoundCriteria compCrit1 = new CompoundCriteria(); compCrit1.setOperator(CompoundCriteria.OR); compCrit1.addCriteria(crit2); compCrit1.addCriteria(crit3); CompoundCriteria compCrit2 = new CompoundCriteria(); compCrit2.setOperator(CompoundCriteria.AND); compCrit2.addCriteria(crit1); compCrit2.addCriteria(compCrit1); helpTestSeparateCriteria(compCrit2, new Criteria[] { crit1, compCrit1 }); }
/** * Override equals() method. */ public boolean equals(Object obj) { if(obj == this) { return true; } if(!(obj instanceof CompoundCriteria)) { return false; } CompoundCriteria cc = (CompoundCriteria)obj; return cc.getOperator() == getOperator() && EquivalenceUtil.areEqual(cc.getCriteria(), getCriteria()); }
public static Criteria combineCriteria(List<Criteria> parts) { if(parts == null || parts.isEmpty()) { return null; } if (parts.size() == 1) { return parts.get(0); } return new CompoundCriteria(parts); }
public static Criteria applyDemorgan(Criteria input) { if (input instanceof NotCriteria) { NotCriteria not = (NotCriteria)input; return not.getCriteria(); } if (!(input instanceof CompoundCriteria)) { return new NotCriteria(input); } CompoundCriteria compCrit = (CompoundCriteria)input; int operator = (compCrit.getOperator()==CompoundCriteria.OR)?CompoundCriteria.AND:CompoundCriteria.OR; List<Criteria> criteria = new ArrayList<Criteria>(compCrit.getCriteria().size()); for (Criteria crit : compCrit.getCriteria()) { crit = new NotCriteria(crit); criteria.add(crit); } return new CompoundCriteria(operator, criteria); }
if (table.getColumnMap().keySet().containsAll(ElementCollectorVisitor.getElements(criteria, false))) { if (coveredCriteria == null) { coveredCriteria = new CompoundCriteria(); coveredCriteria.addCriteria(criteria); } else { covering = false; if (nonCoveredCriteria == null) { nonCoveredCriteria = new CompoundCriteria(); nonCoveredCriteria.addCriteria(criteria); critIter.remove();