/** * This utility method will pull apart a tree of criteria by breaking all * compound AND criteria apart. For instance, ((A=1 AND B=2) AND C=3) * will be broken into A=1, B=2, C=3. * @param crit Criteria to break apart * @return List of Criteria, empty list if crit is null */ public static List<Criteria> separateCriteriaByAnd(Criteria crit) { if(crit == null) { return Collections.emptyList(); } List<Criteria> parts = new ArrayList<Criteria>(); separateCriteria(crit, parts); return parts; }
/** * This utility method will pull apart a tree of criteria by breaking all * compound AND criteria apart. For instance, ((A=1 AND B=2) AND C=3) * will be broken into A=1, B=2, C=3. * @param crit Criteria to break apart * @return List of Criteria, empty list if crit is null */ public static List<Criteria> separateCriteriaByAnd(Criteria crit) { if(crit == null) { return Collections.emptyList(); } List<Criteria> parts = new ArrayList<Criteria>(); separateCriteria(crit, parts); return parts; }
/** * This utility method will pull apart a tree of criteria by breaking all * compound AND criteria apart. For instance, ((A=1 AND B=2) AND C=3) * will be broken into A=1, B=2, C=3. * @param crit Criteria to break apart * @return List of Criteria, empty list if crit is null */ public static List<Criteria> separateCriteriaByAnd(Criteria crit) { if(crit == null) { return Collections.emptyList(); } List<Criteria> parts = new ArrayList<Criteria>(); separateCriteria(crit, parts); return parts; }
/** * 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); } }
/** * 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); } }
/** * 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); } }