bug2059 Adjusted serializer and deserializer for Statistics by year

This commit is contained in:
Benjamin Barth committed 2017-06-27 15:18:22 +02:00
1 parent 7ee311ebf5
commit b188ae07ab
3 files changed
+17 -32

No files matched your search

@@ -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<Map<Integer, Statistics>> {
public class StatisticsByYearJsonDeserializer implements JsonDeserializer<Pair<Integer, Statistics>> {
private final StatisticsJsonDeserializer statisticsJsonDeserializer;
@@ -20,16 +17,11 @@ public class StatisticsByYearJsonDeserializer implements JsonDeserializer<Map<In
}
@Override
public Map<Integer, Statistics> deserialize(JSONObject object) throws JsonDeserializationException {
Map<Integer, Statistics> 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<Integer, Statistics> 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<Integer, Statistics>(year, statistics);
}
}
@@ -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<Map<Integer, Statistics>> {
public class StatisticsByYearJsonSerializer implements JsonSerializer<Pair<Integer, Statistics>> {
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<Map<Intege
}
@Override
public JSONObject serialize(Map<Integer, Statistics> object) {
public JSONObject serialize(Pair<Integer, Statistics> object) {
JSONObject result = new JSONObject();
JSONArray array = new JSONArray();
result.put(FIELD_ARRAY, array);
for (Entry<Integer, Statistics> 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;
}
@@ -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);
}