diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/racecommittee/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java similarity index 91% rename from mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java rename to java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/racecommittee/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java index 03e47d82770..f5fc346cf1a 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/racecommittee/domain/state/impl/analyzers/LastPublishedCourseDesignFinder.java @@ -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; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index f7401578c7a..b2d4dd7b382 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -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. emptyList()); + + if (lastCourseDesign != null) { + List waypointDTOs = new ArrayList(); + for (Waypoint waypoint : lastCourseDesign.getWaypoints()) { + ControlPointDTO controlPointDTO = convertToControlPointDTO(waypoint.getControlPoint()); + List marks = new ArrayList(); + 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 controlPoints tries to find the best-matching waypoint diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInfoDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInfoDTO.java index deddbfad3cb..5e5df092ee4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInfoDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RaceInfoDTO.java @@ -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() { } + +} diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/RaceStateImpl.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/RaceStateImpl.java index a4cad0b6eab..4b98fc1f946 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/RaceStateImpl.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/domain/state/impl/RaceStateImpl.java @@ -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;