mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-10 14:20:55 +00:00
# Prepared: RegattaRaces API filters by course area
# More app code migrated from old version into new code base
This commit is contained in:
1 parent
0d32aff524
commit
c5241f3468
49 files changed
+1856
-199
No files matched your search
+3
-13
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+20
@@ -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
-21
@@ -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
-12
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
+12
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+2
-1
@@ -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();
|
||||
|
||||
+2
-2
@@ -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(
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
+14
@@ -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);
|
||||
|
||||
}
|
||||
+8
-1
@@ -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;
|
||||
|
||||
+19
-3
@@ -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);
|
||||
|
||||
|
||||
Reference in new issue
Block a user