public static <T> boolean isEmpty(Filter<T> filter) { boolean empty = false; if (filter instanceof CompositeFilter) { // lets treat empty filters as not matching anything CompositeFilter<T> compositeFilter = (CompositeFilter<T>) filter; empty = compositeFilter.isEmpty(); } return empty; }
public static <T> Filter<T> compositeFilter(List<Filter<T>> filters) { if (filters.size() == 0) { return falseFilter(); } else if (filters.size() == 1) { return filters.get(0); } else { return new CompositeFilter<T>(filters); } }