# deserialization of events (missing involved boats)

This commit is contained in:
Lukas Niemeier committed 2013-01-22 02:56:02 +01:00
1 parent 41eca38813
commit 549a5bce97
8 files changed
+172 -22

No files matched your search

@@ -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());
}*/
@@ -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);
}
}
@@ -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));
}
}
@@ -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);
}
}
@@ -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));
}
}
@@ -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";
@@ -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()));
}
}