introduced the deserialization of competitors as part of race log events

This commit is contained in:
Armin Zamani committed 2013-04-05 22:37:31 +02:00
1 parent b120933bee
commit ea881bf348
9 files changed
+110 -67

No files matched your search

@@ -32,6 +32,7 @@ import com.sap.sailing.server.gateway.deserialization.coursedata.impl.CourseData
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.GateDeserializer;
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.MarkDeserializer;
import com.sap.sailing.server.gateway.deserialization.coursedata.impl.WaypointDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.CompetitorDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.RaceLogCourseDesignChangedEventDeserializer;
import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer;
import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer;
@@ -57,7 +58,7 @@ public class RaceLogCourseDesignChangedEventSerializerTest {
new MarkJsonSerializer(),
new GateJsonSerializer(
new MarkJsonSerializer())))));
deserializer = new RaceLogCourseDesignChangedEventDeserializer(new CourseDataDeserializer(
deserializer = new RaceLogCourseDesignChangedEventDeserializer(new CompetitorDeserializer(factory), new CourseDataDeserializer(
new WaypointDeserializer(
new ControlPointDeserializer(
new MarkDeserializer(factory),
@@ -1,41 +1,55 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import org.json.simple.JSONObject;
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.domain.racelog.RaceLogEventFactory;
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.BaseRaceLogEventSerializer;
/// TODO deserialize involved boats
public abstract class BaseRaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent> {
protected RaceLogEventFactory factory;
public BaseRaceLogEventDeserializer() {
this.factory = RaceLogEventFactory.INSTANCE;
}
protected abstract RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
throws JsonDeserializationException;
@Override
public RaceLogEvent deserialize(JSONObject object) throws JsonDeserializationException {
// Factory handles class field and subclassing...
String id = object.get(BaseRaceLogEventSerializer.FIELD_ID).toString();
Number timeStamp = (Number) object.get(BaseRaceLogEventSerializer.FIELD_TIMESTAMP);
Number passId = (Number) object.get(BaseRaceLogEventSerializer.FIELD_PASS_ID);
return deserialize(
object,
Helpers.tryUuidConversion(id),
new MillisecondsTimePoint(timeStamp.longValue()),
passId.intValue());
}
}
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
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.domain.racelog.RaceLogEventFactory;
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.BaseRaceLogEventSerializer;
public abstract class BaseRaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent> {
protected RaceLogEventFactory factory;
protected JsonDeserializer<Competitor> competitorDeserializer;
public BaseRaceLogEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
this.factory = RaceLogEventFactory.INSTANCE;
this.competitorDeserializer = competitorDeserializer;
}
protected abstract RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException;
@Override
public RaceLogEvent deserialize(JSONObject object) throws JsonDeserializationException {
// Factory handles class field and subclassing...
String id = object.get(BaseRaceLogEventSerializer.FIELD_ID).toString();
Number timeStamp = (Number) object.get(BaseRaceLogEventSerializer.FIELD_TIMESTAMP);
Number passId = (Number) object.get(BaseRaceLogEventSerializer.FIELD_PASS_ID);
JSONArray jsonCompetitors = Helpers.getNestedArraySafe(object, BaseRaceLogEventSerializer.FIELD_COMPETITORS);
List<Competitor> competitors = new ArrayList<Competitor>();
for (Object competitorObject : jsonCompetitors) {
JSONObject jsonCompetitor = (JSONObject) competitorObject;
Competitor competitor = competitorDeserializer.deserialize(jsonCompetitor);
competitors.add(competitor);
}
return deserialize(
object,
Helpers.tryUuidConversion(id),
new MillisecondsTimePoint(timeStamp.longValue()),
passId.intValue(),
competitors);
}
}
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.json.simple.JSONObject;
@@ -9,17 +9,22 @@ 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.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseAreaChangedEventSerializer;
public class RaceLogCourseAreaChangedEventDeserializer extends BaseRaceLogEventDeserializer {
public RaceLogCourseAreaChangedEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
String courseAreaId = object.get(RaceLogCourseAreaChangedEventSerializer.FIELD_COURSE_AREA_ID).toString();
return factory.createCourseAreaChangedEvent(timePoint, id, Collections.<Competitor> emptyList(), passId,
return factory.createCourseAreaChangedEvent(timePoint, id, competitors, passId,
Helpers.tryUuidConversion(courseAreaId));
}
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.json.simple.JSONObject;
@@ -10,6 +10,7 @@ import com.sap.sailing.domain.base.CourseBase;
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.deserialization.coursedata.impl.CourseDataDeserializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogCourseDesignChangedEventSerializer;
@@ -17,18 +18,19 @@ public class RaceLogCourseDesignChangedEventDeserializer extends BaseRaceLogEven
private final CourseDataDeserializer courseDataDeserializer;
public RaceLogCourseDesignChangedEventDeserializer(CourseDataDeserializer courseDataDeserializer) {
public RaceLogCourseDesignChangedEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer, CourseDataDeserializer courseDataDeserializer) {
super(competitorDeserializer);
this.courseDataDeserializer = courseDataDeserializer;
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
JSONObject jsonCourseDesign = (JSONObject) object.get(RaceLogCourseDesignChangedEventSerializer.FIELD_COURSE_DESIGN);
CourseBase courseData = courseDataDeserializer.deserialize(jsonCourseDesign);
return factory.createCourseDesignChangedEvent(timePoint, id, Collections.<Competitor> emptyList(), passId, courseData);
return factory.createCourseDesignChangedEvent(timePoint, id, competitors, passId, courseData);
}
}
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.SharedDomainFactory;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
@@ -21,12 +22,14 @@ import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogStartTim
public class RaceLogEventDeserializer implements JsonDeserializer<RaceLogEvent> {
public static RaceLogEventDeserializer create(SharedDomainFactory domainFactory) {
JsonDeserializer<Competitor> competitorDeserializer = new CompetitorDeserializer(domainFactory);
return new RaceLogEventDeserializer(
new RaceLogFlagEventDeserializer(),
new RaceLogStartTimeEventDeserializer(),
new RaceLogRaceStatusEventDeserializer(),
new RaceLogCourseAreaChangedEventDeserializer(),
new RaceLogCourseDesignChangedEventDeserializer(
new RaceLogFlagEventDeserializer(competitorDeserializer),
new RaceLogStartTimeEventDeserializer(competitorDeserializer),
new RaceLogRaceStatusEventDeserializer(competitorDeserializer),
new RaceLogCourseAreaChangedEventDeserializer(competitorDeserializer),
new RaceLogCourseDesignChangedEventDeserializer(competitorDeserializer,
new CourseDataDeserializer(
new WaypointDeserializer(
new ControlPointDeserializer(
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.json.simple.JSONObject;
@@ -9,17 +9,19 @@ 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.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
public class RaceLogFinishPositioningListChangedEventDeserializer extends BaseRaceLogEventDeserializer {
public RaceLogFinishPositioningListChangedEventDeserializer() {
public RaceLogFinishPositioningListChangedEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
return factory.createFinishPositioningListChangedEvent(timePoint, id, Collections.<Competitor> emptyList(), passId);
return factory.createFinishPositioningListChangedEvent(timePoint, id, competitors, passId);
}
}
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.json.simple.JSONObject;
@@ -9,19 +9,23 @@ import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.racelog.Flags;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.racelog.impl.RaceLogFlagEventSerializer;
public class RaceLogFlagEventDeserializer extends BaseRaceLogEventDeserializer {
public RaceLogFlagEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId) {
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors) {
Flags upperFlag = Flags.valueOf(object.get(RaceLogFlagEventSerializer.FIELD_UPPER_FLAG).toString());
Flags lowerFlag = Flags.valueOf(object.get(RaceLogFlagEventSerializer.FIELD_LOWER_FLAG).toString());
boolean isDisplayed = (Boolean) object.get(RaceLogFlagEventSerializer.FIELD_DISPLAYED);
return factory.createFlagEvent(timePoint, id, Collections.<Competitor> emptyList(), passId, upperFlag,
lowerFlag, isDisplayed);
return factory.createFlagEvent(timePoint, id, competitors, passId, upperFlag, lowerFlag, isDisplayed);
}
}
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import org.json.simple.JSONObject;
@@ -10,18 +10,23 @@ import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
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.RaceLogRaceStatusEventSerializer;
public class RaceLogRaceStatusEventDeserializer extends BaseRaceLogEventDeserializer {
public RaceLogRaceStatusEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
String statusValue = object.get(RaceLogRaceStatusEventSerializer.FIELD_NEXT_STATUS).toString();
RaceLogRaceStatus nextStatus = RaceLogRaceStatus.valueOf(statusValue);
return factory.createRaceStatusEvent(timePoint, id, Collections.<Competitor> emptyList(), passId, nextStatus);
return factory.createRaceStatusEvent(timePoint, id, competitors, passId, nextStatus);
}
}
@@ -1,25 +1,32 @@
package com.sap.sailing.server.gateway.deserialization.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.domain.racelog.RaceLogRaceStatusEvent;
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.RaceLogStartTimeEventSerializer;
public class RaceLogStartTimeEventDeserializer extends RaceLogRaceStatusEventDeserializer {
public RaceLogStartTimeEventDeserializer(JsonDeserializer<Competitor> competitorDeserializer) {
super(competitorDeserializer);
}
@Override
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
protected RaceLogEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId, List<Competitor> competitors)
throws JsonDeserializationException {
long startTime = (Long) object.get(RaceLogStartTimeEventSerializer.FIELD_START_TIME);
RaceLogRaceStatusEvent event = (RaceLogRaceStatusEvent) super.deserialize(object, id, timePoint, passId);
RaceLogRaceStatusEvent event = (RaceLogRaceStatusEvent) super.deserialize(object, id, timePoint, passId, competitors);
return factory.createStartTimeEvent(event.getTimePoint(), event.getId(), event.getInvolvedBoats(), event.getPassId(),
new MillisecondsTimePoint(startTime));