changed the reading of metadata for marks from TracTrac in case of a gate to distinguish between mark1 and mark2 of a gate

This commit is contained in:
fmittag
2012-11-28 16:16:41 +01:00
parent 4bbad4503e
commit 5fdb1a9e56
3 changed files with 36 additions and 21 deletions
@@ -145,26 +145,27 @@ public class DomainFactoryImpl implements DomainFactory {
if (domainControlPoint == null) {
String controlPointName = controlPoint.getName();
Map<String, String> controlPointMetadata = parseControlPointMetadata(controlPoint);
MarkType type = MarkType.BUOY;
String markType = controlPointMetadata.get("Type");
if(markType != null && !markType.isEmpty()) {
for(MarkType m: MarkType.values()) {
if(m.name().equalsIgnoreCase(markType)) {
type = m;
break;
}
}
}
String markColor = controlPointMetadata.get("Color");
String markShape = controlPointMetadata.get("Shape");
String markPattern = controlPointMetadata.get("Pattern");
if (controlPoint.getHasTwoPoints()) {
// it's a gate
Mark leftMark = baseDomainFactory.getOrCreateMark(controlPointName + " (left)", type, markColor, markShape, markPattern);
Mark rightMark = baseDomainFactory.getOrCreateMark(controlPointName + " (right)", type, markColor, markShape, markPattern);
domainControlPoint = baseDomainFactory.createGate(leftMark, rightMark, controlPointName);
MarkType type1 = resolveMarkTypeFromMetadata(controlPointMetadata, "P1.Type");
MarkType type2 = resolveMarkTypeFromMetadata(controlPointMetadata, "P2.Type");
String color1 = controlPointMetadata.get("P1.Color");
String color2 = controlPointMetadata.get("P2.Color");
String shape1 = controlPointMetadata.get("P1.Shape");
String shape2 = controlPointMetadata.get("P2.Shape");
String pattern1 = controlPointMetadata.get("P1.Pattern");
String pattern2 = controlPointMetadata.get("P2.Pattern");
Mark mark1 = baseDomainFactory.getOrCreateMark(controlPointName + " (1)", type1, color1, shape1, pattern1);
Mark mark2 = baseDomainFactory.getOrCreateMark(controlPointName + " (2)", type2, color2, shape2, pattern2);
domainControlPoint = baseDomainFactory.createGate(mark1, mark2, controlPointName);
} else {
Mark mark = baseDomainFactory.getOrCreateMark(controlPointName, type, markColor, markShape, markPattern);
MarkType type = resolveMarkTypeFromMetadata(controlPointMetadata, "Type");
String color = controlPointMetadata.get("Color");
String shape = controlPointMetadata.get("Shape");
String pattern = controlPointMetadata.get("Pattern");
Mark mark = baseDomainFactory.getOrCreateMark(controlPointName, type, color, shape, pattern);
domainControlPoint = mark;
}
controlPointCache.put(controlPoint, domainControlPoint);
@@ -172,6 +173,20 @@ public class DomainFactoryImpl implements DomainFactory {
return domainControlPoint;
}
}
private MarkType resolveMarkTypeFromMetadata(Map<String, String> controlPointMetadata, String typePropertyName) {
MarkType result = MarkType.BUOY;
String markType = controlPointMetadata.get(typePropertyName);
if(markType != null && !markType.isEmpty()) {
for(MarkType m: MarkType.values()) {
if(m.name().equalsIgnoreCase(markType)) {
result = m;
break;
}
}
}
return result;
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private Map<String, String> parseControlPointMetadata(ControlPoint controlPoint) {
@@ -82,9 +82,9 @@ public class RaceMapImageManager {
createMarkIconDescriptor(resources.buoyDarkOrangeIcon(), MarkType.BUOY, "orange", null, null, 6, 20);
createMarkIconDescriptor(resources.buoyBlackFinishIcon(), MarkType.BUOY, "black", "cylinder", "checkered", 6, 20);
createMarkIconDescriptor(resources.cameraBoatIcon(), MarkType.CAMERABOAT, null, null, null, 6, 15);
createMarkIconDescriptor(resources.umpireBoatIcon(), MarkType.UMPIREBOAT, null, null, null, 6, 15);
createMarkIconDescriptor(resources.startBoatIcon(), MarkType.STARTBOAT, null, null, null, 6, 15);
createMarkIconDescriptor(resources.cameraBoatIcon(), MarkType.CAMERABOAT, null, null, null, 35, 20);
createMarkIconDescriptor(resources.umpireBoatIcon(), MarkType.UMPIREBOAT, null, null, null, 35, 20);
createMarkIconDescriptor(resources.startBoatIcon(), MarkType.STARTBOAT, null, null, null, 35, 20);
createMarkIconDescriptor(resources.landmarkIcon(), MarkType.LANDMARK, null, null, null, 6, 15);
@@ -47,7 +47,7 @@ interface RaceMapResources extends ClientBundle {
@Source("com/sap/sailing/gwt/ui/client/images/umpireBoat.png")
ImageResource umpireBoatIcon();
@Source("com/sap/sailing/gwt/ui/client/images/umpireBoat.png")
@Source("com/sap/sailing/gwt/ui/client/images/startBoat.png")
ImageResource startBoatIcon();
@Source("com/sap/sailing/gwt/ui/client/images/wind_combined.png")