mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 10:23:51 +00:00
Add DependentStartTimeEvent and replication + de/serialization
This commit is contained in:
1 parent
bd0f3c468c
commit
81fa2d4fb6
20 files changed
+287
-23
No files matched your search
+2
-1
@@ -89,7 +89,8 @@ public enum FieldNames {
|
||||
RACE_LOG_POSITIONED_COMPETITORS, RACE_LOG_PATHFINDER_ID, RACE_LOG_GATE_LINE_OPENING_TIME, RACE_LOG_GOLF_DOWN_TIME, RACE_LOG_START_PROCEDURE_TYPE,
|
||||
RACE_LOG_PROTEST_START_TIME, RACE_LOG_COURSE_DESIGN_NAME, RACE_LOG_REVOKED_EVENT_ID, RACE_LOG_REVOKED_EVENT_TYPE, RACE_LOG_REVOKED_EVENT_SHORT_INFO,
|
||||
RACE_LOG_REVOKED_REASON, RACE_LOG_FROM, RACE_LOG_TO, RACE_LOG_MARK, RACE_LOG_DEVICE_MAPPING_EVENT_ID,
|
||||
RACE_LOG_CLOSING_TIMEPOINT, TIMEPOINT_OF_FIXED_MARKPASSING, INDEX_OF_PASSED_WAYPOINT,INDEX_OF_FIRST_SUPPRESSED_WAYPOINT, MARK, RACE_LOG_COMPETITOR_ID,
|
||||
RACE_LOG_CLOSING_TIMEPOINT, TIMEPOINT_OF_FIXED_MARKPASSING, INDEX_OF_PASSED_WAYPOINT,INDEX_OF_FIRST_SUPPRESSED_WAYPOINT, MARK, RACE_LOG_COMPETITOR_ID, RACE_LOG_DEPDENDENT_ON_FLEET,
|
||||
RACE_LOG_START_TIME_DIFFERENCE,
|
||||
/** @deprecated Replaced by WAYPOINT_PASSINGINSTRUCTIONS, still used to migrate old races*/ @Deprecated WAYPOINT_PASSINGSIDE,
|
||||
/** @deprecated Replaced by CONTROLPOINTWITHTWOMARKS_ID, still used to migrate old races*/ @Deprecated GATE_ID,
|
||||
/** @deprecated Replaced by CONTROLPOINTWITHTWOMARKS_NAME, still used to migrate old races*/ @Deprecated GATE_NAME,
|
||||
|
||||
+32
-1
@@ -22,6 +22,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent;
|
||||
@@ -35,8 +36,8 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogRevokeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.scoring.RaceLogAdditionalScoringInformationEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.SuppressedMarkPassingsEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.scoring.RaceLogAdditionalScoringInformationEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogCloseOpenEndedDeviceMappingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDefineMarkEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent;
|
||||
@@ -102,6 +103,7 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DeviceConfigurationJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RegattaConfigurationJsonSerializer;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TimeRange;
|
||||
@@ -1061,6 +1063,28 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogPassChangeEvent.class.getSimpleName());
|
||||
return result;
|
||||
}
|
||||
|
||||
private DBObject storeRaceLogDependentStartTimeEvent(RaceLogDependentStartTimeEvent dependentStartTimeEvent) {
|
||||
DBObject result = new BasicDBObject();
|
||||
storeRaceLogEventProperties(dependentStartTimeEvent, result);
|
||||
//TODO: add other fields
|
||||
|
||||
|
||||
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RaceLogStartTimeEvent.class.getSimpleName());
|
||||
|
||||
result.put(FieldNames.RACE_LOG_DEPDENDENT_ON_FLEET.name(), dependentStartTimeEvent.getDependentOnFleet().getName());
|
||||
storeDuration(dependentStartTimeEvent.getStartTimeDifference(), result, FieldNames.RACE_LOG_START_TIME_DIFFERENCE);
|
||||
result.put(FieldNames.RACE_LOG_EVENT_NEXT_STATUS.name(), dependentStartTimeEvent.getNextStatus().name());
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void storeDuration(Duration duration, DBObject result, FieldNames fieldName) {
|
||||
if (duration != null) {
|
||||
result.put(fieldName.name(), duration.asMillis());
|
||||
}
|
||||
}
|
||||
|
||||
private DBObject storeRaceLogRaceStatusEvent(RaceLogRaceStatusEvent raceStatusEvent) {
|
||||
DBObject result = new BasicDBObject();
|
||||
@@ -1377,4 +1401,11 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
storeTimePoint(event.getClosingTimePoint(), result, FieldNames.REGATTA_LOG_CLOSING_TIMEPOINT);
|
||||
storeRegattaLogEvent(regattaLikeId, result);
|
||||
}
|
||||
|
||||
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RaceLogDependentStartTimeEvent event) {
|
||||
BasicDBObject result = new BasicDBObject();
|
||||
storeRaceLogIdentifier(raceLogIdentifier, result);
|
||||
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogDependentStartTimeEvent(event));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+7
@@ -6,6 +6,7 @@ import com.mongodb.DBObject;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent;
|
||||
@@ -187,4 +188,10 @@ public class MongoRaceLogStoreVisitor implements RaceLogEventVisitor {
|
||||
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||
mongoObjectFactory.storeRaceLogEventEvent(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||
mongoObjectFactory.storeRaceLogEventEvent(object);
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package com.sap.sailing.domain.abstractlog.race;
|
||||
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sse.common.Duration;
|
||||
|
||||
|
||||
public interface RaceLogDependentStartTimeEvent extends RaceLogRaceStatusEvent {
|
||||
|
||||
Fleet getDependentOnFleet();
|
||||
|
||||
Duration getStartTimeDifference();
|
||||
|
||||
}
|
||||
+9
@@ -17,12 +17,14 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogStartTrackingEven
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public interface RaceLogEventFactory {
|
||||
@@ -129,4 +131,11 @@ public interface RaceLogEventFactory {
|
||||
|
||||
RaceLogEvent createSuppressedMarkPassingsEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author, Serializable id,
|
||||
List<Competitor> competitors, Integer passId, Integer zeroBasedIndexOfFirstSuppressedWaypoint);
|
||||
|
||||
RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint,
|
||||
AbstractLogEventAuthor author, Serializable id, List<Competitor> involvedBoats, int passId, Fleet dependentsOnFleet,
|
||||
Duration startTimeDifference);
|
||||
|
||||
RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint,
|
||||
AbstractLogEventAuthor author, int passId, Fleet dependentsOnFleet, Duration startTimeDifference);
|
||||
}
|
||||
+5
@@ -17,12 +17,14 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogStartTrackingEven
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public interface RaceLogEventRestoreFactory extends RaceLogEventFactory {
|
||||
@@ -98,4 +100,7 @@ public interface RaceLogEventRestoreFactory extends RaceLogEventFactory {
|
||||
RaceLogAdditionalScoringInformationEvent createAdditionalScoringInformationEvent(TimePoint createdAt, AbstractLogEventAuthor author,
|
||||
TimePoint logicalTimePoint, Serializable pId, List<Competitor> competitors, int passId,
|
||||
AdditionalScoringInformationType informationType);
|
||||
|
||||
RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint createdAt, AbstractLogEventAuthor author, TimePoint logicalTimePoint,
|
||||
Serializable id, List<Competitor> involvedBoats, int passId, Fleet dependentOnFleet, Duration startTimeDifference);
|
||||
}
|
||||
+2
-1
@@ -57,6 +57,7 @@ public interface RaceLogEventVisitor {
|
||||
|
||||
public void visit(FixedMarkPassingEvent event);
|
||||
|
||||
|
||||
public void visit(SuppressedMarkPassingsEvent event);
|
||||
|
||||
public void visit(RaceLogDependentStartTimeEvent event);
|
||||
}
|
||||
+6
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.abstractlog.race.analyzing.impl;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogStartTimeEvent;
|
||||
@@ -82,6 +83,11 @@ public class RaceStatusAnalyzer extends RaceLogAnalyzer<RaceLogRaceStatus> {
|
||||
@Override
|
||||
public void visit(RaceLogRaceStatusEvent event) {
|
||||
nextStatus = event.getNextStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
//FIXME: Calculate RaceStatus based on status of Fleet on which race depends on
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
+6
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.impl;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
@@ -143,4 +144,9 @@ public abstract class AbstractRaceLogChangedVisitor implements RaceLogEventVisit
|
||||
public void visit(SuppressedMarkPassingsEvent event) {
|
||||
notifyListenerAboutEventAdded(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
notifyListenerAboutEventAdded(event);
|
||||
}
|
||||
}
|
||||
+6
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.abstractlog.race.impl;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent;
|
||||
@@ -150,4 +151,9 @@ public abstract class BaseRaceLogEventVisitor implements RaceLogEventVisitor {
|
||||
public void visit(SuppressedMarkPassingsEvent event) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
|
||||
}
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.sap.sailing.domain.abstractlog.race.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.Revokable;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class RaceLogDependentStartTimeEventImpl extends RaceLogRaceStatusEventImpl implements RaceLogDependentStartTimeEvent, Revokable {
|
||||
|
||||
private static final long serialVersionUID = -2555082771473210123L;
|
||||
private final Duration startTimeDifference;
|
||||
private final Fleet dependentsOnFleet;
|
||||
|
||||
public RaceLogDependentStartTimeEventImpl(TimePoint createdAt, AbstractLogEventAuthor author, TimePoint pTimePoint,
|
||||
Serializable pId, List<Competitor> pInvolvedBoats, int pPassId, Fleet dependentsOnFleet,
|
||||
Duration startTimeDifference) {
|
||||
super(createdAt, author, pTimePoint, pId, pInvolvedBoats, pPassId, RaceLogRaceStatus.SCHEDULED);
|
||||
this.dependentsOnFleet = dependentsOnFleet;
|
||||
this.startTimeDifference = startTimeDifference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Duration getStartTimeDifference() {
|
||||
return startTimeDifference;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fleet getDependentOnFleet() {
|
||||
return dependentsOnFleet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(RaceLogEventVisitor visitor) {
|
||||
visitor.visit((RaceLogDependentStartTimeEvent) this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getShortInfo() {
|
||||
return "dependentOnFleet=" + dependentsOnFleet + "startTimeDifference=" + startTimeDifference;
|
||||
}
|
||||
|
||||
}
|
||||
+17
@@ -10,6 +10,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResults;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
@@ -43,12 +44,14 @@ import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogStartTrackin
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
@@ -79,6 +82,20 @@ public class RaceLogEventFactoryImpl implements RaceLogEventFactory {
|
||||
public RaceLogStartTimeEvent createStartTimeEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author, int passId, TimePoint startTime) {
|
||||
return createStartTimeEvent(logicalTimePoint, author, UUID.randomUUID(), new ArrayList<Competitor>(), passId, startTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author,
|
||||
Serializable id, List<Competitor> involvedBoats, int passId, Fleet dependentsOnFleet, Duration startTimeDifference) {
|
||||
return new RaceLogDependentStartTimeEventImpl(MillisecondsTimePoint.now(), author, logicalTimePoint, id, involvedBoats,
|
||||
passId, dependentsOnFleet, startTimeDifference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint,
|
||||
AbstractLogEventAuthor author, int passId, Fleet dependentsOnFleet, Duration startTimeDifference) {
|
||||
return createDependentStartTimeEvent(logicalTimePoint, author, UUID.randomUUID(), new ArrayList<Competitor>(), passId,
|
||||
dependentsOnFleet, startTimeDifference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLogRaceStatusEvent createRaceStatusEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author,
|
||||
|
||||
+11
@@ -7,6 +7,7 @@ import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.race.CompetitorResults;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventRestoreFactory;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningListChangedEvent;
|
||||
@@ -40,12 +41,14 @@ import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogStartTrackin
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseBase;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class RaceLogEventRestoreFactoryImpl extends RaceLogEventFactoryImpl implements RaceLogEventRestoreFactory {
|
||||
@@ -187,4 +190,12 @@ public class RaceLogEventRestoreFactoryImpl extends RaceLogEventFactoryImpl impl
|
||||
AdditionalScoringInformationType informationType) {
|
||||
return new RaceLogAdditionalScoringInformationEventImpl(createdAt, author, logicalTimePoint, pId, competitors, passId, informationType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint createdAt,
|
||||
AbstractLogEventAuthor author, TimePoint logicalTimePoint, Serializable id, List<Competitor> involvedBoats,
|
||||
int passId, Fleet dependentOnFleet, Duration startTimeDifference) {
|
||||
return new RaceLogDependentStartTimeEventImpl(createdAt, author, logicalTimePoint, id, involvedBoats, passId,
|
||||
dependentOnFleet, startTimeDifference);
|
||||
}
|
||||
}
|
||||
-1
@@ -64,5 +64,4 @@ public class WeakRaceLogChangedVisitor extends AbstractRaceLogChangedVisitor {
|
||||
private void removeListener() {
|
||||
removeFromThisRaceLogWhenListenerNoLongerStronglyReferenced.removeListener(this);
|
||||
}
|
||||
|
||||
}
|
||||
+6
@@ -5,6 +5,7 @@ import java.io.Serializable;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
@@ -168,4 +169,9 @@ public class RaceColumnRaceLogReplicator implements RaceLogEventVisitor, Seriali
|
||||
public void visit(RaceLogAdditionalScoringInformationEvent additionalScoringInformation) {
|
||||
notifyOnAdd(additionalScoringInformation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
notifyOnAdd(event);
|
||||
}
|
||||
}
|
||||
+6
@@ -7,6 +7,7 @@ import java.util.logging.Logger;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogPassChangeEvent;
|
||||
@@ -254,4 +255,9 @@ public class DynamicTrackedRaceLogListener extends BaseRaceLogEventVisitor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
analyzeStartTime(null);
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.racelog.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDependentStartTimeEventSerializer;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
|
||||
public class RaceLogDependentStartTimeEventDeserializer extends RaceLogRaceStatusEventDeserializer {
|
||||
|
||||
public RaceLogDependentStartTimeEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
|
||||
super(competitorDeserializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, AbstractLogEventAuthor author, TimePoint timePoint, int passId, List<Competitor> competitors)
|
||||
throws JsonDeserializationException {
|
||||
|
||||
Fleet dependentOnFleet = (Fleet) object.get(RaceLogDependentStartTimeEventSerializer.FIELD_DEPDENDENT_ON_FLEET);
|
||||
long startTimeDifferenceInMs = (long) object.get(RaceLogDependentStartTimeEventSerializer.FIELD_START_TIME_DIFFERENCE);
|
||||
Duration startTimeDifference = new MillisecondsDurationImpl(startTimeDifferenceInMs);
|
||||
|
||||
RaceLogRaceStatusEvent event = (RaceLogRaceStatusEvent) super.deserialize(object, id, createdAt, author, timePoint, passId, competitors);
|
||||
|
||||
return factory.createDependentStartTimeEvent(event.getCreatedAt(), author, event.getLogicalTimePoint(), event.getId(), event.getInvolvedBoats(),
|
||||
event.getPassId(), dependentOnFleet, startTimeDifference);
|
||||
}
|
||||
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceLogDependentStartTimeEventSerializer extends BaseRaceLogEventSerializer implements JsonSerializer<RaceLogEvent> {
|
||||
|
||||
public RaceLogDependentStartTimeEventSerializer(JsonSerializer<Competitor> competitorSerializer) {
|
||||
super(competitorSerializer);
|
||||
}
|
||||
|
||||
public static final String VALUE_CLASS = RaceLogDependentStartTimeEvent.class.getSimpleName();
|
||||
|
||||
public static final String FIELD_DEPDENDENT_ON_FLEET = "dependentOnFleet";
|
||||
public static final String FIELD_START_TIME_DIFFERENCE = "startTimeDifference";
|
||||
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceLogEvent object) {
|
||||
RaceLogDependentStartTimeEvent event = (RaceLogDependentStartTimeEvent) object;
|
||||
|
||||
JSONObject result = super.serialize(event);
|
||||
result.put(FIELD_DEPDENDENT_ON_FLEET, event.getDependentOnFleet());
|
||||
result.put(FIELD_START_TIME_DIFFERENCE, event.getStartTimeDifference().asMillis());
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+12
-3
@@ -5,6 +5,7 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
|
||||
@@ -81,7 +82,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
new RaceLogCloseOpenEndedDeviceMappingEventSerializer(competitorSerializer),
|
||||
new RaceLogAdditionalScoringInformationSerializer(competitorSerializer),
|
||||
new RaceLogFixedMarkPassingEventSerializer(competitorSerializer),
|
||||
new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer));
|
||||
new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer),
|
||||
new RaceLogDependentStartTimeEventSerializer(competitorSerializer));
|
||||
}
|
||||
|
||||
private final JsonSerializer<RaceLogEvent> flagEventSerializer;
|
||||
@@ -108,6 +110,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
private final JsonSerializer<RaceLogEvent> additionalScoringInformationSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> fixedMarkPassingEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> suppressedMarkPassingsEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> dependentStartTimeEventSerializer;
|
||||
|
||||
private JsonSerializer<RaceLogEvent> chosenSerializer;
|
||||
|
||||
@@ -135,7 +138,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
JsonSerializer<RaceLogEvent> closeOpenEndedDeviceMappingEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> additionalScoringInformationSerializer,
|
||||
JsonSerializer<RaceLogEvent> fixedMarkPassingEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> suppressedMarkPassingsSerializer) {
|
||||
JsonSerializer<RaceLogEvent> suppressedMarkPassingsSerializer,
|
||||
JsonSerializer<RaceLogEvent> dependentStartTimeEventSerializer) {
|
||||
this.flagEventSerializer = flagEventSerializer;
|
||||
this.startTimeSerializer = startTimeSerializer;
|
||||
this.raceStatusSerializer = raceStatusSerializer;
|
||||
@@ -160,6 +164,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
this.additionalScoringInformationSerializer = additionalScoringInformationSerializer;
|
||||
this.fixedMarkPassingEventSerializer = fixedMarkPassingEventSerializer;
|
||||
this.suppressedMarkPassingsEventSerializer = suppressedMarkPassingsSerializer;
|
||||
this.dependentStartTimeEventSerializer = dependentStartTimeEventSerializer;
|
||||
|
||||
this.chosenSerializer = null;
|
||||
}
|
||||
@@ -294,9 +299,13 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void visit(SuppressedMarkPassingsEvent event) {
|
||||
chosenSerializer = suppressedMarkPassingsEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogDependentStartTimeEvent event) {
|
||||
chosenSerializer = dependentStartTimeEventSerializer;
|
||||
}
|
||||
}
|
||||
+21
-16
@@ -48,6 +48,7 @@ public class RaceLogEventSerializerTest {
|
||||
private JsonSerializer<RaceLogEvent> additionalScoringInformationSerializer;
|
||||
private JsonSerializer<RaceLogEvent> fixedMarkPassingEventSerializer;
|
||||
private JsonSerializer<RaceLogEvent> suppressedMarkPassingsSerializer;
|
||||
private JsonSerializer<RaceLogEvent> dependentStartTimeEventSerializer;
|
||||
|
||||
private RaceLogEventFactory factory;
|
||||
private AbstractLogEventAuthor author = new LogEventAuthorImpl("Test Author", 1);
|
||||
@@ -79,15 +80,19 @@ public class RaceLogEventSerializerTest {
|
||||
additionalScoringInformationSerializer = mock(JsonSerializer.class);
|
||||
fixedMarkPassingEventSerializer = mock(JsonSerializer.class);
|
||||
suppressedMarkPassingsSerializer = mock(JsonSerializer.class);
|
||||
dependentStartTimeEventSerializer = mock(JsonSerializer.class);
|
||||
|
||||
serializer = new RaceLogEventSerializer(flagEventSerializer, startTimeSerializer, raceStatusSerializer,
|
||||
courseAreaChangedEventSerializer, passChangedSerializer, courseDesignChangedEventSerializer,
|
||||
finishPositioningListChangedEventSerializer, finishPositioningConfirmedEventSerializer,
|
||||
pathfinderEventSerializer, gateLineOpeningTimeEventSerializer,
|
||||
startProcedureTypeChangedEventSerializer, protestStartTimeEventSerializer, windFixEventSerializer,
|
||||
deviceCompetitorMappingEventSerializer, deviceMarkMappingEventSerializer, denoteForTrackingEventSerializer,
|
||||
startTrackingEventSerializer, revokeEventSerializer, registerCompetitorEventSerializer, defineMarkEventSerializer,
|
||||
closeOpenEndedDeviceMappingEventSerializer, fixedMarkPassingEventSerializer, suppressedMarkPassingsSerializer, additionalScoringInformationSerializer);
|
||||
deviceCompetitorMappingEventSerializer, deviceMarkMappingEventSerializer,
|
||||
denoteForTrackingEventSerializer, startTrackingEventSerializer, revokeEventSerializer,
|
||||
registerCompetitorEventSerializer, defineMarkEventSerializer,
|
||||
closeOpenEndedDeviceMappingEventSerializer, fixedMarkPassingEventSerializer,
|
||||
suppressedMarkPassingsSerializer, additionalScoringInformationSerializer,
|
||||
dependentStartTimeEventSerializer);
|
||||
|
||||
factory = RaceLogEventFactory.INSTANCE;
|
||||
}
|
||||
@@ -179,7 +184,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(startProcedureTypeChangedEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testProtestStartTimeSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -187,7 +192,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(protestStartTimeEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testWindFixSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -195,7 +200,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(windFixEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeviceCompetitorMappingSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -203,7 +208,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(deviceCompetitorMappingEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDeviceMarkMappingSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -211,7 +216,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(deviceMarkMappingEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDenoteForTrackingSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -219,7 +224,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(denoteForTrackingEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCreateRaceSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -227,25 +232,25 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(startTrackingEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testRevokeEventSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
RaceLogEvent event = RaceLogEventRestoreFactory.INSTANCE.createRevokeEvent(MillisecondsTimePoint.now(),
|
||||
author, MillisecondsTimePoint.now(), 0, 0, UUID.randomUUID(), "type", "short info", "reason");
|
||||
RaceLogEvent event = RaceLogEventRestoreFactory.INSTANCE.createRevokeEvent(MillisecondsTimePoint.now(), author,
|
||||
MillisecondsTimePoint.now(), 0, 0, UUID.randomUUID(), "type", "short info", "reason");
|
||||
serializer.serialize(event);
|
||||
verify(revokeEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testRegisterCompetitorEventSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
RaceLogEvent event = factory.createRegisterCompetitorEvent(null, author, 0,
|
||||
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null, null));
|
||||
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null, null));
|
||||
serializer.serialize(event);
|
||||
verify(registerCompetitorEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testDefineMarkEventSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
@@ -253,7 +258,7 @@ public class RaceLogEventSerializerTest {
|
||||
serializer.serialize(event);
|
||||
verify(defineMarkEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testCloseOpenEndedDeviceMappingEventSerializer() {
|
||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||
|
||||
Reference in new issue
Block a user