diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index aaab8992ce4..bab7e09f828 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -599,6 +599,33 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS return windDTO; } + /** + * Uses wind for both, the non-dampened and dampened fields of the {@link WindDTO} object returned + */ + protected WindDTO createWindDTOFromAlreadyAveraged(Wind wind, WindTrack windTrack) { + WindDTO windDTO = new WindDTO(); + windDTO.trueWindBearingDeg = wind.getBearing().getDegrees(); + windDTO.trueWindFromDeg = wind.getBearing().reverse().getDegrees(); + windDTO.trueWindSpeedInKnots = wind.getKnots(); + windDTO.trueWindSpeedInMetersPerSecond = wind.getMetersPerSecond(); + windDTO.dampenedTrueWindBearingDeg = wind.getBearing().getDegrees(); + windDTO.dampenedTrueWindFromDeg = wind.getBearing().reverse().getDegrees(); + windDTO.dampenedTrueWindSpeedInKnots = wind.getKnots(); + windDTO.dampenedTrueWindSpeedInMetersPerSecond = wind.getMetersPerSecond(); + if (wind.getPosition() != null) { + windDTO.position = new PositionDTO(wind.getPosition().getLatDeg(), wind.getPosition() + .getLngDeg()); + } + if (wind.getTimePoint() != null) { + windDTO.timepoint = wind.getTimePoint().asMillis(); + } + return windDTO; + } + + /** + * Fetches the {@link WindTrack#getAveragedWind(Position, TimePoint) average wind} from all wind tracks or those identified + * by windSourceTypeNames + */ @Override public WindInfoForRaceDTO getWindInfo(RaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth, int numberOfFixes, double latDeg, double lngDeg, Collection windSourceTypeNames) @@ -628,7 +655,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS for (int i = 0; i < numberOfFixes; i++) { Wind wind = windTrack.getAveragedWind(position, timePoint); if (wind != null) { - WindDTO windDTO = createWindDTO(wind, windTrack); + WindDTO windDTO = createWindDTOFromAlreadyAveraged(wind, windTrack); windTrackInfoDTO.windFixes.add(windDTO); } timePoint = new MillisecondsTimePoint(timePoint.asMillis() + millisecondsStepWidth); @@ -675,7 +702,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS for (int i = 0; i < numberOfFixes && timePoint.compareTo(newestEvent) < 0; i++) { Wind wind = windTrack.getAveragedWind(null, timePoint); if (wind != null) { - WindDTO windDTO = createWindDTO(wind, windTrack); + WindDTO windDTO = createWindDTOFromAlreadyAveraged(wind, windTrack); windTrackInfoDTO.windFixes.add(windDTO); } timePoint = new MillisecondsTimePoint(timePoint.asMillis() + millisecondsStepWidth);