moved LeaderboardDTOCache and LiveLeaderboardUpdater to domain bundle

This commit is contained in:
Axel Uhl committed 2013-05-17 21:24:02 +02:00
1 parent 336516d39c
commit 335863b3e1
3 files changed
+16 -9

No files matched your search

@@ -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;
@@ -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 <code>null</code> 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<String, TimePoint>();
this.columnNamesForWhichCurrentLiveLeaderboardHasTheDetails = new HashSet<String>();
}
@@ -249,7 +254,8 @@ public class LiveLeaderboardUpdater implements Runnable {
try {
final Set<String> 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() + ": "
@@ -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);
}
}