1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 package org.ximtec.igesture.algorithm.rubine3d.tools;
27
28 import java.io.File;
29 import java.util.Iterator;
30 import java.util.List;
31 import java.util.Vector;
32
33 import org.sigtec.ink.Note;
34 import org.ximtec.igesture.batch.BatchProcess;
35 import org.ximtec.igesture.batch.BatchProcessContainer;
36 import org.ximtec.igesture.batch.BatchResultSet;
37 import org.ximtec.igesture.batch.BatchTools;
38 import org.ximtec.igesture.core.Gesture;
39 import org.ximtec.igesture.core.GestureClass;
40 import org.ximtec.igesture.core.GestureSample3D;
41 import org.ximtec.igesture.core.GestureSet;
42 import org.ximtec.igesture.core.SampleDescriptor;
43 import org.ximtec.igesture.core.SampleDescriptor3D;
44 import org.ximtec.igesture.core.TestClass;
45 import org.ximtec.igesture.core.TestSet;
46 import org.ximtec.igesture.util.XMLTool;
47 import org.ximtec.igesture.util.additions3d.RecordedGesture3D;
48
49 public class BatchTest3DTool {
50
51 private File configFile;
52 private File outputDir;
53 TestSet testSet;
54 GestureSet gestureSet;
55
56
57
58
59
60
61
62 public BatchTest3DTool(TestSet testSet, GestureSet gestureSet,
63 String configFileName, String outputDirName) {
64 if (configFileName == null || configFileName.equals(""))
65 configFile = new File("C:\\configuration3d.xml");
66 else
67 configFile = new File(configFileName);
68 System.out.println("CONFIG FILE: " + configFile);
69 if (outputDirName == null || outputDirName.equals(""))
70 outputDir = new File("C:\\Output");
71 if (testSet == null) {
72
73 } else {
74 this.testSet = testSet;
75 }
76 if (gestureSet == null) {
77
78 } else {
79 this.gestureSet = gestureSet;
80 }
81 }
82
83
84
85
86
87
88
89 public BatchResultSet runBatch() throws Exception {
90
91 BatchResultSet resultSet = null;
92
93 if (configFile.exists() && testSet != null && gestureSet != null) {
94
95 BatchProcessContainer container = XMLTool
96 .importBatchProcessContainer(configFile);
97
98 BatchProcess batchProcess = new BatchProcess(container);
99
100 batchProcess.setTestSet(testSet);
101 batchProcess.addGestureSet(gestureSet);
102
103 resultSet = batchProcess.run();
104
105 BatchTools.writeResultsOnDisk(outputDir, resultSet);
106 }
107
108 return resultSet;
109 }
110
111
112
113
114
115
116
117 public static TestSet convert3DGestureSetToTestSet(GestureSet gestureSet) {
118 TestSet testSet = new TestSet(gestureSet.getName());
119
120
121
122 Iterator<GestureClass> i = gestureSet.getGestureClasses().iterator();
123 while (i.hasNext()) {
124 GestureClass tempGestureClass = i.next();
125
126
127 TestClass tempTestClass = new TestClass(tempGestureClass.getName());
128
129 Iterator<Gesture<RecordedGesture3D>> sampleIter = tempGestureClass
130 .getDescriptor(SampleDescriptor3D.class).getSamples()
131 .iterator();
132 while (sampleIter.hasNext()) {
133 GestureSample3D tempSample = (GestureSample3D) sampleIter
134 .next();
135
136
137 tempTestClass.add(tempSample);
138 }
139
140 testSet.addTestClass(tempTestClass);
141 }
142
143
144 return testSet;
145 }
146
147
148
149
150
151
152
153 public static TestSet convert2DGestureSetToTestSet(GestureSet gestureSet) {
154 TestSet testSet = new TestSet(gestureSet.getName());
155
156
157
158 for(GestureClass tempGestureClass: gestureSet.getGestureClasses()){
159
160
161 TestClass tempTestClass = new TestClass(tempGestureClass.getName());
162
163
164 List<Gesture<Note>> samples = tempGestureClass.getDescriptor(SampleDescriptor.class).getSamples();
165 for(Gesture<Note> tempSample:samples){
166
167 tempTestClass.add(tempSample);
168
169 }
170
171 testSet.addTestClass(tempTestClass);
172
173
174
175
176 }
177
178 return testSet;
179 }
180
181 public static List<GestureSet> splitSetToPlanes(GestureSet gestureSet3D) {
182 GestureSet gestureSetXY = new GestureSet(gestureSet3D.getName());
183 GestureSet gestureSetYZ = new GestureSet(gestureSet3D.getName());
184 GestureSet gestureSetZX = new GestureSet(gestureSet3D.getName());
185
186 Iterator<GestureClass> i = gestureSet3D.getGestureClasses().iterator();
187 while (i.hasNext()) {
188 GestureClass tempClass = i.next();
189 GestureClass xyClass = new GestureClass(tempClass.getName());
190 GestureClass yzClass = new GestureClass(tempClass.getName());
191 GestureClass zxClass = new GestureClass(tempClass.getName());
192 SampleDescriptor xyDescriptor = new SampleDescriptor();
193 SampleDescriptor yzDescriptor = new SampleDescriptor();
194 SampleDescriptor zxDescriptor = new SampleDescriptor();
195
196 Iterator<Gesture<RecordedGesture3D>> sampleIter = tempClass
197 .getDescriptor(SampleDescriptor3D.class).getSamples()
198 .iterator();
199 while (sampleIter.hasNext()) {
200 GestureSample3D tempSample = (GestureSample3D) sampleIter
201 .next();
202
203 List<Gesture<Note>> planes = tempSample.splitToPlanes();
204
205 xyDescriptor.addSample(planes.get(0));
206 yzDescriptor.addSample(planes.get(1));
207 zxDescriptor.addSample(planes.get(2));
208 }
209
210
211
212
213
214
215
216
217
218
219 xyClass.addDescriptor(xyDescriptor);
220 yzClass.addDescriptor(yzDescriptor);
221 zxClass.addDescriptor(zxDescriptor);
222
223 gestureSetXY.addGestureClass(xyClass);
224 gestureSetYZ.addGestureClass(yzClass);
225 gestureSetZX.addGestureClass(zxClass);
226 }
227
228 Vector<GestureSet> returnList = new Vector<GestureSet>();
229 returnList.add(gestureSetXY);
230 returnList.add(gestureSetYZ);
231 returnList.add(gestureSetZX);
232
233 return returnList;
234 }
235
236 }