fixed bug 1854 for regatta race columns; need to do the same for flexible leaderboards

This commit is contained in:
Axel Uhl committed 2014-03-17 15:04:17 +01:00
1 parent 0999c68205
commit 1c2d2b0c11
7 files changed
+62 -61

No files matched your search

@@ -14,6 +14,7 @@ import com.sap.sailing.domain.base.configuration.DeviceConfigurationMatcher;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.TrackedRegatta;
@@ -109,4 +110,6 @@ public interface MongoObjectFactory {
void removeDeviceConfiguration(DeviceConfigurationMatcher matcher);
void removeRaceLog(RaceLogIdentifier identifier);
}
@@ -580,74 +580,74 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogFlagEvent flagEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFlagEvent(flagEvent));
return result;
}
private void storeRaceLogIdentifier(RaceLogIdentifier raceLogIdentifier, DBObject result) {
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogStartTimeEvent startTimeEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogStartTimeEvent(startTimeEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogPassChangeEvent passChangeEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogPassChangeEvent(passChangeEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogRaceStatusEvent raceStatusEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogRaceStatusEvent(raceStatusEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogCourseAreaChangedEvent courseAreaChangedEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogCourseAreaChangedEvent(courseAreaChangedEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogCourseDesignChangedEvent courseDesignChangedEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogCourseDesignChangedEvent(courseDesignChangedEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogFinishPositioningListChangedEvent finishPositioningListChangedEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFinishPositioningListChangedEvent(finishPositioningListChangedEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogFinishPositioningConfirmedEvent finishPositioningConfirmedEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogFinishPositioningConfirmedEvent(finishPositioningConfirmedEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogPathfinderEvent pathfinderEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogPathfinderEvent(pathfinderEvent));
return result;
}
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogGateLineOpeningTimeEvent gateLineOpeningTimeEvent) {
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
storeRaceLogIdentifier(raceLogIdentifier, result);
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogGateLineOpeningTimeEvent(gateLineOpeningTimeEvent));
return result;
}
@@ -676,7 +676,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogWindFix(RaceLogWindFixEvent event) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(event, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogWindFixEvent.class.getSimpleName());
result.put(FieldNames.WIND.name(), storeWind(event.getWindFix()));
return result;
@@ -685,7 +684,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogProtestStartTimeEvent(RaceLogProtestStartTimeEvent event) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(event, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogProtestStartTimeEvent.class.getSimpleName());
storeTimePoint(event.getProtestStartTime(), result, FieldNames.RACE_LOG_PROTEST_START_TIME);
return result;
@@ -694,7 +692,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogStartProcedureChangedEvent(RaceLogStartProcedureChangedEvent event) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(event, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogStartProcedureChangedEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_START_PROCEDURE_TYPE.name(), event.getStartProcedureType().name());
return result;
@@ -703,9 +700,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogPathfinderEvent(RaceLogPathfinderEvent pathfinderEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(pathfinderEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogPathfinderEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_PATHFINDER_ID.name(), pathfinderEvent.getPathfinderId());
return result;
}
@@ -713,9 +708,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject storeRaceLogStartTimeEvent(RaceLogStartTimeEvent startTimeEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(startTimeEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogStartTimeEvent.class.getSimpleName());
storeTimePoint(startTimeEvent.getStartTime(), result, FieldNames.RACE_LOG_EVENT_START_TIME);
result.put(FieldNames.RACE_LOG_EVENT_NEXT_STATUS.name(), startTimeEvent.getNextStatus().name());
return result;
@@ -724,9 +717,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
public DBObject storeRaceLogFlagEvent(RaceLogFlagEvent flagEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(flagEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFlagEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_EVENT_FLAG_UPPER.name(), flagEvent.getUpperFlag().name());
result.put(FieldNames.RACE_LOG_EVENT_FLAG_LOWER.name(), flagEvent.getLowerFlag().name());
result.put(FieldNames.RACE_LOG_EVENT_FLAG_DISPLAYED.name(), String.valueOf(flagEvent.isDisplayed()));
@@ -755,7 +746,6 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject storeRaceLogPassChangeEvent(RaceLogPassChangeEvent passChangeEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(passChangeEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogPassChangeEvent.class.getSimpleName());
return result;
}
@@ -763,9 +753,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject storeRaceLogRaceStatusEvent(RaceLogRaceStatusEvent raceStatusEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(raceStatusEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogRaceStatusEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_EVENT_NEXT_STATUS.name(), raceStatusEvent.getNextStatus().name());
return result;
}
@@ -773,9 +761,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject storeRaceLogCourseAreaChangedEvent(RaceLogCourseAreaChangedEvent courseAreaChangedEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(courseAreaChangedEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogCourseAreaChangedEvent.class.getSimpleName());
result.put(FieldNames.COURSE_AREA_ID.name(), courseAreaChangedEvent.getCourseAreaId());
return result;
}
@@ -783,9 +769,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private DBObject storeRaceLogCourseDesignChangedEvent(RaceLogCourseDesignChangedEvent courseDesignChangedEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(courseDesignChangedEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogCourseDesignChangedEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_COURSE_DESIGN_NAME.name(), courseDesignChangedEvent.getCourseDesign().getName());
result.put(FieldNames.RACE_LOG_COURSE_DESIGN.name(), storeCourseBase(courseDesignChangedEvent.getCourseDesign()));
return result;
@@ -794,9 +778,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogFinishPositioningListChangedEvent(RaceLogFinishPositioningListChangedEvent finishPositioningListChangedEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(finishPositioningListChangedEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningListChangedEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_POSITIONED_COMPETITORS.name(), storePositionedCompetitors(finishPositioningListChangedEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons()));
return result;
@@ -805,9 +787,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogFinishPositioningConfirmedEvent(RaceLogFinishPositioningConfirmedEvent finishPositioningConfirmedEvent) {
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(finishPositioningConfirmedEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogFinishPositioningConfirmedEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_POSITIONED_COMPETITORS.name(), storePositionedCompetitors(finishPositioningConfirmedEvent.getPositionedCompetitorsIDsNamesMaxPointsReasons()));
return result;
@@ -816,9 +796,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private Object storeRaceLogGateLineOpeningTimeEvent(RaceLogGateLineOpeningTimeEvent gateLineOpeningTimeEvent){
DBObject result = new BasicDBObject();
storeRaceLogEventProperties(gateLineOpeningTimeEvent, result);
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogGateLineOpeningTimeEvent.class.getSimpleName());
result.put(FieldNames.RACE_LOG_GATE_LINE_OPENING_TIME.name(), gateLineOpeningTimeEvent.getGateLineOpeningTimes().getGateLaunchStopTime());
result.put(FieldNames.RACE_LOG_GOLF_DOWN_TIME.name(), gateLineOpeningTimeEvent.getGateLineOpeningTimes().getGolfDownTime());
return result;
@@ -826,19 +804,16 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
private BasicDBList storePositionedCompetitors(List<Triple<Serializable, String, MaxPointsReason>> positionedCompetitors) {
BasicDBList dbList = new BasicDBList();
if (positionedCompetitors != null) {
for (Triple<Serializable, String, MaxPointsReason> competitorPair : positionedCompetitors) {
dbList.add(storePositionedCompetitor(competitorPair));
}
}
return dbList;
}
private DBObject storePositionedCompetitor(Triple<Serializable, String, MaxPointsReason> competitorTriple) {
DBObject result = new BasicDBObject();
result.put(FieldNames.COMPETITOR_ID.name(), competitorTriple.getA());
result.put(FieldNames.COMPETITOR_DISPLAY_NAME.name(), competitorTriple.getB());
result.put(FieldNames.LEADERBOARD_SCORE_CORRECTION_MAX_POINTS_REASON.name(), competitorTriple.getC().name());
@@ -972,4 +947,15 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
configurationsCollections.remove(query);
}
void storeRaceLogEventEvent(DBObject eventEntry) {
getRaceLogCollection().insert(eventEntry);
logger.fine("Inserted event entry into mongo race log collection");
}
@Override
public void removeRaceLog(RaceLogIdentifier identifier) {
DBObject query = new BasicDBObject();
storeRaceLogIdentifier(identifier, query);
getRaceLogCollection().remove(query);
}
}
@@ -39,6 +39,12 @@ public class MongoRaceLogStoreImpl implements RaceLogStore {
return result;
}
@Override
public void removeRaceLog(RaceLogIdentifier identifier) {
raceLogCache.remove(identifier);
mongoObjectFactory.removeRaceLog(identifier);
}
@Override
public void removeListenersAddedByStoreFrom(RaceLog raceLog) {
RaceLogEventVisitor visitor = listeners.get(raceLog);
@@ -2,7 +2,6 @@ package com.sap.sailing.domain.persistence.impl;
import java.util.logging.Logger;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.sap.sailing.domain.persistence.MongoObjectFactory;
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
@@ -25,98 +24,91 @@ public class MongoRaceLogStoreVisitor implements RaceLogEventVisitor {
private final RaceLogIdentifier raceLogIdentifier;
private final MongoObjectFactoryImpl mongoObjectFactory;
private final DBCollection raceLogsCollection;
private final static Logger logger = Logger.getLogger(MongoRaceLogStoreVisitor.class.getName());
final static Logger logger = Logger.getLogger(MongoRaceLogStoreVisitor.class.getName());
public MongoRaceLogStoreVisitor(RaceLogIdentifier identifier, MongoObjectFactory mongoObjectFactory) {
super();
this.raceLogIdentifier = identifier;
this.mongoObjectFactory = (MongoObjectFactoryImpl) mongoObjectFactory;
this.raceLogsCollection = this.mongoObjectFactory.getRaceLogCollection();
}
private void storeEventInCollection(DBObject eventEntry) {
raceLogsCollection.insert(eventEntry);
logger.fine("Inserted event entry into mongo race log collection");
}
@Override
public void visit(RaceLogFlagEvent event) {
DBObject flagEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(flagEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(flagEventTrackEntry);
}
@Override
public void visit(RaceLogPassChangeEvent event) {
DBObject passChangeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(passChangeEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(passChangeEventTrackEntry);
}
@Override
public void visit(RaceLogRaceStatusEvent event) {
DBObject raceStatusEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(raceStatusEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(raceStatusEventTrackEntry);
}
@Override
public void visit(RaceLogStartTimeEvent event) {
DBObject startTimeEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(startTimeEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(startTimeEventTrackEntry);
}
@Override
public void visit(RaceLogCourseAreaChangedEvent event) {
DBObject courseAreaChangedEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(courseAreaChangedEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(courseAreaChangedEventTrackEntry);
}
@Override
public void visit(RaceLogCourseDesignChangedEvent event) {
DBObject courseDesignChangedEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(courseDesignChangedEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(courseDesignChangedEventTrackEntry);
}
@Override
public void visit(RaceLogFinishPositioningListChangedEvent event) {
DBObject finishPositioningListChangedEventTrackEntry = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(finishPositioningListChangedEventTrackEntry);
mongoObjectFactory.storeRaceLogEventEvent(finishPositioningListChangedEventTrackEntry);
}
@Override
public void visit(RaceLogFinishPositioningConfirmedEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
@Override
public void visit(RaceLogPathfinderEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
@Override
public void visit(RaceLogGateLineOpeningTimeEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
@Override
public void visit(RaceLogStartProcedureChangedEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
@Override
public void visit(RaceLogProtestStartTimeEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
@Override
public void visit(RaceLogWindFixEvent event) {
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
storeEventInCollection(object);
mongoObjectFactory.storeRaceLogEventEvent(object);
}
}