mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 06:10:56 +00:00
refs bug 1125
# added ProtestStartTimeEvent (and tests and serializers and persistence)
This commit is contained in:
1 parent
70b3a27c9d
commit
4a9cdcd021
23 files changed
+594
-336
No files matched your search
@@ -17,5 +17,4 @@ Export-Package: com.sap.sailing.server.gateway.deserialization,
|
||||
com.sap.sailing.server.gateway.serialization.coursedata.impl,
|
||||
com.sap.sailing.server.gateway.serialization.impl,
|
||||
com.sap.sailing.server.gateway.serialization.racegroup.impl,
|
||||
com.sap.sailing.server.gateway.serialization.racelog,
|
||||
com.sap.sailing.server.gateway.serialization.racelog.impl
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
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.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
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.RaceLogProtestStartTimeEventSerializer;
|
||||
|
||||
public class RaceLogProtestStartTimeEventDeserializer extends BaseRaceLogEventDeserializer {
|
||||
|
||||
public RaceLogProtestStartTimeEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
|
||||
super(competitorDeserializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, TimePoint timePoint,
|
||||
int passId, List<Competitor> competitors) throws JsonDeserializationException {
|
||||
Long protestStartTime = (Long) object.get(RaceLogProtestStartTimeEventSerializer.FIELD_PROTEST_START_TIME);
|
||||
return factory.createProtestStartTimeEvent(createdAt, timePoint, id, competitors, passId,
|
||||
new MillisecondsTimePoint(protestStartTime));
|
||||
}
|
||||
|
||||
}
|
||||
-8
@@ -1,8 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public interface RaceLogEventSerializerChooser {
|
||||
JsonSerializer<RaceLogEvent> getSerializer(RaceLogEvent event);
|
||||
}
|
||||
+126
-8
@@ -3,19 +3,31 @@ package com.sap.sailing.server.gateway.serialization.racelog.impl;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent;
|
||||
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.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.GateJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.MarkJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.coursedata.impl.WaypointJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.RaceLogEventSerializerChooser;
|
||||
|
||||
public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent> {
|
||||
public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, RaceLogEventVisitor {
|
||||
|
||||
public static JsonSerializer<RaceLogEvent> create(JsonSerializer<Competitor> competitorSerializer) {
|
||||
return new RaceLogEventSerializer(new RaceLogEventSerializerChooserImpl(
|
||||
return new RaceLogEventSerializer(
|
||||
new RaceLogFlagEventSerializer(competitorSerializer),
|
||||
new RaceLogStartTimeEventSerializer(competitorSerializer),
|
||||
new RaceLogRaceStatusEventSerializer(competitorSerializer),
|
||||
@@ -31,17 +43,63 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent> {
|
||||
new RaceLogFinishPositioningConfirmedEventSerializer(competitorSerializer),
|
||||
new RaceLogPathfinderEventSerializer(competitorSerializer),
|
||||
new RaceLogGateLineOpeningTimeEventSerializer(competitorSerializer),
|
||||
new RaceLogStartProcedureChangedEventSerializer(competitorSerializer)));
|
||||
new RaceLogStartProcedureChangedEventSerializer(competitorSerializer),
|
||||
new RaceLogProtestStartTimeEventSerializer(competitorSerializer));
|
||||
}
|
||||
|
||||
private RaceLogEventSerializerChooser serializerChooser;
|
||||
private final JsonSerializer<RaceLogEvent> flagEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> startTimeSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> raceStatusSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> courseAreaChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> passChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> courseDesignChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> finishPositioningListChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> finishPositioningConfirmedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> pathfinderEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> gateLineOpeningTimeEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> startProcedureChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> protestStartTimeEventSerializer;
|
||||
|
||||
private JsonSerializer<RaceLogEvent> chosenSerializer;
|
||||
|
||||
public RaceLogEventSerializer(RaceLogEventSerializerChooser serializerChooser) {
|
||||
this.serializerChooser = serializerChooser;
|
||||
public RaceLogEventSerializer(
|
||||
JsonSerializer<RaceLogEvent> flagEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> startTimeSerializer,
|
||||
JsonSerializer<RaceLogEvent> raceStatusSerializer,
|
||||
JsonSerializer<RaceLogEvent> courseAreaChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> passChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> courseDesignChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> finishPositioningListChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> finishPositioningConfirmedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> pathfinderEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> gateLineOpeningTimeEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> startProcedureChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> protestStartTimeEventSerializer) {
|
||||
this.flagEventSerializer = flagEventSerializer;
|
||||
this.startTimeSerializer = startTimeSerializer;
|
||||
this.raceStatusSerializer = raceStatusSerializer;
|
||||
this.courseAreaChangedEventSerializer = courseAreaChangedEventSerializer;
|
||||
this.passChangedEventSerializer = passChangedEventSerializer;
|
||||
this.courseDesignChangedEventSerializer = courseDesignChangedEventSerializer;
|
||||
this.finishPositioningListChangedEventSerializer = finishPositioningListChangedEventSerializer;
|
||||
this.finishPositioningConfirmedEventSerializer = finishPositioningConfirmedEventSerializer;
|
||||
this.pathfinderEventSerializer = pathfinderEventSerializer;
|
||||
this.gateLineOpeningTimeEventSerializer = gateLineOpeningTimeEventSerializer;
|
||||
this.startProcedureChangedEventSerializer = startProcedureChangedEventSerializer;
|
||||
this.protestStartTimeEventSerializer = protestStartTimeEventSerializer;
|
||||
|
||||
this.chosenSerializer = null;
|
||||
}
|
||||
|
||||
protected JsonSerializer<RaceLogEvent> getSerializer(RaceLogEvent event) {
|
||||
return serializerChooser.getSerializer(event);
|
||||
chosenSerializer = null;
|
||||
event.accept(this);
|
||||
if (chosenSerializer == null) {
|
||||
throw new UnsupportedOperationException(
|
||||
String.format("There is no serializer for event type %s",
|
||||
event.getClass().getName()));
|
||||
}
|
||||
return chosenSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,4 +107,64 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent> {
|
||||
return getSerializer(object).serialize(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFlagEvent event) {
|
||||
chosenSerializer = flagEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPassChangeEvent event) {
|
||||
chosenSerializer = passChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogRaceStatusEvent event) {
|
||||
chosenSerializer = raceStatusSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartTimeEvent event) {
|
||||
chosenSerializer = startTimeSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseAreaChangedEvent event) {
|
||||
chosenSerializer = courseAreaChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseDesignChangedEvent event) {
|
||||
chosenSerializer = courseDesignChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningListChangedEvent event) {
|
||||
chosenSerializer = finishPositioningListChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningConfirmedEvent event) {
|
||||
chosenSerializer = finishPositioningConfirmedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPathfinderEvent event) {
|
||||
chosenSerializer = pathfinderEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogGateLineOpeningTimeEvent event) {
|
||||
chosenSerializer = gateLineOpeningTimeEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartProcedureChangedEvent event) {
|
||||
chosenSerializer = startProcedureChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogProtestStartTimeEvent event) {
|
||||
chosenSerializer = protestStartTimeEventSerializer;
|
||||
}
|
||||
|
||||
}
|
||||
-129
@@ -1,129 +0,0 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.impl;
|
||||
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningConfirmedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogGateLineOpeningTimeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogPathfinderEvent;
|
||||
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.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.RaceLogEventSerializerChooser;
|
||||
|
||||
public class RaceLogEventSerializerChooserImpl implements RaceLogEventSerializerChooser, RaceLogEventVisitor {
|
||||
|
||||
private final JsonSerializer<RaceLogEvent> flagEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> startTimeSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> raceStatusSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> courseAreaChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> passChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> courseDesignChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> finishPositioningListChangedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> finishPositioningConfirmedEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> pathfinderEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> gateLineOpeningTimeEventSerializer;
|
||||
private final JsonSerializer<RaceLogEvent> startProcedureChangedEventSerializer;
|
||||
|
||||
private JsonSerializer<RaceLogEvent> chosenSerializer;
|
||||
|
||||
public RaceLogEventSerializerChooserImpl(
|
||||
JsonSerializer<RaceLogEvent> flagEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> startTimeSerializer,
|
||||
JsonSerializer<RaceLogEvent> raceStatusSerializer,
|
||||
JsonSerializer<RaceLogEvent> courseAreaChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> passChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> courseDesignChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> finishPositioningListChangedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> finishPositioningConfirmedEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> pathfinderEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> gateLineOpeningTimeEventSerializer,
|
||||
JsonSerializer<RaceLogEvent> startProcedureChangedEventSerializer) {
|
||||
this.flagEventSerializer = flagEventSerializer;
|
||||
this.startTimeSerializer = startTimeSerializer;
|
||||
this.raceStatusSerializer = raceStatusSerializer;
|
||||
this.courseAreaChangedEventSerializer = courseAreaChangedEventSerializer;
|
||||
this.passChangedEventSerializer = passChangedEventSerializer;
|
||||
this.courseDesignChangedEventSerializer = courseDesignChangedEventSerializer;
|
||||
this.finishPositioningListChangedEventSerializer = finishPositioningListChangedEventSerializer;
|
||||
this.finishPositioningConfirmedEventSerializer = finishPositioningConfirmedEventSerializer;
|
||||
this.pathfinderEventSerializer = pathfinderEventSerializer;
|
||||
this.gateLineOpeningTimeEventSerializer = gateLineOpeningTimeEventSerializer;
|
||||
this.startProcedureChangedEventSerializer = startProcedureChangedEventSerializer;
|
||||
|
||||
this.chosenSerializer = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonSerializer<RaceLogEvent> getSerializer(RaceLogEvent event) {
|
||||
chosenSerializer = null;
|
||||
event.accept(this);
|
||||
if (chosenSerializer == null) {
|
||||
throw new UnsupportedOperationException(
|
||||
String.format("There is no serializer for event type %s",
|
||||
event.getClass().getName()));
|
||||
}
|
||||
return chosenSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFlagEvent event) {
|
||||
chosenSerializer = flagEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPassChangeEvent event) {
|
||||
chosenSerializer = passChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogRaceStatusEvent event) {
|
||||
chosenSerializer = raceStatusSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartTimeEvent event) {
|
||||
chosenSerializer = startTimeSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseAreaChangedEvent event) {
|
||||
chosenSerializer = courseAreaChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogCourseDesignChangedEvent event) {
|
||||
chosenSerializer = courseDesignChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningListChangedEvent event) {
|
||||
chosenSerializer = finishPositioningListChangedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogFinishPositioningConfirmedEvent event) {
|
||||
chosenSerializer = finishPositioningConfirmedEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogPathfinderEvent event) {
|
||||
chosenSerializer = pathfinderEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogGateLineOpeningTimeEvent event) {
|
||||
chosenSerializer = gateLineOpeningTimeEventSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(RaceLogStartProcedureChangedEvent event) {
|
||||
chosenSerializer = startProcedureChangedEventSerializer;
|
||||
}
|
||||
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package com.sap.sailing.server.gateway.serialization.racelog.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.racelog.RaceLogEvent;
|
||||
import com.sap.sailing.domain.racelog.RaceLogProtestStartTimeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceLogProtestStartTimeEventSerializer extends BaseRaceLogEventSerializer {
|
||||
|
||||
public static final String VALUE_CLASS = RaceLogProtestStartTimeEvent.class.getSimpleName();
|
||||
public static final String FIELD_PROTEST_START_TIME = "protestStartTime";
|
||||
|
||||
public RaceLogProtestStartTimeEventSerializer(JsonSerializer<Competitor> competitorSerializer) {
|
||||
super(competitorSerializer);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceLogEvent object) {
|
||||
RaceLogProtestStartTimeEvent event = (RaceLogProtestStartTimeEvent) object;
|
||||
JSONObject result = super.serialize(event);
|
||||
result.put(FIELD_PROTEST_START_TIME, event.getProtestStartTime().asMillis());
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user