OSDN Git Service

change internal process method, which introducing ExtractionResultSet
[stigmata/stigmata.git] / src / main / java / jp / naist / se / stigmata / BirthmarkContext.java
1 package jp.naist.se.stigmata;\r
2 \r
3 /*\r
4  * $Id$\r
5  */\r
6 \r
7 import java.util.ArrayList;\r
8 import java.util.Collections;\r
9 import java.util.HashMap;\r
10 import java.util.Iterator;\r
11 import java.util.List;\r
12 import java.util.Map;\r
13 \r
14 /**\r
15  * Runtime properties.\r
16  * \r
17  * @author Haruaki Tamada\r
18  * @version $Revision$ $Date$\r
19  */\r
20 public class BirthmarkContext{\r
21     private BirthmarkEnvironment environment;\r
22     private List<String> birthmarkTypes = new ArrayList<String>();\r
23     private ComparisonMethod method = ComparisonMethod.ROUND_ROBIN_SAME_PAIR;\r
24     private List<String> filterTypes = new ArrayList<String>();\r
25     private Map<String, String> nameMappings = new HashMap<String, String>();\r
26     private ExtractionUnit unit = ExtractionUnit.CLASS;\r
27     private BirthmarkStoreTarget store = BirthmarkStoreTarget.MEMORY;\r
28 \r
29     /**\r
30      * self constructor.\r
31      */\r
32     public BirthmarkContext(BirthmarkContext context){\r
33         this.environment = context.getEnvironment();\r
34         this.method = context.getComparisonMethod();\r
35         this.unit = context.getExtractionUnit();\r
36         this.birthmarkTypes = new ArrayList<String>(context.birthmarkTypes);\r
37         this.filterTypes = new ArrayList<String>(context.filterTypes);\r
38         this.nameMappings = new HashMap<String, String>(context.nameMappings);\r
39     }\r
40 \r
41     public BirthmarkContext(BirthmarkEnvironment environment){\r
42         this.environment = environment;\r
43     }\r
44 \r
45     public BirthmarkEnvironment getEnvironment(){\r
46         return environment;\r
47     }\r
48 \r
49     public boolean hasNameMapping(){\r
50         return getNameMappingCount() > 0;\r
51     }\r
52 \r
53     public int getNameMappingCount(){\r
54         return nameMappings.size();\r
55     }\r
56 \r
57     public String getNameMapping(String key){\r
58         return nameMappings.get(key);\r
59     }\r
60 \r
61     public void addNameMapping(String name1, String name2){\r
62         nameMappings.put(name1, name2);\r
63     }\r
64 \r
65     public void removeNameMapping(String name1){\r
66         nameMappings.remove(name1);\r
67     }\r
68 \r
69     public Map<String, String> getNameMappings(){\r
70         return Collections.unmodifiableMap(nameMappings);\r
71     }\r
72 \r
73     public Iterator<Map.Entry<String, String>> nameMappingEntries(){\r
74         return getNameMappings().entrySet().iterator();\r
75     }\r
76 \r
77     public void setNameMappings(Map<String, String> mappings){\r
78         nameMappings.clear();\r
79         for(Iterator<Map.Entry<String, String>> i = mappings.entrySet().iterator(); i.hasNext(); ){\r
80             Map.Entry<String, String> entry = i.next();\r
81             addNameMapping(entry.getKey(), entry.getValue());\r
82         }\r
83     }\r
84 \r
85     public void setExtractionTypes(String[] types){\r
86         birthmarkTypes.clear();\r
87         for(int i = 0; i < types.length; i++){\r
88             addExtractionType(types[i]);\r
89         }\r
90     }\r
91 \r
92     public void addExtractionType(String type){\r
93         birthmarkTypes.add(type);\r
94     }\r
95 \r
96     public void removeExtractionType(String type){\r
97         birthmarkTypes.remove(type);\r
98     }\r
99 \r
100     public synchronized String[] getExtractionTypes(){\r
101         return birthmarkTypes.toArray(new String[getExtractionTypeCount()]);\r
102     }\r
103 \r
104     public int getExtractionTypeCount(){\r
105         return birthmarkTypes.size();\r
106     }\r
107 \r
108     public ComparisonMethod getComparisonMethod(){\r
109         return method;\r
110     }\r
111 \r
112     public void setComparisonMethod(ComparisonMethod method){\r
113         this.method = method;\r
114     }\r
115 \r
116     public ExtractionUnit getExtractionUnit(){\r
117         return unit;\r
118     }\r
119 \r
120     public void setExtractionUnit(ExtractionUnit unit){\r
121         this.unit = unit;\r
122     }\r
123 \r
124     public BirthmarkStoreTarget getStoreTarget(){\r
125         return store;\r
126     }\r
127 \r
128     public void setStoreTarget(BirthmarkStoreTarget store){\r
129         this.store = store;\r
130     }\r
131 \r
132     public boolean hasFilter(){\r
133         return filterTypes.size() > 0;\r
134     }\r
135 \r
136     public void setFilterTypes(String[] filterTypes){\r
137         if(filterTypes != null){\r
138             for(int i = 0; i < filterTypes.length; i++){\r
139                 addFilterType(filterTypes[i]);\r
140             }\r
141         }\r
142     }\r
143 \r
144     public void addFilterType(String filterType){\r
145         if(filterType != null){\r
146             filterTypes.add(filterType);\r
147         }\r
148     }\r
149 \r
150     public void removeFilterType(String filterType){\r
151         filterTypes.remove(filterType);\r
152     }\r
153 \r
154     public synchronized String[] getFilterTypes(){\r
155         return filterTypes.toArray(new String[getFilterTypesCount()]);\r
156     }\r
157 \r
158     public Iterator<String> filterTypes(){\r
159         return filterTypes.iterator();\r
160     }\r
161 \r
162     public int getFilterTypesCount(){\r
163         return filterTypes.size();\r
164     }\r
165 }\r