Moved the race log course design finder from app code to the android

share bundle. on the GWT side the course design is converted to a
RaceCourseDTO and added to the RaceInfoDTO
This commit is contained in:
Armin Zamani committed 2013-03-28 00:52:23 +01:00
1 parent 88ae6c2e5e
commit a21efacd34
4 files changed
+60 -23

No files matched your search

@@ -1,4 +1,4 @@
package com.sap.sailing.racecommittee.app.domain.state.impl.analyzers;
package com.sap.sailing.racecommittee.domain.state.impl.analyzers;
import com.sap.sailing.domain.base.CourseBase;
import com.sap.sailing.domain.racelog.RaceLog;
@@ -49,6 +49,7 @@ import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.ControlPoint;
import com.sap.sailing.domain.base.Course;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.CourseBase;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.Fleet;
import com.sap.sailing.domain.base.Gate;
@@ -217,6 +218,7 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO;
import com.sap.sailing.gwt.ui.shared.WindDTO;
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.LastPublishedCourseDesignFinder;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.RaceStatusAnalyzer;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.StartTimeFinder;
import com.sap.sailing.server.RacingEventService;
@@ -1110,6 +1112,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
RaceStatusAnalyzer raceStatusAnalyzer = new RaceStatusAnalyzer(passAwareRaceLog);
raceInfoDTO.lastStatus = raceStatusAnalyzer.getStatus();
LastPublishedCourseDesignFinder courseDesignFinder = new LastPublishedCourseDesignFinder(raceLog);
raceInfoDTO.lastCourseDesign = convertCourseDesignToRaceCourseDTO(courseDesignFinder.getLastCourseDesign());
for(RaceLogEvent event : passAwareRaceLog.getFixes()){
if(event instanceof RaceLogFlagEvent){
raceInfoDTO.lastFlag = ((RaceLogFlagEvent) event).getUpperFlag();
@@ -1120,6 +1125,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
return raceInfoDTO;
}
private RaceCourseDTO convertCourseDesignToRaceCourseDTO(CourseBase lastCourseDesign) {
RaceCourseDTO result = new RaceCourseDTO(Collections.<WaypointDTO> emptyList());
if (lastCourseDesign != null) {
List<WaypointDTO> waypointDTOs = new ArrayList<WaypointDTO>();
for (Waypoint waypoint : lastCourseDesign.getWaypoints()) {
ControlPointDTO controlPointDTO = convertToControlPointDTO(waypoint.getControlPoint());
List<MarkDTO> marks = new ArrayList<MarkDTO>();
for (MarkDTO markDTO : controlPointDTO.getMarks()) {
marks.add(markDTO);
}
WaypointDTO waypointDTO = new WaypointDTO(waypoint.getName(), controlPointDTO, marks, waypoint.getPassingSide());
waypointDTOs.add(waypointDTO);
}
result = new RaceCourseDTO(waypointDTOs);
}
return result;
}
private FleetDTO convertToFleetDTO(Series series, Fleet fleet) {
return new FleetDTO(fleet.getName(), series.getName(), fleet.getOrdering(), fleet.getColor());
}
@@ -1846,6 +1870,18 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
return result;
}
private ControlPointDTO convertToControlPointDTO(ControlPoint controlPoint) {
ControlPointDTO result;
if (controlPoint instanceof Gate) {
final Mark left = ((Gate) controlPoint).getLeft();
final Mark right = ((Gate) controlPoint).getRight();
result = new GateDTO(controlPoint.getId().toString(), controlPoint.getName(), convertToMarkDTO(left, null), convertToMarkDTO(right, null));
} else {
result = new MarkDTO(controlPoint.getId().toString(), controlPoint.getName());
}
return result;
}
/**
* For each {@link ControlPointDTO} in <code>controlPoints</code> tries to find the best-matching waypoint
@@ -1,21 +1,22 @@
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
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;
public Date startTime;
public RaceLogRaceStatus lastStatus;
public Flags lastFlag;
public boolean displayed;
// for GWT serialization
public RaceInfoDTO() { }
}
package com.sap.sailing.gwt.ui.shared;
import java.util.Date;
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;
public Date startTime;
public RaceLogRaceStatus lastStatus;
public Flags lastFlag;
public boolean displayed;
public RaceCourseDTO lastCourseDesign;
// for GWT serialization
public RaceInfoDTO() { }
}
@@ -20,7 +20,7 @@ import com.sap.sailing.racecommittee.app.domain.state.RaceState;
import com.sap.sailing.racecommittee.app.domain.state.RaceStateChangedListener;
import com.sap.sailing.racecommittee.app.domain.state.StartProcedure;
import com.sap.sailing.racecommittee.app.domain.state.impl.analyzers.FinishedTimeFinder;
import com.sap.sailing.racecommittee.app.domain.state.impl.analyzers.LastPublishedCourseDesignFinder;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.LastPublishedCourseDesignFinder;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.RaceStatusAnalyzer;
import com.sap.sailing.racecommittee.domain.state.impl.analyzers.StartTimeFinder;