Refactored race calculation to avoid utility methods in RaceContext

This commit is contained in:
Benjamin Barth committed 2015-07-06 16:09:40 +02:00
1 parent ba6770caea
commit af800938ae
5 files changed
+28 -23

No files matched your search

@@ -7,15 +7,19 @@ import java.util.TreeSet;
public class SortedSetResult<T extends DTO> implements DTO, Result {
private TreeSet<T> values = new TreeSet<>();
@SuppressWarnings("unused")
private SortedSetResult() {
public SortedSetResult() {
}
public SortedSetResult(Collection<T> values) {
super();
this.values.addAll(values);
}
public void addValue(T value) {
if (value != null) {
this.values.add(value);
}
}
public Set<T> getValues() {
return values;
}
@@ -1,7 +1,5 @@
package com.sap.sailing.gwt.ui.shared.dispatch.event;
import java.util.TreeSet;
import com.google.gwt.core.shared.GwtIncompatible;
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL;
import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult;
@@ -11,16 +9,16 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
@GwtIncompatible
final class LiveRaceCalculator implements RaceCallback {
private final TreeSet<LiveRaceDTO> resultSet = new TreeSet<LiveRaceDTO>();
private final SortedSetResult<LiveRaceDTO> result = new SortedSetResult<LiveRaceDTO>();
@Override
public void doForRace(RaceContext rc) {
rc.addLiveRace(resultSet);
result.addValue(rc.getLiveRaceOrNull());
}
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> getResult() {
long ttl = 1000 * 60 * 2;
for(LiveRaceDTO race : resultSet) {
for(LiveRaceDTO race : result.getValues()) {
if(race.getViewState() == RaceViewState.RUNNING) {
ttl = Math.min(ttl, 1000 * 30);
} else if(race.getViewState() == RaceViewState.SCHEDULED) {
@@ -30,6 +28,6 @@ final class LiveRaceCalculator implements RaceCallback {
ttl = Math.min(ttl, 1000 * 60);
}
}
return new ResultWithTTL<SortedSetResult<LiveRaceDTO>>(ttl, new SortedSetResult<>(resultSet));
return new ResultWithTTL<SortedSetResult<LiveRaceDTO>>(ttl, result);
}
}
@@ -1,6 +1,5 @@
package com.sap.sailing.gwt.ui.shared.dispatch.event;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -276,13 +275,6 @@ public class RaceContext {
return finishTime;
}
public void addLiveRace(Collection<LiveRaceDTO> result) {
LiveRaceDTO liveRaceDTO = getLiveRaceOrNull();
if(liveRaceDTO != null) {
result.add(liveRaceDTO);
}
}
public LiveRaceDTO getLiveRaceOrNull() {
// a race is of 'public interest' of a race is a combination of it's 'live' state
// and special flags states indicating how the postponed/canceled races will be continued
@@ -11,12 +11,8 @@ public class RaceListDataCalculator implements RaceCallback {
@Override
public void doForRace(RaceContext context) {
context.addLiveRace(result.getLiveRaces());
RaceListRaceDTO finishedRace = context.getFinishedRaceOrNull();
if(finishedRace != null) {
result.getFinishedRaces().add(finishedRace);
}
result.add(context.getLiveRaceOrNull());
result.add(context.getFinishedRaceOrNull());
}
public ResultWithTTL<RaceListViewDTO> getResult() {
@@ -5,6 +5,7 @@ import java.util.Collection;
import java.util.TreeSet;
import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO;
public class RaceListViewDTO implements DTO {
@@ -12,6 +13,20 @@ public class RaceListViewDTO implements DTO {
private TreeSet<RaceListRaceDTO> finishedRaces = new TreeSet<>();
public void add(LiveRaceDTO liveRace) {
add(liveRaces, liveRace);
}
public void add(RaceListRaceDTO finishedRace) {
add(finishedRaces, finishedRace);
}
private <T extends RaceMetadataDTO> void add(TreeSet<T> set, T race) {
if (race != null) {
set.add(race);
}
}
public Collection<LiveRaceDTO> getLiveRaces() {
return liveRaces;
}