mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
# deserialization of events (missing involved boats)
This commit is contained in:
1 parent
41eca38813
commit
549a5bce97
8 files changed
+172
-22
No files matched your search
+1
-1
@@ -15,9 +15,9 @@ public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea>
|
||||
|
||||
CourseArea courseArea = new CourseAreaImpl(name);
|
||||
|
||||
/// TODO: link races to courseArea...
|
||||
/*JSONArray racesArray = Helpers.getNestedArraySafe(object, CourseAreaJsonSerializer.FIELD_RACES);
|
||||
for (Object element : racesArray) {
|
||||
/// TODO: add races to courseArea...
|
||||
System.out.println(element.toString());
|
||||
}*/
|
||||
|
||||
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
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.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
|
||||
/// TODO deserialize involved boats
|
||||
public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
|
||||
|
||||
protected abstract RaceCommitteeEvent deserialize(JSONObject object, UUID id, TimePoint timePoint, int passId)
|
||||
throws JsonDeserializationException;
|
||||
|
||||
@Override
|
||||
public RaceCommitteeEvent deserialize(JSONObject object)
|
||||
throws JsonDeserializationException {
|
||||
// Factory handles class field and subclassing...
|
||||
String id = object.get(RaceCommitteeEventSerializer.FIELD_ID).toString();
|
||||
long timeStamp = (Long) object.get(RaceCommitteeEventSerializer.FIELD_TIMESTAMP);
|
||||
int passId = (Integer) object.get(RaceCommitteeEventSerializer.FIELD_PASS_ID);
|
||||
|
||||
UUID uuid = null;
|
||||
try {
|
||||
uuid = UUID.fromString(id);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
throw new JsonDeserializationException(
|
||||
String.format("Field %s with %s couldn't be parsed as UUID.", EventJsonSerializer.FIELD_ID, id),
|
||||
iae);
|
||||
}
|
||||
|
||||
return deserialize(object, uuid, new MillisecondsTimePoint(timeStamp), passId);
|
||||
}
|
||||
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeEventDeserializerFactory {
|
||||
|
||||
protected JsonDeserializer<RaceCommitteeEvent> flagEventDeserializer;
|
||||
protected JsonDeserializer<RaceCommitteeEvent> startTimeEventDeserializer;
|
||||
|
||||
public RaceCommitteeEventDeserializerFactory() {
|
||||
flagEventDeserializer = new RaceCommitteeFlagEventDeserializer();
|
||||
startTimeEventDeserializer = new RaceCommitteeStartTimeEventDeserializer();
|
||||
}
|
||||
|
||||
public JsonDeserializer<RaceCommitteeEvent> getDeserializer(
|
||||
JSONObject object) throws JsonDeserializationException {
|
||||
Object type = object.get(RaceCommitteeEventSerializer.FIELD_CLASS);
|
||||
|
||||
if (type.equals(RaceCommitteeFlagEventSerializer.VALUE_CLASS)) {
|
||||
return flagEventDeserializer;
|
||||
} else if (type.equals(RaceCommitteeStartTimeEventSerializer.VALUE_CLASS)) {
|
||||
return startTimeEventDeserializer;
|
||||
}
|
||||
|
||||
throw new JsonDeserializationException(String.format(
|
||||
"There is no deserializer defined for event type %s.", type));
|
||||
}
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.racecommittee.Flags;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeFlagEventImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeFlagEventSerializer;
|
||||
|
||||
public class RaceCommitteeFlagEventDeserializer extends
|
||||
RaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
TimePoint timePoint, int passId) {
|
||||
|
||||
Flags upperFlag = Flags.valueOf(object.get(
|
||||
RaceCommitteeFlagEventSerializer.FIELD_UPPER_FLAG).toString());
|
||||
Flags lowerFlag = Flags.valueOf(object.get(
|
||||
RaceCommitteeFlagEventSerializer.FIELD_LOWER_FLAG).toString());
|
||||
boolean isDisplayed = (Boolean) object
|
||||
.get(RaceCommitteeFlagEventSerializer.FIELD_DISPLAYED);
|
||||
|
||||
return new RaceCommitteeFlagEventImpl(timePoint, id,
|
||||
Collections.<Competitor>emptyList(), passId, upperFlag,
|
||||
lowerFlag, isDisplayed);
|
||||
}
|
||||
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
|
||||
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.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.impl.RaceCommitteeStartTimeEventImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeStartTimeEventDeserializer extends RaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
TimePoint timePoint, int passId) {
|
||||
|
||||
long startTime = (Long) object.get(RaceCommitteeStartTimeEventSerializer.FIELD_START_TIME);
|
||||
|
||||
return new RaceCommitteeStartTimeEventImpl(
|
||||
timePoint,
|
||||
id,
|
||||
Collections.<Competitor>emptyList(),
|
||||
passId,
|
||||
new MillisecondsTimePoint(startTime));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+1
@@ -4,6 +4,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
|
||||
/// TODO serialize involved boats
|
||||
public abstract class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public static final String FIELD_CLASS = "@class";
|
||||
public static final String FIELD_ID = "id";
|
||||
|
||||
+21
-13
@@ -5,18 +5,26 @@ import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
public class RaceCommitteeEventSerializerFactory {
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(RaceCommitteeEvent event) {
|
||||
if (event instanceof RaceCommitteeFlagEvent) {
|
||||
return new RaceCommitteeFlagEventSerializer();
|
||||
}
|
||||
if (event instanceof RaceCommitteeStartTimeEvent) {
|
||||
return new RaceCommitteeStartTimeEventSerializer();
|
||||
}
|
||||
throw new UnsupportedOperationException(
|
||||
String.format(
|
||||
"There is no serializer defined for event type %s",
|
||||
event.getClass().getName()));
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> flagEventSerializer;
|
||||
private JsonSerializer<RaceCommitteeEvent> startTimeSerializer;
|
||||
|
||||
public RaceCommitteeEventSerializerFactory() {
|
||||
flagEventSerializer = new RaceCommitteeFlagEventSerializer();
|
||||
startTimeSerializer = new RaceCommitteeStartTimeEventSerializer();
|
||||
}
|
||||
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(
|
||||
RaceCommitteeEvent event) {
|
||||
if (event instanceof RaceCommitteeFlagEvent) {
|
||||
return flagEventSerializer;
|
||||
} else if (event instanceof RaceCommitteeStartTimeEvent) {
|
||||
return startTimeSerializer;
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException(String.format(
|
||||
"There is no serializer defined for event type %s", event
|
||||
.getClass().getName()));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user