1 package jp.naist.se.stigmata;
\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
15 * Runtime properties.
\r
17 * @author Haruaki Tamada
\r
18 * @version $Revision$ $Date$
\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
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
41 public BirthmarkContext(BirthmarkEnvironment environment){
\r
42 this.environment = environment;
\r
45 public BirthmarkEnvironment getEnvironment(){
\r
49 public boolean hasNameMapping(){
\r
50 return getNameMappingCount() > 0;
\r
53 public int getNameMappingCount(){
\r
54 return nameMappings.size();
\r
57 public String getNameMapping(String key){
\r
58 return nameMappings.get(key);
\r
61 public void addNameMapping(String name1, String name2){
\r
62 nameMappings.put(name1, name2);
\r
65 public void removeNameMapping(String name1){
\r
66 nameMappings.remove(name1);
\r
69 public Map<String, String> getNameMappings(){
\r
70 return Collections.unmodifiableMap(nameMappings);
\r
73 public Iterator<Map.Entry<String, String>> nameMappingEntries(){
\r
74 return getNameMappings().entrySet().iterator();
\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
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
92 public void addExtractionType(String type){
\r
93 birthmarkTypes.add(type);
\r
96 public void removeExtractionType(String type){
\r
97 birthmarkTypes.remove(type);
\r
100 public synchronized String[] getExtractionTypes(){
\r
101 return birthmarkTypes.toArray(new String[getExtractionTypeCount()]);
\r
104 public int getExtractionTypeCount(){
\r
105 return birthmarkTypes.size();
\r
108 public ComparisonMethod getComparisonMethod(){
\r
112 public void setComparisonMethod(ComparisonMethod method){
\r
113 this.method = method;
\r
116 public ExtractionUnit getExtractionUnit(){
\r
120 public void setExtractionUnit(ExtractionUnit unit){
\r
124 public BirthmarkStoreTarget getStoreTarget(){
\r
128 public void setStoreTarget(BirthmarkStoreTarget store){
\r
129 this.store = store;
\r
132 public boolean hasFilter(){
\r
133 return filterTypes.size() > 0;
\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
144 public void addFilterType(String filterType){
\r
145 if(filterType != null){
\r
146 filterTypes.add(filterType);
\r
150 public void removeFilterType(String filterType){
\r
151 filterTypes.remove(filterType);
\r
154 public synchronized String[] getFilterTypes(){
\r
155 return filterTypes.toArray(new String[getFilterTypesCount()]);
\r
158 public Iterator<String> filterTypes(){
\r
159 return filterTypes.iterator();
\r
162 public int getFilterTypesCount(){
\r
163 return filterTypes.size();
\r