View Javadoc

1   package net.sourceforge.pmd.util.filter;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   /**
7    * A base class for Filters which implements behavior using a List of other
8    * Filters.
9    * 
10   * @param <T>
11   *            The underlying type on which the filter applies.
12   */
13  public abstract class AbstractCompoundFilter<T> implements Filter<T> {
14  
15  	protected List<Filter<T>> filters;
16  
17  	public AbstractCompoundFilter() {
18  		filters = new ArrayList<Filter<T>>(2);
19  	}
20  
21  	public AbstractCompoundFilter(Filter<T>... filters) {
22  		this.filters = new ArrayList<Filter<T>>(filters.length);
23  		for (Filter<T> filter : filters) {
24  			this.filters.add(filter);
25  		}
26  	}
27  
28  	public List<Filter<T>> getFilters() {
29  		return filters;
30  	}
31  
32  	public void setFilters(List<Filter<T>> filters) {
33  		this.filters = filters;
34  	}
35  
36  	public void addFilter(Filter<T> filter) {
37  		filters.add(filter);
38  	}
39  
40  	protected abstract String getOperator();
41  
42  	public String toString() {
43  		StringBuilder builder = new StringBuilder();
44  		builder.append("(");
45  		for (int i = 0; i < filters.size(); i++) {
46  			if (i > 0) {
47  				builder.append(" ");
48  				builder.append(getOperator());
49  				builder.append(" ");
50  			}
51  			builder.append(filters.get(i));
52  		}
53  		builder.append(")");
54  		return builder.toString();
55  	}
56  }