Removed duplicate code to calculate refresh intervals

This commit is contained in:
Steffen Schaefer committed 2015-07-13 13:45:16 +02:00
1 parent 2914a81b3d
commit cd473cfcd4
4 files changed
+35 -4

No files matched your search

@@ -9,11 +9,13 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
@GwtIncompatible
final class LiveRaceCalculator implements RaceCallback {
private final RaceRefreshCalculator refreshCalculator = new RaceRefreshCalculator();
private final SortedSetResult<LiveRaceDTO> result = new SortedSetResult<LiveRaceDTO>();
@Override
public void doForRace(RaceContext rc) {
result.addValue(rc.getLiveRaceOrNull());
refreshCalculator.doForRace(rc);
}
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> getResult() {
@@ -28,6 +30,6 @@ final class LiveRaceCalculator implements RaceCallback {
ttl = Math.min(ttl, 1000 * 60);
}
}
return new ResultWithTTL<SortedSetResult<LiveRaceDTO>>(ttl, result);
return new ResultWithTTL<SortedSetResult<LiveRaceDTO>>(refreshCalculator.getTTL(), result);
}
}
@@ -425,7 +425,7 @@ public class RaceContext {
return trackingState;
}
private RaceViewState getLiveRaceViewState() {
public RaceViewState getLiveRaceViewState() {
if(raceViewState == null) {
raceViewState = calculateLiveRaceViewState();
}
@@ -9,12 +9,13 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback
@GwtIncompatible
public class RaceListDataCalculator implements RaceCallback {
private final RaceRefreshCalculator refreshCalculator = new RaceRefreshCalculator();
private final RegattaProgressCalculator progressCalculator = new RegattaProgressCalculator();
private final RaceListViewDTO result = new RaceListViewDTO();
@Override
public void doForRace(RaceContext context) {
refreshCalculator.doForRace(context);
progressCalculator.doForRace(context);
result.add(context.getLiveRaceOrNull());
result.add(context.getFinishedRaceOrNull());
@@ -22,7 +23,7 @@ public class RaceListDataCalculator implements RaceCallback {
public ResultWithTTL<RaceListViewDTO> getResult(DispatchContext context, UUID eventId) {
result.setProgress(progressCalculator.getResult());
return new ResultWithTTL<>(EventActionUtil.getEventStateDependentTTL(context, eventId, 3 * 60 * 1000), result);
return new ResultWithTTL<>(EventActionUtil.getEventStateDependentTTL(context, eventId, refreshCalculator.getTTL()), result);
}
}
@@ -0,0 +1,28 @@
package com.sap.sailing.gwt.ui.shared.dispatch.event;
import com.google.gwt.core.shared.GwtIncompatible;
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback;
import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState;
import com.sap.sse.common.impl.MillisecondsTimePoint;
@GwtIncompatible
final class RaceRefreshCalculator implements RaceCallback {
private long ttl = 1000 * 60 * 3;
@Override
public void doForRace(RaceContext rc) {
RaceViewState state = rc.getLiveRaceViewState();
if(state == RaceViewState.RUNNING) {
ttl = Math.min(ttl, 1000 * 30);
} else if(state == RaceViewState.SCHEDULED) {
int timeTillRace = (int) MillisecondsTimePoint.now().until(rc.getStartTime()).asMillis();
ttl = Math.min(ttl, Math.min(1000 * 60, timeTillRace));
} else if(state == RaceViewState.POSTPONED || state == RaceViewState.ABANDONED) {
ttl = Math.min(ttl, 1000 * 60);
}
}
public long getTTL() {
return ttl;
}
}