mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-17 11:19:15 +00:00
DynamicTrackedRaceImpl constructor changed
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
//gwtVersion_/com.google.gwt.servlet/lib=
|
||||
eclipse.preferences.version=1
|
||||
+4
-3
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.common.racelog.tracking.DoesNotHaveRegattaLogExcep
|
||||
import com.sap.sailing.domain.common.racelog.tracking.RaceNotCreatedException;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.regattalike.HasRegattaLike;
|
||||
@@ -70,15 +71,15 @@ public class RaceLogConnectivityParams extends AbstractRaceTrackingConnectivityP
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
return createRaceTracker(regatta, trackedRegattaRegistry, windStore, raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
if (regatta == null) {
|
||||
BoatClass boatClass = new RaceInformationFinder(getRaceLog()).analyze().getBoatClass();
|
||||
regatta = trackedRegattaRegistry.getOrCreateDefaultRegatta(
|
||||
|
||||
+3
-2
@@ -4,6 +4,7 @@ package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -76,7 +77,7 @@ public class SwissTimingTrackingConnectivityParameters extends AbstractRaceTrack
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
return swissTimingFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore, domainFactory, trackedRegattaRegistry, raceLogResolver,
|
||||
this, raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
}
|
||||
@@ -84,7 +85,7 @@ public class SwissTimingTrackingConnectivityParameters extends AbstractRaceTrack
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
return swissTimingFactory.createRaceTracker(regatta, windStore, domainFactory, trackedRegattaRegistry, raceLogResolver, raceLogStore,
|
||||
regattaLogStore, this, raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
+2
-2
@@ -189,7 +189,7 @@ public class SwissTimingReplayAdapterServiceTest {
|
||||
SwissTimingReplayToDomainAdapter replayListener = new SwissTimingReplayToDomainAdapter(null, /* raceName */ "SAW005906",
|
||||
"SAW005906", /* boatClass */ null, DomainFactory.INSTANCE, new DummyTrackedRegattaRegistry(), /* useInternalMarkPassingAlgorithm */ false,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, /* tracker creator */ null,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null);
|
||||
new SwissTimingReplayParserImpl().readData(getClass().getResourceAsStream("/SAW005906.20120805.replay"), replayListener);
|
||||
Iterable<? extends TrackedRace> trackedRaces = replayListener.getTrackedRaces();
|
||||
assertFalse(Util.isEmpty(trackedRaces));
|
||||
@@ -205,7 +205,7 @@ public class SwissTimingReplayAdapterServiceTest {
|
||||
SwissTimingReplayToDomainAdapter replayListener = new SwissTimingReplayToDomainAdapter(null, /* raceName */ "SAW005905",
|
||||
"SAW005905", /* boatClass */ null, DomainFactory.INSTANCE, new DummyTrackedRegattaRegistry(), /* useInternalMarkPassingAlgorithm */ false,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), EmptyRaceLogStore.INSTANCE, EmptyRegattaLogStore.INSTANCE, /* tracker creator */ null,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null);
|
||||
new SwissTimingReplayParserImpl().readData(getClass().getResourceAsStream("/SAW005905.20120805.replay"), replayListener);
|
||||
Iterable<? extends TrackedRace> trackedRaces = replayListener.getTrackedRaces();
|
||||
TrackedRace trackedRace = trackedRaces.iterator().next();
|
||||
|
||||
+5
-4
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.swisstimingreplayadapter.impl;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -141,12 +142,12 @@ public class SwissTimingReplayConnectivityParameters extends AbstractRaceTrackin
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, final WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
SwissTimingReplayToDomainAdapter listener = new SwissTimingReplayToDomainAdapter(/* regatta */ null, raceName,
|
||||
raceID, domainFactory.getBaseDomainFactory().getOrCreateBoatClass(boatClassName), domainFactory,
|
||||
trackedRegattaRegistry, useInternalMarkPassingAlgorithm, raceLogResolver, raceLogStore,
|
||||
regattaLogStore, l->new SwissTimingReplayRaceTracker(windStore, l, this),
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
replayService.loadRaceData(link, listener);
|
||||
return listener.getTracker();
|
||||
}
|
||||
@@ -154,12 +155,12 @@ public class SwissTimingReplayConnectivityParameters extends AbstractRaceTrackin
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
SwissTimingReplayToDomainAdapter listener = new SwissTimingReplayToDomainAdapter(regatta, raceName,
|
||||
raceID, domainFactory.getBaseDomainFactory().getOrCreateBoatClass(boatClassName),
|
||||
domainFactory, trackedRegattaRegistry, useInternalMarkPassingAlgorithm, raceLogResolver,
|
||||
raceLogStore, regattaLogStore, l->new SwissTimingReplayRaceTracker(windStore, l, this),
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
replayService.loadRaceData(link, listener);
|
||||
return listener.getTracker();
|
||||
}
|
||||
|
||||
+3
-1
@@ -37,6 +37,7 @@ import com.sap.sailing.domain.common.impl.WindImpl;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -186,12 +187,13 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter i
|
||||
* be obtained from {@link #getTracker()}. This tracker's {@link RaceTracker.RaceCreationListener}s will
|
||||
* be {@link SwissTimingReplayRaceTracker#notifyRaceCreationListeners() notified} when this adapter has
|
||||
* created the race.
|
||||
* @param maneuverRaceFingerprintRegistry
|
||||
*/
|
||||
public SwissTimingReplayToDomainAdapter(Regatta regatta, String raceName, String raceIdForRaceDefinition,
|
||||
BoatClass boatClass, DomainFactory domainFactory,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, boolean useInternalMarkPassingAlgorithm, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, TrackerConstructor trackerConstructor,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
this.tracker = trackerConstructor == null ? null : trackerConstructor.createTracker(this);
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
this.markPassingRaceFingerprintRegistry = markPassingRaceFingerprintRegistry;
|
||||
|
||||
+1
-1
@@ -108,7 +108,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
|
||||
/* delayToLiveInMillis */0l, /* millisecondsOverWhichToAverageWind */30000, /* simulator */null, /* courseDesignUpdateURI */
|
||||
null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(),
|
||||
/*ignoreTracTracMarkPassings*/false, mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null) {
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null) {
|
||||
@Override
|
||||
protected void handleEvent(Triple<IControlRoute, Long, Void> event) {
|
||||
super.handleEvent(event);
|
||||
|
||||
+4
-4
@@ -59,28 +59,28 @@ public class MultipleClassesInRegattaTest {
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "cce678c8-97e6-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
|
||||
kiwotest2 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "11290bd6-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
|
||||
kiwotest3 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "39635b24-97e7-11e0-9aed-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
|
||||
weym470may112014_2 = domainFactory
|
||||
.createRaceTracker(
|
||||
EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
mock(RaceLogAndTrackedRaceResolver.class), mock(LeaderboardGroupResolver.class), createConnectivityParams(httpAndHost, liveURI, storedURI, courseDesignUpdateURI,
|
||||
tracTracUsername, tracTracPassword, "04498426-7dfd-11e0-8236-406186cbf87c"), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
|
||||
|
||||
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
||||
assertEquals("5O5", kiwotest2.getRegatta().getBoatClass().getName());
|
||||
|
||||
+1
-1
@@ -133,7 +133,7 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest i
|
||||
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
||||
for (Receiver r : domainFactory.getUpdateReceivers(trackedRegatta, getTracTracRace(), EmptyWindStore.INSTANCE, /* delayToLiveInMillis */0l, /* simulator */null, createRaceDefinitionSet(),
|
||||
/* trackedRegattaRegistry */ null,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,/* maneuverRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, receiverTypes)) {
|
||||
receivers.add(r);
|
||||
|
||||
+1
-1
@@ -120,7 +120,7 @@ public class ReceiveMarkPassingDataTest extends AbstractTracTracLiveTest {
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
}, /* trackedRegattaRegistry */null,
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,/*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */null, /* tracTracPassword */
|
||||
/* tracTracUsername */null, null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(),
|
||||
/* raceAndCompetitorStatusWithRaceLogReconciler */ null, ReceiverType.RACECOURSE, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS)) {
|
||||
|
||||
+2
-2
@@ -89,7 +89,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
},
|
||||
/* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
/* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null)) {
|
||||
receiver.subscribe();
|
||||
@@ -103,7 +103,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
@Override
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
}, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
}, /* trackedRegattaRegistry */null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null, mock(LeaderboardGroupResolver.class), /* courseDesignUpdateURI */
|
||||
getTracTracRace(), null, /* tracTracUsername */null, /* tracTracPassword */null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null));
|
||||
}
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
|
||||
/* preferReplayIfAvailable */ false, /* timeoutInMillis */ (int) RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
/* useOfficialEventsToUpdateRaceLog */ false, /* liveURIFromConfiguration */ null, /* storedURIFromConfiguration */ null),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null);
|
||||
new DefaultRaceTrackingHandler(), /* markPassingRaceFingerprintRegistry */ null, /* maneuverRaceFingerprintRegistry */ null);
|
||||
|
||||
Iterable<Competitor> competitors = fourtyninerYellow_2.getRaceHandle().getRace().getCompetitors();
|
||||
for (Competitor competitor : competitors) {
|
||||
|
||||
+13
-5
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.PassingInstruction;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -154,7 +155,7 @@ public interface DomainFactory {
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
|
||||
IOException, InterruptedException, CreateModelException, TimeOutException;
|
||||
|
||||
/**
|
||||
@@ -165,7 +166,7 @@ public interface DomainFactory {
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, CreateModelException,
|
||||
SubscriberInitializationException, IOException, InterruptedException, TimeOutException;
|
||||
|
||||
@@ -188,7 +189,7 @@ public interface DomainFactory {
|
||||
*/
|
||||
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, long delayToLiveInMillis,
|
||||
Simulator simulator, WindStore windStore, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
IRace tractracRace, URI courseDesignUpdateURI, String tracTracUsername,
|
||||
String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler);
|
||||
@@ -222,7 +223,7 @@ public interface DomainFactory {
|
||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, URI courseDesignUpdateURI, UUID tracTracEventUuid,
|
||||
String tracTracUsername, String tracTracPassword, boolean ignoreTracTracMarkPassings,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry);
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
*/
|
||||
Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
|
||||
long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
URI courseDesignUpdateURI, String tracTracUsername, String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean ignoreTracTracMarkPassings,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, RaceAndCompetitorStatusWithRaceLogReconciler raceAndCompetitorStatusWithRaceLogReconciler, ReceiverType... types);
|
||||
|
||||
// Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace, WindStore windStore,
|
||||
// long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
|
||||
// TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
// MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
|
||||
// ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry);
|
||||
|
||||
JSONService parseJSONURLWithRaceRecords(URL jsonURL, boolean loadClientParams) throws IOException, ParseException, org.json.simple.parser.ParseException, URISyntaxException;
|
||||
|
||||
/**
|
||||
@@ -350,4 +357,5 @@ public interface DomainFactory {
|
||||
* start/stop invocations.
|
||||
*/
|
||||
IEventSubscriber getOrCreateEventSubscriber(IEvent tractracEvent, URI liveURI, URI storedURI);
|
||||
|
||||
}
|
||||
|
||||
+13
-12
@@ -63,6 +63,7 @@ import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -536,7 +537,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
@Override
|
||||
public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta, IRace tractracRace,
|
||||
WindStore windStore, long delayToLiveInMillis, Simulator simulator, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver, URI updateURI, String tracTracUsername,
|
||||
String tracTracPassword, IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber,
|
||||
boolean useInternalMarkPassingAlgorithm, long timeoutInMilliseconds,
|
||||
@@ -552,7 +553,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
WindTrack.DEFAULT_MILLISECONDS_OVER_WHICH_TO_AVERAGE_WIND, simulator, updateURI,
|
||||
tracTracUsername, tracTracPassword, eventSubscriber, raceSubscriber,
|
||||
useInternalMarkPassingAlgorithm, raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry));
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry));
|
||||
break;
|
||||
case MARKPOSITIONS:
|
||||
result.add(new MarkPositionReceiver(
|
||||
@@ -588,7 +589,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
public Iterable<Receiver> getUpdateReceivers(DynamicTrackedRegatta trackedRegatta,
|
||||
long delayToLiveInMillis, Simulator simulator, WindStore windStore,
|
||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace,
|
||||
MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry, LeaderboardGroupResolver leaderboardGroupResolver, IRace tractracRace,
|
||||
URI updateURI, String tracTracUsername, String tracTracPassword,
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
|
||||
long timeoutInMilliseconds,
|
||||
@@ -600,7 +601,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
receiverTypes.add(ReceiverType.COMPETITOR);
|
||||
}
|
||||
return getUpdateReceivers(trackedRegatta, tractracRace, windStore, delayToLiveInMillis, simulator,
|
||||
raceDefinitionSetToUpdate, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, leaderboardGroupResolver,
|
||||
raceDefinitionSetToUpdate, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry,maneuverRaceFingerprintRegistry, leaderboardGroupResolver,
|
||||
updateURI, tracTracUsername, tracTracPassword, eventSubscriber,
|
||||
raceSubscriber, useInternalMarkPassingAlgorithm, timeoutInMilliseconds, raceTrackingHandler,
|
||||
raceAndCompetitorStatusWithRaceLogReconciler, receiverTypes.toArray(new ReceiverType[receiverTypes.size()]));
|
||||
@@ -659,7 +660,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracUsername, String tracTracPassword,
|
||||
boolean ignoreTracTracMarkPassings, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
Consumer<DynamicTrackedRace> runBeforeExposingRace, IRace tractracRace,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
synchronized (raceCache) {
|
||||
RaceDefinition raceDefinition = raceCache.get(raceId);
|
||||
if (raceDefinition == null) {
|
||||
@@ -690,7 +691,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
trackedRace = createTrackedRace(trackedRegatta, raceDefinition, sidelines, windStore,
|
||||
delayToLiveInMillis, millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate, ignoreTracTracMarkPassings,
|
||||
raceLogResolver, raceTrackingHandler, trackingConnectorInfo, markPassingRaceFingerprintRegistry);
|
||||
raceLogResolver, raceTrackingHandler, trackingConnectorInfo, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
logger.info("Added race " + raceDefinition + " to regatta " + trackedRegatta.getRegatta());
|
||||
if (runBeforeExposingRace != null) {
|
||||
logger.fine("Running callback for tracked race creation for "+trackedRace.getRace());
|
||||
@@ -778,12 +779,12 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
Iterable<Sideline> sidelines, WindStore windStore, long delayToLiveInMillis,
|
||||
long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
|
||||
boolean useMarkPassingCalculator, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
RaceTrackingHandler raceTrackingHandler, TrackingConnectorInfo trackingConnectorInfo, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, TrackingConnectorInfo trackingConnectorInfo, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
return raceTrackingHandler.createTrackedRace(trackedRegatta, race, sidelines,
|
||||
windStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind,
|
||||
/* time over which to average speed: */ race.getBoatClass().getApproximateManeuverDurationInMilliseconds(),
|
||||
raceDefinitionSetToUpdate, useMarkPassingCalculator, raceLogResolver, Optional.empty(),
|
||||
trackingConnectorInfo, markPassingRaceFingerprintRegistry, /*maneuverRaceFingerprintRegistry*/ null);
|
||||
trackingConnectorInfo, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1031,10 +1032,10 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
|
||||
throws URISyntaxException, SubscriberInitializationException, IOException, InterruptedException, CreateModelException, TimeOutException {
|
||||
return new TracTracRaceTrackerImpl(this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
|
||||
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1042,10 +1043,10 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, CreateModelException,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, CreateModelException,
|
||||
SubscriberInitializationException, IOException, InterruptedException, TimeOutException {
|
||||
return new TracTracRaceTrackerImpl(regatta, this, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
|
||||
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds, raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-2
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.common.PassingInstruction;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.shared.tracking.impl.TrackingConnectorInfoImpl;
|
||||
@@ -73,6 +74,7 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
|
||||
private final boolean useInternalMarkPassingAlgorithm;
|
||||
private final RaceLogAndTrackedRaceResolver raceLogResolver;
|
||||
private final MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry;
|
||||
private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
|
||||
private final LeaderboardGroupResolver leaderboardGroupResolver;
|
||||
|
||||
private final RaceTrackingHandler raceTrackingHandler;
|
||||
@@ -83,11 +85,12 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
|
||||
URI updateURI, String tracTracUsername, String tracTracPassword,
|
||||
IEventSubscriber eventSubscriber, IRaceSubscriber raceSubscriber, boolean useInternalMarkPassingAlgorithm,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
super(domainFactory, tractracEvent, trackedRegatta, simulator, eventSubscriber, raceSubscriber, timeoutInMilliseconds);
|
||||
this.tractracRace = tractracRace;
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
this.markPassingRaceFingerprintRegistry = markPassingRaceFingerprintRegistry;
|
||||
this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
|
||||
this.leaderboardGroupResolver = leaderboardGroupResolver;
|
||||
this.millisecondsOverWhichToAverageWind = millisecondsOverWhichToAverageWind;
|
||||
this.delayToLiveInMillis = delayToLiveInMillis;
|
||||
@@ -179,7 +182,7 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue<IControlRoute,
|
||||
getTrackedRegatta().getRegatta().getBoatClass(), competitorAndBoats, course, sidelines, windStore, delayToLiveInMillis,
|
||||
millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate, tracTracUpdateURI,
|
||||
getTracTracEvent().getId(), tracTracUsername, tracTracPassword, useInternalMarkPassingAlgorithm, raceLogResolver, tr->updateRaceTimes(tractracRace, tr), tractracRace,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
addAllMarksFromCourseArea(trackedRace);
|
||||
if (getSimulator() != null) {
|
||||
getSimulator().setTrackedRace(trackedRace);
|
||||
|
||||
+5
-4
@@ -9,6 +9,7 @@ import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -133,21 +134,21 @@ public class RaceTrackingConnectivityParametersImpl extends AbstractRaceTracking
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException,
|
||||
CreateModelException, SubscriberInitializationException, IOException, InterruptedException, TimeOutException {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(raceLogStore, regattaLogStore, windStore,
|
||||
trackedRegattaRegistry, raceLogResolver, leaderboardGroupResolver, this, timeoutInMilliseconds,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(regatta, raceLogStore, regattaLogStore, windStore,
|
||||
trackedRegattaRegistry, raceLogResolver, leaderboardGroupResolver, this, timeoutInMilliseconds,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -276,11 +277,11 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws URISyntaxException, SubscriberInitializationException,
|
||||
IOException, InterruptedException, CreateModelException, TimeOutException {
|
||||
this(/* regatta */ null, domainFactory, raceLogStore, regattaLogStore, windStore, trackedRegattaRegistry,
|
||||
raceLogResolver, leaderboardGroupResolver, connectivityParams, timeoutInMilliseconds,
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry);
|
||||
raceTrackingHandler, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -301,7 +302,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
|
||||
RegattaLogStore regattaLogStore, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
RaceTrackingConnectivityParametersImpl connectivityParams, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry)
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry)
|
||||
throws URISyntaxException, SubscriberInitializationException, IOException, InterruptedException, CreateModelException, TimeOutException {
|
||||
super(connectivityParams);
|
||||
final URL paramURL = connectivityParams.getParamURL();
|
||||
@@ -418,7 +419,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl<RaceTrackin
|
||||
trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(this.regatta);
|
||||
receivers = new HashSet<Receiver>();
|
||||
for (Receiver receiver : domainFactory.getUpdateReceivers(getTrackedRegatta(), delayToLiveInMillis,
|
||||
simulator, windStore, this, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, leaderboardGroupResolver,
|
||||
simulator, windStore, this, trackedRegattaRegistry, raceLogResolver, markPassingRaceFingerprintRegistry, maneuverRaceFingerprintRegistry, leaderboardGroupResolver,
|
||||
tractracRace, tracTracUpdateURI, tracTracUsername, tracTracPassword, eventSubscriber,
|
||||
raceSubscriber, useInternalMarkPassingAlgorithm, timeoutInMilliseconds, raceTrackingHandler, reconciler)) {
|
||||
receivers.add(receiver);
|
||||
|
||||
+3
-2
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.yellowbrickadapter;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -46,7 +47,7 @@ public class YellowBrickRaceTrackingConnectivityParams extends AbstractRaceTrack
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver,
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
long timeoutInMilliseconds, RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
return new YellowBrickRaceTrackerImpl(this, /* regatta */ null, trackedRegattaRegistry, windStore,
|
||||
raceLogResolver, leaderboardGroupResolver, timeoutInMilliseconds, raceTrackingHandler, raceLogStore,
|
||||
regattaLogStore, baseDomainFactory, yellowBrickTrackingAdapter);
|
||||
@@ -56,7 +57,7 @@ public class YellowBrickRaceTrackingConnectivityParams extends AbstractRaceTrack
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
WindStore windStore, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception {
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception {
|
||||
return new YellowBrickRaceTrackerImpl(this, regatta, trackedRegattaRegistry, windStore, raceLogResolver,
|
||||
leaderboardGroupResolver, timeoutInMilliseconds, raceTrackingHandler, raceLogStore, regattaLogStore,
|
||||
baseDomainFactory, yellowBrickTrackingAdapter);
|
||||
|
||||
+8
-9
@@ -4,9 +4,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
//import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.CPUMeteringType;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
@@ -15,23 +14,23 @@ import com.sap.sailing.domain.maneuverdetection.ManeuverDetector;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprint;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintFactory;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Maneuver;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.util.ManeuverCache;
|
||||
import com.sap.sse.util.SmartFutureCache;
|
||||
import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
|
||||
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
|
||||
import com.sap.sse.util.SmartFutureCache.UpdateInterval;
|
||||
|
||||
|
||||
public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> {
|
||||
|
||||
|
||||
private final TrackedRaceImpl race;
|
||||
private static final Logger logger = Logger.getLogger(ManeuverCacheDelegate.class.getName());
|
||||
// private static final Logger logger = Logger.getLogger(ManeuverCacheDelegate.class.getName());
|
||||
private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
|
||||
private ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> maneuverCache;
|
||||
// private ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> maneuverCache;
|
||||
private ManeuverFromDatabase cache;
|
||||
private SmartFutureCache<Competitor, List<Maneuver>, EmptyUpdateInterval> smartFutureCache;
|
||||
Map<Competitor, List<Maneuver>> maneuvers;
|
||||
@@ -44,7 +43,7 @@ public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Man
|
||||
super();
|
||||
this.race = race;
|
||||
this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
|
||||
this.cache = new ManeuverFromDatabase( false, race, maneuverRaceFingerprintRegistry);
|
||||
this.cache = new ManeuverFromDatabase( false, (DynamicTrackedRaceImpl) race, maneuverRaceFingerprintRegistry);
|
||||
this.smartFutureCache = new SmartFutureCache<Competitor, List<Maneuver>, EmptyUpdateInterval>(
|
||||
new AbstractCacheUpdater<Competitor, List<Maneuver>, EmptyUpdateInterval>() {
|
||||
@Override
|
||||
@@ -191,7 +190,7 @@ public class ManeuverCacheDelegate implements ManeuverCache<Competitor, List<Man
|
||||
if (cachesSuspended) {
|
||||
triggerManeuverCacheInvalidationForAllCompetitors = true;
|
||||
} else {
|
||||
maneuverCache.triggerUpdate(competitor, /* updateInterval */null);
|
||||
triggerUpdate(competitor, /* updateInterval */null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-7
@@ -2,19 +2,23 @@ package com.sap.sailing.domain.maneuverhash.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.shared.tracking.impl.TimedComparator;
|
||||
import com.sap.sailing.domain.tracking.Maneuver;
|
||||
import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
|
||||
//import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
|
||||
import com.sap.sse.util.ManeuverCache;
|
||||
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
|
||||
|
||||
public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Maneuver>, EmptyUpdateInterval> {
|
||||
|
||||
public ManeuverFromDatabase(boolean suspended, TrackedRaceImpl race,
|
||||
public ManeuverFromDatabase(boolean suspended, DynamicTrackedRaceImpl race,
|
||||
ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
super();
|
||||
this.suspended = suspended;
|
||||
@@ -23,7 +27,7 @@ public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Mane
|
||||
}
|
||||
|
||||
boolean suspended;
|
||||
private TrackedRaceImpl race;
|
||||
private DynamicTrackedRaceImpl race;
|
||||
private ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
|
||||
private static final Logger logger = Logger.getLogger(ManeuverFromDatabase.class.getName());
|
||||
Map<Competitor, List<Maneuver>> maneuvers;
|
||||
@@ -36,10 +40,10 @@ public class ManeuverFromDatabase implements ManeuverCache<Competitor, List<Mane
|
||||
|
||||
private void updateManeuversFromRegistry() {
|
||||
maneuvers = maneuverRaceFingerprintRegistry.loadManeuvers(race, race.getRace().getCourse());
|
||||
// for (final Entry<Competitor,List<Maneuver>> e : maneuverRaceFingerprintRegistry.loadManeuvers(
|
||||
// race, race.getRace().getCourse()).entrySet()) {
|
||||
//// race.updateManeuvers(e.getKey(), e.getValue().stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
|
||||
// }
|
||||
for (final Entry<Competitor, List<Maneuver>> e : maneuverRaceFingerprintRegistry.loadManeuvers(
|
||||
race, race.getRace().getCourse()).entrySet()) {
|
||||
race.updateManeuvers(e.getKey(), e.getValue().stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
|
||||
}
|
||||
}
|
||||
|
||||
public void suspend() {
|
||||
|
||||
-64
@@ -1,64 +0,0 @@
|
||||
package com.sap.sailing.domain.maneuverhash.impl;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprint;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Maneuver;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.impl.TimedComparator;
|
||||
import com.sap.sse.util.SmartFutureCache;
|
||||
|
||||
public class ManeuverFromDatabaseTest extends SmartFutureCache{
|
||||
private final DynamicTrackedRace race;
|
||||
private final ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry;
|
||||
|
||||
public ManeuverFromDatabaseTest(CacheUpdater cacheUpdateComputer, String nameForLocks,DynamicTrackedRace race, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry ) {
|
||||
super(cacheUpdateComputer, nameForLocks);
|
||||
this.race = race;
|
||||
this.maneuverRaceFingerprintRegistry = maneuverRaceFingerprintRegistry;
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
|
||||
public void resume() {
|
||||
ManeuverRaceFingerprint fingerprint;
|
||||
race.getRace().getCourse().lockForRead();
|
||||
try {
|
||||
synchronized (this) {
|
||||
if (maneuverRaceFingerprintRegistry != null) {
|
||||
fingerprint = maneuverRaceFingerprintRegistry.getManeuverRaceFingerprint(race.getRaceIdentifier());
|
||||
} else {
|
||||
fingerprint = null;
|
||||
}
|
||||
if (fingerprint != null && fingerprint.matches(race)) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} finally {
|
||||
race.getRace().getCourse().unlockAfterRead();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateManeuversFromRegistry() {
|
||||
Map<Competitor, List<Maneuver>> maneuvers = maneuverRaceFingerprintRegistry.loadManeuvers(
|
||||
race, race.getRace().getCourse());
|
||||
for (final Competitor e : maneuvers.keySet()) {
|
||||
List<Maneuver> competitorManeuvers = maneuvers.get(e);
|
||||
|
||||
race.updateManeuvers(e, competitorManeuvers.stream().sorted(TimedComparator.INSTANCE).collect(Collectors.toList()));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+3
-2
@@ -6,6 +6,7 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroupResolver;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
|
||||
@@ -43,7 +44,7 @@ public interface RaceTrackingConnectivityParameters extends Serializable {
|
||||
*/
|
||||
RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception;
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception;
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
*/
|
||||
RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore,
|
||||
RaceLogAndTrackedRaceResolver raceLogResolver, LeaderboardGroupResolver leaderboardGroupResolver, long timeoutInMilliseconds,
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry) throws Exception;
|
||||
RaceTrackingHandler raceTrackingHandler, MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) throws Exception;
|
||||
|
||||
/**
|
||||
* Deliver an ID object equal to that of the {@link RaceTracker#getID()} delivered by the {@link RaceTracker}
|
||||
|
||||
+13
-12
@@ -942,7 +942,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
@Override
|
||||
public void updateManeuvers(Competitor competitor, Iterable<Maneuver> maneuvers) {
|
||||
final CompetitorResult resultFromRaceLog = competitorResultsFromRaceLog.get(competitor);
|
||||
updateManeuversNotConsideringFinishingTimesFromRaceLog(competitor, maneuvers);
|
||||
updateManeuversConsideringFinishingTimesFromRaceLog(competitor, maneuvers, resultFromRaceLog);
|
||||
}
|
||||
|
||||
|
||||
@@ -950,17 +950,18 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
|
||||
|
||||
|
||||
private void updateManeuversNotConsideringFinishingTimesFromRaceLog(Competitor competitor,
|
||||
Iterable<Maneuver> maneuvers) {
|
||||
// LockUtil.lockForRead(getSerializationLock()); // keep serializer from reading the mark passings collections
|
||||
// try {
|
||||
private void updateManeuversConsideringFinishingTimesFromRaceLog(Competitor competitor,
|
||||
Iterable<Maneuver> maneuvers, CompetitorResult resultFromRaceLog) {
|
||||
LockUtil.lockForRead(getSerializationLock()); // keep serializer from reading the mark passings collections
|
||||
try {
|
||||
// List<Maneuver> oldManeuvers = new ArrayList<Maneuver>();
|
||||
//// MarkPassing oldStartMarkPassing = null;
|
||||
// TimePoint finishTime = resultFromRaceLog.getFinishingTime();
|
||||
// MarkPassing oldStartMarkPassing = null;
|
||||
// boolean requiresStartTimeUpdate = true;
|
||||
// final NavigableSet<Maneuver> maneuversForCompetitor = getManeuvers(competitor);
|
||||
// final Iterable<Maneuver> maneuversForCompetitor = getManeuvers(competitor, false);
|
||||
// lockForRead(maneuversForCompetitor);
|
||||
// try {
|
||||
// for (MarkPassing oldMarkPassing : maneuversForCompetitor) {
|
||||
// for (Maneuver oldMarkPassing : maneuversForCompetitor) {
|
||||
// if (oldStartMarkPassing == null) {
|
||||
// oldStartMarkPassing = oldMarkPassing;
|
||||
// }
|
||||
@@ -1035,7 +1036,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
// }
|
||||
// }
|
||||
// } finally {
|
||||
// LockUtil.unlockAfterWrite(markPassingsLock);
|
||||
// LockUtil.unlockAfterWrite(maneuversLock);
|
||||
// getRace().getCourse().unlockAfterRead();
|
||||
// }
|
||||
// updated(timePointOfLatestEvent);
|
||||
@@ -1048,9 +1049,9 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
// invalidateEndTime();
|
||||
// // notify *after* all mark passings have been re-established; should avoid flicker
|
||||
// notifyListeners(competitor, oldMarkPassings, markPassings);
|
||||
// } finally {
|
||||
// LockUtil.unlockAfterRead(getSerializationLock());
|
||||
// }
|
||||
} finally {
|
||||
LockUtil.unlockAfterRead(getSerializationLock());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+8
-20
@@ -1,19 +1,18 @@
|
||||
package com.sap.sailing.domain.tracking.impl;
|
||||
|
||||
import java.util.Optional;
|
||||
//import java.util.Optional;
|
||||
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
//import com.sap.sailing.domain.base.Sideline;
|
||||
//import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
//import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
//import com.sap.sailing.domain.racelog.RaceLogAndTrackedRaceResolver;
|
||||
//import com.sap.sailing.domain.shared.tracking.TrackingConnectorInfo;
|
||||
//import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.TrackingConnectorInfo;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sse.util.ThreadLocalTransporter;
|
||||
|
||||
|
||||
public class DynamicTrackedRegattaImpl extends TrackedRegattaImpl implements DynamicTrackedRegatta {
|
||||
private static final long serialVersionUID = -90155868534737120L;
|
||||
@@ -38,15 +37,4 @@ public class DynamicTrackedRegattaImpl extends TrackedRegattaImpl implements Dyn
|
||||
return (DynamicTrackedRace) super.getExistingTrackedRace(race);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicTrackedRace createTrackedRace(RaceDefinition raceDefinition, Iterable<Sideline> sidelines,
|
||||
WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind,
|
||||
long millisecondsOverWhichToAverageSpeed, DynamicRaceDefinitionSet raceDefinitionSetToUpdate,
|
||||
boolean useInternalMarkPassingAlgorithm, RaceLogAndTrackedRaceResolver raceLogResolver,
|
||||
Optional<ThreadLocalTransporter> beforeAndAfterNotificationHandler,
|
||||
TrackingConnectorInfo trackingConnectorInfo,
|
||||
MarkPassingRaceFingerprintRegistry markPassingRaceFingerprintRegistry, ManeuverRaceFingerprintRegistry maneuverRaceFingerprintRegistry) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-7
@@ -64,7 +64,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.ReadonlyRac
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.tracking.analyzing.impl.RegattaLogDefinedMarkAnalyzer;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.CPUMeteringType;
|
||||
//import com.sap.sailing.domain.base.CPUMeteringType;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
@@ -135,7 +135,6 @@ import com.sap.sailing.domain.maneuverdetection.ShortTimeAfterLastHitCache;
|
||||
import com.sap.sailing.domain.maneuverdetection.impl.IncrementalManeuverDetectorImpl;
|
||||
import com.sap.sailing.domain.maneuverhash.ManeuverRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.maneuverhash.impl.ManeuverCacheDelegate;
|
||||
import com.sap.sailing.domain.maneuverhash.impl.ManeuverFromDatabase;
|
||||
import com.sap.sailing.domain.markpassingcalculation.MarkPassingCalculator;
|
||||
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
|
||||
import com.sap.sailing.domain.orc.ORCPerformanceCurveRankingMetric;
|
||||
@@ -193,10 +192,9 @@ import com.sap.sse.concurrent.NamedReentrantReadWriteLock;
|
||||
import com.sap.sse.shared.util.impl.ApproximateTime;
|
||||
import com.sap.sse.shared.util.impl.ArrayListNavigableSet;
|
||||
import com.sap.sse.util.IdentityWrapper;
|
||||
import com.sap.sse.util.ManeuverCache;
|
||||
import com.sap.sse.util.SmartFutureCache;
|
||||
import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
|
||||
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
|
||||
//import com.sap.sse.util.SmartFutureCache;
|
||||
//import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
|
||||
//import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
|
||||
import com.sap.sse.util.impl.FutureTaskWithTracingGet;
|
||||
|
||||
import difflib.DiffUtils;
|
||||
@@ -386,7 +384,7 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
||||
* Whether during {@link #cachesSuspended suspended caches mode} the maneuver re-calculation was triggered; will lead
|
||||
* to triggering the maneuver re-calculation when caches are {@link #resumeAllCachesNotUpdatingWhileLoading() resumed}.
|
||||
*/
|
||||
private boolean triggerManeuverCacheInvalidationForAllCompetitors;
|
||||
//private boolean triggerManeuverCacheInvalidationForAllCompetitors;
|
||||
|
||||
/**
|
||||
* Keys are the {@link RaceLog#getId() IDs} of the race logs that are stored as values.
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
|
||||
@Override
|
||||
public void addRaceDefinition(RaceDefinition race, DynamicTrackedRace trackedRace) {
|
||||
}
|
||||
}, /* trackedRegattaRegistry */ null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null,
|
||||
}, /* trackedRegattaRegistry */ null, mock(RaceLogAndTrackedRaceResolver.class), /* markPassingRaceFingerprintRegistry */ null, /*maneuverRaceFingerprintRegistry*/ null,
|
||||
mock(LeaderboardGroupResolver.class), /*courseDesignUpdateURI*/ null, /*tracTracUsername*/ null, /*tracTracPassword*/ null, getEventSubscriber(), getRaceSubscriber(), /*ignoreTracTracMarkPassings*/ false,
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, new DefaultRaceTrackingHandler(), /* raceAndCompetitorStatusWithRaceLogReconciler */ null, ReceiverType.RACECOURSE);
|
||||
addListenersForStoredDataAndStartController(typeControllers);
|
||||
|
||||
+2
-2
@@ -2081,11 +2081,11 @@ Replicator {
|
||||
if (regatta == null) {
|
||||
// create tracker and use an existing or create a default regatta
|
||||
tracker = params.createRaceTracker(this, windStore, /* raceLogResolver */ this, /* leaderboardGroupResolver */ this, timeoutInMilliseconds,
|
||||
raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this);
|
||||
raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this, /*maneuverRaceFingerprintRegistry*/ this);
|
||||
} else {
|
||||
// use the regatta selected by the RaceIdentifier regattaToAddTo
|
||||
tracker = params.createRaceTracker(regatta, this, windStore, /* raceLogResolver */ this, /* leaderboardGroupResolver */ this, timeoutInMilliseconds,
|
||||
raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this);
|
||||
raceTrackingHandler, /* markPassingRaceFingerprintRegistry */ this, /*maneuverRaceFingerprintRegistry*/ this);
|
||||
assert tracker.getRegatta() == regatta;
|
||||
}
|
||||
LockUtil.lockForWrite(raceTrackersByRegattaLock);
|
||||
|
||||
Reference in New Issue
Block a user