diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/MongoDbFriendlyPositionJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/MongoDbFriendlyPositionJsonDeserializer.java new file mode 100644 index 00000000000..f5c468ca019 --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/MongoDbFriendlyPositionJsonDeserializer.java @@ -0,0 +1,22 @@ +package com.sap.sailing.server.gateway.deserialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.impl.DegreePosition; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.MongoDbFriendlyPositionJsonSerializer; + +public class MongoDbFriendlyPositionJsonDeserializer implements JsonDeserializer { + + @Override + public Position deserialize(JSONObject object) throws JsonDeserializationException { + JSONArray coordinatesJson = (JSONArray) object.get(MongoDbFriendlyPositionJsonSerializer.FIELD_COORDINATES); + Number longitudeDeg = (Number) coordinatesJson.get(0); + Number latitudeDeg = (Number) coordinatesJson.get(1); + return new DegreePosition(latitudeDeg.doubleValue(), longitudeDeg.doubleValue()); + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/MongoDbFriendlyPositionJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/MongoDbFriendlyPositionJsonSerializer.java new file mode 100644 index 00000000000..3add98f39ae --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/MongoDbFriendlyPositionJsonSerializer.java @@ -0,0 +1,26 @@ +package com.sap.sailing.server.gateway.serialization.impl; + +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; + +import com.sap.sailing.domain.common.Position; +import com.sap.sailing.server.gateway.serialization.JsonSerializer; + +public class MongoDbFriendlyPositionJsonSerializer implements JsonSerializer { + + public static final String FIELD_TYPE = "type"; + public static final String FIELD_TYPE_VALUE = "Point"; + public static final String FIELD_COORDINATES = "coordinates"; + + @Override + public JSONObject serialize(Position position) { + JSONObject result = new JSONObject(); + JSONArray coordinates = new JSONArray(); + coordinates.add(position.getLngDeg()); + coordinates.add(position.getLatDeg()); + result.put(FIELD_TYPE, FIELD_TYPE_VALUE); + result.put(FIELD_COORDINATES, coordinates); + return result; + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RaceWindJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RaceWindJsonSerializer.java index 4a1754382ce..0422348f543 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RaceWindJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/RaceWindJsonSerializer.java @@ -31,7 +31,7 @@ public class RaceWindJsonSerializer extends AbstractTrackedRaceDataJsonSerialize public static final String SAMPLING_RATE = "samplingRate"; public static final String FIXES = "fixes"; - private final PositionJsonSerializer positionSerializer = new PositionJsonSerializer(); + private final MongoDbFriendlyPositionJsonSerializer positionSerializer = new MongoDbFriendlyPositionJsonSerializer(); private final WindJsonSerializer windSerializer = new WindJsonSerializer(positionSerializer); @Override @@ -85,7 +85,8 @@ public class RaceWindJsonSerializer extends AbstractTrackedRaceDataJsonSerialize windSourceJson.put(FIRST_POSITION, positionSerializer.serialize(firstWindSourcePosition)); windSourceJson.put(START_TIME_POINT, firstWindSourceTimePoint.asMillis()); windSourceJson.put(END_TIME_POINT, lastWindSourceTimePoint.asMillis()); - double samplingRate = duration.asSeconds() > 0 ? windFixesJson.size() / duration.asSeconds() : 0; + double samplingRate = duration.asSeconds() > 0 ? windFixesJson.size() / duration.asSeconds() + : 0; windSourceJson.put(SAMPLING_RATE, samplingRate); windSourceJson.put(FIXES, windFixesJson); windSourcesJson.add(windSourceJson);