@@ -85,6 +85,7 @@ public void processResults() throws IOException {
85
85
printLegResults ();
86
86
printPrizes ();
87
87
printCombined ();
88
+ printCollatedTimes ();
88
89
}
89
90
90
91
@ Override
@@ -94,6 +95,7 @@ protected void configure() throws IOException {
94
95
95
96
configureHelpers ();
96
97
configureInputData ();
98
+ configureInterpolatedTimes ();
97
99
configureMassStarts ();
98
100
configurePairedLegs ();
99
101
configureIndividualLegStarts ();
@@ -126,6 +128,49 @@ private void configureInputData() throws IOException {
126
128
raw_results = input .loadRawResults ();
127
129
}
128
130
131
+ private void configureInterpolatedTimes () {
132
+
133
+ int raw_result_index = 0 ;
134
+ int previous_non_null_time_index ;
135
+
136
+ while (raw_result_index < raw_results .length && raw_results [raw_result_index ].getRecordedFinishTime () == null ) raw_result_index ++;
137
+
138
+ for (int i = 0 ; i < raw_result_index - 1 ; i ++)
139
+ raw_results [i ].setRecordedFinishTime (raw_results [raw_result_index ].getRecordedFinishTime ());
140
+
141
+ while (raw_result_index < raw_results .length ) {
142
+
143
+ while (raw_result_index < raw_results .length && raw_results [raw_result_index ].getRecordedFinishTime () != null ) raw_result_index ++;
144
+ previous_non_null_time_index = raw_result_index - 1 ;
145
+
146
+ while (raw_result_index < raw_results .length && raw_results [raw_result_index ].getRecordedFinishTime () == null ) raw_result_index ++;
147
+
148
+ if (raw_result_index < raw_results .length ) {
149
+ final int number_of_consecutive_null_times = raw_result_index - previous_non_null_time_index - 1 ;
150
+
151
+ System .out .println ("number_of_consecutive_null_times: " + number_of_consecutive_null_times );
152
+ Duration time_step = raw_results [raw_result_index ].getRecordedFinishTime ().
153
+ minus (raw_results [previous_non_null_time_index ].getRecordedFinishTime ()).
154
+ dividedBy (number_of_consecutive_null_times + 1 );
155
+
156
+ System .out .println ("time before: " + raw_results [previous_non_null_time_index ].getRecordedFinishTime ());
157
+ System .out .println ("time after: " + raw_results [raw_result_index ].getRecordedFinishTime ());
158
+ System .out .println ("step: " + time_step );
159
+
160
+
161
+ for (int i = previous_non_null_time_index + 1 ; i < raw_result_index ; i ++) {
162
+ raw_results [i ].setRecordedFinishTime (raw_results [i - 1 ].getRecordedFinishTime ().plus (time_step ));
163
+ raw_results [i ].setInterpolatedTime (true );
164
+ }
165
+ }
166
+ else {
167
+ for (int i = previous_non_null_time_index + 1 ; i < raw_result_index ; i ++) {
168
+ raw_results [i ].setRecordedFinishTime (Race .DUMMY_DURATION );
169
+ }
170
+ }
171
+ }
172
+ }
173
+
129
174
private void configureMassStarts () {
130
175
131
176
start_times_for_mass_starts = new Duration [number_of_legs ];
@@ -257,27 +302,36 @@ private void fillLegFinishTimes() {
257
302
leg_results [leg_index ].DNF = false ;
258
303
}
259
304
260
- if (leg_times_swap_string != null ) swapLegTimes ();
261
- }
262
-
263
- private void swapLegTimes () {
264
- for (final String leg_time_swap : leg_times_swap_string .split ("," ))
265
- swapLegTimes (leg_time_swap );
266
- }
305
+ // if (leg_times_swap_string != null) swapLegTimes();
267
306
268
- private void swapLegTimes (final String leg_time_swap ) {
269
307
270
- final ResultWithLegIndex result_with_leg = getResultWithLegIndex (leg_time_swap );
271
308
272
- final LegResult [] leg_results = result_with_leg . result (). leg_results ;
273
- final int leg_index = result_with_leg . leg_index ( );
309
+ for ( TeamResult team_result : overall_results ) {
310
+ Arrays . sort ( team_result . leg_results , Comparator . comparingInt ( o -> o . leg_number ) );
274
311
275
- final Duration temp = leg_results [leg_index - 1 ].finish_time ;
276
-
277
- leg_results [leg_index - 1 ].finish_time = leg_results [leg_index ].finish_time ;
278
- leg_results [leg_index ].finish_time = temp ;
312
+ for (int i = 0 ; i < team_result .leg_results .length ; i ++)
313
+ team_result .leg_results [i ].leg_number = i +1 ;
314
+ }
279
315
}
280
316
317
+ // private void swapLegTimes() {
318
+ // for (final String leg_time_swap : leg_times_swap_string.split(","))
319
+ // swapLegTimes(leg_time_swap);
320
+ // }
321
+ //
322
+ // private void swapLegTimes(final String leg_time_swap) {
323
+ //
324
+ // final ResultWithLegIndex result_with_leg = getResultWithLegIndex(leg_time_swap);
325
+ //
326
+ // final LegResult[] leg_results = result_with_leg.result().leg_results;
327
+ // final int leg_index = result_with_leg.leg_index();
328
+ //
329
+ // final Duration temp = leg_results[leg_index - 1].finish_time;
330
+ //
331
+ // leg_results[leg_index - 1].finish_time = leg_results[leg_index].finish_time;
332
+ // leg_results[leg_index].finish_time = temp;
333
+ // }
334
+
281
335
private ResultWithLegIndex getResultWithLegIndex (final String bib_and_leg ) {
282
336
283
337
// String of form "bib-number/leg-number"
@@ -450,7 +504,10 @@ private void printPrizes() throws IOException {
450
504
}
451
505
452
506
private void printCombined () throws IOException {
453
-
454
507
output_HTML .printCombined ();
455
508
}
509
+
510
+ private void printCollatedTimes () throws IOException {
511
+ ((LapRaceOutputText )output_text ).printCollatedTimes ();
512
+ }
456
513
}
0 commit comments