mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-13 07:40:58 +00:00
computing RaceInfoDTO based on domain model and not based on DTOs constructed from domain model;
this should also solve bug 1342 because this is no longer called for constructing a StrippedLeaderboardDTO
This commit is contained in:
1 parent
c06ebfc7e7
commit
3251d2dfd7
3 files changed
+29
-70
No files matched your search
+26
-51
@@ -1097,8 +1097,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return result;
|
||||
}
|
||||
|
||||
private RaceInfoDTO convertToRaceInfoDTO(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO, RaceLog raceLog) {
|
||||
private RaceInfoDTO createRaceInfoDTO(RaceColumn raceColumn, Fleet fleet) {
|
||||
RaceInfoDTO raceInfoDTO = new RaceInfoDTO();
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
if (raceLog != null) {
|
||||
PassAwareRaceLogImpl passAwareRaceLog = new PassAwareRaceLogImpl(raceLog);
|
||||
StartTimeFinder startTimeFinder = new StartTimeFinder(passAwareRaceLog);
|
||||
@@ -1116,9 +1117,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
LastPublishedCourseDesignFinder courseDesignFinder = new LastPublishedCourseDesignFinder(raceLog);
|
||||
raceInfoDTO.lastCourseDesign = convertCourseDesignToRaceCourseDTO(courseDesignFinder.getLastCourseDesign());
|
||||
}
|
||||
raceInfoDTO.raceName = raceColumnDTO.name;
|
||||
raceInfoDTO.fleet = fleetDTO.name;
|
||||
raceInfoDTO.raceIdentifier = raceColumnDTO.getRaceIdentifier(fleetDTO);
|
||||
raceInfoDTO.raceName = raceColumn.getName();
|
||||
raceInfoDTO.fleet = fleet.getName();
|
||||
raceInfoDTO.raceIdentifier = raceColumn.getRaceIdentifier(fleet);
|
||||
return raceInfoDTO;
|
||||
}
|
||||
|
||||
@@ -2216,9 +2217,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
final FleetDTO fleetDTO = convertToFleetDTO(raceColumn, fleet);
|
||||
RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), raceColumn.getFactor(),
|
||||
fleetDTO, raceColumn.isMedalRace(), raceIdentifier, raceDTO);
|
||||
|
||||
addRaceInfoToRace(raceColumn, fleet, fleetDTO, raceColumnDTO);
|
||||
|
||||
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive != null) {
|
||||
raceColumnDTO.setWhenLastTrackedRaceWasLive(fleetDTO, latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
|
||||
}
|
||||
@@ -2227,16 +2225,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return leaderboardDTO;
|
||||
}
|
||||
|
||||
private void addRaceInfoToRace(RaceColumn raceColumn, Fleet fleet, final FleetDTO fleetDTO, RaceColumnDTO raceColumnDTO) {
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
RaceInfoDTO raceInfoDTO = convertToRaceInfoDTO(raceColumnDTO, fleetDTO, raceLog);
|
||||
raceColumnDTO.getRaceInfoPerFleet().put(fleetDTO, raceInfoDTO);
|
||||
}
|
||||
|
||||
private RaceDTO createRaceDTO(boolean withGeoLocationData, RegattaAndRaceIdentifier raceIdentifier, TrackedRace trackedRace) {
|
||||
// Optional: Getting the places of the race
|
||||
PlacemarkOrderDTO racePlaces = withGeoLocationData ? getRacePlaces(trackedRace) : null;
|
||||
|
||||
TrackedRaceDTO trackedRaceDTO = new TrackedRaceDTO();
|
||||
trackedRaceDTO.startOfTracking = trackedRace.getStartOfTracking() == null ? null : trackedRace.getStartOfTracking().asDate();
|
||||
trackedRaceDTO.hasWindData = trackedRace.hasWindData();
|
||||
@@ -3041,17 +3032,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
public EventDTO getEventByIdAsString(String eventIdAsString) {
|
||||
UUID eventUuid = convertIdentifierStringToUuid(eventIdAsString);
|
||||
return getEventById(eventUuid);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventDTO getEventById(Serializable id) {
|
||||
EventDTO result = null;
|
||||
for (Event event : getService().getAllEvents()) {
|
||||
if(event.getId().equals(id)) {
|
||||
result = convertToEventDTO(event);
|
||||
break;
|
||||
}
|
||||
Event event = getService().getEvent(id);
|
||||
if (event != null) {
|
||||
result = convertToEventDTO(event);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -3083,36 +3071,23 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return courseAreaDTO;
|
||||
}
|
||||
|
||||
private List<StrippedLeaderboardDTO> getLeaderboardsByCourseArea(CourseAreaDTO courseAreaDTO) {
|
||||
List<StrippedLeaderboardDTO> result = new ArrayList<StrippedLeaderboardDTO>();
|
||||
|
||||
for (StrippedLeaderboardDTO leaderboardDTO : getLeaderboards()) {
|
||||
if (leaderboardDTO.defaultCourseAreaIdAsString != null && leaderboardDTO.defaultCourseAreaIdAsString.equals(courseAreaDTO.id)) {
|
||||
result.add(leaderboardDTO);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RegattaOverviewEntryDTO> getRegattaOverviewEntriesForEvent(String eventIdAsString) {
|
||||
List<RegattaOverviewEntryDTO> result = new ArrayList<RegattaOverviewEntryDTO>();
|
||||
|
||||
EventDTO eventDTO = getEventByIdAsString(eventIdAsString);
|
||||
|
||||
if (eventDTO != null) {
|
||||
for (CourseAreaDTO courseAreaDTO : eventDTO.venue.getCourseAreas()) {
|
||||
List<StrippedLeaderboardDTO> leaderboards = getLeaderboardsByCourseArea(courseAreaDTO);
|
||||
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
|
||||
String regattaName = getRegattaNameFromLeaderboard(leaderboard);
|
||||
|
||||
for (RaceColumnDTO raceColumnDTO : leaderboard.getRaceList()) {
|
||||
for (RaceInfoDTO raceInfo : raceColumnDTO.getRaceInfoPerFleet().values()) {
|
||||
RegattaOverviewEntryDTO entry = new RegattaOverviewEntryDTO();
|
||||
entry.courseAreaName = courseAreaDTO.name;
|
||||
entry.regattaName = regattaName;
|
||||
entry.raceInfo = raceInfo;
|
||||
result.add(entry);
|
||||
Event event = getService().getEvent(convertIdentifierStringToUuid(eventIdAsString));
|
||||
if (event != null) {
|
||||
for (CourseArea courseArea : event.getVenue().getCourseAreas()) {
|
||||
for (Leaderboard leaderboard : getService().getLeaderboards().values()) {
|
||||
if (leaderboard.getDefaultCourseArea() == courseArea) {
|
||||
String regattaName = getRegattaNameFromLeaderboard(leaderboard);
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
RegattaOverviewEntryDTO entry = new RegattaOverviewEntryDTO();
|
||||
entry.courseAreaName = courseArea.getName();
|
||||
entry.regattaName = regattaName;
|
||||
entry.raceInfo = createRaceInfoDTO(raceColumn, fleet);
|
||||
result.add(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3121,12 +3096,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return result;
|
||||
}
|
||||
|
||||
private String getRegattaNameFromLeaderboard(StrippedLeaderboardDTO leaderboard) {
|
||||
private String getRegattaNameFromLeaderboard(Leaderboard leaderboard) {
|
||||
String regattaName;
|
||||
if (leaderboard.isRegattaLeaderboard) {
|
||||
regattaName = leaderboard.regattaName;
|
||||
if (leaderboard instanceof RegattaLeaderboard) {
|
||||
regattaName = ((RegattaLeaderboard) leaderboard).getRegatta().getName();
|
||||
} else {
|
||||
regattaName = leaderboard.displayName;
|
||||
regattaName = leaderboard.getDisplayName();
|
||||
}
|
||||
return regattaName;
|
||||
}
|
||||
|
||||
-15
@@ -18,7 +18,6 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
private List<FleetDTO> fleets;
|
||||
private Map<FleetDTO, RegattaAndRaceIdentifier> trackedRaceIdentifiersPerFleet;
|
||||
private Map<FleetDTO, RaceDTO> racesPerFleet;
|
||||
private Map<FleetDTO, RaceInfoDTO> raceInfoPerFleet;
|
||||
private Boolean isValidInTotalScore;
|
||||
private Double explicitFactor;
|
||||
private double effectiveFactor;
|
||||
@@ -45,17 +44,8 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
racesPerFleet = new HashMap<FleetDTO, RaceDTO>();
|
||||
fleets = new ArrayList<FleetDTO>();
|
||||
whenLastTrackedRaceWasLiveByFleet = new HashMap<FleetDTO, Date>();
|
||||
raceInfoPerFleet = new HashMap<FleetDTO, RaceInfoDTO>();
|
||||
}
|
||||
|
||||
public Map<FleetDTO, RaceInfoDTO> getRaceInfoPerFleet() {
|
||||
return raceInfoPerFleet;
|
||||
}
|
||||
|
||||
public void setRaceInfoPerFleet(Map<FleetDTO, RaceInfoDTO> raceLogsPerFleet) {
|
||||
this.raceInfoPerFleet = raceLogsPerFleet;
|
||||
}
|
||||
|
||||
public boolean isValidInTotalScore() {
|
||||
return isValidInTotalScore;
|
||||
}
|
||||
@@ -68,11 +58,6 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
return explicitFactor;
|
||||
}
|
||||
|
||||
public RaceInfoDTO getRaceInfo(FleetDTO fleet){
|
||||
//TODO handle non-existence
|
||||
return raceInfoPerFleet.get(fleet);
|
||||
}
|
||||
|
||||
public void setExplicitFactor(Double explicitFactor) {
|
||||
this.explicitFactor = explicitFactor;
|
||||
}
|
||||
|
||||
+3
-4
@@ -2,12 +2,11 @@ package com.sap.sailing.gwt.ui.shared;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class RaceInfoDTO implements IsSerializable {
|
||||
public String raceName;
|
||||
public String fleet;
|
||||
@@ -16,7 +15,7 @@ public class RaceInfoDTO implements IsSerializable {
|
||||
public Flags lastFlag;
|
||||
public boolean displayed;
|
||||
public RaceCourseDTO lastCourseDesign;
|
||||
public RegattaAndRaceIdentifier raceIdentifier;
|
||||
public RaceIdentifier raceIdentifier;
|
||||
|
||||
// for GWT serialization
|
||||
public RaceInfoDTO() { }
|
||||
|
||||
Reference in new issue
Block a user