mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-09 12:31:00 +00:00
Merge branch 'master' of ssh://trac@sapsailing.com/home/trac/git
This commit is contained in:
commit
455da34aa6
7 files changed
+78
-29
No files matched your search
+3
-2
@@ -188,7 +188,7 @@ AbsRelativeBearingToNextMarkAfterManeuver=Abs. relative bearing to the next mark
|
||||
RatioBetweenDistanceSailedWithAndWithoutManeuver=Ratio between distance sailed with and without maneuver
|
||||
RatioBetweenDistanceSailedTowardMiddleAngleProjectionWithAndWithoutManeuver=Ratio between distance sailed toward middle angle projection with and without maneuver
|
||||
DurationLostByManeuver=Duration lost by maneuver
|
||||
DurationLostByManeuverTowardMiddleAngleProjection=duration lost by maneuver toward middle angle projection
|
||||
DurationLostByManeuverTowardMiddleAngleProjection=Duration lost by maneuver toward middle angle projection
|
||||
JibingCount=Jibing count
|
||||
TackingCount=Tacking count
|
||||
AbsTwaAtMaxTurningRate=Abs. TWA at max. turning rate
|
||||
@@ -198,4 +198,5 @@ PercentageOfMainCurveProgressUntilLowestSpeed=Percentage of main curve progress
|
||||
PercentageOfMainCurveProgressUntilHighestSpeed=Percentage of main curve progress until highest speed
|
||||
PercentageOfMainCurveProgressUntilMaxTurningRate=Percentage of main curve progress until max. turning rate speed
|
||||
AbsTwaAtManeuverMiddle=Abs. TWA at maneuver middle
|
||||
GpsSamplingRate=GPS sampling rate
|
||||
GpsSamplingRate=GPS sampling rate
|
||||
RaceDuration=Race duration
|
||||
+2
-1
@@ -201,4 +201,5 @@ PercentageOfMainCurveProgressUntilHighestSpeed=Prozentualer Fortschritt der Haup
|
||||
PercentageOfMainCurveProgressUntilMaxTurningRate=Prozentualer Fortschritt der Hauptkurve bis zum Erreichen von max. Drehrate
|
||||
ManeuverTypeForCompleteManeuverCurve=Manövertyp für komplette Manöverkurve
|
||||
AbsTwaAtManeuverMiddle=Abs. TWA während Manövermitte
|
||||
GpsSamplingRate=GPS-Samplingrate
|
||||
GpsSamplingRate=GPS-Samplingrate
|
||||
RaceDuration=Renndauer
|
||||
+28
-23
@@ -4,6 +4,7 @@ import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.NoWindException;
|
||||
import com.sap.sailing.domain.common.Tack;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.Speed;
|
||||
import com.sap.sse.datamining.annotations.Connector;
|
||||
@@ -14,74 +15,74 @@ import com.sap.sse.datamining.shared.impl.dto.ClusterDTO;
|
||||
public interface HasRaceOfCompetitorContext {
|
||||
|
||||
@Connector(scanForStatistics=false)
|
||||
public HasTrackedRaceContext getTrackedRaceContext();
|
||||
HasTrackedRaceContext getTrackedRaceContext();
|
||||
|
||||
@Connector(messageKey="Competitor")
|
||||
@Statistic(messageKey="")
|
||||
public Competitor getCompetitor();
|
||||
Competitor getCompetitor();
|
||||
|
||||
@Dimension(messageKey="TackAtStart", ordinal=12)
|
||||
public Tack getTackAtStart() throws NoWindException;
|
||||
Tack getTackAtStart() throws NoWindException;
|
||||
|
||||
@Dimension(messageKey="DistanceToStarboardSideAtStartOfCompetitor", ordinal=13)
|
||||
public ClusterDTO getPercentageClusterForDistanceToStarboardSideAtStart();
|
||||
ClusterDTO getPercentageClusterForDistanceToStarboardSideAtStart();
|
||||
|
||||
@Dimension(messageKey="RelativeScoreInPercent", ordinal=14)
|
||||
public ClusterDTO getPercentageClusterForRelativeScore();
|
||||
ClusterDTO getPercentageClusterForRelativeScore();
|
||||
|
||||
@Statistic(messageKey="DistanceAtStart", resultDecimals=2, ordinal=0)
|
||||
public Distance getDistanceToStartLineAtStart();
|
||||
Distance getDistanceToStartLineAtStart();
|
||||
|
||||
@Statistic(messageKey="DistanceToStarboardSideAtStartOfCompetitor", resultDecimals=2, ordinal=1)
|
||||
public Double getNormalizedDistanceToStarboardSideAtStartOfCompetitor();
|
||||
Double getNormalizedDistanceToStarboardSideAtStartOfCompetitor();
|
||||
|
||||
@Statistic(messageKey="DistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark", resultDecimals=2, ordinal=1)
|
||||
public Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark();
|
||||
Pair<Double, Double> getNormalizedDistanceToStarboardSideAtStartOfCompetitorVsRankAtFirstMark();
|
||||
|
||||
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineAtStartOfRace", resultDecimals=2, ordinal=2)
|
||||
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofRace();
|
||||
Distance getWindwardDistanceToAdvantageousLineEndAtStartofRace();
|
||||
|
||||
@Statistic(messageKey="WindwardDistanceToAdvantageousEndOfLineAtStartOfCompetitor", resultDecimals=2, ordinal=2)
|
||||
public Distance getWindwardDistanceToAdvantageousLineEndAtStartofCompetitor();
|
||||
Distance getWindwardDistanceToAdvantageousLineEndAtStartofCompetitor();
|
||||
|
||||
@Connector(messageKey="SpeedWhenStarting", ordinal=3)
|
||||
public Speed getSpeedWhenStarting();
|
||||
Speed getSpeedWhenStarting();
|
||||
|
||||
@Connector(messageKey="SpeedTenSecondsBeforeStart", ordinal=4)
|
||||
public Speed getSpeedTenSecondsBeforeStart();
|
||||
Speed getSpeedTenSecondsBeforeStart();
|
||||
|
||||
@Connector(messageKey="SpeedTenSecondsAfterStart", ordinal=5)
|
||||
public Speed getSpeedTenSecondsAfterStartOfRace();
|
||||
Speed getSpeedTenSecondsAfterStartOfRace();
|
||||
|
||||
@Statistic(messageKey="RankThirtySecondsAfterStart", resultDecimals=2, ordinal=6)
|
||||
public Double getRankThirtySecondsAfterStartOfRace();
|
||||
Double getRankThirtySecondsAfterStartOfRace();
|
||||
|
||||
@Statistic(messageKey="RankAfterHalfOfTheFirstLeg", resultDecimals=2, ordinal=7)
|
||||
public Double getRankAfterHalfOfTheFirstLeg();
|
||||
Double getRankAfterHalfOfTheFirstLeg();
|
||||
|
||||
@Statistic(messageKey="RankAtFirstMark", resultDecimals=2, ordinal=8)
|
||||
public Double getRankAtFirstMark();
|
||||
Double getRankAtFirstMark();
|
||||
|
||||
@Statistic(messageKey="RankGainsOrLossesBetweenFirstMarkAndFinish", resultDecimals=2, ordinal=9)
|
||||
public Double getRankGainsOrLossesBetweenFirstMarkAndFinish();
|
||||
Double getRankGainsOrLossesBetweenFirstMarkAndFinish();
|
||||
|
||||
@Statistic(messageKey="NumberOfManeuvers", resultDecimals=0, ordinal=10)
|
||||
public int getNumberOfManeuvers();
|
||||
int getNumberOfManeuvers();
|
||||
|
||||
@Statistic(messageKey="NumberOfTacks", resultDecimals=0, ordinal=11)
|
||||
public int getNumberOfTacks();
|
||||
int getNumberOfTacks();
|
||||
|
||||
@Statistic(messageKey="NumberOfJibes", resultDecimals=0, ordinal=12)
|
||||
public int getNumberOfJibes();
|
||||
int getNumberOfJibes();
|
||||
|
||||
@Statistic(messageKey="NumberOfPenaltyCircles", resultDecimals=0, ordinal=13)
|
||||
public int getNumberOfPenaltyCircles();
|
||||
int getNumberOfPenaltyCircles();
|
||||
|
||||
@Statistic(messageKey="DistanceTraveled", resultDecimals=1)
|
||||
public Distance getDistanceTraveled();
|
||||
Distance getDistanceTraveled();
|
||||
|
||||
@Statistic(messageKey="LineLengthAtStart", resultDecimals=1)
|
||||
public Distance getLineLengthAtStart();
|
||||
Distance getLineLengthAtStart();
|
||||
|
||||
@Statistic(messageKey="AbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor", resultDecimals=2)
|
||||
Distance getAbsoluteWindwardDistanceToStarboardSideAtStartOfCompetitor();
|
||||
@@ -94,4 +95,8 @@ public interface HasRaceOfCompetitorContext {
|
||||
|
||||
@Statistic(messageKey="RelativeDistanceToAdvantageousEndOfLineAtStartOfRace", resultDecimals=2)
|
||||
Double getRelativeDistanceToAdvantageousEndOfLineAtStartOfRace();
|
||||
|
||||
@Statistic(messageKey="RaceDuration")
|
||||
Duration getDuration();
|
||||
|
||||
}
|
||||
+6
-2
@@ -8,6 +8,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.NauticalSide;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.datamining.annotations.Connector;
|
||||
import com.sap.sse.datamining.annotations.Dimension;
|
||||
import com.sap.sse.datamining.annotations.Statistic;
|
||||
@@ -46,10 +47,13 @@ public interface HasTrackedRaceContext {
|
||||
@Dimension(messageKey="IsTracked", ordinal=9)
|
||||
public Boolean isTracked();
|
||||
|
||||
@Statistic(messageKey="NumberOfCompetitorFixes", resultDecimals=0, ordinal=0)
|
||||
@Statistic(messageKey="RaceDuration", ordinal=0)
|
||||
public Duration getDuration();
|
||||
|
||||
@Statistic(messageKey="NumberOfCompetitorFixes", resultDecimals=0, ordinal=1)
|
||||
public int getNumberOfCompetitorFixes();
|
||||
|
||||
@Statistic(messageKey="NumberOfMarkFixes", resultDecimals=0, ordinal=1)
|
||||
@Statistic(messageKey="NumberOfMarkFixes", resultDecimals=0, ordinal=2)
|
||||
public int getNumberOfMarkFixes();
|
||||
|
||||
// Convenience methods for race dependent calculation to avoid code duplication
|
||||
|
||||
+16
@@ -29,10 +29,12 @@ import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindPositionMode;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.Speed;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.datamining.data.Cluster;
|
||||
import com.sap.sse.datamining.shared.impl.dto.ClusterDTO;
|
||||
@@ -357,4 +359,18 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
|
||||
return distance / length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Duration getDuration() {
|
||||
Duration duration = null;
|
||||
TrackedRace race = getTrackedRace();
|
||||
Course course = race.getRace().getCourse();
|
||||
MarkPassing startPassing = race.getMarkPassing(competitor, course.getFirstWaypoint());
|
||||
MarkPassing finishPassing = race.getMarkPassing(competitor, course.getLastWaypoint());
|
||||
if (startPassing != null && finishPassing != null) {
|
||||
long durationMillis = finishPassing.getTimePoint().asMillis() - startPassing.getTimePoint().asMillis();
|
||||
duration = new MillisecondsDurationImpl(durationMillis);
|
||||
}
|
||||
return duration;
|
||||
}
|
||||
|
||||
}
|
||||
+22
@@ -17,8 +17,10 @@ import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.GPSFixTrack;
|
||||
import com.sap.sailing.domain.tracking.LineDetails;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsDurationImpl;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class TrackedRaceWithContext implements HasTrackedRaceContext {
|
||||
@@ -113,6 +115,26 @@ public class TrackedRaceWithContext implements HasTrackedRaceContext {
|
||||
public Boolean isTracked() {
|
||||
return getTrackedRace().hasStarted(MillisecondsTimePoint.now());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Duration getDuration() {
|
||||
Duration duration = null;
|
||||
TrackedRace race = getTrackedRace();
|
||||
TimePoint start = race.getStartOfRace();
|
||||
if (start == null) {
|
||||
start = race.getStartOfTracking();
|
||||
}
|
||||
if (start != null) {
|
||||
TimePoint end = race.getEndOfRace();
|
||||
if (end == null) {
|
||||
end = race.getEndOfTracking();
|
||||
}
|
||||
if (end != null) {
|
||||
duration = new MillisecondsDurationImpl(end.asMillis() - start.asMillis());
|
||||
}
|
||||
}
|
||||
return duration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumberOfCompetitorFixes() {
|
||||
|
||||
+1
-1
@@ -531,7 +531,7 @@ public class SuggestBoxStatisticProvider extends AbstractDataMiningComponent<Com
|
||||
@Override
|
||||
public int compareTo(ExtractionFunctionWithContext o) {
|
||||
int comparedDisplayName = extractionFunction.getDisplayName()
|
||||
.compareTo(o.getExtractionFunction().getDisplayName());
|
||||
.compareToIgnoreCase(o.getExtractionFunction().getDisplayName());
|
||||
if (comparedDisplayName != 0)
|
||||
return comparedDisplayName;
|
||||
|
||||
|
||||
Reference in new issue
Block a user