mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-17 01:31:01 +00:00
Merge remote-tracking branch 'server/master'
This commit is contained in:
commit
175af63beb
5 files changed
+62
-42
No files matched your search
+29
@@ -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;
|
||||
}
|
||||
}
|
||||
-22
@@ -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
-9
@@ -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);
|
||||
}
|
||||
|
||||
+13
-11
@@ -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 {
|
||||
|
||||
Reference in new issue
Block a user