mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
stripped leaderboard group (ID, name, description) is now JSON-serialized with Event
This commit is contained in:
1 parent
8e23b60837
commit
6ecc711ea6
20 files changed
+279
-102
No files matched your search
+26
-15
@@ -10,44 +10,55 @@ import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.base.impl.EventBaseImpl;
|
||||
import com.sap.sailing.domain.base.impl.StrippedEventImpl;
|
||||
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
|
||||
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.EventBaseJsonSerializer;
|
||||
|
||||
public class EventBaseJsonDeserializer implements JsonDeserializer<EventBase> {
|
||||
private JsonDeserializer<Venue> venueDeserializer;
|
||||
private final JsonDeserializer<Venue> venueDeserializer;
|
||||
private final JsonDeserializer<LeaderboardGroupBase> leaderboardGroupDeserializer;
|
||||
|
||||
public EventBaseJsonDeserializer(JsonDeserializer<Venue> venueDeserializer) {
|
||||
public EventBaseJsonDeserializer(JsonDeserializer<Venue> venueDeserializer, JsonDeserializer<LeaderboardGroupBase> leaderboardGroupDeserializer) {
|
||||
this.venueDeserializer = venueDeserializer;
|
||||
this.leaderboardGroupDeserializer = leaderboardGroupDeserializer;
|
||||
}
|
||||
|
||||
public EventBase deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
UUID id = UUID.fromString((String) object.get(EventJsonSerializer.FIELD_ID));
|
||||
String name = object.get(EventJsonSerializer.FIELD_NAME).toString();
|
||||
Number startDate = (Number) object.get(EventJsonSerializer.FIELD_START_DATE);
|
||||
Number endDate = (Number) object.get(EventJsonSerializer.FIELD_END_DATE);
|
||||
UUID id = UUID.fromString((String) object.get(EventBaseJsonSerializer.FIELD_ID));
|
||||
String name = object.get(EventBaseJsonSerializer.FIELD_NAME).toString();
|
||||
Number startDate = (Number) object.get(EventBaseJsonSerializer.FIELD_START_DATE);
|
||||
Number endDate = (Number) object.get(EventBaseJsonSerializer.FIELD_END_DATE);
|
||||
final Venue venue;
|
||||
if (object.get(EventJsonSerializer.FIELD_VENUE) != null) {
|
||||
JSONObject venueObject = Helpers.getNestedObjectSafe(object, EventJsonSerializer.FIELD_VENUE);
|
||||
if (object.get(EventBaseJsonSerializer.FIELD_VENUE) != null) {
|
||||
JSONObject venueObject = Helpers.getNestedObjectSafe(object, EventBaseJsonSerializer.FIELD_VENUE);
|
||||
venue = venueDeserializer.deserialize(venueObject);
|
||||
} else {
|
||||
venue = null;
|
||||
}
|
||||
EventBaseImpl result = new EventBaseImpl(name, startDate == null ? null : new MillisecondsTimePoint(startDate.longValue()),
|
||||
endDate == null ? null : new MillisecondsTimePoint(endDate.longValue()), venue, true, id);
|
||||
if (object.get(EventJsonSerializer.FIELD_IMAGE_URLS) != null) {
|
||||
JSONArray leaderboardGroupsJson = (JSONArray) object.get(EventBaseJsonSerializer.FIELDS_LEADERBOARD_GROUPS);
|
||||
List<LeaderboardGroupBase> leaderboardGroups = new ArrayList<LeaderboardGroupBase>();
|
||||
if (leaderboardGroupsJson != null) {
|
||||
for (Object lgJson : leaderboardGroupsJson) {
|
||||
leaderboardGroups.add(leaderboardGroupDeserializer.deserialize((JSONObject) lgJson));
|
||||
}
|
||||
}
|
||||
EventBaseImpl result = new StrippedEventImpl(name, startDate == null ? null : new MillisecondsTimePoint(startDate.longValue()),
|
||||
endDate == null ? null : new MillisecondsTimePoint(endDate.longValue()), venue, /* is public */ true, id, leaderboardGroups);
|
||||
if (object.get(EventBaseJsonSerializer.FIELD_IMAGE_URLS) != null) {
|
||||
try {
|
||||
result.setImageURLs(getURLsFromStrings(Helpers.getNestedArraySafe(object, EventJsonSerializer.FIELD_IMAGE_URLS)));
|
||||
result.setImageURLs(getURLsFromStrings(Helpers.getNestedArraySafe(object, EventBaseJsonSerializer.FIELD_IMAGE_URLS)));
|
||||
} catch (MalformedURLException e) {
|
||||
throw new JsonDeserializationException("Error deserializing image URLs for event "+name, e);
|
||||
}
|
||||
}
|
||||
if (object.get(EventJsonSerializer.FIELD_VIDEO_URLS) != null) {
|
||||
if (object.get(EventBaseJsonSerializer.FIELD_VIDEO_URLS) != null) {
|
||||
try {
|
||||
result.setVideoURLs(getURLsFromStrings(Helpers.getNestedArraySafe(object, EventJsonSerializer.FIELD_VIDEO_URLS)));
|
||||
result.setVideoURLs(getURLsFromStrings(Helpers.getNestedArraySafe(object, EventBaseJsonSerializer.FIELD_VIDEO_URLS)));
|
||||
} catch (MalformedURLException e) {
|
||||
throw new JsonDeserializationException("Error deserializing video URLs for event "+name, e);
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.impl.StrippedLeaderboardGroupImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventBaseJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardGroupBaseJsonSerializer;
|
||||
|
||||
public class LeaderboardGroupBaseJsonDeserializer implements JsonDeserializer<LeaderboardGroupBase> {
|
||||
|
||||
public LeaderboardGroupBaseJsonDeserializer() {
|
||||
}
|
||||
|
||||
public LeaderboardGroupBase deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
UUID id = UUID.fromString((String) object.get(EventBaseJsonSerializer.FIELD_ID));
|
||||
String name = object.get(LeaderboardGroupBaseJsonSerializer.FIELD_NAME).toString();
|
||||
String description = object.get(LeaderboardGroupBaseJsonSerializer.FIELD_DESCRIPTION).toString();
|
||||
String hasOverallLeaderboard = object.get(LeaderboardGroupBaseJsonSerializer.FIELD_HAS_OVERALL_LEADERBOARD).toString();
|
||||
LeaderboardGroupBase result = new StrippedLeaderboardGroupImpl(id, name, description, hasOverallLeaderboard == null ? false : Boolean.valueOf(hasOverallLeaderboard));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+11
-3
@@ -6,10 +6,11 @@ import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class EventJsonSerializer implements JsonSerializer<EventBase> {
|
||||
public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_START_DATE = "startDate";
|
||||
@@ -17,11 +18,13 @@ public class EventJsonSerializer implements JsonSerializer<EventBase> {
|
||||
public static final String FIELD_VENUE = "venue";
|
||||
public static final String FIELD_IMAGE_URLS = "imageURLs";
|
||||
public static final String FIELD_VIDEO_URLS = "videoURLs";
|
||||
public static final String FIELDS_LEADERBOARD_GROUPS = "leaderboardGroups";
|
||||
|
||||
private final JsonSerializer<Venue> venueSerializer;
|
||||
private final JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer;
|
||||
|
||||
public EventJsonSerializer(JsonSerializer<Venue> venueSerializer)
|
||||
{
|
||||
public EventBaseJsonSerializer(JsonSerializer<Venue> venueSerializer, JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer) {
|
||||
this.leaderboardGroupSerializer = leaderboardGroupSerializer;
|
||||
this.venueSerializer = venueSerializer;
|
||||
}
|
||||
|
||||
@@ -34,6 +37,11 @@ public class EventJsonSerializer implements JsonSerializer<EventBase> {
|
||||
result.put(FIELD_VENUE, venueSerializer.serialize(event.getVenue()));
|
||||
result.put(FIELD_IMAGE_URLS, getURLsAsStringArray(event.getImageURLs()));
|
||||
result.put(FIELD_VIDEO_URLS, getURLsAsStringArray(event.getVideoURLs()));
|
||||
JSONArray leaderboardGroups = new JSONArray();
|
||||
result.put(FIELDS_LEADERBOARD_GROUPS, leaderboardGroups);
|
||||
for (LeaderboardGroupBase lg : event.getLeaderboardGroups()) {
|
||||
leaderboardGroups.add(leaderboardGroupSerializer.serialize(lg));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class LeaderboardGroupBaseJsonSerializer implements JsonSerializer<LeaderboardGroupBase> {
|
||||
public static final String FIELD_ID = "id";
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_DESCRIPTION = "description";
|
||||
public static final String FIELD_HAS_OVERALL_LEADERBOARD = "hasOverallLeaderboard";
|
||||
|
||||
public LeaderboardGroupBaseJsonSerializer() {
|
||||
}
|
||||
|
||||
public JSONObject serialize(LeaderboardGroupBase leaderboardGroup) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_ID, leaderboardGroup.getId().toString());
|
||||
result.put(FIELD_NAME, leaderboardGroup.getName());
|
||||
result.put(FIELD_DESCRIPTION, leaderboardGroup.getDescription());
|
||||
result.put(FIELD_HAS_OVERALL_LEADERBOARD, leaderboardGroup.hasOverallLeaderboard());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user