mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 21:01:03 +00:00
added RegisterCompetitorEvent for race log
This commit is contained in:
1 parent
7222777c72
commit
f96cb785ad
21 files changed
+226
-13
No files matched your search
+10
-1
@@ -127,12 +127,13 @@ import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.impl.CompetitorResultsImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
@@ -1170,6 +1171,8 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return loadRaceLogStartEvent(createdAt, author, logicalTimePoint, id, passId, competitors, dbObject);
|
||||
} else if (eventClass.equals(RevokeEvent.class.getSimpleName())) {
|
||||
return loadRaceLogRevokeEvent(createdAt, author, logicalTimePoint, id, passId, competitors, dbObject);
|
||||
} else if (eventClass.equals(RegisterCompetitorEvent.class.getSimpleName())) {
|
||||
return loadRaceLogRegisterCompetitorEvent(createdAt, author, logicalTimePoint, id, passId, competitors, dbObject);
|
||||
}
|
||||
|
||||
throw new IllegalStateException(String.format("Unknown RaceLogEvent type %s", eventClass));
|
||||
@@ -1234,6 +1237,12 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return raceLogEventFactory.createRevokeEvent(createdAt, author, logicalTimePoint, id, passId, revokedEventId);
|
||||
}
|
||||
|
||||
private RaceLogEvent loadRaceLogRegisterCompetitorEvent(TimePoint createdAt, RaceLogEventAuthor author, TimePoint logicalTimePoint,
|
||||
Serializable id, Integer passId, List<Competitor> competitors, DBObject dbObject) {
|
||||
assert competitors.size() == 1 : "Should have exactly one competitor for RegisterCompetitorEvent";
|
||||
return raceLogEventFactory.createRegisterCompetitorEvent(createdAt, author, logicalTimePoint, id, passId, competitors.get(0));
|
||||
}
|
||||
|
||||
private RaceLogEvent loadRaceLogRaceLogProtestStartTimeEvent(TimePoint createdAt, RaceLogEventAuthor author,
|
||||
TimePoint logicalTimePoint, Serializable id, Integer passId, List<Competitor> competitors, DBObject dbObject) {
|
||||
TimePoint protestStartTime = loadTimePoint(dbObject, FieldNames.RACE_LOG_PROTEST_START_TIME);
|
||||
|
||||
+18
-1
@@ -78,12 +78,13 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.tracking.Positioned;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||
@@ -741,6 +742,14 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogRevokeEvent(event));
|
||||
return result;
|
||||
}
|
||||
|
||||
public DBObject storeRaceLogEntry(RaceLogIdentifier raceLogIdentifier, RegisterCompetitorEvent event) {
|
||||
BasicDBObject result = new BasicDBObject();
|
||||
result.put(FieldNames.RACE_LOG_IDENTIFIER.name(), TripleSerializer.serialize(raceLogIdentifier.getIdentifier()));
|
||||
|
||||
result.put(FieldNames.RACE_LOG_EVENT.name(), storeRaceLogRegisterCompetitorEvent(event));
|
||||
return result;
|
||||
}
|
||||
|
||||
private Object storeRaceLogWindFix(RaceLogWindFixEvent event) {
|
||||
DBObject result = new BasicDBObject();
|
||||
@@ -844,6 +853,14 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
private Object storeRaceLogRegisterCompetitorEvent(RegisterCompetitorEvent event) {
|
||||
DBObject result = new BasicDBObject();
|
||||
storeRaceLogEventProperties(event, result);
|
||||
|
||||
result.put(FieldNames.RACE_LOG_EVENT_CLASS.name(), RegisterCompetitorEvent.class.getSimpleName());
|
||||
return result;
|
||||
}
|
||||
|
||||
public DBObject storeRaceLogFlagEvent(RaceLogFlagEvent flagEvent) {
|
||||
DBObject result = new BasicDBObject();
|
||||
storeRaceLogEventProperties(flagEvent, result);
|
||||
|
||||
+8
-1
@@ -20,11 +20,12 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
|
||||
public class MongoRaceLogStoreVisitor implements RaceLogEventVisitor {
|
||||
|
||||
@@ -154,4 +155,10 @@ public class MongoRaceLogStoreVisitor implements RaceLogEventVisitor {
|
||||
storeEventInCollection(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
DBObject object = mongoObjectFactory.storeRaceLogEntry(raceLogIdentifier, event);
|
||||
storeEventInCollection(object);
|
||||
}
|
||||
|
||||
}
|
||||
+5
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -118,4 +119,8 @@ public class GenericRaceLogListener implements RaceLogEventVisitor {
|
||||
@Override
|
||||
public void visit(RevokeEvent event) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -12,12 +12,13 @@ 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.racelog.impl.RaceLogEventFactoryImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
|
||||
public interface RaceLogEventFactory {
|
||||
@@ -108,5 +109,7 @@ public interface RaceLogEventFactory {
|
||||
StartTrackingEvent createStartTrackingEvent(TimePoint logicalTimePoint, RaceLogEventAuthor author, int passId);
|
||||
|
||||
RevokeEvent createRevokeEvent(TimePoint logicalTimePoint, RaceLogEventAuthor author, int passId, Serializable revokedEventId);
|
||||
|
||||
RegisterCompetitorEvent createRegisterCompetitorEvent(TimePoint logicalTimePoint, RaceLogEventAuthor author, int passId, Competitor competitor);
|
||||
|
||||
}
|
||||
+5
-1
@@ -12,12 +12,13 @@ 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.racelog.impl.RaceLogEventRestoreFactoryImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
|
||||
public interface RaceLogEventRestoreFactory extends RaceLogEventFactory {
|
||||
@@ -79,4 +80,7 @@ public interface RaceLogEventRestoreFactory extends RaceLogEventFactory {
|
||||
|
||||
RevokeEvent createRevokeEvent(TimePoint createdAt, RaceLogEventAuthor author,
|
||||
TimePoint logicalTimePoint, Serializable pId, int passId, Serializable revokedEventId);
|
||||
|
||||
RegisterCompetitorEvent createRegisterCompetitorEvent(TimePoint createdAt, RaceLogEventAuthor author,
|
||||
TimePoint logicalTimePoint, Serializable pId, int passId, Competitor competitor);
|
||||
}
|
||||
+3
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.domain.racelog;
|
||||
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -43,4 +44,6 @@ public interface RaceLogEventVisitor {
|
||||
public void visit(StartTrackingEvent event);
|
||||
|
||||
public void visit(RevokeEvent event);
|
||||
|
||||
public void visit(RegisterCompetitorEvent event);
|
||||
}
|
||||
+6
@@ -14,6 +14,7 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -114,5 +115,10 @@ public abstract class BaseRaceLogEventVisitor implements RaceLogEventVisitor {
|
||||
public void visit(RevokeEvent event) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+6
@@ -15,6 +15,7 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -113,4 +114,9 @@ public class RaceLogChangedVisitor implements RaceLogEventVisitor {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
listener.eventAdded(event);
|
||||
}
|
||||
|
||||
}
|
||||
+8
@@ -29,12 +29,14 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.RegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.StartTrackingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.DenoteForTrackingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.DeviceCompetitorMappingEventImpl;
|
||||
@@ -242,5 +244,11 @@ public class RaceLogEventFactoryImpl implements RaceLogEventFactory {
|
||||
public RevokeEvent createRevokeEvent(TimePoint logicalTimePoint, RaceLogEventAuthor author, int passId, Serializable revokedEventId) {
|
||||
return new RevokeEventImpl(MillisecondsTimePoint.now(), author, logicalTimePoint, UUID.randomUUID(), passId, revokedEventId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegisterCompetitorEvent createRegisterCompetitorEvent(TimePoint logicalTimePoint, RaceLogEventAuthor author,
|
||||
int passId, Competitor competitor) {
|
||||
return new RegisterCompetitorEventImpl(MillisecondsTimePoint.now(), author, logicalTimePoint, UUID.randomUUID(), passId, competitor);
|
||||
}
|
||||
|
||||
}
|
||||
+10
-2
@@ -27,17 +27,19 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.StartTrackingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.DenoteForTrackingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.DeviceCompetitorMappingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.DeviceMarkMappingEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.RegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.RevokeEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.events.StartTrackingEventImpl;
|
||||
import com.sap.sailing.domain.tracking.Wind;
|
||||
|
||||
public class RaceLogEventRestoreFactoryImpl extends RaceLogEventFactoryImpl implements RaceLogEventRestoreFactory {
|
||||
@@ -152,5 +154,11 @@ public class RaceLogEventRestoreFactoryImpl extends RaceLogEventFactoryImpl impl
|
||||
Serializable pId, int passId, Serializable revokedEventId) {
|
||||
return new RevokeEventImpl(createdAt, author, logicalTimePoint, pId, passId, revokedEventId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegisterCompetitorEvent createRegisterCompetitorEvent(TimePoint createdAt, RaceLogEventAuthor author, TimePoint logicalTimePoint,
|
||||
Serializable pId, int passId, Competitor competitor) {
|
||||
return new RegisterCompetitorEventImpl(createdAt, author, logicalTimePoint, pId, passId, competitor);
|
||||
}
|
||||
|
||||
}
|
||||
+5
@@ -2,6 +2,11 @@ package com.sap.sailing.domain.racelog.tracking;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
|
||||
/**
|
||||
* Also registers the competitor for the race, even if no {@link RegisterCompetitorEvent} is present.
|
||||
* @author Fredrik Teschke
|
||||
*
|
||||
*/
|
||||
public interface DeviceCompetitorMappingEvent extends DeviceMappingEvent<Competitor> {
|
||||
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package com.sap.sailing.domain.racelog.tracking;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
|
||||
public interface RegisterCompetitorEvent extends RaceLogEvent {
|
||||
Competitor getCompetitor();
|
||||
}
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
package com.sap.sailing.domain.racelog.tracking.events;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventAuthor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogEventImpl;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
|
||||
public class RegisterCompetitorEventImpl extends RaceLogEventImpl implements RegisterCompetitorEvent {
|
||||
private static final long serialVersionUID = -30864810737555657L;
|
||||
|
||||
public RegisterCompetitorEventImpl(TimePoint createdAt, RaceLogEventAuthor author, TimePoint logicalTimePoint,
|
||||
Serializable pId, int pPassId, Competitor competitor) {
|
||||
super(createdAt, author, logicalTimePoint, pId, Collections.singletonList(competitor), pPassId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(RaceLogEventVisitor visitor) {
|
||||
visitor.visit(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Competitor getCompetitor() {
|
||||
return getInvolvedBoats().get(0);
|
||||
}
|
||||
}
|
||||
+6
@@ -19,6 +19,7 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -132,4 +133,9 @@ public class RaceColumnRaceLogReplicator implements RaceLogEventVisitor, Seriali
|
||||
public void visit(RevokeEvent event) {
|
||||
notifyOnAdd(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
notifyOnAdd(event);
|
||||
}
|
||||
}
|
||||
+14
@@ -46,6 +46,7 @@ import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceMarkMappingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RevokeEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockServiceFinderFactory;
|
||||
@@ -235,6 +236,19 @@ public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
||||
assertEquals(revokedEventId, actualEvent.getRevokedEventId());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStoreAndLoadRegisterCompetitorEvent() {
|
||||
RegisterCompetitorEvent expectedEvent = eventFactory.createRegisterCompetitorEvent(
|
||||
expectedEventTime, author, expectedEventTime, expectedId, expectedPassId,
|
||||
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null));
|
||||
|
||||
DBObject dbObject = mongoFactory.storeRaceLogEntry(logIdentifier, expectedEvent);
|
||||
RegisterCompetitorEvent actualEvent = loadEvent(dbObject);
|
||||
|
||||
assertBaseFields(expectedEvent, actualEvent);
|
||||
assertEquals(expectedEvent.getCompetitor(), actualEvent.getCompetitor());
|
||||
}
|
||||
|
||||
/**
|
||||
* Will always wait a couple of milliseconds to ensure that {@link RaceLogEvent#getCreatedAt()} has passed.
|
||||
*/
|
||||
|
||||
+13
-1
@@ -6,6 +6,7 @@ import static org.mockito.Mockito.verify;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
@@ -37,6 +38,7 @@ public class RaceLogEventSerializerTest {
|
||||
private JsonSerializer<RaceLogEvent> denoteForTrackingEventSerializer;
|
||||
private JsonSerializer<RaceLogEvent> startTrackingEventSerializer;
|
||||
private JsonSerializer<RaceLogEvent> revokeEventSerializer;
|
||||
private JsonSerializer<RaceLogEvent> registerCompetitorEventSerializer;
|
||||
|
||||
private RaceLogEventFactory factory;
|
||||
private RaceLogEventAuthor author = new RaceLogEventAuthorImpl("Test Author", 1);
|
||||
@@ -62,6 +64,7 @@ public class RaceLogEventSerializerTest {
|
||||
denoteForTrackingEventSerializer = mock(JsonSerializer.class);
|
||||
startTrackingEventSerializer = mock(JsonSerializer.class);
|
||||
revokeEventSerializer = mock(JsonSerializer.class);
|
||||
registerCompetitorEventSerializer = mock(JsonSerializer.class);
|
||||
|
||||
serializer = new RaceLogEventSerializer(flagEventSerializer, startTimeSerializer, raceStatusSerializer,
|
||||
courseAreaChangedEventSerializer, passChangedSerializer, courseDesignChangedEventSerializer,
|
||||
@@ -69,7 +72,7 @@ public class RaceLogEventSerializerTest {
|
||||
pathfinderEventSerializer, gateLineOpeningTimeEventSerializer,
|
||||
startProcedureTypeChangedEventSerializer, protestStartTimeEventSerializer, windFixEventSerializer,
|
||||
deviceCompetitorMappingEventSerializer, deviceMarkMappingEventSerializer, denoteForTrackingEventSerializer,
|
||||
startTrackingEventSerializer, revokeEventSerializer);
|
||||
startTrackingEventSerializer, revokeEventSerializer, registerCompetitorEventSerializer);
|
||||
|
||||
factory = RaceLogEventFactory.INSTANCE;
|
||||
}
|
||||
@@ -217,5 +220,14 @@ public class RaceLogEventSerializerTest {
|
||||
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));
|
||||
serializer.serialize(event);
|
||||
verify(registerCompetitorEventSerializer).serialize(event);
|
||||
}
|
||||
|
||||
}
|
||||
+10
-3
@@ -21,7 +21,6 @@ import com.sap.sailing.server.gateway.deserialization.impl.WindJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.BaseRaceLogEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseAreaChangedEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseDesignChangedEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTrackingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDenoteForTrackingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDeviceCompetitorMappingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDeviceMarkMappingEventSerializer;
|
||||
@@ -33,9 +32,11 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPassChan
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogPathfinderEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogProtestStartTimeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRaceStatusEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRegisterCompetitorEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogRevokeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartProcedureChangedEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTimeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTrackingEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogWindFixEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.impl.SmartphoneImeiJsonHandlerImpl;
|
||||
@@ -75,7 +76,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
new RaceLogDeviceMarkMappingEventDeserializer(competitorDeserializer, deviceServiceFinder),
|
||||
new RaceLogDenoteForTrackingEventDeserializer(competitorDeserializer),
|
||||
new RaceLogStartTrackingEventDeserializer(competitorDeserializer),
|
||||
new RaceLogRevokeEventDeserializer(competitorDeserializer));
|
||||
new RaceLogRevokeEventDeserializer(competitorDeserializer),
|
||||
new RaceLogRegisterCompetitorEventDeserializer(competitorDeserializer));
|
||||
}
|
||||
|
||||
protected final JsonDeserializer<RaceLogEvent> flagEventDeserializer;
|
||||
@@ -96,6 +98,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
protected final JsonDeserializer<RaceLogEvent> denoteForTrackingEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> startTrackingEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> revokeEventDeserializer;
|
||||
protected final JsonDeserializer<RaceLogEvent> registerCompetitorEventDeserializer;
|
||||
|
||||
public RaceLogEventDeserializer(JsonDeserializer<RaceLogEvent> flagEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> startTimeEventDeserializer,
|
||||
@@ -114,7 +117,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
JsonDeserializer<RaceLogEvent> deviceMarkMappingEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> denoteForTrackingEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> startTrackingEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> revokeEventDeserializer) {
|
||||
JsonDeserializer<RaceLogEvent> revokeEventDeserializer,
|
||||
JsonDeserializer<RaceLogEvent> registerCompetitorEventDeserializer) {
|
||||
this.flagEventDeserializer = flagEventDeserializer;
|
||||
this.startTimeEventDeserializer = startTimeEventDeserializer;
|
||||
this.raceStatusEventDeserializer = raceStatusEventDeserializer;
|
||||
@@ -133,6 +137,7 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
this.denoteForTrackingEventDeserializer = denoteForTrackingEventDeserializer;
|
||||
this.startTrackingEventDeserializer = startTrackingEventDeserializer;
|
||||
this.revokeEventDeserializer = revokeEventDeserializer;
|
||||
this.registerCompetitorEventDeserializer = registerCompetitorEventDeserializer;
|
||||
}
|
||||
|
||||
protected JsonDeserializer<RaceLogEvent> getDeserializer(JSONObject object) throws JsonDeserializationException {
|
||||
@@ -174,6 +179,8 @@ public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent>
|
||||
return startTrackingEventDeserializer;
|
||||
} else if (type.equals(RaceLogRevokeEventSerializer.VALUE_CLASS)) {
|
||||
return revokeEventDeserializer;
|
||||
} else if (type.equals(RaceLogRegisterCompetitorEventSerializer.VALUE_CLASS)) {
|
||||
return registerCompetitorEventDeserializer;
|
||||
}
|
||||
|
||||
throw new JsonDeserializationException(String.format("There is no deserializer defined for event type %s.",
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
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.base.Competitor;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventAuthor;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
|
||||
public class RaceLogRegisterCompetitorEventDeserializer extends BaseRaceLogEventDeserializer {
|
||||
|
||||
public RaceLogRegisterCompetitorEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
|
||||
super(competitorDeserializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, RaceLogEventAuthor author, TimePoint timePoint, int passId, List<Competitor> competitors) {
|
||||
assert competitors.size() == 1 : "Expected exactly one competitor for RegisterCompetitorEvent";
|
||||
return factory.createRegisterCompetitorEvent(createdAt, author, timePoint, id, passId, competitors.get(0));
|
||||
}
|
||||
|
||||
}
|
||||
+11
-2
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartProcedureChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogWindFixEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.StartTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DenoteForTrackingEvent;
|
||||
import com.sap.sailing.domain.racelog.tracking.DeviceCompetitorMappingEvent;
|
||||
@@ -70,7 +71,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
new RaceLogDeviceMarkMappingEventSerializer(competitorSerializer, deviceServiceFinder),
|
||||
new RaceLogDenoteForTrackingEventSerializer(competitorSerializer),
|
||||
new RaceLogStartTrackingEventSerializer(competitorSerializer),
|
||||
new RaceLogRevokeEventSerializer(competitorSerializer));
|
||||
new RaceLogRevokeEventSerializer(competitorSerializer),
|
||||
new RaceLogRegisterCompetitorEventSerializer(competitorSerializer));
|
||||
}
|
||||
|
||||
private final JsonSerializer<RaceLogEvent> flagEventSerializer;
|
||||
@@ -91,6 +93,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
private final JsonSerializer<RaceLogEvent> denoteForTrackingSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> startTrackingSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> revokeSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> registerCompetitorSerializer;
|
||||
|
||||
private JsonSerializer<RaceLogEvent> chosenSerializer;
|
||||
|
||||
@@ -112,7 +115,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
JsonSerializer<RaceLogEvent> deviceMarkMappingSerializer,
|
||||
JsonSerializer<RaceLogEvent> denoteForTrackingSerializer,
|
||||
JsonSerializer<RaceLogEvent> createRaceSerializer,
|
||||
JsonSerializer<RaceLogEvent> revokeSerializer) {
|
||||
JsonSerializer<RaceLogEvent> revokeSerializer,
|
||||
JsonSerializer<RaceLogEvent> registerCompetitorSerializer) {
|
||||
this.flagEventSerializer = flagEventSerializer;
|
||||
this.startTimeSerializer = startTimeSerializer;
|
||||
this.raceStatusSerializer = raceStatusSerializer;
|
||||
@@ -131,6 +135,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
this.denoteForTrackingSerializer = denoteForTrackingSerializer;
|
||||
this.startTrackingSerializer = createRaceSerializer;
|
||||
this.revokeSerializer = revokeSerializer;
|
||||
this.registerCompetitorSerializer = registerCompetitorSerializer;
|
||||
|
||||
this.chosenSerializer = null;
|
||||
}
|
||||
@@ -238,5 +243,9 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
|
||||
public void visit(RevokeEvent event) {
|
||||
chosenSerializer = revokeSerializer;
|
||||
}
|
||||
@Override
|
||||
public void visit(RegisterCompetitorEvent event) {
|
||||
chosenSerializer = registerCompetitorSerializer;
|
||||
}
|
||||
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.racelog.tracking.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceLogRegisterCompetitorEventSerializer extends BaseRaceLogEventSerializer {
|
||||
|
||||
public static final String VALUE_CLASS = RegisterCompetitorEvent.class.getSimpleName();
|
||||
|
||||
public RaceLogRegisterCompetitorEventSerializer(
|
||||
JsonSerializer<Competitor> competitorSerializer) {
|
||||
super(competitorSerializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user