mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 09:41:00 +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.mongodb.DBObject;
|
||||||
import com.sap.sailing.domain.base.Event;
|
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.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
import com.sap.sailing.domain.base.Regatta;
|
||||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
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.Leaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||||
import com.sap.sailing.domain.leaderboard.LeaderboardRegistry;
|
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.RaceLog;
|
||||||
|
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
import com.sap.sailing.domain.tracking.WindTrack;
|
import com.sap.sailing.domain.tracking.WindTrack;
|
||||||
|
|
||||||
@@ -86,5 +85,5 @@ public interface DomainObjectFactory {
|
|||||||
|
|
||||||
Map<String, Regatta> loadRaceIDToRegattaAssociations(RegattaRegistry regattaRegistry);
|
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;
|
package com.sap.sailing.domain.persistence;
|
||||||
|
|
||||||
import com.sap.sailing.domain.persistence.impl.MongoRaceLogStoreFactoryImpl;
|
import com.sap.sailing.domain.persistence.impl.MongoRaceLogStoreFactoryImpl;
|
||||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
|
||||||
import com.sap.sailing.mongodb.MongoDBService;
|
import com.sap.sailing.mongodb.MongoDBService;
|
||||||
|
|
||||||
public interface MongoRaceLogStoreFactory {
|
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]
|
* 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
|
* 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);
|
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.impl.ScoreCorrectionImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
||||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
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.Flags;
|
||||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
|
||||||
import com.sap.sailing.domain.racelog.RaceLog;
|
import com.sap.sailing.domain.racelog.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
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.RaceLogRaceStatus;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
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.racelog.impl.RaceLogImpl;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
import com.sap.sailing.domain.tracking.Wind;
|
import com.sap.sailing.domain.tracking.Wind;
|
||||||
@@ -364,12 +361,9 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
|||||||
fleets.add(result.getFleet(null));
|
fleets.add(result.getFleet(null));
|
||||||
}
|
}
|
||||||
String columnName = (String) dbRaceColumn.get(FieldNames.LEADERBOARD_COLUMN_NAME.name());
|
String columnName = (String) dbRaceColumn.get(FieldNames.LEADERBOARD_COLUMN_NAME.name());
|
||||||
RaceColumnIdentifier columnIdentifier = new RaceColumnIdentifierImpl(result.getName(), columnName);
|
|
||||||
|
|
||||||
RaceColumn raceColumn = result.addRaceColumn(columnName,
|
RaceColumn raceColumn = result.addRaceColumn(columnName,
|
||||||
(Boolean) dbRaceColumn.get(FieldNames.LEADERBOARD_IS_MEDAL_RACE_COLUMN.name()),
|
(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]));
|
fleets.toArray(new Fleet[0]));
|
||||||
for (Map.Entry<String, RaceIdentifier> e : raceIdentifiers.entrySet()) {
|
for (Map.Entry<String, RaceIdentifier> e : raceIdentifiers.entrySet()) {
|
||||||
raceColumn.setRaceIdentifier(fleetsByName.get(e.getKey()), e.getValue());
|
raceColumn.setRaceIdentifier(fleetsByName.get(e.getKey()), e.getValue());
|
||||||
@@ -828,9 +822,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
|||||||
Map<String, Fleet> fleetsByName = loadFleets(dbFleets);
|
Map<String, Fleet> fleetsByName = loadFleets(dbFleets);
|
||||||
BasicDBList dbRaceColumns = (BasicDBList) dbSeries.get(FieldNames.SERIES_RACE_COLUMNS.name());
|
BasicDBList dbRaceColumns = (BasicDBList) dbSeries.get(FieldNames.SERIES_RACE_COLUMNS.name());
|
||||||
Iterable<String> raceColumnNames = loadRaceColumnNames(dbRaceColumns, fleetsByName);
|
Iterable<String> raceColumnNames = loadRaceColumnNames(dbRaceColumns, fleetsByName);
|
||||||
Series series = new SeriesImpl(name, isMedal, fleetsByName.values(), raceColumnNames, trackedRegattaRegistry,
|
Series series = new SeriesImpl(name, isMedal, fleetsByName.values(), raceColumnNames, trackedRegattaRegistry);
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(
|
|
||||||
MongoFactory.INSTANCE.getDefaultMongoObjectFactory(), this));
|
|
||||||
loadRaceColumnRaceLinks(dbRaceColumns, series);
|
loadRaceColumnRaceLinks(dbRaceColumns, series);
|
||||||
return series;
|
return series;
|
||||||
}
|
}
|
||||||
@@ -910,12 +902,11 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RaceLog loadRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
public RaceLog loadRaceLog(RaceLogIdentifier identifier) {
|
||||||
RaceLog result = new RaceLogImpl(RaceLogImpl.class.getSimpleName());
|
RaceLog result = new RaceLogImpl(RaceLogImpl.class.getSimpleName());
|
||||||
try {
|
try {
|
||||||
BasicDBObject query = new BasicDBObject();
|
BasicDBObject query = new BasicDBObject();
|
||||||
query.put(FieldNames.RACE_COLUMN_IDENTIFIER.name(), identifier.getIdentifier());
|
query.put(FieldNames.RACE_LOG_IDENTIFIER.name(), identifier.getIdentifier());
|
||||||
query.put(FieldNames.FLEET_NAME.name(), fleet.getName());
|
|
||||||
DBCollection raceLog = database.getCollection(CollectionNames.RACE_LOGS.name());
|
DBCollection raceLog = database.getCollection(CollectionNames.RACE_LOGS.name());
|
||||||
for (DBObject o : raceLog.find(query)) {
|
for (DBObject o : raceLog.find(query)) {
|
||||||
RaceLogEvent raceLogEvent = loadRaceLogEvent((DBObject) o.get(FieldNames.RACE_LOG_EVENT.name()));
|
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_ID_AS_STRING,
|
||||||
|
|
||||||
// race log
|
// 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, 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;
|
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.SettableScoreCorrection;
|
||||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
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.RaceLogEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
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.racelog.RaceLogStartTimeEvent;
|
||||||
import com.sap.sailing.domain.tracking.Positioned;
|
import com.sap.sailing.domain.tracking.Positioned;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -478,31 +478,26 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
|||||||
|
|
||||||
public DBCollection getRaceLogCollection() {
|
public DBCollection getRaceLogCollection() {
|
||||||
DBCollection result = database.getCollection(CollectionNames.RACE_LOGS.name());
|
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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DBObject storeRaceLogEntry(RaceColumnIdentifier raceColumnIdentifier, Fleet fleet, RaceLogFlagEvent flagEvent) {
|
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogFlagEvent flagEvent) {
|
||||||
BasicDBObject result = new BasicDBObject();
|
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));
|
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFlagEvent(flagEvent));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DBObject storeRaceLogEntry(RaceColumnIdentifier raceColumnIdentifier, Fleet fleet, RaceLogStartTimeEvent startTimeEvent) {
|
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogStartTimeEvent startTimeEvent) {
|
||||||
BasicDBObject result = new BasicDBObject();
|
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));
|
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogStartTimeEvent(startTimeEvent));
|
||||||
return result;
|
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) {
|
private Object storeRaceLogStartTimeEvent(RaceLogStartTimeEvent startTimeEvent) {
|
||||||
DBObject result = new BasicDBObject();
|
DBObject result = new BasicDBObject();
|
||||||
storeTimed(startTimeEvent, result);
|
storeTimed(startTimeEvent, result);
|
||||||
|
|||||||
+6
-10
@@ -3,35 +3,31 @@ package com.sap.sailing.domain.persistence.impl;
|
|||||||
import com.mongodb.DB;
|
import com.mongodb.DB;
|
||||||
import com.mongodb.DBCollection;
|
import com.mongodb.DBCollection;
|
||||||
import com.mongodb.DBObject;
|
import com.mongodb.DBObject;
|
||||||
import com.sap.sailing.domain.base.Fleet;
|
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
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.RaceLogCourseAreaChangedEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
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.RaceLogPassChangeEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||||
|
|
||||||
public class MongoRaceLogListener implements RaceLogEventVisitor {
|
public class MongoRaceLogListener implements RaceLogEventVisitor {
|
||||||
|
|
||||||
private final RaceColumnIdentifier raceColumnIdentifier;
|
private final RaceLogIdentifier raceLogIdentifier;
|
||||||
private final Fleet fleet;
|
|
||||||
private final MongoObjectFactoryImpl mongoObjectFactory;
|
private final MongoObjectFactoryImpl mongoObjectFactory;
|
||||||
private final DBCollection raceLogsCollection;
|
private final DBCollection raceLogsCollection;
|
||||||
|
|
||||||
public MongoRaceLogListener(RaceColumnIdentifier identifier, Fleet fleet,
|
public MongoRaceLogListener(RaceLogIdentifier identifier, MongoObjectFactory mongoObjectFactory, DB database) {
|
||||||
MongoObjectFactory mongoObjectFactory, DB database) {
|
|
||||||
super();
|
super();
|
||||||
this.raceColumnIdentifier = identifier;
|
this.raceLogIdentifier = identifier;
|
||||||
this.mongoObjectFactory = (MongoObjectFactoryImpl) mongoObjectFactory;
|
this.mongoObjectFactory = (MongoObjectFactoryImpl) mongoObjectFactory;
|
||||||
this.raceLogsCollection = this.mongoObjectFactory.getRaceLogCollection();
|
this.raceLogsCollection = this.mongoObjectFactory.getRaceLogCollection();
|
||||||
this.fleet = fleet;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(RaceLogFlagEvent event) {
|
public void visit(RaceLogFlagEvent event) {
|
||||||
DBObject flagEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceColumnIdentifier, fleet, event);
|
DBObject flagEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||||
raceLogsCollection.insert(flagEventTrackEntry);
|
raceLogsCollection.insert(flagEventTrackEntry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +43,7 @@ public class MongoRaceLogListener implements RaceLogEventVisitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visit(RaceLogStartTimeEvent event) {
|
public void visit(RaceLogStartTimeEvent event) {
|
||||||
DBObject startTimeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceColumnIdentifier, fleet, event);
|
DBObject startTimeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||||
raceLogsCollection.insert(startTimeEventTrackEntry);
|
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.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoRaceLogStore;
|
import com.sap.sailing.domain.persistence.MongoRaceLogStore;
|
||||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
||||||
import com.sap.sailing.domain.racelog.RaceColumnIdentifier;
|
|
||||||
|
|
||||||
public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
||||||
private final DB db;
|
private final DB db;
|
||||||
@@ -14,15 +13,9 @@ public class MongoRaceLogStoreFactoryImpl implements MongoRaceLogStoreFactory {
|
|||||||
this.db = db;
|
this.db = db;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory,DomainObjectFactory domainObjectFactory,
|
|
||||||
RaceColumnIdentifier raceColumnIdentifier) {
|
|
||||||
return new MongoRaceLogStoreImpl(db, mongoObjectFactory, domainObjectFactory, raceColumnIdentifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MongoRaceLogStore getMongoRaceLogStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) {
|
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 java.util.Map;
|
||||||
|
|
||||||
import com.mongodb.DB;
|
import com.mongodb.DB;
|
||||||
import com.sap.sailing.domain.base.Fleet;
|
|
||||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoRaceLogStore;
|
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.RaceLog;
|
||||||
|
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||||
|
|
||||||
public class MongoRaceLogStoreImpl extends EmptyRaceLogStore implements MongoRaceLogStore {
|
public class MongoRaceLogStoreImpl extends EmptyRaceLogStore implements MongoRaceLogStore {
|
||||||
private transient final DB db;
|
private transient final DB db;
|
||||||
private final MongoObjectFactory mongoObjectFactory;
|
private final MongoObjectFactory mongoObjectFactory;
|
||||||
private final DomainObjectFactory domainObjectFactory;
|
private final DomainObjectFactory domainObjectFactory;
|
||||||
private final RaceColumnIdentifier identifier;
|
private final Map<RaceLogIdentifier, RaceLog> raceLogCache;
|
||||||
private final Map<Fleet, RaceLog> raceLogCache;
|
|
||||||
|
|
||||||
public MongoRaceLogStoreImpl(DB db, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory,
|
public MongoRaceLogStoreImpl(DB db, MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) {
|
||||||
RaceColumnIdentifier identifier) {
|
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.mongoObjectFactory = mongoObjectFactory;
|
this.mongoObjectFactory = mongoObjectFactory;
|
||||||
this.domainObjectFactory = domainObjectFactory;
|
this.domainObjectFactory = domainObjectFactory;
|
||||||
this.identifier = identifier;
|
this.raceLogCache = new HashMap<RaceLogIdentifier, RaceLog>();
|
||||||
this.raceLogCache = new HashMap<Fleet, RaceLog>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public RaceLog getRaceLog(Fleet fleet) {
|
|
||||||
return getRaceLog(identifier, fleet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
public RaceLog getRaceLog(RaceLogIdentifier identifier) {
|
||||||
if (identifier == null)
|
|
||||||
return null;
|
|
||||||
RaceLog log;
|
RaceLog log;
|
||||||
if (!raceLogCache.containsKey(fleet)) {
|
log = domainObjectFactory.loadRaceLog(identifier);
|
||||||
log = domainObjectFactory.loadRaceLog(identifier, fleet);
|
log.addListener(new MongoRaceLogListener(identifier, mongoObjectFactory, db));
|
||||||
log.addListener(new MongoRaceLogListener(identifier, fleet, mongoObjectFactory, db));
|
|
||||||
raceLogCache.put(fleet, log);
|
|
||||||
} else {
|
|
||||||
log = raceLogCache.get(fleet);
|
|
||||||
}
|
|
||||||
return log;
|
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.Regatta;
|
||||||
import com.sap.sailing.domain.base.Waypoint;
|
import com.sap.sailing.domain.base.Waypoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
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.MessageType;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterTransceiver;
|
import com.sap.sailing.domain.swisstimingadapter.SailMasterTransceiver;
|
||||||
@@ -337,7 +336,7 @@ public class EndToEndListeningStoreAndFowardTest {
|
|||||||
for (String raceToTrack : racesToTrack) {
|
for (String raceToTrack : racesToTrack) {
|
||||||
RacesHandle raceHandle = racingEventService.addSwissTimingRace(/* regattaToAddTo */ null /* use a default regatta */,
|
RacesHandle raceHandle = racingEventService.addSwissTimingRace(/* regattaToAddTo */ null /* use a default regatta */,
|
||||||
raceToTrack, "localhost", /* canSendRequests */
|
raceToTrack, "localhost", /* canSendRequests */
|
||||||
CLIENT_PORT, false, emptyWindStore, -1, EmptyRaceLogStore.INSTANCE);
|
CLIENT_PORT, false, emptyWindStore, -1);
|
||||||
raceHandles.add(raceHandle);
|
raceHandles.add(raceHandle);
|
||||||
if (connector == null) {
|
if (connector == null) {
|
||||||
connector = racingEventService.getSwissTimingFactory().getOrCreateSailMasterConnector("localhost",
|
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.ScoringSchemeType;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
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.Competitor;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.Course;
|
import com.sap.sailing.domain.swisstimingadapter.Course;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||||
@@ -42,7 +41,7 @@ public class SimpleDomainFactoryTest {
|
|||||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||||
final String raceID = "SAX920103";
|
final String raceID = "SAX920103";
|
||||||
RaceDefinition raceDefinition = domainFactory.createRaceDefinition(domainFactory.getOrCreateDefaultRegatta(raceID,
|
RaceDefinition raceDefinition = domainFactory.createRaceDefinition(domainFactory.getOrCreateDefaultRegatta(raceID,
|
||||||
new RacingEventServiceImpl(), EmptyRaceLogStore.INSTANCE),
|
new RacingEventServiceImpl()),
|
||||||
new Race() {
|
new Race() {
|
||||||
@Override
|
@Override
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
@@ -93,8 +92,7 @@ public class SimpleDomainFactoryTest {
|
|||||||
public void testCourseConfigForMark() throws PatchFailedException {
|
public void testCourseConfigForMark() throws PatchFailedException {
|
||||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||||
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
||||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Race race = new RaceImpl("1234", "Race 1234");
|
Race race = new RaceImpl("1234", "Race 1234");
|
||||||
Iterable<Competitor> competitors = Collections.emptyList();
|
Iterable<Competitor> competitors = Collections.emptyList();
|
||||||
StartList startList = new StartListImpl("1234", competitors);
|
StartList startList = new StartListImpl("1234", competitors);
|
||||||
@@ -119,8 +117,7 @@ public class SimpleDomainFactoryTest {
|
|||||||
public void testCourseConfigForGate() throws PatchFailedException {
|
public void testCourseConfigForGate() throws PatchFailedException {
|
||||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||||
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
Regatta regatta = new RegattaImpl("TestEvent", /* boatClass */ null, new RacingEventServiceImpl(),
|
||||||
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), "123");
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Race race = new RaceImpl("1234", "Race 1234");
|
Race race = new RaceImpl("1234", "Race 1234");
|
||||||
Iterable<Competitor> competitors = Collections.emptyList();
|
Iterable<Competitor> competitors = Collections.emptyList();
|
||||||
StartList startList = new StartListImpl("1234", competitors);
|
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.Regatta;
|
||||||
import com.sap.sailing.domain.base.Waypoint;
|
import com.sap.sailing.domain.base.Waypoint;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
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.swisstimingadapter.impl.DomainFactoryImpl;
|
||||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||||
@@ -26,7 +25,7 @@ public interface DomainFactory {
|
|||||||
|
|
||||||
com.sap.sailing.domain.base.DomainFactory getBaseDomainFactory();
|
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);
|
Nationality getOrCreateNationality(String threeLetterIOCCode);
|
||||||
|
|
||||||
@@ -51,7 +50,7 @@ public interface DomainFactory {
|
|||||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||||
boolean canSendRequests, long delayToLiveInMillis,
|
boolean canSendRequests, long delayToLiveInMillis,
|
||||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore);
|
RaceSpecificMessageLoader messageLoader);
|
||||||
|
|
||||||
BoatClass getOrCreateBoatClassFromRaceID(String raceID);
|
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.base.Regatta;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
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.swisstimingadapter.impl.SwissTimingFactoryImpl;
|
||||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
@@ -52,8 +51,7 @@ public interface SwissTimingFactory {
|
|||||||
|
|
||||||
SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port, boolean canSendRequests);
|
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,
|
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;
|
||||||
RaceLogStore raceLogStore) throws InterruptedException, UnknownHostException, IOException, ParseException;
|
|
||||||
|
|
||||||
RaceTracker createRaceTracker(Regatta regatta, String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
RaceTracker createRaceTracker(Regatta regatta, String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
||||||
WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory,
|
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.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
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.Course;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.Fix;
|
import com.sap.sailing.domain.swisstimingadapter.Fix;
|
||||||
@@ -99,14 +98,14 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
public Regatta getOrCreateDefaultRegatta(String raceID, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
Regatta result = trackedRegattaRegistry.getRememberedRegattaForRace(raceID);
|
Regatta result = trackedRegattaRegistry.getRememberedRegattaForRace(raceID);
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = raceIDToRegattaCache.get(raceID);
|
result = raceIDToRegattaCache.get(raceID);
|
||||||
}
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = new RegattaImpl(raceID, getOrCreateBoatClassFromRaceID(raceID), trackedRegattaRegistry,
|
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()+")");
|
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+")");
|
||||||
raceIDToRegattaCache.put(raceID, result);
|
raceIDToRegattaCache.put(raceID, result);
|
||||||
}
|
}
|
||||||
@@ -309,9 +308,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
|
||||||
boolean canSendRequests, long delayToLiveInMillis,
|
boolean canSendRequests, long delayToLiveInMillis,
|
||||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore) {
|
RaceSpecificMessageLoader messageLoader) {
|
||||||
return new SwissTimingTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
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.base.Regatta;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
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.DomainFactory;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||||
@@ -81,10 +80,10 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
|
|||||||
@Override
|
@Override
|
||||||
public SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
public SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, boolean canSendRequests, long delayToLiveInMillis,
|
||||||
WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory,
|
WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory,
|
||||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws InterruptedException, UnknownHostException, IOException,
|
TrackedRegattaRegistry trackedRegattaRegistry) throws InterruptedException, UnknownHostException, IOException,
|
||||||
ParseException {
|
ParseException {
|
||||||
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, windStore, domainFactory, this, messageLoader,
|
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, windStore, domainFactory, this, messageLoader,
|
||||||
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis, raceLogStore);
|
trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.TrackedRaceStatusEnum;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
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.Course;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.Fix;
|
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,
|
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port, WindStore windStore,
|
||||||
DomainFactory domainFactory, SwissTimingFactory factory, RaceSpecificMessageLoader messageLoader,
|
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 {
|
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);
|
messageLoader, trackedRegattaRegistry, canSendRequests, delayToLiveInMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -1,7 +1,6 @@
|
|||||||
package com.sap.sailing.domain.swisstimingadapter.impl;
|
package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
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.DomainFactory;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||||
@@ -18,13 +17,12 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
|||||||
private final SwissTimingFactory swissTimingFactory;
|
private final SwissTimingFactory swissTimingFactory;
|
||||||
private final DomainFactory domainFactory;
|
private final DomainFactory domainFactory;
|
||||||
private final WindStore windStore;
|
private final WindStore windStore;
|
||||||
private final RaceLogStore raceLogStore;
|
|
||||||
private final RaceSpecificMessageLoader messageLoader;
|
private final RaceSpecificMessageLoader messageLoader;
|
||||||
private final long delayToLiveInMillis;
|
private final long delayToLiveInMillis;
|
||||||
|
|
||||||
public SwissTimingTrackingConnectivityParameters(String hostname, int port, String raceID, boolean canSendRequests, long delayToLiveInMillis,
|
public SwissTimingTrackingConnectivityParameters(String hostname, int port, String raceID, boolean canSendRequests, long delayToLiveInMillis,
|
||||||
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
SwissTimingFactory swissTimingFactory, DomainFactory domainFactory, WindStore windStore,
|
||||||
RaceSpecificMessageLoader messageLoader, RaceLogStore raceLogStore) {
|
RaceSpecificMessageLoader messageLoader) {
|
||||||
super();
|
super();
|
||||||
this.hostname = hostname;
|
this.hostname = hostname;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
@@ -34,14 +32,13 @@ public class SwissTimingTrackingConnectivityParameters implements RaceTrackingCo
|
|||||||
this.swissTimingFactory = swissTimingFactory;
|
this.swissTimingFactory = swissTimingFactory;
|
||||||
this.domainFactory = domainFactory;
|
this.domainFactory = domainFactory;
|
||||||
this.windStore = windStore;
|
this.windStore = windStore;
|
||||||
this.raceLogStore = raceLogStore;
|
|
||||||
this.messageLoader = messageLoader;
|
this.messageLoader = messageLoader;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws Exception {
|
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws Exception {
|
||||||
return swissTimingFactory.createRaceTracker(raceID, hostname, port, canSendRequests, delayToLiveInMillis, windStore, messageLoader,
|
return swissTimingFactory.createRaceTracker(raceID, hostname, port, canSendRequests, delayToLiveInMillis, windStore, messageLoader,
|
||||||
domainFactory, trackedRegattaRegistry, raceLogStore);
|
domainFactory, trackedRegattaRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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.DegreePosition;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
|
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.swisstimingadapter.DomainFactory;
|
||||||
import com.sap.sailing.domain.swisstimingreplayadapter.CompetitorStatus;
|
import com.sap.sailing.domain.swisstimingreplayadapter.CompetitorStatus;
|
||||||
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayListener;
|
import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayListener;
|
||||||
@@ -301,7 +300,7 @@ public class SwissTimingReplayToDomainAdapter extends SwissTimingReplayAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void createRace() {
|
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,
|
RaceDefinition race = domainFactory.createRaceDefinition(myRegatta,
|
||||||
currentRaceID, competitorsPerRaceID.get(currentRaceID), currentCourseDefinition);
|
currentRaceID, competitorsPerRaceID.get(currentRaceID), currentCourseDefinition);
|
||||||
racePerRaceID.put(currentRaceID, race);
|
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.base.impl.WaypointImpl;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||||
@@ -70,7 +69,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest {
|
|||||||
public void setUp() throws MalformedURLException, IOException, InterruptedException, URISyntaxException {
|
public void setUp() throws MalformedURLException, IOException, InterruptedException, URISyntaxException {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
domainFactory = new DomainFactoryImpl(new com.sap.sailing.domain.base.impl.DomainFactoryImpl());
|
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);
|
trackedRegatta = new DynamicTrackedRegattaImpl(domainRegatta);
|
||||||
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
ArrayList<Receiver> receivers = new ArrayList<Receiver>();
|
||||||
receivers.add(new RaceCourseReceiver(domainFactory, trackedRegatta, getTracTracEvent(),
|
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.LowPoint;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
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.tracking.impl.WindImpl;
|
||||||
import com.sap.sailing.domain.tractracadapter.ReceiverType;
|
import com.sap.sailing.domain.tractracadapter.ReceiverType;
|
||||||
|
|
||||||
@@ -43,20 +42,20 @@ public class LeaderboardForKielWeekTest extends OnlineTracTracBasedTest {
|
|||||||
MillisecondsTimePoint now = MillisecondsTimePoint.now();
|
MillisecondsTimePoint now = MillisecondsTimePoint.now();
|
||||||
loadRace("357c700a-9d9a-11e0-85be-406186cbf87c"); // 505 Race 2
|
loadRace("357c700a-9d9a-11e0-85be-406186cbf87c"); // 505 Race 2
|
||||||
Competitor hasso = getCompetitorByName("Dr.Plattner");
|
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);
|
assertEquals(21, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
||||||
Pair<Competitor, RaceColumn> key = new Pair<Competitor, RaceColumn>(hasso, column);
|
Pair<Competitor, RaceColumn> key = new Pair<Competitor, RaceColumn>(hasso, column);
|
||||||
assertEquals(21, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
assertEquals(21, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
||||||
assertEquals(21, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
assertEquals(21, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
||||||
loadRace("e876c3a0-9da8-11e0-85be-406186cbf87c"); // 505 Race 3
|
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);
|
key = new Pair<Competitor, RaceColumn>(hasso, column);
|
||||||
// In Race 3, Hasso ranked 31st
|
// In Race 3, Hasso ranked 31st
|
||||||
assertEquals(52, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
assertEquals(52, leaderboard.getTotalPoints(hasso, now), 0.000000001);
|
||||||
assertEquals(31, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
assertEquals(31, leaderboard.getContent(now).get(key).getTotalPoints(), 0.000000001);
|
||||||
assertEquals(31, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
assertEquals(31, leaderboard.getEntry(hasso, column, now).getTotalPoints(), 0.000000001);
|
||||||
loadRace("7c666e50-9dde-11e0-85be-406186cbf87c"); // 505 Race 4
|
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);
|
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
|
// 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);
|
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.LowPoint;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
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.MockedTrackedRaceWithFixedRank;
|
||||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -97,8 +96,8 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
|||||||
final String columnName = "abc";
|
final String columnName = "abc";
|
||||||
setupRaces(1, 0);
|
setupRaces(1, 0);
|
||||||
|
|
||||||
leaderboard.addRaceColumn(columnName, /* medalRace */ true, EmptyRaceLogStore.INSTANCE);
|
leaderboard.addRaceColumn(columnName, /* medalRace */ true);
|
||||||
leaderboard.addRace(testRaces.iterator().next(), columnName, /* medalRace */ false, EmptyRaceLogStore.INSTANCE, defaultFleet);
|
leaderboard.addRace(testRaces.iterator().next(), columnName, /* medalRace */ false, defaultFleet);
|
||||||
assertTrue(leaderboard.getRaceColumnByName(columnName).isMedalRace());
|
assertTrue(leaderboard.getRaceColumnByName(columnName).isMedalRace());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +122,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
|||||||
RaceColumn bestScoringRaceColumn = null;
|
RaceColumn bestScoringRaceColumn = null;
|
||||||
for (TrackedRace race : testRaces) {
|
for (TrackedRace race : testRaces) {
|
||||||
i++;
|
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);
|
raceColumnsInLeaderboard.put(race, raceColumn);
|
||||||
if (race.getRank(competitor) < bestScore) {
|
if (race.getRank(competitor) < bestScore) {
|
||||||
bestScore = race.getRank(competitor);
|
bestScore = race.getRank(competitor);
|
||||||
@@ -152,7 +151,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
|||||||
FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl("Test Leaderboard", scoreCorrection, new ResultDiscardingRuleImpl(
|
FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl("Test Leaderboard", scoreCorrection, new ResultDiscardingRuleImpl(
|
||||||
new int[] { 2 }), new LowPoint(), null);
|
new int[] { 2 }), new LowPoint(), null);
|
||||||
Fleet defaultFleet = leaderboard.getFleet(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(competitor, now), 0.00000001);
|
||||||
assertEquals(1., leaderboard.getTotalPoints(c2, now), 0.00000001);
|
assertEquals(1., leaderboard.getTotalPoints(c2, now), 0.00000001);
|
||||||
assertEquals(1., leaderboard.getTotalPoints(c3, 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(
|
FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl("Test Leaderboard", scoreCorrection, new ResultDiscardingRuleImpl(
|
||||||
new int[] { 2 }), new LowPoint(), null);
|
new int[] { 2 }), new LowPoint(), null);
|
||||||
Fleet defaultFleet = leaderboard.getFleet(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);
|
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
|
scoreCorrection.setMaxPointsReason(competitor, r2, MaxPointsReason.DND); // non-discardable disqualification
|
||||||
// assert that max points were given before discarding...
|
// assert that max points were given before discarding...
|
||||||
assertEquals(4.0, leaderboard.getEntry(competitor, r2, MillisecondsTimePoint.now()).getNetPoints(), 0.000000001);
|
assertEquals(4.0, leaderboard.getEntry(competitor, r2, MillisecondsTimePoint.now()).getNetPoints(), 0.000000001);
|
||||||
@@ -214,7 +213,7 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
|||||||
RaceColumn bestScoringRaceColumn = null;
|
RaceColumn bestScoringRaceColumn = null;
|
||||||
for (TrackedRace race : testRaces) {
|
for (TrackedRace race : testRaces) {
|
||||||
i++;
|
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);
|
raceColumnsInLeaderboard.put(race, raceColumn);
|
||||||
if (race.getRank(competitor) < bestScore) {
|
if (race.getRank(competitor) < bestScore) {
|
||||||
bestScore = race.getRank(competitor);
|
bestScore = race.getRank(competitor);
|
||||||
@@ -241,12 +240,12 @@ public class LeaderboardOfflineTest extends AbstractLeaderboardTest {
|
|||||||
i++;
|
i++;
|
||||||
raceColumnsInLeaderboard.put(race, leaderboard.addRace(race, "Test Race "+i,
|
raceColumnsInLeaderboard.put(race, leaderboard.addRace(race, "Test Race "+i,
|
||||||
/* medalRace */ numberOfUntrackedRaces == 0 && addOneMedalRace && i == testRaces.size(),
|
/* medalRace */ numberOfUntrackedRaces == 0 && addOneMedalRace && i == testRaces.size(),
|
||||||
EmptyRaceLogStore.INSTANCE, defaultFleet));
|
defaultFleet));
|
||||||
}
|
}
|
||||||
// add a few race columns not yet connected to a tracked race
|
// add a few race columns not yet connected to a tracked race
|
||||||
for (int j=0; j<numberOfUntrackedRaces; j++) {
|
for (int j=0; j<numberOfUntrackedRaces; j++) {
|
||||||
i++;
|
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) {
|
if (carry != null) {
|
||||||
leaderboard.setCarriedPoints(competitor, carry);
|
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.ResultDiscardingRuleImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.meta.LeaderboardGroupMetaLeaderboard;
|
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.test.mock.MockedTrackedRaceWithStartTimeAndRanks;
|
||||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -760,25 +759,25 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
|||||||
FlexibleLeaderboard leaderboard1 = new FlexibleLeaderboardImpl("Leaderboard 1", new ScoreCorrectionImpl(),
|
FlexibleLeaderboard leaderboard1 = new FlexibleLeaderboardImpl("Leaderboard 1", new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||||
leaderboard1.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f1)), "R1", /* medalRace */ false,
|
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,
|
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(
|
assertTrue(leaderboard1.getScoringScheme().getScoreComparator(/* nullScoresAreBetter */ false).compare(
|
||||||
leaderboard1.getTotalPoints(c[0], later), leaderboard1.getTotalPoints(c[3], later)) < 0); // c0 better than c3
|
leaderboard1.getTotalPoints(c[0], later), leaderboard1.getTotalPoints(c[3], later)) < 0); // c0 better than c3
|
||||||
FlexibleLeaderboard leaderboard2 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
FlexibleLeaderboard leaderboard2 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||||
leaderboard2.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f3)), "R1", /* medalRace */ false,
|
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,
|
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(
|
assertTrue(leaderboard2.getScoringScheme().getScoreComparator(/* nullScoresAreBetter */ false).compare(
|
||||||
leaderboard2.getTotalPoints(c[3], later), leaderboard2.getTotalPoints(c[0], later)) < 0); // c3 better than c0
|
leaderboard2.getTotalPoints(c[3], later), leaderboard2.getTotalPoints(c[0], later)) < 0); // c3 better than c0
|
||||||
FlexibleLeaderboard leaderboard3 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
FlexibleLeaderboard leaderboard3 = new FlexibleLeaderboardImpl("Leaderboard 3", new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
new ResultDiscardingRuleImpl(/* discarding thresholds */ new int[0]), new HighPoint(), null);
|
||||||
leaderboard3.addRace(new MockedTrackedRaceWithStartTimeAndRanks(now, Arrays.asList(f5)), "R1", /* medalRace */ false,
|
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,
|
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]) <
|
assertTrue(leaderboard3.getCompetitorsFromBestToWorst(later).indexOf(c[3]) <
|
||||||
leaderboard3.getCompetitorsFromBestToWorst(later).indexOf(c[0])); // c3 better than c0; won last race
|
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,
|
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);
|
qualifyingRaceColumnNames.add("Q" + i);
|
||||||
}
|
}
|
||||||
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
||||||
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null, EmptyRaceLogStore.INSTANCE);
|
qualifyingRaceColumnNames, /* trackedRegattaRegistry */null);
|
||||||
series.add(qualifyingSeries);
|
series.add(qualifyingSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -871,8 +870,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
|||||||
for (int i = 1; i <= numberOfFinalRaces; i++) {
|
for (int i = 1; i <= numberOfFinalRaces; i++) {
|
||||||
finalRaceColumnNames.add("F" + i);
|
finalRaceColumnNames.add("F" + i);
|
||||||
}
|
}
|
||||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */false, finalFleets, finalRaceColumnNames, /* trackedRegattaRegistry */ null,
|
Series finalSeries = new SeriesImpl("Final", /* isMedal */false, finalFleets, finalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
series.add(finalSeries);
|
series.add(finalSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -882,8 +880,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest {
|
|||||||
medalFleets.add(new FleetImpl("Medal"));
|
medalFleets.add(new FleetImpl("Medal"));
|
||||||
List<String> medalRaceColumnNames = new ArrayList<String>();
|
List<String> medalRaceColumnNames = new ArrayList<String>();
|
||||||
medalRaceColumnNames.add("M");
|
medalRaceColumnNames.add("M");
|
||||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */true, medalFleets, medalRaceColumnNames, /* trackedRegattaRegistry */ null,
|
Series medalSeries = new SeriesImpl("Medal", /* isMedal */true, medalFleets, medalRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
series.add(medalSeries);
|
series.add(medalSeries);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-8
@@ -15,7 +15,6 @@ import org.junit.After;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
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.tracking.impl.EmptyWindStore;
|
||||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||||
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
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"),
|
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=cce678c8-97e6-11e0-9aed-406186cbf87c"),
|
||||||
new URI(liveURI), new URI(storedURI),
|
new URI(liveURI), new URI(storedURI),
|
||||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false,
|
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false,
|
||||||
EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(), EmptyRaceLogStore.INSTANCE);
|
EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||||
kiwotest2 = domainFactory
|
kiwotest2 = domainFactory
|
||||||
.createRaceTracker(
|
.createRaceTracker(
|
||||||
new URL(
|
new URL(
|
||||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=11290bd6-97e7-11e0-9aed-406186cbf87c"),
|
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=11290bd6-97e7-11e0-9aed-406186cbf87c"),
|
||||||
new URI(liveURI), new URI(storedURI),
|
new URI(liveURI), new URI(storedURI),
|
||||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
kiwotest3 = domainFactory
|
kiwotest3 = domainFactory
|
||||||
.createRaceTracker(
|
.createRaceTracker(
|
||||||
new URL(
|
new URL(
|
||||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=39635b24-97e7-11e0-9aed-406186cbf87c"),
|
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=39635b24-97e7-11e0-9aed-406186cbf87c"),
|
||||||
new URI(liveURI), new URI(storedURI),
|
new URI(liveURI), new URI(storedURI),
|
||||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
weym470may112014_2 = domainFactory
|
weym470may112014_2 = domainFactory
|
||||||
.createRaceTracker(
|
.createRaceTracker(
|
||||||
new URL(
|
new URL(
|
||||||
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=04498426-7dfd-11e0-8236-406186cbf87c"),
|
httpAndHost+"/events/event_20110505_SailingTea/clientparams.php?event=event_20110505_SailingTea&race=04498426-7dfd-11e0-8236-406186cbf87c"),
|
||||||
new URI(liveURI), new URI(storedURI),
|
new URI(liveURI), new URI(storedURI),
|
||||||
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry(),
|
/* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l, /* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE, new DummyTrackedRegattaRegistry());
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
|
|
||||||
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
assertEquals("STG", kiwotest1.getRegatta().getBoatClass().getName());
|
||||||
assertEquals("505", kiwotest2.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.Position;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
@@ -133,7 +132,7 @@ public abstract class OnlineTracTracBasedTest extends AbstractTracTracLiveTest {
|
|||||||
if (domainFactory == null) {
|
if (domainFactory == null) {
|
||||||
domainFactory = new DomainFactoryImpl(new com.sap.sailing.domain.base.impl.DomainFactoryImpl());
|
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);
|
trackedRegatta = new DynamicTrackedRegattaImpl(domainEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -11,20 +11,20 @@ import java.util.List;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Mark;
|
|
||||||
import com.sap.sailing.domain.base.Competitor;
|
import com.sap.sailing.domain.base.Competitor;
|
||||||
import com.sap.sailing.domain.base.ControlPoint;
|
import com.sap.sailing.domain.base.ControlPoint;
|
||||||
import com.sap.sailing.domain.base.Course;
|
import com.sap.sailing.domain.base.Course;
|
||||||
import com.sap.sailing.domain.base.DomainFactory;
|
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.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
import com.sap.sailing.domain.base.Regatta;
|
||||||
import com.sap.sailing.domain.base.Waypoint;
|
import com.sap.sailing.domain.base.Waypoint;
|
||||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
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.CompetitorImpl;
|
||||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||||
import com.sap.sailing.domain.base.impl.GateImpl;
|
import com.sap.sailing.domain.base.impl.GateImpl;
|
||||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
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.MillisecondsTimePoint;
|
||||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
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.DegreeBearingImpl;
|
||||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
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.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||||
@@ -84,7 +83,7 @@ public class ReachingLegTest extends TrackBasedTest {
|
|||||||
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
||||||
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
||||||
Regatta regatta = new RegattaImpl(regattaName, boatClass, /* trackedRegattaRegistry */ null,
|
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);
|
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||||
// create a two-lap upwind/downwind course:
|
// 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.maptrack.client.io.TypeController;
|
||||||
import com.sap.sailing.domain.base.RaceDefinition;
|
import com.sap.sailing.domain.base.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Waypoint;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
||||||
@@ -95,8 +94,7 @@ public class ReceiveMarkPassingDataTest extends AbstractTracTracLiveTest {
|
|||||||
List<Receiver> receivers = new ArrayList<Receiver>();
|
List<Receiver> receivers = new ArrayList<Receiver>();
|
||||||
receivers.add(receiver);
|
receivers.add(receiver);
|
||||||
for (Receiver r : DomainFactory.INSTANCE.getUpdateReceivers(
|
for (Receiver r : DomainFactory.INSTANCE.getUpdateReceivers(
|
||||||
new DynamicTrackedRegattaImpl(DomainFactory.INSTANCE.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
new DynamicTrackedRegattaImpl(DomainFactory.INSTANCE.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null)),
|
||||||
EmptyRaceLogStore.INSTANCE)),
|
|
||||||
getTracTracEvent(), EmptyWindStore.INSTANCE, /* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l,
|
getTracTracEvent(), EmptyWindStore.INSTANCE, /* startOfTracking */ null, /* endOfTracking */ null, /* delayToLiveInMillis */ 0l,
|
||||||
/* simulator */ null, new DynamicRaceDefinitionSet() {
|
/* simulator */ null, new DynamicRaceDefinitionSet() {
|
||||||
@Override
|
@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.Competitor;
|
||||||
import com.sap.sailing.domain.base.RaceDefinition;
|
import com.sap.sailing.domain.base.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
@@ -66,8 +65,7 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
List<TypeController> listeners = new ArrayList<TypeController>();
|
List<TypeController> listeners = new ArrayList<TypeController>();
|
||||||
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
Regatta regatta = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
DynamicTrackedRegatta trackedRegatta = new DynamicTrackedRegattaImpl(regatta);
|
DynamicTrackedRegatta trackedRegatta = new DynamicTrackedRegattaImpl(regatta);
|
||||||
trackedRegatta.addRaceListener(new RaceListener() {
|
trackedRegatta.addRaceListener(new RaceListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+3
-4
@@ -5,21 +5,21 @@ import java.util.Collections;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Mark;
|
|
||||||
import com.sap.sailing.domain.base.Competitor;
|
import com.sap.sailing.domain.base.Competitor;
|
||||||
import com.sap.sailing.domain.base.ControlPoint;
|
import com.sap.sailing.domain.base.ControlPoint;
|
||||||
import com.sap.sailing.domain.base.Course;
|
import com.sap.sailing.domain.base.Course;
|
||||||
import com.sap.sailing.domain.base.DomainFactory;
|
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.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
import com.sap.sailing.domain.base.Regatta;
|
||||||
import com.sap.sailing.domain.base.Waypoint;
|
import com.sap.sailing.domain.base.Waypoint;
|
||||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
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.CompetitorImpl;
|
||||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||||
import com.sap.sailing.domain.base.impl.GateImpl;
|
import com.sap.sailing.domain.base.impl.GateImpl;
|
||||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
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.MillisecondsTimePoint;
|
||||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
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.DegreeBearingImpl;
|
||||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
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.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
@@ -94,7 +93,7 @@ public abstract class TrackBasedTest {
|
|||||||
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
Iterable<Competitor> competitors, TimePoint timePointForFixes) {
|
||||||
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
BoatClassImpl boatClass = new BoatClassImpl(boatClassName, /* typicallyStartsUpwind */ true);
|
||||||
Regatta regatta = new RegattaImpl(regattaName, boatClass, /* trackedRegattaRegistry */ null,
|
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);
|
TrackedRegatta trackedRegatta = new TrackedRegattaImpl(regatta);
|
||||||
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
List<Waypoint> waypoints = new ArrayList<Waypoint>();
|
||||||
// create a two-lap upwind/downwind course:
|
// create a two-lap upwind/downwind course:
|
||||||
|
|||||||
+1
-2
@@ -14,7 +14,6 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Competitor;
|
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.tracking.impl.EmptyWindStore;
|
||||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||||
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants;
|
||||||
@@ -55,7 +54,7 @@ public class UnicodeCharactersInCompetitorNamesTest {
|
|||||||
+ TracTracConnectionConstants.PORT_STORED),
|
+ TracTracConnectionConstants.PORT_STORED),
|
||||||
/* startOfTracking */null, /* endOfTracking */null, /* delayToLiveInMillis */0l,
|
/* startOfTracking */null, /* endOfTracking */null, /* delayToLiveInMillis */0l,
|
||||||
/* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE,
|
/* simulateWithStartTimeNow */ false, EmptyWindStore.INSTANCE,
|
||||||
new DummyTrackedRegattaRegistry(), EmptyRaceLogStore.INSTANCE);
|
new DummyTrackedRegattaRegistry());
|
||||||
|
|
||||||
Iterable<Competitor> competitors = fourtyninerYellow_2.getRacesHandle().getRaces().iterator().next()
|
Iterable<Competitor> competitors = fourtyninerYellow_2.getRacesHandle().getRaces().iterator().next()
|
||||||
.getCompetitors();
|
.getCompetitors();
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ import java.util.Set;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.BoatClass;
|
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.Competitor;
|
||||||
import com.sap.sailing.domain.base.ControlPoint;
|
import com.sap.sailing.domain.base.ControlPoint;
|
||||||
import com.sap.sailing.domain.base.DomainFactory;
|
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.Waypoint;
|
||||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
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.DegreeBearingImpl;
|
||||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
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.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||||
import com.sap.sailing.domain.tracking.Wind;
|
import com.sap.sailing.domain.tracking.Wind;
|
||||||
@@ -263,8 +262,7 @@ public class WindTest {
|
|||||||
final BoatClass boatClass = domainFactory.getOrCreateBoatClass("ESS40");
|
final BoatClass boatClass = domainFactory.getOrCreateBoatClass("ESS40");
|
||||||
DynamicTrackedRace trackedRace = new DynamicTrackedRaceImpl(new DynamicTrackedRegattaImpl(
|
DynamicTrackedRace trackedRace = new DynamicTrackedRaceImpl(new DynamicTrackedRegattaImpl(
|
||||||
new RegattaImpl("Test Regatta", boatClass,
|
new RegattaImpl("Test Regatta", boatClass,
|
||||||
/* trackedRegattaRegistry */ null, domainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), "123",
|
/* trackedRegattaRegistry */ null, domainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), "123")),
|
||||||
EmptyRaceLogStore.INSTANCE)),
|
|
||||||
new RaceDefinitionImpl("Test Race",
|
new RaceDefinitionImpl("Test Race",
|
||||||
new CourseImpl("Test Course", Arrays.asList(new Waypoint[] { w1, w2, w3 })),
|
new CourseImpl("Test Course", Arrays.asList(new Waypoint[] { w1, w2, w3 })),
|
||||||
boatClass, Collections.singleton(competitor)),
|
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.base.Waypoint;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
@@ -93,8 +92,7 @@ public interface DomainFactory {
|
|||||||
* boat class exists yet.
|
* boat class exists yet.
|
||||||
* @param trackedRegattaRegistry TODO
|
* @param trackedRegattaRegistry TODO
|
||||||
*/
|
*/
|
||||||
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
com.sap.sailing.domain.base.Regatta getOrCreateDefaultRegatta(Event event, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||||
RaceLogStore raceLogStore);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a race tracked for the specified URL/URIs and starts receiving all available existing and future push
|
* 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,
|
TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||||
URISyntaxException;
|
URISyntaxException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,7 +134,7 @@ public interface DomainFactory {
|
|||||||
*/
|
*/
|
||||||
RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||||
URISyntaxException;
|
URISyntaxException;
|
||||||
|
|
||||||
BoatClass getOrCreateBoatClass(CompetitorClass competitorClass);
|
BoatClass getOrCreateBoatClass(CompetitorClass competitorClass);
|
||||||
@@ -237,8 +235,7 @@ public interface DomainFactory {
|
|||||||
Pair<List<com.sap.sailing.domain.base.Competitor>, BoatClass> getCompetitorsAndDominantBoatClass(Race race);
|
Pair<List<com.sap.sailing.domain.base.Competitor>, BoatClass> getCompetitorsAndDominantBoatClass(Race race);
|
||||||
|
|
||||||
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI, URI storedURI,
|
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore);
|
||||||
RaceLogStore raceLogStore);
|
|
||||||
/**
|
/**
|
||||||
* Removes all knowledge about <code>tractracRace</code> which includes removing it from the race cache, from the
|
* 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
|
* {@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.DegreePosition;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
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.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
@@ -306,8 +305,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry,
|
public Regatta getOrCreateDefaultRegatta(com.tractrac.clientmodule.Event event, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
RaceLogStore raceLogStore) {
|
|
||||||
synchronized (regattaCache) {
|
synchronized (regattaCache) {
|
||||||
// FIXME Dialog with Lasse by Skype on 2011-06-17:
|
// 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?
|
// [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) {
|
if (result == null) {
|
||||||
result = new RegattaImpl(event.getName(), boatClass, trackedRegattaRegistry,
|
result = new RegattaImpl(event.getName(), boatClass, trackedRegattaRegistry,
|
||||||
// use the low-point system as the default scoring scheme
|
// 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);
|
regattaCache.put(key, result);
|
||||||
weakRegattaCache.put(event, result);
|
weakRegattaCache.put(event, result);
|
||||||
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+") because none found for key "+key);
|
logger.info("Created regatta "+result.getName()+" ("+result.hashCode()+") because none found for key "+key);
|
||||||
@@ -550,19 +548,19 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
@Override
|
@Override
|
||||||
public TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
public TracTracRaceTracker createRaceTracker(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) throws MalformedURLException, FileNotFoundException,
|
TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException, FileNotFoundException,
|
||||||
URISyntaxException {
|
URISyntaxException {
|
||||||
return new TracTracRaceTrackerImpl(this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
return new TracTracRaceTrackerImpl(this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI,
|
public RaceTracker createRaceTracker(Regatta regatta, URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
throws MalformedURLException, FileNotFoundException, URISyntaxException {
|
throws MalformedURLException, FileNotFoundException, URISyntaxException {
|
||||||
return new TracTracRaceTrackerImpl(regatta, this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
return new TracTracRaceTrackerImpl(regatta, this, paramURL, liveURI, storedURI, startOfTracking, endOfTracking, delayToLiveInMillis,
|
||||||
simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -578,9 +576,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
@Override
|
@Override
|
||||||
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI,
|
public RaceTrackingConnectivityParameters createTrackingConnectivityParameters(URL paramURL, URI liveURI,
|
||||||
URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
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,
|
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.base.Regatta;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
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.RaceTracker;
|
||||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
@@ -23,14 +22,13 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
|||||||
private final TimePoint startOfTracking;
|
private final TimePoint startOfTracking;
|
||||||
private final TimePoint endOfTracking;
|
private final TimePoint endOfTracking;
|
||||||
private final WindStore windStore;
|
private final WindStore windStore;
|
||||||
private final RaceLogStore raceLogStore;
|
|
||||||
private final DomainFactory domainFactory;
|
private final DomainFactory domainFactory;
|
||||||
private final long delayToLiveInMillis;
|
private final long delayToLiveInMillis;
|
||||||
private final boolean simulateWithStartTimeNow;
|
private final boolean simulateWithStartTimeNow;
|
||||||
|
|
||||||
public RaceTrackingConnectivityParametersImpl(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
public RaceTrackingConnectivityParametersImpl(URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking,
|
||||||
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore,
|
||||||
DomainFactory domainFactory, RaceLogStore raceLogStore) {
|
DomainFactory domainFactory) {
|
||||||
super();
|
super();
|
||||||
this.paramURL = paramURL;
|
this.paramURL = paramURL;
|
||||||
this.liveURI = liveURI;
|
this.liveURI = liveURI;
|
||||||
@@ -39,7 +37,6 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
|||||||
this.endOfTracking = endOfTracking;
|
this.endOfTracking = endOfTracking;
|
||||||
this.delayToLiveInMillis = delayToLiveInMillis;
|
this.delayToLiveInMillis = delayToLiveInMillis;
|
||||||
this.windStore = windStore;
|
this.windStore = windStore;
|
||||||
this.raceLogStore = raceLogStore;
|
|
||||||
this.domainFactory = domainFactory;
|
this.domainFactory = domainFactory;
|
||||||
this.simulateWithStartTimeNow = simulateWithStartTimeNow;
|
this.simulateWithStartTimeNow = simulateWithStartTimeNow;
|
||||||
}
|
}
|
||||||
@@ -48,7 +45,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
|||||||
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException,
|
public RaceTracker createRaceTracker(TrackedRegattaRegistry trackedRegattaRegistry) throws MalformedURLException,
|
||||||
FileNotFoundException, URISyntaxException {
|
FileNotFoundException, URISyntaxException {
|
||||||
RaceTracker tracker = domainFactory.createRaceTracker(paramURL, liveURI, storedURI, startOfTracking,
|
RaceTracker tracker = domainFactory.createRaceTracker(paramURL, liveURI, storedURI, startOfTracking,
|
||||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||||
return tracker;
|
return tracker;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +53,7 @@ public class RaceTrackingConnectivityParametersImpl implements RaceTrackingConne
|
|||||||
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry)
|
public RaceTracker createRaceTracker(Regatta regatta, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
RaceTracker tracker = domainFactory.createRaceTracker(regatta, paramURL, liveURI, storedURI, startOfTracking,
|
RaceTracker tracker = domainFactory.createRaceTracker(regatta, paramURL, liveURI, storedURI, startOfTracking,
|
||||||
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry, raceLogStore);
|
endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||||
return tracker;
|
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.TimePoint;
|
||||||
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
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.AbstractRaceTrackerImpl;
|
||||||
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
|
||||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
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,
|
protected TracTracRaceTrackerImpl(DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis,
|
||||||
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||||
this(KeyValue.setup(paramURL), domainFactory, paramURL, liveURI, storedURI, startOfTracking, endOfTracking,
|
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,
|
private TracTracRaceTrackerImpl(Event tractracEvent, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||||
this(tractracEvent, null, domainFactory, paramURL, liveURI, storedURI,
|
this(tractracEvent, null, domainFactory, paramURL, liveURI, storedURI,
|
||||||
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry,
|
startOfTracking, endOfTracking, delayToLiveInMillis, simulateWithStartTimeNow, windStore, trackedRegattaRegistry);
|
||||||
raceLogStore);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -145,10 +143,10 @@ public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements
|
|||||||
*/
|
*/
|
||||||
protected TracTracRaceTrackerImpl(Regatta regatta, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
protected TracTracRaceTrackerImpl(Regatta regatta, DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
TimePoint startOfTracking, TimePoint endOfTracking, long delayToLiveInMillis, boolean simulateWithStartTimeNow,
|
||||||
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore)
|
WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||||
this(KeyValue.setup(paramURL), regatta, domainFactory, paramURL, liveURI, storedURI, startOfTracking,
|
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,
|
private TracTracRaceTrackerImpl(Event tractracEvent, final Regatta regatta, DomainFactory domainFactory,
|
||||||
URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking,
|
URL paramURL, URI liveURI, URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking,
|
||||||
long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry,
|
long delayToLiveInMillis, boolean simulateWithStartTimeNow, WindStore windStore, TrackedRegattaRegistry trackedRegattaRegistry)
|
||||||
RaceLogStore raceLogStore)
|
|
||||||
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
throws URISyntaxException, MalformedURLException, FileNotFoundException {
|
||||||
super();
|
super();
|
||||||
this.tractracEvent = tractracEvent;
|
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;
|
// 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
|
// 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);
|
trackedRegatta = trackedRegattaRegistry.getOrCreateTrackedRegatta(this.regatta);
|
||||||
receivers = new HashSet<Receiver>();
|
receivers = new HashSet<Receiver>();
|
||||||
Set<TypeController> typeControllers = new HashSet<TypeController>();
|
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;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
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.domain.tracking.TrackedRace;
|
||||||
import com.sap.sailing.util.impl.RaceColumnListeners;
|
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
|
* 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.
|
* medal races. Otherwise, the explicit factor is used.
|
||||||
*/
|
*/
|
||||||
Double getExplicitFactor();
|
Double getExplicitFactor();
|
||||||
|
|
||||||
RaceLog getRaceLog(String leaderboardName, Fleet fleet);
|
|
||||||
|
|
||||||
void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,8 @@
|
|||||||
package com.sap.sailing.domain.base;
|
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 {
|
public interface RaceColumnInSeries extends RaceColumn {
|
||||||
Series getSeries();
|
Series getSeries();
|
||||||
|
|
||||||
Regatta getRegatta();
|
Regatta getRegatta();
|
||||||
|
|
||||||
RaceColumnIdentifier getRaceColumnIdentifier(String leaderboardName);
|
|
||||||
|
|
||||||
void recordRaceLogEvent(String leaderboardName, Fleet fleet, RaceLogEvent event);
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.sap.sailing.domain.base;
|
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.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
|
|
||||||
@@ -27,7 +26,7 @@ public interface Series extends SeriesData {
|
|||||||
|
|
||||||
Fleet getFleetByName(String fleetName);
|
Fleet getFleetByName(String fleetName);
|
||||||
|
|
||||||
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore);
|
RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry);
|
||||||
|
|
||||||
void moveRaceColumnUp(String raceColumnName);
|
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.base.RaceColumn;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
|
|
||||||
public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implements RaceColumn {
|
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, TrackedRace> trackedRaces;
|
||||||
private final Map<Fleet, RaceIdentifier> raceIdentifiers;
|
private final Map<Fleet, RaceIdentifier> raceIdentifiers;
|
||||||
protected RaceLogStore raceLogStore;
|
|
||||||
|
|
||||||
|
|
||||||
public AbstractRaceColumn(RaceLogStore raceLogStore) {
|
public AbstractRaceColumn() {
|
||||||
this.trackedRaces = new HashMap<Fleet, TrackedRace>();
|
this.trackedRaces = new HashMap<Fleet, TrackedRace>();
|
||||||
this.raceIdentifiers = new HashMap<Fleet, RaceIdentifier>();
|
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.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
import com.sap.sailing.domain.base.Regatta;
|
||||||
import com.sap.sailing.domain.base.Series;
|
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.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
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
|
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||||
* carried out.
|
* carried out.
|
||||||
*/
|
*/
|
||||||
public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
public RaceColumnInSeriesImpl(String name, Series series, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
super(raceLogStore);
|
super();
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.series = series;
|
this.series = series;
|
||||||
this.trackedRegattaRegistry = trackedRegattaRegistry;
|
this.trackedRegattaRegistry = trackedRegattaRegistry;
|
||||||
@@ -94,20 +89,4 @@ public class RaceColumnInSeriesImpl extends AbstractRaceColumn implements RaceCo
|
|||||||
super.setTrackedRace(fleet, trackedRace);
|
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.common.impl.NamedImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
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.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
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
|
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||||
* carried out.
|
* 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
|
this(baseName, boatClass, Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
||||||
.singletonList(new FleetImpl("Default")), /* race column names */new ArrayList<String>(),
|
.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.NamedImpl;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
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.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||||
@@ -43,7 +42,7 @@ public class SeriesImpl extends NamedImpl implements Series, RaceColumnListener
|
|||||||
* carried out.
|
* carried out.
|
||||||
*/
|
*/
|
||||||
public SeriesImpl(String name, boolean isMedal, Iterable<? extends Fleet> fleets, Iterable<String> raceColumnNames,
|
public SeriesImpl(String name, boolean isMedal, Iterable<? extends Fleet> fleets, Iterable<String> raceColumnNames,
|
||||||
TrackedRegattaRegistry trackedRegattaRegistry, RaceLogStore raceLogStore) {
|
TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
super(name);
|
super(name);
|
||||||
if (fleets == null || Util.isEmpty(fleets)) {
|
if (fleets == null || Util.isEmpty(fleets)) {
|
||||||
throw new IllegalArgumentException("Series must have at least one fleet");
|
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.isMedal = isMedal;
|
||||||
this.raceColumnListeners = new RaceColumnListeners();
|
this.raceColumnListeners = new RaceColumnListeners();
|
||||||
for (String raceColumnName : raceColumnNames) {
|
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.
|
* carried out.
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry,
|
public RaceColumnInSeries addRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
RaceLogStore raceLogStore) {
|
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry);
|
||||||
RaceColumnInSeriesImpl result = createRaceColumn(raceColumnName, trackedRegattaRegistry, raceLogStore);
|
|
||||||
if (raceColumnListeners.canAddRaceColumnToContainer(result)) {
|
if (raceColumnListeners.canAddRaceColumnToContainer(result)) {
|
||||||
result.addRaceColumnListener(this);
|
result.addRaceColumnListener(this);
|
||||||
raceColumns.add(result);
|
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
|
* this column's series {@link Regatta}, respectively. If <code>null</code>, the re-association won't be
|
||||||
* carried out.
|
* carried out.
|
||||||
*/
|
*/
|
||||||
private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry,
|
private RaceColumnInSeriesImpl createRaceColumn(String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry) {
|
||||||
RaceLogStore raceLogStore) {
|
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry);
|
||||||
RaceColumnInSeriesImpl result = new RaceColumnInSeriesImpl(raceColumnName, this, trackedRegattaRegistry, raceLogStore);
|
|
||||||
return result;
|
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.Regatta;
|
||||||
import com.sap.sailing.domain.base.Series;
|
import com.sap.sailing.domain.base.Series;
|
||||||
import com.sap.sailing.domain.common.Renamable;
|
import com.sap.sailing.domain.common.Renamable;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,28 +45,25 @@ public interface FlexibleLeaderboard extends Leaderboard, Renamable {
|
|||||||
* @param fleets
|
* @param fleets
|
||||||
* the fleets to add to the {@link RaceColumn} created. If no fleets are specified, a single default
|
* 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.
|
* fleet will be assigned to the race column created.
|
||||||
*
|
|
||||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
* @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
|
* 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
|
* 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>
|
* 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.
|
* as its tracked race, is created and added to this leaderboard.
|
||||||
*
|
|
||||||
* @param medalRace
|
* @param medalRace
|
||||||
* tells if the column to add represents a medal race which has double score and cannot be discarded;
|
* 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
|
* ignored if the column named <code>columnName</code> already exists
|
||||||
*
|
|
||||||
* @param fleets
|
* @param fleets
|
||||||
* the fleets to add to the {@link RaceColumn} created. If no fleets are specified, a single default
|
* 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.
|
* fleet will be assigned to the race column created.
|
||||||
*
|
*
|
||||||
* @return the race column in the leaderboard used to represent the tracked <code>race</code>
|
* @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);
|
void removeRaceColumn(String columnName);
|
||||||
|
|
||||||
|
|||||||
-4
@@ -1,12 +1,8 @@
|
|||||||
package com.sap.sailing.domain.leaderboard;
|
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.base.RaceColumn;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
|
||||||
|
|
||||||
public interface FlexibleRaceColumn extends RaceColumn {
|
public interface FlexibleRaceColumn extends RaceColumn {
|
||||||
void setName(String newName);
|
void setName(String newName);
|
||||||
void setIsMedalRace(boolean isMedalRace);
|
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.ScoringScheme;
|
||||||
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
||||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
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.TrackedRace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,13 +64,13 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
FlexibleRaceColumn column = getRaceColumnByName(name);
|
||||||
if (column != null) {
|
if (column != null) {
|
||||||
final String msg = "Trying to create race column with duplicate name "+name+" in leaderboard +"+getName();
|
final String msg = "Trying to create race column with duplicate name "+name+" in leaderboard +"+getName();
|
||||||
logger.severe(msg);
|
logger.severe(msg);
|
||||||
} else {
|
} else {
|
||||||
column = createRaceColumn(name, medalRace, raceLogStore, fleets);
|
column = createRaceColumn(name, medalRace, fleets);
|
||||||
column.addRaceColumnListener(this);
|
column.addRaceColumnListener(this);
|
||||||
races.add(column);
|
races.add(column);
|
||||||
getRaceColumnListeners().notifyListenersAboutRaceColumnAddedToContainer(column);
|
getRaceColumnListeners().notifyListenersAboutRaceColumnAddedToContainer(column);
|
||||||
@@ -109,10 +108,10 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
FlexibleRaceColumn column = getRaceColumnByName(columnName);
|
||||||
if (column == null) {
|
if (column == null) {
|
||||||
column = createRaceColumn(columnName, medalRace, raceLogStore, fleet);
|
column = createRaceColumn(columnName, medalRace, fleet);
|
||||||
column.addRaceColumnListener(this);
|
column.addRaceColumnListener(this);
|
||||||
races.add(column);
|
races.add(column);
|
||||||
}
|
}
|
||||||
@@ -120,8 +119,8 @@ public class FlexibleLeaderboardImpl extends AbstractLeaderboardImpl implements
|
|||||||
return column;
|
return column;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, RaceLogStore raceLogStore, Fleet... fleets) {
|
protected RaceColumnImpl createRaceColumn(String columnName, boolean medalRace, Fleet... fleets) {
|
||||||
return new RaceColumnImpl(columnName, medalRace, raceLogStore, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
return new RaceColumnImpl(columnName, medalRace, turnNullOrEmptyFleetsIntoDefaultFleet(fleets));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Iterable<Fleet> turnNullOrEmptyFleetsIntoDefaultFleet(Fleet... 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.Fleet;
|
||||||
import com.sap.sailing.domain.base.impl.AbstractRaceColumn;
|
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.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 {
|
public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceColumn {
|
||||||
private static final long serialVersionUID = -7801617988982540470L;
|
private static final long serialVersionUID = -7801617988982540470L;
|
||||||
@@ -23,8 +19,8 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
|||||||
private final Iterable<Fleet> fleets;
|
private final Iterable<Fleet> fleets;
|
||||||
private boolean medalRace;
|
private boolean medalRace;
|
||||||
|
|
||||||
public RaceColumnImpl(String name, boolean medalRace, RaceLogStore raceLogStore, Iterable<Fleet> fleets) {
|
public RaceColumnImpl(String name, boolean medalRace, Iterable<Fleet> fleets) {
|
||||||
super(raceLogStore);
|
super();
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.medalRace = medalRace;
|
this.medalRace = medalRace;
|
||||||
List<Fleet> myFleets = new ArrayList<Fleet>();
|
List<Fleet> myFleets = new ArrayList<Fleet>();
|
||||||
@@ -60,25 +56,4 @@ public class RaceColumnImpl extends AbstractRaceColumn implements FlexibleRaceCo
|
|||||||
public Iterable<Fleet> getFleets() {
|
public Iterable<Fleet> getFleets() {
|
||||||
return fleets;
|
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.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
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;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -149,15 +147,4 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R
|
|||||||
public boolean isTransient() {
|
public boolean isTransient() {
|
||||||
return false;
|
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;
|
package com.sap.sailing.domain.racelog;
|
||||||
|
|
||||||
public interface RaceColumnIdentifier {
|
public interface RaceLogIdentifier {
|
||||||
|
|
||||||
String getIdentifier();
|
String getIdentifier();
|
||||||
|
|
||||||
@@ -1,13 +1,10 @@
|
|||||||
package com.sap.sailing.domain.racelog;
|
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.
|
* Capsulating store interface providing a {@link RaceLog} for a given regatta / race combination.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public interface RaceLogStore {
|
public interface RaceLogStore {
|
||||||
RaceLog getRaceLog(Fleet fleet);
|
RaceLog getRaceLog(RaceLogIdentifier identifier);
|
||||||
|
|
||||||
RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet);
|
|
||||||
}
|
}
|
||||||
+3
-9
@@ -1,8 +1,7 @@
|
|||||||
package com.sap.sailing.domain.racelog.impl;
|
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.RaceLog;
|
||||||
|
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -12,14 +11,9 @@ import com.sap.sailing.domain.racelog.RaceLogStore;
|
|||||||
*/
|
*/
|
||||||
public class EmptyRaceLogStore implements RaceLogStore {
|
public class EmptyRaceLogStore implements RaceLogStore {
|
||||||
public static EmptyRaceLogStore INSTANCE = new EmptyRaceLogStore();
|
public static EmptyRaceLogStore INSTANCE = new EmptyRaceLogStore();
|
||||||
|
|
||||||
@Override
|
|
||||||
public RaceLog getRaceLog(Fleet fleet) {
|
|
||||||
return new RaceLogImpl("Lock for " + fleet.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RaceLog getRaceLog(RaceColumnIdentifier identifier, Fleet fleet) {
|
public RaceLog getRaceLog(RaceLogIdentifier identifier) {
|
||||||
return new RaceLogImpl("Lock for " + identifier.getIdentifier() + "-" + fleet.toString());
|
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.DomainObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoRaceLogStoreFactory;
|
|
||||||
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingArchiveConfiguration;
|
import com.sap.sailing.domain.swisstimingadapter.SwissTimingArchiveConfiguration;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingConfiguration;
|
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 URI(liveURI), new URI(storedURI), new MillisecondsTimePoint(rr.trackingStartTime),
|
||||||
new MillisecondsTimePoint(rr.trackingEndTime),
|
new MillisecondsTimePoint(rr.trackingEndTime),
|
||||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow,
|
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS, simulateWithStartTimeNow);
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
|
||||||
if (trackWind) {
|
if (trackWind) {
|
||||||
new Thread("Wind tracking starter for race " + rr.regattaName + "/" + rr.name) {
|
new Thread("Wind tracking starter for race " + rr.regattaName + "/" + rr.name) {
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -2385,8 +2383,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
|||||||
final RacesHandle raceHandle = getService().addSwissTimingRace(regattaToAddTo, rr.ID, hostname, port,
|
final RacesHandle raceHandle = getService().addSwissTimingRace(regattaToAddTo, rr.ID, hostname, port,
|
||||||
canSendRequests,
|
canSendRequests,
|
||||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||||
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS,
|
RaceTracker.TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
|
||||||
if (trackWind) {
|
if (trackWind) {
|
||||||
new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) {
|
new Thread("Wind tracking starter for race " + rr.ID + "/" + rr.description) {
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -2439,10 +2436,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
|||||||
RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class),
|
RegattaImpl.getFullName(replayRaceDTO.rsc, replayRaceDTO.boat_class),
|
||||||
Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
Collections.singletonList(new SeriesImpl("Default", /* isMedal */false, Collections
|
||||||
.singletonList(new FleetImpl("Default")), /* race column names */
|
.singletonList(new FleetImpl("Default")), /* race column names */
|
||||||
new ArrayList<String>(), getService(),
|
new ArrayList<String>(), getService())), false,
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory))), false,
|
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
|
||||||
} else {
|
} else {
|
||||||
regatta = getService().getRegatta(regattaIdentifier);
|
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) {
|
public List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<String> columnNames) {
|
||||||
List<RaceColumnInSeriesDTO> result = new ArrayList<RaceColumnInSeriesDTO>();
|
List<RaceColumnInSeriesDTO> result = new ArrayList<RaceColumnInSeriesDTO>();
|
||||||
for(String columnName: columnNames) {
|
for(String columnName: columnNames) {
|
||||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName,
|
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
|
||||||
if(raceColumnInSeries != null) {
|
if(raceColumnInSeries != null) {
|
||||||
result.add(convertToRaceColumnInSeriesDTO(raceColumnInSeries));
|
result.add(convertToRaceColumnInSeriesDTO(raceColumnInSeries));
|
||||||
}
|
}
|
||||||
@@ -2944,8 +2938,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
|||||||
@Override
|
@Override
|
||||||
public RaceColumnInSeriesDTO addRaceColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
public RaceColumnInSeriesDTO addRaceColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||||
RaceColumnInSeriesDTO result = null;
|
RaceColumnInSeriesDTO result = null;
|
||||||
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName,
|
RaceColumnInSeries raceColumnInSeries = getService().apply(new AddColumnToSeries(regattaIdentifier, seriesName, columnName));
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
|
||||||
if(raceColumnInSeries != null) {
|
if(raceColumnInSeries != null) {
|
||||||
result = convertToRaceColumnInSeriesDTO(raceColumnInSeries);
|
result = convertToRaceColumnInSeriesDTO(raceColumnInSeries);
|
||||||
}
|
}
|
||||||
@@ -2981,8 +2974,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
|||||||
Regatta regatta = getService().apply(
|
Regatta regatta = getService().apply(
|
||||||
new AddSpecificRegatta(regattaName, boatClassName, UUID.randomUUID(),
|
new AddSpecificRegatta(regattaName, boatClassName, UUID.randomUUID(),
|
||||||
seriesNamesWithFleetNamesAndFleetOrderingAndMedal,
|
seriesNamesWithFleetNamesAndFleetOrderingAndMedal,
|
||||||
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType),
|
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType)));
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory)));
|
|
||||||
return convertToRegattaDTO(regatta);
|
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.MongoFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.impl.CollectionNames;
|
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.AbstractLeaderboardTest;
|
||||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||||
@@ -109,8 +108,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
|||||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true);
|
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true);
|
||||||
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
||||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||||
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 }, null);
|
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 }, null);
|
||||||
DomainObjectFactory dof = MongoFactory.INSTANCE.getDomainObjectFactory(getMongoService());
|
DomainObjectFactory dof = MongoFactory.INSTANCE.getDomainObjectFactory(getMongoService());
|
||||||
@@ -151,8 +149,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
|||||||
final String regattaBaseName = "Kieler Woche";
|
final String regattaBaseName = "Kieler Woche";
|
||||||
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
Regatta regattaProxy = createRegatta(regattaBaseName, boatClass, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
||||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
|
trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
|
||||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||||
logColumnsInRegatta(regatta);
|
logColumnsInRegatta(regatta);
|
||||||
@@ -364,22 +361,20 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
|||||||
qualifyingFleets.add(new FleetImpl("Yellow"));
|
qualifyingFleets.add(new FleetImpl("Yellow"));
|
||||||
qualifyingFleets.add(new FleetImpl("Blue"));
|
qualifyingFleets.add(new FleetImpl("Blue"));
|
||||||
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
Series qualifyingSeries = new SeriesImpl("Qualifying", /* isMedal */false, qualifyingFleets,
|
||||||
emptyRaceColumnNames, /* trackedRegattaRegistry */ null, EmptyRaceLogStore.INSTANCE);
|
emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||||
series.add(qualifyingSeries);
|
series.add(qualifyingSeries);
|
||||||
|
|
||||||
// -------- final series ------------
|
// -------- final series ------------
|
||||||
List<Fleet> finalFleets = new ArrayList<Fleet>();
|
List<Fleet> finalFleets = new ArrayList<Fleet>();
|
||||||
finalFleets.add(new FleetImpl("Gold", 1));
|
finalFleets.add(new FleetImpl("Gold", 1));
|
||||||
finalFleets.add(new FleetImpl("Silver", 2));
|
finalFleets.add(new FleetImpl("Silver", 2));
|
||||||
Series finalSeries = new SeriesImpl("Final", /* isMedal */ false, finalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null,
|
Series finalSeries = new SeriesImpl("Final", /* isMedal */ false, finalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
series.add(finalSeries);
|
series.add(finalSeries);
|
||||||
|
|
||||||
// ------------ medal --------------
|
// ------------ medal --------------
|
||||||
List<Fleet> medalFleets = new ArrayList<Fleet>();
|
List<Fleet> medalFleets = new ArrayList<Fleet>();
|
||||||
medalFleets.add(new FleetImpl("Medal"));
|
medalFleets.add(new FleetImpl("Medal"));
|
||||||
Series medalSeries = new SeriesImpl("Medal", /* isMedal */ true, medalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null,
|
Series medalSeries = new SeriesImpl("Medal", /* isMedal */ true, medalFleets, emptyRaceColumnNames, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
series.add(medalSeries);
|
series.add(medalSeries);
|
||||||
Regatta regatta = new RegattaImpl(regattaBaseName, boatClass, series, persistent, scoringScheme, "123");
|
Regatta regatta = new RegattaImpl(regattaBaseName, boatClass, series, persistent, scoringScheme, "123");
|
||||||
return regatta;
|
return regatta;
|
||||||
@@ -387,7 +382,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
|||||||
|
|
||||||
private void addRaceColumnsToSeries(List<String> finalRaceColumnNames, Series finalSeries) {
|
private void addRaceColumnsToSeries(List<String> finalRaceColumnNames, Series finalSeries) {
|
||||||
for (String raceColumnName : finalRaceColumnNames) {
|
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.MongoObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
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.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||||
import com.sap.sailing.mongodb.MongoDBService;
|
import com.sap.sailing.mongodb.MongoDBService;
|
||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
@@ -129,7 +128,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
|||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
racingEventService.addLeaderboard(leaderboard);
|
racingEventService.addLeaderboard(leaderboard);
|
||||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
racingEventService.addLeaderboard(leaderboard);
|
racingEventService.addLeaderboard(leaderboard);
|
||||||
@@ -186,7 +185,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
|||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
leaderboards.add(leaderboard);
|
leaderboards.add(leaderboard);
|
||||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
leaderboards.add(leaderboard);
|
leaderboards.add(leaderboard);
|
||||||
@@ -243,7 +242,7 @@ public class TestStoringAndRetrievingLeaderboardGroups extends AbstractMongoDBTe
|
|||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
leaderboards.add(leaderboard);
|
leaderboards.add(leaderboard);
|
||||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
leaderboard = new FlexibleLeaderboardImpl(leaderboardNames[1], new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
leaderboards.add(leaderboard);
|
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 FlexibleLeaderboard leaderboard = new FlexibleLeaderboardImpl(leaderboardName, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
final Fleet fleet = leaderboard.getFleet(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);
|
leaderboards.add(leaderboard);
|
||||||
|
|
||||||
final LeaderboardGroup group = new LeaderboardGroupImpl(groupName, groupDescription, false, leaderboards);
|
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.leaderboard.impl.ScoreCorrectionImpl;
|
||||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
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.MockedTrackedRaceWithFixedRank;
|
||||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRankAndManyCompetitors;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -50,10 +49,10 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
final int[] discardIndexResultsStartingWithHowManyRaces = new int[] { 5, 8 };
|
final int[] discardIndexResultsStartingWithHowManyRaces = new int[] { 5, 8 };
|
||||||
FlexibleLeaderboardImpl leaderboard = new FlexibleLeaderboardImpl(leaderboardName, new ScoreCorrectionImpl(),
|
FlexibleLeaderboardImpl leaderboard = new FlexibleLeaderboardImpl(leaderboardName, new ScoreCorrectionImpl(),
|
||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
leaderboard.addRaceColumn("R1", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
leaderboard.addRaceColumn("R1", /* medalRace */ false);
|
||||||
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
RaceColumn r2 = leaderboard.addRaceColumn("R2", /* medalRace */ false);
|
||||||
r2.setFactor(1.5);
|
r2.setFactor(1.5);
|
||||||
RaceColumn r3 = leaderboard.addRaceColumn("R3", /* medalRace */ false, EmptyRaceLogStore.INSTANCE);
|
RaceColumn r3 = leaderboard.addRaceColumn("R3", /* medalRace */ false);
|
||||||
r3.setFactor(2.5);
|
r3.setFactor(2.5);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
Leaderboard loadedLeaderboard = new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
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";
|
final String raceColumnName1 = "My First Race 1";
|
||||||
MockedTrackedRaceWithFixedRankAndManyCompetitors raceWithTwoCompetitors = new MockedTrackedRaceWithFixedRankAndManyCompetitors(wolfgang, /* rank */ 1, /* started */ true);
|
MockedTrackedRaceWithFixedRankAndManyCompetitors raceWithTwoCompetitors = new MockedTrackedRaceWithFixedRankAndManyCompetitors(wolfgang, /* rank */ 1, /* started */ true);
|
||||||
raceWithTwoCompetitors.addCompetitor(hasso);
|
raceWithTwoCompetitors.addCompetitor(hasso);
|
||||||
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
leaderboard.addRace(raceWithTwoCompetitors, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
leaderboard.setSuppressed(wolfgang, true);
|
leaderboard.setSuppressed(wolfgang, true);
|
||||||
assertTrue(Util.contains(leaderboard.getSuppressedCompetitors(), wolfgang));
|
assertTrue(Util.contains(leaderboard.getSuppressedCompetitors(), wolfgang));
|
||||||
assertFalse(Util.contains(leaderboard.getSuppressedCompetitors(), hasso));
|
assertFalse(Util.contains(leaderboard.getSuppressedCompetitors(), hasso));
|
||||||
@@ -117,16 +115,14 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
Competitor competitor = createCompetitor();
|
Competitor competitor = createCompetitor();
|
||||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||||
final String raceColumnName1 = "My First Race 1";
|
final String raceColumnName1 = "My First Race 1";
|
||||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
final String displayName = "$$$ ... The Renamed Competitor ... $$$";
|
final String displayName = "$$$ ... The Renamed Competitor ... $$$";
|
||||||
leaderboard.setDisplayName(competitor, displayName);
|
leaderboard.setDisplayName(competitor, displayName);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(
|
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(
|
||||||
leaderboardName, /* regattaRegistry */null);
|
leaderboardName, /* regattaRegistry */null);
|
||||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||||
loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false, EmptyRaceLogStore.INSTANCE,
|
loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
Competitor loadedCompetitor = loadedLeaderboard.getCompetitorByName(competitor.getName());
|
Competitor loadedCompetitor = loadedLeaderboard.getCompetitorByName(competitor.getName());
|
||||||
assertEquals(displayName, loadedLeaderboard.getDisplayName(loadedCompetitor));
|
assertEquals(displayName, loadedLeaderboard.getDisplayName(loadedCompetitor));
|
||||||
}
|
}
|
||||||
@@ -166,14 +162,12 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
new ResultDiscardingRuleImpl(discardIndexResultsStartingWithHowManyRaces), new LowPoint(), null);
|
||||||
Competitor competitor = createCompetitor();
|
Competitor competitor = createCompetitor();
|
||||||
TrackedRace raceWithOneCompetitor = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
TrackedRace raceWithOneCompetitor = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||||
leaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
leaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
leaderboard.setCarriedPoints(competitor, carriedPointsForWolfgangHunger);
|
leaderboard.setCarriedPoints(competitor, carriedPointsForWolfgangHunger);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||||
loadedLeaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace, ignored */ false, EmptyRaceLogStore.INSTANCE,
|
loadedLeaderboard.addRace(raceWithOneCompetitor, raceColumnName, /* medalRace, ignored */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||||
assertTrue(Arrays.equals(discardIndexResultsStartingWithHowManyRaces, loadedLeaderboard.getResultDiscardingRule()
|
assertTrue(Arrays.equals(discardIndexResultsStartingWithHowManyRaces, loadedLeaderboard.getResultDiscardingRule()
|
||||||
.getDiscardIndexResultsStartingWithHowManyRaces()));
|
.getDiscardIndexResultsStartingWithHowManyRaces()));
|
||||||
@@ -194,18 +188,16 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
Competitor competitor = createCompetitor();
|
Competitor competitor = createCompetitor();
|
||||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, leaderboard.getFleet(null));
|
||||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, EmptyRaceLogStore.INSTANCE,
|
|
||||||
leaderboard.getFleet(null));
|
|
||||||
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
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,
|
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||||
assertEquals(correctedPoints, (double) loadedLeaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, loadedColumn1), 0.00000001);
|
assertEquals(correctedPoints, (double) loadedLeaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, loadedColumn1), 0.00000001);
|
||||||
@@ -224,18 +216,16 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
Competitor competitor = createCompetitor();
|
Competitor competitor = createCompetitor();
|
||||||
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
TrackedRace raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, EmptyRaceLogStore.INSTANCE,
|
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false, leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, leaderboard.getFleet(null));
|
||||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true, EmptyRaceLogStore.INSTANCE,
|
|
||||||
leaderboard.getFleet(null));
|
|
||||||
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
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,
|
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||||
assertFalse(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
assertFalse(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn2));
|
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 raceWithOneCompetitor1 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 1, /* started */ true);
|
||||||
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
TrackedRace raceWithOneCompetitor2 = new MockedTrackedRaceWithFixedRank(competitor, /* rank */ 2, /* started */ true);
|
||||||
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false,
|
leaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true,
|
leaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace */ true,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
leaderboard.getScoreCorrection().correctScore(competitor, leaderboard.getRaceColumnByName(raceColumnName1), correctedPoints);
|
||||||
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
leaderboard.getScoreCorrection().setMaxPointsReason(competitor, leaderboard.getRaceColumnByName(raceColumnName2), maxPointsReason);
|
||||||
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
new MongoObjectFactoryImpl(db).storeLeaderboard(leaderboard);
|
||||||
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
FlexibleLeaderboard loadedLeaderboard = (FlexibleLeaderboard) new DomainObjectFactoryImpl(db).loadLeaderboard(leaderboardName, /* regattaRegistry */ null);
|
||||||
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
// attach tracked race to leaderboard to ensure that competitor object is assigned properly
|
||||||
RaceColumn loadedColumn1 = loadedLeaderboard.addRace(raceWithOneCompetitor1, raceColumnName1, /* medalRace, ignored */ false,
|
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,
|
RaceColumn loadedColumn2 = loadedLeaderboard.addRace(raceWithOneCompetitor2, raceColumnName2, /* medalRace, ignored */ false,
|
||||||
EmptyRaceLogStore.INSTANCE, leaderboard.getFleet(null));
|
leaderboard.getFleet(null));
|
||||||
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
assertEquals(leaderboardName, loadedLeaderboard.getName());
|
||||||
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
assertTrue(loadedLeaderboard.getScoreCorrection().isScoreCorrected(competitor, loadedColumn1));
|
||||||
assertEquals(correctedPoints, (double) loadedLeaderboard.getScoreCorrection().getExplicitScoreCorrection(competitor, loadedColumn1), 0.000000001);
|
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.RaceLog;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogRaceStatus;
|
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.test.AbstractTracTracLiveTest;
|
||||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
@@ -60,8 +59,7 @@ public class TestStoringAndRetrievingRaceLogsTest extends AbstractTracTracLiveTe
|
|||||||
@Test
|
@Test
|
||||||
public void testStoreAFewRaceLogEntries() throws UnknownHostException, MongoException, InterruptedException {
|
public void testStoreAFewRaceLogEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||||
EmptyWindStore.INSTANCE,
|
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.common.impl.WindSourceImpl;
|
||||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||||
import com.sap.sailing.domain.persistence.impl.MongoObjectFactoryImpl;
|
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.test.AbstractTracTracLiveTest;
|
||||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
@@ -71,8 +70,7 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
|
|||||||
@Test
|
@Test
|
||||||
public void testStoreAFewWindEntries() throws UnknownHostException, MongoException, InterruptedException {
|
public void testStoreAFewWindEntries() throws UnknownHostException, MongoException, InterruptedException {
|
||||||
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
DomainFactory domainFactory = DomainFactory.INSTANCE;
|
||||||
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null,
|
Regatta domainEvent = domainFactory.getOrCreateDefaultRegatta(getTracTracEvent(), /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
DynamicTrackedRegatta trackedRegatta = new RacingEventServiceImpl().getOrCreateTrackedRegatta(domainEvent);
|
||||||
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
Iterable<Receiver> typeControllers = domainFactory.getUpdateReceivers(trackedRegatta, getTracTracEvent(),
|
||||||
EmptyWindStore.INSTANCE,
|
EmptyWindStore.INSTANCE,
|
||||||
|
|||||||
+72
-73
@@ -1,73 +1,72 @@
|
|||||||
package com.sap.sailing.server.gateway.serialization.impl.leaderboard;
|
package com.sap.sailing.server.gateway.serialization.impl.leaderboard;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Fleet;
|
import com.sap.sailing.domain.base.Fleet;
|
||||||
import com.sap.sailing.domain.base.RaceColumn;
|
import com.sap.sailing.domain.base.RaceColumn;
|
||||||
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||||
import com.sap.sailing.domain.base.Series;
|
import com.sap.sailing.domain.base.Series;
|
||||||
import com.sap.sailing.domain.base.SeriesData;
|
import com.sap.sailing.domain.base.SeriesData;
|
||||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
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.ExtensionJsonSerializer;
|
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
|
||||||
|
public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer<Leaderboard, SeriesData> {
|
||||||
public class SeriesDataOfLeaderboardExtensionSerializer extends ExtensionJsonSerializer<Leaderboard, SeriesData> {
|
public static final String FIELD_SERIES = "series";
|
||||||
public static final String FIELD_SERIES = "series";
|
|
||||||
|
|
||||||
|
public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer<SeriesData> extensionSerializer) {
|
||||||
public SeriesDataOfLeaderboardExtensionSerializer(JsonSerializer<SeriesData> extensionSerializer) {
|
super(extensionSerializer);
|
||||||
super(extensionSerializer);
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
@Override
|
public String getExtensionFieldName() {
|
||||||
public String getExtensionFieldName() {
|
return FIELD_SERIES;
|
||||||
return FIELD_SERIES;
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
@Override
|
public Object serializeExtension(Leaderboard parent) {
|
||||||
public Object serializeExtension(Leaderboard parent) {
|
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<Series, List<RaceColumn>>();
|
||||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<Series, List<RaceColumn>>();
|
|
||||||
|
Series defaultSeries = null;
|
||||||
Series defaultSeries = null;
|
for (RaceColumn raceColumn : parent.getRaceColumns()) {
|
||||||
for (RaceColumn raceColumn : parent.getRaceColumns()) {
|
if (raceColumn instanceof RaceColumnInSeries) {
|
||||||
if (raceColumn instanceof RaceColumnInSeries) {
|
RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn;
|
||||||
RaceColumnInSeries raceColumnInSeries = (RaceColumnInSeries) raceColumn;
|
insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
||||||
insertSeriesIfNew(seriesToRaceColumns, raceColumnInSeries.getSeries()).add(raceColumnInSeries);
|
} else {
|
||||||
} else {
|
if (defaultSeries == null) {
|
||||||
if (defaultSeries == null) {
|
defaultSeries = new SeriesImpl(
|
||||||
defaultSeries = new SeriesImpl(
|
"Default Series",
|
||||||
"Default Series",
|
false,
|
||||||
false,
|
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
Collections.<String>emptyList(),
|
||||||
Collections.<String>emptyList(),
|
null);
|
||||||
null, EmptyRaceLogStore.INSTANCE);
|
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
}
|
||||||
}
|
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
JSONArray result = new JSONArray();
|
||||||
JSONArray result = new JSONArray();
|
for (Series series : seriesToRaceColumns.keySet()) {
|
||||||
for (Series series : seriesToRaceColumns.keySet()) {
|
result.add(serialize(series));
|
||||||
result.add(serialize(series));
|
}
|
||||||
}
|
|
||||||
|
return result;
|
||||||
return result;
|
}
|
||||||
}
|
|
||||||
|
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
||||||
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
if (!target.containsKey(newSeries)) {
|
||||||
if (!target.containsKey(newSeries)) {
|
target.put(newSeries, new ArrayList<RaceColumn>());
|
||||||
target.put(newSeries, new ArrayList<RaceColumn>());
|
}
|
||||||
}
|
return target.get(newSeries);
|
||||||
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.Util.Triple;
|
||||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
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.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.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.Wind;
|
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_WINDSTORE = "windstore";
|
||||||
|
|
||||||
private static final String PARAM_NAME_RACELOGSTORE = "racelogstore";
|
|
||||||
|
|
||||||
private static final String STORE_EMPTY = "empty";
|
private static final String STORE_EMPTY = "empty";
|
||||||
|
|
||||||
private static final String STORE_MONGO = "mongo";
|
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));
|
URL jsonURL = new URL(req.getParameter(PARAM_NAME_EVENT_JSON_URL));
|
||||||
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
||||||
URI storedURI = new URI(req.getParameter(PARAM_NAME_STORED_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 {
|
private WindStore getWindStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
||||||
@@ -490,29 +485,12 @@ public class AdminApp extends SailingServerHttpServlet {
|
|||||||
}
|
}
|
||||||
return EmptyWindStore.INSTANCE;
|
return EmptyWindStore.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
private RaceLogStore getRaceLogStore(HttpServletRequest req) throws UnknownHostException, MongoException {
|
|
||||||
String raceLogStore = req.getParameter(PARAM_NAME_RACELOGSTORE);
|
|
||||||
if (raceLogStore != null) {
|
|
||||||
if (raceLogStore.equals(STORE_EMPTY)) {
|
|
||||||
return EmptyRaceLogStore.INSTANCE;
|
|
||||||
} else if (raceLogStore.equals(STORE_MONGO)) {
|
|
||||||
return MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(
|
|
||||||
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 {
|
private void addRace(HttpServletRequest req, HttpServletResponse resp) throws MongoException, Exception {
|
||||||
URL paramURL = new URL(req.getParameter(PARAM_NAME_PARAM_URL));
|
URL paramURL = new URL(req.getParameter(PARAM_NAME_PARAM_URL));
|
||||||
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
URI liveURI = new URI(req.getParameter(PARAM_NAME_LIVE_URI));
|
||||||
URI storedURI = new URI(req.getParameter(PARAM_NAME_STORED_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 {
|
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.RegattaName;
|
||||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
import com.sap.sailing.domain.common.impl.Util;
|
||||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
|
||||||
|
|
||||||
public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||||
@Test
|
@Test
|
||||||
@@ -31,8 +30,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
|||||||
final String boatClassName = "49er";
|
final String boatClassName = "49er";
|
||||||
final Iterable<Series> series = Collections.emptyList();
|
final Iterable<Series> series = Collections.emptyList();
|
||||||
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName, UUID.randomUUID(), series,
|
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName, UUID.randomUUID(), series,
|
||||||
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||||
assertNotNull(replicatedRegatta);
|
assertNotNull(replicatedRegatta);
|
||||||
@@ -46,17 +44,13 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
|||||||
final String boatClassName = "49er";
|
final String boatClassName = "49er";
|
||||||
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
||||||
Series qualification = new SeriesImpl("Qualification", /* isMedal */ false,
|
Series qualification = new SeriesImpl("Qualification", /* isMedal */ false,
|
||||||
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Series finals = new SeriesImpl("Finals", /* isMedal */ false,
|
Series finals = new SeriesImpl("Finals", /* isMedal */ false,
|
||||||
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
Arrays.asList(new Fleet[] { new FleetImpl("Gold", 1), new FleetImpl("Silver", 2) }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Series medal = new SeriesImpl("Medal", /* isMedal */ true,
|
Series medal = new SeriesImpl("Medal", /* isMedal */ true,
|
||||||
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null,
|
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName,
|
Regatta masterRegatta = master.createRegatta(baseEventName, boatClassName,
|
||||||
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT));
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||||
assertNotNull(replicatedRegatta);
|
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.common.impl.WindSourceImpl;
|
||||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
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.test.AbstractTracTracLiveTest;
|
||||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.RaceTrackingConnectivityParameters;
|
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,
|
trackingParams = com.sap.sailing.domain.tractracadapter.DomainFactory.INSTANCE.createTrackingConnectivityParameters(paramURL,
|
||||||
liveURI, storedURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */
|
liveURI, storedURI, startOfTracking, endOfTracking, /* delayToLiveInMillis */
|
||||||
0l, /* simulateWithStartTimeNow */false, EmptyWindStore.INSTANCE, EmptyRaceLogStore.INSTANCE);
|
0l, /* simulateWithStartTimeNow */false, EmptyWindStore.INSTANCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startTracking() throws Exception, InterruptedException {
|
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.HighPoint;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
import com.sap.sailing.domain.leaderboard.impl.LowPoint;
|
||||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
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.AbstractLeaderboardTest;
|
||||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithFixedRank;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -71,15 +70,15 @@ public class LeaderboardDiscardingRulesTest {
|
|||||||
|
|
||||||
Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner");
|
Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner");
|
||||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
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);
|
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");
|
Competitor wolfgang = AbstractLeaderboardTest.createCompetitor("Wolfgang Hunger");
|
||||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 123, /* started */ true, boatClass);
|
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);
|
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("R3"), 123.);
|
||||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R4"), 123.);
|
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R4"), 123.);
|
||||||
@@ -111,19 +110,19 @@ public class LeaderboardDiscardingRulesTest {
|
|||||||
|
|
||||||
Competitor rasmus = AbstractLeaderboardTest.createCompetitor("Rasmus");
|
Competitor rasmus = AbstractLeaderboardTest.createCompetitor("Rasmus");
|
||||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(rasmus, /* rank */ 2, /* started */ true, boatClass); // score 2.0
|
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
|
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");
|
Competitor jes = AbstractLeaderboardTest.createCompetitor("Jes");
|
||||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(jes, /* rank */ 2, /* started */ true, boatClass); // score 2.0
|
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
|
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");
|
Competitor nobody = AbstractLeaderboardTest.createCompetitor("Nobody");
|
||||||
final TrackedRace race5 = new MockedTrackedRaceWithFixedRank(nobody, /* rank */ 3, /* started */ true, boatClass); // score 1.0
|
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("R3"), 2.0);
|
||||||
leaderboard.getScoreCorrection().correctScore(rasmus, leaderboard.getRaceColumnByName("R4"), 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");
|
Competitor hasso = AbstractLeaderboardTest.createCompetitor("Dr. Hasso Plattner");
|
||||||
final TrackedRace race1 = new MockedTrackedRaceWithFixedRank(hasso, /* rank */ 123, /* started */ true, boatClass);
|
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);
|
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");
|
Competitor wolfgang = AbstractLeaderboardTest.createCompetitor("Wolfgang Hunger");
|
||||||
final TrackedRace race3 = new MockedTrackedRaceWithFixedRank(wolfgang, /* rank */ 123, /* started */ true, boatClass);
|
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);
|
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("R3"), 123.);
|
||||||
leaderboard.getScoreCorrection().correctScore(hasso, leaderboard.getRaceColumnByName("R4"), 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.RaceDefinitionImpl;
|
||||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
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.RaceTracker;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
@@ -62,8 +61,7 @@ public class RaceTrackerStartStopTest {
|
|||||||
racingEventService = new RacingEventServiceImplMock();
|
racingEventService = new RacingEventServiceImplMock();
|
||||||
boatClass = new BoatClassImpl(BOATCLASSNAME, /* typicallyStartsUpwind */ true);
|
boatClass = new BoatClassImpl(BOATCLASSNAME, /* typicallyStartsUpwind */ true);
|
||||||
regatta = new RegattaImpl(EVENTNAME, boatClass, /* trackedRegattaRegistry */ null,
|
regatta = new RegattaImpl(EVENTNAME, boatClass, /* trackedRegattaRegistry */ null,
|
||||||
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), UUID.randomUUID(),
|
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), UUID.randomUUID());
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
racingEventService.getEventsByName().put(EVENTNAME, regatta);
|
racingEventService.getEventsByName().put(EVENTNAME, regatta);
|
||||||
TrackedRegatta trackedRegatta1 = racingEventService.getOrCreateTrackedRegatta(regatta);
|
TrackedRegatta trackedRegatta1 = racingEventService.getOrCreateTrackedRegatta(regatta);
|
||||||
racingEventService.getEventsByNameMap().put(EVENTNAME, 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.base.RaceDefinition;
|
||||||
import com.sap.sailing.domain.common.impl.Util;
|
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.RaceListener;
|
||||||
import com.sap.sailing.domain.tracking.RacesHandle;
|
import com.sap.sailing.domain.tracking.RacesHandle;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
@@ -61,8 +60,7 @@ public class RaceTrackerTest {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
service = new RacingEventServiceImpl();
|
service = new RacingEventServiceImpl();
|
||||||
logger.info("Calling service.addTracTracRace");
|
logger.info("Calling service.addTracTracRace");
|
||||||
raceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
raceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
logger.info("Calling raceHandle.getRaces()");
|
logger.info("Calling raceHandle.getRaces()");
|
||||||
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
Set<RaceDefinition> races = raceHandle.getRaces(); // wait for RaceDefinition to be completely wired in Regatta
|
||||||
logger.info("Obtained races: "+races);
|
logger.info("Obtained races: "+races);
|
||||||
@@ -118,8 +116,7 @@ public class RaceTrackerTest {
|
|||||||
RaceDefinition oldRaceDefinition = oldTrackedRace.getRace();
|
RaceDefinition oldRaceDefinition = oldTrackedRace.getRace();
|
||||||
assertTrue(!Util.isEmpty(raceHandle.getRegatta().getAllRaces()));
|
assertTrue(!Util.isEmpty(raceHandle.getRegatta().getAllRaces()));
|
||||||
service.removeRegatta(raceHandle.getRegatta());
|
service.removeRegatta(raceHandle.getRegatta());
|
||||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
TrackedRegatta newTrackedRegatta = myRaceHandle.getTrackedRegatta();
|
TrackedRegatta newTrackedRegatta = myRaceHandle.getTrackedRegatta();
|
||||||
assertNotSame(oldTrackedRegatta, newTrackedRegatta);
|
assertNotSame(oldTrackedRegatta, newTrackedRegatta);
|
||||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedRegatta);
|
TrackedRace newTrackedRace = getTrackedRace(newTrackedRegatta);
|
||||||
@@ -143,8 +140,7 @@ public class RaceTrackerTest {
|
|||||||
logger.entering(getClass().getName(), "testTrackingSameRaceWithoutStopping");
|
logger.entering(getClass().getName(), "testTrackingSameRaceWithoutStopping");
|
||||||
TrackedRegatta oldTrackedRegatta = raceHandle.getTrackedRegatta();
|
TrackedRegatta oldTrackedRegatta = raceHandle.getTrackedRegatta();
|
||||||
TrackedRace oldTrackedRace = getTrackedRace(oldTrackedRegatta);
|
TrackedRace oldTrackedRace = getTrackedRace(oldTrackedRegatta);
|
||||||
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000,
|
RacesHandle myRaceHandle = service.addTracTracRace(paramUrl, liveUri, storedUri, EmptyWindStore.INSTANCE, /* timeoutInMilliseconds */ 60000);
|
||||||
EmptyRaceLogStore.INSTANCE);
|
|
||||||
TrackedRegatta newTrackedEvent = myRaceHandle.getTrackedRegatta();
|
TrackedRegatta newTrackedEvent = myRaceHandle.getTrackedRegatta();
|
||||||
TrackedRace newTrackedRace = getTrackedRace(newTrackedEvent);
|
TrackedRace newTrackedRace = getTrackedRace(newTrackedEvent);
|
||||||
// expecting a new tracked race to be created when starting over with tracking
|
// 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.RegattaLeaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
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.swisstimingadapter.SwissTimingFactory;
|
||||||
import com.sap.sailing.domain.tracking.RaceListener;
|
import com.sap.sailing.domain.tracking.RaceListener;
|
||||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
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
|
* 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
|
* 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,
|
throws MalformedURLException, FileNotFoundException, URISyntaxException, IOException, ParseException,
|
||||||
org.json.simple.parser.ParseException, Exception;
|
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
|
* 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
|
* and its race handle will be returned. A log message will indicate a potential wind store mismatch (based on
|
||||||
* {@link WindStore#equals(Object)}).
|
* {@link WindStore#equals(Object)}).
|
||||||
*
|
|
||||||
* @param timeoutInMilliseconds
|
* @param timeoutInMilliseconds
|
||||||
* if the race definition is not received for the race within this time, the race tracker for
|
* 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
|
* 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;
|
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,
|
RacesHandle addTracTracRace(RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint trackingStartTime, TimePoint trackingEndTime, WindStore windStore,
|
TimePoint trackingStartTime, TimePoint trackingEndTime, WindStore windStore,
|
||||||
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow, RaceLogStore raceLogStore)
|
long timeoutForReceivingRaceDefinitionInMilliseconds, boolean simulateWithStartTimeNow)
|
||||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
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.
|
* 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,
|
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,
|
throws InterruptedException, UnknownHostException,
|
||||||
IOException, ParseException, Exception;
|
IOException, ParseException, Exception;
|
||||||
|
|
||||||
@@ -376,7 +375,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
|||||||
|
|
||||||
Regatta getOrCreateRegatta(String regattaName, String boatClassName, Serializable id);
|
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()}
|
* 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);
|
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.DomainObjectFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||||
import com.sap.sailing.domain.persistence.MongoObjectFactory;
|
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.RaceLogEvent;
|
||||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||||
import com.sap.sailing.domain.racelog.impl.RaceColumnIdentifierImpl;
|
|
||||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterMessage;
|
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.CreateTrackedRace;
|
||||||
import com.sap.sailing.server.operationaltransformation.RecordCompetitorGPSFix;
|
import com.sap.sailing.server.operationaltransformation.RecordCompetitorGPSFix;
|
||||||
import com.sap.sailing.server.operationaltransformation.RecordMarkGPSFix;
|
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.RecordWindFix;
|
||||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||||
import com.sap.sailing.server.operationaltransformation.RemoveWindFix;
|
import com.sap.sailing.server.operationaltransformation.RemoveWindFix;
|
||||||
@@ -364,10 +360,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
if (leaderboard != null) {
|
if (leaderboard != null) {
|
||||||
if (leaderboard instanceof FlexibleLeaderboard) {
|
if (leaderboard instanceof FlexibleLeaderboard) {
|
||||||
// uses the default fleet as the single fleet for the new column
|
// 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,
|
RaceColumn result = ((FlexibleLeaderboard) leaderboard).addRaceColumn(columnName, medalRace,
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory, columnIdentifier),
|
leaderboard.getFleet(null));
|
||||||
leaderboard.getFleet(null));
|
|
||||||
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
updateStoredLeaderboard((FlexibleLeaderboard) leaderboard);
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
@@ -605,13 +599,12 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds,
|
public Regatta addRegatta(URL jsonURL, URI liveURI, URI storedURI, WindStore windStore, long timeoutInMilliseconds) throws Exception {
|
||||||
RaceLogStore raceLogStore) throws Exception {
|
|
||||||
JSONService jsonService = getTracTracDomainFactory().parseJSONURL(jsonURL);
|
JSONService jsonService = getTracTracDomainFactory().parseJSONURL(jsonURL);
|
||||||
Regatta regatta = null;
|
Regatta regatta = null;
|
||||||
for (RaceRecord rr : jsonService.getRaceRecords()) {
|
for (RaceRecord rr : jsonService.getRaceRecords()) {
|
||||||
URL paramURL = rr.getParamURL();
|
URL paramURL = rr.getParamURL();
|
||||||
regatta = addTracTracRace(paramURL, liveURI, storedURI, windStore, timeoutInMilliseconds, raceLogStore).getRegatta();
|
regatta = addTracTracRace(paramURL, liveURI, storedURI, windStore, timeoutInMilliseconds).getRegatta();
|
||||||
}
|
}
|
||||||
return regatta;
|
return regatta;
|
||||||
}
|
}
|
||||||
@@ -620,8 +613,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
public Regatta getOrCreateRegatta(String baseEventName, String boatClassName, Serializable id) {
|
public Regatta getOrCreateRegatta(String baseEventName, String boatClassName, Serializable id) {
|
||||||
Regatta regatta = new RegattaImpl(baseEventName, getBaseDomainFactory().getOrCreateBoatClass(
|
Regatta regatta = new RegattaImpl(baseEventName, getBaseDomainFactory().getOrCreateBoatClass(
|
||||||
boatClassName), this, com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
boatClassName), this, com.sap.sailing.domain.base.DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT),
|
||||||
RegattaImpl.getFullName(baseEventName, boatClassName),
|
RegattaImpl.getFullName(baseEventName, boatClassName));
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory));
|
|
||||||
Regatta result = regattasByName.get(regatta.getName());
|
Regatta result = regattasByName.get(regatta.getName());
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = regatta;
|
result = regatta;
|
||||||
@@ -633,11 +625,11 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Regatta createRegatta(String baseEventName, String boatClassName,
|
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,
|
Regatta regatta = new RegattaImpl(baseEventName,
|
||||||
getBaseDomainFactory().getOrCreateBoatClass(boatClassName), series, persistent, scoringScheme, id);
|
getBaseDomainFactory().getOrCreateBoatClass(boatClassName), series, persistent, scoringScheme, id);
|
||||||
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this);
|
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on "+this);
|
||||||
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta, raceLogStore);
|
cacheAndReplicateSpecificRegattaWithoutRaceColumns(regatta);
|
||||||
if (persistent) {
|
if (persistent) {
|
||||||
updateStoredRegatta(regatta);
|
updateStoredRegatta(regatta);
|
||||||
}
|
}
|
||||||
@@ -667,20 +659,20 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacesHandle addSwissTimingRace(RegattaIdentifier regattaToAddTo, String raceID, String hostname,
|
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(
|
return addRace(
|
||||||
regattaToAddTo,
|
regattaToAddTo,
|
||||||
swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
swissTimingDomainFactory.createTrackingConnectivityParameters(hostname, port, raceID, canSendRequests, delayToLiveInMillis,
|
||||||
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence, raceLogStore), windStore, timeoutInMilliseconds);
|
swissTimingFactory, swissTimingDomainFactory, windStore, swissTimingAdapterPersistence), windStore, timeoutInMilliseconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore,
|
public RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI, WindStore windStore,
|
||||||
long timeoutInMilliseconds, RaceLogStore raceLogStore) throws Exception {
|
long timeoutInMilliseconds) throws Exception {
|
||||||
return addRace(
|
return addRace(
|
||||||
/* regattaToAddTo */null, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
/* regattaToAddTo */null, getTracTracDomainFactory().createTrackingConnectivityParameters(paramURL, liveURI, storedURI,
|
||||||
/* startOfTracking */null,
|
/* startOfTracking */null,
|
||||||
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore, raceLogStore), windStore,
|
/* endOfTracking */null, delayToLiveInMillis, /* simulateWithStartTimeNow */false, windStore), windStore,
|
||||||
timeoutInMilliseconds);
|
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
|
* the series of this regatta must not have any {@link Series#getRaceColumns() race columns associated
|
||||||
* (yet)}.
|
* (yet)}.
|
||||||
*/
|
*/
|
||||||
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta, RaceLogStore raceLogStore) {
|
private void cacheAndReplicateSpecificRegattaWithoutRaceColumns(Regatta regatta) {
|
||||||
if (!regattasByName.containsKey(regatta.getName())) {
|
if (!regattasByName.containsKey(regatta.getName())) {
|
||||||
logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this);
|
logger.info("putting regatta "+regatta.getName()+" ("+regatta.hashCode()+") into regattasByName of "+this);
|
||||||
regattasByName.put(regatta.getName(), regatta);
|
regattasByName.put(regatta.getName(), regatta);
|
||||||
regatta.addRegattaListener(this);
|
regatta.addRegattaListener(this);
|
||||||
replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
replicate(new AddSpecificRegatta(regatta.getBaseName(), regatta.getBoatClass() == null ? null : regatta
|
||||||
.getBoatClass().getName(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta),
|
.getBoatClass().getName(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta),
|
||||||
regatta.isPersistent(), regatta.getScoringScheme(), raceLogStore));
|
regatta.isPersistent(), regatta.getScoringScheme()));
|
||||||
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
|
||||||
for (RaceDefinition race : regatta.getAllRaces()) {
|
for (RaceDefinition race : regatta.getAllRaces()) {
|
||||||
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
replicate(new AddRaceDefinition(regattaIdentifier, race));
|
||||||
@@ -831,9 +823,9 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
@Override
|
@Override
|
||||||
public RacesHandle addTracTracRace(RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI,
|
public RacesHandle addTracTracRace(RegattaIdentifier regattaToAddTo, URL paramURL, URI liveURI,
|
||||||
URI storedURI, TimePoint startOfTracking, TimePoint endOfTracking,
|
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,
|
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) {
|
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);
|
final FlexibleLeaderboard defaultLeaderboard = (FlexibleLeaderboard) leaderboardsByName.get(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME);
|
||||||
if (defaultLeaderboard != null) {
|
if (defaultLeaderboard != null) {
|
||||||
String columnName = trackedRace.getRace().getName();
|
String columnName = trackedRace.getRace().getName();
|
||||||
RaceColumnIdentifier columnIdentifier = new RaceColumnIdentifierImpl(defaultLeaderboard.getName(), columnName);
|
|
||||||
defaultLeaderboard.addRace(trackedRace, columnName, /* medalRace */false,
|
defaultLeaderboard.addRace(trackedRace, columnName, /* medalRace */false,
|
||||||
MongoRaceLogStoreFactory.INSTANCE.getMongoRaceLogStore(mongoObjectFactory, domainObjectFactory, columnIdentifier),
|
defaultLeaderboard.getFleet(null));
|
||||||
defaultLeaderboard.getFleet(null));
|
|
||||||
}
|
}
|
||||||
TrackedRaceReplicator trackedRaceReplicator = new TrackedRaceReplicator(trackedRace);
|
TrackedRaceReplicator trackedRaceReplicator = new TrackedRaceReplicator(trackedRace);
|
||||||
trackedRaceReplicators.put(trackedRace, trackedRaceReplicator);
|
trackedRaceReplicators.put(trackedRace, trackedRaceReplicator);
|
||||||
@@ -1654,9 +1644,9 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void recordRaceLogEvent(String leaderboardName, String raceColumnName, String fleetName, RaceLogEvent event) {
|
public void recordRaceLogEvent(RaceLogIdentifier identifier, RaceLogEvent event) {
|
||||||
RecordRaceLogEvent command = new RecordRaceLogEvent(leaderboardName, raceColumnName, fleetName, event);
|
//RaceLog raceLog = getRaceLog(identifier);
|
||||||
apply(command);
|
//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.RaceColumnInSeries;
|
||||||
import com.sap.sailing.domain.base.Series;
|
import com.sap.sailing.domain.base.Series;
|
||||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
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.RacingEventService;
|
||||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||||
|
|
||||||
public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColumnInSeries> {
|
public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColumnInSeries> {
|
||||||
private static final long serialVersionUID = 8987540636040301063L;
|
private static final long serialVersionUID = 8987540636040301063L;
|
||||||
|
|
||||||
private RaceLogStore raceLogStore;
|
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName) {
|
||||||
|
|
||||||
public AddColumnToSeries(RegattaIdentifier regattaIdentifier, String seriesName, String columnName, RaceLogStore raceLogStore) {
|
|
||||||
super(regattaIdentifier, seriesName, columnName);
|
super(regattaIdentifier, seriesName, columnName);
|
||||||
this.raceLogStore = raceLogStore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -22,7 +18,7 @@ public class AddColumnToSeries extends AbstractColumnInSeriesOperation<RaceColum
|
|||||||
RaceColumnInSeries result = null;
|
RaceColumnInSeries result = null;
|
||||||
Series series = getSeries(toState);
|
Series series = getSeries(toState);
|
||||||
if (series != null) {
|
if (series != null) {
|
||||||
result = series.addRaceColumn(getColumnName(), toState, raceLogStore);
|
result = series.addRaceColumn(getColumnName(), toState);
|
||||||
if(result != null && series.getRegatta().isPersistent()) {
|
if(result != null && series.getRegatta().isPersistent()) {
|
||||||
toState.updateStoredRegatta(series.getRegatta());
|
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.Pair;
|
||||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
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.domain.tracking.TrackedRegattaRegistry;
|
||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
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 Map<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> seriesNamesWithFleetNamesAndFleetOrderingAndMedal;
|
||||||
private final boolean persistent;
|
private final boolean persistent;
|
||||||
private final ScoringScheme scoringScheme;
|
private final ScoringScheme scoringScheme;
|
||||||
private final RaceLogStore raceLogStore;
|
|
||||||
|
|
||||||
public AddSpecificRegatta(String regattaName, String boatClassName, Serializable id,
|
public AddSpecificRegatta(String regattaName, String boatClassName, Serializable id,
|
||||||
Map<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> seriesNamesWithFleetNamesAndFleetOrdering,
|
Map<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> seriesNamesWithFleetNamesAndFleetOrdering,
|
||||||
boolean persistent, ScoringScheme scoringScheme, RaceLogStore raceLogStore) {
|
boolean persistent, ScoringScheme scoringScheme) {
|
||||||
super(regattaName, boatClassName, id);
|
super(regattaName, boatClassName, id);
|
||||||
this.seriesNamesWithFleetNamesAndFleetOrderingAndMedal = seriesNamesWithFleetNamesAndFleetOrdering;
|
this.seriesNamesWithFleetNamesAndFleetOrderingAndMedal = seriesNamesWithFleetNamesAndFleetOrdering;
|
||||||
this.persistent = persistent;
|
this.persistent = persistent;
|
||||||
this.scoringScheme = scoringScheme;
|
this.scoringScheme = scoringScheme;
|
||||||
this.raceLogStore = raceLogStore;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
||||||
return toState.createRegatta(getBaseEventName(), getBoatClassName(), getId(), createSeries(toState),
|
return toState.createRegatta(getBaseEventName(), getBoatClassName(), getId(), createSeries(toState),
|
||||||
persistent, scoringScheme, raceLogStore);
|
persistent, scoringScheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Iterable<? extends Series> createSeries(TrackedRegattaRegistry trackedRegattaRegistry) {
|
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()) {
|
for (Map.Entry<String, Pair<List<Triple<String, Integer, Color>>, Boolean>> e : seriesNamesWithFleetNamesAndFleetOrderingAndMedal.entrySet()) {
|
||||||
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
final List<String> emptyRaceColumnNamesList = Collections.emptyList();
|
||||||
Series s = new SeriesImpl(e.getKey(), /* isMedal */e.getValue().getB(), createFleets(e.getValue().getA()),
|
Series s = new SeriesImpl(e.getKey(), /* isMedal */e.getValue().getB(), createFleets(e.getValue().getA()),
|
||||||
emptyRaceColumnNamesList, trackedRegattaRegistry, raceLogStore);
|
emptyRaceColumnNamesList, trackedRegattaRegistry);
|
||||||
result.add(s);
|
result.add(s);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
-1
@@ -28,7 +28,6 @@ public class RecordRaceLogEvent extends AbstractRacingEventServiceOperation<Void
|
|||||||
Leaderboard leaderboard = toState.getLeaderboardByName(leaderboardName);
|
Leaderboard leaderboard = toState.getLeaderboardByName(leaderboardName);
|
||||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
||||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||||
raceColumn.recordRaceLogEvent(leaderboardName, fleet, event);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user