java/com.google.gwt.servlet/.settings/com.gwtplugins.gwt.eclipse.core.prefs
... ...
@@ -0,0 +1,2 @@
1
+//gwtVersion_/com.google.gwt.servlet/lib=
2
+eclipse.preferences.version=1
java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogConnectivityParams.java
... ...
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.common.racelog.tracking.DoesNotHaveRegattaLogExcep
20 20
import com.sap.sailing.domain.common.racelog.tracking.RaceNotCreatedException;
21 21
import com.sap.sailing.domain.leaderboard.Leaderboard;
22 22
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
23
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
23 24
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
24 25
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
25 26
import com.sap.sailing.domain.regattalike.HasRegattaLike;
... ...
@@ -70,15 +71,15 @@ public class RaceLogConnectivityParams extends AbstractRaceTrackingConnectivityP
70 71
@Override
71 72
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
72 73
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
73
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
74
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
74 75
return createRaceTracker(regatta, trackedRegattaRegistry, windStore, raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds,
75
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
76
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
76 77
}
77 78
78 79
@Override
79 80
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
80 81
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
81
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
82
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
82 83
if (regatta == null) {
83 84
BoatClass boatClass = new RaceInformationFinder(getRaceLog()).analyze().getBoatClass();
84 85
regatta = trackedRegattaRegistry.getOrCreateDefaultRegatta(
java/com.sap.sailing.domain.swisstimingadapter/src/com/sap/sailing/domain/swisstimingadapter/impl/SwissTimingTrackingConnectivityParameters.java
... ...
@@ -4,6 +4,7 @@ package com.sap.sailing.domain.swisstimingadapter.impl;
4 4
import com.sap.sailing.domain.base.BoatClass;
5 5
import com.sap.sailing.domain.base.Regatta;
6 6
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
7
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
7 8
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
8 9
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
9 10
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -76,7 +77,7 @@ public class SwissTimingTrackingConnectivityParameters extends AbstractRaceTrack
76 77
@Override
77 78
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
78 79
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
79
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
80
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
80 81
return swissTimingFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore, domainFactory, trackedRegattaRegistry, raceLogResolver,
81 82
this, raceTrackingHandler, markPassingRaceFingerprintRegistry);
82 83
}
... ...
@@ -84,7 +85,7 @@ public class SwissTimingTrackingConnectivityParameters extends AbstractRaceTrack
84 85
@Override
85 86
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
86 87
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
87
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
88
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
88 89
return swissTimingFactory.createRaceTracker(regatta, windStore, domainFactory, trackedRegattaRegistry, raceLogResolver, raceLogStore,
89 90
regattaLogStore, this, raceTrackingHandler, markPassingRaceFingerprintRegistry);
90 91
}
java/com.sap.sailing.domain.swisstimingreplayadapter.test/src/com/sap/sailing/domain/swisstimingreplayadapter/test/SwissTimingReplayAdapterServiceTest.java
... ...
@@ -189,7 +189,7 @@ public class SwissTimingReplayAdapterServiceTest {
189 189
SwissTimingReplayToDomainAdapter replayListener = new SwissTimingReplayToDomainAdapter(null, /* raceName */ "SAW005906",
190 190
"SAW005906", /* boatClass */ null, DomainFactory.INSTANCE, new DummyTrackedRegattaRegistry(), /* useInternalMarkPassingAlgorithm */ false,
191 191
mock(RaceLogAndTrackedRaceResolver.class), EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, /* tracker creator */ null,
192
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
192
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null);
193 193
new SwissTimingReplayParserImpl().readData(getClass().getResourceAsStream("/SAW005906.20120805.replay"), replayListener);
194 194
Iterable<? extends TrackedRace> trackedRaces = replayListener.getTrackedRaces();
195 195
assertFalse(Util.isEmpty(trackedRaces));
... ...
@@ -205,7 +205,7 @@ public class SwissTimingReplayAdapterServiceTest {
205 205
SwissTimingReplayToDomainAdapter replayListener = new SwissTimingReplayToDomainAdapter(null, /* raceName */ "SAW005905",
206 206
"SAW005905", /* boatClass */ null, DomainFactory.INSTANCE, new DummyTrackedRegattaRegistry(), /* useInternalMarkPassingAlgorithm */ false,
207 207
mock(RaceLogAndTrackedRaceResolver.class), EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, /* tracker creator */ null,
208
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
208
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null);
209 209
new SwissTimingReplayParserImpl().readData(getClass().getResourceAsStream("/SAW005905.20120805.replay"), replayListener);
210 210
Iterable<? extends TrackedRace> trackedRaces = replayListener.getTrackedRaces();
211 211
TrackedRace trackedRace = trackedRaces.iterator().next();
java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayConnectivityParameters.java
... ...
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.swisstimingreplayadapter.impl;
3 3
import com.sap.sailing.domain.base.RaceDefinition;
4 4
import com.sap.sailing.domain.base.Regatta;
5 5
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
6
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
6 7
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
7 8
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
8 9
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -141,12 +142,12 @@ public class SwissTimingReplayConnectivityParameters extends AbstractRaceTrackin
141 142
@Override
142 143
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, final WindStore windStore,
143 144
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
144
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
145
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
145 146
SwissTimingReplayToDomainAdapter listener = new SwissTimingReplayToDomainAdapter(/* regatta */ null, raceName,
146 147
raceID, domainFactory.getBaseDomainFactory().getOrCreateBoatClass(boatClassName), domainFactory,
147 148
trackedRegattaRegistry, useInternalMarkPassingAlgorithm, raceLogResolver, raceLogStore,
148 149
regattaLogStore, l->new SwissTimingReplayRaceTracker(windStore, l, this),
149
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
150
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
150 151
replayService.loadRaceData(link, listener);
151 152
return listener.getTracker();
152 153
}
... ...
@@ -154,12 +155,12 @@ public class SwissTimingReplayConnectivityParameters extends AbstractRaceTrackin
154 155
@Override
155 156
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
156 157
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
157
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
158
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
158 159
SwissTimingReplayToDomainAdapter listener = new SwissTimingReplayToDomainAdapter(regatta, raceName,
159 160
raceID, domainFactory.getBaseDomainFactory().getOrCreateBoatClass(boatClassName),
160 161
domainFactory, trackedRegattaRegistry, useInternalMarkPassingAlgorithm, raceLogResolver,
161 162
raceLogStore, regattaLogStore, l->new SwissTimingReplayRaceTracker(windStore, l, this),
162
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
163
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
163 164
replayService.loadRaceData(link, listener);
164 165
return listener.getTracker();
165 166
}
java/com.sap.sailing.domain.swisstimingreplayadapter/src/com/sap/sailing/domain/swisstimingreplayadapter/impl/SwissTimingReplayToDomainAdapter.java
... ...
@@ -37,6 +37,7 @@ import com.sap.sailing.domain.common.impl.WindImpl;
37 37
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
38 38
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
39 39
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
40
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
40 41
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
41 42
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
42 43
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -186,12 +187,13 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter i
186 187
* be obtained from {@link #getTracker()}. This tracker's {@link RaceTracker.RaceCreationListener}s will
187 188
* be {@link SwissTimingReplayRaceTracker#notifyRaceCreationListeners() notified} when this adapter has
188 189
* created the race.
190
+ * @param maneuverRaceFingerprintRegistry
189 191
*/
190 192
public SwissTimingReplayToDomainAdapter(Regatta regatta, String raceName, String raceIdForRaceDefinition,
191 193
BoatClass boatClass, DomainFactory domainFactory,
192 194
TrackedRegattaRegistry trackedRegattaRegistry, boolean useInternalMarkPassingAlgorithm, RaceLogAndTrackedRaceResolver raceLogResolver,
193 195
RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, TrackerConstructor trackerConstructor,
194
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
196
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
195 197
this.tracker = trackerConstructor == null ? null : trackerConstructor.createTracker(this);
196 198
this.raceLogResolver = raceLogResolver;
197 199
this.markPassingRaceFingerprintRegistry = markPassingRaceFingerprintRegistry;
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CourseUpdateTest.java
... ...
@@ -108,7 +108,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
108 108
/* delayToLiveInMillis */0l, /* millisecondsOverWhichToAverageWind */30000, /* simulator */null, /* courseDesignUpdateURI */
109 109
null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(),
110 110
/*ignoreTracTracMarkPassings*/false, mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
111
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null) {
111
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null) {
112 112
@Override
113 113
protected void handleEvent(Triple<IControlRoute, Long, Void> event) {
114 114
super.handleEvent(event);
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/MultipleClassesInRegattaTest.java
... ...
@@ -59,28 +59,28 @@ public class MultipleClassesInRegattaTest {
59 59
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
60 60
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
61 61
tracTracUsername, tracTracPassword, "cce678c8-97e6-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
62
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
62
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
63 63
kiwotest2 = domainFactory
64 64
.createRaceTracker(
65 65
EmptyRaceLogStore.INSTANCE,
66 66
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
67 67
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
68 68
tracTracUsername, tracTracPassword, "11290bd6-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
69
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
69
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
70 70
kiwotest3 = domainFactory
71 71
.createRaceTracker(
72 72
EmptyRaceLogStore.INSTANCE,
73 73
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
74 74
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
75 75
tracTracUsername, tracTracPassword, "39635b24-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
76
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
76
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
77 77
weym470may112014_2 = domainFactory
78 78
.createRaceTracker(
79 79
EmptyRaceLogStore.INSTANCE,
80 80
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
81 81
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
82 82
tracTracUsername, tracTracPassword, "04498426-7dfd-11e0-8236-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
83
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
83
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
84 84
85 85
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
86 86
assertEquals("5O5", kiwotest2.getRegatta().getBoatClass().getName());
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/OnlineTracTracBasedTest.java
... ...
@@ -133,7 +133,7 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest i
133 133
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
134 134
for (Receiver r : domainFactory.getUpdateReceivers(trackedRegatta, getTracTracRace(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */0l, /* simulator */null, createRaceDefinitionSet(),
135 135
/* trackedRegattaRegistry */ null,
136
- mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
136
+ mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,/* maneuverRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
137 137
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
138 138
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, receiverTypes)) {
139 139
receivers.add(r);
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveMarkPassingDataTest.java
... ...
@@ -120,7 +120,7 @@ public class ReceiveMarkPassingDataTest extends AbstractTracTracLiveTest {
120 120
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
121 121
}
122 122
}, /* trackedRegattaRegistry */null,
123
- mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
123
+ mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,/*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
124 124
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
125 125
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(),
126 126
/* raceAndCompetitorStatusWithRaceLogReconciler */ null, ReceiverType.RACECOURSE, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS)) {
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveTrackingDataTest.java
... ...
@@ -89,7 +89,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
89 89
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
90 90
}
91 91
},
92
- /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
92
+ /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
93 93
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
94 94
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null)) {
95 95
receiver.subscribe();
... ...
@@ -103,7 +103,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
103 103
@Override
104 104
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
105 105
}
106
- }, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
106
+ }, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
107 107
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
108 108
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null));
109 109
}
java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/UnicodeCharactersInCompetitorNamesTest.java
... ...
@@ -73,7 +73,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
73 73
/* preferReplayIfAvailable */ false, /* timeoutInMillis */ (int) RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
74 74
/* useOfficialEventsToUpdateRaceLog */ false, /* liveURIFromConfiguration */ null, /* storedURIFromConfiguration */ null),
75 75
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
76
- new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
76
+ new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
77 77
78 78
Iterable<Competitor> competitors = fourtyninerYellow_2.getRaceHandle().getRace().getCompetitors();
79 79
for (Competitor competitor : competitors) {
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java
... ...
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.Waypoint;
28 28
import com.sap.sailing.domain.common.PassingInstruction;
29 29
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
30 30
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
31
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
31 32
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
32 33
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
33 34
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -154,7 +155,7 @@ public interface DomainFactory {
154 155
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
155 156
LeaderboardGroupResolver leaderboardGroupResolver,
156 157
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
157
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
158
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
158 159
IOException, InterruptedException, CreateModelException, TimeOutException;
159 160
160 161
/**
... ...
@@ -165,7 +166,7 @@ public interface DomainFactory {
165 166
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
166 167
LeaderboardGroupResolver leaderboardGroupResolver,
167 168
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
168
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
169
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
169 170
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException,
170 171
SubscriberInitializationException, IOException, InterruptedException, TimeOutException;
171 172
... ...
@@ -188,7 +189,7 @@ public interface DomainFactory {
188 189
*/
189 190
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, long delayToLiveInMillis,
190 191
Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
191
- RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
192
+ RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
192 193
IRace tractracRace, URI courseDesignUpdateURI, String tracTracUsername,
193 194
String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
194 195
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler);
... ...
@@ -222,7 +223,7 @@ public interface DomainFactory {
222 223
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, URI courseDesignUpdateURI, UUID tracTracEventUuid,
223 224
String tracTracUsername, String tracTracPassword, boolean ignoreTracTracMarkPassings,
224 225
RaceLogAndTrackedRaceResolver raceLogResolver, Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
225
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry);
226
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
226 227
227 228
/**
228 229
* The record may be for a single mark or a gate. If for a gate, the {@link ControlPointPositionData#getIndex()
... ...
@@ -241,10 +242,16 @@ public interface DomainFactory {
241 242
*/
242 243
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
243 244
long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
244
- RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
245
+ RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
245 246
URI courseDesignUpdateURI, String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings,
246 247
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler, ReceiverType... types);
247 248
249
+// Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
250
+// long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
251
+// TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
252
+// MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
253
+// ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
254
+
248 255
JSONService parseJSONURLWithRaceRecords(URL jsonURL, boolean loadClientParams) throws IOException, ParseException, org.json.simple.parser.ParseException, URISyntaxException;
249 256
250 257
/**
... ...
@@ -350,4 +357,5 @@ public interface DomainFactory {
350 357
* start/stop invocations.
351 358
*/
352 359
IEventSubscriber getOrCreateEventSubscriber(IEvent tractracEvent, URI liveURI, URI storedURI);
360
+
353 361
}
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java
... ...
@@ -63,6 +63,7 @@ import com.sap.sailing.domain.leaderboard.Leaderboard;
63 63
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
64 64
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
65 65
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
66
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
66 67
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
67 68
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
68 69
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -536,7 +537,7 @@ public class DomainFactoryImpl implements DomainFactory {
536 537
@Override
537 538
public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace,
538 539
WindStore windStore, long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
539
- TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
540
+ TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
540 541
LeaderboardGroupResolver leaderboardGroupResolver, URI updateURI, String tracTracUsername,
541 542
String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
542 543
boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds,
... ...
@@ -552,7 +553,7 @@ public class DomainFactoryImpl implements DomainFactory {
552 553
WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, simulator, updateURI,
553 554
tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber,
554 555
useInternalMarkPassingAlgorithm, raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds,
555
- raceTrackingHandler, markPassingRaceFingerprintRegistry));
556
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry));
556 557
break;
557 558
case MARKPOSITIONS:
558 559
result.add(new MarkPositionReceiver(
... ...
@@ -588,7 +589,7 @@ public class DomainFactoryImpl implements DomainFactory {
588 589
public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta,
589 590
long delayToLiveInMillis, Simulator simulator, WindStore windStore,
590 591
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
591
- MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace,
592
+ MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace,
592 593
URI updateURI, String tracTracUsername, String tracTracPassword,
593 594
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
594 595
long timeoutInMilliseconds,
... ...
@@ -600,7 +601,7 @@ public class DomainFactoryImpl implements DomainFactory {
600 601
receiverTypes.add(ReceiverType.COMPETITOR);
601 602
}
602 603
return getUpdateReceivers(trackedRegatta, tractracRace, windStore, delayToLiveInMillis, simulator,
603
- raceDefinitionSetToUpdate, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, leaderboardGroupResolver,
604
+ raceDefinitionSetToUpdate, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry,maneuverRaceFingerprintRegistry, leaderboardGroupResolver,
604 605
updateURI, tracTracUsername, tracTracPassword, eventSubscriber,
605 606
raceSubscriber, useInternalMarkPassingAlgorithm, timeoutInMilliseconds, raceTrackingHandler,
606 607
raceAndCompetitorStatusWithRaceLogReconciler, receiverTypes.toArray(new ReceiverType[receiverTypes.size()]));
... ...
@@ -659,7 +660,7 @@ public class DomainFactoryImpl implements DomainFactory {
659 660
URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracUsername, String tracTracPassword,
660 661
boolean ignoreTracTracMarkPassings, RaceLogAndTrackedRaceResolver raceLogResolver,
661 662
Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
662
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
663
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
663 664
synchronized (raceCache) {
664 665
RaceDefinition raceDefinition = raceCache.get(raceId);
665 666
if (raceDefinition == null) {
... ...
@@ -690,7 +691,7 @@ public class DomainFactoryImpl implements DomainFactory {
690 691
}
691 692
trackedRace = createTrackedRace(trackedRegatta, raceDefinition, sidelines, windStore,
692 693
delayToLiveInMillis, millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate, ignoreTracTracMarkPassings,
693
- raceLogResolver, raceTrackingHandler, trackingConnectorInfo, markPassingRaceFingerprintRegistry);
694
+ raceLogResolver, raceTrackingHandler, trackingConnectorInfo, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
694 695
logger.info("Added race " + raceDefinition + " to regatta " + trackedRegatta.getRegatta());
695 696
if (runBeforeExposingRace != null) {
696 697
logger.fine("Running callback for tracked race creation for "+trackedRace.getRace());
... ...
@@ -778,12 +779,12 @@ public class DomainFactoryImpl implements DomainFactory {
778 779
Iterable<Sideline> sidelines, WindStore windStore, long delayToLiveInMillis,
779 780
long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
780 781
boolean useMarkPassingCalculator, RaceLogAndTrackedRaceResolver raceLogResolver,
781
- RaceTrackingHandler raceTrackingHandler, TrackingConnectorInfo trackingConnectorInfo, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
782
+ RaceTrackingHandler raceTrackingHandler, TrackingConnectorInfo trackingConnectorInfo, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
782 783
return raceTrackingHandler.createTrackedRace(trackedRegatta, race, sidelines,
783 784
windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind,
784 785
/* time over which to average speed: */ race.getBoatClass().getApproximateManeuverDurationInMilliseconds(),
785 786
raceDefinitionSetToUpdate, useMarkPassingCalculator, raceLogResolver, Optional.empty(),
786
- trackingConnectorInfo, markPassingRaceFingerprintRegistry, /*maneuverRaceFingerprintRegistry*/ null);
787
+ trackingConnectorInfo, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
787 788
}
788 789
789 790
/**
... ...
@@ -1031,10 +1032,10 @@ public class DomainFactoryImpl implements DomainFactory {
1031 1032
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
1032 1033
LeaderboardGroupResolver leaderboardGroupResolver,
1033 1034
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
1034
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
1035
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
1035 1036
throws URISyntaxException, SubscriberInitializationException, IOException, InterruptedException, CreateModelException, TimeOutException {
1036 1037
return new TracTracRaceTrackerImpl(this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
1037
- raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry);
1038
+ raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
1038 1039
}
1039 1040
1040 1041
@Override
... ...
@@ -1042,10 +1043,10 @@ public class DomainFactoryImpl implements DomainFactory {
1042 1043
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
1043 1044
LeaderboardGroupResolver leaderboardGroupResolver,
1044 1045
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
1045
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, CreateModelException,
1046
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, CreateModelException,
1046 1047
SubscriberInitializationException, IOException, InterruptedException, TimeOutException {
1047 1048
return new TracTracRaceTrackerImpl(regatta, this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
1048
- raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry);
1049
+ raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
1049 1050
}
1050 1051
1051 1052
@Override
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java
... ...
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.base.Regatta;
21 21
import com.sap.sailing.domain.base.Sideline;
22 22
import com.sap.sailing.domain.common.PassingInstruction;
23 23
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
24
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
24 25
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
25 26
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
26 27
import com.sap.sailing.domain.shared.tracking.impl.TrackingConnectorInfoImpl;
... ...
@@ -73,6 +74,7 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
73 74
private final boolean useInternalMarkPassingAlgorithm;
74 75
private final RaceLogAndTrackedRaceResolver raceLogResolver;
75 76
private final MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry;
77
+ private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
76 78
private final LeaderboardGroupResolver leaderboardGroupResolver;
77 79
78 80
private final RaceTrackingHandler raceTrackingHandler;
... ...
@@ -83,11 +85,12 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
83 85
URI updateURI, String tracTracUsername, String tracTracPassword,
84 86
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
85 87
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
86
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
88
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
87 89
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
88 90
this.tractracRace = tractracRace;
89 91
this.raceLogResolver = raceLogResolver;
90 92
this.markPassingRaceFingerprintRegistry = markPassingRaceFingerprintRegistry;
93
+ this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
91 94
this.leaderboardGroupResolver = leaderboardGroupResolver;
92 95
this.millisecondsOverWhichToAverageWind = millisecondsOverWhichToAverageWind;
93 96
this.delayToLiveInMillis = delayToLiveInMillis;
... ...
@@ -179,7 +182,7 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
179 182
getTrackedRegatta().getRegatta().getBoatClass(), competitorAndBoats, course, sidelines, windStore, delayToLiveInMillis,
180 183
millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate, tracTracUpdateURI,
181 184
getTracTracEvent().getId(), tracTracUsername, tracTracPassword, useInternalMarkPassingAlgorithm, raceLogResolver, tr->updateRaceTimes(tractracRace, tr), tractracRace,
182
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
185
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
183 186
addAllMarksFromCourseArea(trackedRace);
184 187
if (getSimulator() != null) {
185 188
getSimulator().setTrackedRace(trackedRace);
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceTrackingConnectivityParametersImpl.java
... ...
@@ -9,6 +9,7 @@ import java.util.logging.Logger;
9 9
10 10
import com.sap.sailing.domain.base.Regatta;
11 11
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
12
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
12 13
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
13 14
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
14 15
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -133,21 +134,21 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking
133 134
@Override
134 135
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
135 136
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
136
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException,
137
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException,
137 138
CreateModelException, SubscriberInitializationException, IOException, InterruptedException, TimeOutException {
138 139
RaceTracker tracker = domainFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore,
139 140
trackedRegattaRegistry, raceLogResolver, leaderboardGroupResolver, this, timeoutInMilliseconds,
140
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
141
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
141 142
return tracker;
142 143
}
143 144
144 145
@Override
145 146
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
146 147
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
147
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
148
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
148 149
RaceTracker tracker = domainFactory.createRaceTracker(regatta, raceLogStore, regattaLogStore, windStore,
149 150
trackedRegattaRegistry, raceLogResolver, leaderboardGroupResolver, this, timeoutInMilliseconds,
150
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
151
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
151 152
return tracker;
152 153
}
153 154
java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/TracTracRaceTrackerImpl.java
... ...
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.Regatta;
28 28
import com.sap.sailing.domain.base.Series;
29 29
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
30 30
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
31
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
31 32
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
32 33
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
33 34
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -276,11 +277,11 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
276 277
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
277 278
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
278 279
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
279
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
280
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
280 281
IOException, InterruptedException, CreateModelException, TimeOutException {
281 282
this(/* regatta */ null, domainFactory, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
282 283
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds,
283
- raceTrackingHandler, markPassingRaceFingerprintRegistry);
284
+ raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
284 285
}
285 286
286 287
/**
... ...
@@ -301,7 +302,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
301 302
RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
302 303
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
303 304
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
304
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
305
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
305 306
throws URISyntaxException, SubscriberInitializationException, IOException, InterruptedException, CreateModelException, TimeOutException {
306 307
super(connectivityParams);
307 308
final URL paramURL = connectivityParams.getParamURL();
... ...
@@ -418,7 +419,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
418 419
trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(this.regatta);
419 420
receivers = new HashSet<Receiver>();
420 421
for (Receiver receiver : domainFactory.getUpdateReceivers(getTrackedRegatta(), delayToLiveInMillis,
421
- simulator, windStore, this, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, leaderboardGroupResolver,
422
+ simulator, windStore, this, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry, leaderboardGroupResolver,
422 423
tractracRace, tracTracUpdateURI, tracTracUsername, tracTracPassword, eventSubscriber,
423 424
raceSubscriber, useInternalMarkPassingAlgorithm, timeoutInMilliseconds, raceTrackingHandler, reconciler)) {
424 425
receivers.add(receiver);
java/com.sap.sailing.domain.yellowbrickadapter/src/com/sap/sailing/domain/yellowbrickadapter/YellowBrickRaceTrackingConnectivityParams.java
... ...
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.yellowbrickadapter;
3 3
import com.sap.sailing.domain.base.DomainFactory;
4 4
import com.sap.sailing.domain.base.Regatta;
5 5
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
6
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
6 7
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
7 8
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
8 9
import com.sap.sailing.domain.racelog.RaceLogStore;
... ...
@@ -46,7 +47,7 @@ public class YellowBrickRaceTrackingConnectivityParams extends AbstractRaceTrack
46 47
@Override
47 48
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
48 49
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
49
- long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
50
+ long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
50 51
return new YellowBrickRaceTrackerImpl(this, /* regatta */ null, trackedRegattaRegistry, windStore,
51 52
raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds, raceTrackingHandler, raceLogStore,
52 53
regattaLogStore, baseDomainFactory, yellowBrickTrackingAdapter);
... ...
@@ -56,7 +57,7 @@ public class YellowBrickRaceTrackingConnectivityParams extends AbstractRaceTrack
56 57
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
57 58
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver,
58 59
LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
59
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
60
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
60 61
return new YellowBrickRaceTrackerImpl(this, regatta, trackedRegattaRegistry, windStore, raceLogResolver,
61 62
leaderboardGroupResolver, timeoutInMilliseconds, raceTrackingHandler, raceLogStore, regattaLogStore,
62 63
baseDomainFactory, yellowBrickTrackingAdapter);
java/com.sap.sailing.domain/src/com/sap/sailing/domain/maneuverhash/impl/ManeuverCacheDelegate.java
... ...
@@ -4,9 +4,8 @@ import java.util.ArrayList;
4 4
import java.util.Collections;
5 5
import java.util.List;
6 6
import java.util.Map;
7
-import java.util.Set;
8
-import java.util.logging.Level;
9
-import java.util.logging.Logger;
7
+
8
+//import java.util.logging.Logger;
10 9
11 10
import com.sap.sailing.domain.base.CPUMeteringType;
12 11
import com.sap.sailing.domain.base.Competitor;
... ...
@@ -15,23 +14,23 @@ import com.sap.sailing.domain.maneuverdetection.ManeuverDetector;
15 14
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprint;
16 15
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintFactory;
17 16
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
18
-import com.sap.sailing.domain.tracking.DynamicTrackedRace;
19 17
import com.sap.sailing.domain.tracking.Maneuver;
18
+import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
20 19
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
21 20
import com.sap.sse.common.Duration;
22 21
import com.sap.sse.util.ManeuverCache;
23 22
import com.sap.sse.util.SmartFutureCache;
24 23
import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
25 24
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
26
-import com.sap.sse.util.SmartFutureCache.UpdateInterval;
25
+
27 26
28 27
public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> {
29 28
30 29
31 30
private final TrackedRaceImpl race;
32
- private static final Logger logger = Logger.getLogger(ManeuverCacheDelegate.class.getName());
31
+ // private static final Logger logger = Logger.getLogger(ManeuverCacheDelegate.class.getName());
33 32
private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
34
- private ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> maneuverCache;
33
+// private ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> maneuverCache;
35 34
private ManeuverFromDatabase cache;
36 35
private SmartFutureCache<Competitor, List<Maneuver>, EmptyUpdateInterval> smartFutureCache;
37 36
Map<Competitor, List<Maneuver>> maneuvers;
... ...
@@ -44,7 +43,7 @@ public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Man
44 43
super();
45 44
this.race = race;
46 45
this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
47
- this.cache = new ManeuverFromDatabase( false, race, maneuverRaceFingerprintRegistry);
46
+ this.cache = new ManeuverFromDatabase( false, (DynamicTrackedRaceImpl) race, maneuverRaceFingerprintRegistry);
48 47
this.smartFutureCache = new SmartFutureCache<Competitor, List<Maneuver>, EmptyUpdateInterval>(
49 48
new AbstractCacheUpdater<Competitor, List<Maneuver>, EmptyUpdateInterval>() {
50 49
@Override
... ...
@@ -191,7 +190,7 @@ public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Man
191 190
if (cachesSuspended) {
192 191
triggerManeuverCacheInvalidationForAllCompetitors = true;
193 192
} else {
194
- maneuverCache.triggerUpdate(competitor, /* updateInterval */null);
193
+ triggerUpdate(competitor, /* updateInterval */null);
195 194
}
196 195
}
197 196
}
java/com.sap.sailing.domain/src/com/sap/sailing/domain/maneuverhash/impl/ManeuverFromDatabase.java
... ...
@@ -2,19 +2,23 @@ package com.sap.sailing.domain.maneuverhash.impl;
2 2
3 3
import java.util.List;
4 4
import java.util.Map;
5
+import java.util.Map.Entry;
5 6
import java.util.logging.Level;
6 7
import java.util.logging.Logger;
8
+import java.util.stream.Collectors;
7 9
8 10
import com.sap.sailing.domain.base.Competitor;
9 11
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
12
+import com.sap.sailing.domain.shared.tracking.impl.TimedComparator;
10 13
import com.sap.sailing.domain.tracking.Maneuver;
11
-import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
14
+import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
15
+//import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
12 16
import com.sap.sse.util.ManeuverCache;
13 17
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
14 18
15 19
public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> {
16 20
17
- public ManeuverFromDatabase(boolean suspended, TrackedRaceImpl race,
21
+ public ManeuverFromDatabase(boolean suspended, DynamicTrackedRaceImpl race,
18 22
ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
19 23
super();
20 24
this.suspended = suspended;
... ...
@@ -23,7 +27,7 @@ public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Mane
23 27
}
24 28
25 29
boolean suspended;
26
- private TrackedRaceImpl race;
30
+ private DynamicTrackedRaceImpl race;
27 31
private ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
28 32
private static final Logger logger = Logger.getLogger(ManeuverFromDatabase.class.getName());
29 33
Map<Competitor, List<Maneuver>> maneuvers;
... ...
@@ -36,10 +40,10 @@ public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Mane
36 40
37 41
private void updateManeuversFromRegistry() {
38 42
maneuvers = maneuverRaceFingerprintRegistry.loadManeuvers(race, race.getRace().getCourse());
39
-// for (final Entry<Competitor,List<Maneuver>> e : maneuverRaceFingerprintRegistry.loadManeuvers(
40
-// race, race.getRace().getCourse()).entrySet()) {
41
-//// race.updateManeuvers(e.getKey(), e.getValue().stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
42
-// }
43
+ for (final Entry<Competitor, List<Maneuver>> e : maneuverRaceFingerprintRegistry.loadManeuvers(
44
+ race, race.getRace().getCourse()).entrySet()) {
45
+ race.updateManeuvers(e.getKey(), e.getValue().stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
46
+ }
43 47
}
44 48
45 49
public void suspend() {
java/com.sap.sailing.domain/src/com/sap/sailing/domain/maneuverhash/impl/ManeuverFromDatabaseTest.java
... ...
@@ -1,64 +0,0 @@
1
-package com.sap.sailing.domain.maneuverhash.impl;
2
-
3
-import java.util.List;
4
-import java.util.Map;
5
-import java.util.Map.Entry;
6
-import java.util.stream.Collectors;
7
-
8
-import com.sap.sailing.domain.base.Competitor;
9
-import com.sap.sailing.domain.base.Waypoint;
10
-import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprint;
11
-import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
12
-import com.sap.sailing.domain.tracking.DynamicTrackedRace;
13
-import com.sap.sailing.domain.tracking.Maneuver;
14
-import com.sap.sailing.domain.tracking.MarkPassing;
15
-import com.sap.sailing.domain.tracking.impl.TimedComparator;
16
-import com.sap.sse.util.SmartFutureCache;
17
-
18
-public class ManeuverFromDatabaseTest extends SmartFutureCache{
19
- private final DynamicTrackedRace race;
20
- private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
21
-
22
- public ManeuverFromDatabaseTest(CacheUpdater cacheUpdateComputer, String nameForLocks,DynamicTrackedRace race, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry ) {
23
- super(cacheUpdateComputer, nameForLocks);
24
- this.race = race;
25
- this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
26
- // TODO Auto-generated constructor stub
27
- }
28
-
29
-
30
- public void resume() {
31
- ManeuverRaceFingerprint fingerprint;
32
- race.getRace().getCourse().lockForRead();
33
- try {
34
- synchronized (this) {
35
- if (maneuverRaceFingerprintRegistry != null) {
36
- fingerprint = maneuverRaceFingerprintRegistry.getManeuverRaceFingerprint(race.getRaceIdentifier());
37
- } else {
38
- fingerprint = null;
39
- }
40
- if (fingerprint != null && fingerprint.matches(race)) {
41
-
42
- }
43
-
44
- }
45
-
46
- } finally {
47
- race.getRace().getCourse().unlockAfterRead();
48
- }
49
- }
50
-
51
- private void updateManeuversFromRegistry() {
52
- Map<Competitor, List<Maneuver>> maneuvers = maneuverRaceFingerprintRegistry.loadManeuvers(
53
- race, race.getRace().getCourse());
54
- for (final Competitor e : maneuvers.keySet()) {
55
- List<Maneuver> competitorManeuvers = maneuvers.get(e);
56
-
57
- race.updateManeuvers(e, competitorManeuvers.stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
58
-
59
-
60
- }
61
- }
62
-
63
-
64
-}
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceTrackingConnectivityParameters.java
... ...
@@ -6,6 +6,7 @@ import com.sap.sailing.domain.base.Fleet;
6 6
import com.sap.sailing.domain.base.Regatta;
7 7
import com.sap.sailing.domain.base.Series;
8 8
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
9
+import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
9 10
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
10 11
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
11 12
... ...
@@ -43,7 +44,7 @@ public interface RaceTrackingConnectivityParameters extends Serializable {
43 44
*/
44 45
RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
45 46
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
46
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception;
47
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception;
47 48
48 49
/**
49 50
* Starts a {@link RaceTracker}, associating the resulting races with the {@link Regatta} passed as argument instead
... ...
@@ -58,7 +59,7 @@ public interface RaceTrackingConnectivityParameters extends Serializable {
58 59
*/
59 60
RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
60 61
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
61
- RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception;
62
+ RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception;
62 63
63 64
/**
64 65
* Deliver an ID object equal to that of the {@link RaceTracker#getID()} delivered by the {@link RaceTracker}
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java
... ...
@@ -942,7 +942,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
942 942
@Override
943 943
public void updateManeuvers(Competitor competitor, Iterable<Maneuver> maneuvers) {
944 944
final CompetitorResult resultFromRaceLog = competitorResultsFromRaceLog.get(competitor);
945
- updateManeuversNotConsideringFinishingTimesFromRaceLog(competitor, maneuvers);
945
+ updateManeuversConsideringFinishingTimesFromRaceLog(competitor, maneuvers, resultFromRaceLog);
946 946
}
947 947
948 948
... ...
@@ -950,17 +950,18 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
950 950
951 951
952 952
953
- private void updateManeuversNotConsideringFinishingTimesFromRaceLog(Competitor competitor,
954
- Iterable<Maneuver> maneuvers) {
955
-// LockUtil.lockForRead(getSerializationLock()); // keep serializer from reading the mark passings collections
956
-// try {
953
+ private void updateManeuversConsideringFinishingTimesFromRaceLog(Competitor competitor,
954
+ Iterable<Maneuver> maneuvers, CompetitorResult resultFromRaceLog) {
955
+ LockUtil.lockForRead(getSerializationLock()); // keep serializer from reading the mark passings collections
956
+ try {
957 957
// List<Maneuver> oldManeuvers = new ArrayList<Maneuver>();
958
-//// MarkPassing oldStartMarkPassing = null;
958
+// TimePoint finishTime = resultFromRaceLog.getFinishingTime();
959
+// MarkPassing oldStartMarkPassing = null;
959 960
// boolean requiresStartTimeUpdate = true;
960
-// final NavigableSet<Maneuver> maneuversForCompetitor = getManeuvers(competitor);
961
+// final Iterable<Maneuver> maneuversForCompetitor = getManeuvers(competitor, false);
961 962
// lockForRead(maneuversForCompetitor);
962 963
// try {
963
-// for (MarkPassing oldMarkPassing : maneuversForCompetitor) {
964
+// for (Maneuver oldMarkPassing : maneuversForCompetitor) {
964 965
// if (oldStartMarkPassing == null) {
965 966
// oldStartMarkPassing = oldMarkPassing;
966 967
// }
... ...
@@ -1035,7 +1036,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
1035 1036
// }
1036 1037
// }
1037 1038
// } finally {
1038
-// LockUtil.unlockAfterWrite(markPassingsLock);
1039
+// LockUtil.unlockAfterWrite(maneuversLock);
1039 1040
// getRace().getCourse().unlockAfterRead();
1040 1041
// }
1041 1042
// updated(timePointOfLatestEvent);
... ...
@@ -1048,9 +1049,9 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
1048 1049
// invalidateEndTime();
1049 1050
// // notify *after* all mark passings have been re-established; should avoid flicker
1050 1051
// notifyListeners(competitor, oldMarkPassings, markPassings);
1051
-// } finally {
1052
-// LockUtil.unlockAfterRead(getSerializationLock());
1053
-// }
1052
+ } finally {
1053
+ LockUtil.unlockAfterRead(getSerializationLock());
1054
+ }
1054 1055
1055 1056
}
1056 1057
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRegattaImpl.java
... ...
@@ -1,19 +1,18 @@
1 1
package com.sap.sailing.domain.tracking.impl;
2 2
3
-import java.util.Optional;
3
+//import java.util.Optional;
4 4
5 5
import com.sap.sailing.domain.base.RaceDefinition;
6 6
import com.sap.sailing.domain.base.Regatta;
7
-import com.sap.sailing.domain.base.Sideline;
8
-import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
9
-import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
10
-import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
11
-import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
7
+//import com.sap.sailing.domain.base.Sideline;
8
+//import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
9
+//import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
10
+//import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
11
+//import com.sap.sailing.domain.shared.tracking.TrackingConnectorInfo;
12
+//import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
12 13
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
13 14
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
14
-import com.sap.sailing.domain.tracking.TrackingConnectorInfo;
15
-import com.sap.sailing.domain.tracking.WindStore;
16
-import com.sap.sse.util.ThreadLocalTransporter;
15
+
17 16
18 17
public class DynamicTrackedRegattaImpl extends TrackedRegattaImpl implements DynamicTrackedRegatta {
19 18
private static final long serialVersionUID = -90155868534737120L;
... ...
@@ -38,15 +37,4 @@ public class DynamicTrackedRegattaImpl extends TrackedRegattaImpl implements Dyn
38 37
return (DynamicTrackedRace) super.getExistingTrackedRace(race);
39 38
}
40 39
41
- @Override
42
- public DynamicTrackedRace createTrackedRace(RaceDefinition raceDefinition, Iterable<Sideline> sidelines,
43
- WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind,
44
- long millisecondsOverWhichToAverageSpeed, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
45
- boolean useInternalMarkPassingAlgorithm, RaceLogAndTrackedRaceResolver raceLogResolver,
46
- Optional<ThreadLocalTransporter> beforeAndAfterNotificationHandler,
47
- TrackingConnectorInfo trackingConnectorInfo,
48
- MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
49
- // TODO Auto-generated method stub
50
- return null;
51
- }
52 40
}
java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java
... ...
@@ -64,7 +64,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRac
64 64
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
65 65
import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogDefinedMarkAnalyzer;
66 66
import com.sap.sailing.domain.base.Boat;
67
-import com.sap.sailing.domain.base.CPUMeteringType;
67
+//import com.sap.sailing.domain.base.CPUMeteringType;
68 68
import com.sap.sailing.domain.base.Competitor;
69 69
import com.sap.sailing.domain.base.ControlPoint;
70 70
import com.sap.sailing.domain.base.Course;
... ...
@@ -135,7 +135,6 @@ import com.sap.sailing.domain.maneuverdetection.ShortTimeAfterLastHitCache;
135 135
import com.sap.sailing.domain.maneuverdetection.impl.IncrementalManeuverDetectorImpl;
136 136
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
137 137
import com.sap.sailing.domain.maneuverhash.impl.ManeuverCacheDelegate;
138
-import com.sap.sailing.domain.maneuverhash.impl.ManeuverFromDatabase;
139 138
import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator;
140 139
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
141 140
import com.sap.sailing.domain.orc.ORCPerformanceCurveRankingMetric;
... ...
@@ -193,10 +192,9 @@ import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
193 192
import com.sap.sse.shared.util.impl.ApproximateTime;
194 193
import com.sap.sse.shared.util.impl.ArrayListNavigableSet;
195 194
import com.sap.sse.util.IdentityWrapper;
196
-import com.sap.sse.util.ManeuverCache;
197
-import com.sap.sse.util.SmartFutureCache;
198
-import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
199
-import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
195
+//import com.sap.sse.util.SmartFutureCache;
196
+//import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
197
+//import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
200 198
import com.sap.sse.util.impl.FutureTaskWithTracingGet;
201 199
202 200
import difflib.DiffUtils;
... ...
@@ -386,7 +384,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
386 384
* Whether during {@link #cachesSuspended suspended caches mode} the maneuver re-calculation was triggered; will lead
387 385
* to triggering the maneuver re-calculation when caches are {@link #resumeAllCachesNotUpdatingWhileLoading() resumed}.
388 386
*/
389
- private boolean triggerManeuverCacheInvalidationForAllCompetitors;
387
+ //private boolean triggerManeuverCacheInvalidationForAllCompetitors;
390 388
391 389
/**
392 390
* Keys are the {@link RaceLog#getId() IDs} of the race logs that are stored as values.
java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracksTest.java
... ...
@@ -92,7 +92,7 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
92 92
@Override
93 93
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
94 94
}
95
- }, /* trackedRegattaRegistry */ null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,
95
+ }, /* trackedRegattaRegistry */ null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null,
96 96
mock(LeaderboardGroupResolver.class), /*courseDesignUpdateURI*/ null, /*tracTracUsername*/ null, /*tracTracPassword*/ null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
97 97
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, ReceiverType.RACECOURSE);
98 98
addListenersForStoredDataAndStartController(typeControllers);
java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java
... ...
@@ -2081,11 +2081,11 @@ Replicator {
2081 2081
if (regatta == null) {
2082 2082
// create tracker and use an existing or create a default regatta
2083 2083
tracker = params.createRaceTracker(this, windStore, /* raceLogResolver */ this, /* leaderboardGroupResolver */ this, timeoutInMilliseconds,
2084
- raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this);
2084
+ raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this, /*maneuverRaceFingerprintRegistry*/ this);
2085 2085
} else {
2086 2086
// use the regatta selected by the RaceIdentifier regattaToAddTo
2087 2087
tracker = params.createRaceTracker(regatta, this, windStore, /* raceLogResolver */ this, /* leaderboardGroupResolver */ this, timeoutInMilliseconds,
2088
- raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this);
2088
+ raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this, /*maneuverRaceFingerprintRegistry*/ this);
2089 2089
assert tracker.getRegatta() == regatta;
2090 2090
}
2091 2091
LockUtil.lockForWrite(raceTrackersByRegattaLock);