/** * 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()); }
private Boolean evaluate(CompoundCriteria criteria, List<?> tuple) throws ExpressionEvaluationException, BlockedException, TeiidComponentException { List<Criteria> subCrits = criteria.getCriteria(); boolean and = criteria.getOperator() == CompoundCriteria.AND; Boolean result = and?Boolean.TRUE:Boolean.FALSE; for (int i = 0; i < subCrits.size(); i++) { Criteria subCrit = subCrits.get(i); Boolean value = internalEvaluateTVL(subCrit, tuple); if (value == null) { result = null; } else if (!value.booleanValue()) { if (and) { return Boolean.FALSE; } } else if (!and) { return Boolean.TRUE; } } 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; }
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 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$ } }
/** * 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 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 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 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); }
/** * Deep clone. It returns a new LogicalCriteria with a new list of clones * of the criteria objects. */ public Object clone() { CompoundCriteria copy = new CompoundCriteria(); copy.setOperator(getOperator()); // Clone each sub-criteria List crits = getCriteria(); for(int i=0; i<crits.size(); i++) { Criteria crit = (Criteria) crits.get(i); if(crit == null) { copy.addCriteria(null); } else { copy.addCriteria( (Criteria) crit.clone() ); } } return copy; }