OSDN Git Service

ef7cff0d54efab0e4e6941f66818b148e2df95ae
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ComparisonPairFilterSet.java
1 package jp.sourceforge.stigmata;
2
3 /*
4  * $Id$
5  */
6
7 import java.util.ArrayList;
8 import java.util.Iterator;
9 import java.util.List;
10
11
12 /**
13  * Set of {@link ComparisonPairFilter <Ccode>ComparisonPairFilter</code>}.
14  *
15  * @author Haruaki TAMADA
16  */
17 public class ComparisonPairFilterSet implements Iterable<ComparisonPairFilter>{
18     private List<ComparisonPairFilter> filters = new ArrayList<ComparisonPairFilter>();
19     private String name;
20     private boolean matchall = true;
21
22     public boolean isFiltered(ComparisonPair pair){
23         boolean flag;
24         if(isMatchAll()){ // all of criteria are matched?
25             flag = true;
26             for(ComparisonPairFilter filter: filters){
27                 if(!filter.isFiltered(pair)){
28                     flag = false;
29                     break;
30                 }
31             }
32         }
33         else{ // any of criteria are matched
34             flag = false;
35             for(ComparisonPairFilter filter: filters){
36                 if(filter.isFiltered(pair)){
37                     flag = true;
38                     break;
39                 }
40             }
41         }
42         return flag;
43     }
44
45     /**
46      * returns a flag that all filters must be matched.
47      */
48     public boolean isMatchAll(){
49         return matchall;
50     }
51
52     /**
53      * returns a flag that any filters must be matched.
54      */
55     public boolean isMatchAny(){
56         return !isMatchAll();
57     }
58
59     /**
60      * filtering if all criteria is matched.
61      */
62     public void setMatchAll(){
63         matchall = true;
64     }
65
66     /**
67      * filtering if any criterion is matched.
68      */
69     public void setMatchAny(){
70         matchall = false;
71     }
72
73     public void setName(String name){
74         this.name = name;
75     }
76
77     public String getName(){
78         return name;
79     }
80
81     public boolean addFilter(ComparisonPairFilter o){
82         return filters.add(o);
83     }
84
85     public void removeAllFilters(){
86         filters.clear();
87     }
88
89     public ComparisonPairFilter getFilter(int index){
90         return filters.get(index);
91     }
92
93     @Override
94     public Iterator<ComparisonPairFilter> iterator(){
95         return filters.iterator();
96     }
97
98     public ComparisonPairFilter removeFilter(int index){
99         return filters.remove(index);
100     }
101
102     public int getFilterCount(){
103         return filters.size();
104     }
105
106     @Override
107     public String toString(){
108         StringBuilder sb = new StringBuilder("filterset{ ");
109         sb.append("name=").append(getName()).append(", ");
110         sb.append(isMatchAll()? "match_all": "match_any");
111         sb.append(", ").append(filters).append("}");
112         
113         return new String(sb);
114     }
115 }