work commit..

added passingSide for course waypoints (parsed from tractrac metadata) to all course/waypoint creation methods and course updates
next step is adaptation of tests and swisstiming adapter
This commit is contained in:
fmittag committed 2013-02-26 20:04:25 +01:00
1 parent 8f532fd8d0
commit 88a6ea4f65
11 files changed
+163 -32

No files matched your search

@@ -4,6 +4,8 @@ import java.util.List;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import com.sap.sailing.domain.common.Named;
import com.sap.sailing.domain.common.NauticalSide;
import com.sap.sailing.domain.common.impl.Util.Pair;
import difflib.PatchFailedException;
@@ -74,7 +76,7 @@ public interface Course extends Named {
* to the registered {@link CourseListener}s as if {@link #addWaypoint(int, Waypoint)} and {@link #removeWaypoint(int)}
* had been used.
*/
void update(List<? extends ControlPoint> newControlPoints, DomainFactory baseDomainFactory) throws PatchFailedException;
void update(List<Pair<ControlPoint, NauticalSide>> newControlPoints, DomainFactory baseDomainFactory) throws PatchFailedException;
Iterable<Leg> getLegsAdjacentTo(Mark mark);
@@ -7,6 +7,7 @@ import java.util.UUID;
import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.NauticalSide;
import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
@@ -61,7 +62,7 @@ public interface DomainFactory {
* The waypoint created is weakly cached so that when requested again by
* {@link #getExistingWaypointById(Waypoint)} it is found.
*/
Waypoint createWaypoint(ControlPoint controlPoint);
Waypoint createWaypoint(ControlPoint controlPoint, NauticalSide passingSide);
Waypoint getExistingWaypointById(Waypoint waypointPrototype);
@@ -21,7 +21,9 @@ import com.sap.sailing.domain.base.DomainFactory;
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.NauticalSide;
import com.sap.sailing.domain.common.impl.NamedImpl;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.util.CourseAsWaypointList;
import com.sap.sailing.util.impl.LockUtil;
import com.sap.sailing.util.impl.NamedReentrantReadWriteLock;
@@ -364,7 +366,7 @@ public class CourseImpl extends NamedImpl implements Course {
}
@Override
public void update(List<? extends ControlPoint> newControlPoints, DomainFactory baseDomainFactory) throws PatchFailedException {
public void update(List<Pair<ControlPoint, NauticalSide>> newControlPoints, DomainFactory baseDomainFactory) throws PatchFailedException {
LockUtil.lockForWrite(lock);
try {
Iterable<Waypoint> courseWaypoints = getWaypoints();
@@ -383,12 +385,12 @@ public class CourseImpl extends NamedImpl implements Course {
}
wpl.add(waypoint);
}
for (com.sap.sailing.domain.base.ControlPoint newDomainControlPoint : newControlPoints) {
List<Waypoint> waypoints = existingWaypointsByControlPoint.get(newDomainControlPoint);
for (Pair<ControlPoint, NauticalSide> newDomainControlPoint : newControlPoints) {
List<Waypoint> waypoints = existingWaypointsByControlPoint.get(newDomainControlPoint.getA());
Waypoint waypoint;
if (waypoints == null || waypoints.isEmpty()) {
// must be a new control point for which we don't have a waypoint yet
waypoint = baseDomainFactory.createWaypoint(newDomainControlPoint);
waypoint = baseDomainFactory.createWaypoint(newDomainControlPoint.getA(), newDomainControlPoint.getB());
} else {
waypoint = waypoints.remove(0); // take the first from the list
}
@@ -25,8 +25,10 @@ import com.sap.sailing.domain.base.ObjectInputStreamResolvingAgainstDomainFactor
import com.sap.sailing.domain.base.Team;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.NauticalSide;
import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.WithID;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
import com.sap.sailing.domain.leaderboard.impl.HighPoint;
import com.sap.sailing.domain.leaderboard.impl.HighPointExtremeSailingSeriesOverall;
@@ -169,7 +171,7 @@ public class DomainFactoryImpl implements DomainFactory {
}
@Override
public Waypoint createWaypoint(ControlPoint controlPoint) {
public Waypoint createWaypoint(ControlPoint controlPoint, NauticalSide passingSide) {
synchronized (waypointCache) {
expungeStaleWaypointCacheEntries();
Waypoint result = new WaypointImpl(controlPoint);