コード例 #1
0
ファイル: Criteria.java プロジェクト: TSurendhar/teiid
  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);
  }
コード例 #2
0
ファイル: Criteria.java プロジェクト: TSurendhar/teiid
 /**
  * Helper method for {@link #separateCriteriaByAnd(Criteria)} that can be called recursively to
  * collect parts.
  *
  * @param crit Crit to break apart
  * @param parts Collection to add parts to
  */
 private static void separateCriteria(Criteria crit, Collection<Criteria> parts) {
   if (crit instanceof CompoundCriteria) {
     CompoundCriteria compCrit = (CompoundCriteria) crit;
     if (compCrit.getOperator() == CompoundCriteria.AND) {
       for (Criteria conjunct : compCrit.getCriteria()) {
         separateCriteria(conjunct, parts);
       }
     } else {
       parts.add(crit);
     }
   } else {
     parts.add(crit);
   }
 }
コード例 #3
0
ファイル: Criteria.java プロジェクト: TSurendhar/teiid
 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;
 }