passing on MarkType information from SwissTiming adapter to domain model

Change-Id: I078ac2e100f82092d1a32d14380904c659e93f12
This commit is contained in:
Axel Uhl committed 2016-12-29 00:35:48 +01:00
1 parent 9fe507092d
commit f5850bdf26
5 files changed
+61 -7

No files matched your search

@@ -10,6 +10,7 @@ import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.RaceDefinition;
import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
import com.sap.sailing.domain.racelog.RaceLogStore;
import com.sap.sailing.domain.regattalog.RegattaLogStore;
@@ -64,7 +65,7 @@ public interface DomainFactory {
long delayToLiveInMillis, SwissTimingFactory swissTimingFactory, DomainFactory domainFactory,
RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, boolean useInternalMarkPassingAlgorithm);
ControlPoint getOrCreateControlPoint(Iterable<String> devices);
ControlPoint getOrCreateControlPoint(Iterable<String> devices, MarkType markType);
RaceDefinition createRaceDefinition(Regatta regatta, String raceID, Iterable<Competitor> competitors,
List<ControlPoint> courseDefinition);
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.impl.PersonImpl;
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
import com.sap.sailing.domain.base.impl.RegattaImpl;
import com.sap.sailing.domain.base.impl.TeamImpl;
import com.sap.sailing.domain.common.MarkType;
import com.sap.sailing.domain.common.PassingInstruction;
import com.sap.sailing.domain.common.ScoringSchemeType;
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
@@ -264,7 +265,7 @@ public class DomainFactoryImpl implements DomainFactory {
private com.sap.sailing.domain.base.Course createCourse(String courseName, Course course) {
List<Waypoint> waypoints = new ArrayList<Waypoint>();
for (Mark mark : course.getMarks()) {
ControlPoint controlPoint = getOrCreateControlPoint(mark.getDevices());
ControlPoint controlPoint = getOrCreateControlPoint(mark.getDevices(), getMarkType(mark.getMarkType()));
Waypoint waypoint = baseDomainFactory.createWaypoint(controlPoint, /* passingInstruction */ PassingInstruction.None);
waypoints.add(waypoint);
}
@@ -272,15 +273,28 @@ public class DomainFactoryImpl implements DomainFactory {
return result;
}
/**
* Converts a mark type as defined by SwissTiming into a {@link MarkType} as defined by the domain model
*/
private MarkType getMarkType(com.sap.sailing.domain.swisstimingadapter.Mark.MarkType markType) {
final MarkType result;
if (markType == null) {
result = null;
} else {
result = MarkType.BUOY;
}
return result;
}
@Override
public ControlPoint getOrCreateControlPoint(Iterable<String> devices) {
public ControlPoint getOrCreateControlPoint(Iterable<String> devices, MarkType markType) {
ControlPoint result;
synchronized (controlPointCache) {
result = controlPointCache.get(devices);
if (result == null) {
switch (Util.size(devices)) {
case 1:
result = getOrCreateMark(devices.iterator().next());
result = getOrCreateMark(devices.iterator().next(), markType);
break;
case 2:
Iterator<String> markNameIter = devices.iterator();
@@ -299,6 +313,11 @@ public class DomainFactoryImpl implements DomainFactory {
return result;
}
private ControlPoint getOrCreateMark(String next, MarkType markType) {
// TODO Auto-generated method stub
return null;
}
/**
* @param trackerID
* the "device name" and the "sail number" in case of an {@link MessageType#RPD RPD} message, used as the mark's
@@ -321,7 +340,7 @@ public class DomainFactoryImpl implements DomainFactory {
List<com.sap.sse.common.Util.Pair<com.sap.sailing.domain.base.ControlPoint, PassingInstruction>> newDomainControlPoints = new ArrayList<com.sap.sse.common.Util.Pair<com.sap.sailing.domain.base.ControlPoint, PassingInstruction>>();
for (Mark mark : marks) {
// TODO bug 1043: propagate the mark names to the waypoint names
com.sap.sailing.domain.base.ControlPoint domainControlPoint = getOrCreateControlPoint(mark.getDevices());
com.sap.sailing.domain.base.ControlPoint domainControlPoint = getOrCreateControlPoint(mark.getDevices(), getMarkType(mark.getMarkType()));
newDomainControlPoints.add(new com.sap.sse.common.Util.Pair<>(domainControlPoint, PassingInstruction.None));
}
courseToUpdate.update(newDomainControlPoints, baseDomainFactory);