mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
Removed RaceLogStore from RaceColumn implementations and all subsequent
classes
This commit is contained in:
1 parent
e03d4cfe0c
commit
ddea60f570
68 files changed
+331
-594
No files matched your search
+2
-3
@@ -4,7 +4,6 @@ import java.util.Map;
|
||||
|
||||
import com.mongodb.DBObject;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
||||
@@ -13,8 +12,8 @@ import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardRegistry;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
|
||||
@@ -86,5 +85,5 @@ public interface DomainObjectFactory {
|
||||
|
||||
Map<String, Regatta> loadRaceIDToRegattaAssociations(RegattaRegistry regattaRegistry);
|
||||
|
||||
RaceLog loadRaceLog(RaceColumnIdentifier identifier, Fleet fleet);
|
||||
RaceLog loadRaceLog(RaceLogIdentifier identifier);
|
||||
}
|
||||
-4
@@ -1,7 +1,6 @@
|
||||
package com.sap.sailing.domain.persistence;
|
||||
|
||||
import com.sap.sailing.domain.persistence.impl.MongoRaceLogStoreFactoryImpl;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
|
||||
public interface MongoRaceLogStoreFactory {
|
||||
@@ -11,8 +10,5 @@ public interface MongoRaceLogStoreFactory {
|
||||
* Gets the default Mongo store based on the properties mongo.hostname[=localhost], mongo.port[=27017]
|
||||
* and mongo.dbName[=<contents of constant {@link #DEFAULT_DB_NAME}>] specified in the bundle context
|
||||
*/
|
||||
MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory,
|
||||
RaceColumnIdentifier raceColumnIdentifier);
|
||||
|
||||
MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory);
|
||||
}
|
||||
+4
-13
@@ -73,18 +73,15 @@ import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.racelog.Flags;
|
||||
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.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceColumnIdentifierImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
@@ -364,12 +361,9 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
fleets.add(result.getFleet(null));
|
||||
}
|
||||
String columnName = (String) dbRaceColumn.get(FieldNames.LEADERBOARD_COLUMN_NAME.name());
|
||||
RaceColumnIdentifier columnIdentifier = new RaceColumnIdentifierImpl(result.getName(), columnName);
|
||||
|
||||
RaceColumn raceColumn = result.addRaceColumn(columnName,
|
||||
(Boolean) dbRaceColumn.get(FieldNames.LEADERBOARD_IS_MEDAL_RACE_COLUMN.name()),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(MongoFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
MongoFactory.INSTANCE.getDefaultDomainObjectFactory(), columnIdentifier),
|
||||
fleets.toArray(new Fleet[0]));
|
||||
for (Map.Entry<String, RaceIdentifier> e : raceIdentifiers.entrySet()) {
|
||||
raceColumn.setRaceIdentifier(fleetsByName.get(e.getKey()), e.getValue());
|
||||
@@ -828,9 +822,7 @@ 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,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(
|
||||
MongoFactory.INSTANCE.getDefaultMongoObjectFactory(), this));
|
||||
Series series = new SeriesImpl(name, isMedal, fleetsByName.values(), raceColumnNames, trackedRegattaRegistry);
|
||||
loadRaceColumnRaceLinks(dbRaceColumns, series);
|
||||
return series;
|
||||
}
|
||||
@@ -910,12 +902,11 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog loadRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
||||
public RaceLog loadRaceLog(RaceLogIdentifier identifier) {
|
||||
RaceLog result = new RaceLogImpl(RaceLogImpl.class.getSimpleName());
|
||||
try {
|
||||
BasicDBObject query = new BasicDBObject();
|
||||
query.put(FieldNames.RACE_COLUMN_IDENTIFIER.name(), identifier.getIdentifier());
|
||||
query.put(FieldNames.FLEET_NAME.name(), fleet.getName());
|
||||
query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), identifier.getIdentifier());
|
||||
DBCollection raceLog = database.getCollection(CollectionNames.RACE_LOGS.name());
|
||||
for (DBObject o : raceLog.find(query)) {
|
||||
RaceLogEvent raceLogEvent = loadRaceLogEvent((DBObject) o.get(FieldNames.RACE_LOG_EVENT.name()));
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@ public enum FieldNames {
|
||||
RACE_ID_AS_STRING,
|
||||
|
||||
// race log
|
||||
RACE_COLUMN_IDENTIFIER,
|
||||
RACE_LOG_IDENTIFIER,
|
||||
RACE_LOG_EVENT, RACE_LOG_EVENT_PASS_ID, RACE_LOG_EVENT_ID, RACE_LOG_EVENT_INVOLVED_BOATS, RACE_LOG_EVENT_FLAG_UPPER, RACE_LOG_EVENT_FLAG_LOWER,
|
||||
RACE_LOG_EVENT_FLAG_DISPLAYED, RACE_LOG_EVENT_START_TIME, RACE_LOG_EVENT_CLASS, RACE_LOG_EVENT_NEXT_STATUS;
|
||||
}
|
||||
+6
-11
@@ -37,9 +37,9 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.tracking.Positioned;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -478,31 +478,26 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
|
||||
public DBCollection getRaceLogCollection() {
|
||||
DBCollection result = database.getCollection(CollectionNames.RACE_LOGS.name());
|
||||
result.ensureIndex(new BasicDBObject(FieldNames.RACE_COLUMN_IDENTIFIER.name(), null));
|
||||
result.ensureIndex(new BasicDBObject(FieldNames.RACE_LOG_IDENTIFIER.name(), null));
|
||||
return result;
|
||||
}
|
||||
|
||||
public DBObject storeRaceLogEntry(RaceColumnIdentifier raceColumnIdentifier, Fleet fleet, RaceLogFlagEvent flagEvent) {
|
||||
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogFlagEvent flagEvent) {
|
||||
BasicDBObject result = new BasicDBObject();
|
||||
storeRaceColumnIdentifierAndFleetName(raceColumnIdentifier, fleet, result);
|
||||
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), raceLogIdentifier.getIdentifier());
|
||||
|
||||
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFlagEvent(flagEvent));
|
||||
return result;
|
||||
}
|
||||
|
||||
public DBObject storeRaceLogEntry(RaceColumnIdentifier raceColumnIdentifier, Fleet fleet, RaceLogStartTimeEvent startTimeEvent) {
|
||||
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogStartTimeEvent startTimeEvent) {
|
||||
BasicDBObject result = new BasicDBObject();
|
||||
storeRaceColumnIdentifierAndFleetName(raceColumnIdentifier, fleet, result);
|
||||
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), raceLogIdentifier.getIdentifier());
|
||||
|
||||
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogStartTimeEvent(startTimeEvent));
|
||||
return result;
|
||||
}
|
||||
|
||||
private void storeRaceColumnIdentifierAndFleetName(RaceColumnIdentifier raceColumnIdentifier, Fleet fleet, BasicDBObject result) {
|
||||
result.put(FieldNames.RACE_COLUMN_IDENTIFIER.name(), raceColumnIdentifier.getIdentifier());
|
||||
result.put(FieldNames.FLEET_NAME.name(), fleet.getName());
|
||||
}
|
||||
|
||||
private Object storeRaceLogStartTimeEvent(RaceLogStartTimeEvent startTimeEvent) {
|
||||
DBObject result = new BasicDBObject();
|
||||
storeTimed(startTimeEvent, result);
|
||||
|
||||
+6
-10
@@ -3,35 +3,31 @@ package com.sap.sailing.domain.persistence.impl;
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.DBCollection;
|
||||
import com.mongodb.DBObject;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
|
||||
public class MongoRaceLogListener implements RaceLogEventVisitor {
|
||||
|
||||
private final RaceColumnIdentifier raceColumnIdentifier;
|
||||
private final Fleet fleet;
|
||||
private final RaceLogIdentifier raceLogIdentifier;
|
||||
private final MongoObjectFactoryImpl mongoObjectFactory;
|
||||
private final DBCollection raceLogsCollection;
|
||||
|
||||
public MongoRaceLogListener(RaceColumnIdentifier identifier, Fleet fleet,
|
||||
MongoObjectFactory mongoObjectFactory, DB database) {
|
||||
public MongoRaceLogListener(RaceLogIdentifier identifier, MongoObjectFactory mongoObjectFactory, DB database) {
|
||||
super();
|
||||
this.raceColumnIdentifier = identifier;
|
||||
this.raceLogIdentifier = identifier;
|
||||
this.mongoObjectFactory = (MongoObjectFactoryImpl) mongoObjectFactory;
|
||||
this.raceLogsCollection = this.mongoObjectFactory.getRaceLogCollection();
|
||||
this.fleet = fleet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFlagEvent event) {
|
||||
DBObject flagEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceColumnIdentifier, fleet, event);
|
||||
DBObject flagEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||
raceLogsCollection.insert(flagEventTrackEntry);
|
||||
}
|
||||
|
||||
@@ -47,7 +43,7 @@ public class MongoRaceLogListener implements RaceLogEventVisitor {
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartTimeEvent event) {
|
||||
DBObject startTimeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceColumnIdentifier, fleet, event);
|
||||
DBObject startTimeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||
raceLogsCollection.insert(startTimeEventTrackEntry);
|
||||
}
|
||||
|
||||
|
||||
+1
-8
@@ -5,7 +5,6 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStore;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
|
||||
public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
||||
private final DB db;
|
||||
@@ -14,15 +13,9 @@ public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory,DomainObjectFactory domainObjectFactory,
|
||||
RaceColumnIdentifier raceColumnIdentifier) {
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, raceColumnIdentifier);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) {
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, null);
|
||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory);
|
||||
}
|
||||
|
||||
}
|
||||
+7
-23
@@ -4,47 +4,31 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.mongodb.DB;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoRaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
|
||||
public class MongoRaceLogStoreImpl extends EmptyRaceLogStore implements MongoRaceLogStore {
|
||||
private transient final DB db;
|
||||
private final MongoObjectFactory mongoObjectFactory;
|
||||
private final DomainObjectFactory domainObjectFactory;
|
||||
private final RaceColumnIdentifier identifier;
|
||||
private final Map<Fleet, RaceLog> raceLogCache;
|
||||
private final Map<RaceLogIdentifier, RaceLog> raceLogCache;
|
||||
|
||||
public MongoRaceLogStoreImpl(DB db, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory,
|
||||
RaceColumnIdentifier identifier) {
|
||||
public MongoRaceLogStoreImpl(DB db, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) {
|
||||
this.db = db;
|
||||
this.mongoObjectFactory = mongoObjectFactory;
|
||||
this.domainObjectFactory = domainObjectFactory;
|
||||
this.identifier = identifier;
|
||||
this.raceLogCache = new HashMap<Fleet, RaceLog>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(Fleet fleet) {
|
||||
return getRaceLog(identifier, fleet);
|
||||
this.raceLogCache = new HashMap<RaceLogIdentifier, RaceLog>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
||||
if (identifier == null)
|
||||
return null;
|
||||
public RaceLog getRaceLog(RaceLogIdentifier identifier) {
|
||||
RaceLog log;
|
||||
if (!raceLogCache.containsKey(fleet)) {
|
||||
log = domainObjectFactory.loadRaceLog(identifier, fleet);
|
||||
log.addListener(new MongoRaceLogListener(identifier, fleet, mongoObjectFactory, db));
|
||||
raceLogCache.put(fleet, log);
|
||||
} else {
|
||||
log = raceLogCache.get(fleet);
|
||||
}
|
||||
log = domainObjectFactory.loadRaceLog(identifier);
|
||||
log.addListener(new MongoRaceLogListener(identifier, mongoObjectFactory, db));
|
||||
return log;
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -28,7 +28,6 @@ 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;
|
||||
@@ -337,7 +336,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, EmptyRaceLogStore.INSTANCE);
|
||||
CLIENT_PORT, false, emptyWindStore, -1);
|
||||
raceHandles.add(raceHandle);
|
||||
if (connector == null) {
|
||||
connector = racingEventService.getSwissTimingFactory().getOrCreateSailMasterConnector("localhost",
|
||||
|
||||
+3
-6
@@ -17,7 +17,6 @@ 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;
|
||||
@@ -42,7 +41,7 @@ public class SimpleDomainFactoryTest {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
final String raceID = "SAX920103";
|
||||
RaceDefinition raceDefinition = domainFactory.createRaceDefinition(domainFactory.getOrCreateDefaultRegatta(raceID,
|
||||
new RacingEventServiceImpl(), EmptyRaceLogStore.INSTANCE),
|
||||
new RacingEventServiceImpl()),
|
||||
new Race() {
|
||||
@Override
|
||||
public String getDescription() {
|
||||
@@ -93,8 +92,7 @@ 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",
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
Race race = new RaceImpl("1234", "Race 1234");
|
||||
Iterable<Competitor> competitors = Collections.emptyList();
|
||||
StartList startList = new StartListImpl("1234", competitors);
|
||||
@@ -119,8 +117,7 @@ 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",
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
Race race = new RaceImpl("1234", "Race 1234");
|
||||
Iterable<Competitor> competitors = Collections.emptyList();
|
||||
StartList startList = new StartListImpl("1234", competitors);
|
||||
|
||||
+2
-3
@@ -11,7 +11,6 @@ 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;
|
||||
@@ -26,7 +25,7 @@ public interface DomainFactory {
|
||||
|
||||
com.sap.sailing.domain.base.DomainFactory getBaseDomainFactory();
|
||||
|
||||
Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore);
|
||||
Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
|
||||
Nationality getOrCreateNationality(String threeLetterIOCCode);
|
||||
|
||||
@@ -51,7 +50,7 @@ public interface DomainFactory {
|
||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||
boolean canSendRequests, long delayToLiveInMillis,
|
||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore);
|
||||
RaceSpecificMessageLoader messageLoader);
|
||||
|
||||
BoatClass getOrCreateBoatClassFromRaceID(String raceID);
|
||||
|
||||
|
||||
+1
-3
@@ -6,7 +6,6 @@ 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;
|
||||
@@ -52,8 +51,7 @@ 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,
|
||||
RaceLogStore raceLogStore) 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) 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,
|
||||
|
||||
+4
-5
@@ -30,7 +30,6 @@ 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;
|
||||
@@ -99,14 +98,14 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
||||
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
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, raceLogStore);
|
||||
getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), raceID);
|
||||
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+")");
|
||||
raceIDToRegattaCache.put(raceID, result);
|
||||
}
|
||||
@@ -309,9 +308,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, RaceLogStore raceLogStore) {
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
return new SwissTimingTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||
swissTimingFactory, domainFactory, windStore, messageLoader, raceLogStore);
|
||||
swissTimingFactory, domainFactory, windStore, messageLoader);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-3
@@ -9,7 +9,6 @@ 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;
|
||||
@@ -81,10 +80,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, RaceLogStore raceLogStore) throws InterruptedException, UnknownHostException, IOException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws InterruptedException, UnknownHostException, IOException,
|
||||
ParseException {
|
||||
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, windStore, domainFactory, this, messageLoader,
|
||||
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis, raceLogStore);
|
||||
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-3
@@ -24,7 +24,6 @@ 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;
|
||||
@@ -75,9 +74,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, RaceLogStore raceLogStore) throws InterruptedException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, boolean canSendRequests, long delayToLiveInMillis) throws InterruptedException,
|
||||
UnknownHostException, IOException, ParseException {
|
||||
this(domainFactory.getOrCreateDefaultRegatta(raceID, trackedRegattaRegistry, raceLogStore), raceID, hostname, port, windStore, domainFactory, factory,
|
||||
this(domainFactory.getOrCreateDefaultRegatta(raceID, trackedRegattaRegistry), raceID, hostname, port, windStore, domainFactory, factory,
|
||||
messageLoader, trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||
}
|
||||
|
||||
|
||||
+2
-5
@@ -1,7 +1,6 @@
|
||||
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;
|
||||
@@ -18,13 +17,12 @@ 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, RaceLogStore raceLogStore) {
|
||||
RaceSpecificMessageLoader messageLoader) {
|
||||
super();
|
||||
this.hostname = hostname;
|
||||
this.port = port;
|
||||
@@ -34,14 +32,13 @@ 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, raceLogStore);
|
||||
domainFactory, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-2
@@ -35,7 +35,6 @@ 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;
|
||||
@@ -301,7 +300,7 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter {
|
||||
}
|
||||
|
||||
private void createRace() {
|
||||
final Regatta myRegatta = regatta != null ? regatta : domainFactory.getOrCreateDefaultRegatta(currentRaceID, trackedRegattaRegistry, EmptyRaceLogStore.INSTANCE);
|
||||
final Regatta myRegatta = regatta != null ? regatta : domainFactory.getOrCreateDefaultRegatta(currentRaceID, trackedRegattaRegistry);
|
||||
RaceDefinition race = domainFactory.createRaceDefinition(myRegatta,
|
||||
currentRaceID, competitorsPerRaceID.get(currentRaceID), currentCourseDefinition);
|
||||
racePerRaceID.put(currentRaceID, race);
|
||||
|
||||
+1
-2
@@ -31,7 +31,6 @@ 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;
|
||||
@@ -70,7 +69,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, EmptyRaceLogStore.INSTANCE);
|
||||
domainRegatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
trackedRegatta = new DynamicTrackedRegattaImpl(domainRegatta);
|
||||
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
||||
receivers.add(new RaceCourseReceiver(domainFactory, trackedRegatta, getTracTracEvent(),
|
||||
|
||||
+3
-4
@@ -23,7 +23,6 @@ import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.ReceiverType;
|
||||
|
||||
@@ -43,20 +42,20 @@ public class LeaderboardForKielWeekTest extends OnlineTracTracBasedTest {
|
||||
MillisecondsTimePoint now = MillisecondsTimePoint.now();
|
||||
loadRace("357c700a-9d9a-11e0-85be-406186cbf87c"); // 505 Race 2
|
||||
Competitor hasso = getCompetitorByName("Dr.Plattner");
|
||||
RaceColumn column = leaderboard.addRace(getTrackedRace(), "Test Race 1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
RaceColumn column = leaderboard.addRace(getTrackedRace(), "Test Race 1", /* medalRace */ false, defaultFleet);
|
||||
assertEquals(21, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
||||
Pair<Competitor, RaceColumn> key = new Pair<Competitor, RaceColumn>(hasso, column);
|
||||
assertEquals(21, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
||||
assertEquals(21, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
||||
loadRace("e876c3a0-9da8-11e0-85be-406186cbf87c"); // 505 Race 3
|
||||
column = leaderboard.addRace(getTrackedRace(), "Test Race 2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
column = leaderboard.addRace(getTrackedRace(), "Test Race 2", /* medalRace */ false, defaultFleet);
|
||||
key = new Pair<Competitor, RaceColumn>(hasso, column);
|
||||
// In Race 3, Hasso ranked 31st
|
||||
assertEquals(52, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
||||
assertEquals(31, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
||||
assertEquals(31, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
||||
loadRace("7c666e50-9dde-11e0-85be-406186cbf87c"); // 505 Race 4
|
||||
column = leaderboard.addRace(getTrackedRace(), "Test Race 3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
column = leaderboard.addRace(getTrackedRace(), "Test Race 3", /* medalRace */ false, defaultFleet);
|
||||
key = new Pair<Competitor, RaceColumn>(hasso, column);
|
||||
// now the second race is discarded because Hasso ranked worst compared to the other two; in race 4 he ranked 11th
|
||||
assertEquals(32, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
||||
|
||||
+9
-10
@@ -31,7 +31,6 @@ import com.sap.sailing.domain.leaderboard.impl.FlexibleLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -97,8 +96,8 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
final String columnName = "abc";
|
||||
setupRaces(1, 0);
|
||||
|
||||
leaderboard.addRaceColumn(columnName, /* medalRace */ true, EmptyRaceLogStore.INSTANCE);
|
||||
leaderboard.addRace(testRaces.iterator().next(), columnName, /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
leaderboard.addRaceColumn(columnName, /* medalRace */ true);
|
||||
leaderboard.addRace(testRaces.iterator().next(), columnName, /* medalRace */ false, defaultFleet);
|
||||
assertTrue(leaderboard.getRaceColumnByName(columnName).isMedalRace());
|
||||
}
|
||||
|
||||
@@ -123,7 +122,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
RaceColumn bestScoringRaceColumn = null;
|
||||
for (TrackedRace race : testRaces) {
|
||||
i++;
|
||||
RaceColumn raceColumn = leaderboard.addRace(race, "Test Race " + i, /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
RaceColumn raceColumn = leaderboard.addRace(race, "Test Race " + i, /* medalRace */ false, defaultFleet);
|
||||
raceColumnsInLeaderboard.put(race, raceColumn);
|
||||
if (race.getRank(competitor) < bestScore) {
|
||||
bestScore = race.getRank(competitor);
|
||||
@@ -152,7 +151,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl("Test Leaderboard", scoreCorrection, new ResultDiscardingRuleImpl(
|
||||
new int[] { 2 }), new LowPoint(), null);
|
||||
Fleet defaultFleet = leaderboard.getFleet(null);
|
||||
leaderboard.addRace(testRace, "R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
leaderboard.addRace(testRace, "R1", /* medalRace */ false, defaultFleet);
|
||||
assertEquals(1., leaderboard.getTotalPoints(competitor, now), 0.00000001);
|
||||
assertEquals(1., leaderboard.getTotalPoints(c2, now), 0.00000001);
|
||||
assertEquals(1., leaderboard.getTotalPoints(c3, now), 0.00000001);
|
||||
@@ -181,9 +180,9 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl("Test Leaderboard", scoreCorrection, new ResultDiscardingRuleImpl(
|
||||
new int[] { 2 }), new LowPoint(), null);
|
||||
Fleet defaultFleet = leaderboard.getFleet(null);
|
||||
RaceColumn r1 = leaderboard.addRace(testRace, "R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
RaceColumn r1 = leaderboard.addRace(testRace, "R1", /* medalRace */ false, defaultFleet);
|
||||
raceColumnsInLeaderboard.put(testRace, r1);
|
||||
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false, defaultFleet);
|
||||
scoreCorrection.setMaxPointsReason(competitor, r2, MaxPointsReason.DND); // non-discardable disqualification
|
||||
// assert that max points were given before discarding...
|
||||
assertEquals(4.0, leaderboard.getEntry(competitor, r2, MillisecondsTimePoint.now()).getNetPoints(), 0.000000001);
|
||||
@@ -214,7 +213,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
RaceColumn bestScoringRaceColumn = null;
|
||||
for (TrackedRace race : testRaces) {
|
||||
i++;
|
||||
RaceColumn raceColumn = leaderboard.addRace(race, "Test Race " + i, /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
||||
RaceColumn raceColumn = leaderboard.addRace(race, "Test Race " + i, /* medalRace */ false, defaultFleet);
|
||||
raceColumnsInLeaderboard.put(race, raceColumn);
|
||||
if (race.getRank(competitor) < bestScore) {
|
||||
bestScore = race.getRank(competitor);
|
||||
@@ -241,12 +240,12 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
||||
i++;
|
||||
raceColumnsInLeaderboard.put(race, leaderboard.addRace(race, "Test Race "+i,
|
||||
/* medalRace */ numberOfUntrackedRaces == 0 && addOneMedalRace && i == testRaces.size(),
|
||||
EmptyRaceLogStore.INSTANCE, defaultFleet));
|
||||
defaultFleet));
|
||||
}
|
||||
// add a few race columns not yet connected to a tracked race
|
||||
for (int j=0; j<numberOfUntrackedRaces; j++) {
|
||||
i++;
|
||||
leaderboard.addRaceColumn("Test Race "+i, /* medalRace */ addOneMedalRace && j == numberOfUntrackedRaces-1, EmptyRaceLogStore.INSTANCE);
|
||||
leaderboard.addRaceColumn("Test Race "+i, /* medalRace */ addOneMedalRace && j == numberOfUntrackedRaces-1);
|
||||
}
|
||||
if (carry != null) {
|
||||
leaderboard.setCarriedPoints(competitor, carry);
|
||||
|
||||
+9
-12
@@ -48,7 +48,6 @@ import com.sap.sailing.domain.leaderboard.impl.RegattaLeaderboardImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -760,25 +759,25 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
||||
FlexibleLeaderboard leaderboard1 = new FlexibleLeaderboardImpl("Leaderboard 1", new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||
leaderboard1.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f1)), "R1", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
leaderboard1.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f2)), "R2", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
assertTrue(leaderboard1.getScoringScheme().getScoreComparator(/* nullScoresAreBetter */ false).compare(
|
||||
leaderboard1.getTotalPoints(c[0], later), leaderboard1.getTotalPoints(c[3], later)) < 0); // c0 better than c3
|
||||
FlexibleLeaderboard leaderboard2 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||
leaderboard2.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f3)), "R1", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
leaderboard2.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f4)), "R2", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
assertTrue(leaderboard2.getScoringScheme().getScoreComparator(/* nullScoresAreBetter */ false).compare(
|
||||
leaderboard2.getTotalPoints(c[3], later), leaderboard2.getTotalPoints(c[0], later)) < 0); // c3 better than c0
|
||||
FlexibleLeaderboard leaderboard3 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||
leaderboard3.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f5)), "R1", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
leaderboard3.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f6)), "R2", /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard1.getFleet(null));
|
||||
leaderboard1.getFleet(null));
|
||||
assertTrue(leaderboard3.getCompetitorsFromBestToWorst(later).indexOf(c[3]) <
|
||||
leaderboard3.getCompetitorsFromBestToWorst(later).indexOf(c[0])); // c3 better than c0; won last race
|
||||
LeaderboardGroup leaderboardGroup = new LeaderboardGroupImpl("Leaderboard Group", "Leaderboard Group", false, Arrays.asList(leaderboard1,
|
||||
@@ -856,7 +855,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
||||
qualifyingRaceColumnNames.add("Q" + i);
|
||||
}
|
||||
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
||||
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null, EmptyRaceLogStore.INSTANCE);
|
||||
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null);
|
||||
series.add(qualifyingSeries);
|
||||
}
|
||||
|
||||
@@ -871,8 +870,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */false, finalFleets, finalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
series.add(finalSeries);
|
||||
}
|
||||
|
||||
@@ -882,8 +880,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */true, medalFleets, medalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
series.add(medalSeries);
|
||||
}
|
||||
|
||||
|
||||
+4
-8
@@ -15,7 +15,6 @@ 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;
|
||||
@@ -51,28 +50,25 @@ 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(), EmptyRaceLogStore.INSTANCE);
|
||||
EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
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(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
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(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
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(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||
|
||||
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
||||
assertEquals("505", kiwotest2.getRegatta().getBoatClass().getName());
|
||||
|
||||
+1
-2
@@ -26,7 +26,6 @@ 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;
|
||||
@@ -133,7 +132,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, EmptyRaceLogStore.INSTANCE);
|
||||
domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
trackedRegatta = new DynamicTrackedRegattaImpl(domainEvent);
|
||||
}
|
||||
|
||||
|
||||
+3
-4
@@ -11,20 +11,20 @@ import java.util.List;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
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.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.GateImpl;
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
@@ -40,7 +40,6 @@ 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;
|
||||
@@ -84,7 +83,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", EmptyRaceLogStore.INSTANCE);
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
// create a two-lap upwind/downwind course:
|
||||
|
||||
+1
-3
@@ -15,7 +15,6 @@ 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;
|
||||
@@ -95,8 +94,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE)),
|
||||
new DynamicTrackedRegattaImpl(DomainFactory.INSTANCE.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null)),
|
||||
getTracTracEvent(), EmptyWindStore.INSTANCE, /* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l,
|
||||
/* simulator */ null, new DynamicRaceDefinitionSet() {
|
||||
@Override
|
||||
|
||||
+1
-3
@@ -14,7 +14,6 @@ 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;
|
||||
@@ -66,8 +65,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
||||
}
|
||||
};
|
||||
List<TypeController> listeners = new ArrayList<TypeController>();
|
||||
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
DynamicTrackedRegatta trackedRegatta = new DynamicTrackedRegattaImpl(regatta);
|
||||
trackedRegatta.addRaceListener(new RaceListener() {
|
||||
@Override
|
||||
|
||||
+3
-4
@@ -5,21 +5,21 @@ import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
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.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.GateImpl;
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.base.impl.MarkImpl;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
@@ -33,7 +33,6 @@ 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;
|
||||
@@ -94,7 +93,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", EmptyRaceLogStore.INSTANCE);
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||
// create a two-lap upwind/downwind course:
|
||||
|
||||
+1
-2
@@ -14,7 +14,6 @@ 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;
|
||||
@@ -55,7 +54,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
|
||||
+ TracTracConnectionConstants.PORT_STORED),
|
||||
/* startOfTracking */null, /* endOfTracking */null, /* delayToLiveInMillis */0l,
|
||||
/* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE,
|
||||
new DummyTrackedRegattaRegistry(), EmptyRaceLogStore.INSTANCE);
|
||||
new DummyTrackedRegattaRegistry());
|
||||
|
||||
Iterable<Competitor> competitors = fourtyninerYellow_2.getRacesHandle().getRaces().iterator().next()
|
||||
.getCompetitors();
|
||||
|
||||
@@ -15,10 +15,10 @@ import java.util.Set;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
@@ -36,7 +36,6 @@ 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;
|
||||
@@ -263,8 +262,7 @@ 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",
|
||||
EmptyRaceLogStore.INSTANCE)),
|
||||
/* trackedRegattaRegistry */ null, domainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), "123")),
|
||||
new RaceDefinitionImpl("Test Race",
|
||||
new CourseImpl("Test Course", Arrays.asList(new Waypoint[] { w1, w2, w3 })),
|
||||
boatClass, Collections.singleton(competitor)),
|
||||
|
||||
+4
-7
@@ -22,7 +22,6 @@ 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;
|
||||
@@ -93,8 +92,7 @@ public interface DomainFactory {
|
||||
* boat class exists yet.
|
||||
* @param trackedRegattaRegistry TODO
|
||||
*/
|
||||
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore);
|
||||
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
|
||||
/**
|
||||
* Creates a race tracked for the specified URL/URIs and starts receiving all available existing and future push
|
||||
@@ -127,7 +125,7 @@ public interface DomainFactory {
|
||||
*/
|
||||
TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException;
|
||||
|
||||
/**
|
||||
@@ -136,7 +134,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, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException;
|
||||
|
||||
BoatClass getOrCreateBoatClass(CompetitorClass competitorClass);
|
||||
@@ -237,8 +235,7 @@ 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,
|
||||
RaceLogStore raceLogStore);
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore);
|
||||
/**
|
||||
* 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
|
||||
|
||||
+8
-10
@@ -46,7 +46,6 @@ 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;
|
||||
@@ -306,8 +305,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) {
|
||||
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
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?
|
||||
@@ -338,7 +336,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(), raceLogStore);
|
||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), event.getId());
|
||||
regattaCache.put(key, result);
|
||||
weakRegattaCache.put(event, result);
|
||||
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+") because none found for key "+key);
|
||||
@@ -550,19 +548,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, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||
URISyntaxException {
|
||||
return new TracTracRaceTrackerImpl(this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException {
|
||||
return new TracTracRaceTrackerImpl(regatta, this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -578,9 +576,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, RaceLogStore raceLogStore) {
|
||||
boolean simulateWithStartTimeNow, WindStore windStore) {
|
||||
return new RaceTrackingConnectivityParametersImpl(paramURL, liveURI, storedURI, startOfTracking, endOfTracking,
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, this, raceLogStore);
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, this);
|
||||
}
|
||||
|
||||
}
|
||||
+3
-6
@@ -9,7 +9,6 @@ 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;
|
||||
@@ -23,14 +22,13 @@ 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, RaceLogStore raceLogStore) {
|
||||
DomainFactory domainFactory) {
|
||||
super();
|
||||
this.paramURL = paramURL;
|
||||
this.liveURI = liveURI;
|
||||
@@ -39,7 +37,6 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
||||
this.endOfTracking = endOfTracking;
|
||||
this.delayToLiveInMillis = delayToLiveInMillis;
|
||||
this.windStore = windStore;
|
||||
this.raceLogStore = raceLogStore;
|
||||
this.domainFactory = domainFactory;
|
||||
this.simulateWithStartTimeNow = simulateWithStartTimeNow;
|
||||
}
|
||||
@@ -48,7 +45,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, raceLogStore);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
@@ -56,7 +53,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, raceLogStore);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
return tracker;
|
||||
}
|
||||
|
||||
|
||||
+8
-11
@@ -32,7 +32,6 @@ 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;
|
||||
@@ -122,19 +121,18 @@ 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, RaceLogStore raceLogStore)
|
||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(KeyValue.setup(paramURL), domainFactory, paramURL, liveURI, storedURI, startOfTracking, endOfTracking,
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
private TracTracRaceTrackerImpl(Event tractracEvent, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(tractracEvent, null, domainFactory, paramURL, liveURI, storedURI,
|
||||
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry,
|
||||
raceLogStore);
|
||||
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,10 +143,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, RaceLogStore raceLogStore)
|
||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
this(KeyValue.setup(paramURL), regatta, domainFactory, paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -164,8 +162,7 @@ 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,
|
||||
RaceLogStore raceLogStore)
|
||||
long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||
super();
|
||||
this.tractracEvent = tractracEvent;
|
||||
@@ -205,7 +202,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, raceLogStore) : effectiveRegatta;
|
||||
this.regatta = effectiveRegatta == null ? domainFactory.getOrCreateDefaultRegatta(tractracEvent, trackedRegattaRegistry) : effectiveRegatta;
|
||||
trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(this.regatta);
|
||||
receivers = new HashSet<Receiver>();
|
||||
Set<TypeController> typeControllers = new HashSet<TypeController>();
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.util.impl.RaceColumnListeners;
|
||||
|
||||
@@ -144,10 +142,5 @@ public interface RaceColumn extends Named {
|
||||
* If <code>null</code>, the {@link #getFactor() factor} defaults to 1 for non-medal and {@link #DEFAULT_MEDAL_RACE_FACTOR} for
|
||||
* medal races. Otherwise, the explicit factor is used.
|
||||
*/
|
||||
Double getExplicitFactor();
|
||||
|
||||
RaceLog getRaceLog(String leaderboardName, Fleet fleet);
|
||||
|
||||
void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event);
|
||||
|
||||
Double getExplicitFactor();
|
||||
}
|
||||
@@ -1,14 +1,8 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
|
||||
public interface RaceColumnInSeries extends RaceColumn {
|
||||
Series getSeries();
|
||||
|
||||
Regatta getRegatta();
|
||||
|
||||
RaceColumnIdentifier getRaceColumnIdentifier(String leaderboardName);
|
||||
|
||||
void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event);
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
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;
|
||||
|
||||
@@ -27,7 +26,7 @@ public interface Series extends SeriesData {
|
||||
|
||||
Fleet getFleetByName(String fleetName);
|
||||
|
||||
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore);
|
||||
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||
|
||||
void moveRaceColumnUp(String raceColumnName);
|
||||
|
||||
|
||||
+1
-4
@@ -8,7 +8,6 @@ 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 {
|
||||
@@ -16,13 +15,11 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem
|
||||
|
||||
private final Map<Fleet, TrackedRace> trackedRaces;
|
||||
private final Map<Fleet, RaceIdentifier> raceIdentifiers;
|
||||
protected RaceLogStore raceLogStore;
|
||||
|
||||
|
||||
public AbstractRaceColumn(RaceLogStore raceLogStore) {
|
||||
public AbstractRaceColumn() {
|
||||
this.trackedRaces = new HashMap<Fleet, TrackedRace>();
|
||||
this.raceIdentifiers = new HashMap<Fleet, RaceIdentifier>();
|
||||
this.raceLogStore = raceLogStore;
|
||||
|
||||
}
|
||||
|
||||
|
||||
+2
-23
@@ -5,11 +5,6 @@ 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.RaceLogEvent;
|
||||
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;
|
||||
@@ -39,8 +34,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, RaceLogStore raceLogStore) {
|
||||
super(raceLogStore);
|
||||
public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.series = series;
|
||||
this.trackedRegattaRegistry = trackedRegattaRegistry;
|
||||
@@ -94,20 +89,4 @@ public class RaceColumnInSeriesImpl extends AbstractRaceColumn implements RaceCo
|
||||
super.setTrackedRace(fleet, trackedRace);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(String leaderboardName, Fleet fleet) {
|
||||
return raceLogStore.getRaceLog(getRaceColumnIdentifier(leaderboardName), fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceColumnIdentifier getRaceColumnIdentifier(String leaderboardName) {
|
||||
return new RaceColumnIdentifierImpl(leaderboardName, getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event) {
|
||||
|
||||
raceLogStore.getRaceLog(getRaceColumnIdentifier(leaderboardName), fleet).add(event);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -23,7 +23,6 @@ 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;
|
||||
@@ -60,10 +59,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, RaceLogStore raceLogStore) {
|
||||
public RegattaImpl(String baseName, BoatClass boatClass, TrackedRegattaRegistry trackedRegattaRegistry, ScoringScheme scoringScheme, Serializable id) {
|
||||
this(baseName, boatClass, Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
||||
.singletonList(new FleetImpl("Default")), /* race column names */new ArrayList<String>(),
|
||||
trackedRegattaRegistry, raceLogStore)), /* persistent */false, scoringScheme, id);
|
||||
trackedRegattaRegistry)), /* persistent */false, scoringScheme, id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,6 @@ 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;
|
||||
@@ -43,7 +42,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, RaceLogStore raceLogStore) {
|
||||
TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
super(name);
|
||||
if (fleets == null || Util.isEmpty(fleets)) {
|
||||
throw new IllegalArgumentException("Series must have at least one fleet");
|
||||
@@ -59,7 +58,7 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
this.isMedal = isMedal;
|
||||
this.raceColumnListeners = new RaceColumnListeners();
|
||||
for (String raceColumnName : raceColumnNames) {
|
||||
addRaceColumn(raceColumnName, trackedRegattaRegistry, raceLogStore);
|
||||
addRaceColumn(raceColumnName, trackedRegattaRegistry);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,9 +105,8 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
||||
* carried out.
|
||||
*/
|
||||
@Override
|
||||
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry,
|
||||
RaceLogStore raceLogStore) {
|
||||
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry, raceLogStore);
|
||||
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry);
|
||||
if (raceColumnListeners.canAddRaceColumnToContainer(result)) {
|
||||
result.addRaceColumnListener(this);
|
||||
raceColumns.add(result);
|
||||
@@ -127,9 +125,8 @@ 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,
|
||||
RaceLogStore raceLogStore) {
|
||||
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry, raceLogStore);
|
||||
private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+2
-6
@@ -5,7 +5,6 @@ import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.common.Renamable;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
/**
|
||||
@@ -46,28 +45,25 @@ public interface FlexibleLeaderboard extends Leaderboard, Renamable {
|
||||
* @param fleets
|
||||
* the fleets to add to the {@link RaceColumn} created. If no fleets are specified, a single default
|
||||
* fleet will be assigned to the race column created.
|
||||
*
|
||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
||||
*/
|
||||
RaceColumn addRaceColumn(String name, boolean medalRace, RaceLogStore raceLogStore, Fleet... fleets);
|
||||
RaceColumn addRaceColumn(String name, boolean medalRace, Fleet... fleets);
|
||||
|
||||
/**
|
||||
* Adds a tracked race to this leaderboard. If a {@link RaceColumn} with name <code>columnName</code> already exists
|
||||
* in this leaderboard, <code>race</code> is {@link RaceColumn#setTrackedRace(Fleet, TrackedRace) set as its tracked
|
||||
* race} and <code>medalRace</code> is ignored. Otherwise, a new {@link RaceColumn} column, with <code>race</code>
|
||||
* as its tracked race, is created and added to this leaderboard.
|
||||
*
|
||||
* @param medalRace
|
||||
* tells if the column to add represents a medal race which has double score and cannot be discarded;
|
||||
* ignored if the column named <code>columnName</code> already exists
|
||||
*
|
||||
* @param fleets
|
||||
* the fleets to add to the {@link RaceColumn} created. If no fleets are specified, a single default
|
||||
* fleet will be assigned to the race column created.
|
||||
*
|
||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
||||
*/
|
||||
RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, RaceLogStore raceLogStore, Fleet fleet);
|
||||
RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, Fleet fleet);
|
||||
|
||||
void removeRaceColumn(String columnName);
|
||||
|
||||
|
||||
-4
@@ -1,12 +1,8 @@
|
||||
package com.sap.sailing.domain.leaderboard;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
|
||||
public interface FlexibleRaceColumn extends RaceColumn {
|
||||
void setName(String newName);
|
||||
void setIsMedalRace(boolean isMedalRace);
|
||||
|
||||
void recordRaceLogEvent(Fleet fleet, RaceLogEvent event);
|
||||
}
|
||||
+6
-7
@@ -16,7 +16,6 @@ import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
/**
|
||||
@@ -65,13 +64,13 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceColumn addRaceColumn(String name, boolean medalRace, RaceLogStore raceLogStore, Fleet... fleets) {
|
||||
public RaceColumn addRaceColumn(String name, boolean medalRace, Fleet... fleets) {
|
||||
FlexibleRaceColumn column = getRaceColumnByName(name);
|
||||
if (column != null) {
|
||||
final String msg = "Trying to create race column with duplicate name "+name+" in leaderboard +"+getName();
|
||||
logger.severe(msg);
|
||||
} else {
|
||||
column = createRaceColumn(name, medalRace, raceLogStore, fleets);
|
||||
column = createRaceColumn(name, medalRace, fleets);
|
||||
column.addRaceColumnListener(this);
|
||||
races.add(column);
|
||||
getRaceColumnListeners().notifyListenersAboutRaceColumnAddedToContainer(column);
|
||||
@@ -109,10 +108,10 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, RaceLogStore raceLogStore, Fleet fleet) {
|
||||
public RaceColumn addRace(TrackedRace race, String columnName, boolean medalRace, Fleet fleet) {
|
||||
FlexibleRaceColumn column = getRaceColumnByName(columnName);
|
||||
if (column == null) {
|
||||
column = createRaceColumn(columnName, medalRace, raceLogStore, fleet);
|
||||
column = createRaceColumn(columnName, medalRace, fleet);
|
||||
column.addRaceColumnListener(this);
|
||||
races.add(column);
|
||||
}
|
||||
@@ -120,8 +119,8 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
||||
return column;
|
||||
}
|
||||
|
||||
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, RaceLogStore raceLogStore, Fleet... fleets) {
|
||||
return new RaceColumnImpl(columnName, medalRace, raceLogStore, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
||||
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, Fleet... fleets) {
|
||||
return new RaceColumnImpl(columnName, medalRace, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
||||
}
|
||||
|
||||
protected Iterable<Fleet> turnNullOrEmptyFleetsIntoDefaultFleet(Fleet... fleets) {
|
||||
|
||||
+2
-27
@@ -6,11 +6,7 @@ import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.impl.AbstractRaceColumn;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleRaceColumn;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
|
||||
public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceColumn {
|
||||
private static final long serialVersionUID = -7801617988982540470L;
|
||||
@@ -23,8 +19,8 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
||||
private final Iterable<Fleet> fleets;
|
||||
private boolean medalRace;
|
||||
|
||||
public RaceColumnImpl(String name, boolean medalRace, RaceLogStore raceLogStore, Iterable<Fleet> fleets) {
|
||||
super(raceLogStore);
|
||||
public RaceColumnImpl(String name, boolean medalRace, Iterable<Fleet> fleets) {
|
||||
super();
|
||||
this.name = name;
|
||||
this.medalRace = medalRace;
|
||||
List<Fleet> myFleets = new ArrayList<Fleet>();
|
||||
@@ -60,25 +56,4 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
||||
public Iterable<Fleet> getFleets() {
|
||||
return fleets;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(String leaderboardName, Fleet fleet) {
|
||||
return raceLogStore.getRaceLog(fleet);
|
||||
}
|
||||
|
||||
public RaceLog getRaceLog(Fleet fleet) {
|
||||
return getRaceLog("", fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordRaceLogEvent(Fleet fleet, RaceLogEvent event) {
|
||||
if (!Util.contains(fleets, fleet))
|
||||
return;
|
||||
raceLogStore.getRaceLog(fleet).add(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event) {
|
||||
recordRaceLogEvent(fleet, event);
|
||||
}
|
||||
}
|
||||
-13
@@ -10,8 +10,6 @@ import com.sap.sailing.domain.base.impl.SimpleAbstractRaceColumn;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
|
||||
/**
|
||||
@@ -149,15 +147,4 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R
|
||||
public boolean isTransient() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLog getRaceLog(String leaderboardName, Fleet fleet) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordRaceLogEvent(String leaderboardName, Fleet fleet,
|
||||
RaceLogEvent event) {
|
||||
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package com.sap.sailing.domain.racelog;
|
||||
|
||||
public interface RaceColumnIdentifier {
|
||||
public interface RaceLogIdentifier {
|
||||
|
||||
String getIdentifier();
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package com.sap.sailing.domain.racelog;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
|
||||
/**
|
||||
* Capsulating store interface providing a {@link RaceLog} for a given regatta / race combination.
|
||||
*
|
||||
*/
|
||||
public interface RaceLogStore {
|
||||
RaceLog getRaceLog(Fleet fleet);
|
||||
|
||||
RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet);
|
||||
RaceLog getRaceLog(RaceLogIdentifier identifier);
|
||||
}
|
||||
+3
-9
@@ -1,8 +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.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
|
||||
/**
|
||||
@@ -12,14 +11,9 @@ import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
*/
|
||||
public class EmptyRaceLogStore implements RaceLogStore {
|
||||
public static EmptyRaceLogStore INSTANCE = new EmptyRaceLogStore();
|
||||
|
||||
@Override
|
||||
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());
|
||||
public RaceLog getRaceLog(RaceLogIdentifier identifier) {
|
||||
return new RaceLogImpl("Lock for " + identifier.getIdentifier());
|
||||
}
|
||||
}
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
package com.sap.sailing.domain.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
||||
|
||||
public class RaceColumnIdentifierImpl implements RaceColumnIdentifier {
|
||||
|
||||
private String leaderboardName;
|
||||
private String columnName;
|
||||
|
||||
public RaceColumnIdentifierImpl(String leaderboardName, String columnName) {
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.columnName = columnName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return String.format("%s-%s", leaderboardName, columnName);
|
||||
}
|
||||
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.domain.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
|
||||
public class RaceLogIdentifierImpl implements RaceLogIdentifier {
|
||||
|
||||
private final Leaderboard leaderboard;
|
||||
private final RaceColumn raceColumn;
|
||||
private final Fleet fleet;
|
||||
|
||||
public RaceLogIdentifierImpl(Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet) {
|
||||
this.leaderboard = leaderboard;
|
||||
this.raceColumn = raceColumn;
|
||||
this.fleet = fleet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return String.format("%s-%s-%s", leaderboard.getName(), raceColumn.getName(), fleet.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getIdentifier();
|
||||
}
|
||||
|
||||
}
|
||||
+7
-15
@@ -109,7 +109,6 @@ 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.swisstimingadapter.SwissTimingArchiveConfiguration;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingConfiguration;
|
||||
@@ -1142,8 +1141,7 @@ 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,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow);
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + rr.regattaName + "/" + rr.name) {
|
||||
public void run() {
|
||||
@@ -2385,8 +2383,7 @@ 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,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) {
|
||||
public void run() {
|
||||
@@ -2439,10 +2436,8 @@ 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(),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory))), false,
|
||||
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
new ArrayList<String>(), getService())), false,
|
||||
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
} else {
|
||||
regatta = getService().getRegatta(regattaIdentifier);
|
||||
}
|
||||
@@ -2932,8 +2927,7 @@ 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,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||
if(raceColumnInSeries != null) {
|
||||
result.add(convertToRaceColumnInSeriesDTO(raceColumnInSeries));
|
||||
}
|
||||
@@ -2944,8 +2938,7 @@ 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,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||
if(raceColumnInSeries != null) {
|
||||
result = convertToRaceColumnInSeriesDTO(raceColumnInSeries);
|
||||
}
|
||||
@@ -2981,8 +2974,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
Regatta regatta = getService().apply(
|
||||
new AddSpecificRegatta(regattaName, boatClassName, UUID.randomUUID(),
|
||||
seriesNamesWithFleetNamesAndFleetOrderingAndMedal,
|
||||
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
||||
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType)));
|
||||
return convertToRegattaDTO(regatta);
|
||||
}
|
||||
|
||||
|
||||
+6
-11
@@ -53,7 +53,6 @@ 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;
|
||||
@@ -109,8 +108,7 @@ 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),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 }, null);
|
||||
DomainObjectFactory dof = MongoFactory.INSTANCE.getDomainObjectFactory(getMongoService());
|
||||
@@ -151,8 +149,7 @@ 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),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
logColumnsInRegatta(regatta);
|
||||
@@ -364,22 +361,20 @@ 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, EmptyRaceLogStore.INSTANCE);
|
||||
emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */ false, finalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */ true, medalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||
series.add(medalSeries);
|
||||
Regatta regatta = new RegattaImpl(regattaBaseName, boatClass, series, persistent, scoringScheme, "123");
|
||||
return regatta;
|
||||
@@ -387,7 +382,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
|
||||
private void addRaceColumnsToSeries(List<String> finalRaceColumnNames, Series finalSeries) {
|
||||
for (String raceColumnName : finalRaceColumnNames) {
|
||||
finalSeries.addRaceColumn(raceColumnName, /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
||||
finalSeries.addRaceColumn(raceColumnName, /* trackedRegattaRegistry */ null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
-5
@@ -46,7 +46,6 @@ import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||
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.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
@@ -129,7 +128,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
racingEventService.addLeaderboard(leaderboard);
|
||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
racingEventService.addLeaderboard(leaderboard);
|
||||
@@ -186,7 +185,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
leaderboards.add(leaderboard);
|
||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
leaderboards.add(leaderboard);
|
||||
@@ -243,7 +242,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
leaderboards.add(leaderboard);
|
||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
leaderboards.add(leaderboard);
|
||||
@@ -427,7 +426,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
||||
|
||||
final FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl(leaderboardName, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
final Fleet fleet = leaderboard.getFleet(null);
|
||||
final RaceColumn race = leaderboard.addRaceColumn(columnName, false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
final RaceColumn race = leaderboard.addRaceColumn(columnName, false, fleet);
|
||||
leaderboards.add(leaderboard);
|
||||
|
||||
final LeaderboardGroup group = new LeaderboardGroupImpl(groupName, groupDescription, false, leaderboards);
|
||||
|
||||
+20
-30
@@ -34,7 +34,6 @@ import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
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.mock.MockedTrackedRaceWithFixedRank;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
@@ -50,10 +49,10 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
final int[] discardIndexResultsStartingWithHowManyRaces = new int[] { 5, 8 };
|
||||
FlexibleLeaderboardImpl leaderboard = new FlexibleLeaderboardImpl(leaderboardName, new ScoreCorrectionImpl(),
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
leaderboard.addRaceColumn("R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
||||
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
||||
leaderboard.addRaceColumn("R1", /* medalRace */ false);
|
||||
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false);
|
||||
r2.setFactor(1.5);
|
||||
RaceColumn r3 = leaderboard.addRaceColumn("R3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
||||
RaceColumn r3 = leaderboard.addRaceColumn("R3", /* medalRace */ false);
|
||||
r3.setFactor(2.5);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
Leaderboard loadedLeaderboard = new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||
@@ -77,8 +76,7 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
final String raceColumnName1 = "My First Race 1";
|
||||
MockedTrackedRaceWithFixedRankAndManyCompetitors raceWithTwoCompetitors = new MockedTrackedRaceWithFixedRankAndManyCompetitors(wolfgang, /* rank */ 1, /* started */ true);
|
||||
raceWithTwoCompetitors.addCompetitor(hasso);
|
||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||
leaderboard.setSuppressed(wolfgang, true);
|
||||
assertTrue(Util.contains(leaderboard.getSuppressedCompetitors(), wolfgang));
|
||||
assertFalse(Util.contains(leaderboard.getSuppressedCompetitors(), hasso));
|
||||
@@ -117,16 +115,14 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
Competitor competitor = createCompetitor();
|
||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||
final String raceColumnName1 = "My First Race 1";
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||
final String displayName = "$$$ ... The Renamed Competitor ... $$$";
|
||||
leaderboard.setDisplayName(competitor, displayName);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(
|
||||
leaderboardName, /* regattaRegistry */null);
|
||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||
loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false, leaderboard.getFleet(null));
|
||||
Competitor loadedCompetitor = loadedLeaderboard.getCompetitorByName(competitor.getName());
|
||||
assertEquals(displayName, loadedLeaderboard.getDisplayName(loadedCompetitor));
|
||||
}
|
||||
@@ -166,14 +162,12 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||
Competitor competitor = createCompetitor();
|
||||
TrackedRace raceWithOneCompetitor = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||
leaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace */ false, leaderboard.getFleet(null));
|
||||
leaderboard.setCarriedPoints(competitor, carriedPointsForWolfgangHunger);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||
loadedLeaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace, ignored */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
loadedLeaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace, ignored */ false, leaderboard.getFleet(null));
|
||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||
assertTrue(Arrays.equals(discardIndexResultsStartingWithHowManyRaces, loadedLeaderboard.getResultDiscardingRule()
|
||||
.getDiscardIndexResultsStartingWithHowManyRaces()));
|
||||
@@ -194,18 +188,16 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
Competitor competitor = createCompetitor();
|
||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, leaderboard.getFleet(null));
|
||||
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||
assertEquals(correctedPoints, (double) loadedLeaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, loadedColumn1), 0.00000001);
|
||||
@@ -224,18 +216,16 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
Competitor competitor = createCompetitor();
|
||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, EmptyRaceLogStore.INSTANCE,
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, leaderboard.getFleet(null));
|
||||
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||
assertFalse(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn2));
|
||||
@@ -256,18 +246,18 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
||||
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||
assertEquals(correctedPoints, (double) loadedLeaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, loadedColumn1), 0.000000001);
|
||||
|
||||
+1
-3
@@ -19,7 +19,6 @@ import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
||||
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;
|
||||
@@ -60,8 +59,7 @@ public class TestStoringAndRetrievingRaceLogsTest extends AbstractTracTracLiveTe
|
||||
@Test
|
||||
public void testStoreAFewRaceLogEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||
EmptyWindStore.INSTANCE,
|
||||
|
||||
+1
-3
@@ -27,7 +27,6 @@ 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;
|
||||
@@ -71,8 +70,7 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
|
||||
@Test
|
||||
public void testStoreAFewWindEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||
EmptyWindStore.INSTANCE,
|
||||
|
||||
+72
-73
@@ -1,73 +1,72 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl.leaderboard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
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;
|
||||
|
||||
public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer<Leaderboard, SeriesData> {
|
||||
public static final String FIELD_SERIES = "series";
|
||||
|
||||
|
||||
public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer<SeriesData> extensionSerializer) {
|
||||
super(extensionSerializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getExtensionFieldName() {
|
||||
return FIELD_SERIES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object serializeExtension(Leaderboard parent) {
|
||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<Series, List<RaceColumn>>();
|
||||
|
||||
Series defaultSeries = null;
|
||||
for (RaceColumn raceColumn : parent.getRaceColumns()) {
|
||||
if (raceColumn instanceof RaceColumnInSeries) {
|
||||
RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn;
|
||||
insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
||||
} else {
|
||||
if (defaultSeries == null) {
|
||||
defaultSeries = new SeriesImpl(
|
||||
"Default Series",
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null, EmptyRaceLogStore.INSTANCE);
|
||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||
}
|
||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||
}
|
||||
}
|
||||
|
||||
JSONArray result = new JSONArray();
|
||||
for (Series series : seriesToRaceColumns.keySet()) {
|
||||
result.add(serialize(series));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
||||
if (!target.containsKey(newSeries)) {
|
||||
target.put(newSeries, new ArrayList<RaceColumn>());
|
||||
}
|
||||
return target.get(newSeries);
|
||||
}
|
||||
}
|
||||
package com.sap.sailing.server.gateway.serialization.impl.leaderboard;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
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.server.gateway.serialization.ExtensionJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer<Leaderboard, SeriesData> {
|
||||
public static final String FIELD_SERIES = "series";
|
||||
|
||||
|
||||
public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer<SeriesData> extensionSerializer) {
|
||||
super(extensionSerializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getExtensionFieldName() {
|
||||
return FIELD_SERIES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object serializeExtension(Leaderboard parent) {
|
||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<Series, List<RaceColumn>>();
|
||||
|
||||
Series defaultSeries = null;
|
||||
for (RaceColumn raceColumn : parent.getRaceColumns()) {
|
||||
if (raceColumn instanceof RaceColumnInSeries) {
|
||||
RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn;
|
||||
insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
||||
} else {
|
||||
if (defaultSeries == null) {
|
||||
defaultSeries = new SeriesImpl(
|
||||
"Default Series",
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null);
|
||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||
}
|
||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||
}
|
||||
}
|
||||
|
||||
JSONArray result = new JSONArray();
|
||||
for (Series series : seriesToRaceColumns.keySet()) {
|
||||
result.add(serialize(series));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
||||
if (!target.containsKey(newSeries)) {
|
||||
target.put(newSeries, new ArrayList<RaceColumn>());
|
||||
}
|
||||
return target.get(newSeries);
|
||||
}
|
||||
}
|
||||
+2
-24
@@ -38,10 +38,7 @@ 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;
|
||||
@@ -118,8 +115,6 @@ 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";
|
||||
@@ -471,7 +466,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, getRaceLogStore(req));
|
||||
getService().addRegatta(jsonURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000);
|
||||
}
|
||||
|
||||
private WindStore getWindStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
||||
@@ -490,29 +485,12 @@ 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, getRaceLogStore(req));
|
||||
getService().addTracTracRace(paramURL, liveURI, storedURI, getWindStore(req), /* timeoutInMilliseconds */ 60000);
|
||||
}
|
||||
|
||||
private void stopRace(HttpServletRequest req, HttpServletResponse resp) throws MalformedURLException, IOException, InterruptedException {
|
||||
|
||||
+5
-11
@@ -22,7 +22,6 @@ 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
|
||||
@@ -31,8 +30,7 @@ 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),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
Thread.sleep(1000);
|
||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -46,17 +44,13 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Series finals = new SeriesImpl("Finals", /* isMedal */ false,
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Series medal = new SeriesImpl("Medal", /* isMedal */ true,
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName,
|
||||
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||
Thread.sleep(1000);
|
||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
|
||||
+1
-2
@@ -28,7 +28,6 @@ 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;
|
||||
@@ -81,7 +80,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, EmptyRaceLogStore.INSTANCE);
|
||||
0l, /* simulateWithStartTimeNow */false, EmptyWindStore.INSTANCE);
|
||||
}
|
||||
|
||||
private void startTracking() throws Exception, InterruptedException {
|
||||
|
||||
+13
-14
@@ -22,7 +22,6 @@ import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.impl.HighPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
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.TrackedRace;
|
||||
@@ -71,15 +70,15 @@ public class LeaderboardDiscardingRulesTest {
|
||||
|
||||
Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner");
|
||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, fleet);
|
||||
final TrackedRace race2 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, fleet);
|
||||
|
||||
Competitor wolfgang = AbstractLeaderboardTest.createCompetitor("Wolfgang Hunger");
|
||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, fleet);
|
||||
final TrackedRace race4 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 124, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, fleet);
|
||||
|
||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R3"), 123.);
|
||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R4"), 123.);
|
||||
@@ -111,19 +110,19 @@ public class LeaderboardDiscardingRulesTest {
|
||||
|
||||
Competitor rasmus = AbstractLeaderboardTest.createCompetitor("Rasmus");
|
||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(rasmus, /* rank */ 2, /* started */ true, boatClass); // score 2.0
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, fleet);
|
||||
final TrackedRace race2 = new MockedTrackedRaceWithFixedRank(rasmus, /* rank */ 2, /* started */ true, boatClass); // score 2.0
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, fleet);
|
||||
|
||||
Competitor jes = AbstractLeaderboardTest.createCompetitor("Jes");
|
||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(jes, /* rank */ 2, /* started */ true, boatClass); // score 2.0
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, fleet);
|
||||
final TrackedRace race4 = new MockedTrackedRaceWithFixedRank(jes, /* rank */ 3, /* started */ true, boatClass); // score 1.0
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, fleet);
|
||||
|
||||
Competitor nobody = AbstractLeaderboardTest.createCompetitor("Nobody");
|
||||
final TrackedRace race5 = new MockedTrackedRaceWithFixedRank(nobody, /* rank */ 3, /* started */ true, boatClass); // score 1.0
|
||||
leaderboard.addRace(race5, "R5", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race5, "R5", /* medalRace */ false, fleet);
|
||||
|
||||
leaderboard.getScoreCorrection().correctScore(rasmus, leaderboard.getRaceColumnByName("R3"), 2.0);
|
||||
leaderboard.getScoreCorrection().correctScore(rasmus, leaderboard.getRaceColumnByName("R4"), 2.0);
|
||||
@@ -156,15 +155,15 @@ public class LeaderboardDiscardingRulesTest {
|
||||
|
||||
Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner");
|
||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race1, "R1", /* medalRace */ false, fleet);
|
||||
final TrackedRace race2 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race2, "R2", /* medalRace */ false, fleet);
|
||||
|
||||
Competitor wolfgang = AbstractLeaderboardTest.createCompetitor("Wolfgang Hunger");
|
||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 123, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race3, "R3", /* medalRace */ false, fleet);
|
||||
final TrackedRace race4 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 124, /* started */ true, boatClass);
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, EmptyRaceLogStore.INSTANCE, fleet);
|
||||
leaderboard.addRace(race4, "R4", /* medalRace */ false, fleet);
|
||||
|
||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R3"), 123.);
|
||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R4"), 123.);
|
||||
|
||||
+1
-3
@@ -29,7 +29,6 @@ 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;
|
||||
@@ -62,8 +61,7 @@ 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(),
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), UUID.randomUUID());
|
||||
racingEventService.getEventsByName().put(EVENTNAME, regatta);
|
||||
TrackedRegatta trackedRegatta1 = racingEventService.getOrCreateTrackedRegatta(regatta);
|
||||
racingEventService.getEventsByNameMap().put(EVENTNAME, regatta);
|
||||
|
||||
+3
-7
@@ -20,7 +20,6 @@ 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;
|
||||
@@ -61,8 +60,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
raceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
logger.info("Calling raceHandle.getRaces()");
|
||||
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
||||
logger.info("Obtained races: "+races);
|
||||
@@ -118,8 +116,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
TrackedRegatta newTrackedRegatta = myRaceHandle.getTrackedRegatta();
|
||||
assertNotSame(oldTrackedRegatta, newTrackedRegatta);
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedRegatta);
|
||||
@@ -143,8 +140,7 @@ 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,
|
||||
EmptyRaceLogStore.INSTANCE);
|
||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||
TrackedRegatta newTrackedEvent = myRaceHandle.getTrackedRegatta();
|
||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedEvent);
|
||||
// expecting a new tracked race to be created when starting over with tracking
|
||||
|
||||
@@ -40,7 +40,7 @@ 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.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.tracking.RaceListener;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
@@ -111,7 +111,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, RaceLogStore raceLogStore)
|
||||
Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, IOException, ParseException,
|
||||
org.json.simple.parser.ParseException, Exception;
|
||||
|
||||
@@ -132,12 +132,11 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
* already being tracked, then regardless of the <code>windStore</code> selection the existing tracker will be used
|
||||
* and its race handle will be returned. A log message will indicate a potential wind store mismatch (based on
|
||||
* {@link WindStore#equals(Object)}).
|
||||
*
|
||||
* @param timeoutInMilliseconds
|
||||
* 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, RaceLogStore raceLogStore)
|
||||
RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
@@ -154,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, RaceLogStore raceLogStore)
|
||||
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow)
|
||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||
|
||||
/**
|
||||
@@ -289,7 +288,7 @@ 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, RaceLogStore raceLogStore)
|
||||
boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds)
|
||||
throws InterruptedException, UnknownHostException,
|
||||
IOException, ParseException, Exception;
|
||||
|
||||
@@ -376,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, RaceLogStore raceLogStore);
|
||||
Regatta createRegatta(String baseName, String boatClassName, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme);
|
||||
|
||||
/**
|
||||
* Adds <code>raceDefinition</code> to the {@link Regatta} such that it will appear in {@link Regatta#getAllRaces()}
|
||||
@@ -497,6 +496,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
|
||||
CourseArea getCourseArea(Serializable courseAreaId);
|
||||
|
||||
void recordRaceLogEvent(String leaderboardName, String raceColumnName, String fleetName, RaceLogEvent event);
|
||||
void recordRaceLogEvent(RaceLogIdentifier identifier, RaceLogEvent event);
|
||||
|
||||
}
|
||||
+19
-29
@@ -71,11 +71,8 @@ import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
||||
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.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.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage;
|
||||
@@ -118,7 +115,6 @@ import com.sap.sailing.server.operationaltransformation.CreateEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateTrackedRace;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordRaceLogEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RecordWindFix;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveWindFix;
|
||||
@@ -364,10 +360,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
if (leaderboard != null) {
|
||||
if (leaderboard instanceof FlexibleLeaderboard) {
|
||||
// uses the default fleet as the single fleet for the new column
|
||||
RaceColumnIdentifier columnIdentifier = new RaceColumnIdentifierImpl(leaderboardName, columnName);
|
||||
RaceColumn result = ((FlexibleLeaderboard) leaderboard).addRaceColumn(columnName, medalRace,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory, columnIdentifier),
|
||||
leaderboard.getFleet(null));
|
||||
leaderboard.getFleet(null));
|
||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||
return result;
|
||||
} else {
|
||||
@@ -605,13 +599,12 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds,
|
||||
RaceLogStore raceLogStore) throws Exception {
|
||||
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds) 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, raceLogStore).getRegatta();
|
||||
regatta = addTracTracRace(paramURL, liveURI, storedURI, windStore, timeoutInMilliseconds).getRegatta();
|
||||
}
|
||||
return regatta;
|
||||
}
|
||||
@@ -620,8 +613,7 @@ 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),
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
||||
RegattaImpl.getFullName(baseEventName, boatClassName));
|
||||
Regatta result = regattasByName.get(regatta.getName());
|
||||
if (result == null) {
|
||||
result = regatta;
|
||||
@@ -633,11 +625,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, RaceLogStore raceLogStore) {
|
||||
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme) {
|
||||
Regatta regatta = new RegattaImpl(baseEventName,
|
||||
getBaseDomainFactory().getOrCreateBoatClass(boatClassName), series, persistent, scoringScheme, id);
|
||||
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this);
|
||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta, raceLogStore);
|
||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||
if (persistent) {
|
||||
updateStoredRegatta(regatta);
|
||||
}
|
||||
@@ -667,20 +659,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, RaceLogStore raceLogStore) throws Exception {
|
||||
int port, boolean canSendRequests, WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||
return addRace(
|
||||
regattaToAddTo,
|
||||
swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence, raceLogStore), windStore, timeoutInMilliseconds);
|
||||
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence), windStore, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore,
|
||||
long timeoutInMilliseconds, RaceLogStore raceLogStore) throws Exception {
|
||||
long timeoutInMilliseconds) throws Exception {
|
||||
return addRace(
|
||||
/* regattaToAddTo */null, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
||||
/* startOfTracking */null,
|
||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore, raceLogStore), windStore,
|
||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore), windStore,
|
||||
timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
@@ -771,14 +763,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, RaceLogStore raceLogStore) {
|
||||
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta) {
|
||||
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(), raceLogStore));
|
||||
regatta.isPersistent(), regatta.getScoringScheme()));
|
||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||
@@ -831,9 +823,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, RaceLogStore raceLogStore) throws Exception {
|
||||
WindStore windStore, long timeoutInMilliseconds, boolean simulateWithStartTimeNow) throws Exception {
|
||||
return addRace(regattaToAddTo, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI, startOfTracking,
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, raceLogStore), windStore, timeoutInMilliseconds);
|
||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore), windStore, timeoutInMilliseconds);
|
||||
}
|
||||
|
||||
private void ensureRegattaIsObservedForDefaultLeaderboardAndAutoLeaderboardLinking(DynamicTrackedRegatta trackedRegatta) {
|
||||
@@ -889,10 +881,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
final FlexibleLeaderboard defaultLeaderboard = (FlexibleLeaderboard) leaderboardsByName.get(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
|
||||
if (defaultLeaderboard != null) {
|
||||
String columnName = trackedRace.getRace().getName();
|
||||
RaceColumnIdentifier columnIdentifier = new RaceColumnIdentifierImpl(defaultLeaderboard.getName(), columnName);
|
||||
defaultLeaderboard.addRace(trackedRace, columnName, /* medalRace */false,
|
||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory, columnIdentifier),
|
||||
defaultLeaderboard.getFleet(null));
|
||||
defaultLeaderboard.getFleet(null));
|
||||
}
|
||||
TrackedRaceReplicator trackedRaceReplicator = new TrackedRaceReplicator(trackedRace);
|
||||
trackedRaceReplicators.put(trackedRace, trackedRaceReplicator);
|
||||
@@ -1654,9 +1644,9 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordRaceLogEvent(String leaderboardName, String raceColumnName, String fleetName, RaceLogEvent event) {
|
||||
RecordRaceLogEvent command = new RecordRaceLogEvent(leaderboardName, raceColumnName, fleetName, event);
|
||||
apply(command);
|
||||
public void recordRaceLogEvent(RaceLogIdentifier identifier, RaceLogEvent event) {
|
||||
//RaceLog raceLog = getRaceLog(identifier);
|
||||
//raceLog.add(event);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-6
@@ -3,18 +3,14 @@ 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;
|
||||
|
||||
private RaceLogStore raceLogStore;
|
||||
|
||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, RaceLogStore raceLogStore) {
|
||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||
super(regattaIdentifier, seriesName, columnName);
|
||||
this.raceLogStore = raceLogStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -22,7 +18,7 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColum
|
||||
RaceColumnInSeries result = null;
|
||||
Series series = getSeries(toState);
|
||||
if (series != null) {
|
||||
result = series.addRaceColumn(getColumnName(), toState, raceLogStore);
|
||||
result = series.addRaceColumn(getColumnName(), toState);
|
||||
if(result != null && series.getRegatta().isPersistent()) {
|
||||
toState.updateStoredRegatta(series.getRegatta());
|
||||
}
|
||||
|
||||
+3
-6
@@ -15,7 +15,6 @@ 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;
|
||||
@@ -25,22 +24,20 @@ 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, RaceLogStore raceLogStore) {
|
||||
boolean persistent, ScoringScheme scoringScheme) {
|
||||
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, raceLogStore);
|
||||
persistent, scoringScheme);
|
||||
}
|
||||
|
||||
private Iterable<? extends Series> createSeries(TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||
@@ -48,7 +45,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, raceLogStore);
|
||||
emptyRaceColumnNamesList, trackedRegattaRegistry);
|
||||
result.add(s);
|
||||
}
|
||||
return result;
|
||||
|
||||
-1
@@ -28,7 +28,6 @@ public class RecordRaceLogEvent extends AbstractRacingEventServiceOperation<Void
|
||||
Leaderboard leaderboard = toState.getLeaderboardByName(leaderboardName);
|
||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||
raceColumn.recordRaceLogEvent(leaderboardName, fleet, event);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user