bug5264: adding unit (knots) to speed Double value

This commit is contained in:
Axel Uhl committed 2020-04-30 15:01:46 +02:00
1 parent 50f68d4b68
commit 373c48c2c4
6 files changed
+45 -50

No files matched your search

@@ -180,9 +180,9 @@ public class CompetitorInfoOverlays implements QuickFlagDataListener {
}
@Override
public void speedChanged(CompetitorDTO competitorDTO, Double quickSpeed) {
public void speedInKnotsChanged(CompetitorDTO competitorDTO, Double quickSpeedInKnots) {
String competitorId = competitorDTO.getIdAsString();
lastPositions.put(competitorId, quickSpeed);
lastPositions.put(competitorId, quickSpeedInKnots);
final CompetitorInfoOverlay competitorInfoOverlay = competitorInfoOverlays.get(competitorId);
if (competitorInfoOverlay != null) {
competitorInfoOverlay.setInfoText(createInfoText(competitorDTO));
@@ -11,7 +11,7 @@ import com.sap.sse.common.Util;
public class DefaultQuickFlagDataProvider extends AbstractQuickFlagDataProvider {
private Map<String, QuickRankDTO> currentQuickRanksFromServer = Collections.emptyMap();
private Map<CompetitorDTO, Double> currentQuickSpeedsFromServer = Collections.emptyMap();
private Map<CompetitorDTO, Double> currentQuickSpeedsInKnotsFromServer = Collections.emptyMap();
@Override
public void quickRanksReceivedFromServer(Map<String, QuickRankDTO> receivedQuickRanksFromServer) {
@@ -31,21 +31,21 @@ public class DefaultQuickFlagDataProvider extends AbstractQuickFlagDataProvider
}
@Override
public void quickSpeedsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServer) {
final Map<CompetitorDTO, Double> oldQuickSpeedsFromServer = this.currentQuickSpeedsFromServer;
this.currentQuickSpeedsFromServer = Util.nullToEmptyMap(quickSpeedsFromServer);
for (final Entry<CompetitorDTO, Double> e : currentQuickSpeedsFromServer.entrySet()) {
final Double oldQuickSpeed = oldQuickSpeedsFromServer.get(e.getKey());
if (Util.equalsWithNull(oldQuickSpeed, e.getValue())) {
notifyListenersSpeedChanged(e.getKey(), e.getValue());
public void quickSpeedsInKnotsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServerInKnots) {
final Map<CompetitorDTO, Double> oldQuickSpeedsFromServerInKnots = this.currentQuickSpeedsInKnotsFromServer;
this.currentQuickSpeedsInKnotsFromServer = Util.nullToEmptyMap(quickSpeedsFromServerInKnots);
for (final Entry<CompetitorDTO, Double> e : currentQuickSpeedsInKnotsFromServer.entrySet()) {
final Double oldQuickSpeedInKnots = oldQuickSpeedsFromServerInKnots.get(e.getKey());
if (Util.equalsWithNull(oldQuickSpeedInKnots, e.getValue())) {
notifyListenersSpeedInKnotsChanged(e.getKey(), e.getValue());
}
}
}
@Override
public Map<CompetitorDTO, Double> getQuickSpeeds() {
return currentQuickSpeedsFromServer;
public Map<CompetitorDTO, Double> getQuickSpeedsInKnots() {
return currentQuickSpeedsInKnotsFromServer;
}
}
@@ -30,7 +30,7 @@ public interface QuickFlagDataProvider {
public interface QuickFlagDataListener {
void rankChanged(String competitorIdAsString, QuickRankDTO oldQuickRank, QuickRankDTO quickRanks);
void speedChanged(CompetitorDTO competitor, Double quickSpeed);
void speedInKnotsChanged(CompetitorDTO competitor, Double quickSpeedInKnots);
}
void addQuickFlagDataListener(QuickFlagDataListener listener);
@@ -63,10 +63,10 @@ public interface QuickFlagDataProvider {
* {@link LeaderboardDTO leaderboard} should ignore this call if it already has quick ranks information available
* from a leaderboard.
*
* @param quickSpeedsFromServer
* keys are the competitors, values are current speeds of competitors
* @param quickSpeedsFromServerInKnots
* keys are the competitors, values are current speeds of competitors provided in knots (nautical miles per hour)
*/
void quickSpeedsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServer);
void quickSpeedsInKnotsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServerInKnots);
/**
* @return keys are the {@link CompetitorWithBoatDTO#getIdAsString() competitor IDs are string}, values are the
@@ -77,5 +77,5 @@ public interface QuickFlagDataProvider {
/**
* @return keys are the {@link CompetitorWithBoatDTO}, values are the quick speeds pertaining to the competitors
*/
Map<CompetitorDTO, Double> getQuickSpeeds();
Map<CompetitorDTO, Double> getQuickSpeedsInKnots();
}
@@ -546,7 +546,7 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
}
@Override
public void speedChanged(CompetitorDTO competitor, Double quickSpeed) {
public void speedInKnotsChanged(CompetitorDTO competitor, Double quickSpeedInKnots) {
// empty body
}
}
@@ -579,11 +579,11 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
SailingServiceAsync sailingService, AsyncActionsExecutor asyncActionsExecutor,
ErrorReporter errorReporter, Timer timer, RaceCompetitorSelectionProvider competitorSelection, RaceCompetitorSet raceCompetitorSet,
StringMessages stringMessages, RegattaAndRaceIdentifier raceIdentifier, RaceMapResources raceMapResources, boolean showHeaderPanel,
QuickFlagDataProvider quickRanksDTOProvider, Consumer<WindSource> showWindChartForProvider, String leaderboardName, String leaderboardGroupName) {
QuickFlagDataProvider quickFlagDataProvider, Consumer<WindSource> showWindChartForProvider, String leaderboardName, String leaderboardGroupName) {
super(parent, context);
this.maneuverMarkersAndLossIndicators = new ManeuverMarkersAndLossIndicators(this, sailingService, errorReporter, stringMessages);
this.showHeaderPanel = showHeaderPanel;
this.quickFlagDataProvider = quickRanksDTOProvider;
this.quickFlagDataProvider = quickFlagDataProvider;
this.raceMapLifecycle = raceMapLifecycle;
this.stringMessages = stringMessages;
this.sailingService = sailingService;
@@ -603,8 +603,8 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
infoOverlaysForLinesForCourseGeometry = new HashMap<>();
boatOverlays = new HashMap<>();
competitorInfoOverlays = new CompetitorInfoOverlays(this, stringMessages);
quickRanksDTOProvider.addQuickFlagDataListener(competitorInfoOverlays);
quickRanksDTOProvider.addQuickFlagDataListener(new AdvantageLineUpdater());
quickFlagDataProvider.addQuickFlagDataListener(competitorInfoOverlays);
quickFlagDataProvider.addQuickFlagDataListener(new AdvantageLineUpdater());
windSensorOverlays = new HashMap<WindSource, WindSensorOverlay>();
courseMarkOverlays = new HashMap<String, CourseMarkOverlay>();
courseMarkClickHandlers = new HashMap<String, HandlerRegistration>();
@@ -1297,8 +1297,8 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
simulationOverlay.updateLeg(Math.max(lastLegNumber, 1), /* clearCanvas */ false, raceMapDataDTO.simulationResultVersion);
}
Map<CompetitorDTO, List<GPSFixDTOWithSpeedWindTackAndLegType>> boatData = raceMapDataDTO.boatPositions;
Map<CompetitorDTO, Double> quickSpeedsFromServer = getCompetitorsSpeedMap(boatData);
quickFlagDataProvider.quickSpeedsReceivedFromServer(quickSpeedsFromServer);
Map<CompetitorDTO, Double> quickSpeedsFromServerInKnots = getCompetitorsSpeedInKnotsMap(boatData);
quickFlagDataProvider.quickSpeedsInKnotsReceivedFromServer(quickSpeedsFromServerInKnots);
// Do boat specific actions
updateBoatPositions(newTime, transitionTimeInMillis, hasTailOverlapForCompetitor,
competitorsToShow, boatData, /* updateTailsOnly */ false, detailTypeChanged);
@@ -1351,20 +1351,20 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
}
}
private Map<CompetitorDTO, Double> getCompetitorsSpeedMap(
private Map<CompetitorDTO, Double> getCompetitorsSpeedInKnotsMap(
Map<CompetitorDTO, List<GPSFixDTOWithSpeedWindTackAndLegType>> boatData) {
Map<CompetitorDTO, Double> quickSpeedsFromServer = new HashMap<>();
Map<CompetitorDTO, Double> quickSpeedsFromServerInKnots = new HashMap<>();
for (CompetitorDTO competitor : boatData.keySet()) {
List<GPSFixDTOWithSpeedWindTackAndLegType> fixesList = boatData.get(competitor);
if (!fixesList.isEmpty()) {
SpeedWithBearingDTO speedWithBearing = fixesList.get(fixesList.size() - 1).speedWithBearing;
if (speedWithBearing != null) {
Double speed = speedWithBearing.speedInKnots;
quickSpeedsFromServer.put(competitor, speed);
Double speedInKnots = speedWithBearing.speedInKnots;
quickSpeedsFromServerInKnots.put(competitor, speedInKnots);
}
}
}
return quickSpeedsFromServer;
return quickSpeedsFromServerInKnots;
}
});
}
@@ -3224,12 +3224,7 @@ public class RaceMap extends AbstractCompositeComponent<RaceMapSettings> impleme
@Override
public Double getSpeed(CompetitorDTO competitor) {
Double result = null;
Double quickSpeed = quickFlagDataProvider.getQuickSpeeds().get(competitor);
if (quickSpeed != null) {
result = quickSpeed;
}
return result;
return quickFlagDataProvider.getQuickSpeedsInKnots().get(competitor);
}
private Image createSAPLogo() {
@@ -38,9 +38,9 @@ public abstract class AbstractQuickFlagDataProvider implements QuickFlagDataProv
}
}
protected void notifyListenersSpeedChanged(CompetitorDTO competitor, Double newSpeed) {
protected void notifyListenersSpeedInKnotsChanged(CompetitorDTO competitor, Double newSpeedInKnots) {
for (QuickFlagDataListener listener : listeners) {
listener.speedChanged(competitor, newSpeed);
listener.speedInKnotsChanged(competitor, newSpeedInKnots);
}
}
}
@@ -36,7 +36,7 @@ import com.sap.sse.common.Util;
*/
public class QuickFlagDataFromLeaderboardDTOProvider extends AbstractQuickFlagDataProvider {
private final Map<String, QuickRankDTO> quickRanks = new LinkedHashMap<>();
private final Map<CompetitorDTO, Double> quickSpeeds = new LinkedHashMap<>();
private final Map<CompetitorDTO, Double> quickSpeedsInKnots = new LinkedHashMap<>();
private final RaceCompetitorSet raceCompetitorSet;
private final RaceIdentifier selectedRace;
private boolean lastLeaderboardProvidedLegNumbers;
@@ -153,8 +153,8 @@ public class QuickFlagDataFromLeaderboardDTOProvider extends AbstractQuickFlagDa
}
}
if (speed != null) {
quickSpeeds.put(competitor, speed);
notifyListenersSpeedChanged(competitor, speed);
quickSpeedsInKnots.put(competitor, speed);
notifyListenersSpeedInKnotsChanged(competitor, speed);
}
}
}
@@ -169,17 +169,17 @@ public class QuickFlagDataFromLeaderboardDTOProvider extends AbstractQuickFlagDa
}
@Override
public void quickSpeedsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServer) {
if (quickSpeeds.isEmpty() || leaderboardNotCurrentlyUpdating) {
for (final Entry<CompetitorDTO, Double> e : quickSpeedsFromServer.entrySet()) {
quickSpeeds.put(e.getKey(), e.getValue());
notifyListenersSpeedChanged(e.getKey(), e.getValue());
public void quickSpeedsInKnotsReceivedFromServer(Map<CompetitorDTO, Double> quickSpeedsFromServerInKnots) {
if (quickSpeedsInKnots.isEmpty() || leaderboardNotCurrentlyUpdating) {
for (final Entry<CompetitorDTO, Double> e : quickSpeedsFromServerInKnots.entrySet()) {
quickSpeedsInKnots.put(e.getKey(), e.getValue());
notifyListenersSpeedInKnotsChanged(e.getKey(), e.getValue());
}
} else {
for (final Entry<CompetitorDTO, Double> e : quickSpeeds.entrySet()) {
final Double speed = quickSpeedsFromServer.get(e.getKey());
for (final Entry<CompetitorDTO, Double> e : quickSpeedsInKnots.entrySet()) {
final Double speed = quickSpeedsFromServerInKnots.get(e.getKey());
if (speed != null) {
quickSpeeds.put(e.getKey(), speed);
quickSpeedsInKnots.put(e.getKey(), speed);
}
}
}
@@ -187,8 +187,8 @@ public class QuickFlagDataFromLeaderboardDTOProvider extends AbstractQuickFlagDa
}
@Override
public Map<CompetitorDTO, Double> getQuickSpeeds() {
return quickSpeeds;
public Map<CompetitorDTO, Double> getQuickSpeedsInKnots() {
return quickSpeedsInKnots;
}
private String getRaceColumnName(LeaderboardDTO leaderboard, RaceIdentifier selectedRace) {