Merge remote-tracking branch 'server/master'

This commit is contained in:
Axel Uhl committed 2016-06-09 22:38:02 +02:00
commit 175af63beb
5 files changed
+62 -42

No files matched your search

@@ -0,0 +1,29 @@
package com.sap.sailing.server.gateway.jaxrs;
public class RoundingUtil {
public static final RoundingUtil distanceDecimalFormatter = new RoundingUtil(2);
public static final RoundingUtil knotsDecimalFormatter = new RoundingUtil(2);
public static final RoundingUtil bearingDecimalFormatter = new RoundingUtil(1);
public static final RoundingUtil speedDecimalFormatter = new RoundingUtil(1);
public static final RoundingUtil latLngDecimalFormatter = new RoundingUtil(6);
private final double shiftFactor;
private RoundingUtil(int decimals) {
shiftFactor = getShiftFactor(decimals);
}
private static double getShiftFactor(int decimals) {
return Math.pow(10, decimals);
}
public double format(double value) {
return ((double) Math.round(value * shiftFactor)) / shiftFactor;
}
public static double format(double value, int decimals) {
final double shiftFactor = getShiftFactor(decimals);
return ((double) Math.round(value * shiftFactor)) / shiftFactor;
}
}
@@ -1,22 +0,0 @@
package com.sap.sailing.server.gateway.jaxrs;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class UnitSerializationUtil {
public static final DecimalFormat distanceDecimalFormatter = new DecimalFormat("#.##");
public static final DecimalFormat knotsDecimalFormatter = new DecimalFormat("#.##");
public static final DecimalFormat bearingDecimalFormatter = new DecimalFormat("#.#");
public static final DecimalFormat speedDecimalFormatter = new DecimalFormat("#.#");
public static final DecimalFormat latLngDecimalFormatter = new DecimalFormat("#.######");
static {
DecimalFormatSymbols symbol = DecimalFormatSymbols.getInstance();
symbol.setDecimalSeparator('.');
distanceDecimalFormatter.setDecimalFormatSymbols(symbol);
knotsDecimalFormatter.setDecimalFormatSymbols(symbol);
bearingDecimalFormatter.setDecimalFormatSymbols(symbol);
speedDecimalFormatter.setDecimalFormatSymbols(symbol);
latLngDecimalFormatter.setDecimalFormatSymbols(symbol);
}
}
@@ -9,7 +9,7 @@ import org.json.simple.JSONObject;
import com.sap.sailing.domain.common.Wind;
import com.sap.sailing.domain.common.WindSource;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.server.gateway.jaxrs.UnitSerializationUtil;
import com.sap.sailing.server.gateway.jaxrs.RoundingUtil;
import com.sap.sse.common.TimePoint;
public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
@@ -40,19 +40,19 @@ public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
for (Wind wind : fixes) {
JSONObject jsonWind = new JSONObject();
jsonWind.put("trueBearing-deg", UnitSerializationUtil.bearingDecimalFormatter.format(wind.getBearing().getDegrees()));
jsonWind.put("speed-kts", UnitSerializationUtil.speedDecimalFormatter.format(wind.getKnots()));
jsonWind.put("speed-m/s", UnitSerializationUtil.speedDecimalFormatter.format(wind.getMetersPerSecond()));
jsonWind.put("trueBearing-deg", RoundingUtil.bearingDecimalFormatter.format(wind.getBearing().getDegrees()));
jsonWind.put("speed-kts", RoundingUtil.speedDecimalFormatter.format(wind.getKnots()));
jsonWind.put("speed-m/s", RoundingUtil.speedDecimalFormatter.format(wind.getMetersPerSecond()));
if (wind.getTimePoint() != null) {
jsonWind.put("timepoint-ms", wind.getTimePoint().asMillis());
final Wind averagedWind = windTrack.getAveragedWind(wind.getPosition(), wind.getTimePoint());
jsonWind.put("dampenedTrueBearing-deg", UnitSerializationUtil.bearingDecimalFormatter.format(averagedWind.getBearing().getDegrees()));
jsonWind.put("dampenedSpeed-kts", UnitSerializationUtil.speedDecimalFormatter.format(averagedWind.getKnots()));
jsonWind.put("dampenedSpeed-m/s", UnitSerializationUtil.speedDecimalFormatter.format(averagedWind.getMetersPerSecond()));
jsonWind.put("dampenedTrueBearing-deg", RoundingUtil.bearingDecimalFormatter.format(averagedWind.getBearing().getDegrees()));
jsonWind.put("dampenedSpeed-kts", RoundingUtil.speedDecimalFormatter.format(averagedWind.getKnots()));
jsonWind.put("dampenedSpeed-m/s", RoundingUtil.speedDecimalFormatter.format(averagedWind.getMetersPerSecond()));
}
if (wind.getPosition() != null) {
jsonWind.put("lat-deg", UnitSerializationUtil.latLngDecimalFormatter.format(wind.getPosition().getLatDeg()));
jsonWind.put("lng-deg", UnitSerializationUtil.latLngDecimalFormatter.format(wind.getPosition().getLngDeg()));
jsonWind.put("lat-deg", RoundingUtil.latLngDecimalFormatter.format(wind.getPosition().getLatDeg()));
jsonWind.put("lng-deg", RoundingUtil.latLngDecimalFormatter.format(wind.getPosition().getLngDeg()));
}
jsonWindFixes.add(jsonWind);
}
@@ -48,7 +48,7 @@ import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.WindPositionMode;
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
import com.sap.sailing.server.gateway.jaxrs.UnitSerializationUtil;
import com.sap.sailing.server.gateway.jaxrs.RoundingUtil;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sailing.server.gateway.serialization.coursedata.impl.ControlPointJsonSerializer;
import com.sap.sailing.server.gateway.serialization.coursedata.impl.CourseBaseJsonSerializer;
@@ -288,13 +288,13 @@ public class RegattasResource extends AbstractSailingServerResource {
}
JSONObject jsonFix = new JSONObject();
jsonFix.put("timepoint-ms", fix.getTimePoint().asMillis());
jsonFix.put("lat-deg", UnitSerializationUtil.latLngDecimalFormatter.format(fix
jsonFix.put("lat-deg", RoundingUtil.latLngDecimalFormatter.format(fix
.getPosition().getLatDeg()));
jsonFix.put("lng-deg", UnitSerializationUtil.latLngDecimalFormatter.format(fix
jsonFix.put("lng-deg", RoundingUtil.latLngDecimalFormatter.format(fix
.getPosition().getLngDeg()));
jsonFix.put("truebearing-deg", fix.getSpeed().getBearing().getDegrees());
jsonFix.put("speed-kts",
UnitSerializationUtil.knotsDecimalFormatter.format(fix.getSpeed().getKnots()));
RoundingUtil.knotsDecimalFormatter.format(fix.getSpeed().getKnots()));
if (withTack != null && withTack) {
String tackName;
try {
@@ -447,9 +447,9 @@ public class RegattasResource extends AbstractSailingServerResource {
JSONObject jsonFix = new JSONObject();
jsonFix.put("timepoint-ms", fix.getTimePoint().asMillis());
jsonFix.put("lat-deg",
UnitSerializationUtil.latLngDecimalFormatter.format(fix.getPosition().getLatDeg()));
RoundingUtil.latLngDecimalFormatter.format(fix.getPosition().getLatDeg()));
jsonFix.put("lng-deg",
UnitSerializationUtil.latLngDecimalFormatter.format(fix.getPosition().getLngDeg()));
RoundingUtil.latLngDecimalFormatter.format(fix.getPosition().getLngDeg()));
return jsonFix;
}
@@ -617,7 +617,7 @@ public class RegattasResource extends AbstractSailingServerResource {
jsonLegInfo.put("type", trackedLeg.getLegType(firstPassingTime));
jsonLegInfo.put(
"bearing-deg",
UnitSerializationUtil.bearingDecimalFormatter.format(trackedLeg.getLegBearing(
RoundingUtil.bearingDecimalFormatter.format(trackedLeg.getLegBearing(
firstPassingTime).getDegrees()));
}
} catch (NoWindException e) {
@@ -890,7 +890,7 @@ public class RegattasResource extends AbstractSailingServerResource {
.getAverageSpeedOverGround(timePoint);
if (averageSpeedOverGround != null) {
jsonCompetitorInLeg.put("averageSOG-kts",
UnitSerializationUtil.knotsDecimalFormatter.format(averageSpeedOverGround
RoundingUtil.knotsDecimalFormatter.format(averageSpeedOverGround
.getKnots()));
}
try {
@@ -928,21 +928,23 @@ public class RegattasResource extends AbstractSailingServerResource {
Distance distanceSinceGun = trackedRace.getTrack(competitor).getDistanceTraveled(
startOfRace, finishTime != null ? finishTime : timePoint);
if (distanceSinceGun != null) {
jsonCompetitorInLeg.put("distanceSinceGun-m", distanceSinceGun.getMeters());
jsonCompetitorInLeg.put("distanceSinceGun-m",
RoundingUtil.distanceDecimalFormatter.format(distanceSinceGun
.getMeters()));
}
}
Distance distanceTraveled = trackedLegOfCompetitor.getDistanceTraveled(timePoint);
if (distanceTraveled != null) {
jsonCompetitorInLeg.put("distanceTraveled-m",
UnitSerializationUtil.distanceDecimalFormatter.format(distanceTraveled
RoundingUtil.distanceDecimalFormatter.format(distanceTraveled
.getMeters()));
}
Distance distanceTraveledIncludingGateStart = trackedLegOfCompetitor
.getDistanceTraveledConsideringGateStart(timePoint);
if (distanceTraveledIncludingGateStart != null) {
jsonCompetitorInLeg.put("distanceTraveledIncludingGateStart-m",
UnitSerializationUtil.distanceDecimalFormatter
RoundingUtil.distanceDecimalFormatter
.format(distanceTraveledIncludingGateStart.getMeters()));
}
try {