mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
# serialization of course and all of its data
This commit is contained in:
1 parent
ad9568b0d5
commit
125316deed
7 files changed
+285
No files matched your search
+24
@@ -0,0 +1,24 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public abstract class BaseControlPointJsonSerializer implements JsonSerializer<ControlPoint> {
|
||||
public static final String FIELD_CLASS = "@class";
|
||||
public static final String FIELD_NAME = "name";
|
||||
|
||||
protected abstract String getClassFieldValue();
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(ControlPoint object) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_CLASS, getClassFieldValue());
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Gate;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class ControlPointJsonSerializer implements JsonSerializer<ControlPoint> {
|
||||
|
||||
private JsonSerializer<ControlPoint> markSerializer;
|
||||
private JsonSerializer<ControlPoint> gateSerializer;
|
||||
|
||||
public ControlPointJsonSerializer(
|
||||
JsonSerializer<ControlPoint> markSerializer,
|
||||
JsonSerializer<ControlPoint> gateSerializer) {
|
||||
this.markSerializer = markSerializer;
|
||||
this.gateSerializer = gateSerializer;
|
||||
}
|
||||
|
||||
protected JsonSerializer<ControlPoint> getSerializer(
|
||||
ControlPoint controlPoint) {
|
||||
if (controlPoint instanceof Mark) {
|
||||
return markSerializer;
|
||||
} else if (controlPoint instanceof Gate) {
|
||||
return gateSerializer;
|
||||
}
|
||||
|
||||
throw new UnsupportedOperationException(String.format(
|
||||
"There is no serializer defined for control point type %s", controlPoint
|
||||
.getClass().getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(ControlPoint object) {
|
||||
return getSerializer(object).serialize(object);
|
||||
}
|
||||
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class CourseJsonSerializer implements JsonSerializer<Course> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_WAYPOINTS = "waypoints";
|
||||
|
||||
private JsonSerializer<Waypoint> waypointSerializer;
|
||||
|
||||
public CourseJsonSerializer(JsonSerializer<Waypoint> waypointSerializer) {
|
||||
this.waypointSerializer = waypointSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(Course object) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
|
||||
JSONArray waypoints = new JSONArray();
|
||||
for (Waypoint waypoint : object.getWaypoints()) {
|
||||
waypoints.add(waypointSerializer.serialize(waypoint));
|
||||
}
|
||||
result.put(FIELD_WAYPOINTS, waypoints);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Gate;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class GateJsonSerializer extends BaseControlPointJsonSerializer implements JsonSerializer<ControlPoint> {
|
||||
public static final String VALUE_CLASS = Gate.class.getSimpleName();
|
||||
|
||||
public static final String FIELD_LEFT = "left";
|
||||
public static final String FIELD_RIGHT = "right";
|
||||
|
||||
private JsonSerializer<ControlPoint> markSerializer;
|
||||
|
||||
public GateJsonSerializer(JsonSerializer<ControlPoint> markSerializer) {
|
||||
this.markSerializer = markSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(ControlPoint object) {
|
||||
Gate gate = (Gate) object;
|
||||
JSONObject result = super.serialize(gate);
|
||||
|
||||
result.put(FIELD_LEFT, markSerializer.serialize(gate.getLeft()));
|
||||
result.put(FIELD_RIGHT, markSerializer.serialize(gate.getRight()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class MarkJsonSerializer extends BaseControlPointJsonSerializer implements JsonSerializer<ControlPoint> {
|
||||
public static final String VALUE_CLASS = Mark.class.getSimpleName();
|
||||
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_COLOR = "color";
|
||||
public static final String FIELD_PATTERN = "pattern";
|
||||
public static final String FIELD_SHAPE = "shape";
|
||||
public static final String FIELD_TYPE = "type";
|
||||
|
||||
@Override
|
||||
protected String getClassFieldValue() {
|
||||
return VALUE_CLASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(ControlPoint object) {
|
||||
Mark mark = (Mark) object;
|
||||
JSONObject result = super.serialize(mark);
|
||||
|
||||
result.put(FIELD_ID, mark.getId().toString());
|
||||
result.put(FIELD_COLOR, mark.getColor());
|
||||
result.put(FIELD_PATTERN, mark.getPattern());
|
||||
result.put(FIELD_SHAPE, mark.getShape());
|
||||
result.put(FIELD_TYPE, mark.getType().toString());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class WaypointJsonSerializer implements JsonSerializer<Waypoint> {
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_PASSING_SIDE = "passingSide";
|
||||
public static final String FIELD_CONTROL_POINT = "controlPoint";
|
||||
|
||||
private JsonSerializer<ControlPoint> controlPointSerializer;
|
||||
|
||||
public WaypointJsonSerializer(JsonSerializer<ControlPoint> controlPointSerializer) {
|
||||
this.controlPointSerializer = controlPointSerializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(Waypoint object) {
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
result.put(FIELD_ID, object.getId().toString());
|
||||
result.put(FIELD_NAME, object.getName());
|
||||
result.put(FIELD_PASSING_SIDE, object.getPassingSide().toString());
|
||||
result.put(FIELD_CONTROL_POINT,
|
||||
controlPointSerializer.serialize(object.getControlPoint()));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user