mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-23 20:43:53 +00:00
Moved central windstore into racingeventservice
also removed addRace and addEvent services from legacy adminapp
This commit is contained in:
1 parent
4e9b9ee333
commit
a988003d15
34 files changed
+113
-213
No files matched your search
-18
@@ -265,28 +265,10 @@ into one in the future.
|
||||
can be obtained; the resulting document includes the
|
||||
parameter and simulation URLs for the individual
|
||||
races that are part of the event/regatta.
|
||||
action=addevent: starts tracking all races described in the document received
|
||||
from the eventJSONURL to the server instance.
|
||||
eventJSONURL: the URL from where metadata about the entire regatta
|
||||
can be obtained; the resulting document includes the
|
||||
parameter and simulation URLs for the individual
|
||||
races that are part of the event/regatta.
|
||||
liveURI: the live data URI for the TracTrac server
|
||||
storedURI: the stored data URI for the TracTrac server; usually
|
||||
the port number of this URI is that of liveURI + 1
|
||||
action=stopregatta: stops tracking of all races of the regatta; this
|
||||
also stops all wind tracking for the races of the regatta
|
||||
regattaname: name of the regatta, as returned by the "listevents"
|
||||
action on the /moderator servlet
|
||||
action=addrace: starts tracking a single race; if other races of
|
||||
the same event/regatta are already being tracked,
|
||||
the race is added to the regatta
|
||||
paramURL: the URL from where metadata about the race
|
||||
can be obtained; the resulting document includes
|
||||
UUIDs of waypoints, competitors, etc.
|
||||
liveURI: the live data URI for the TracTrac server
|
||||
storedURI: the stored data URI for the TracTrac server; usually
|
||||
the port number of this URI is that of liveURI + 1
|
||||
action=stoprace: stops tracking of a single race, also stopping the
|
||||
wind trackers that were started for this race; other
|
||||
races of the same regatta that were being tracked will
|
||||
|
||||
+8
-9
@@ -1,5 +1,10 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
@@ -57,11 +62,6 @@ import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class EndToEndListeningStoreAndFowardTest {
|
||||
private static final Logger logger = Logger.getLogger(EndToEndListeningStoreAndFowardTest.class.getName());
|
||||
|
||||
@@ -77,7 +77,6 @@ public class EndToEndListeningStoreAndFowardTest {
|
||||
private SwissTimingAdapterPersistence swissTimingAdapterPersistence;
|
||||
private SwissTimingFactory swissTimingFactory;
|
||||
|
||||
private EmptyWindStore emptyWindStore;
|
||||
private EmptyRaceLogStore emptyRaceLogStore;
|
||||
private RacingEventService racingEventService;
|
||||
private SwissTimingAdapter swissTimingAdapter;
|
||||
@@ -111,7 +110,7 @@ public class EndToEndListeningStoreAndFowardTest {
|
||||
sendingSocket = new Socket("localhost", RECEIVE_PORT);
|
||||
sendingStream = sendingSocket.getOutputStream();
|
||||
swissTimingFactory = SwissTimingFactory.INSTANCE;
|
||||
emptyWindStore = EmptyWindStore.INSTANCE;
|
||||
EmptyWindStore emptyWindStore = EmptyWindStore.INSTANCE;
|
||||
emptyRaceLogStore = EmptyRaceLogStore.INSTANCE;
|
||||
transceiver = swissTimingFactory.createSailMasterTransceiver();
|
||||
DBCollection lastMessageCountCollection = db.getCollection(CollectionNames.LAST_MESSAGE_COUNT.name());
|
||||
@@ -122,7 +121,7 @@ public class EndToEndListeningStoreAndFowardTest {
|
||||
final com.sap.sailing.domain.base.impl.DomainFactoryImpl baseDomainFactory = new com.sap.sailing.domain.base.impl.DomainFactoryImpl();
|
||||
swissTimingAdapter = new SwissTimingAdapterFactoryImpl().getOrCreateSwissTimingAdapter(baseDomainFactory, swissTimingAdapterPersistence);
|
||||
racingEventService = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(
|
||||
mongoDBService, baseDomainFactory), PersistenceFactory.INSTANCE.getMongoObjectFactory(mongoDBService), MediaDB.TEST_STUB);
|
||||
mongoDBService, baseDomainFactory), PersistenceFactory.INSTANCE.getMongoObjectFactory(mongoDBService), MediaDB.TEST_STUB, emptyWindStore);
|
||||
raceHandles = new ArrayList<RacesHandle>();
|
||||
}
|
||||
|
||||
@@ -371,7 +370,7 @@ public class EndToEndListeningStoreAndFowardTest {
|
||||
for (String raceToTrack : racesToTrack) {
|
||||
RacesHandle raceHandle = swissTimingAdapter.addSwissTimingRace(racingEventService,
|
||||
/* regattaToAddTo */ null /* use a default regatta */, raceToTrack, /* canSendRequests */
|
||||
"localhost", CLIENT_PORT, false, emptyWindStore, emptyRaceLogStore, -1);
|
||||
"localhost", CLIENT_PORT, false, emptyRaceLogStore, -1);
|
||||
raceHandles.add(raceHandle);
|
||||
if (connector == null) {
|
||||
connector = swissTimingAdapter.getSwissTimingFactory().getOrCreateSailMasterConnector("localhost",
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
|
||||
import difflib.PatchFailedException;
|
||||
|
||||
@@ -56,7 +55,7 @@ public interface DomainFactory {
|
||||
|
||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||
boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore, WindStore windStore,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore,
|
||||
RaceSpecificMessageLoader messageLoader);
|
||||
|
||||
RaceType getRaceTypeFromRaceID(String raceID);
|
||||
|
||||
+1
-2
@@ -9,7 +9,6 @@ import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
|
||||
public interface SwissTimingAdapter {
|
||||
List<com.sap.sailing.domain.swisstimingadapter.RaceRecord> getSwissTimingRaceRecords(String hostname, int port,
|
||||
@@ -25,7 +24,7 @@ public interface SwissTimingAdapter {
|
||||
* to add the races to. Otherwise, a default regatta as described above will be created and used.
|
||||
*/
|
||||
RacesHandle addSwissTimingRace(TrackerManager trackerManager, RegattaIdentifier regattaToAddTo, String raceID, String hostname,
|
||||
int port, boolean canSendRequests, WindStore windStore, RaceLogStore logStore, long timeoutInMilliseconds)
|
||||
int port, boolean canSendRequests, RaceLogStore logStore, long timeoutInMilliseconds)
|
||||
throws InterruptedException, UnknownHostException, IOException, ParseException, Exception;
|
||||
|
||||
SwissTimingFactory getSwissTimingFactory();
|
||||
|
||||
-1
@@ -4,7 +4,6 @@ import java.io.IOException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.text.ParseException;
|
||||
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
|
||||
+2
-3
@@ -49,7 +49,6 @@ import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.impl.GPSFixMovingImpl;
|
||||
|
||||
import difflib.PatchFailedException;
|
||||
@@ -327,10 +326,10 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
@Override
|
||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||
boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore, WindStore windStore,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore,
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
return new SwissTimingTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||
swissTimingFactory, domainFactory, raceLogStore, windStore, messageLoader);
|
||||
swissTimingFactory, domainFactory, raceLogStore, messageLoader);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-3
@@ -19,7 +19,6 @@ import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackerManager;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
|
||||
public class SwissTimingAdapterImpl implements SwissTimingAdapter {
|
||||
private final SwissTimingFactory swissTimingFactory;
|
||||
@@ -65,11 +64,11 @@ public class SwissTimingAdapterImpl implements SwissTimingAdapter {
|
||||
|
||||
@Override
|
||||
public RacesHandle addSwissTimingRace(TrackerManager trackerManager, RegattaIdentifier regattaToAddTo, String raceID, String hostname,
|
||||
int port, boolean canSendRequests, WindStore windStore, RaceLogStore logStore, long timeoutInMilliseconds)
|
||||
int port, boolean canSendRequests, RaceLogStore logStore, long timeoutInMilliseconds)
|
||||
throws Exception {
|
||||
return trackerManager.addRace(regattaToAddTo, swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port,
|
||||
raceID, canSendRequests, TrackedRace.DEFAULT_LIVE_DELAY_IN_MILLISECONDS, swissTimingFactory,
|
||||
swissTimingDomainFactory, logStore, windStore, raceSpecificMessageLoader), windStore,
|
||||
swissTimingDomainFactory, logStore, raceSpecificMessageLoader),
|
||||
timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ import java.text.ParseException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
|
||||
+3
-5
@@ -19,12 +19,11 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
||||
private final SwissTimingFactory swissTimingFactory;
|
||||
private final DomainFactory domainFactory;
|
||||
private final RaceLogStore raceLogStore;
|
||||
private final WindStore windStore;
|
||||
private final RaceSpecificMessageLoader messageLoader;
|
||||
private final long delayToLiveInMillis;
|
||||
|
||||
public SwissTimingTrackingConnectivityParameters(String hostname, int port, String raceID, boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore, WindStore windStore,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, RaceLogStore raceLogStore,
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
super();
|
||||
this.hostname = hostname;
|
||||
@@ -35,18 +34,17 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
||||
this.swissTimingFactory = swissTimingFactory;
|
||||
this.domainFactory = domainFactory;
|
||||
this.raceLogStore = raceLogStore;
|
||||
this.windStore = windStore;
|
||||
this.messageLoader = messageLoader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws Exception {
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore) throws Exception {
|
||||
return swissTimingFactory.createRaceTracker(raceID, hostname, port, canSendRequests, delayToLiveInMillis, raceLogStore, windStore, messageLoader,
|
||||
domainFactory, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore)
|
||||
throws Exception {
|
||||
return swissTimingFactory.createRaceTracker(regatta, raceID, hostname, port, canSendRequests, delayToLiveInMillis, windStore, messageLoader,
|
||||
domainFactory, trackedRegattaRegistry);
|
||||
|
||||
+1
-1
@@ -247,7 +247,7 @@ public interface DomainFactory {
|
||||
Pair<Iterable<com.sap.sailing.domain.base.Competitor>, BoatClass> getCompetitorsAndDominantBoatClass(Race race);
|
||||
|
||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, RaceLogStore raceLogStore, WindStore windStore,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, RaceLogStore raceLogStore,
|
||||
String tracTracUsername, String tracTracPassword);
|
||||
/**
|
||||
* Removes all knowledge about <code>tractracRace</code> which includes removing it from the race cache, from the
|
||||
|
||||
+2
-2
@@ -47,7 +47,7 @@ public interface TracTracAdapter {
|
||||
* is stopped; use -1 to wait forever
|
||||
*/
|
||||
RacesHandle addTracTracRace(TrackerManager trackerManager, URL paramURL, URI liveURI, URI storedURI,
|
||||
URI courseDesignUpdateURI, RaceLogStore raceLogStore, WindStore windStore, long timeoutInMilliseconds,
|
||||
URI courseDesignUpdateURI, RaceLogStore raceLogStore, long timeoutInMilliseconds,
|
||||
String tracTracUsername, String tracTracPassword) throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
@@ -66,7 +66,7 @@ public interface TracTracAdapter {
|
||||
*/
|
||||
RacesHandle addTracTracRace(TrackerManager trackerManager, RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI,
|
||||
URI storedURI, URI courseDesignUpdateURI, TimePoint trackingStartTime,
|
||||
TimePoint trackingEndTime, RaceLogStore raceLogStore, WindStore windStore,
|
||||
TimePoint trackingEndTime, RaceLogStore raceLogStore,
|
||||
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow, String tracTracUsername, String tracTracPassword)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
|
||||
+2
-2
@@ -630,9 +630,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
@Override
|
||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI,
|
||||
URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||
boolean simulateWithStartTimeNow, RaceLogStore raceLogStore, WindStore windStore, String tracTracUsername, String tracTracPassword) {
|
||||
boolean simulateWithStartTimeNow, RaceLogStore raceLogStore, String tracTracUsername, String tracTracPassword) {
|
||||
return new RaceTrackingConnectivityParametersImpl(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking,
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, raceLogStore, windStore, this, tracTracUsername, tracTracPassword);
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, raceLogStore, this, tracTracUsername, tracTracPassword);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-6
@@ -6,7 +6,6 @@ import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
@@ -25,7 +24,6 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
private final TimePoint startOfTracking;
|
||||
private final TimePoint endOfTracking;
|
||||
private final RaceLogStore raceLogStore;
|
||||
private final WindStore windStore;
|
||||
private final DomainFactory domainFactory;
|
||||
private final long delayToLiveInMillis;
|
||||
private final boolean simulateWithStartTimeNow;
|
||||
@@ -34,7 +32,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
|
||||
public RaceTrackingConnectivityParametersImpl(URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||
RaceLogStore raceLogStore, WindStore windStore, DomainFactory domainFactory, String tracTracUsername, String tracTracPassword) {
|
||||
RaceLogStore raceLogStore, DomainFactory domainFactory, String tracTracUsername, String tracTracPassword) {
|
||||
super();
|
||||
this.paramURL = paramURL;
|
||||
this.liveURI = liveURI;
|
||||
@@ -43,7 +41,6 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
this.startOfTracking = startOfTracking;
|
||||
this.endOfTracking = endOfTracking;
|
||||
this.delayToLiveInMillis = delayToLiveInMillis;
|
||||
this.windStore = windStore;
|
||||
this.domainFactory = domainFactory;
|
||||
this.simulateWithStartTimeNow = simulateWithStartTimeNow;
|
||||
this.raceLogStore = raceLogStore;
|
||||
@@ -52,7 +49,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException,
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore) throws MalformedURLException,
|
||||
FileNotFoundException, URISyntaxException {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, raceLogStore, windStore, tracTracUsername, tracTracPassword, trackedRegattaRegistry);
|
||||
@@ -60,7 +57,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore)
|
||||
throws Exception {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(regatta, paramURL, liveURI, storedURI, courseDesignUpdateURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, raceLogStore, windStore, tracTracUsername, tracTracPassword, trackedRegattaRegistry);
|
||||
|
||||
+6
-6
@@ -47,7 +47,7 @@ public class TracTracAdapterImpl implements TracTracAdapter {
|
||||
|
||||
@Override
|
||||
public RacesHandle addTracTracRace(TrackerManager trackerManager, URL paramURL, URI liveURI, URI storedURI,
|
||||
URI courseDesignUpdateURI, RaceLogStore raceLogStore, WindStore windStore, long timeoutInMilliseconds,
|
||||
URI courseDesignUpdateURI, RaceLogStore raceLogStore, long timeoutInMilliseconds,
|
||||
String tracTracUsername, String tracTracPassword) throws Exception {
|
||||
return trackerManager.addRace(
|
||||
/* regattaToAddTo */null,
|
||||
@@ -55,20 +55,20 @@ public class TracTracAdapterImpl implements TracTracAdapter {
|
||||
courseDesignUpdateURI,
|
||||
/* startOfTracking */null,
|
||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false,
|
||||
raceLogStore, windStore, tracTracUsername, tracTracPassword), windStore, timeoutInMilliseconds);
|
||||
raceLogStore, tracTracUsername, tracTracPassword), timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacesHandle addTracTracRace(TrackerManager trackerManager, RegattaIdentifier regattaToAddTo,
|
||||
URL paramURL, URI liveURI, URI storedURI, URI courseDesignUpdateURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, RaceLogStore raceLogStore, WindStore windStore,
|
||||
TimePoint endOfTracking, RaceLogStore raceLogStore,
|
||||
long timeoutInMilliseconds, boolean simulateWithStartTimeNow, String tracTracUsername, String tracTracPassword) throws Exception {
|
||||
return trackerManager.addRace(
|
||||
regattaToAddTo,
|
||||
getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
||||
courseDesignUpdateURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
simulateWithStartTimeNow, raceLogStore, windStore, tracTracUsername, tracTracPassword),
|
||||
windStore, timeoutInMilliseconds);
|
||||
simulateWithStartTimeNow, raceLogStore, tracTracUsername, tracTracPassword),
|
||||
timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -88,7 +88,7 @@ public class TracTracAdapterImpl implements TracTracAdapter {
|
||||
for (RaceRecord rr : jsonService.getRaceRecords()) {
|
||||
URL paramURL = rr.getParamURL();
|
||||
regatta = addTracTracRace(trackerManager, paramURL, liveURI, storedURI, courseDesignUpdateURI, raceLogStore,
|
||||
windStore, timeoutInMilliseconds, tracTracUsername, tracTracPassword).getRegatta();
|
||||
timeoutInMilliseconds, tracTracUsername, tracTracPassword).getRegatta();
|
||||
}
|
||||
return regatta;
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ public interface RaceTrackingConnectivityParameters {
|
||||
/**
|
||||
* Starts a {@link RaceTracker} using the connectivity parameters provided by this object.
|
||||
*/
|
||||
RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws Exception;
|
||||
RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore) throws Exception;
|
||||
|
||||
/**
|
||||
* Starts a {@link RaceTracker}, associating the resulting races with the {@link Regatta} passed as argument
|
||||
@@ -28,7 +28,7 @@ public interface RaceTrackingConnectivityParameters {
|
||||
* parameters. This is particularly useful if a predefined regatta with {@link Series} and {@link Fleet}s
|
||||
* is to be used.
|
||||
*/
|
||||
RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry) throws Exception;
|
||||
RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry, WindStore windStore) throws Exception;
|
||||
|
||||
/**
|
||||
* Deliver an ID object equal to that of the {@link RaceTracker#getID()} delivered by the {@link RaceTracker}
|
||||
|
||||
@@ -4,8 +4,9 @@ import java.io.FileNotFoundException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
|
||||
public interface TrackerManager {
|
||||
|
||||
@@ -18,10 +19,8 @@ public interface TrackerManager {
|
||||
* identifier; if the regatta is found, it is used to add the races to, and
|
||||
* {@link #setRegattaForRace(Regatta, RaceDefinition)} is called to remember the association
|
||||
* persistently. Otherwise, a default regatta as described above will be created and used.
|
||||
* @param windStore
|
||||
* must not be <code>null</code>, but can, e.g., be an {@link EmptyWindStore}
|
||||
*/
|
||||
RacesHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, WindStore windStore, long timeoutInMilliseconds)
|
||||
RacesHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
}
|
||||
+1
-3
@@ -140,7 +140,6 @@ import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
||||
import com.sap.sailing.domain.polarsheets.PolarSheetGenerationWorker;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
@@ -857,7 +856,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
new MillisecondsTimePoint(record.getTrackingStartTime().asMillis()),
|
||||
new MillisecondsTimePoint(record.getTrackingEndTime().asMillis()),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory),
|
||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow, tracTracUsername, tracTracPassword);
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow, tracTracUsername, tracTracPassword);
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + record.getEventName() + "/" + record.getName()) {
|
||||
public void run() {
|
||||
@@ -2135,7 +2134,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
final RacesHandle raceHandle = getSwissTimingAdapter().addSwissTimingRace(getService(), regattaToAddTo, rr.ID, hostname,
|
||||
port,
|
||||
canSendRequests,
|
||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory), RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) {
|
||||
|
||||
+13
-6
@@ -1,5 +1,13 @@
|
||||
package com.sap.sailing.mongodb.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -50,8 +58,8 @@ import com.sap.sailing.domain.leaderboard.impl.HighPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ThresholdBasedResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.impl.CollectionNames;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDBFactory;
|
||||
import com.sap.sailing.domain.test.AbstractLeaderboardTest;
|
||||
@@ -59,13 +67,12 @@ import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPointsReason;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest {
|
||||
private static final Logger logger = Logger.getLogger(TestStoringAndLoadingEventsAndRegattas.class.getName());
|
||||
|
||||
@@ -134,7 +141,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
@Test
|
||||
public void testLoadStoreSimpleRegattaLeaderboard() {
|
||||
RacingEventService res = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService()));
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService()), EmptyWindStore.INSTANCE);
|
||||
final int numberOfQualifyingRaces = 5;
|
||||
final int numberOfFinalRaces = 7;
|
||||
final String regattaBaseName = "Kieler Woche";
|
||||
@@ -248,7 +255,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
|
||||
private RacingEventServiceImpl createRacingEventServiceWithOneMockedTrackedRace(final DynamicTrackedRace q2YellowTrackedRace) {
|
||||
return new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService())) {
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService()), EmptyWindStore.INSTANCE) {
|
||||
@Override
|
||||
public DynamicTrackedRace getExistingTrackedRace(RegattaAndRaceIdentifier raceIdentifier) {
|
||||
return q2YellowTrackedRace;
|
||||
@@ -470,7 +477,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
regatta.addRace(racedef);
|
||||
|
||||
RacingEventServiceImpl evs = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService()));
|
||||
.getMongoObjectFactory(getMongoService()), MediaDBFactory.INSTANCE.getMediaDB(getMongoService()), EmptyWindStore.INSTANCE);
|
||||
assertNull(evs.getRememberedRegattaForRace(racedef.getId()));
|
||||
evs.raceAdded(regatta, racedef);
|
||||
assertNotNull(evs.getRememberedRegattaForRace(racedef.getId()));
|
||||
|
||||
+2
-1
@@ -49,6 +49,7 @@ import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDBFactory;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -314,7 +315,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
||||
|
||||
// the leaderboard named leaderboardNames[2] occurs in both groups
|
||||
RacingEventService racingEventService = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getMediaDB(MongoDBService.INSTANCE)); // expected to load leaderboard groups
|
||||
.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getMediaDB(MongoDBService.INSTANCE), EmptyWindStore.INSTANCE); // expected to load leaderboard groups
|
||||
final LeaderboardGroup loadedLeaderboardGroup1 = racingEventService.getLeaderboardGroupByName(groupName1);
|
||||
final LeaderboardGroup loadedLeaderboardGroup2 = racingEventService.getLeaderboardGroupByName(groupName2);
|
||||
|
||||
|
||||
+2
-93
@@ -3,10 +3,8 @@ package com.sap.sailing.server.gateway.impl;
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.SocketException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.net.UnknownHostException;
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -20,7 +18,6 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.Bearing;
|
||||
@@ -37,20 +34,12 @@ import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.RaceRecord;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.gateway.SailingServerHttpServlet;
|
||||
import com.sap.sailing.util.InvalidDateException;
|
||||
|
||||
@@ -59,10 +48,6 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
|
||||
private static final String ACTION_NAME_ADD_WIND_TO_MARKS = "addwindtomarksforonehour";
|
||||
|
||||
private static final String ACTION_NAME_ADD_EVENT = "addevent";
|
||||
|
||||
private static final String ACTION_NAME_ADD_RACE = "addrace";
|
||||
|
||||
private static final String ACTION_NAME_LIST_RACES_IN_REGATTA = "listracesinregatta";
|
||||
|
||||
private static final String ACTION_NAME_STOP_REGATTA = "stopregatta";
|
||||
@@ -83,12 +68,6 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
|
||||
private static final String PARAM_NAME_EVENT_JSON_URL = "eventJSONURL";
|
||||
|
||||
private static final String PARAM_NAME_PARAM_URL = "paramURL";
|
||||
|
||||
private static final String PARAM_NAME_LIVE_URI = "liveURI";
|
||||
|
||||
private static final String PARAM_NAME_STORED_URI = "storedURI";
|
||||
|
||||
private static final String PARAM_NAME_FROM_TIME = "fromtime";
|
||||
|
||||
private static final String PARAM_NAME_FROM_TIME_MILLIS = "fromtimeasmillis";
|
||||
@@ -116,15 +95,7 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
private static final String PARAM_NAME_PORT = "port";
|
||||
|
||||
private static final String PARAM_NAME_CORRECT_EXPEDITION_WIND_BEARING_BY_DECLINATION = "correctexpeditionwindbearingbydeclination";
|
||||
|
||||
private static final String PARAM_NAME_WINDSTORE = "windstore";
|
||||
|
||||
private static final String PARAM_NAME_RACELOGSTORE = "racelogstore";
|
||||
|
||||
private static final String STORE_EMPTY = "empty";
|
||||
|
||||
private static final String STORE_MONGO = "mongo";
|
||||
|
||||
public AdminApp() {
|
||||
}
|
||||
|
||||
@@ -133,13 +104,9 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
try {
|
||||
String action = req.getParameter(PARAM_ACTION);
|
||||
if (action != null) {
|
||||
if (ACTION_NAME_ADD_EVENT.equals(action)) {
|
||||
addEvent(req, resp);
|
||||
} else if (ACTION_NAME_STOP_REGATTA.equals(action)) {
|
||||
if (ACTION_NAME_STOP_REGATTA.equals(action)) {
|
||||
stopRegatta(req, resp);
|
||||
} else if (ACTION_NAME_ADD_RACE.equals(action)) {
|
||||
addRace(req, resp);
|
||||
} else if (ACTION_NAME_LIST_RACES_IN_REGATTA.equals(action)) {
|
||||
} else if (ACTION_NAME_LIST_RACES_IN_REGATTA.equals(action)) {
|
||||
listRacesInEvent(req, resp);
|
||||
} else if (ACTION_NAME_STOP_RACE.equals(action)) {
|
||||
stopRace(req, resp);
|
||||
@@ -470,64 +437,6 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
}
|
||||
}
|
||||
|
||||
private void addEvent(HttpServletRequest req, HttpServletResponse resp) throws MongoException, Exception {
|
||||
URL jsonURL = new URL(req.getParameter(PARAM_NAME_EVENT_JSON_URL));
|
||||
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
||||
URI storedURI = new URI(req.getParameter(PARAM_NAME_STORED_URI));
|
||||
|
||||
//The course design update URI is not available at this place
|
||||
getTracTracAdapterFactory().getOrCreateTracTracAdapter(getService().getBaseDomainFactory()).addRegatta(getService(),
|
||||
jsonURL, liveURI, storedURI, /* courseDesignUpdateURI */null, /* timeoutInMilliseconds */
|
||||
getWindStore(req),
|
||||
60000, /* tracTracUsername */null, /* tracTracPassword */null, getRaceLogStore(req));
|
||||
}
|
||||
|
||||
private WindStore getWindStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
||||
String windStore = req.getParameter(PARAM_NAME_WINDSTORE);
|
||||
if (windStore != null) {
|
||||
if (windStore.equals(STORE_EMPTY)) {
|
||||
return EmptyWindStore.INSTANCE;
|
||||
} else if (windStore.equals(STORE_MONGO)) {
|
||||
return MongoWindStoreFactory.INSTANCE.getMongoWindStore(
|
||||
PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, getService().getBaseDomainFactory()));
|
||||
} else {
|
||||
log("Couldn't find wind store "+windStore+". Using EmptyWindStore instead.");
|
||||
return EmptyWindStore.INSTANCE;
|
||||
}
|
||||
}
|
||||
return EmptyWindStore.INSTANCE;
|
||||
}
|
||||
|
||||
private RaceLogStore getRaceLogStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
||||
String raceLogStore = req.getParameter(PARAM_NAME_RACELOGSTORE);
|
||||
if (raceLogStore != null) {
|
||||
if (raceLogStore.equals(STORE_EMPTY)) {
|
||||
return EmptyRaceLogStore.INSTANCE;
|
||||
} else if (raceLogStore.equals(STORE_MONGO)) {
|
||||
return MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(
|
||||
PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, getService().getBaseDomainFactory()));
|
||||
} else {
|
||||
log("Couldn't find race log store "+raceLogStore+". Using EmptyRaceLogStore instead.");
|
||||
return EmptyRaceLogStore.INSTANCE;
|
||||
}
|
||||
}
|
||||
return EmptyRaceLogStore.INSTANCE;
|
||||
}
|
||||
|
||||
private void addRace(HttpServletRequest req, HttpServletResponse resp) throws MongoException, Exception {
|
||||
URL paramURL = new URL(req.getParameter(PARAM_NAME_PARAM_URL));
|
||||
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
||||
URI storedURI = new URI(req.getParameter(PARAM_NAME_STORED_URI));
|
||||
//The course design update URI is not available at this place
|
||||
getTracTracAdapterFactory().getOrCreateTracTracAdapter(getService().getBaseDomainFactory()).addTracTracRace(getService(), paramURL, liveURI, storedURI,
|
||||
/*courseDesignUpdateURI*/ null,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, getService().getBaseDomainFactory())), getWindStore(req),
|
||||
/* timeoutInMilliseconds */ 60000l, /*tracTracUsername*/ null, /*tracTracPassword*/ null);
|
||||
}
|
||||
|
||||
private void stopRace(HttpServletRequest req, HttpServletResponse resp) throws MalformedURLException, IOException, InterruptedException {
|
||||
Regatta regatta = getRegatta(req);
|
||||
if (regatta != null) {
|
||||
|
||||
+3
-2
@@ -27,6 +27,7 @@ import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDBFactory;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -92,7 +93,7 @@ public abstract class AbstractServerReplicationTest {
|
||||
this.master = master;
|
||||
} else {
|
||||
this.master = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoDBService, DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService));
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE);
|
||||
}
|
||||
if (replica != null) {
|
||||
this.replica = replica;
|
||||
@@ -100,7 +101,7 @@ public abstract class AbstractServerReplicationTest {
|
||||
this.replica = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoDBService,
|
||||
// replica gets its own base DomainFactory:
|
||||
new DomainFactoryImpl()), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService));
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE);
|
||||
}
|
||||
ReplicationInstancesManager rim = new ReplicationInstancesManager();
|
||||
masterReplicator = new ReplicationServiceImpl(exchangeName, exchangeHost, rim, this.master);
|
||||
|
||||
+6
-3
@@ -1,5 +1,9 @@
|
||||
package com.sap.sailing.server.replication.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
@@ -25,6 +29,7 @@ import com.sap.sailing.domain.test.AbstractLeaderboardTest;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard;
|
||||
@@ -34,8 +39,6 @@ import com.sap.sailing.server.operationaltransformation.UpdateLeaderboardMaxPoin
|
||||
import com.sap.sailing.server.replication.ReplicationMasterDescriptor;
|
||||
import com.sap.sailing.server.replication.ReplicationService;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServerReplicationTest {
|
||||
private static final String Q2 = "Q2";
|
||||
private ReplicationService replicaReplicator;
|
||||
@@ -125,7 +128,7 @@ public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServer
|
||||
|
||||
private RacingEventServiceImpl createRacingEventServiceWithOneMockedTrackedRace(final DynamicTrackedRace q2YellowTrackedRace) {
|
||||
return new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getMediaDB(MongoDBService.INSTANCE)) {
|
||||
.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getMediaDB(MongoDBService.INSTANCE), EmptyWindStore.INSTANCE) {
|
||||
@Override
|
||||
public DynamicTrackedRace getExistingTrackedRace(RegattaAndRaceIdentifier raceIdentifier) {
|
||||
return q2YellowTrackedRace;
|
||||
|
||||
+4
-3
@@ -1,11 +1,11 @@
|
||||
package com.sap.sailing.server.replication.test;
|
||||
|
||||
import static org.hamcrest.core.Is.is;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertSame;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.hamcrest.core.Is.is;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -34,6 +34,7 @@ import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDBFactory;
|
||||
import com.sap.sailing.domain.test.TrackBasedTest;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.server.operationaltransformation.AddDefaultRegatta;
|
||||
@@ -53,9 +54,9 @@ public class InitialLoadReplicationObjectIdentityTest extends AbstractServerRepl
|
||||
final MongoDBService mongoDBService = MongoDBService.INSTANCE;
|
||||
mongoDBService.getDB().dropDatabase();
|
||||
this.master = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoDBService, DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService));
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE);
|
||||
this.replica = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(mongoDBService, DomainFactory.INSTANCE), PersistenceFactory.INSTANCE
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService));
|
||||
.getMongoObjectFactory(mongoDBService), MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE);
|
||||
}
|
||||
|
||||
public void performReplicationSetup() throws Exception {
|
||||
|
||||
+2
-5
@@ -17,8 +17,6 @@ import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
@@ -36,7 +34,6 @@ import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.server.OperationExecutionListener;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard;
|
||||
@@ -86,7 +83,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
|
||||
});
|
||||
trackingParams = com.sap.sailing.domain.tractracadapter.DomainFactory.INSTANCE.createTrackingConnectivityParameters(paramURL,
|
||||
liveURI, storedURI, courseDesignUpdateURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */
|
||||
0l, /* simulateWithStartTimeNow */false, EmptyRaceLogStore.INSTANCE, EmptyWindStore.INSTANCE, tracTracUsername, tracTracPassword);
|
||||
0l, /* simulateWithStartTimeNow */false, EmptyRaceLogStore.INSTANCE, tracTracUsername, tracTracPassword);
|
||||
}
|
||||
|
||||
private void startTracking() throws Exception, InterruptedException {
|
||||
@@ -97,7 +94,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
|
||||
}
|
||||
|
||||
private void startTrackingOnMaster() throws Exception {
|
||||
racesHandle = master.addRace(/* regattaToAddTo */ null, trackingParams, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
racesHandle = master.addRace(/* regattaToAddTo */ null, trackingParams, /* timeoutInMilliseconds */ 60000);
|
||||
}
|
||||
|
||||
private void waitForTrackRaceReplicationTrigger() throws InterruptedException {
|
||||
|
||||
+2
-1
@@ -66,6 +66,7 @@ import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogEventFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.gateway.serialization.masterdata.impl.TopLevelMasterDataSerializer;
|
||||
@@ -576,7 +577,7 @@ public class MasterDataImportTest {
|
||||
// Setup source service
|
||||
DomainFactory sourceDomainFactory = new DomainFactoryImpl();
|
||||
RacingEventService sourceService = new RacingEventServiceImpl(PersistenceFactory.INSTANCE.getDomainObjectFactory(MongoDBService.INSTANCE, sourceDomainFactory),
|
||||
PersistenceFactory.INSTANCE.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getDefaultMediaDB());
|
||||
PersistenceFactory.INSTANCE.getMongoObjectFactory(MongoDBService.INSTANCE), MediaDBFactory.INSTANCE.getDefaultMediaDB(), EmptyWindStore.INSTANCE);
|
||||
Event event = sourceService.addEvent(TEST_EVENT_NAME, "testVenue", "", false, eventUUID);
|
||||
UUID courseAreaUUID = UUID.randomUUID();
|
||||
CourseArea courseArea = new CourseAreaImpl("testArea", courseAreaUUID);
|
||||
|
||||
+3
-4
@@ -25,7 +25,6 @@ import com.sap.sailing.domain.tracking.RaceListener;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -73,7 +72,7 @@ public class RaceTrackerTest {
|
||||
tracTracAdapterFactory = new TracTracAdapterFactoryImpl();
|
||||
raceHandle = tracTracAdapterFactory.getOrCreateTracTracAdapter(service.getBaseDomainFactory())
|
||||
.addTracTracRace(service, paramUrl, liveUri, storedUri, courseDesignUpdateUri, EmptyRaceLogStore.INSTANCE,
|
||||
EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
/* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
logger.info("Calling raceHandle.getRaces()");
|
||||
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
||||
logger.info("Obtained races: "+races);
|
||||
@@ -131,7 +130,7 @@ public class RaceTrackerTest {
|
||||
service.removeRegatta(raceHandle.getRegatta());
|
||||
RacesHandle myRaceHandle = tracTracAdapterFactory.getOrCreateTracTracAdapter(service.getBaseDomainFactory())
|
||||
.addTracTracRace(service, paramUrl, liveUri, storedUri, courseDesignUpdateUri, EmptyRaceLogStore.INSTANCE,
|
||||
EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
/* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
TrackedRegatta newTrackedRegatta = myRaceHandle.getTrackedRegatta();
|
||||
assertNotSame(oldTrackedRegatta, newTrackedRegatta);
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedRegatta);
|
||||
@@ -157,7 +156,7 @@ public class RaceTrackerTest {
|
||||
TrackedRace oldTrackedRace = getTrackedRace(oldTrackedRegatta);
|
||||
RacesHandle myRaceHandle = tracTracAdapterFactory.getOrCreateTracTracAdapter(service.getBaseDomainFactory())
|
||||
.addTracTracRace(service, paramUrl, liveUri, storedUri, courseDesignUpdateUri, EmptyRaceLogStore.INSTANCE,
|
||||
EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
/* timeoutInMilliseconds */60000, tracTracUsername, tracTracPassword);
|
||||
TrackedRegatta newTrackedEvent = myRaceHandle.getTrackedRegatta();
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedEvent);
|
||||
// expecting a new tracked race to be created when starting over with tracking
|
||||
|
||||
@@ -18,6 +18,7 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.expeditionconnector,
|
||||
com.sap.sailing.declination,
|
||||
com.sap.sailing.mongodb,
|
||||
com.mongodb.driver;bundle-version="2.6.2",
|
||||
com.sap.sailing.domain.persistence,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.udpconnector,
|
||||
|
||||
+30
-10
@@ -77,6 +77,7 @@ import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.media.DBMediaTrack;
|
||||
import com.sap.sailing.domain.persistence.media.MediaDB;
|
||||
@@ -205,6 +206,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
private final MediaLibrary mediaLibrary;
|
||||
|
||||
private final WindStore windStore;
|
||||
|
||||
/**
|
||||
* Constructs a {@link DomainFactory base domain factory} that uses this object's {@link #competitorStore
|
||||
* competitor store} for competitor management. This base domain factory is then also used for the construction of
|
||||
@@ -213,7 +216,11 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
* prior releases that did not support a persistent competitor collection.
|
||||
*/
|
||||
public RacingEventServiceImpl() {
|
||||
this(true);
|
||||
this(true, null);
|
||||
}
|
||||
|
||||
public RacingEventServiceImpl(WindStore windStore) {
|
||||
this(true, windStore);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -226,11 +233,15 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
* created and stored during previous service executions will initially be loaded.
|
||||
*/
|
||||
public RacingEventServiceImpl(boolean clearPersistentCompetitorStore) {
|
||||
this(new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), clearPersistentCompetitorStore));
|
||||
this(new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), clearPersistentCompetitorStore), null);
|
||||
}
|
||||
|
||||
private RacingEventServiceImpl(PersistentCompetitorStore persistentCompetitorStore) {
|
||||
this(persistentCompetitorStore.getDomainObjectFactory(), persistentCompetitorStore.getMongoObjectFactory(), persistentCompetitorStore.getBaseDomainFactory(), MediaDBFactory.INSTANCE.getDefaultMediaDB(), persistentCompetitorStore);
|
||||
private RacingEventServiceImpl(boolean clearPersistentCompetitorStore, WindStore windStore) {
|
||||
this(new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), clearPersistentCompetitorStore), windStore);
|
||||
}
|
||||
|
||||
private RacingEventServiceImpl(PersistentCompetitorStore persistentCompetitorStore, WindStore windStore) {
|
||||
this(persistentCompetitorStore.getDomainObjectFactory(), persistentCompetitorStore.getMongoObjectFactory(), persistentCompetitorStore.getBaseDomainFactory(), MediaDBFactory.INSTANCE.getDefaultMediaDB(), persistentCompetitorStore, windStore);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -238,12 +249,12 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
* {@link PersistenceFactory#getDefaultDomainObjectFactory() default domain object factory}. This constructor should
|
||||
* be used for testing because it provides a transient {@link CompetitorStore} as required for competitor persistence.
|
||||
*/
|
||||
public RacingEventServiceImpl(DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory, MediaDB mediaDB) {
|
||||
this(domainObjectFactory, mongoObjectFactory, domainObjectFactory.getBaseDomainFactory(), mediaDB, domainObjectFactory.getBaseDomainFactory().getCompetitorStore());
|
||||
public RacingEventServiceImpl(DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory, MediaDB mediaDB, WindStore windStore) {
|
||||
this(domainObjectFactory, mongoObjectFactory, domainObjectFactory.getBaseDomainFactory(), mediaDB, domainObjectFactory.getBaseDomainFactory().getCompetitorStore(), windStore);
|
||||
}
|
||||
|
||||
private RacingEventServiceImpl(DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory,
|
||||
com.sap.sailing.domain.base.DomainFactory baseDomainFactory, MediaDB mediaDb, CompetitorStore competitorStore) {
|
||||
com.sap.sailing.domain.base.DomainFactory baseDomainFactory, MediaDB mediaDb, CompetitorStore competitorStore, WindStore windStore) {
|
||||
logger.info("Created " + this);
|
||||
this.baseDomainFactory = baseDomainFactory;
|
||||
this.domainObjectFactory = domainObjectFactory;
|
||||
@@ -263,6 +274,15 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
this.raceLogScoringReplicator = new RaceLogScoringReplicator(this);
|
||||
this.mediaDB = mediaDb;
|
||||
this.mediaLibrary = new MediaLibrary();
|
||||
|
||||
if (windStore == null) {
|
||||
try {
|
||||
windStore = MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
this.windStore = windStore;
|
||||
|
||||
// Add one default leaderboard that aggregates all races currently tracked by this service.
|
||||
// This is more for debugging purposes than for anything else.
|
||||
@@ -747,16 +767,16 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
@Override
|
||||
public RacesHandle addRace(RegattaIdentifier regattaToAddTo, RaceTrackingConnectivityParameters params,
|
||||
WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||
long timeoutInMilliseconds) throws Exception {
|
||||
RaceTracker tracker = raceTrackersByID.get(params.getTrackerID());
|
||||
if (tracker == null) {
|
||||
Regatta regatta = regattaToAddTo == null ? null : getRegatta(regattaToAddTo);
|
||||
if (regatta == null) {
|
||||
// create tracker and use an existing or create a default regatta
|
||||
tracker = params.createRaceTracker(this);
|
||||
tracker = params.createRaceTracker(this, windStore);
|
||||
} else {
|
||||
// use the regatta selected by the RaceIdentifier regattaToAddTo
|
||||
tracker = params.createRaceTracker(regatta, this);
|
||||
tracker = params.createRaceTracker(regatta, this, windStore);
|
||||
assert tracker.getRegatta() == regatta;
|
||||
}
|
||||
synchronized (raceTrackersByRegatta) {
|
||||
|
||||
+1
-2
@@ -16,7 +16,6 @@ import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -105,7 +104,7 @@ public class RaceDataAccessEval {
|
||||
tracTracAdapterFactory = new TracTracAdapterFactoryImpl();
|
||||
logger.info("Calling service.addTracTracRace");
|
||||
raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, paramUrl, liveUri, storedUri, null,
|
||||
EmptyWindStore.INSTANCE, 60000);
|
||||
60000);
|
||||
logger.info("Calling raceHandle.getRaces(): " + raceHandle);
|
||||
|
||||
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
||||
|
||||
+1
-2
@@ -19,7 +19,6 @@ import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -55,7 +54,7 @@ public class RacingEventPersistence {
|
||||
URI storedURI = new URI(storedURIStr);
|
||||
|
||||
raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, paramURL, liveURI, storedURI, null,
|
||||
EmptyWindStore.INSTANCE, 60000);
|
||||
60000);
|
||||
|
||||
System.out.println("Done loading race.");
|
||||
|
||||
|
||||
+1
-2
@@ -11,7 +11,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -69,7 +68,7 @@ public class TracTracReaderFromURLs implements TracTracReader {
|
||||
for (String paramURLStr : tracTracParamURLs) {
|
||||
URL paramURL = new URL(paramURLStr);
|
||||
RacesHandle raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, paramURL, liveURI, storedURI,
|
||||
null, EmptyWindStore.INSTANCE, 60000);
|
||||
null, 60000);
|
||||
|
||||
String regatta = raceHandle.getRegatta().getName();
|
||||
Set<RaceDefinition> races = raceHandle.getRaces();
|
||||
|
||||
+1
-2
@@ -13,7 +13,6 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
@@ -44,7 +43,7 @@ public class TracTracWriter {
|
||||
for (String paramURLStr : sources) {
|
||||
URL paramURL = new URL(paramURLStr);
|
||||
RacesHandle raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, paramURL, liveURI, storedURI,
|
||||
null, EmptyWindStore.INSTANCE, 60000);
|
||||
null, 60000);
|
||||
String regatta = raceHandle.getRegatta().getName();
|
||||
Set<RaceDefinition> races = raceHandle.getRaces();
|
||||
|
||||
|
||||
+2
-4
@@ -25,7 +25,6 @@ import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.impl.TracTracAdapterFactoryImpl;
|
||||
@@ -39,7 +38,6 @@ public class PathGeneratorTracTrac extends PathGeneratorBase {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger("com.sap.sailing.simulator");
|
||||
private static final long DEFAULT_TIMEOUT_MILLISECONDS = 60000;
|
||||
private static final WindStore DEFAULT_WINDSTORE = EmptyWindStore.INSTANCE;
|
||||
|
||||
private RacingEventServiceImpl service = null;
|
||||
private TracTracAdapterFactory tracTracAdapterFactory;
|
||||
@@ -55,7 +53,7 @@ public class PathGeneratorTracTrac extends PathGeneratorBase {
|
||||
public PathGeneratorTracTrac(SimulationParameters parameters) {
|
||||
|
||||
this.parameters = parameters;
|
||||
this.service = new RacingEventServiceImpl();
|
||||
this.service = new RacingEventServiceImpl(EmptyWindStore.INSTANCE);
|
||||
this.tracTracAdapterFactory = new TracTracAdapterFactoryImpl();
|
||||
|
||||
this.legIndex = 0;
|
||||
@@ -75,7 +73,7 @@ public class PathGeneratorTracTrac extends PathGeneratorBase {
|
||||
LOGGER.info("Calling service.addTracTracRace");
|
||||
|
||||
try {
|
||||
this.raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, raceURL, liveURI, storedURI, null, DEFAULT_WINDSTORE, DEFAULT_TIMEOUT_MILLISECONDS);
|
||||
this.raceHandle = SimulatorUtils.loadRace(service, tracTracAdapterFactory, raceURL, liveURI, storedURI, null, DEFAULT_TIMEOUT_MILLISECONDS);
|
||||
|
||||
} catch (Exception error) {
|
||||
LOGGER.severe(error.getMessage());
|
||||
|
||||
+2
-3
@@ -25,7 +25,6 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
import com.sap.sailing.simulator.Path;
|
||||
@@ -76,12 +75,12 @@ public class SimulatorUtils {
|
||||
}
|
||||
|
||||
public static RacesHandle loadRace(RacingEventServiceImpl service, TracTracAdapterFactory tracTracAdapterFactory, URL paramURL, URI liveURI,
|
||||
URI storedURI, RaceLogStore raceLogStore, WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||
URI storedURI, RaceLogStore raceLogStore, long timeoutInMilliseconds) throws Exception {
|
||||
//TODO: TracTrac Username / Password
|
||||
String tractracUsername = "";
|
||||
String tractracPassword = "";
|
||||
RacesHandle raceHandle = tracTracAdapterFactory.getOrCreateTracTracAdapter(service.getBaseDomainFactory())
|
||||
.addTracTracRace(service, paramURL, liveURI, storedURI, null, raceLogStore, windStore,
|
||||
.addTracTracRace(service, paramURL, liveURI, storedURI, null, raceLogStore,
|
||||
timeoutInMilliseconds, tractracUsername, tractracPassword);
|
||||
return raceHandle;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user