From 6bdb973ff9da925cfd640f4b71dea1a524232afe Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 25 May 2019 12:12:28 +0200 Subject: [PATCH] bug5053: obtain boat from CompetitorWithBoat or race log if possible Change-Id: Ib2992ac2aaa417556970c0c9378039111963d7d2 --- .../impl/AbstractLeaderboardWithCache.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardWithCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardWithCache.java index 3f9d47db486..db9d59f35a4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardWithCache.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractLeaderboardWithCache.java @@ -27,8 +27,10 @@ import java.util.logging.Logger; import com.sap.sailing.domain.abstractlog.race.InvalidatesLeaderboardCache; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; +import com.sap.sailing.domain.base.Boat; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.CompetitorWithBoat; import com.sap.sailing.domain.base.Course; import com.sap.sailing.domain.base.DomainFactory; import com.sap.sailing.domain.base.Fleet; @@ -585,8 +587,24 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard { LeaderboardEntryDTO entryDTO = new LeaderboardEntryDTO(); TrackedRace trackedRace = raceColumn.getTrackedRace(competitor); entryDTO.race = trackedRace == null ? null : trackedRace.getRaceIdentifier(); - // TODO bug2822: Should this rather come from raceColumn.getBoatOfCompetitor() ? - entryDTO.boat = trackedRace == null ? null : baseDomainFactory.convertToBoatDTO(trackedRace.getBoatOfCompetitor(competitor)); + Boat boat; + if (trackedRace != null) { + boat = trackedRace.getBoatOfCompetitor(competitor); + } else { + // check if it's a CompetitorWithBoat: + if (competitor.hasBoat()) { + boat = ((CompetitorWithBoat) competitor).getBoat(); + } else { + final Fleet fleetOfCompetitor = raceColumn.getFleetOfCompetitor(competitor); + if (fleetOfCompetitor != null) { + final Map competitorsAndTheirBoats = raceColumn.getCompetitorsRegisteredInRacelog(fleetOfCompetitor); + boat = competitorsAndTheirBoats.get(competitor); + } else { + boat = null; + } + } + } + entryDTO.boat = boat == null ? null : baseDomainFactory.convertToBoatDTO(boat); entryDTO.totalPoints = entry.getTotalPoints(); if (fillTotalPointsUncorrected) { entryDTO.totalPointsUncorrected = entry.getTotalPointsUncorrected();