diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseDataImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseDataImpl.java index 72686a16dbc..530dfa83173 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseDataImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/CourseDataImpl.java @@ -6,7 +6,6 @@ import java.util.List; import com.sap.sailing.domain.base.ControlPoint; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.Leg; -import com.sap.sailing.domain.base.Mark; import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.impl.NamedImpl; @@ -71,12 +70,6 @@ public class CourseDataImpl extends NamedImpl implements CourseBase { this.waypoints.remove(zeroBasedPosition); } - @Override - public Iterable getLegsAdjacentTo(Mark mark) { - // TODO Auto-generated method stub - return null; - } - @Override public Leg getFirstLeg() { // TODO Auto-generated method stub diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index f15638bd355..ff254b66b43 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -2580,7 +2580,8 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { /** * If the waypoint is not a line, or no position can be determined for one of its marks at timePoint, - * null is returned. + * null is returned. If no wind information is available but required to compute the advantage, null is + * returned. */ private LineLengthAndAdvantage getLineLengthAndAdvantage(TimePoint timePoint, Waypoint waypoint) { List markPositionDTOs = new ArrayList(); @@ -2597,37 +2598,42 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { allMarksHavePositions = false; } } - final LineLengthAndAdvantage result; - if (allMarksHavePositions && numberOfMarks == 2) { - Wind combinedWind = getWind(markPositions.get(0), timePoint); - Distance distanceFromFirstToSecondMark = markPositions.get(1).alongTrackDistance(markPositions.get(0), combinedWind.getFrom()); - final Position leewardMark; - final Position windwardMark; - final Distance distanceAdvantage; - // FIXME advantage needs to be calculated based on type of inbound leg - if (distanceFromFirstToSecondMark.getMeters() > 0) { - // first mark is leewards of second mark - leewardMark = markPositions.get(0); - windwardMark = markPositions.get(1); - distanceAdvantage = distanceFromFirstToSecondMark; - } else { - // first mark is leewards of second mark - leewardMark = markPositions.get(0); - windwardMark = markPositions.get(1); - distanceAdvantage = new CentralAngleDistance(-distanceFromFirstToSecondMark.getCentralAngleRad()); + LineLengthAndAdvantage result = null; + try { + if (allMarksHavePositions && numberOfMarks == 2) { + Wind combinedWind = getWind(markPositions.get(0), timePoint); + Distance distanceFromFirstToSecondMark; + final int indexOfWaypoint = getRace().getCourse().getIndexOfWaypoint(waypoint); + final TrackedLeg legDeterminingDirection = getTrackedLeg( + getRace().getCourse().getLegs().get(indexOfWaypoint==0?0:indexOfWaypoint-1)); + distanceFromFirstToSecondMark = legDeterminingDirection + .getWindwardDistance(markPositions.get(0), markPositions.get(1), timePoint); + final Position leewardMark; + final Position windwardMark; + final Distance distanceAdvantage; + if (distanceFromFirstToSecondMark.getMeters() > 0) { + // first mark is leewards of second mark + leewardMark = markPositions.get(0); + windwardMark = markPositions.get(1); + distanceAdvantage = distanceFromFirstToSecondMark; + } else { + // first mark is leewards of second mark + leewardMark = markPositions.get(0); + windwardMark = markPositions.get(1); + distanceAdvantage = new CentralAngleDistance(-distanceFromFirstToSecondMark.getCentralAngleRad()); + } + final NauticalSide advantageousSide; + if (windwardMark.crossTrackError(leewardMark, combinedWind.getFrom()).getCentralAngleRad() > 0) { + advantageousSide = NauticalSide.STARBOARD; + } else { + advantageousSide = NauticalSide.PORT; + } + result = new LineLengthAndAdvantageImpl(timePoint, waypoint, leewardMark.getDistance(windwardMark), + leewardMark.getBearingGreatCircle(windwardMark).getDifferenceTo(combinedWind.getFrom()), + advantageousSide, distanceAdvantage); } - final NauticalSide advantageousSide; - if (windwardMark.crossTrackError(leewardMark, combinedWind.getFrom()).getCentralAngleRad() > 0) { - advantageousSide = NauticalSide.STARBOARD; - } else { - advantageousSide = NauticalSide.PORT; - } - result = new LineLengthAndAdvantageImpl(timePoint, waypoint, - leewardMark.getDistance(windwardMark), - leewardMark.getBearingGreatCircle(windwardMark).getDifferenceTo(combinedWind.getFrom()), - advantageousSide, distanceAdvantage); - } else { - result = null; + } catch (NoWindException e) { + // result remains null; } return result; } diff --git a/java/com.sap.sailing.server/SailingServer (Proxy).launch b/java/com.sap.sailing.server/SailingServer (Proxy).launch index fd283c15bd2..1a95dd4bddb 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch index 69d27d3bf3b..9f1d0780408 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Jetty on 8889).launch @@ -26,6 +26,6 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch index 5939146639d..d22ff2b4aca 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, Remote Debug SAP VM).launch @@ -26,5 +26,5 @@ - + diff --git a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch index 4b7a4e1035d..a1cea3c14f9 100755 --- a/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch +++ b/java/com.sap.sailing.server/SailingServer (Proxy, SwissTiming Live Simulation).launch @@ -25,5 +25,5 @@ - +