From 4e1d0bcbd7ad26eaefbb0148845d828a3fd6db01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bro=C3=9F?= Date: Sat, 28 Nov 2015 11:48:37 +0100 Subject: [PATCH] Refrain from direct usage of RegisteredCompetitorsAnalyzer in CompeitorProvider --- ...ProviderFromRaceColumnsAndRegattaLike.java | 35 +++++-------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java index d18d417b55a..a0368b356a1 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/CompetitorProviderFromRaceColumnsAndRegattaLike.java @@ -12,13 +12,11 @@ import com.sap.sailing.domain.abstractlog.race.RaceLogRevokeEvent; import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogUseCompetitorsFromRaceLogEvent; -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.RegattaLogRegisterCompetitorEvent; import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogRevokeEvent; import com.sap.sailing.domain.abstractlog.regatta.impl.BaseRegattaLogEventVisitor; -import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsInLogAnalyzer; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.Fleet; import com.sap.sailing.domain.base.RaceColumn; @@ -159,10 +157,11 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { rc.getRaceLog(fleet).addListener(raceLogCompetitorsCacheInvalidationListener); } } + // note: adding listeners is idempotent; at most one occurrence of this listener exists in the race/regatta log's + // listeners set provider.addRaceColumnListener(raceColumnListener); - // consider {@link RegattaLog} - Set viaLog = getCompetitorsFromRegattaLogAndRegisterAsRegattaLogListener(); - result.addAll(viaLog); + // consider {@link RegattaLog} competitor changes + provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); allCompetitorsCache = result; } return allCompetitorsCache; @@ -178,38 +177,20 @@ public class CompetitorProviderFromRaceColumnsAndRegattaLike { Iterable result = allCompetitorsCacheByRace.get(key); if (result == null) { final Set resultSet = new HashSet<>(); + //raceColumn already considers trackedRace, RaceLog and RegattaLog Util.addAll(raceColumn.getAllCompetitors(fleet), resultSet); - // note: adding listeners is idempotent; at most one occurrence of this listener exists in the race log's + // note: adding listeners is idempotent; at most one occurrence of this listener exists in the race/regatta log's // listeners set raceColumn.getRaceLog(fleet).addListener(raceLogCompetitorsCacheInvalidationListener); provider.addRaceColumnListener(raceColumnListener); - // consider {@link RegattaLog} - Set viaLog = getCompetitorsForRaceAndRegisterAsRegattaLogListener(raceColumn - .getRaceLog(fleet)); - resultSet.addAll(viaLog); + // consider {@link RegattaLog} competitor changes + provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); result = resultSet; allCompetitorsCacheByRace.put(key, result); } return result; } - private Set getCompetitorsForRaceAndRegisterAsRegattaLogListener(RaceLog racelog) { - Set viaLog = new RegisteredCompetitorsAnalyzer(racelog, provider.getRegattaLike().getRegattaLog()) - .analyze(); - // note: adding listeners is idempotent; at most one occurrence of this listener exists in the regatta log's - // listeners set - provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); - return viaLog; - } - - private Set getCompetitorsFromRegattaLogAndRegisterAsRegattaLogListener() { - Set viaLog = new CompetitorsInLogAnalyzer<>(provider.getRegattaLike().getRegattaLog()).analyze(); - // note: adding listeners is idempotent; at most one occurrence of this listener exists in the regatta log's - // listeners set - provider.getRegattaLike().getRegattaLog().addListener(regattaLogCompetitorsCacheInvalidationListener); - return viaLog; - } - private void invalidateAllCompetitorsCaches() { allCompetitorsCache = null; // note: adding listeners was idempotent; at most one occurrence of this listener exists in the regatta log's