mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-22 21:55:39 +00:00
bug6091: implemented percent target boat speed for chart/tails
This commit is contained in:
+13
-1
@@ -123,6 +123,7 @@ import com.sap.sailing.domain.base.RemoteSailingServerReference;
|
||||
import com.sap.sailing.domain.base.SailingServerConfiguration;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.SpeedWithConfidence;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.configuration.DeviceConfiguration;
|
||||
import com.sap.sailing.domain.base.configuration.RegattaConfiguration;
|
||||
@@ -167,6 +168,7 @@ import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO;
|
||||
import com.sap.sailing.domain.common.impl.DataImportProgressImpl;
|
||||
import com.sap.sailing.domain.common.impl.MasterDataImportObjectCreationCountImpl;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.polars.NotEnoughDataHasBeenAddedException;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.DoesNotHaveRegattaLogException;
|
||||
@@ -5464,7 +5466,7 @@ Replicator {
|
||||
@Override
|
||||
public Double getCompetitorRaceDataEntry(DetailType dataType, TrackedRace trackedRace, Competitor competitor,
|
||||
TimePoint timePoint, LeaderboardGroup leaderboardGroup, String leaderboardName,
|
||||
WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) throws NoWindException {
|
||||
WindLegTypeAndLegBearingAndORCPerformanceCurveCache cache) throws NoWindException, NotEnoughDataHasBeenAddedException {
|
||||
Double result = null;
|
||||
final Course course = trackedRace.getRace().getCourse();
|
||||
course.lockForRead(); // make sure the tracked leg survives this call even if a course update is pending
|
||||
@@ -5883,6 +5885,16 @@ Replicator {
|
||||
result = getBravoDoubleValue(BravoFixTrack::getExpeditionVMGTargVMGDeltaIfAvailable, trackedRace, competitor, timePoint);
|
||||
break;
|
||||
}
|
||||
case PERCENT_TARGET_BOAT_SPEED: {
|
||||
final PolarDataService polarDataService = getPolarDataService();
|
||||
final GPSFixTrack<Competitor, GPSFixMoving> competitorTrack = trackedRace.getTrack(competitor);
|
||||
final Wind wind = trackedRace.getWind(competitorTrack.getEstimatedPosition(timePoint, /* extrapolate */ true), timePoint);
|
||||
final SpeedWithConfidence<Void> targetSpeed = polarDataService.getSpeed(trackedRace.getBoatOfCompetitor(competitor).getBoatClass(),
|
||||
wind, trackedRace.getTWA(competitor, timePoint, cache));
|
||||
final Speed sog = competitorTrack.getEstimatedSpeed(timePoint);
|
||||
result = targetSpeed != null && targetSpeed.getObject() != null && sog != null ? 100.0 * sog.getKnots() / targetSpeed.getObject().getKnots() : null;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
throw new UnsupportedOperationException("There is currently no support for the enum value '" + dataType
|
||||
+ "' in this method.");
|
||||
|
||||
Reference in New Issue
Block a user