From 81fa2d4fb6af20d0468ac32c7c2b0adc2a1a0881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Mon, 18 May 2015 20:55:16 +0200 Subject: [PATCH] Add DependentStartTimeEvent and replication + de/serialization --- .../domain/persistence/impl/FieldNames.java | 3 +- .../impl/MongoObjectFactoryImpl.java | 33 +++++++++++- .../impl/MongoRaceLogStoreVisitor.java | 7 +++ .../race/RaceLogDependentStartTimeEvent.java | 13 +++++ .../abstractlog/race/RaceLogEventFactory.java | 9 ++++ .../race/RaceLogEventRestoreFactory.java | 5 ++ .../abstractlog/race/RaceLogEventVisitor.java | 3 +- .../analyzing/impl/RaceStatusAnalyzer.java | 6 +++ .../impl/AbstractRaceLogChangedVisitor.java | 6 +++ .../race/impl/BaseRaceLogEventVisitor.java | 6 +++ .../RaceLogDependentStartTimeEventImpl.java | 50 +++++++++++++++++++ .../race/impl/RaceLogEventFactoryImpl.java | 17 +++++++ .../impl/RaceLogEventRestoreFactoryImpl.java | 11 ++++ .../race/impl/WeakRaceLogChangedVisitor.java | 1 - .../impl/RaceColumnRaceLogReplicator.java | 6 +++ .../impl/DynamicTrackedRaceLogListener.java | 6 +++ ...ogDependentStartTimeEventDeserializer.java | 40 +++++++++++++++ ...eLogDependentStartTimeEventSerializer.java | 36 +++++++++++++ .../racelog/impl/RaceLogEventSerializer.java | 15 ++++-- .../racelog/RaceLogEventSerializerTest.java | 37 ++++++++------ 20 files changed, 287 insertions(+), 23 deletions(-) create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogDependentStartTimeEvent.java create mode 100644 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogDependentStartTimeEventImpl.java create mode 100644 java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDependentStartTimeEventDeserializer.java create mode 100644 java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDependentStartTimeEventSerializer.java diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java index 251e93346b1..7924edc2234 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java @@ -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, diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index 055cae76749..f61ebc76eeb 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -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; + } } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogStoreVisitor.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogStoreVisitor.java index 90e53800a11..cef51870f44 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogStoreVisitor.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoRaceLogStoreVisitor.java @@ -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); + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogDependentStartTimeEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogDependentStartTimeEvent.java new file mode 100644 index 00000000000..c003199b9e2 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogDependentStartTimeEvent.java @@ -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(); + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java index 3ea6106ef03..ca2b93099af 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventFactory.java @@ -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 competitors, Integer passId, Integer zeroBasedIndexOfFirstSuppressedWaypoint); + + RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint, + AbstractLogEventAuthor author, Serializable id, List involvedBoats, int passId, Fleet dependentsOnFleet, + Duration startTimeDifference); + + RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint, + AbstractLogEventAuthor author, int passId, Fleet dependentsOnFleet, Duration startTimeDifference); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java index 19189e1ff25..545123f5ac5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventRestoreFactory.java @@ -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 competitors, int passId, AdditionalScoringInformationType informationType); + + RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint createdAt, AbstractLogEventAuthor author, TimePoint logicalTimePoint, + Serializable id, List involvedBoats, int passId, Fleet dependentOnFleet, Duration startTimeDifference); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventVisitor.java index 1049e62c387..7ecbaac939e 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/RaceLogEventVisitor.java @@ -57,6 +57,7 @@ public interface RaceLogEventVisitor { public void visit(FixedMarkPassingEvent event); - public void visit(SuppressedMarkPassingsEvent event); + + public void visit(RaceLogDependentStartTimeEvent event); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java index 230753142dc..c0827cd1c78 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/analyzing/impl/RaceStatusAnalyzer.java @@ -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 { @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 }; }; diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/AbstractRaceLogChangedVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/AbstractRaceLogChangedVisitor.java index 3832110571d..856f15c45d2 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/AbstractRaceLogChangedVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/AbstractRaceLogChangedVisitor.java @@ -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); + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/BaseRaceLogEventVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/BaseRaceLogEventVisitor.java index a310c95cb12..8f20f90261c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/BaseRaceLogEventVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/BaseRaceLogEventVisitor.java @@ -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) { + + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogDependentStartTimeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogDependentStartTimeEventImpl.java new file mode 100644 index 00000000000..633dbd60400 --- /dev/null +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogDependentStartTimeEventImpl.java @@ -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 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; + } + +} diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java index eced8bdf48c..070da1147f3 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventFactoryImpl.java @@ -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(), passId, startTime); } + + @Override + public RaceLogDependentStartTimeEvent createDependentStartTimeEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author, + Serializable id, List 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(), passId, + dependentsOnFleet, startTimeDifference); + } @Override public RaceLogRaceStatusEvent createRaceStatusEvent(TimePoint logicalTimePoint, AbstractLogEventAuthor author, diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java index 08510449ced..170586a7dd4 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/RaceLogEventRestoreFactoryImpl.java @@ -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 involvedBoats, + int passId, Fleet dependentOnFleet, Duration startTimeDifference) { + return new RaceLogDependentStartTimeEventImpl(createdAt, author, logicalTimePoint, id, involvedBoats, passId, + dependentOnFleet, startTimeDifference); + } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/WeakRaceLogChangedVisitor.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/WeakRaceLogChangedVisitor.java index 368dd02fa04..cb206fea1fa 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/WeakRaceLogChangedVisitor.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/WeakRaceLogChangedVisitor.java @@ -64,5 +64,4 @@ public class WeakRaceLogChangedVisitor extends AbstractRaceLogChangedVisitor { private void removeListener() { removeFromThisRaceLogWhenListenerNoLongerStronglyReferenced.removeListener(this); } - } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java index 61fc4571ddb..aee01674478 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnRaceLogReplicator.java @@ -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); + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java index c13f7956efa..c3a31ff7f76 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java @@ -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); + } } diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDependentStartTimeEventDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDependentStartTimeEventDeserializer.java new file mode 100644 index 00000000000..7d48ef9e7e1 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/racelog/impl/RaceLogDependentStartTimeEventDeserializer.java @@ -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 competitorDeserializer) { + super(competitorDeserializer); + } + + @Override + protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, AbstractLogEventAuthor author, TimePoint timePoint, int passId, List 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); + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDependentStartTimeEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDependentStartTimeEventSerializer.java new file mode 100644 index 00000000000..c4dfd03cc5c --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogDependentStartTimeEventSerializer.java @@ -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 { + + public RaceLogDependentStartTimeEventSerializer(JsonSerializer 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; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java index 068f5bd6391..4578fd13600 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/racelog/impl/RaceLogEventSerializer.java @@ -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, Rac new RaceLogCloseOpenEndedDeviceMappingEventSerializer(competitorSerializer), new RaceLogAdditionalScoringInformationSerializer(competitorSerializer), new RaceLogFixedMarkPassingEventSerializer(competitorSerializer), - new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer)); + new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer), + new RaceLogDependentStartTimeEventSerializer(competitorSerializer)); } private final JsonSerializer flagEventSerializer; @@ -108,6 +110,7 @@ public class RaceLogEventSerializer implements JsonSerializer, Rac private final JsonSerializer additionalScoringInformationSerializer; private final JsonSerializer fixedMarkPassingEventSerializer; private final JsonSerializer suppressedMarkPassingsEventSerializer; + private final JsonSerializer dependentStartTimeEventSerializer; private JsonSerializer chosenSerializer; @@ -135,7 +138,8 @@ public class RaceLogEventSerializer implements JsonSerializer, Rac JsonSerializer closeOpenEndedDeviceMappingEventSerializer, JsonSerializer additionalScoringInformationSerializer, JsonSerializer fixedMarkPassingEventSerializer, - JsonSerializer suppressedMarkPassingsSerializer) { + JsonSerializer suppressedMarkPassingsSerializer, + JsonSerializer dependentStartTimeEventSerializer) { this.flagEventSerializer = flagEventSerializer; this.startTimeSerializer = startTimeSerializer; this.raceStatusSerializer = raceStatusSerializer; @@ -160,6 +164,7 @@ public class RaceLogEventSerializer implements JsonSerializer, 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, Rac } - @Override public void visit(SuppressedMarkPassingsEvent event) { chosenSerializer = suppressedMarkPassingsEventSerializer; } + + @Override + public void visit(RaceLogDependentStartTimeEvent event) { + chosenSerializer = dependentStartTimeEventSerializer; + } } diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java index 43d99941fcb..80a486da476 100644 --- a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/racelog/RaceLogEventSerializerTest.java @@ -48,6 +48,7 @@ public class RaceLogEventSerializerTest { private JsonSerializer additionalScoringInformationSerializer; private JsonSerializer fixedMarkPassingEventSerializer; private JsonSerializer suppressedMarkPassingsSerializer; + private JsonSerializer 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.