Add DependentStartTimeEvent and replication + de/serialization

This commit is contained in:
Jan Broß committed 2015-05-18 20:55:16 +02:00
1 parent bd0f3c468c
commit 81fa2d4fb6
20 files changed
+287 -23

No files matched your search

@@ -0,0 +1,40 @@
package com.sap.sailing.server.gateway.deserialization.racelog.impl;
import java.io.Serializable;
import java.util.List;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogRaceStatusEvent;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogDependentStartTimeEventSerializer;
import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsDurationImpl;
public class RaceLogDependentStartTimeEventDeserializer extends RaceLogRaceStatusEventDeserializer {
public RaceLogDependentStartTimeEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint createdAt, AbstractLogEventAuthor author, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
Fleet dependentOnFleet = (Fleet) object.get(RaceLogDependentStartTimeEventSerializer.FIELD_DEPDENDENT_ON_FLEET);
long startTimeDifferenceInMs = (long) object.get(RaceLogDependentStartTimeEventSerializer.FIELD_START_TIME_DIFFERENCE);
Duration startTimeDifference = new MillisecondsDurationImpl(startTimeDifferenceInMs);
RaceLogRaceStatusEvent event = (RaceLogRaceStatusEvent) super.deserialize(object, id, createdAt, author, timePoint, passId, competitors);
return factory.createDependentStartTimeEvent(event.getCreatedAt(), author, event.getLogicalTimePoint(), event.getId(), event.getInvolvedBoats(),
event.getPassId(), dependentOnFleet, startTimeDifference);
}
}
@@ -0,0 +1,36 @@
package com.sap.sailing.server.gateway.serialization.racelog.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
public class RaceLogDependentStartTimeEventSerializer extends BaseRaceLogEventSerializer implements JsonSerializer<RaceLogEvent> {
public RaceLogDependentStartTimeEventSerializer(JsonSerializer<Competitor> competitorSerializer) {
super(competitorSerializer);
}
public static final String VALUE_CLASS = RaceLogDependentStartTimeEvent.class.getSimpleName();
public static final String FIELD_DEPDENDENT_ON_FLEET = "dependentOnFleet";
public static final String FIELD_START_TIME_DIFFERENCE = "startTimeDifference";
@Override
protected String getClassFieldValue() {
return VALUE_CLASS;
}
@Override
public JSONObject serialize(RaceLogEvent object) {
RaceLogDependentStartTimeEvent event = (RaceLogDependentStartTimeEvent) object;
JSONObject result = super.serialize(event);
result.put(FIELD_DEPDENDENT_ON_FLEET, event.getDependentOnFleet());
result.put(FIELD_START_TIME_DIFFERENCE, event.getStartTimeDifference().asMillis());
return result;
}
}
@@ -5,6 +5,7 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.abstractlog.race.FixedMarkPassingEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseAreaChangedEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogCourseDesignChangedEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogDependentStartTimeEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor;
import com.sap.sailing.domain.abstractlog.race.RaceLogFinishPositioningConfirmedEvent;
@@ -81,7 +82,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
new RaceLogCloseOpenEndedDeviceMappingEventSerializer(competitorSerializer),
new RaceLogAdditionalScoringInformationSerializer(competitorSerializer),
new RaceLogFixedMarkPassingEventSerializer(competitorSerializer),
new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer));
new RaceLogSuppressedMarkPassingsEventSerializer(competitorSerializer),
new RaceLogDependentStartTimeEventSerializer(competitorSerializer));
}
private final JsonSerializer<RaceLogEvent> flagEventSerializer;
@@ -108,6 +110,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
private final JsonSerializer<RaceLogEvent> additionalScoringInformationSerializer;
private final JsonSerializer<RaceLogEvent> fixedMarkPassingEventSerializer;
private final JsonSerializer<RaceLogEvent> suppressedMarkPassingsEventSerializer;
private final JsonSerializer<RaceLogEvent> dependentStartTimeEventSerializer;
private JsonSerializer<RaceLogEvent> chosenSerializer;
@@ -135,7 +138,8 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
JsonSerializer<RaceLogEvent> closeOpenEndedDeviceMappingEventSerializer,
JsonSerializer<RaceLogEvent> additionalScoringInformationSerializer,
JsonSerializer<RaceLogEvent> fixedMarkPassingEventSerializer,
JsonSerializer<RaceLogEvent> suppressedMarkPassingsSerializer) {
JsonSerializer<RaceLogEvent> suppressedMarkPassingsSerializer,
JsonSerializer<RaceLogEvent> dependentStartTimeEventSerializer) {
this.flagEventSerializer = flagEventSerializer;
this.startTimeSerializer = startTimeSerializer;
this.raceStatusSerializer = raceStatusSerializer;
@@ -160,6 +164,7 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
this.additionalScoringInformationSerializer = additionalScoringInformationSerializer;
this.fixedMarkPassingEventSerializer = fixedMarkPassingEventSerializer;
this.suppressedMarkPassingsEventSerializer = suppressedMarkPassingsSerializer;
this.dependentStartTimeEventSerializer = dependentStartTimeEventSerializer;
this.chosenSerializer = null;
}
@@ -294,9 +299,13 @@ public class RaceLogEventSerializer implements JsonSerializer<RaceLogEvent>, Rac
}
@Override
public void visit(SuppressedMarkPassingsEvent event) {
chosenSerializer = suppressedMarkPassingsEventSerializer;
}
@Override
public void visit(RaceLogDependentStartTimeEvent event) {
chosenSerializer = dependentStartTimeEventSerializer;
}
}