mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 14:27:15 +00:00
Refactored live race calculation to avoid specific container DTOs
This commit is contained in:
1 parent
363bf5f5d7
commit
ba6770caea
10 files changed
+42
-55
No files matched your search
+9
-5
@@ -12,10 +12,10 @@ import com.sap.sailing.gwt.home.client.place.event.partials.racelist.RaceListDat
|
||||
import com.sap.sailing.gwt.home.client.place.event.partials.racelist.SortableRaceListColumn;
|
||||
import com.sap.sailing.gwt.home.client.place.event.regatta.tabs.reload.RefreshableWidget;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.LiveRacesDTO;
|
||||
|
||||
public class RacesListLive extends Composite implements RefreshableWidget<LiveRacesDTO> {
|
||||
public class RacesListLive extends Composite implements RefreshableWidget<SortedSetResult<LiveRaceDTO>> {
|
||||
|
||||
private final RaceListLiveRaces raceList;
|
||||
|
||||
@@ -26,12 +26,16 @@ public class RacesListLive extends Composite implements RefreshableWidget<LiveRa
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setData(LiveRacesDTO data, long nextUpdate, int updateNo) {
|
||||
if(data == null || data.getRaces().isEmpty()) {
|
||||
public void setData(SortedSetResult<LiveRaceDTO> data, long nextUpdate, int updateNo) {
|
||||
this.setListData(data.getValues());
|
||||
}
|
||||
|
||||
public void setListData(Collection<LiveRaceDTO> data) {
|
||||
if(data == null || data.isEmpty()) {
|
||||
getElement().getStyle().setDisplay(Display.NONE);
|
||||
} else {
|
||||
getElement().getStyle().clearDisplay();
|
||||
raceList.setListData(data.getRaces());
|
||||
raceList.setListData(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -106,8 +106,8 @@ public class RegattaRacesTabView extends Composite implements RegattaTabView<Reg
|
||||
}
|
||||
@Override
|
||||
public void onSuccess(ResultWithTTL<RaceListViewDTO> result) {
|
||||
liveRacesList.setData(result.getDto().getLiveRaces(), 0, 0);
|
||||
finishedRacesList.setListData(result.getDto().getAllRaces());
|
||||
liveRacesList.setListData(result.getDto().getLiveRaces());
|
||||
finishedRacesList.setListData(result.getDto().getFinishedRaces());
|
||||
// for (RaceListSeriesDTO series : result.getDto().getRacesForCompetitionFormat()) {
|
||||
// compFormatContainerUi.add(new RegattaCompetitionSeries(currentPresenter, series));
|
||||
// }
|
||||
|
||||
+6
-5
@@ -9,9 +9,10 @@ import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.CalculationWithEvent;
|
||||
|
||||
public class GetLiveRacesForEventAction implements Action<ResultWithTTL<LiveRacesDTO>> {
|
||||
public class GetLiveRacesForEventAction implements Action<ResultWithTTL<SortedSetResult<LiveRaceDTO>>> {
|
||||
private static final Logger logger = Logger.getLogger(GetLiveRacesForEventAction.class.getName());
|
||||
|
||||
private UUID eventId;
|
||||
@@ -25,14 +26,14 @@ public class GetLiveRacesForEventAction implements Action<ResultWithTTL<LiveRace
|
||||
|
||||
@Override
|
||||
@GwtIncompatible
|
||||
public ResultWithTTL<LiveRacesDTO> execute(final DispatchContext context) {
|
||||
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> execute(final DispatchContext context) {
|
||||
long start = System.currentTimeMillis();
|
||||
ResultWithTTL<LiveRacesDTO> result = EventActionUtil.withLiveRaceOrDefaultSchedule(context, eventId, new CalculationWithEvent<LiveRacesDTO>() {
|
||||
ResultWithTTL<SortedSetResult<LiveRaceDTO>> result = EventActionUtil.withLiveRaceOrDefaultSchedule(context, eventId, new CalculationWithEvent<SortedSetResult<LiveRaceDTO>>() {
|
||||
@Override
|
||||
public ResultWithTTL<LiveRacesDTO> calculateWithEvent(Event event) {
|
||||
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> calculateWithEvent(Event event) {
|
||||
LiveRaceCalculator liveRaceCalculator = new LiveRaceCalculator();
|
||||
EventActionUtil.forRacesOfEvent(context, eventId, liveRaceCalculator);
|
||||
ResultWithTTL<LiveRacesDTO> result = liveRaceCalculator.getResult();
|
||||
ResultWithTTL<SortedSetResult<LiveRaceDTO>> result = liveRaceCalculator.getResult();
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
||||
+5
-4
@@ -7,9 +7,10 @@ import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.SortedSetResult;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.CalculationWithEvent;
|
||||
|
||||
public class GetLiveRacesForRegattaAction implements Action<ResultWithTTL<LiveRacesDTO>> {
|
||||
public class GetLiveRacesForRegattaAction implements Action<ResultWithTTL<SortedSetResult<LiveRaceDTO>>> {
|
||||
private UUID eventId;
|
||||
private String regattaName;
|
||||
|
||||
@@ -23,10 +24,10 @@ public class GetLiveRacesForRegattaAction implements Action<ResultWithTTL<LiveRa
|
||||
|
||||
@Override
|
||||
@GwtIncompatible
|
||||
public ResultWithTTL<LiveRacesDTO> execute(final DispatchContext context) {
|
||||
return EventActionUtil.withLiveRaceOrDefaultSchedule(context, eventId, new CalculationWithEvent<LiveRacesDTO>() {
|
||||
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> execute(final DispatchContext context) {
|
||||
return EventActionUtil.withLiveRaceOrDefaultSchedule(context, eventId, new CalculationWithEvent<SortedSetResult<LiveRaceDTO>>() {
|
||||
@Override
|
||||
public ResultWithTTL<LiveRacesDTO> calculateWithEvent(Event event) {
|
||||
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> calculateWithEvent(Event event) {
|
||||
LiveRaceCalculator liveRaceCalculator = new LiveRaceCalculator();
|
||||
EventActionUtil.forRacesOfRegatta(context, eventId, regattaName, liveRaceCalculator);
|
||||
return liveRaceCalculator.getResult();
|
||||
|
||||
+8
-5
@@ -1,23 +1,26 @@
|
||||
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;
|
||||
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 LiveRaceCalculator implements RaceCallback {
|
||||
private final LiveRacesDTO result = new LiveRacesDTO();
|
||||
private final TreeSet<LiveRaceDTO> resultSet = new TreeSet<LiveRaceDTO>();
|
||||
|
||||
@Override
|
||||
public void doForRace(RaceContext rc) {
|
||||
rc.addLiveRace(result);
|
||||
rc.addLiveRace(resultSet);
|
||||
}
|
||||
|
||||
public ResultWithTTL<LiveRacesDTO> getResult() {
|
||||
public ResultWithTTL<SortedSetResult<LiveRaceDTO>> getResult() {
|
||||
long ttl = 1000 * 60 * 2;
|
||||
for(LiveRaceDTO race : result.getRaces()) {
|
||||
for(LiveRaceDTO race : resultSet) {
|
||||
if(race.getViewState() == RaceViewState.RUNNING) {
|
||||
ttl = Math.min(ttl, 1000 * 30);
|
||||
} else if(race.getViewState() == RaceViewState.SCHEDULED) {
|
||||
@@ -27,6 +30,6 @@ final class LiveRaceCalculator implements RaceCallback {
|
||||
ttl = Math.min(ttl, 1000 * 60);
|
||||
}
|
||||
}
|
||||
return new ResultWithTTL<LiveRacesDTO>(ttl, result);
|
||||
return new ResultWithTTL<SortedSetResult<LiveRaceDTO>>(ttl, new SortedSetResult<>(resultSet));
|
||||
}
|
||||
}
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
|
||||
|
||||
public class LiveRacesDTO implements DTO {
|
||||
private TreeSet<LiveRaceDTO> races = new TreeSet<>();
|
||||
|
||||
public Collection<LiveRaceDTO> getRaces() {
|
||||
return races;
|
||||
}
|
||||
|
||||
public void addRace(LiveRaceDTO race) {
|
||||
this.races.add(race);
|
||||
}
|
||||
|
||||
}
|
||||
+3
-2
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -275,10 +276,10 @@ public class RaceContext {
|
||||
return finishTime;
|
||||
}
|
||||
|
||||
public void addLiveRace(LiveRacesDTO result) {
|
||||
public void addLiveRace(Collection<LiveRaceDTO> result) {
|
||||
LiveRaceDTO liveRaceDTO = getLiveRaceOrNull();
|
||||
if(liveRaceDTO != null) {
|
||||
result.addRace(liveRaceDTO);
|
||||
result.add(liveRaceDTO);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ public class RaceListDataCalculator implements RaceCallback {
|
||||
|
||||
RaceListRaceDTO finishedRace = context.getFinishedRaceOrNull();
|
||||
if(finishedRace != null) {
|
||||
result.addRace(finishedRace);
|
||||
result.getFinishedRaces().add(finishedRace);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-10
@@ -8,26 +8,22 @@ import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
|
||||
|
||||
public class RaceListViewDTO implements DTO {
|
||||
|
||||
private LiveRacesDTO liveRaces = new LiveRacesDTO();
|
||||
private TreeSet<LiveRaceDTO> liveRaces = new TreeSet<>();
|
||||
|
||||
private TreeSet<RaceListRaceDTO> allRaces = new TreeSet<>();
|
||||
private TreeSet<RaceListRaceDTO> finishedRaces = new TreeSet<>();
|
||||
|
||||
public void addRace(RaceListRaceDTO race) {
|
||||
allRaces.add(race);
|
||||
}
|
||||
|
||||
public LiveRacesDTO getLiveRaces() {
|
||||
public Collection<LiveRaceDTO> getLiveRaces() {
|
||||
return liveRaces;
|
||||
}
|
||||
|
||||
public Collection<RaceListRaceDTO> getAllRaces() {
|
||||
return allRaces;
|
||||
public Collection<RaceListRaceDTO> getFinishedRaces() {
|
||||
return finishedRaces;
|
||||
}
|
||||
|
||||
public Collection<RaceListSeriesDTO> getRacesForCompetitionFormat() {
|
||||
RaceListSeriesDTO withFleets = new RaceListSeriesDTO("Fleets");
|
||||
RaceListSeriesDTO noFleets = new RaceListSeriesDTO("");
|
||||
for (RaceListRaceDTO race : allRaces) {
|
||||
for (RaceListRaceDTO race : finishedRaces) {
|
||||
RaceListSeriesDTO series = race.getFleet() == null ? noFleets : withFleets;
|
||||
series.addRace(race);
|
||||
}
|
||||
|
||||
+2
-2
@@ -2,11 +2,11 @@ package com.sap.sailing.gwt.ui.shared.race;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DTO;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class RaceMetadataDTO implements IsSerializable, Comparable<RaceMetadataDTO> {
|
||||
public class RaceMetadataDTO implements DTO, Comparable<RaceMetadataDTO> {
|
||||
|
||||
public enum RaceViewState {
|
||||
PLANNED { // no start time set
|
||||
|
||||
Reference in new issue
Block a user