mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
added JSON serialization and deserialization support with tests for LeaderboardSearchResult[Base]
This commit is contained in:
1 parent
1b313b9db8
commit
291360ee38
9 files changed
+226
-33
No files matched your search
+8
-5
@@ -8,17 +8,19 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardSearchResultDTO;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResultBase;
|
||||
import com.sap.sailing.domain.base.impl.LeaderboardBaseImpl;
|
||||
import com.sap.sailing.domain.base.impl.LeaderboardSearchResultBaseImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.LeaderboardSearchResultJsonSerializer;
|
||||
|
||||
public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeserializer<StrippedLeaderboardSearchResult> {
|
||||
public class LeaderboardSearchResultBaseJsonDeserializer implements JsonDeserializer<LeaderboardSearchResultBase> {
|
||||
private final EventBaseJsonDeserializer eventDeserializer;
|
||||
|
||||
private final LeaderboardGroupBaseJsonDeserializer leaderboardGroupDeserializer;
|
||||
|
||||
public LeaderboardSearchResultDTOJsonDeserializer(EventBaseJsonDeserializer eventDeserializer,
|
||||
public LeaderboardSearchResultBaseJsonDeserializer(EventBaseJsonDeserializer eventDeserializer,
|
||||
LeaderboardGroupBaseJsonDeserializer leaderboardGroupDeserializer) {
|
||||
super();
|
||||
this.eventDeserializer = eventDeserializer;
|
||||
@@ -26,7 +28,7 @@ public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeseriali
|
||||
}
|
||||
|
||||
@Override
|
||||
public StrippedLeaderboardSearchResult deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
public LeaderboardSearchResultBase deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
EventBase event = eventDeserializer.deserialize(Helpers.getNestedObjectSafe(object, LeaderboardSearchResultJsonSerializer.FIELD_EVENT));
|
||||
JSONObject leaderboardJson = Helpers.getNestedObjectSafe(object, LeaderboardSearchResultJsonSerializer.FIELD_LEADERBOARD);
|
||||
String leaderboardName = (String) leaderboardJson.get(LeaderboardSearchResultJsonSerializer.FIELD_LEADERBOARD_NAME);
|
||||
@@ -38,7 +40,8 @@ public class LeaderboardSearchResultDTOJsonDeserializer implements JsonDeseriali
|
||||
for (Object leaderboardGroupJson : leaderboardGroupsJson) {
|
||||
leaderboardGroups.add(leaderboardGroupDeserializer.deserialize((JSONObject) leaderboardGroupJson));
|
||||
}
|
||||
return new StrippedLeaderboardSearchResult(event, leaderboardName, leaderboardDisplayName, boatClassName, regattaName, leaderboardGroups);
|
||||
return new LeaderboardSearchResultBaseImpl(new LeaderboardBaseImpl(leaderboardName, leaderboardDisplayName),
|
||||
regattaName, boatClassName, leaderboardGroups, event);
|
||||
}
|
||||
|
||||
}
|
||||
+4
-4
@@ -21,10 +21,10 @@ public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
|
||||
public static final String FIELDS_LEADERBOARD_GROUPS = "leaderboardGroups";
|
||||
|
||||
private final JsonSerializer<Venue> venueSerializer;
|
||||
private final JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer;
|
||||
private final JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupBaseSerializer;
|
||||
|
||||
public EventBaseJsonSerializer(JsonSerializer<Venue> venueSerializer, JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupSerializer) {
|
||||
this.leaderboardGroupSerializer = leaderboardGroupSerializer;
|
||||
public EventBaseJsonSerializer(JsonSerializer<Venue> venueSerializer, JsonSerializer<? super LeaderboardGroupBase> leaderboardGroupBaseSerializer) {
|
||||
this.leaderboardGroupBaseSerializer = leaderboardGroupBaseSerializer;
|
||||
this.venueSerializer = venueSerializer;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class EventBaseJsonSerializer implements JsonSerializer<EventBase> {
|
||||
JSONArray leaderboardGroups = new JSONArray();
|
||||
result.put(FIELDS_LEADERBOARD_GROUPS, leaderboardGroups);
|
||||
for (LeaderboardGroupBase lg : event.getLeaderboardGroups()) {
|
||||
leaderboardGroups.add(leaderboardGroupSerializer.serialize(lg));
|
||||
leaderboardGroups.add(leaderboardGroupBaseSerializer.serialize(lg));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+4
-13
@@ -3,7 +3,6 @@ package com.sap.sailing.server.gateway.serialization.impl;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.LeaderboardSearchResult;
|
||||
@@ -11,7 +10,6 @@ import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<LeaderboardSearchResult> {
|
||||
@@ -44,16 +42,16 @@ public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<Lea
|
||||
Leaderboard leaderboard = leaderboardSearchResult.getLeaderboard();
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_NAME, leaderboard.getName());
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_DISPLAY_NAME, leaderboard.getDisplayName());
|
||||
final BoatClass boatClass;
|
||||
final String boatClassName;
|
||||
final Regatta regatta;
|
||||
if (leaderboard instanceof RegattaLeaderboard) {
|
||||
regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
|
||||
boatClass = regatta.getBoatClass();
|
||||
boatClassName = regatta.getBoatClass().getName();
|
||||
} else {
|
||||
regatta = null;
|
||||
boatClass = getBoatClassFromTrackedRaces(leaderboard);
|
||||
boatClassName = leaderboardSearchResult.getBoatClassName();
|
||||
}
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_BOAT_CLASS_NAME, boatClass == null ? null : boatClass.getName());
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_BOAT_CLASS_NAME, boatClassName);
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_REGATTA_NAME, regatta == null ? null : regatta.getName());
|
||||
JSONArray leaderboardGroupsJson = new JSONArray();
|
||||
leaderboardJson.put(FIELD_LEADERBOARD_IN_LEADERBOARD_GROUPS, leaderboardGroupsJson);
|
||||
@@ -62,11 +60,4 @@ public class LeaderboardSearchResultJsonSerializer implements JsonSerializer<Lea
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private BoatClass getBoatClassFromTrackedRaces(Leaderboard leaderboard) {
|
||||
for (TrackedRace trackedRace : leaderboard.getTrackedRaces()) {
|
||||
return trackedRace.getRace().getBoatClass();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user