OSDN Git Service

必要のないクラスを削除し,クラスの整理を行った.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / result / MemoryExtractionResultSet.java
1 package jp.sourceforge.stigmata.result;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import jp.sourceforge.stigmata.BirthmarkContext;
8 import jp.sourceforge.stigmata.BirthmarkSet;
9 import jp.sourceforge.stigmata.BirthmarkStoreTarget;
10 import jp.sourceforge.stigmata.ExtractionTarget;
11 import jp.sourceforge.stigmata.utils.MultipleIterator;
12
13 /**
14  * 
15  * @author Haruaki Tamada
16  */
17 public class MemoryExtractionResultSet extends AbstractExtractionResultSet{
18     private List<BirthmarkSet> targetX = new ArrayList<BirthmarkSet>();
19     private List<BirthmarkSet> targetY = new ArrayList<BirthmarkSet>();
20
21     MemoryExtractionResultSet(BirthmarkContext context){
22         this(context, true);
23     }
24
25     MemoryExtractionResultSet(BirthmarkContext context, boolean tableType){
26         super(context, tableType);
27     }
28
29     @Override
30     public BirthmarkStoreTarget getStoreTarget(){
31         return BirthmarkStoreTarget.MEMORY;
32     }
33
34     @Override
35     public void removeAllBirthmarkSets(ExtractionTarget target){
36         switch(target){
37         case TARGET_X:
38         case TARGET_XY:
39             targetX.clear();
40             break;
41         case TARGET_Y:
42             targetY.clear();
43             break;
44         case TARGET_BOTH:
45         default:
46             throw new IllegalArgumentException("unknown target: " + target);
47         }
48     }
49
50     @Override
51     public void removeBirthmarkSet(ExtractionTarget target, BirthmarkSet set){
52         switch(target){
53         case TARGET_X:
54         case TARGET_XY:
55             targetX.remove(set);
56             break;
57         case TARGET_Y:
58             targetY.remove(set);
59             break;
60         case TARGET_BOTH:
61         default:
62             throw new IllegalArgumentException("unknown target: " + target);
63         }
64     }
65
66     @Override
67     public void addBirthmarkSet(ExtractionTarget target, BirthmarkSet set){
68         switch(target){
69         case TARGET_X:
70         case TARGET_XY:
71             targetX.add(set);
72             break;
73         case TARGET_Y:
74             targetY.add(set);
75             break;
76         case TARGET_BOTH:
77         default:
78             throw new IllegalArgumentException("unknown target: " + target);
79         }
80     }
81
82     @Override
83     public Iterator<BirthmarkSet> birthmarkSets(ExtractionTarget target){
84         Iterator<BirthmarkSet> iterator;
85         switch(target){
86         case TARGET_X:
87         case TARGET_XY:
88             iterator = targetX.iterator();
89             break;
90         case TARGET_Y:
91             iterator = targetY.iterator();
92             break;
93         case TARGET_BOTH:
94         default:
95             MultipleIterator<BirthmarkSet> i = new MultipleIterator<BirthmarkSet>();
96             i.add(targetX.iterator());
97             i.add(targetY.iterator());
98             iterator = i;
99             break;
100         }
101         return iterator;
102     }
103     @Override
104     public int getBirthmarkSetSize(ExtractionTarget target){
105         int count = 0;
106         switch(target){
107         case TARGET_X:
108         case TARGET_XY:
109             count = targetX.size();
110             break;
111         case TARGET_Y:
112             count = targetY.size();
113             break;
114         case TARGET_BOTH:
115         default:
116             count = targetX.size() + targetY.size();
117             break;
118         }
119         return count;
120     }
121
122     @Override
123     public BirthmarkSet getBirthmarkSet(ExtractionTarget target, int index){
124         BirthmarkSet set;
125         switch(target){
126         case TARGET_X:
127             set = targetX.get(index);
128             break;
129         case TARGET_Y:
130             set = targetY.get(index);
131             break;
132         case TARGET_XY:
133         case TARGET_BOTH:
134         default:
135             if(index < targetX.size()){
136                 set = targetX.get(index);
137             }
138             else{
139                 set = targetY.get(index - targetX.size());
140             }
141             break;
142         }
143         return set;
144     }
145
146     @Override
147     public BirthmarkSet[] getBirthmarkSets(ExtractionTarget target){
148         BirthmarkSet[] sets;
149         switch(target){
150         case TARGET_X:
151         case TARGET_XY:
152             sets = targetX.toArray(new BirthmarkSet[targetX.size()]);
153             break;
154         case TARGET_Y:
155             sets = targetY.toArray(new BirthmarkSet[targetX.size()]);
156             break;
157         case TARGET_BOTH:
158         default:
159             sets = new BirthmarkSet[targetX.size() + targetY.size()];
160             System.arraycopy(targetX.toArray(new BirthmarkSet[targetX.size()]), 0, sets, 0, targetX.size());
161             System.arraycopy(targetY.toArray(new BirthmarkSet[targetY.size()]), 0, sets, targetX.size(), targetY.size());
162             break;
163         }
164         return sets;
165     }
166 }