OSDN Git Service

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