315acce4acd36385a6c578109f78fcd68ef7680e
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 | } |