java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/tracking/TestTracTracRaceAndCompetitorStatusReconciler.java
... ...
@@ -122,7 +122,6 @@ public class TestTracTracRaceAndCompetitorStatusReconciler {
122 122
@Override
123 123
public List<Triple<Leaderboard, RaceColumn, Fleet>> getColumnsWithRaceLogForTrackedRace(
124 124
RegattaAndRaceIdentifier trackedRaceIdentifier) {
125
- // TODO Auto-generated method stub
126 125
return null;
127 126
}
128 127
... ...
@@ -261,7 +260,6 @@ public class TestTracTracRaceAndCompetitorStatusReconciler {
261 260
@Override
262 261
public List<Triple<Leaderboard, RaceColumn, Fleet>> getColumnsWithRaceLogForTrackedRace(
263 262
RegattaAndRaceIdentifier trackedRaceIdentifier) {
264
- // TODO Auto-generated method stub
265 263
return null;
266 264
}
267 265
});
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java
... ...
@@ -152,21 +152,26 @@ public interface DomainFactory {
152 152
* available but loses track of the wind, e.g., during server restarts.
153 153
*/
154 154
TracTracRaceTracker createRaceTracker(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore,
155
- WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
156
- LeaderboardGroupResolver leaderboardGroupResolver,
155
+ WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
156
+ RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
157 157
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
158
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
159
- IOException, InterruptedException, CreateModelException, TimeOutException;
158
+ RaceTrackingHandler raceTrackingHandler,
159
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
160
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
161
+ throws URISyntaxException, SubscriberInitializationException, IOException, InterruptedException,
162
+ CreateModelException, TimeOutException;
160 163
161 164
/**
162 165
* Same as {@link #createRaceTracker(URL, URI, URI, URI, TimePoint, TimePoint, WindStore, TrackedRegattaRegistry)},
163 166
* only that a predefined {@link Regatta} is used to hold the resulting races.
164 167
*/
165 168
RaceTracker createRaceTracker(Regatta regatta, RaceLogStore raceLogStore, RegattaLogStore regattaLogStore,
166
- WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
167
- LeaderboardGroupResolver leaderboardGroupResolver,
169
+ WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
170
+ RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
168 171
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
169
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
172
+ RaceTrackingHandler raceTrackingHandler,
173
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
174
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
170 175
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException,
171 176
SubscriberInitializationException, IOException, InterruptedException, TimeOutException;
172 177
... ...
@@ -188,10 +193,15 @@ public interface DomainFactory {
188 193
* this call
189 194
*/
190 195
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, long delayToLiveInMillis,
191
- Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
192
- RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
193
- IRace tractracRace, URI courseDesignUpdateURI, String tracTracApiToken, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
194
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler);
196
+ Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
197
+ TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
198
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
199
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
200
+ LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace, URI courseDesignUpdateURI,
201
+ String tracTracApiToken, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
202
+ boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds,
203
+ RaceTrackingHandler raceTrackingHandler,
204
+ RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler);
195 205
196 206
/**
197 207
* Creates a {@link RaceDefinition} from a TracTrac {@link IRace} and a domain {@link Course} definition. The
... ...
@@ -216,13 +226,15 @@ public interface DomainFactory {
216 226
* the race.
217 227
*/
218 228
DynamicTrackedRace getOrCreateRaceDefinitionAndTrackedRace(DynamicTrackedRegatta trackedRegatta, UUID raceId,
219
- String raceName, BoatClass boatClass, Map<Competitor, Boat> competitorBoats,
220
- Course course, Iterable<Sideline> sidelines, WindStore windStore,
221
- long delayToLiveInMillis, long millisecondsOverWhichToAverageWind,
222
- DynamicRaceDefinitionSet raceDefinitionSetToUpdate, URI courseDesignUpdateURI, UUID tracTracEventUuid,
223
- String tracTracApiToken, boolean ignoreTracTracMarkPassings,
224
- RaceLogAndTrackedRaceResolver raceLogResolver, Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
225
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
229
+ String raceName, BoatClass boatClass, Map<Competitor, Boat> competitorBoats, Course course,
230
+ Iterable<Sideline> sidelines, WindStore windStore, long delayToLiveInMillis,
231
+ long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
232
+ URI courseDesignUpdateURI, UUID tracTracEventUuid, String tracTracApiToken,
233
+ boolean ignoreTracTracMarkPassings, RaceLogAndTrackedRaceResolver raceLogResolver,
234
+ Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
235
+ RaceTrackingHandler raceTrackingHandler,
236
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
237
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
226 238
227 239
/**
228 240
* The record may be for a single mark or a gate. If for a gate, the {@link ControlPointPositionData#getIndex()
... ...
@@ -240,10 +252,15 @@ public interface DomainFactory {
240 252
* If the vm argument tractrac.usemarkpassings=false, the RecieverType MARKPASSINGS will not return anything
241 253
*/
242 254
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
243
- long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
244
- RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
245
- URI courseDesignUpdateURI, String tracTracApiToken, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings,
246
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler, ReceiverType... types);
255
+ long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
256
+ TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
257
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
258
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
259
+ LeaderboardGroupResolver leaderboardGroupResolver, URI courseDesignUpdateURI, String tracTracApiToken,
260
+ IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings,
261
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler,
262
+ RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler,
263
+ ReceiverType... types);
247 264
248 265
JSONService parseJSONURLWithRaceRecords(URL jsonURL, boolean loadClientParams, String tracTracApiToken) throws IOException, ParseException, org.json.simple.parser.ParseException, URISyntaxException;
249 266
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java
... ...
@@ -536,12 +536,16 @@ public class DomainFactoryImpl implements DomainFactory {
536 536
537 537
@Override
538 538
public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace,
539
- WindStore windStore, long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
540
- TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
541
- LeaderboardGroupResolver leaderboardGroupResolver, URI updateURI, String tracTracApiToken, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
542
- boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds,
543
- RaceTrackingHandler raceTrackingHandler,
544
- RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler, ReceiverType... types) {
539
+ WindStore windStore, long delayToLiveInMillis, Simulator simulator,
540
+ DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
541
+ RaceLogAndTrackedRaceResolver raceLogResolver,
542
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
543
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
544
+ LeaderboardGroupResolver leaderboardGroupResolver, URI updateURI, String tracTracApiToken,
545
+ IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
546
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler,
547
+ RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler,
548
+ ReceiverType... types) {
545 549
IEvent tractracEvent = tractracRace.getEvent();
546 550
Collection<Receiver> result = new ArrayList<Receiver>();
547 551
for (ReceiverType type : types) {
... ...
@@ -585,14 +589,16 @@ public class DomainFactoryImpl implements DomainFactory {
585 589
}
586 590
587 591
@Override
588
- public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta,
589
- long delayToLiveInMillis, Simulator simulator, WindStore windStore,
590
- DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
591
- MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace,
592
- URI updateURI, String tracTracApiToken,
593
- IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
594
- long timeoutInMilliseconds,
595
- RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler) {
592
+ public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, long delayToLiveInMillis,
593
+ Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
594
+ TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
595
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
596
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
597
+ LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace, URI updateURI,
598
+ String tracTracApiToken, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
599
+ boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds,
600
+ RaceTrackingHandler raceTrackingHandler,
601
+ RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler) {
596 602
final List<ReceiverType> receiverTypes = new ArrayList<>();
597 603
receiverTypes.addAll(Arrays.asList(ReceiverType.RACECOURSE, ReceiverType.MARKPASSINGS, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH,
598 604
ReceiverType.RAWPOSITIONS, ReceiverType.SENSORDATA));
... ...
@@ -656,10 +662,11 @@ public class DomainFactoryImpl implements DomainFactory {
656 662
String raceName, BoatClass boatClass, Map<Competitor, Boat> competitorsAndBoats, Course course,
657 663
Iterable<Sideline> sidelines, WindStore windStore, long delayToLiveInMillis,
658 664
long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
659
- URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracApiToken,
660
- boolean ignoreTracTracMarkPassings, RaceLogAndTrackedRaceResolver raceLogResolver,
661
- Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
662
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
665
+ URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracApiToken, boolean ignoreTracTracMarkPassings,
666
+ RaceLogAndTrackedRaceResolver raceLogResolver, Consumer<DynamicTrackedRace> runBeforeExposingRace,
667
+ IRace tractracRace, RaceTrackingHandler raceTrackingHandler,
668
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
669
+ ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
663 670
synchronized (raceCache) {
664 671
RaceDefinition raceDefinition = raceCache.get(raceId);
665 672
if (raceDefinition == null) {
java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogAndTrackedRaceResolver.java
... ...
@@ -14,24 +14,30 @@ import com.sap.sailing.domain.tracking.TrackedRace;
14 14
import com.sap.sse.common.Util.Triple;
15 15
16 16
/**
17
- * In addition to being able to resolve a race log from a {@link SimpleRaceLogIdentifier}, this
18
- * specialization can additionally look for a {@link TrackedRace} linked to the "slot" identified
19
- * by a {@link SimpleRaceLogIdentifier}.
17
+ * In addition to being able to resolve a race log from a {@link SimpleRaceLogIdentifier}, this specialization can
18
+ * additionally look for a {@link TrackedRace} linked to the "slot" identified by a {@link SimpleRaceLogIdentifier}.
20 19
*
21 20
* @author Axel Uhl (D043530)
22 21
*
23 22
*/
24 23
public interface RaceLogAndTrackedRaceResolver extends RaceLogResolver {
25 24
/**
26
- * The identifier is assumed to reference a {@link RaceColumn} in a {@link IsRegattaLike} object,
27
- * plus a {@link Fleet} object that can be used as an index into the {@link RaceColumn} object.
28
- * With this, both, the {@link RaceLog} as well as a {@link TrackedRace} can be looked up.
25
+ * The identifier is assumed to reference a {@link RaceColumn} in a {@link IsRegattaLike} object, plus a
26
+ * {@link Fleet} object that can be used as an index into the {@link RaceColumn} object. With this, both, the
27
+ * {@link RaceLog} as well as a {@link TrackedRace} can be looked up.
29 28
*/
30 29
TrackedRace resolveTrackedRace(SimpleRaceLogIdentifier identifier);
31
-
32
- // could be implemtet as dafault
33 30
34
- List<Triple<Leaderboard, RaceColumn, Fleet>> getColumnsWithRaceLogForTrackedRace(
35
- RegattaAndRaceIdentifier trackedRaceIdentifier);
31
+ /**
32
+ * Determines those {@link RaceColumn}/{@link Fleet} combinations ("slots") from all {@link Leaderboard}s managed by
33
+ * this resolver that the tracked race identified by {@code trackedRaceIdentifier} shall be linked to when loaded.
34
+ * This information is relevant, e.g., after having created a {@link TrackedRace} that previously was attached to
35
+ * one or more such "slots" and shall now be re-connected to those same slots again. It is also helpful, e.g., when
36
+ * trying to figure out which race logs will be
37
+ * {@link TrackedRace#attachRegattaLog(com.sap.sailing.domain.abstractlog.regatta.RegattaLog) attached} to that
38
+ * {@link TrackedRace} because usually each "slot" comes with its own {@link RaceLog}, so that attaching to multiple
39
+ * slots will result in multiple race logs being attached to the tracked race.
40
+ */
41
+ List<Triple<Leaderboard, RaceColumn, Fleet>> getColumnsWithRaceLogForTrackedRace(RegattaAndRaceIdentifier trackedRaceIdentifier);
36 42
37 43
}