implemented the new event FinishPositioningListChanged, now it can be

replicated, serialized and deserialized and persisted
This commit is contained in:
Armin Zamani committed 2013-04-05 15:23:38 +02:00
1 parent 0672496e0f
commit db26b0aab7
18 files changed
+246 -4

No files matched your search

@@ -3,6 +3,7 @@ package com.sap.sailing.racecommittee.app.domain.racelog.impl;
import com.sap.sailing.domain.racelog.RaceLogCourseAreaChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogCourseDesignChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogEventVisitor;
import com.sap.sailing.domain.racelog.RaceLogFinishPositioningListChangedEvent;
import com.sap.sailing.domain.racelog.RaceLogFlagEvent;
import com.sap.sailing.domain.racelog.RaceLogPassChangeEvent;
import com.sap.sailing.domain.racelog.RaceLogRaceStatusEvent;
@@ -41,4 +42,9 @@ public class RaceLogChangedVisitor implements RaceLogEventVisitor {
listener.eventAdded(event);
}
@Override
public void visit(RaceLogFinishPositioningListChangedEvent event) {
listener.eventAdded(event);
}
}
@@ -1,5 +1,8 @@
package com.sap.sailing.racecommittee.app.domain.state;
import java.util.List;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CourseBase;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
@@ -50,11 +53,18 @@ public interface RaceState {
TimePoint getFinishingStartTime();
/**
* Sets the current race's course design
* Returns the current race's course design
*
* @return the course data or <code>null</code>.
*/
CourseBase getCourseDesign();
/**
* Returns the current race's finish positioning list
*
* @return the positioning list for the finish or <code>null</code>.
*/
List<Competitor> getFinishPositioningList();
/**
* Sets the current race's start time
@@ -71,6 +81,13 @@ public interface RaceState {
* to be set.
*/
void setCourseDesign(CourseBase newCourseData);
/**
* Sets the current finish positioning list for the race
*
* @param competitors the current finishing list
*/
void setFinishPositioningListChanged(List<Competitor> competitors);
/**
* Updates the race's status.
@@ -2,6 +2,7 @@ package com.sap.sailing.racecommittee.app.domain.state.impl;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
@@ -14,6 +15,7 @@ import com.sap.sailing.domain.racelog.PassAwareRaceLog;
import com.sap.sailing.domain.racelog.RaceLog;
import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.domain.racelog.RaceLogEventFactory;
import com.sap.sailing.domain.racelog.analyzing.impl.FinishPositioningListFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.FinishedTimeFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.FinishingTimeFinder;
import com.sap.sailing.domain.racelog.analyzing.impl.LastPublishedCourseDesignFinder;
@@ -40,6 +42,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
private FinishedTimeFinder finishedTimeFinder;
private FinishingTimeFinder finishingTimeFinder;
private LastPublishedCourseDesignFinder lastCourseDesignFinder;
private FinishPositioningListFinder finishPositioningListFinder;
public RaceStateImpl(PassAwareRaceLog raceLog, StartProcedure procedure) {
this.raceLog = raceLog;
@@ -56,6 +59,7 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
this.finishedTimeFinder = new FinishedTimeFinder(raceLog);
this.statusAnalyzer = new RaceStatusAnalyzer(raceLog);
this.lastCourseDesignFinder = new LastPublishedCourseDesignFinder(raceLog);
this.finishPositioningListFinder = new FinishPositioningListFinder(raceLog);
updateStatus();
}
@@ -161,4 +165,17 @@ public class RaceStateImpl implements RaceState, RaceLogChangedListener {
return finishingTimeFinder.getFinishingTime();
}
@Override
public void setFinishPositioningListChanged(List<Competitor> competitors) {
TimePoint eventTime = MillisecondsTimePoint.now();
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createFinishPositioningListChangedEvent(eventTime, competitors, raceLog.getCurrentPassId());
this.raceLog.add(event);
}
@Override
public List<Competitor> getFinishPositioningList() {
return finishPositioningListFinder.getFinishPositioningList();
}
}