OSDN Git Service

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