diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index 0e891c3139a..16e4a94f5ff 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -32,6 +32,7 @@ import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; +import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; @@ -45,6 +46,7 @@ import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.RaceAbortedListener; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.RaceListener; import com.sap.sailing.domain.tracking.StartTimeChangedListener; @@ -998,4 +1000,16 @@ public class MockedTrackedRace implements DynamicTrackedRace { } + @Override + public void addRaceAbortedListener(RaceAbortedListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void onAbortedByRaceCommittee(Flags flag) { + // TODO Auto-generated method stub + + } + } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java index 114b9938890..d1c70ee4f26 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRaceWithStartTimeAndRanks.java @@ -34,6 +34,7 @@ import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.RaceAbortedListener; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.StartTimeChangedListener; import com.sap.sailing.domain.tracking.TrackedLeg; @@ -646,4 +647,10 @@ public class MockedTrackedRaceWithStartTimeAndRanks implements TrackedRace { } + @Override + public void addRaceAbortedListener(RaceAbortedListener listener) { + // TODO Auto-generated method stub + + } + } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java index 29665c00cf5..39015afa157 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java @@ -270,4 +270,12 @@ public interface DomainFactory { List createSidelines(String raceMetadataString, Iterable allEventControlPoints); + /** + * When a tracked race has been created for tracking with the TracTrac adapter, change listeners have to be subscribed to + * the {@link TrackedRace} which will notify certain changes to the race's state to TracTrac. This includes the course layout, + * the start time and whether a race was aborted. + */ + void addTracTracUpdateHandlers(URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracUsername, + String tracTracPassword, RaceDefinition raceDefinition, DynamicTrackedRace trackedRace); + } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index b9d55ec30d9..a0043ff0879 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -519,16 +519,8 @@ public class DomainFactoryImpl implements DomainFactory { trackedRace = createTrackedRace(trackedRegatta, raceDefinition, sidelines, windStore, EmptyGPSFixStore.INSTANCE, delayToLiveInMillis, millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate); logger.info("Added race " + raceDefinition + " to regatta " + trackedRegatta.getRegatta()); - - TracTracCourseDesignUpdateHandler courseDesignHandler = new TracTracCourseDesignUpdateHandler( - tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, - raceDefinition.getId()); - trackedRace.addCourseDesignChangedListener(courseDesignHandler); - - TracTracStartTimeUpdateHandler startTimeHandler = new TracTracStartTimeUpdateHandler( - tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, - raceDefinition.getId()); - trackedRace.addStartTimeChangedListener(startTimeHandler); + addTracTracUpdateHandlers(tracTracUpdateURI, tracTracEventUuid, tracTracUsername, tracTracPassword, + raceDefinition, trackedRace); raceCache.put(raceId, raceDefinition); raceCache.notifyAll(); } else { @@ -546,6 +538,23 @@ public class DomainFactoryImpl implements DomainFactory { } } + @Override + public void addTracTracUpdateHandlers(URI tracTracUpdateURI, UUID tracTracEventUuid, String tracTracUsername, + String tracTracPassword, RaceDefinition raceDefinition, DynamicTrackedRace trackedRace) { + TracTracCourseDesignUpdateHandler courseDesignHandler = new TracTracCourseDesignUpdateHandler( + tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, + raceDefinition.getId()); + trackedRace.addCourseDesignChangedListener(courseDesignHandler); + TracTracStartTimeUpdateHandler startTimeHandler = new TracTracStartTimeUpdateHandler( + tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, + raceDefinition.getId()); + trackedRace.addStartTimeChangedListener(startTimeHandler); + TracTracRaceAbortedHandler raceAbortedHandler = new TracTracRaceAbortedHandler( + tracTracUpdateURI, tracTracUsername, tracTracPassword, tracTracEventUuid, + raceDefinition.getId()); + trackedRace.addRaceAbortedListener(raceAbortedHandler); + } + private DynamicTrackedRace createTrackedRace(TrackedRegatta trackedRegatta, RaceDefinition race, Iterable sidelines, WindStore windStore, GPSFixStore gpsFixStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate) { return trackedRegatta.createTrackedRace(race, sidelines, diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java index f1312486df9..2ae5e70a74b 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java @@ -220,13 +220,7 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue additionalArgs = new HashMap<>(); + additionalArgs.put("race_status", raceStatus); + URL raceAbortedURL = buildUpdateURL(additionalArgs); + logger.info("Using " + raceAbortedURL.toString() + " for the race aborted notification!"); + HttpURLConnection connection = (HttpURLConnection) raceAbortedURL.openConnection(); + try { + setConnectionProperties(connection); + try { + checkAndLogUpdateResponse(connection); + } catch (ParseException e) { + e.printStackTrace(); + } + } finally { + if (connection != null) { + connection.disconnect(); + } else { + logger.severe("Connection to TracTrac race aborted URL " + raceAbortedURL.toString() + " could not be established"); + } + } + } +} diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java index 75160c64634..293b58b2ed0 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/UpdateHandler.java @@ -14,6 +14,7 @@ import java.net.URI; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; +import java.util.Map; import java.util.Map.Entry; import java.util.logging.Logger; @@ -62,7 +63,7 @@ public class UpdateHandler { } } - protected URL buildUpdateURL(HashMap additionalParameters) throws MalformedURLException, UnsupportedEncodingException { + protected URL buildUpdateURL(Map additionalParameters) throws MalformedURLException, UnsupportedEncodingException { String serverUpdateURI = this.updateURI.toString(); // make sure that the update URI always ends with a slash if (!serverUpdateURI.endsWith("/")) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java index ac65dcfec50..34e528415b5 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/DynamicTrackedRace.java @@ -7,6 +7,7 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Bearing; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; +import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sse.common.Util; public interface DynamicTrackedRace extends TrackedRace { @@ -96,6 +97,8 @@ public interface DynamicTrackedRace extends TrackedRace { void onCourseDesignChangedByRaceCommittee(CourseBase courseDesign); void onStartTimeChangedByRaceCommittee(TimePoint newStartTime); + + void onAbortedByRaceCommittee(Flags flag); void invalidateStartTime(); diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceAbortedListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceAbortedListener.java new file mode 100755 index 00000000000..1f9c2dcc089 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/RaceAbortedListener.java @@ -0,0 +1,10 @@ +package com.sap.sailing.domain.tracking; + +import java.io.IOException; +import java.net.MalformedURLException; + +import com.sap.sailing.domain.common.racelog.Flags; + +public interface RaceAbortedListener { + void raceAborted(Flags flag) throws MalformedURLException, IOException; +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java index 3624be9ceae..8f6d1542470 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/StartTimeChangedListener.java @@ -9,5 +9,5 @@ import com.sap.sailing.domain.common.TimePoint; public interface StartTimeChangedListener { void startTimeChanged(TimePoint newTimePoint) throws MalformedURLException, IOException; - + } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java index fddb107f363..0c04c02c7ce 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/TrackedRace.java @@ -615,6 +615,8 @@ public interface TrackedRace extends Serializable { void addStartTimeChangedListener(StartTimeChangedListener listener); + void addRaceAbortedListener(RaceAbortedListener listener); + /** * Tells how far the given competitor was from the start line at the time point of the given seconds before the start. *

diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java index caf5d0e4b63..2c1e055afbc 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java @@ -34,6 +34,7 @@ import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.impl.WindSourceImpl; +import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; import com.sap.sailing.domain.tracking.CourseDesignChangedListener; @@ -45,6 +46,7 @@ import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.GPSTrackListener; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.RaceAbortedListener; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.StartTimeChangedListener; import com.sap.sailing.domain.tracking.TrackedLeg; @@ -73,6 +75,7 @@ DynamicTrackedRace, GPSTrackListener { private transient Set courseDesignChangedListeners; private transient Set startTimeChangedListeners; + private transient Set raceAbortedListeners; public DynamicTrackedRaceImpl(TrackedRegatta trackedRegatta, RaceDefinition race, Iterable sidelines, WindStore windStore, GPSFixStore gpsFixStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed, @@ -80,8 +83,9 @@ DynamicTrackedRace, GPSTrackListener { super(trackedRegatta, race, sidelines, windStore, gpsFixStore, delayToLiveInMillis, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed, delayForCacheInvalidationOfWindEstimation); this.logListener = new DynamicTrackedRaceLogListener(this); - this.courseDesignChangedListeners = new HashSet(); - this.startTimeChangedListeners = new HashSet(); + this.courseDesignChangedListeners = new HashSet<>(); + this.startTimeChangedListeners = new HashSet<>(); + this.raceAbortedListeners = new HashSet<>(); this.raceIsKnownToStartUpwind = race.getBoatClass().typicallyStartsUpwind(); if (!raceIsKnownToStartUpwind) { Set windSourcesToExclude = new HashSet(); @@ -107,8 +111,9 @@ DynamicTrackedRace, GPSTrackListener { ois.defaultReadObject(); listeners = new HashSet(); logListener = new DynamicTrackedRaceLogListener(this); - courseDesignChangedListeners = new HashSet(); - startTimeChangedListeners = new HashSet(); + courseDesignChangedListeners = new HashSet<>(); + startTimeChangedListeners = new HashSet<>(); + raceAbortedListeners = new HashSet<>(); } /** @@ -854,7 +859,18 @@ DynamicTrackedRace, GPSTrackListener { startTimeChangedListener.startTimeChanged(newStartTime); } } catch (IOException e) { - e.printStackTrace(); + logger.log(Level.INFO, "Exception trying to notify race status change listeners about start time change", e); + } + } + + @Override + public void onAbortedByRaceCommittee(Flags flag) { + try { + for (RaceAbortedListener raceAbortedListener : raceAbortedListeners) { + raceAbortedListener.raceAborted(flag); + } + } catch (IOException e) { + logger.log(Level.INFO, "Exception trying to notify race status change listeners about start time change", e); } } @@ -862,6 +878,12 @@ DynamicTrackedRace, GPSTrackListener { public void addStartTimeChangedListener(StartTimeChangedListener listener) { this.startTimeChangedListeners.add(listener); } + + @Override + public void addRaceAbortedListener(RaceAbortedListener listener) { + this.raceAbortedListeners.add(listener); + } + /** * @return The Bearing of a line starting at w that needs to be crossed to pass a mark. */ diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java index 2a1680f136b..96c0dfa4298 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceLogListener.java @@ -10,9 +10,11 @@ import com.sap.sailing.domain.common.impl.WindSourceImpl; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent; +import com.sap.sailing.domain.racelog.RaceLogFlagEvent; import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent; import com.sap.sailing.domain.racelog.RaceLogStartTimeEvent; import com.sap.sailing.domain.racelog.RaceLogWindFixEvent; +import com.sap.sailing.domain.racelog.analyzing.impl.AbortingFlagFinder; import com.sap.sailing.domain.racelog.analyzing.impl.LastPublishedCourseDesignFinder; import com.sap.sailing.domain.racelog.analyzing.impl.StartTimeFinder; import com.sap.sailing.domain.racelog.analyzing.impl.WindFixesFinder; @@ -34,6 +36,7 @@ public class DynamicTrackedRaceLogListener extends BaseRaceLogEventVisitor { private LastPublishedCourseDesignFinder courseDesignFinder; private StartTimeFinder startTimeFinder; + private AbortingFlagFinder abortingFlagFinder; public DynamicTrackedRaceLogListener(DynamicTrackedRace trackedRace) { this.trackedRace = trackedRace; @@ -49,6 +52,7 @@ public class DynamicTrackedRaceLogListener extends BaseRaceLogEventVisitor { trackedRace.invalidateEndTime(); courseDesignFinder = new LastPublishedCourseDesignFinder(raceLog); startTimeFinder = new StartTimeFinder(raceLog); + abortingFlagFinder = new AbortingFlagFinder(raceLog); initializeWindTrack(raceLog); analyze(); } @@ -132,6 +136,11 @@ public class DynamicTrackedRaceLogListener extends BaseRaceLogEventVisitor { trackedRace.invalidateStartTime(); /* reset start time */ trackedRace.onStartTimeChangedByRaceCommittee(null); + RaceLogFlagEvent abortingFlag = abortingFlagFinder.analyze(); + if (abortingFlag != null) { + // previous pass was aborted; notify TracTrac + trackedRace.onAbortedByRaceCommittee(abortingFlag.getUpperFlag()); + } } @Override @@ -149,5 +158,4 @@ public class DynamicTrackedRaceLogListener extends BaseRaceLogEventVisitor { // add the wind fix to the race committee WindTrack trackedRace.recordWind(event.getWindFix(), raceCommitteeWindSource); } - } diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java index 8db362013a9..733ca12c5b2 100755 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/MockedTrackedRace.java @@ -31,6 +31,7 @@ import com.sap.sailing.domain.common.Tack; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WindSource; import com.sap.sailing.domain.common.WindSourceType; +import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.leaderboard.ScoringScheme; import com.sap.sailing.domain.racelog.RaceLog; import com.sap.sailing.domain.racelog.tracking.GPSFixStore; @@ -44,6 +45,7 @@ import com.sap.sailing.domain.tracking.GPSFixMoving; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.RaceAbortedListener; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.RaceListener; import com.sap.sailing.domain.tracking.StartTimeChangedListener; @@ -999,4 +1001,16 @@ public class MockedTrackedRace implements DynamicTrackedRace { } + @Override + public void addRaceAbortedListener(RaceAbortedListener listener) { + // TODO Auto-generated method stub + + } + + @Override + public void onAbortedByRaceCommittee(Flags flag) { + // TODO Auto-generated method stub + + } + } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java index 50cc4ca5967..44213111e6e 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/masterdata/DummyTrackedRace.java @@ -32,6 +32,7 @@ import com.sap.sailing.domain.tracking.GPSFixTrack; import com.sap.sailing.domain.tracking.LineDetails; import com.sap.sailing.domain.tracking.Maneuver; import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.RaceAbortedListener; import com.sap.sailing.domain.tracking.RaceChangeListener; import com.sap.sailing.domain.tracking.StartTimeChangedListener; import com.sap.sailing.domain.tracking.TrackedLeg; @@ -595,4 +596,10 @@ public class DummyTrackedRace extends TrackedRaceWithWindEssentials { } + @Override + public void addRaceAbortedListener(RaceAbortedListener listener) { + // TODO Auto-generated method stub + + } + } diff --git a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java index b8ae9b02518..0e7785ccddd 100644 --- a/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java +++ b/mobile/com.sap.sailing.racecommittee.app/src/com/sap/sailing/racecommittee/app/ui/fragments/dialogs/AbortModeSelectionDialog.java @@ -97,10 +97,10 @@ public class AbortModeSelectionDialog extends RaceDialogFragment { TimePoint now = MillisecondsTimePoint.now(); RaceState state = getRaceState(); if (this.abortFlag.equals(Flags.AP)) { - state.setAborted(now, true, additionalFlag); + state.setAborted(now, /* postponed */ true, additionalFlag); } else if (this.abortFlag.equals(Flags.NOVEMBER)) { - state.setAborted(now, false, additionalFlag); + state.setAborted(now, /* postponed */ false, additionalFlag); } state.setAdvancePass(now); this.dismiss();