private Criteria rewriteCriteria(NotCriteria criteria) throws TeiidComponentException, TeiidProcessingException{ Criteria innerCrit = criteria.getCriteria(); if (innerCrit instanceof CompoundCriteria) { //reduce to only negation of predicates, so that the null/unknown handling criteria is applied appropriately return rewriteCriteria(Criteria.applyDemorgan(innerCrit)); } if(innerCrit == TRUE_CRITERIA) { return FALSE_CRITERIA; } else if(innerCrit == FALSE_CRITERIA) { return TRUE_CRITERIA; } else if (innerCrit == UNKNOWN_CRITERIA) { return UNKNOWN_CRITERIA; } if (innerCrit instanceof Negatable) { ((Negatable) innerCrit).negate(); return rewriteCriteria(innerCrit); } if (innerCrit instanceof NotCriteria) { return rewriteCriteria(((NotCriteria)innerCrit).getCriteria()); } Criteria newInnerCrit = rewriteCriteria(innerCrit); if (!newInnerCrit.equals(innerCrit)) { criteria.setCriteria(newInnerCrit); return rewriteCriteria(criteria); } return criteria; }
private Criteria rewriteCriteria(NotCriteria criteria) throws TeiidComponentException, TeiidProcessingException{ Criteria innerCrit = criteria.getCriteria(); if (innerCrit instanceof CompoundCriteria) { //reduce to only negation of predicates, so that the null/unknown handling criteria is applied appropriately return rewriteCriteria(Criteria.applyDemorgan(innerCrit)); } if(innerCrit == TRUE_CRITERIA) { return FALSE_CRITERIA; } else if(innerCrit == FALSE_CRITERIA) { return TRUE_CRITERIA; } else if (innerCrit == UNKNOWN_CRITERIA) { return UNKNOWN_CRITERIA; } if (innerCrit instanceof Negatable) { ((Negatable) innerCrit).negate(); return rewriteCriteria(innerCrit); } if (innerCrit instanceof NotCriteria) { return rewriteCriteria(((NotCriteria)innerCrit).getCriteria()); } Criteria newInnerCrit = rewriteCriteria(innerCrit); if (!newInnerCrit.equals(innerCrit)) { criteria.setCriteria(newInnerCrit); return rewriteCriteria(criteria); } return criteria; }
private Criteria rewriteCriteria(NotCriteria criteria) throws TeiidComponentException, TeiidProcessingException{ Criteria innerCrit = criteria.getCriteria(); if (innerCrit instanceof CompoundCriteria) { //reduce to only negation of predicates, so that the null/unknown handling criteria is applied appropriately return rewriteCriteria(Criteria.applyDemorgan(innerCrit)); } if(innerCrit == TRUE_CRITERIA) { return FALSE_CRITERIA; } else if(innerCrit == FALSE_CRITERIA) { return TRUE_CRITERIA; } else if (innerCrit == UNKNOWN_CRITERIA) { return UNKNOWN_CRITERIA; } if (innerCrit instanceof Negatable) { ((Negatable) innerCrit).negate(); return rewriteCriteria(innerCrit); } if (innerCrit instanceof NotCriteria) { return rewriteCriteria(((NotCriteria)innerCrit).getCriteria()); } Criteria newInnerCrit = rewriteCriteria(innerCrit); if (!newInnerCrit.equals(innerCrit)) { criteria.setCriteria(newInnerCrit); return rewriteCriteria(criteria); } return criteria; }