/** * 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()); }
/** * 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()); }
/** * 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 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); }
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); }
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); }
AndOr translate(CompoundCriteria criteria) { List nestedCriteria = criteria.getCriteria(); int size = nestedCriteria.size(); AndOr.Operator op = criteria.getOperator() == CompoundCriteria.AND?AndOr.Operator.AND:AndOr.Operator.OR; AndOr result = new AndOr(translate((Criteria)nestedCriteria.get(size - 2)), translate((Criteria)nestedCriteria.get(size - 1)), op); for (int i = nestedCriteria.size() - 3; i >= 0; i--) { result = new AndOr(translate((Criteria)nestedCriteria.get(i)), result, op); } return result; }
AndOr translate(CompoundCriteria criteria) { List nestedCriteria = criteria.getCriteria(); int size = nestedCriteria.size(); AndOr.Operator op = criteria.getOperator() == CompoundCriteria.AND?AndOr.Operator.AND:AndOr.Operator.OR; AndOr result = new AndOr(translate((Criteria)nestedCriteria.get(size - 2)), translate((Criteria)nestedCriteria.get(size - 1)), op); for (int i = nestedCriteria.size() - 3; i >= 0; i--) { result = new AndOr(translate((Criteria)nestedCriteria.get(i)), result, op); } return result; }
AndOr translate(CompoundCriteria criteria) { List nestedCriteria = criteria.getCriteria(); int size = nestedCriteria.size(); AndOr.Operator op = criteria.getOperator() == CompoundCriteria.AND?AndOr.Operator.AND:AndOr.Operator.OR; AndOr result = new AndOr(translate((Criteria)nestedCriteria.get(size - 2)), translate((Criteria)nestedCriteria.get(size - 1)), op); for (int i = nestedCriteria.size() - 3; i >= 0; i--) { result = new AndOr(translate((Criteria)nestedCriteria.get(i)), result, op); } return result; }
static Collection<ElementSymbol> getElementsIncriteria(Criteria crit) { Collection<ElementSymbol> elements = new HashSet<ElementSymbol>(); boolean first = true; if(crit instanceof CompoundCriteria) { CompoundCriteria compCrit = (CompoundCriteria) crit; for(Criteria subCrit : compCrit.getCriteria()) { if(compCrit.getOperator() == CompoundCriteria.AND || first) { first = false; elements.addAll(getElementsIncriteria(subCrit)); } else { elements.retainAll(getElementsIncriteria(subCrit)); } } } else { elements.addAll(ElementCollectorVisitor.getElements(crit, true)); } return elements; }
static Collection<ElementSymbol> getElementsIncriteria(Criteria crit) { Collection<ElementSymbol> elements = new HashSet<ElementSymbol>(); boolean first = true; if(crit instanceof CompoundCriteria) { CompoundCriteria compCrit = (CompoundCriteria) crit; for(Criteria subCrit : compCrit.getCriteria()) { if(compCrit.getOperator() == CompoundCriteria.AND || first) { first = false; elements.addAll(getElementsIncriteria(subCrit)); } else { elements.retainAll(getElementsIncriteria(subCrit)); } } } else { elements.addAll(ElementCollectorVisitor.getElements(crit, true)); } return elements; }
static Collection<ElementSymbol> getElementsIncriteria(Criteria crit) { Collection<ElementSymbol> elements = new HashSet<ElementSymbol>(); boolean first = true; if(crit instanceof CompoundCriteria) { CompoundCriteria compCrit = (CompoundCriteria) crit; for(Criteria subCrit : compCrit.getCriteria()) { if(compCrit.getOperator() == CompoundCriteria.AND || first) { first = false; elements.addAll(getElementsIncriteria(subCrit)); } else { elements.retainAll(getElementsIncriteria(subCrit)); } } } else { elements.addAll(ElementCollectorVisitor.getElements(crit, true)); } return elements; }
/** * Get hash code. WARNING: The hash code is based on data in the criteria. * If data values are changed, the hash code will change - don't hash this * object and change values. */ public int hashCode() { int hc = 0; hc = HashCodeUtil.hashCode(hc, getOperator()); hc = HashCodeUtil.hashCode(hc, getCriteria()); return hc; }
/** * Get hash code. WARNING: The hash code is based on data in the criteria. * If data values are changed, the hash code will change - don't hash this * object and change values. */ public int hashCode() { int hc = 0; hc = HashCodeUtil.hashCode(hc, getOperator()); hc = HashCodeUtil.hashCode(hc, getCriteria()); return hc; }
public void visit(CompoundCriteria obj) { preVisitVisitor(obj); visitNodes(obj.getCriteria()); postVisitVisitor(obj); } public void visit(Constant obj) {
public void visit(CompoundCriteria obj) { preVisitVisitor(obj); visitNodes(obj.getCriteria()); postVisitVisitor(obj); } public void visit(Constant obj) {
public void visit(CompoundCriteria obj) { preVisitVisitor(obj); visitNodes(obj.getCriteria()); postVisitVisitor(obj); } public void visit(Constant obj) {
/** * Get hash code. WARNING: The hash code is based on data in the criteria. * If data values are changed, the hash code will change - don't hash this * object and change values. */ public int hashCode() { int hc = 0; hc = HashCodeUtil.hashCode(hc, getOperator()); hc = HashCodeUtil.hashCode(hc, getCriteria()); return hc; }
@Test public void testOpen_Defect16059_2() throws Exception { Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NOT NULL", RealMetadataFactory.example1Cached()); //$NON-NLS-1$ IsNullCriteria nullCrit = (IsNullCriteria)((CompoundCriteria)query.getCriteria()).getCriteria(1); nullCrit.setExpression(new Constant(null)); helpTestOpen(query, null, false); }
@Test public void testOpen_Defect16059() throws Exception { Query query = (Query)TestResolver.helpResolve("SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5 AND ? IS NULL", RealMetadataFactory.example1Cached()); //$NON-NLS-1$ IsNullCriteria nullCrit = (IsNullCriteria)((CompoundCriteria)query.getCriteria()).getCriteria(1); nullCrit.setExpression(new Constant(null)); helpTestOpen(query, "SELECT e1, e2 FROM pm1.g1 WHERE e2 = 5", true); //$NON-NLS-1$ }