diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LeaderboardDTOCache.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java
similarity index 97%
rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LeaderboardDTOCache.java
rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java
index 3a9cab6af7f..161bbb9ad92 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LeaderboardDTOCache.java
+++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LeaderboardDTOCache.java
@@ -1,4 +1,4 @@
-package com.sap.sailing.gwt.ui.server;
+package com.sap.sailing.domain.leaderboard.caching;
import java.util.Collection;
import java.util.Date;
@@ -26,7 +26,6 @@ import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardCacheManager;
import com.sap.sailing.domain.leaderboard.ScoreCorrection;
import com.sap.sailing.domain.leaderboard.ScoreCorrectionListener;
-import com.sap.sailing.domain.leaderboard.caching.LeaderboardCache;
import com.sap.sailing.domain.tracking.RaceChangeListener;
import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
import com.sap.sailing.util.impl.LockUtil;
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LiveLeaderboardUpdater.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java
similarity index 94%
rename from java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LiveLeaderboardUpdater.java
rename to java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java
index 4bc978d01a1..2e87f4c340f 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/LiveLeaderboardUpdater.java
+++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/caching/LiveLeaderboardUpdater.java
@@ -1,4 +1,4 @@
-package com.sap.sailing.gwt.ui.server;
+package com.sap.sailing.domain.leaderboard.caching;
import java.util.Collection;
import java.util.HashMap;
@@ -8,11 +8,13 @@ import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
+import com.sap.sailing.domain.base.DomainFactory;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.leaderboard.Leaderboard;
+import com.sap.sailing.domain.tracking.TrackedRegattaRegistry;
/**
* Computing a leaderboard live, particularly when the fleet tracked is large, requires considerable resources.
@@ -54,8 +56,6 @@ public class LiveLeaderboardUpdater implements Runnable {
private final Leaderboard leaderboard;
- private final SailingServiceImpl sailingService;
-
/**
* Live leaderboard results containing column details for all column names in
* {@link #columnNamesForWhichCurrentLiveLeaderboardHasTheDetails}. May be null if
@@ -100,10 +100,15 @@ public class LiveLeaderboardUpdater implements Runnable {
* takes longer than {@link #UPDATE_TIMEOUT_IN_MILLIS} milliseconds.
*/
private Thread thread;
+
+ private TrackedRegattaRegistry trackedRegattaRegistry;
+
+ private DomainFactory baseDomainFactory;
- public LiveLeaderboardUpdater(Leaderboard leaderboard, SailingServiceImpl sailingService) {
+ public LiveLeaderboardUpdater(Leaderboard leaderboard, TrackedRegattaRegistry trackedRegattaRegistry, DomainFactory baseDomainFactory) {
this.leaderboard = leaderboard;
- this.sailingService = sailingService;
+ this.trackedRegattaRegistry = trackedRegattaRegistry;
+ this.baseDomainFactory = baseDomainFactory;
this.timePointOfLastRequestForColumnDetails = new HashMap();
this.columnNamesForWhichCurrentLiveLeaderboardHasTheDetails = new HashSet();
}
@@ -249,7 +254,8 @@ public class LiveLeaderboardUpdater implements Runnable {
try {
final Set namesOfRaceColumnsForWhichToLoadLegDetails = getColumnNamesForWhichToFetchDetails(timePoint);
LeaderboardDTO newCacheValue = leaderboard.computeDTO(timePoint,
- namesOfRaceColumnsForWhichToLoadLegDetails, /* waitForLatestAnalyses */false, sailingService.getService(), sailingService.getBaseDomainFactory());
+ namesOfRaceColumnsForWhichToLoadLegDetails, /* waitForLatestAnalyses */false,
+ trackedRegattaRegistry, baseDomainFactory);
updateCacheContents(namesOfRaceColumnsForWhichToLoadLegDetails, newCacheValue);
} catch (NoWindException e) {
logger.info("Unable to update cached leaderboard results for leaderboard " + leaderboard.getName() + ": "
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 fa488ec5727..75001401e80 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
@@ -122,6 +122,8 @@ import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
import com.sap.sailing.domain.leaderboard.MetaLeaderboard;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
+import com.sap.sailing.domain.leaderboard.caching.LeaderboardDTOCache;
+import com.sap.sailing.domain.leaderboard.caching.LiveLeaderboardUpdater;
import com.sap.sailing.domain.persistence.DomainObjectFactory;
import com.sap.sailing.domain.persistence.MongoFactory;
import com.sap.sailing.domain.persistence.MongoObjectFactory;
@@ -435,7 +437,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
synchronized (leaderboardByNameLiveUpdaters) {
liveLeaderboardUpdater = leaderboardByNameLiveUpdaters.get(leaderboardName);
if (liveLeaderboardUpdater == null) {
- liveLeaderboardUpdater = new LiveLeaderboardUpdater(leaderboard, this);
+ liveLeaderboardUpdater = new LiveLeaderboardUpdater(leaderboard, this.getService(), baseDomainFactory);
leaderboardByNameLiveUpdaters.put(leaderboardName, liveLeaderboardUpdater);
}
}