From b188ae07ab34cc965cf130461d7e1f75761633b0 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 27 Jun 2017 15:17:36 +0200 Subject: [PATCH] bug2059 Adjusted serializer and deserializer for Statistics by year --- .../StatisticsByYearJsonDeserializer.java | 22 ++++++------------- .../impl/StatisticsByYearJsonSerializer.java | 20 +++++------------ .../gateway/jaxrs/api/StatisticsResource.java | 7 ++++-- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/StatisticsByYearJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/StatisticsByYearJsonDeserializer.java index f82a038e5b2..b9dac33d8e7 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/StatisticsByYearJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/deserialization/impl/StatisticsByYearJsonDeserializer.java @@ -1,17 +1,14 @@ package com.sap.sailing.server.gateway.deserialization.impl; -import java.util.HashMap; -import java.util.Map; - -import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.sap.sailing.domain.statistics.Statistics; import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; import com.sap.sailing.server.gateway.serialization.impl.StatisticsByYearJsonSerializer; +import com.sap.sse.common.Util.Pair; -public class StatisticsByYearJsonDeserializer implements JsonDeserializer> { +public class StatisticsByYearJsonDeserializer implements JsonDeserializer> { private final StatisticsJsonDeserializer statisticsJsonDeserializer; @@ -20,16 +17,11 @@ public class StatisticsByYearJsonDeserializer implements JsonDeserializer deserialize(JSONObject object) throws JsonDeserializationException { - Map result = new HashMap<>(); - for (Object entry : (JSONArray) object.get(StatisticsByYearJsonSerializer.FIELD_ARRAY)) { - JSONObject jsonEntry = (JSONObject) entry; - Integer year = (Integer) jsonEntry.get(StatisticsByYearJsonSerializer.FIELD_YEAR); - Statistics statistics = statisticsJsonDeserializer - .deserialize((JSONObject) jsonEntry.get(StatisticsByYearJsonSerializer.FIELD_STATISTICS)); - result.put(year, statistics); - } - return result; + public Pair deserialize(JSONObject object) throws JsonDeserializationException { + Integer year = (Integer) object.get(StatisticsByYearJsonSerializer.FIELD_YEAR); + Statistics statistics = statisticsJsonDeserializer + .deserialize((JSONObject) object.get(StatisticsByYearJsonSerializer.FIELD_STATISTICS)); + return new Pair(year, statistics); } } diff --git a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/StatisticsByYearJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/StatisticsByYearJsonSerializer.java index 338937cea04..c0bfe677ee3 100644 --- a/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/StatisticsByYearJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization.shared.android/src/com/sap/sailing/server/gateway/serialization/impl/StatisticsByYearJsonSerializer.java @@ -1,17 +1,13 @@ package com.sap.sailing.server.gateway.serialization.impl; -import java.util.Map; -import java.util.Map.Entry; - -import org.json.simple.JSONArray; import org.json.simple.JSONObject; import com.sap.sailing.domain.statistics.Statistics; import com.sap.sailing.server.gateway.serialization.JsonSerializer; +import com.sap.sse.common.Util.Pair; -public class StatisticsByYearJsonSerializer implements JsonSerializer> { +public class StatisticsByYearJsonSerializer implements JsonSerializer> { - public static final String FIELD_ARRAY = "array"; public static final String FIELD_YEAR = "year"; public static final String FIELD_STATISTICS = "statistics"; @@ -22,16 +18,10 @@ public class StatisticsByYearJsonSerializer implements JsonSerializer object) { + public JSONObject serialize(Pair object) { JSONObject result = new JSONObject(); - JSONArray array = new JSONArray(); - result.put(FIELD_ARRAY, array); - for (Entry entry : object.entrySet()) { - JSONObject jsonEntry = new JSONObject(); - jsonEntry.put(FIELD_YEAR, entry.getKey()); - jsonEntry.put(FIELD_STATISTICS, statisticsJsonSerializer.serialize(entry.getValue())); - array.add(jsonEntry); - } + result.put(FIELD_YEAR, object.getA()); + result.put(FIELD_STATISTICS, statisticsJsonSerializer.serialize(object.getB())); return result; } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/StatisticsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/StatisticsResource.java index 1a65073c546..23cffe0f150 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/StatisticsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/StatisticsResource.java @@ -6,12 +6,13 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.json.simple.JSONArray; import org.json.simple.JSONAware; -import org.json.simple.JSONObject; import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource; import com.sap.sailing.server.gateway.serialization.impl.StatisticsByYearJsonSerializer; import com.sap.sailing.server.gateway.serialization.impl.StatisticsJsonSerializer; +import com.sap.sse.common.Util.Pair; @Path("/v1/statistics") public class StatisticsResource extends AbstractSailingServerResource { @@ -26,7 +27,9 @@ public class StatisticsResource extends AbstractSailingServerResource { @Produces(CONTENT_TYPE_JSON_UTF8) @Path("years") public Response getStatisticsByYear() { - JSONObject json = statisticsByYearJsonSerializer.serialize(getService().getLocalStatisticsByYear()); + JSONArray json = new JSONArray(); + getService().getLocalStatisticsByYear().forEach( + (year, statistics) -> json.add(statisticsByYearJsonSerializer.serialize(new Pair<>(year, statistics)))); return getJsonResponse(json); }