diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java index f505eab155d..5d824010587 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java @@ -21,7 +21,6 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogEndOfTrackingEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RaceLogStartOfTrackingEvent; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.LastPublishedCourseDesignFinder; -import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogRegisteredCompetitorsAnalyzer; import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver; import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent; @@ -29,7 +28,6 @@ import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDeviceCompetitorM import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogStartTrackingEvent; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceInformationFinder; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; -import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RegisteredCompetitorsAnalyzer; import com.sap.sailing.domain.abstractlog.regatta.RegattaLog; import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDefineMarkEvent; @@ -60,7 +58,6 @@ import com.sap.sailing.domain.common.PassingInstruction; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.abstractlog.NotRevokableException; -import com.sap.sailing.domain.common.racelog.tracking.DoesNotHaveRegattaLogException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; import com.sap.sailing.domain.common.racelog.tracking.RaceNotCreatedException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; @@ -474,19 +471,7 @@ public class RaceLogRaceTracker implements RaceTracker, GPSFixReceivedListener { } throw new RaceNotCreatedException(String.format("Race for racelog (%s) has already been created", raceLog)); } - // check both the racelog and regattalog for registered competitors - - Set competitors; - try { - RegattaLog regattaLog = params.getRegattaLog(); - competitors = new RegisteredCompetitorsAnalyzer(raceLog, regattaLog).analyze(); - } catch (DoesNotHaveRegattaLogException e) { - logger.warning(params.getLeaderboard().getName()+" doesn't have an attached RegattaLog"); - competitors = new RaceLogRegisteredCompetitorsAnalyzer(raceLog).analyze(); - } - - - + Iterable competitors = raceColumn.getAllCompetitors(params.getFleet()); Serializable raceId = denoteEvent.getRaceId(); final RaceDefinition raceDef = new RaceDefinitionImpl(raceName, course, boatClass, competitors, raceId); Iterable sidelines = Collections. emptyList(); diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RegisteredCompetitorsAnalyzer.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RegisteredCompetitorsAnalyzer.java index 1cf2b5e22c4..f710c2736b5 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RegisteredCompetitorsAnalyzer.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/analyzing/impl/RegisteredCompetitorsAnalyzer.java @@ -12,6 +12,9 @@ import com.sap.sailing.domain.base.Competitor; * Used to find competitors of a race. Checks whether the competitors for the given race are registered on the RaceLog * via {@link RaceLogUsesOwnCompetitorsAnalyzer} or on the RegattaLog and fetches the competitors appropriately. * + * Should not be used. Instead get the competitor set from the RaceColumn, which automatically checks wether a + * tracked race is present, which has precedence over the Race/RegattaLog + * * @author D056848 * */ diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 5d8dcaaa76b..340ef2fa9a8 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -56,6 +56,7 @@ import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; +import com.google.gwt.thirdparty.guava.common.collect.Iterables; import com.sap.sailing.domain.abstractlog.AbstractLog; import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.MultiLogAnalyzer; @@ -2389,12 +2390,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S RaceLogTrackingState raceLogTrackingState = raceLog == null ? RaceLogTrackingState.NOT_A_RACELOG_TRACKED_RACE : new RaceLogTrackingStateAnalyzer(raceLog).analyze(); boolean raceLogTrackerExists = raceLog == null ? false : getService().getRaceTrackerById(raceLog.getId()) != null; + boolean competitorRegistrationsExist; - try { - competitorRegistrationsExist = raceLog == null ? false : ! new RegisteredCompetitorsAnalyzer(raceLog, getRegattaLogInternal(leaderboard.getName())).analyze().isEmpty(); - } catch (DoesNotHaveRegattaLogException e) { - competitorRegistrationsExist = false; - } + competitorRegistrationsExist = raceLog == null ? false : Iterables.size(raceColumn.getAllCompetitors(fleet)) > 0 ; + RaceLogTrackingInfoDTO raceLogTrackingInfo = new RaceLogTrackingInfoDTO(raceLogTrackerExists, competitorRegistrationsExist, raceLogTrackingState); raceColumnDTO.setRaceLogTrackingInfo(fleetDTO, raceLogTrackingInfo); @@ -5874,9 +5873,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public Collection getCompetitorRegistrationsForRace(String leaderboardName, String raceColumnName, String fleetName) throws DoesNotHaveRegattaLogException { - RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); - RegattaLog regattaLog = getRegattaLogInternal(leaderboardName); - return convertToCompetitorDTOs(new RegisteredCompetitorsAnalyzer(raceLog, regattaLog).analyze()); + Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); + RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName); + Fleet fleet = raceColumn.getFleetByName(fleetName); + return convertToCompetitorDTOs(raceColumn.getAllCompetitors(fleet)); } @Override