OSDN Git Service

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