/* * $Id: AndFilter.java,v 1.7 2010/02/17 20:48:21 jvalencia Exp $ */ package com.openedit.util.strainer; /** * This is a combinatorial filter which ANDs together all of its sub-filters. * * @author Eric Galluzzo */ public class AndFilter extends BaseFilter implements CompositeFilter { /** * This constructor should only be used for JavaBean-style creation. */ public AndFilter() { } /** * Create a filter that ANDs together all the given sub-filters. * * @param inFilters The sub-filters to AND together */ public AndFilter(Filter[] inFilters) { fieldFilters = inFilters; } /** * Create a filter that ANDs together both of the given sub-filters. * * @param inFilter1 The first sub-filter * @param inFilter2 The second sub-filter */ public AndFilter(Filter inFilter1, Filter inFilter2) { fieldFilters = new Filter[] { inFilter1, inFilter2 }; } public AndFilter(Filter inFilter1) { fieldFilters = new Filter[] { inFilter1 }; } /** * Retrieve this filter's sub-filters. * * @return This filter's sub-filters */ public Filter[] getFilters() { return fieldFilters; } /** * Set this filter's sub-filters. * * @param newFilters The new sub-filters */ public void setFilters(Filter[] newFilters) { fieldFilters = newFilters; } /** * Determine whether the given object passes this filter by ANDing together * all the sub-filters. * * @param inObj The object to check * * @return <code>true</code> if the object passes all of the sub-filters, * <code>false</code> otherwise. */ public boolean passes(Object inObj) throws FilterException { if( fieldFilters == null) { return true; } for (int i = 0; i < fieldFilters.length; i++) { if (!fieldFilters[i].passes(inObj)) { return false; } } return true; } /* (non-Javadoc) * @see com.openedit.util.strainer.Filter#accept(com.openedit.util.strainer.FilterVisitor) */ // public void accept(FilterVisitor inFilterVisitor) throws FilterException // { // if (inFilterVisitor instanceof AndFilterVisitor) // { // ((AndFilterVisitor) inFilterVisitor).visitAndFilter(this); // } // } /* (non-Javadoc) * @see java.lang.Object#toString() */ public String toString() { StringBuffer buffer = new StringBuffer(); Filter[] filters = getFilters(); for (int i = 0; i < filters.length; i++) { if (i > 0) { buffer.append(" and "); } buffer.append("("); buffer.append(filters[i].toString()); buffer.append(")"); } return buffer.toString(); } }