-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBlinkAnalysisTest.java
More file actions
184 lines (158 loc) · 10.4 KB
/
Copy pathBlinkAnalysisTest.java
File metadata and controls
184 lines (158 loc) · 10.4 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
import java.util.Iterator;
import java.util.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BlinkAnalysisTest {
private static String sep = System.lineSeparator();
public static void main(final String[] args) throws IOException {
// Set up a buffered reader to read input from the user
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
// Set up a test set of blinks
TaskBlinkList taskBlinks = new TaskBlinkList();
setupTestBlinkList(taskBlinks);
// Ask user for blink search criteria
System.out.println("Specify blink search criteria");
// Start out assuming the user doesn't care to specify a 50% start time criterion
boolean fiftyPercentStartTimeCriterion_Specified = false;
String fiftyPercentStartTimeCriterion_ComparisonString = "";
int fiftyPercentStartTimeCriterion_Value = 0;
// Get the 50% start time criterion if the user wants to specify it.
System.out.print("Would you like to specify a 50% start time criterion? [Y/N]: ");
char answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
fiftyPercentStartTimeCriterion_Specified = true;
System.out.print("50% start time comparison: [<,>]: ");
fiftyPercentStartTimeCriterion_ComparisonString = reader.readLine();
System.out.print("50% start time: ");
fiftyPercentStartTimeCriterion_Value = Integer.parseInt(reader.readLine());
}
// Start out assuming the user doesn't care to specify a 50% end time criterion
boolean fiftyPercentEndTimeCriterion_Specified = false;
String fiftyPercentEndTimeCriterion_ComparisonString = "";
int fiftyPercentEndTimeCriterion_Value = 0;
// Get the 50% end time criterion if the user wants to specify it.
System.out.print("Would you like to specify a 50% end time criterion? [Y/N]: ");
answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
fiftyPercentEndTimeCriterion_Specified = true;
System.out.print("50% end time comparison: [<,>]: ");
fiftyPercentEndTimeCriterion_ComparisonString = reader.readLine();
System.out.print("50% end time: ");
fiftyPercentEndTimeCriterion_Value = Integer.parseInt(reader.readLine());
}
// Start out assuming the user doesn't care to specify a 50% window duration criterion
boolean fiftyPercentWindowDurationCriterion_Specified = false;
String fiftyPercentWindowDurationCriterion_ComparisonString = "";
int fiftyPercentWindowDurationCriterion_Value = 0;
// Get the 50% window duration criterion if the user wants to specify it.
System.out.print("Would you like to specify a 50% window duration criterion? [Y/N]: ");
answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
fiftyPercentWindowDurationCriterion_Specified = true;
System.out.print("50% window duration comparison: [<,>]: ");
fiftyPercentWindowDurationCriterion_ComparisonString = reader.readLine();
System.out.print("50% window duration amount: ");
fiftyPercentWindowDurationCriterion_Value = Integer.parseInt(reader.readLine());
}
// Start out assuming the user doesn't care to specify an amplitude criterion
boolean amplitudeCriterion_Specified = false;
String amplitudeCriterion_ComparisonString = "";
int amplitudeCriterion_Value = 0;
// Get the amplitude criterion if the user wants to specify it.
System.out.print("Would you like to specify an amplitude criterion? [Y/N]: ");
answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
amplitudeCriterion_Specified = true;
System.out.print("amplitude comparison: [<,>]: ");
amplitudeCriterion_ComparisonString = reader.readLine();
System.out.print("amplitude amount: ");
amplitudeCriterion_Value = Integer.parseInt(reader.readLine());
}
// Start out assuming the user doesn't care to specify a blink style criterion
boolean styleCriterion_Specified = false;
BlinkStyle styleCriterion_Value = BlinkStyle.FULL;
// Get the style criterion if the user wants to specify it.
System.out.print("Would you like to specify a blink style criterion? [Y/N]: ");
answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
styleCriterion_Specified = true;
System.out.print("style value " + BlinkStyle.allowedValues() + ": ");
styleCriterion_Value = BlinkStyle.lookup(reader.readLine());
}
// Start out assuming the user doesn't care to specify an associated gaze shift criterion
boolean gazeShiftCriterion_Specified = false;
BlinkGazeAssociation gazeShiftCriterion_Value = BlinkGazeAssociation.NONE;
// Get the associated gaze shift criterion if the user wants to specify it.
System.out.print("Would you like to specify an associated gaze shift criterion? [Y/N]: ");
answer = reader.readLine().toUpperCase().charAt(0);
if (answer == 'Y') {
gazeShiftCriterion_Specified = true;
System.out.print("associated gaze shift value " + BlinkGazeAssociation.allowedValues() + ": ");
gazeShiftCriterion_Value = BlinkGazeAssociation.lookup(reader.readLine());
}
// Search for blinks using specified criteria
List<Blink> foundBlinks = taskBlinks.search(
fiftyPercentStartTimeCriterion_Specified,
fiftyPercentStartTimeCriterion_ComparisonString,
fiftyPercentStartTimeCriterion_Value,
fiftyPercentEndTimeCriterion_Specified,
fiftyPercentEndTimeCriterion_ComparisonString,
fiftyPercentEndTimeCriterion_Value,
fiftyPercentWindowDurationCriterion_Specified,
fiftyPercentWindowDurationCriterion_ComparisonString,
fiftyPercentWindowDurationCriterion_Value,
amplitudeCriterion_Specified,
amplitudeCriterion_ComparisonString,
amplitudeCriterion_Value,
styleCriterion_Specified,
styleCriterion_Value,
gazeShiftCriterion_Specified,
gazeShiftCriterion_Value);
int foundCount = 0;
for (Iterator<Blink> i = foundBlinks.iterator(); i.hasNext(); ) {
Blink aFoundBlink = i.next();
foundCount++;
System.out.print(foundCount + " ");
System.out.println(aFoundBlink);
}
if (foundCount == 0) {
System.out.println(sep + "Sorry, no matching blinks found" + sep);
}
}
private static void setupTestBlinkList(final TaskBlinkList taskBlinks) {
// startTime, fiftyPercentStartTime, fiftyPercentEndTime, amplitude, style, gazeAssociation
taskBlinks.addBlink(new Blink(2150, 30, 70, 350, BlinkStyle.FULL, BlinkGazeAssociation.NONE)); // matches
taskBlinks.addBlink(new Blink(1000, 35, 88, 400, BlinkStyle.FULL, BlinkGazeAssociation.BOTH));
taskBlinks.addBlink(new Blink(3230, 30, 70, 350, BlinkStyle.FULL, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(3390, 40, 90, 437, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(4150, 70, 150, 600, BlinkStyle.FULL, BlinkGazeAssociation.BOTH));
taskBlinks.addBlink(new Blink(5000, 32, 50, 200, BlinkStyle.MICRO, BlinkGazeAssociation.NONE));
taskBlinks.addBlink(new Blink(7536, 33, 70, 290, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(10001, 50, 125, 900, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(12164, 32, 71, 350, BlinkStyle.FULL, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(13000, 36, 88, 400, BlinkStyle.FULL, BlinkGazeAssociation.BOTH));
taskBlinks.addBlink(new Blink(14230, 38, 70, 280, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(15390, 47, 98, 437, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(16150, 77, 157, 600, BlinkStyle.FULL, BlinkGazeAssociation.BOTH));
taskBlinks.addBlink(new Blink(17000, 39, 57, 200, BlinkStyle.FULL, BlinkGazeAssociation.NONE)); // matches
taskBlinks.addBlink(new Blink(17536, 31, 77, 290, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(180001, 56, 125, 900, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(25150, 30, 70, 350, BlinkStyle.FULL, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(27000, 35, 88, 400, BlinkStyle.FULL, BlinkGazeAssociation.NONE));
taskBlinks.addBlink(new Blink(32099, 30, 70, 350, BlinkStyle.FULL, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(35390, 40, 90, 437, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(44150, 70, 150, 600, BlinkStyle.FULL, BlinkGazeAssociation.BOTH));
taskBlinks.addBlink(new Blink(44500, 32, 50, 200, BlinkStyle.MICRO, BlinkGazeAssociation.NONE));
taskBlinks.addBlink(new Blink(47536, 33, 70, 290, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(50001, 50, 125, 900, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(62164, 32, 71, 350, BlinkStyle.FULL, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(73000, 36, 88, 380, BlinkStyle.FULL, BlinkGazeAssociation.NONE)); // matches
taskBlinks.addBlink(new Blink(84230, 38, 70, 280, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(85390, 47, 98, 437, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
taskBlinks.addBlink(new Blink(96150, 35, 187, 300, BlinkStyle.FULL, BlinkGazeAssociation.NONE));
taskBlinks.addBlink(new Blink(97034, 39, 57, 200, BlinkStyle.MICRO, BlinkGazeAssociation.NONE));
taskBlinks.addBlink(new Blink(100536, 31, 77, 290, BlinkStyle.MICRO, BlinkGazeAssociation.HORIZONTAL));
taskBlinks.addBlink(new Blink(118001, 56, 125, 900, BlinkStyle.FULL, BlinkGazeAssociation.VERTICAL));
}
}