From 587d950ff75a372c2f644d31f93c6163d4dbda3f Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 23 Mar 2021 10:41:03 +0100 Subject: [PATCH] bug5504: i18n support for NauticalSide, specifically for reporting line biases in RaceMap --- .../resources/SailingAnalyticsNotes.html | 5 +++++ .../gwt/ui/client/ManeuverTypeFormatter.java | 1 - .../gwt/ui/client/NauticalSideFormatter.java | 20 +++++++++++++++++++ .../ManeuverMarkersAndLossIndicators.java | 5 ++--- .../gwt/ui/client/shared/racemap/RaceMap.java | 6 ++++-- ...ToWhichMarkAtLegStartWasRoundedColumn.java | 3 ++- .../sailing/gwt/ui/shared/ManeuverDTO.java | 4 ++-- 7 files changed, 35 insertions(+), 9 deletions(-) create mode 100755 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/NauticalSideFormatter.java diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html index 0aef16d11f6..947250f22de 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/whatsnew/resources/SailingAnalyticsNotes.html @@ -4,6 +4,11 @@

What's New - SAP Sailing Analytics

+
March 2021
+
    +
  • Bug fix: show course middle line of first leg only if display of course middle lines is selected in settings.
  • +
  • Start/finish line biases are now correctly translated into the selected locale's display language.
  • +
