OSDN Git Service

プラットフォームごとのStigmataのホームディレクトリの場所を返す一連のクラスをリファクタリングした.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / result / AbstractExtractionResultSet.java
1 package jp.sourceforge.stigmata.result;
2
3 /*
4  * $Id$
5  */
6
7 import java.text.SimpleDateFormat;
8 import java.util.Calendar;
9 import java.util.Iterator;
10
11 import jp.sourceforge.stigmata.BirthmarkContext;
12 import jp.sourceforge.stigmata.BirthmarkEnvironment;
13 import jp.sourceforge.stigmata.BirthmarkSet;
14 import jp.sourceforge.stigmata.BirthmarkStoreException;
15 import jp.sourceforge.stigmata.ExtractionResultSet;
16 import jp.sourceforge.stigmata.ExtractionTarget;
17 import jp.sourceforge.stigmata.ExtractionUnit;
18
19 /**
20  * Abstract class for ExtractionResultSet.
21  * 
22  * @author Haruaki Tamada
23  * @version $Revision$ 
24  */
25 public abstract class AbstractExtractionResultSet implements ExtractionResultSet{
26     private BirthmarkContext context;
27     private boolean tableType = true;
28     private String id;
29
30     /**
31      * constructor.
32      */
33     public AbstractExtractionResultSet(BirthmarkContext context){
34         this(context, true);
35     }
36
37     /**
38      * constructor.
39      */
40     public AbstractExtractionResultSet(BirthmarkContext context, boolean tableType){
41         this.context = context;
42         id = generateId();
43     }
44
45     void setId(String id){
46         this.id = id;
47     }
48
49     @Override
50     public String getId(){
51         return id;
52     }
53
54     /**
55      * returns a birthmark environment.
56      */
57     @Override
58     public BirthmarkEnvironment getEnvironment(){
59         return context.getEnvironment();
60     }
61
62     /**
63      * returns a birthmark context.
64      */
65     @Override
66     public BirthmarkContext getContext(){
67         return context;
68     }
69
70     @Override
71     public abstract void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set) throws BirthmarkStoreException;
72
73     @Override
74     public abstract void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set);
75
76     @Override
77     public abstract void removeAllBirthmarkSets(ExtractionTarget target);
78
79     @Override
80     public abstract int getBirthmarkSetSize(ExtractionTarget target);
81
82     @Override
83     public abstract Iterator<BirthmarkSet> birthmarkSets(ExtractionTarget target);
84
85     /**
86      * returns the sum of birthmark set size this instance has.
87      * <code>getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH)</code>
88      */
89     @Override
90     public int getBirthmarkSetSize(){
91         return getBirthmarkSetSize(ExtractionTarget.TARGET_BOTH);
92     }
93
94     /**
95      * returns an iterator.
96      * <code>birthmarkSets(ExtractionTarget.TARGET_BOTH)</code>
97      */
98     @Override
99     public Iterator<BirthmarkSet> iterator(){
100         return birthmarkSets(ExtractionTarget.TARGET_BOTH);
101     }
102
103     /**
104      * returns a birthmark set related of given index.
105      * <code>getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index)</code>
106      */
107     @Override
108     public BirthmarkSet getBirthmarkSet(int index){
109         return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, index);
110     }
111
112     /**
113      * returns a birthmark set related with given name.
114      * <code>getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name)</code>
115      */
116     @Override
117     public BirthmarkSet getBirthmarkSet(String name){
118         return getBirthmarkSet(ExtractionTarget.TARGET_BOTH, name);
119     }
120
121     /**
122      * returns all of birthmark sets.
123      * <code>getBirthmarkSets(ExtractionTarget.TARGET_BOTH)</code>
124      */
125     @Override
126     public BirthmarkSet[] getBirthmarkSets(){
127         return getBirthmarkSets(ExtractionTarget.TARGET_BOTH);
128     }
129
130     /**
131      * remove specified birthmark set from this instance.
132      * <code>removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs)</code>
133      */
134     @Override
135     public void removeBirthmarkSet(BirthmarkSet bs){
136         removeBirthmarkSet(ExtractionTarget.TARGET_BOTH, bs);
137     }
138
139     /**
140      * remove all of birthmark sets.
141      * <code>removeBirthmarkSet(ExtractionTarget.TARGET_BOTH)</code>
142      */
143     @Override
144     public void removeAllBirthmarkSets(){
145         removeAllBirthmarkSets(ExtractionTarget.TARGET_BOTH);
146     }
147
148     /**
149      * returns an array of extracted birthmark types.
150      */
151     @Override
152     public String[] getBirthmarkTypes(){
153         return context.getBirthmarkTypes();
154     }
155
156     /**
157      * returns an unit of extraction from.
158      */
159     @Override
160     public ExtractionUnit getExtractionUnit(){
161         return context.getExtractionUnit();
162     }
163
164     /**
165      * returns the birthmark set at the specified position in the specified target. 
166      */
167     @Override
168     public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){
169         int currentIndex = 0;
170         for(Iterator<BirthmarkSet> i = birthmarkSets(target); i.hasNext(); ){
171             if(currentIndex == index){
172                 return i.next();
173             }
174             i.next();
175             currentIndex++;
176         }
177         return null;
178     }
179
180     /**
181      * returns the birthmark set related with the specified name in the specified target.
182      */
183     @Override
184     public BirthmarkSet getBirthmarkSet(ExtractionTarget target, String setname){
185         for(Iterator<BirthmarkSet> i = birthmarkSets(target); i.hasNext(); ){
186             BirthmarkSet bs = i.next();
187             if(bs.getName().equals(setname)){
188                 return bs;
189             }
190         }
191         return null;
192     }
193
194     /**
195      * @return all of BirthmarkSet this instance have. elements is obtained from birthmarkSet.
196      */
197     @Override
198     public synchronized BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){
199         return AbstractComparisonResultSet.<BirthmarkSet>getArrays(birthmarkSets(target), new BirthmarkSet[0]);
200     }
201
202     @Override
203     public void setBirthmarkSets(ExtractionTarget target, BirthmarkSet[] sets) throws BirthmarkStoreException{
204         removeAllBirthmarkSets(target);
205         for(int i = 0; i < sets.length; i++){
206             addBirthmarkSet(target, sets[i]);
207         }
208     }
209
210     @Override
211     public boolean isTableType(){
212         return tableType;
213     }
214
215     @Override
216     public void setTableType(boolean flag){
217         this.tableType = flag;
218     }
219
220     protected static String generateId(){
221         SimpleDateFormat cdf = new SimpleDateFormat("yyyyMMdd-HHmmss.SSS");
222         return cdf.format(Calendar.getInstance().getTime());
223     }
224 }