# Prepared: RegattaRaces API filters by course area

# More app code migrated from old version into new code base
This commit is contained in:
Lukas Niemeier committed 2013-02-02 23:48:46 +01:00
1 parent 0d32aff524
commit c5241f3468
49 files changed
+1856 -199

No files matched your search

@@ -1,6 +1,6 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.UUID;
import java.io.Serializable;
import org.json.simple.JSONObject;
@@ -9,13 +9,12 @@ import com.sap.sailing.domain.common.TimePoint;
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.EventJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.BaseRaceCommitteeEventSerializer;
/// TODO deserialize involved boats
public abstract class BaseRaceCommitteeEventDeserializer implements JsonDeserializer<RaceCommitteeEvent> {
protected abstract RaceCommitteeEvent deserialize(JSONObject object, UUID id, TimePoint timePoint, int passId)
protected abstract RaceCommitteeEvent deserialize(JSONObject object, Serializable id, TimePoint timePoint, int passId)
throws JsonDeserializationException;
@Override
@@ -26,16 +25,7 @@ public abstract class BaseRaceCommitteeEventDeserializer implements JsonDeserial
long timeStamp = (Long) object.get(BaseRaceCommitteeEventSerializer.FIELD_TIMESTAMP);
int passId = (Integer) object.get(BaseRaceCommitteeEventSerializer.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);
return deserialize(object, Helpers.tryUuidConversion(id), new MillisecondsTimePoint(timeStamp), passId);
}
}
@@ -0,0 +1,20 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.impl.BoatClassImpl;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer;
public class BoatClassJsonDeserializer implements JsonDeserializer<BoatClass> {
@Override
public BoatClass deserialize(JSONObject object)
throws JsonDeserializationException {
String name = object.get(BoatClassJsonSerializer.FIELD_NAME).toString();
return new BoatClassImpl(name, false);
}
}
@@ -1,7 +1,5 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.UUID;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.CourseArea;
@@ -9,7 +7,6 @@ import com.sap.sailing.domain.base.impl.CourseAreaImpl;
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;
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea> {
@@ -19,24 +16,7 @@ public class CourseAreaJsonDeserializer implements JsonDeserializer<CourseArea>
String name = object.get(CourseAreaJsonSerializer.FIELD_NAME).toString();
String id = object.get(CourseAreaJsonSerializer.FIELD_ID).toString();
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);
}
CourseArea courseArea = new CourseAreaImpl(name, uuid);
/// TODO: link races to courseArea...
/*JSONArray racesArray = Helpers.getNestedArraySafe(object, CourseAreaJsonSerializer.FIELD_RACES);
for (Object element : racesArray) {
System.out.println(element.toString());
}*/
return courseArea;
return new CourseAreaImpl(name, Helpers.tryUuidConversion(id));
}
}
@@ -1,7 +1,5 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.util.UUID;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.Event;
@@ -23,15 +21,6 @@ public class EventJsonDeserializer implements JsonDeserializer<Event> {
String name = object.get(EventJsonSerializer.FIELD_NAME).toString();
String publicationUrl = object.get(EventJsonSerializer.FIELD_PUBLICATION_URL).toString();
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);
}
JSONObject venueObject = Helpers.getNestedObjectSafe(
object,
EventJsonSerializer.FIELD_VENUE);
@@ -42,7 +31,7 @@ public class EventJsonDeserializer implements JsonDeserializer<Event> {
venue,
publicationUrl,
true,
uuid);
Helpers.tryUuidConversion(id));
}
}
@@ -1,5 +1,8 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.UUID;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
@@ -46,5 +49,14 @@ public class Helpers {
}
return (JSONArray) childObject;
}
public static Serializable tryUuidConversion(String id) {
try {
return UUID.fromString(id);
} catch (IllegalArgumentException iae) {
/// TODO: insert warning of non-uuid id.
}
return id;
}
}
@@ -1,5 +1,6 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.UUID;
@@ -16,7 +17,7 @@ public class RaceCommitteeCourseAreaChangedEventDeserializer extends
BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
protected RaceCommitteeEvent deserialize(JSONObject object, Serializable id,
TimePoint timePoint, int passId) throws JsonDeserializationException {
String courseAreaId = object.get(RaceCommitteeCourseAreaChangedEventSerializer.FIELD_COURSE_AREA_ID).toString();
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.UUID;
import org.json.simple.JSONObject;
@@ -16,7 +16,7 @@ public class RaceCommitteeFlagEventDeserializer extends
BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
protected RaceCommitteeEvent deserialize(JSONObject object, Serializable id,
TimePoint timePoint, int passId) {
Flags upperFlag = Flags.valueOf(object.get(
@@ -1,7 +1,7 @@
package com.sap.sailing.server.gateway.deserialization.impl;
import java.io.Serializable;
import java.util.Collections;
import java.util.UUID;
import org.json.simple.JSONObject;
@@ -15,7 +15,7 @@ import com.sap.sailing.server.gateway.serialization.impl.RaceCommitteeStartTimeE
public class RaceCommitteeStartTimeEventDeserializer extends BaseRaceCommitteeEventDeserializer {
@Override
protected RaceCommitteeEvent deserialize(JSONObject object, UUID id,
protected RaceCommitteeEvent deserialize(JSONObject object, Serializable id,
TimePoint timePoint, int passId) {
long startTime = (Long) object.get(RaceCommitteeStartTimeEventSerializer.FIELD_START_TIME);
@@ -0,0 +1,14 @@
package com.sap.sailing.server.gateway.serialization;
public interface SerializationFilter<T> {
public class NoFilter<T> implements SerializationFilter<T> {
@Override
public boolean isFiltered(T object) {
return false;
}
}
public boolean isFiltered(T object);
}
@@ -2,6 +2,7 @@ package com.sap.sailing.server.gateway.serialization.impl;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Course;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
@@ -10,10 +11,15 @@ public class RaceDefinitionJsonSerializer implements JsonSerializer<RaceDefiniti
public static final String FIELD_ID = "id";
public static final String FIELD_NAME = "name";
public static final String FIELD_COURSE = "course";
public static final String FIELD_BOAT_CLASS = "boatClass";
private final JsonSerializer<BoatClass> boatClassSerializer;
private final JsonSerializer<Course> courseSerializer;
public RaceDefinitionJsonSerializer(JsonSerializer<Course> courseSerializer) {
public RaceDefinitionJsonSerializer(
JsonSerializer<BoatClass> boatClassSerializer,
JsonSerializer<Course> courseSerializer) {
this.boatClassSerializer = boatClassSerializer;
this.courseSerializer = courseSerializer;
}
@@ -23,6 +29,7 @@ public class RaceDefinitionJsonSerializer implements JsonSerializer<RaceDefiniti
result.put(FIELD_ID, object.getId().toString());
result.put(FIELD_NAME, object.getName());
result.put(FIELD_BOAT_CLASS, boatClassSerializer.serialize(object.getBoatClass()));
result.put(FIELD_COURSE, courseSerializer.serialize(object.getCourse()));
return result;
@@ -7,6 +7,7 @@ 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;
import com.sap.sailing.server.gateway.serialization.SerializationFilter;
public class RegattaJsonSerializer implements JsonSerializer<Regatta> {
public static final String FIELD_ID = "id";
@@ -17,13 +18,26 @@ public class RegattaJsonSerializer implements JsonSerializer<Regatta> {
private final JsonSerializer<BoatClass> boatClassSerializer;
private final JsonSerializer<RaceDefinition> raceDefinitionSerializer;
private final SerializationFilter<RaceDefinition> raceDefinitionFilter;
public RegattaJsonSerializer(
JsonSerializer<BoatClass> boatClassSerializer,
JsonSerializer<RaceDefinition> raceDefinitionSerializer,
SerializationFilter<RaceDefinition> raceDefinitionFilter)
{
this.boatClassSerializer = boatClassSerializer;
this.raceDefinitionSerializer = raceDefinitionSerializer;
this.raceDefinitionFilter = raceDefinitionFilter;
}
public RegattaJsonSerializer(
JsonSerializer<BoatClass> boatClassSerializer,
JsonSerializer<RaceDefinition> raceDefinitionSerializer)
{
this.boatClassSerializer = boatClassSerializer;
this.raceDefinitionSerializer = raceDefinitionSerializer;
this(
boatClassSerializer,
raceDefinitionSerializer,
new SerializationFilter.NoFilter<RaceDefinition>());
}
@Override
@@ -38,7 +52,9 @@ public class RegattaJsonSerializer implements JsonSerializer<Regatta> {
JSONArray races = new JSONArray();
for (RaceDefinition race : object.getAllRaces())
{
races.add(raceDefinitionSerializer.serialize(race));
if (!raceDefinitionFilter.isFiltered(race)) {
races.add(raceDefinitionSerializer.serialize(race));
}
}
result.put(FIELD_RACES, races);