February 2021
  • The solution now supports the new Olympic penalty code (IRM) "NSC" ("Did not sail the course").
  • diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ManeuverTypeFormatter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ManeuverTypeFormatter.java index 240e60b0e68..423e1aea55a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ManeuverTypeFormatter.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/ManeuverTypeFormatter.java @@ -19,6 +19,5 @@ public class ManeuverTypeFormatter { return stringMessages.unknownManeuver(); } return null; - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/NauticalSideFormatter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/NauticalSideFormatter.java new file mode 100755 index 00000000000..0523ffe890d --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/NauticalSideFormatter.java @@ -0,0 +1,20 @@ +package com.sap.sailing.gwt.ui.client; + +import com.sap.sailing.domain.common.NauticalSide; + +public class NauticalSideFormatter { + public static String format(NauticalSide nauticalSide, StringMessages stringMessages) { + final String result; + switch (nauticalSide) { + case PORT: + result = stringMessages.portSide(); + break; + case STARBOARD: + result = stringMessages.starboardSide(); + break; + default: + result = null; + } + return result; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java index 913969b2e86..7edc1483843 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/ManeuverMarkersAndLossIndicators.java @@ -26,12 +26,12 @@ import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; import com.sap.sailing.domain.common.ManeuverType; -import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.maneuverdetection.impl.ManeuverDetectorImpl; import com.sap.sailing.gwt.ui.client.ManeuverTypeFormatter; +import com.sap.sailing.gwt.ui.client.NauticalSideFormatter; import com.sap.sailing.gwt.ui.client.NumberFormatterFactory; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; @@ -394,8 +394,7 @@ public class ManeuverMarkersAndLossIndicators { raceMap.createInfoWindowLabelAndValue(stringMessages.markPassing(), DateTimeFormat.getFormat(PredefinedFormat.TIME_FULL).format(maneuver.getMarkPassingTimePoint()) + (maneuver.getMarkPassingSide() == null ? "" - : " (" + (maneuver.getMarkPassingSide() == NauticalSide.PORT - ? stringMessages.portSide() : stringMessages.starboardSide()) + : " (" + NauticalSideFormatter.format(maneuver.getMarkPassingSide(), stringMessages) + ")"))); } return vPanel; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java index 8c2c1f9f5d5..022eabf1a95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMap.java @@ -15,6 +15,7 @@ import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.function.Consumer; + import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; @@ -97,6 +98,7 @@ import com.sap.sailing.gwt.ui.client.CompetitorSelectionChangeListener; import com.sap.sailing.gwt.ui.client.CompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.DetailTypeComparator; import com.sap.sailing.gwt.ui.client.DetailTypeFormatter; +import com.sap.sailing.gwt.ui.client.NauticalSideFormatter; import com.sap.sailing.gwt.ui.client.NumberFormatterFactory; import com.sap.sailing.gwt.ui.client.RaceCompetitorSelectionProvider; import com.sap.sailing.gwt.ui.client.RaceTimesInfoProviderListener; @@ -1970,7 +1972,7 @@ public class RaceMap extends AbstractCompositeComponent impleme startLineAdvantageText.replace(0, startLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage( numberFormatOneDecimal.format(courseDTO.startLineLengthInMeters), numberFormatOneDecimal.format(Math.abs(courseDTO.startLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)), - courseDTO.startLineAdvantageousSide.name().charAt(0)+courseDTO.startLineAdvantageousSide.name().substring(1).toLowerCase(), + NauticalSideFormatter.format(courseDTO.startLineAdvantageousSide, stringMessages), numberFormatOneDecimal.format(courseDTO.startLineAdvantageInMeters))); } else { startLineAdvantageText.delete(0, startLineAdvantageText.length()); @@ -2004,7 +2006,7 @@ public class RaceMap extends AbstractCompositeComponent impleme finishLineAdvantageText.replace(0, finishLineAdvantageText.length(), " "+stringMessages.lineAngleToWindAndAdvantage( numberFormatOneDecimal.format(courseDTO.finishLineLengthInMeters), numberFormatOneDecimal.format(Math.abs(courseDTO.finishLineAngleFromPortToStarboardWhenApproachingLineToCombinedWind)), - courseDTO.finishLineAdvantageousSide.name().charAt(0)+courseDTO.finishLineAdvantageousSide.name().substring(1).toLowerCase(), + NauticalSideFormatter.format(courseDTO.finishLineAdvantageousSide, stringMessages), numberFormatOneDecimal.format(courseDTO.finishLineAdvantageInMeters))); } else { finishLineAdvantageText.delete(0, finishLineAdvantageText.length()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SideToWhichMarkAtLegStartWasRoundedColumn.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SideToWhichMarkAtLegStartWasRoundedColumn.java index 12bb6c6438c..c8f01f81764 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SideToWhichMarkAtLegStartWasRoundedColumn.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/SideToWhichMarkAtLegStartWasRoundedColumn.java @@ -4,6 +4,7 @@ import com.google.gwt.cell.client.TextCell; import com.sap.sailing.domain.common.DetailType; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; +import com.sap.sailing.gwt.ui.client.NauticalSideFormatter; import com.sap.sailing.gwt.ui.client.StringMessages; public class SideToWhichMarkAtLegStartWasRoundedColumn extends DetailTypeColumn { @@ -18,6 +19,6 @@ public class SideToWhichMarkAtLegStartWasRoundedColumn extends DetailTypeColumn< @Override public String getValue(LeaderboardRowDTO row) { - return getField().get(row) == null ? null : getField().get(row) == NauticalSide.PORT ? stringMessages.portSide() : stringMessages.starboardSide(); + return getField().get(row) == null ? null : NauticalSideFormatter.format(getField().get(row), stringMessages); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ManeuverDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ManeuverDTO.java index 85a3c1daa46..a71ab08a2ae 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ManeuverDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/ManeuverDTO.java @@ -10,6 +10,7 @@ import com.sap.sailing.domain.common.ManeuverType; import com.sap.sailing.domain.common.NauticalSide; import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.Tack; +import com.sap.sailing.gwt.ui.client.NauticalSideFormatter; import com.sap.sailing.gwt.ui.client.StringMessages; public class ManeuverDTO implements IsSerializable { @@ -96,8 +97,7 @@ public class ManeuverDTO implements IsSerializable { String markPassing = getMarkPassingTimePoint() == null ? "" : "; " + stringMessages.markPassedToAt( this.getMarkPassingSide() == null ? "" - : this.getMarkPassingSide() == NauticalSide.PORT ? stringMessages.portSide() - : stringMessages.starboardSide(), + : NauticalSideFormatter.format(this.getMarkPassingSide(), stringMessages), DateTimeFormat.getFormat(PredefinedFormat.TIME_FULL).format(this.getMarkPassingTimePoint())); String maneuverTitle = timeAndManeuver + timePointBefore + "; " + directionChange + "; " + speedChange + "; " + maxTurningRate + "; " + avgTurningRate + "; " + lowestSpeed + maneuverLoss + markPassing;