mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 06:10:56 +00:00
introduced the deserialization of competitors as part of race log events
This commit is contained in:
1 parent
b120933bee
commit
ea881bf348
9 files changed
+110
-67
No files matched your search
+2
-1
@@ -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),
|
||||
|
||||
+55
-41
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+8
-3
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
+6
-4
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+8
-5
@@ -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(
|
||||
|
||||
+6
-4
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+8
-4
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+8
-3
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+9
-2
@@ -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));
|
||||
|
||||
Reference in new issue
Block a user