diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index fcf1931cdf4..2741475ccfc 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -273,4 +273,5 @@ SmoothedSpeed=Smoothed Speed RatioDistanceLongVsShortTack=Ratio distance long tack / short tack RatioDurationLongVsShortTack=Ratio duration long tack / short tack Discarded=Discarded -DurationFromRaceStartToFirstTack=Duration from race start to first tack \ No newline at end of file +DurationFromRaceStartToFirstTack=Duration from race start to first tack +TypeOfFirstLeg=Type of first leg \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index f7e381a7515..79aa61c04df 100755 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -271,4 +271,5 @@ SmoothedSpeed=Geglättete Geschwindigkeit RatioDistanceLongVsShortTack=Verhältnis gesegelte Distanz auf Streck- zu Holebug RatioDurationLongVsShortTack=Verhältnis gesegelte Dauer auf Streck- zu Holebug Discarded=Gestrichen -DurationFromRaceStartToFirstTack=Dauer vom Start der Wettfahrt bis zur ersten Wende \ No newline at end of file +DurationFromRaceStartToFirstTack=Dauer vom Start der Wettfahrt bis zur ersten Wende +TypeOfFirstLeg=Art des ersten Bahnschenkels \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java index 4b407dd1bbb..6fb0868a46f 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java @@ -6,7 +6,9 @@ import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; +import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NauticalSide; +import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sse.common.Bearing; import com.sap.sse.common.Distance; @@ -87,6 +89,9 @@ public interface HasTrackedRaceContext { @Dimension(messageKey="Day") public String getDayAsISO(); + + @Dimension(messageKey="TypeOfFirstLeg") + public LegType getTypeOfFirstLeg() throws NoWindException; // Convenience methods for race dependent calculation to avoid code duplication public Double getRelativeScoreForCompetitor(Competitor competitor); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java index ca8e35039ca..91fc212e665 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.List; import java.util.TimeZone; import java.util.concurrent.TimeUnit; import java.util.function.BiFunction; @@ -19,18 +20,23 @@ import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState; import com.sap.sailing.domain.abstractlog.race.state.impl.ReadonlyRaceStateImpl; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.CourseArea; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; +import com.sap.sailing.domain.base.Leg; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceDefinition; import com.sap.sailing.domain.base.Regatta; +import com.sap.sailing.domain.common.LegType; import com.sap.sailing.domain.common.NauticalSide; +import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.Track; +import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.geocoding.ReverseGeocoder; import com.sap.sse.common.Bearing; @@ -473,4 +479,29 @@ public class TrackedRaceWithContext implements HasTrackedRaceContext { } return cachedDayAsISO; } + + @Override + public LegType getTypeOfFirstLeg() throws NoWindException { + final LegType result; + final TimePoint startOfRace = getTrackedRace().getStartOfRace(); + if (startOfRace == null) { + result = null; + } else { + final Course course = getTrackedRace().getRace().getCourse(); + final List legs = course.getLegs(); + if (legs.isEmpty()) { + result = null; + } else { + final TrackedLeg firstTrackedLeg = getTrackedRace().getTrackedLeg(legs.get(0)); + if (firstTrackedLeg == null) { + result = null; + } else { + result = firstTrackedLeg.getLegType(startOfRace); + } + } + } + return result; + } + + } \ No newline at end of file