mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
# moved de/serializer to impl package
# easier de/serialization of rcevents
This commit is contained in:
1 parent
e0ac319d4d
commit
ad9568b0d5
34 files changed
+150
-124
No files matched your search
@@ -8,4 +8,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||
Import-Package: org.json.simple
|
||||
Require-Bundle: com.sap.sailing.domain;bundle-version="1.0.0",
|
||||
com.sap.sailing.domain.common;bundle-version="1.0.0"
|
||||
Export-Package: com.sap.sailing.server.gateway.serialization
|
||||
Export-Package: com.sap.sailing.server.gateway.deserialization,
|
||||
com.sap.sailing.server.gateway.deserialization.impl,
|
||||
com.sap.sailing.server.gateway.serialization,
|
||||
com.sap.sailing.server.gateway.serialization.impl
|
||||
+1
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.deserialization;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
|
||||
public interface JsonDeserializer<T> {
|
||||
|
||||
T deserialize(JSONObject object) throws JsonDeserializationException;
|
||||
|
||||
-33
@@ -1,33 +0,0 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
+9
-7
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -7,11 +7,13 @@ 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;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BaseRaceCommitteeEventSerializer;
|
||||
|
||||
/// TODO deserialize involved boats
|
||||
public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
|
||||
public abstract class BaseRaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
|
||||
|
||||
protected abstract RaceCommitteeEvent deserialize(JSONObject object, UUID id, TimePoint timePoint, int passId)
|
||||
throws JsonDeserializationException;
|
||||
@@ -20,9 +22,9 @@ public abstract class RaceCommitteeEventDeserializer implements JsonDeserializer
|
||||
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);
|
||||
String id = object.get(BaseRaceCommitteeEventSerializer.FIELD_ID).toString();
|
||||
long timeStamp = (Long) object.get(BaseRaceCommitteeEventSerializer.FIELD_TIMESTAMP);
|
||||
int passId = (Integer) object.get(BaseRaceCommitteeEventSerializer.FIELD_PASS_ID);
|
||||
|
||||
UUID uuid = null;
|
||||
try {
|
||||
+4
-2
@@ -1,10 +1,12 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.CourseAreaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
|
||||
|
||||
public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea> {
|
||||
|
||||
+4
-2
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@@ -7,7 +7,9 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.impl.EventImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
|
||||
|
||||
public class EventJsonDeserializer implements JsonDeserializer<Event> {
|
||||
private JsonDeserializer<Venue> venueDeserializer;
|
||||
+3
-1
@@ -1,8 +1,10 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
|
||||
public class Helpers {
|
||||
|
||||
public static JSONObject toJSONObjectSafe(Object object)
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BaseRaceCommitteeEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
|
||||
|
||||
protected JsonDeserializer<RaceCommitteeEvent> flagEventDeserializer;
|
||||
protected JsonDeserializer<RaceCommitteeEvent> startTimeEventDeserializer;
|
||||
|
||||
public RaceCommitteeEventDeserializer() {
|
||||
flagEventDeserializer = new RaceCommitteeFlagEventDeserializer();
|
||||
startTimeEventDeserializer = new RaceCommitteeStartTimeEventDeserializer();
|
||||
}
|
||||
|
||||
protected JsonDeserializer<RaceCommitteeEvent> getDeserializer(
|
||||
JSONObject object) throws JsonDeserializationException {
|
||||
Object type = object.get(BaseRaceCommitteeEventSerializer.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));
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceCommitteeEvent deserialize(JSONObject object)
|
||||
throws JsonDeserializationException {
|
||||
return getDeserializer(object).deserialize(object);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
@@ -10,10 +10,10 @@ 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;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeFlagEventSerializer;
|
||||
|
||||
public class RaceCommitteeFlagEventDeserializer extends
|
||||
RaceCommitteeEventDeserializer {
|
||||
BaseRaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
+3
-3
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
@@ -10,9 +10,9 @@ 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;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeEventSerializer;
|
||||
|
||||
public class RaceCommitteeStartTimeEventDeserializer extends RaceCommitteeEventDeserializer {
|
||||
public class RaceCommitteeStartTimeEventDeserializer extends BaseRaceCommitteeEventDeserializer {
|
||||
|
||||
@Override
|
||||
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
|
||||
+4
-2
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.deserialization;
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -6,7 +6,9 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.impl.VenueImpl;
|
||||
import com.sap.sailing.server.gateway.serialization.VenueJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
|
||||
|
||||
public class VenueJsonDeserializer implements JsonDeserializer<Venue> {
|
||||
private JsonDeserializer<CourseArea> courseAreaDeserializer;
|
||||
+3
-2
@@ -1,11 +1,12 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
/// TODO serialize involved boats
|
||||
public abstract class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public abstract class BaseRaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
public static final String FIELD_CLASS = "@class";
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_TIMESTAMP = "timestamp";
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class BoatClassJsonSerializer implements JsonSerializer<BoatClass> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
+2
-1
@@ -1,8 +1,9 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class CourseAreaJsonSerializer implements JsonSerializer<CourseArea> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class EventJsonSerializer implements JsonSerializer<Event> {
|
||||
public static final String FIELD_ID = "id";
|
||||
+16
-6
@@ -1,20 +1,25 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceCommitteeEventSerializerFactory {
|
||||
public class RaceCommitteeEventSerializer implements JsonSerializer<RaceCommitteeEvent> {
|
||||
|
||||
private JsonSerializer<RaceCommitteeEvent> flagEventSerializer;
|
||||
private JsonSerializer<RaceCommitteeEvent> startTimeSerializer;
|
||||
|
||||
public RaceCommitteeEventSerializerFactory() {
|
||||
flagEventSerializer = new RaceCommitteeFlagEventSerializer();
|
||||
startTimeSerializer = new RaceCommitteeStartTimeEventSerializer();
|
||||
public RaceCommitteeEventSerializer(
|
||||
JsonSerializer<RaceCommitteeEvent> flagEventSerializer,
|
||||
JsonSerializer<RaceCommitteeEvent> startTimeSerializer) {
|
||||
this.flagEventSerializer = flagEventSerializer;
|
||||
this.startTimeSerializer = startTimeSerializer;
|
||||
}
|
||||
|
||||
public JsonSerializer<RaceCommitteeEvent> getSerializer(
|
||||
protected JsonSerializer<RaceCommitteeEvent> getSerializer(
|
||||
RaceCommitteeEvent event) {
|
||||
if (event instanceof RaceCommitteeFlagEvent) {
|
||||
return flagEventSerializer;
|
||||
@@ -27,4 +32,9 @@ public class RaceCommitteeEventSerializerFactory {
|
||||
.getClass().getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceCommitteeEvent object) {
|
||||
return getSerializer(object).serialize(object);
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeFlagEvent;
|
||||
|
||||
public class RaceCommitteeFlagEventSerializer extends RaceCommitteeEventSerializer {
|
||||
public class RaceCommitteeFlagEventSerializer extends BaseRaceCommitteeEventSerializer {
|
||||
public static final String VALUE_CLASS = RaceCommitteeFlagEvent.class.getSimpleName();
|
||||
public static final String FIELD_UPPER_FLAG = "upperFlag";
|
||||
public static final String FIELD_LOWER_FLAG = "lowerFlag";
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeEvent;
|
||||
import com.sap.sailing.domain.racecommittee.RaceCommitteeStartTimeEvent;
|
||||
|
||||
public class RaceCommitteeStartTimeEventSerializer extends RaceCommitteeEventSerializer {
|
||||
public class RaceCommitteeStartTimeEventSerializer extends BaseRaceCommitteeEventSerializer {
|
||||
public static final String VALUE_CLASS = RaceCommitteeStartTimeEvent.class.getSimpleName();
|
||||
public static final String FIELD_START_TIME = "startTime";
|
||||
|
||||
+10
-2
@@ -1,21 +1,29 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceDefinitionJsonSerializer implements JsonSerializer<RaceDefinition> {
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_COURSE = "course";
|
||||
|
||||
private JsonSerializer<Course> courseSerializer;
|
||||
|
||||
public RaceDefinitionJsonSerializer(JsonSerializer<Course> courseSerializer) {
|
||||
this.courseSerializer = courseSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(RaceDefinition object) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_ID, object.getId().toString());
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
result.put(FIELD_COURSE, "tbd");
|
||||
result.put(FIELD_COURSE, courseSerializer.serialize(object.getCourse()));
|
||||
|
||||
return result;
|
||||
}
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -6,6 +6,7 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RegattaJsonSerializer implements JsonSerializer<Regatta> {
|
||||
public static final String FIELD_ID = "id";
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
package com.sap.sailing.server.gateway.serialization;
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
|
||||
public class VenueJsonSerializer implements JsonSerializer<Venue> {
|
||||
Reference in new issue
Block a user