mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-03 17:49:40 +00:00
Introduced RaceLogStore to RaceColumnInSeries
This commit is contained in:
1 parent
5e964f5f4e
commit
8ac062f3f2
51 files changed
+281
-138
No files matched your search
+3
-1
@@ -12,5 +12,7 @@ public interface MongoRaceLogStoreFactory {
|
||||
* and mongo.dbName[=<contents of constant {@link #DEFAULT_DB_NAME}>] specified in the bundle context
|
||||
*/
|
||||
MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory,
|
||||
RaceColumnIdentifier identifier);
|
||||
RaceColumnIdentifier raceColumnIdentifier);
|
||||
|
||||
MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory);
|
||||
}
|
||||
+3
-1
@@ -826,7 +826,9 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
Map<String, Fleet> fleetsByName = loadFleets(dbFleets);
|
||||
BasicDBList dbRaceColumns = (BasicDBList) dbSeries.get(FieldNames.SERIES_RACE_COLUMNS.name());
|
||||
Iterable<String> raceColumnNames = loadRaceColumnNames(dbRaceColumns, fleetsByName);
|
||||
Series series = new SeriesImpl(name, isMedal, fleetsByName.values(), raceColumnNames, trackedRegattaRegistry);
|
||||
Series series = new SeriesImpl(name, isMedal, fleetsByName.values(), raceColumnNames, trackedRegattaRegistry,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(
|
||||
MongoFactory.INSTANCE.getDefaultMongoObjectFactory(), this));
|
||||
loadRaceColumnRaceLinks(dbRaceColumns, series);
|
||||
return series;
|
||||
}
|
||||
|
||||
+7
-2
@@ -16,8 +16,13 @@ public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
||||
|
||||
@Override
|
||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory,DomainObjectFactory domainObjectFactory,
|
||||
RaceColumnIdentifier identifier) {
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, identifier);
|
||||
RaceColumnIdentifier raceColumnIdentifier) {
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, raceColumnIdentifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) {
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, null);
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -30,6 +30,13 @@ public class MongoRaceLogStoreImpl extends EmptyRaceLogStore implements MongoRac
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(Fleet fleet) {
|
||||
return getRaceLog(identifier, fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
||||
if (identifier == null)
|
||||
return null;
|
||||
RaceLog log;
|
||||
if (!raceLogCache.containsKey(fleet)) {
|
||||
log = domainObjectFactory.loadRaceLog(identifier, fleet);
|
||||
|
||||
+2
-1
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.MessageType;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterTransceiver;
|
||||
@@ -336,7 +337,7 @@ public class EndToEndListeningStoreAndFowardTest {
|
||||
for (String raceToTrack : racesToTrack) {
|
||||
RacesHandle raceHandle = racingEventService.addSwissTimingRace(/* regattaToAddTo */ null /* use a default regatta */,
|
||||
raceToTrack, "localhost", /* canSendRequests */
|
||||
CLIENT_PORT, false, emptyWindStore, -1);
|
||||
CLIENT_PORT, false, emptyWindStore, -1, EmptyRaceLogStore.INSTANCE);
|
||||
raceHandles.add(raceHandle);
|
||||
if (connector == null) {
|
||||
connector = racingEventService.getSwissTimingFactory().getOrCreateSailMasterConnector("localhost",
|
||||
|
||||
+6
-3
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Competitor;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Course;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
@@ -41,7 +42,7 @@ public class SimpleDomainFactoryTest {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
final String raceID = "SAX920103";
|
||||
RaceDefinition raceDefinition = domainFactory.createRaceDefinition(domainFactory.getOrCreateDefaultRegatta(raceID,
|
||||
new RacingEventServiceImpl()),
|
||||
new RacingEventServiceImpl(), EmptyRaceLogStore.INSTANCE),
|
||||
new Race() {
|
||||
@Override
|
||||
public String getDescription() {
|
||||
@@ -92,7 +93,8 @@ public class SimpleDomainFactoryTest {
|
||||
public void testCourseConfigForMark() throws PatchFailedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Race race = new RaceImpl("1234", "Race 1234");
|
||||
Iterable<Competitor> competitors = Collections.emptyList();
|
||||
StartList startList = new StartListImpl("1234", competitors);
|
||||
@@ -117,7 +119,8 @@ public class SimpleDomainFactoryTest {
|
||||
public void testCourseConfigForGate() throws PatchFailedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Race race = new RaceImpl("1234", "Race 1234");
|
||||
Iterable<Competitor> competitors = Collections.emptyList();
|
||||
StartList startList = new StartListImpl("1234", competitors);
|
||||
|
||||
+3
-2
@@ -11,6 +11,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
@@ -25,7 +26,7 @@ public interface DomainFactory {
|
||||
|
||||
com.sap.sailing.domain.base.DomainFactory getBaseDomainFactory();
|
||||
|
||||
Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore);
|
||||
|
||||
Nationality getOrCreateNationality(String threeLetterIOCCode);
|
||||
|
||||
@@ -50,7 +51,7 @@ public interface DomainFactory {
|
||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||
boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||
RaceSpecificMessageLoader messageLoader);
|
||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore);
|
||||
|
||||
BoatClass getOrCreateBoatClassFromRaceID(String raceID);
|
||||
|
||||
|
||||
+3
-1
@@ -6,6 +6,7 @@ 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;
|
||||
import com.sap.sailing.domain.swisstimingadapter.impl.SwissTimingFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -51,7 +52,8 @@ public interface SwissTimingFactory {
|
||||
|
||||
SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port, boolean canSendRequests);
|
||||
|
||||
SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis, WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory, TrackedRegattaRegistry trackedRegattaRegistry) throws InterruptedException, UnknownHostException, IOException, ParseException;
|
||||
SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis, WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) throws InterruptedException, UnknownHostException, IOException, ParseException;
|
||||
|
||||
RaceTracker createRaceTracker(Regatta regatta, String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
||||
WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory,
|
||||
|
||||
+5
-4
@@ -30,6 +30,7 @@ import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Course;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Fix;
|
||||
@@ -98,14 +99,14 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
||||
Regatta result = trackedRegattaRegistry.getRememberedRegattaForRace(raceID);
|
||||
if (result == null) {
|
||||
result = raceIDToRegattaCache.get(raceID);
|
||||
}
|
||||
if (result == null) {
|
||||
result = new RegattaImpl(raceID, getOrCreateBoatClassFromRaceID(raceID), trackedRegattaRegistry,
|
||||
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), raceID);
|
||||
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), raceID, raceLogStore);
|
||||
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+")");
|
||||
raceIDToRegattaCache.put(raceID, result);
|
||||
}
|
||||
@@ -308,9 +309,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||
boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore) {
|
||||
return new SwissTimingTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||
swissTimingFactory, domainFactory, windStore, messageLoader);
|
||||
swissTimingFactory, domainFactory, windStore, messageLoader, raceLogStore);
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -9,6 +9,7 @@ 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;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||
@@ -80,10 +81,10 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
|
||||
@Override
|
||||
public SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
||||
WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws InterruptedException, UnknownHostException, IOException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws InterruptedException, UnknownHostException, IOException,
|
||||
ParseException {
|
||||
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, windStore, domainFactory, this, messageLoader,
|
||||
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis, raceLogStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-2
@@ -24,6 +24,7 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Course;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Fix;
|
||||
@@ -74,9 +75,9 @@ public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implemen
|
||||
|
||||
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port, WindStore windStore,
|
||||
DomainFactory domainFactory, SwissTimingFactory factory, RaceSpecificMessageLoader messageLoader,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, boolean canSendRequests, long delayToLiveInMillis) throws InterruptedException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, boolean canSendRequests, long delayToLiveInMillis, RaceLogStore raceLogStore) throws InterruptedException,
|
||||
UnknownHostException, IOException, ParseException {
|
||||
this(domainFactory.getOrCreateDefaultRegatta(raceID, trackedRegattaRegistry), raceID, hostname, port, windStore, domainFactory, factory,
|
||||
this(domainFactory.getOrCreateDefaultRegatta(raceID, trackedRegattaRegistry, raceLogStore), raceID, hostname, port, windStore, domainFactory, factory,
|
||||
messageLoader, trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
@@ -17,12 +18,13 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
||||
private final SwissTimingFactory swissTimingFactory;
|
||||
private final DomainFactory domainFactory;
|
||||
private final WindStore windStore;
|
||||
private final RaceLogStore raceLogStore;
|
||||
private final RaceSpecificMessageLoader messageLoader;
|
||||
private final long delayToLiveInMillis;
|
||||
|
||||
public SwissTimingTrackingConnectivityParameters(String hostname, int port, String raceID, boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore) {
|
||||
super();
|
||||
this.hostname = hostname;
|
||||
this.port = port;
|
||||
@@ -32,13 +34,14 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
||||
this.swissTimingFactory = swissTimingFactory;
|
||||
this.domainFactory = domainFactory;
|
||||
this.windStore = windStore;
|
||||
this.raceLogStore = raceLogStore;
|
||||
this.messageLoader = messageLoader;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws Exception {
|
||||
return swissTimingFactory.createRaceTracker(raceID, hostname, port, canSendRequests, delayToLiveInMillis, windStore, messageLoader,
|
||||
domainFactory, trackedRegattaRegistry);
|
||||
domainFactory, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-1
@@ -35,6 +35,7 @@ import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.CompetitorStatus;
|
||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayListener;
|
||||
@@ -300,7 +301,7 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter {
|
||||
}
|
||||
|
||||
private void createRace() {
|
||||
final Regatta myRegatta = regatta != null ? regatta : domainFactory.getOrCreateDefaultRegatta(currentRaceID, trackedRegattaRegistry);
|
||||
final Regatta myRegatta = regatta != null ? regatta : domainFactory.getOrCreateDefaultRegatta(currentRaceID, trackedRegattaRegistry, EmptyRaceLogStore.INSTANCE);
|
||||
RaceDefinition race = domainFactory.createRaceDefinition(myRegatta,
|
||||
currentRaceID, competitorsPerRaceID.get(currentRaceID), currentCourseDefinition);
|
||||
racePerRaceID.put(currentRaceID, race);
|
||||
|
||||
+2
-1
@@ -31,6 +31,7 @@ import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.WaypointImpl;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
@@ -69,7 +70,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
|
||||
public void setUp() throws MalformedURLException, IOException, InterruptedException, URISyntaxException {
|
||||
super.setUp();
|
||||
domainFactory = new DomainFactoryImpl(new com.sap.sailing.domain.base.impl.DomainFactoryImpl());
|
||||
domainRegatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
domainRegatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
||||
trackedRegatta = new DynamicTrackedRegattaImpl(domainRegatta);
|
||||
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
||||
receivers.add(new RaceCourseReceiver(domainFactory, trackedRegatta, getTracTracEvent(),
|
||||
|
||||
+5
-3
@@ -856,7 +856,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
||||
qualifyingRaceColumnNames.add("Q" + i);
|
||||
}
|
||||
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
||||
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null);
|
||||
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null, EmptyRaceLogStore.INSTANCE);
|
||||
series.add(qualifyingSeries);
|
||||
}
|
||||
|
||||
@@ -871,7 +871,8 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
||||
for (int i = 1; i <= numberOfFinalRaces; i++) {
|
||||
finalRaceColumnNames.add("F" + i);
|
||||
}
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */false, finalFleets, finalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */false, finalFleets, finalRaceColumnNames, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
series.add(finalSeries);
|
||||
}
|
||||
|
||||
@@ -881,7 +882,8 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
||||
medalFleets.add(new FleetImpl("Medal"));
|
||||
List<String> medalRaceColumnNames = new ArrayList<String>();
|
||||
medalRaceColumnNames.add("M");
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */true, medalFleets, medalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */true, medalFleets, medalRaceColumnNames, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
series.add(medalSeries);
|
||||
}
|
||||
|
||||
|
||||
+8
-4
@@ -15,6 +15,7 @@ import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
||||
@@ -50,25 +51,28 @@ public class MultipleClassesInRegattaTest {
|
||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=cce678c8-97e6-11e0-9aed-406186cbf87c"),
|
||||
new URI(liveURI), new URI(storedURI),
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false,
|
||||
EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(), EmptyRaceLogStore.INSTANCE);
|
||||
kiwotest2 = domainFactory
|
||||
.createRaceTracker(
|
||||
new URL(
|
||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=11290bd6-97e7-11e0-9aed-406186cbf87c"),
|
||||
new URI(liveURI), new URI(storedURI),
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
kiwotest3 = domainFactory
|
||||
.createRaceTracker(
|
||||
new URL(
|
||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=39635b24-97e7-11e0-9aed-406186cbf87c"),
|
||||
new URI(liveURI), new URI(storedURI),
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
weym470may112014_2 = domainFactory
|
||||
.createRaceTracker(
|
||||
new URL(
|
||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=04498426-7dfd-11e0-8236-406186cbf87c"),
|
||||
new URI(liveURI), new URI(storedURI),
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
|
||||
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
||||
assertEquals("505", kiwotest2.getRegatta().getBoatClass().getName());
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@ import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -132,7 +133,7 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest {
|
||||
if (domainFactory == null) {
|
||||
domainFactory = new DomainFactoryImpl(new com.sap.sailing.domain.base.impl.DomainFactoryImpl());
|
||||
}
|
||||
domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
||||
trackedRegatta = new DynamicTrackedRegattaImpl(domainEvent);
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -40,6 +40,7 @@ import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||
@@ -83,7 +84,7 @@ public class ReachingLegTest extends TrackBasedTest {
|
||||
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
||||
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
||||
Regatta regatta = new RegattaImpl(regattaName, boatClass, /* trackedRegattaRegistry */ null,
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123", EmptyRaceLogStore.INSTANCE);
|
||||
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
// create a two-lap upwind/downwind course:
|
||||
|
||||
+3
-1
@@ -15,6 +15,7 @@ import org.junit.Test;
|
||||
import com.maptrack.client.io.TypeController;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
||||
@@ -94,7 +95,8 @@ public class ReceiveMarkPassingDataTest extends AbstractTracTracLiveTest {
|
||||
List<Receiver> receivers = new ArrayList<Receiver>();
|
||||
receivers.add(receiver);
|
||||
for (Receiver r : DomainFactory.INSTANCE.getUpdateReceivers(
|
||||
new DynamicTrackedRegattaImpl(DomainFactory.INSTANCE.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null)),
|
||||
new DynamicTrackedRegattaImpl(DomainFactory.INSTANCE.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE)),
|
||||
getTracTracEvent(), EmptyWindStore.INSTANCE, /* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l,
|
||||
/* simulator */ null, new DynamicRaceDefinitionSet() {
|
||||
@Override
|
||||
|
||||
+3
-1
@@ -14,6 +14,7 @@ import com.maptrack.client.io.TypeController;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -65,7 +66,8 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
}
|
||||
};
|
||||
List<TypeController> listeners = new ArrayList<TypeController>();
|
||||
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
DynamicTrackedRegatta trackedRegatta = new DynamicTrackedRegattaImpl(regatta);
|
||||
trackedRegatta.addRaceListener(new RaceListener() {
|
||||
@Override
|
||||
|
||||
+2
-1
@@ -33,6 +33,7 @@ import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
@@ -93,7 +94,7 @@ public abstract class TrackBasedTest {
|
||||
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
||||
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
||||
Regatta regatta = new RegattaImpl(regattaName, boatClass, /* trackedRegattaRegistry */ null,
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123", EmptyRaceLogStore.INSTANCE);
|
||||
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
// create a two-lap upwind/downwind course:
|
||||
|
||||
+2
-1
@@ -14,6 +14,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
||||
@@ -54,7 +55,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
|
||||
+ TracTracConnectionConstants.PORT_STORED),
|
||||
/* startOfTracking */null, /* endOfTracking */null, /* delayToLiveInMillis */0l,
|
||||
/* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE,
|
||||
new DummyTrackedRegattaRegistry());
|
||||
new DummyTrackedRegattaRegistry(), EmptyRaceLogStore.INSTANCE);
|
||||
|
||||
Iterable<Competitor> competitors = fourtyninerYellow_2.getRacesHandle().getRaces().iterator().next()
|
||||
.getCompetitors();
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
@@ -262,7 +263,8 @@ public class WindTest {
|
||||
final BoatClass boatClass = domainFactory.getOrCreateBoatClass("ESS40");
|
||||
DynamicTrackedRace trackedRace = new DynamicTrackedRaceImpl(new DynamicTrackedRegattaImpl(
|
||||
new RegattaImpl("Test Regatta", boatClass,
|
||||
/* trackedRegattaRegistry */ null, domainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), "123")),
|
||||
/* trackedRegattaRegistry */ null, domainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
||||
EmptyRaceLogStore.INSTANCE)),
|
||||
new RaceDefinitionImpl("Test Race",
|
||||
new CourseImpl("Test Course", Arrays.asList(new Waypoint[] { w1, w2, w3 })),
|
||||
boatClass, Collections.singleton(competitor)),
|
||||
|
||||
+7
-4
@@ -22,6 +22,7 @@ import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -92,7 +93,8 @@ public interface DomainFactory {
|
||||
* boat class exists yet.
|
||||
* @param trackedRegattaRegistry TODO
|
||||
*/
|
||||
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore);
|
||||
|
||||
/**
|
||||
* Creates a race tracked for the specified URL/URIs and starts receiving all available existing and future push
|
||||
@@ -125,7 +127,7 @@ public interface DomainFactory {
|
||||
*/
|
||||
TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException;
|
||||
|
||||
/**
|
||||
@@ -134,7 +136,7 @@ public interface DomainFactory {
|
||||
*/
|
||||
RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException;
|
||||
|
||||
BoatClass getOrCreateBoatClass(CompetitorClass competitorClass);
|
||||
@@ -235,7 +237,8 @@ public interface DomainFactory {
|
||||
Pair<List<com.sap.sailing.domain.base.Competitor>, BoatClass> getCompetitorsAndDominantBoatClass(Race race);
|
||||
|
||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore);
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
RaceLogStore raceLogStore);
|
||||
/**
|
||||
* Removes all knowledge about <code>tractracRace</code> which includes removing it from the race cache, from the
|
||||
* {@link com.sap.sailing.domain.base.Regatta} and, if a {@link TrackedRace} for the corresponding
|
||||
|
||||
+10
-8
@@ -46,6 +46,7 @@ import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -305,7 +306,8 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) {
|
||||
synchronized (regattaCache) {
|
||||
// FIXME Dialog with Lasse by Skype on 2011-06-17:
|
||||
// [6:20:04 PM] Axel Uhl: Lasse, can Event.getCompetitorClassList() ever produce more than one result?
|
||||
@@ -336,7 +338,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
if (result == null) {
|
||||
result = new RegattaImpl(event.getName(), boatClass, trackedRegattaRegistry,
|
||||
// use the low-point system as the default scoring scheme
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), event.getId());
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), event.getId(), raceLogStore);
|
||||
regattaCache.put(key, result);
|
||||
weakRegattaCache.put(event, result);
|
||||
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+") because none found for key "+key);
|
||||
@@ -548,19 +550,19 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
@Override
|
||||
public TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException {
|
||||
return new TracTracRaceTrackerImpl(this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException {
|
||||
return new TracTracRaceTrackerImpl(regatta, this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -576,9 +578,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
@Override
|
||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI,
|
||||
URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||
boolean simulateWithStartTimeNow, WindStore windStore) {
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, RaceLogStore raceLogStore) {
|
||||
return new RaceTrackingConnectivityParametersImpl(paramURL, liveURI, storedURI, startOfTracking, endOfTracking,
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, this);
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, this, raceLogStore);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-3
@@ -9,6 +9,7 @@ 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;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -22,13 +23,14 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
private final TimePoint startOfTracking;
|
||||
private final TimePoint endOfTracking;
|
||||
private final WindStore windStore;
|
||||
private final RaceLogStore raceLogStore;
|
||||
private final DomainFactory domainFactory;
|
||||
private final long delayToLiveInMillis;
|
||||
private final boolean simulateWithStartTimeNow;
|
||||
|
||||
public RaceTrackingConnectivityParametersImpl(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
DomainFactory domainFactory) {
|
||||
DomainFactory domainFactory, RaceLogStore raceLogStore) {
|
||||
super();
|
||||
this.paramURL = paramURL;
|
||||
this.liveURI = liveURI;
|
||||
@@ -37,6 +39,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
this.endOfTracking = endOfTracking;
|
||||
this.delayToLiveInMillis = delayToLiveInMillis;
|
||||
this.windStore = windStore;
|
||||
this.raceLogStore = raceLogStore;
|
||||
this.domainFactory = domainFactory;
|
||||
this.simulateWithStartTimeNow = simulateWithStartTimeNow;
|
||||
}
|
||||
@@ -45,7 +48,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException,
|
||||
FileNotFoundException, URISyntaxException {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
@@ -53,7 +56,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws Exception {
|
||||
RaceTracker tracker = domainFactory.createRaceTracker(regatta, paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
|
||||
+11
-8
@@ -32,6 +32,7 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.AbstractRaceTrackerImpl;
|
||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
@@ -121,18 +122,19 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
|
||||
*/
|
||||
protected TracTracRaceTrackerImpl(DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(KeyValue.setup(paramURL), domainFactory, paramURL, liveURI, storedURI, startOfTracking, endOfTracking,
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
|
||||
private TracTracRaceTrackerImpl(Event tractracEvent, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(tractracEvent, null, domainFactory, paramURL, liveURI, storedURI,
|
||||
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry,
|
||||
raceLogStore);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,10 +145,10 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
|
||||
*/
|
||||
protected TracTracRaceTrackerImpl(Regatta regatta, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(KeyValue.setup(paramURL), regatta, domainFactory, paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -162,7 +164,8 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
|
||||
*/
|
||||
private TracTracRaceTrackerImpl(Event tractracEvent, final Regatta regatta, DomainFactory domainFactory,
|
||||
URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking,
|
||||
long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
super();
|
||||
this.tractracEvent = tractracEvent;
|
||||
@@ -202,7 +205,7 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
|
||||
}
|
||||
// if regatta is still null, no previous assignment of any of the races in this TracTrac event to a Regatta was found;
|
||||
// in this case, create a default regatta based on the TracTrac event data
|
||||
this.regatta = effectiveRegatta == null ? domainFactory.getOrCreateDefaultRegatta(tractracEvent, trackedRegattaRegistry) : effectiveRegatta;
|
||||
this.regatta = effectiveRegatta == null ? domainFactory.getOrCreateDefaultRegatta(tractracEvent, trackedRegattaRegistry, raceLogStore) : effectiveRegatta;
|
||||
trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(this.regatta);
|
||||
receivers = new HashSet<Receiver>();
|
||||
Set<TypeController> typeControllers = new HashSet<TypeController>();
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
|
||||
public interface RaceColumnInSeries extends RaceColumn {
|
||||
Series getSeries();
|
||||
|
||||
Regatta getRegatta();
|
||||
|
||||
RaceColumnIdentifier getRaceColumnIdentifier();
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
|
||||
@@ -26,7 +27,7 @@ public interface Series extends SeriesData {
|
||||
|
||||
Fleet getFleetByName(String fleetName);
|
||||
|
||||
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore);
|
||||
|
||||
void moveRaceColumnUp(String raceColumnName);
|
||||
|
||||
|
||||
+4
-1
@@ -8,6 +8,7 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implements RaceColumn {
|
||||
@@ -15,11 +16,13 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem
|
||||
|
||||
private final Map<Fleet, TrackedRace> trackedRaces;
|
||||
private final Map<Fleet, RaceIdentifier> raceIdentifiers;
|
||||
protected RaceLogStore raceLogStore;
|
||||
|
||||
|
||||
public AbstractRaceColumn() {
|
||||
public AbstractRaceColumn(RaceLogStore raceLogStore) {
|
||||
this.trackedRaces = new HashMap<Fleet, TrackedRace>();
|
||||
this.raceIdentifiers = new HashMap<Fleet, RaceIdentifier>();
|
||||
this.raceLogStore = raceLogStore;
|
||||
|
||||
}
|
||||
|
||||
|
||||
+11
-3
@@ -5,7 +5,10 @@ import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceColumnIdentifierImpl;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -35,7 +38,8 @@ public class RaceColumnInSeriesImpl extends AbstractRaceColumn implements RaceCo
|
||||
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||
* carried out.
|
||||
*/
|
||||
public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
||||
super(raceLogStore);
|
||||
this.name = name;
|
||||
this.series = series;
|
||||
this.trackedRegattaRegistry = trackedRegattaRegistry;
|
||||
@@ -91,8 +95,12 @@ public class RaceColumnInSeriesImpl extends AbstractRaceColumn implements RaceCo
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(Fleet fleet) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return raceLogStore.getRaceLog(getRaceColumnIdentifier(), fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceColumnIdentifier getRaceColumnIdentifier() {
|
||||
return new RaceColumnIdentifierImpl(getRegatta(), getName());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -59,10 +60,10 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
|
||||
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||
* carried out.
|
||||
*/
|
||||
public RegattaImpl(String baseName, BoatClass boatClass, TrackedRegattaRegistry trackedRegattaRegistry, ScoringScheme scoringScheme, Serializable id) {
|
||||
public RegattaImpl(String baseName, BoatClass boatClass, TrackedRegattaRegistry trackedRegattaRegistry, ScoringScheme scoringScheme, Serializable id, RaceLogStore raceLogStore) {
|
||||
this(baseName, boatClass, Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
||||
.singletonList(new FleetImpl("Default")), /* race column names */new ArrayList<String>(),
|
||||
trackedRegattaRegistry)), /* persistent */false, scoringScheme, id);
|
||||
trackedRegattaRegistry, raceLogStore)), /* persistent */false, scoringScheme, id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
@@ -42,7 +43,7 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
* carried out.
|
||||
*/
|
||||
public SeriesImpl(String name, boolean isMedal, Iterable<? extends Fleet> fleets, Iterable<String> raceColumnNames,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
||||
super(name);
|
||||
if (fleets == null || Util.isEmpty(fleets)) {
|
||||
throw new IllegalArgumentException("Series must have at least one fleet");
|
||||
@@ -58,7 +59,7 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
this.isMedal = isMedal;
|
||||
this.raceColumnListeners = new RaceColumnListeners();
|
||||
for (String raceColumnName : raceColumnNames) {
|
||||
addRaceColumn(raceColumnName, trackedRegattaRegistry);
|
||||
addRaceColumn(raceColumnName, trackedRegattaRegistry, raceLogStore);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,8 +106,9 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
* carried out.
|
||||
*/
|
||||
@Override
|
||||
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry);
|
||||
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) {
|
||||
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry, raceLogStore);
|
||||
if (raceColumnListeners.canAddRaceColumnToContainer(result)) {
|
||||
result.addRaceColumnListener(this);
|
||||
raceColumns.add(result);
|
||||
@@ -125,8 +127,9 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||
* carried out.
|
||||
*/
|
||||
private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry);
|
||||
private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) {
|
||||
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry, raceLogStore);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -13,7 +13,6 @@ import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceColumn {
|
||||
private static final long serialVersionUID = -7801617988982540470L;
|
||||
private String name;
|
||||
private RaceLogStore raceLogStore;
|
||||
|
||||
/**
|
||||
* All fleets for which this column can contain a race. This is the maximum set of keys possible for
|
||||
@@ -23,10 +22,9 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
||||
private boolean medalRace;
|
||||
|
||||
public RaceColumnImpl(String name, boolean medalRace, RaceLogStore raceLogStore, Iterable<Fleet> fleets) {
|
||||
super();
|
||||
super(raceLogStore);
|
||||
this.name = name;
|
||||
this.medalRace = medalRace;
|
||||
this.raceLogStore = raceLogStore;
|
||||
List<Fleet> myFleets = new ArrayList<Fleet>();
|
||||
for (Fleet fleet : fleets) {
|
||||
myFleets.add(fleet);
|
||||
|
||||
@@ -8,4 +8,6 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
*/
|
||||
public interface RaceLogStore {
|
||||
RaceLog getRaceLog(Fleet fleet);
|
||||
|
||||
RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet);
|
||||
}
|
||||
+6
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
|
||||
@@ -16,4 +17,9 @@ public class EmptyRaceLogStore implements RaceLogStore {
|
||||
public RaceLog getRaceLog(Fleet fleet) {
|
||||
return new RaceLogImpl("Lock for " + fleet.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
||||
return new RaceLogImpl("Lock for " + identifier.getIdentifier() + "-" + fleet.toString());
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -1,21 +1,21 @@
|
||||
package com.sap.sailing.domain.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.common.Named;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
|
||||
public class RaceColumnIdentifierImpl implements RaceColumnIdentifier {
|
||||
|
||||
private Leaderboard leaderboard;
|
||||
private Named named;
|
||||
private String columnName;
|
||||
|
||||
public RaceColumnIdentifierImpl(Leaderboard leaderboard, String columnName) {
|
||||
this.leaderboard = leaderboard;
|
||||
public RaceColumnIdentifierImpl(Named named, String columnName) {
|
||||
this.named = named;
|
||||
this.columnName = columnName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return String.format("%s %s", leaderboard.getName(), columnName);
|
||||
return String.format("%s-%s", named.getName(), columnName);
|
||||
}
|
||||
|
||||
}
|
||||
+15
-7
@@ -109,6 +109,7 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||
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.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingArchiveConfiguration;
|
||||
@@ -1147,7 +1148,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
new URI(liveURI), new URI(storedURI), new MillisecondsTimePoint(rr.trackingStartTime),
|
||||
new MillisecondsTimePoint(rr.trackingEndTime),
|
||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow);
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + rr.regattaName + "/" + rr.name) {
|
||||
public void run() {
|
||||
@@ -2389,7 +2391,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
final RacesHandle raceHandle = getService().addSwissTimingRace(regattaToAddTo, rr.ID, hostname, port,
|
||||
canSendRequests,
|
||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) {
|
||||
public void run() {
|
||||
@@ -2442,8 +2445,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class),
|
||||
Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
||||
.singletonList(new FleetImpl("Default")), /* race column names */
|
||||
new ArrayList<String>(), getService())), false,
|
||||
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
new ArrayList<String>(), getService(),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory))), false,
|
||||
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
} else {
|
||||
regatta = getService().getRegatta(regattaIdentifier);
|
||||
}
|
||||
@@ -2933,7 +2938,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
public List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<String> columnNames) {
|
||||
List<RaceColumnInSeriesDTO> result = new ArrayList<RaceColumnInSeriesDTO>();
|
||||
for(String columnName: columnNames) {
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
if(raceColumnInSeries != null) {
|
||||
result.add(convertToRaceColumnInSeriesDTO(raceColumnInSeries));
|
||||
}
|
||||
@@ -2944,7 +2950,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
@Override
|
||||
public RaceColumnInSeriesDTO addRaceColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||
RaceColumnInSeriesDTO result = null;
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
if(raceColumnInSeries != null) {
|
||||
result = convertToRaceColumnInSeriesDTO(raceColumnInSeries);
|
||||
}
|
||||
@@ -2980,7 +2987,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
Regatta regatta = getService().apply(
|
||||
new AddSpecificRegatta(regattaName, boatClassName, UUID.randomUUID(),
|
||||
seriesNamesWithFleetNamesAndFleetOrderingAndMedal,
|
||||
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType)));
|
||||
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
return convertToRegattaDTO(regatta);
|
||||
}
|
||||
|
||||
|
||||
+11
-6
@@ -53,6 +53,7 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.impl.CollectionNames;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.AbstractLeaderboardTest;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
@@ -108,7 +109,8 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true);
|
||||
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 }, null);
|
||||
DomainObjectFactory dof = MongoFactory.INSTANCE.getDomainObjectFactory(getMongoService());
|
||||
@@ -149,7 +151,8 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
final String regattaBaseName = "Kieler Woche";
|
||||
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
logColumnsInRegatta(regatta);
|
||||
@@ -361,20 +364,22 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
qualifyingFleets.add(new FleetImpl("Yellow"));
|
||||
qualifyingFleets.add(new FleetImpl("Blue"));
|
||||
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
||||
emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
emptyRaceColumnNames, /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
||||
series.add(qualifyingSeries);
|
||||
|
||||
// -------- final series ------------
|
||||
List<Fleet> finalFleets = new ArrayList<Fleet>();
|
||||
finalFleets.add(new FleetImpl("Gold", 1));
|
||||
finalFleets.add(new FleetImpl("Silver", 2));
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */ false, finalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */ false, finalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
series.add(finalSeries);
|
||||
|
||||
// ------------ medal --------------
|
||||
List<Fleet> medalFleets = new ArrayList<Fleet>();
|
||||
medalFleets.add(new FleetImpl("Medal"));
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */ true, medalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */ true, medalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
series.add(medalSeries);
|
||||
Regatta regatta = new RegattaImpl(regattaBaseName, boatClass, series, persistent, scoringScheme, "123");
|
||||
return regatta;
|
||||
@@ -382,7 +387,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
|
||||
private void addRaceColumnsToSeries(List<String> finalRaceColumnNames, Series finalSeries) {
|
||||
for (String raceColumnName : finalRaceColumnNames) {
|
||||
finalSeries.addRaceColumn(raceColumnName, /* trackedRegattaRegistry */ null);
|
||||
finalSeries.addRaceColumn(raceColumnName, /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-7
@@ -1,6 +1,5 @@
|
||||
package com.sap.sailing.mongodb.test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
@@ -17,13 +16,9 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceColumnIdentifierImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.AbstractTracTracLiveTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
@@ -64,7 +59,8 @@ public class TestStoringAndRetrievingRaceLogsTest extends AbstractTracTracLiveTe
|
||||
@Test
|
||||
public void testStoreAFewRaceLogEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||
EmptyWindStore.INSTANCE,
|
||||
|
||||
+3
-1
@@ -27,6 +27,7 @@ import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.AbstractTracTracLiveTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
@@ -70,7 +71,8 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
|
||||
@Test
|
||||
public void testStoreAFewWindEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||
EmptyWindStore.INSTANCE,
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@ import com.sap.sailing.domain.base.SeriesData;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.server.gateway.serialization.ExtensionJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
@@ -48,7 +49,7 @@ public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSer
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null);
|
||||
null, EmptyRaceLogStore.INSTANCE);
|
||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||
}
|
||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||
|
||||
+24
-2
@@ -38,7 +38,10 @@ import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||
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;
|
||||
@@ -115,6 +118,8 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
|
||||
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";
|
||||
@@ -466,7 +471,7 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
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));
|
||||
getService().addRegatta(jsonURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000);
|
||||
getService().addRegatta(jsonURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000, getRaceLogStore(req));
|
||||
}
|
||||
|
||||
private WindStore getWindStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
||||
@@ -486,11 +491,28 @@ public class AdminApp extends SailingServerHttpServlet {
|
||||
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(
|
||||
MongoFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
MongoFactory.INSTANCE.getDefaultDomainObjectFactory());
|
||||
} else {
|
||||
log("Couldn't find wind store "+raceLogStore+". Using EmptyWindStore 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));
|
||||
getService().addTracTracRace(paramURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000);
|
||||
getService().addTracTracRace(paramURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000, getRaceLogStore(req));
|
||||
}
|
||||
|
||||
private void stopRace(HttpServletRequest req, HttpServletResponse resp) throws MalformedURLException, IOException, InterruptedException {
|
||||
|
||||
+11
-5
@@ -22,6 +22,7 @@ import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
|
||||
public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
@Test
|
||||
@@ -30,7 +31,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
final String boatClassName = "49er";
|
||||
final Iterable<Series> series = Collections.emptyList();
|
||||
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName, UUID.randomUUID(), series,
|
||||
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Thread.sleep(1000);
|
||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -44,13 +46,17 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
final String boatClassName = "49er";
|
||||
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
||||
Series qualification = new SeriesImpl("Qualification", /* isMedal */ false,
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series finals = new SeriesImpl("Finals", /* isMedal */ false,
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series medal = new SeriesImpl("Medal", /* isMedal */ true,
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName,
|
||||
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Thread.sleep(1000);
|
||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
|
||||
+2
-1
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.AbstractTracTracLiveTest;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||
@@ -80,7 +81,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
|
||||
});
|
||||
trackingParams = com.sap.sailing.domain.tractracadapter.DomainFactory.INSTANCE.createTrackingConnectivityParameters(paramURL,
|
||||
liveURI, storedURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */
|
||||
0l, /* simulateWithStartTimeNow */false, EmptyWindStore.INSTANCE);
|
||||
0l, /* simulateWithStartTimeNow */false, EmptyWindStore.INSTANCE, EmptyRaceLogStore.INSTANCE);
|
||||
}
|
||||
|
||||
private void startTracking() throws Exception, InterruptedException {
|
||||
|
||||
+3
-1
@@ -29,6 +29,7 @@ import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
@@ -61,7 +62,8 @@ public class RaceTrackerStartStopTest {
|
||||
racingEventService = new RacingEventServiceImplMock();
|
||||
boatClass = new BoatClassImpl(BOATCLASSNAME, /* typicallyStartsUpwind */ true);
|
||||
regatta = new RegattaImpl(EVENTNAME, boatClass, /* trackedRegattaRegistry */ null,
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), UUID.randomUUID());
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), UUID.randomUUID(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
racingEventService.getEventsByName().put(EVENTNAME, regatta);
|
||||
TrackedRegatta trackedRegatta1 = racingEventService.getOrCreateTrackedRegatta(regatta);
|
||||
racingEventService.getEventsByNameMap().put(EVENTNAME, regatta);
|
||||
|
||||
+7
-3
@@ -20,6 +20,7 @@ import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.RaceListener;
|
||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -60,7 +61,8 @@ public class RaceTrackerTest {
|
||||
public void setUp() throws Exception {
|
||||
service = new RacingEventServiceImpl();
|
||||
logger.info("Calling service.addTracTracRace");
|
||||
raceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
raceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
logger.info("Calling raceHandle.getRaces()");
|
||||
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
||||
logger.info("Obtained races: "+races);
|
||||
@@ -116,7 +118,8 @@ public class RaceTrackerTest {
|
||||
RaceDefinition oldRaceDefinition = oldTrackedRace.getRace();
|
||||
assertTrue(!Util.isEmpty(raceHandle.getRegatta().getAllRaces()));
|
||||
service.removeRegatta(raceHandle.getRegatta());
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
TrackedRegatta newTrackedRegatta = myRaceHandle.getTrackedRegatta();
|
||||
assertNotSame(oldTrackedRegatta, newTrackedRegatta);
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedRegatta);
|
||||
@@ -140,7 +143,8 @@ public class RaceTrackerTest {
|
||||
logger.entering(getClass().getName(), "testTrackingSameRaceWithoutStopping");
|
||||
TrackedRegatta oldTrackedRegatta = raceHandle.getTrackedRegatta();
|
||||
TrackedRace oldTrackedRace = getTrackedRace(oldTrackedRegatta);
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
TrackedRegatta newTrackedEvent = myRaceHandle.getTrackedRegatta();
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedEvent);
|
||||
// expecting a new tracked race to be created when starting over with tracking
|
||||
|
||||
@@ -39,6 +39,7 @@ import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardRegistry;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.tracking.RaceListener;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
@@ -109,7 +110,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
* if a race definition is not received for a race of this event within this time, the race tracker for
|
||||
* that race is stopped; use -1 to wait forever
|
||||
*/
|
||||
Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds)
|
||||
Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds, RaceLogStore raceLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, IOException, ParseException,
|
||||
org.json.simple.parser.ParseException, Exception;
|
||||
|
||||
@@ -135,7 +136,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
* if the race definition is not received for the race within this time, the race tracker for
|
||||
* that race is stopped; use -1 to wait forever
|
||||
*/
|
||||
RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds)
|
||||
RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds, RaceLogStore raceLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
@@ -152,7 +153,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
*/
|
||||
RacesHandle addTracTracRace(RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint trackingStartTime, TimePoint trackingEndTime, WindStore windStore,
|
||||
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow)
|
||||
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow, RaceLogStore raceLogStore)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
@@ -287,7 +288,8 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
* to add the races to. Otherwise, a default regatta as described above will be created and used.
|
||||
*/
|
||||
RacesHandle addSwissTimingRace(RegattaIdentifier regattaToAddTo, String raceID, String hostname, int port,
|
||||
boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds) throws InterruptedException, UnknownHostException,
|
||||
boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds, RaceLogStore raceLogStore)
|
||||
throws InterruptedException, UnknownHostException,
|
||||
IOException, ParseException, Exception;
|
||||
|
||||
SwissTimingFactory getSwissTimingFactory();
|
||||
@@ -373,7 +375,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
|
||||
Regatta getOrCreateRegatta(String regattaName, String boatClassName, Serializable id);
|
||||
|
||||
Regatta createRegatta(String baseName, String boatClassName, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme);
|
||||
Regatta createRegatta(String baseName, String boatClassName, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, RaceLogStore raceLogStore);
|
||||
|
||||
/**
|
||||
* Adds <code>raceDefinition</code> to the {@link Regatta} such that it will appear in {@link Regatta#getAllRaces()}
|
||||
|
||||
+16
-13
@@ -74,6 +74,7 @@ import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceColumnIdentifierImpl;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||
@@ -604,12 +605,13 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds,
|
||||
RaceLogStore raceLogStore) throws Exception {
|
||||
JSONService jsonService = getTracTracDomainFactory().parseJSONURL(jsonURL);
|
||||
Regatta regatta = null;
|
||||
for (RaceRecord rr : jsonService.getRaceRecords()) {
|
||||
URL paramURL = rr.getParamURL();
|
||||
regatta = addTracTracRace(paramURL, liveURI, storedURI, windStore, timeoutInMilliseconds).getRegatta();
|
||||
regatta = addTracTracRace(paramURL, liveURI, storedURI, windStore, timeoutInMilliseconds, raceLogStore).getRegatta();
|
||||
}
|
||||
return regatta;
|
||||
}
|
||||
@@ -618,7 +620,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
public Regatta getOrCreateRegatta(String baseEventName, String boatClassName, Serializable id) {
|
||||
Regatta regatta = new RegattaImpl(baseEventName, getBaseDomainFactory().getOrCreateBoatClass(
|
||||
boatClassName), this, com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
RegattaImpl.getFullName(baseEventName, boatClassName));
|
||||
RegattaImpl.getFullName(baseEventName, boatClassName),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
Regatta result = regattasByName.get(regatta.getName());
|
||||
if (result == null) {
|
||||
result = regatta;
|
||||
@@ -630,11 +633,11 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
@Override
|
||||
public Regatta createRegatta(String baseEventName, String boatClassName,
|
||||
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme) {
|
||||
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, RaceLogStore raceLogStore) {
|
||||
Regatta regatta = new RegattaImpl(baseEventName,
|
||||
getBaseDomainFactory().getOrCreateBoatClass(boatClassName), series, persistent, scoringScheme, id);
|
||||
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this);
|
||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta, raceLogStore);
|
||||
if (persistent) {
|
||||
updateStoredRegatta(regatta);
|
||||
}
|
||||
@@ -664,20 +667,20 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
@Override
|
||||
public RacesHandle addSwissTimingRace(RegattaIdentifier regattaToAddTo, String raceID, String hostname,
|
||||
int port, boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||
int port, boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds, RaceLogStore raceLogStore) throws Exception {
|
||||
return addRace(
|
||||
regattaToAddTo,
|
||||
swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence), windStore, timeoutInMilliseconds);
|
||||
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence, raceLogStore), windStore, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore,
|
||||
long timeoutInMilliseconds) throws Exception {
|
||||
long timeoutInMilliseconds, RaceLogStore raceLogStore) throws Exception {
|
||||
return addRace(
|
||||
/* regattaToAddTo */null, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
||||
/* startOfTracking */null,
|
||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore), windStore,
|
||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore, raceLogStore), windStore,
|
||||
timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@@ -768,14 +771,14 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
* the series of this regatta must not have any {@link Series#getRaceColumns() race columns associated
|
||||
* (yet)}.
|
||||
*/
|
||||
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta) {
|
||||
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta, RaceLogStore raceLogStore) {
|
||||
if (!regattasByName.containsKey(regatta.getName())) {
|
||||
logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this);
|
||||
regattasByName.put(regatta.getName(), regatta);
|
||||
regatta.addRegattaListener(this);
|
||||
replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
||||
.getBoatClass().getName(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta),
|
||||
regatta.isPersistent(), regatta.getScoringScheme()));
|
||||
regatta.isPersistent(), regatta.getScoringScheme(), raceLogStore));
|
||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||
@@ -828,9 +831,9 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
@Override
|
||||
public RacesHandle addTracTracRace(RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI,
|
||||
URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking,
|
||||
WindStore windStore, long timeoutInMilliseconds, boolean simulateWithStartTimeNow) throws Exception {
|
||||
WindStore windStore, long timeoutInMilliseconds, boolean simulateWithStartTimeNow, RaceLogStore raceLogStore) throws Exception {
|
||||
return addRace(regattaToAddTo, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore), windStore, timeoutInMilliseconds);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, raceLogStore), windStore, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
private void ensureRegattaIsObservedForDefaultLeaderboardAndAutoLeaderboardLinking(DynamicTrackedRegatta trackedRegatta) {
|
||||
|
||||
+6
-2
@@ -3,14 +3,18 @@ package com.sap.sailing.server.operationaltransformation;
|
||||
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColumnInSeries> {
|
||||
private static final long serialVersionUID = 8987540636040301063L;
|
||||
|
||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||
private RaceLogStore raceLogStore;
|
||||
|
||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, RaceLogStore raceLogStore) {
|
||||
super(regattaIdentifier, seriesName, columnName);
|
||||
this.raceLogStore = raceLogStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -18,7 +22,7 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColum
|
||||
RaceColumnInSeries result = null;
|
||||
Series series = getSeries(toState);
|
||||
if (series != null) {
|
||||
result = series.addRaceColumn(getColumnName(), toState);
|
||||
result = series.addRaceColumn(getColumnName(), toState, raceLogStore);
|
||||
if(result != null && series.getRegatta().isPersistent()) {
|
||||
toState.updateStoredRegatta(series.getRegatta());
|
||||
}
|
||||
|
||||
+6
-3
@@ -15,6 +15,7 @@ import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
@@ -24,20 +25,22 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation {
|
||||
private final Map<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> seriesNamesWithFleetNamesAndFleetOrderingAndMedal;
|
||||
private final boolean persistent;
|
||||
private final ScoringScheme scoringScheme;
|
||||
private final RaceLogStore raceLogStore;
|
||||
|
||||
public AddSpecificRegatta(String regattaName, String boatClassName, Serializable id,
|
||||
Map<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> seriesNamesWithFleetNamesAndFleetOrdering,
|
||||
boolean persistent, ScoringScheme scoringScheme) {
|
||||
boolean persistent, ScoringScheme scoringScheme, RaceLogStore raceLogStore) {
|
||||
super(regattaName, boatClassName, id);
|
||||
this.seriesNamesWithFleetNamesAndFleetOrderingAndMedal = seriesNamesWithFleetNamesAndFleetOrdering;
|
||||
this.persistent = persistent;
|
||||
this.scoringScheme = scoringScheme;
|
||||
this.raceLogStore = raceLogStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
||||
return toState.createRegatta(getBaseEventName(), getBoatClassName(), getId(), createSeries(toState),
|
||||
persistent, scoringScheme);
|
||||
persistent, scoringScheme, raceLogStore);
|
||||
}
|
||||
|
||||
private Iterable<? extends Series> createSeries(TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
@@ -45,7 +48,7 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation {
|
||||
for (Map.Entry<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> e : seriesNamesWithFleetNamesAndFleetOrderingAndMedal.entrySet()) {
|
||||
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
||||
Series s = new SeriesImpl(e.getKey(), /* isMedal */e.getValue().getB(), createFleets(e.getValue().getA()),
|
||||
emptyRaceColumnNamesList, trackedRegattaRegistry);
|
||||
emptyRaceColumnNamesList, trackedRegattaRegistry, raceLogStore);
|
||||
result.add(s);
|
||||
}
|
||||
return result;
|
||||
|
||||
Reference in new issue
Block a user