# serialization of course and all of its data

This commit is contained in:
Lukas Niemeier committed 2013-01-29 04:09:25 +01:00
1 parent ad9568b0d5
commit 125316deed
7 files changed
+285

No files matched your search

@@ -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;
}
}
@@ -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);
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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;
}
}
@@ -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;
}
}