From 187a9f127aa6394417e8a73e3be76e4edca15665 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 22 Aug 2019 16:41:50 +0200 Subject: [PATCH] Bug 5085: Removed redundant ControlPointTemplateImpl by using MarkPairTemplateImpl --- .../test/TestLapConfiguration.java | 10 ++--- .../impl/ControlPointTemplateImpl.java | 27 ------------- .../gwt/ui/server/SailingServiceImpl.java | 38 ++++++++++--------- 3 files changed, 25 insertions(+), 50 deletions(-) delete mode 100755 java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/ControlPointTemplateImpl.java diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/coursetemplate/test/TestLapConfiguration.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/coursetemplate/test/TestLapConfiguration.java index 1f7e643fb96..100735431c9 100755 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/coursetemplate/test/TestLapConfiguration.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/coursetemplate/test/TestLapConfiguration.java @@ -19,8 +19,8 @@ import com.sap.sailing.domain.coursetemplate.ControlPointTemplate; import com.sap.sailing.domain.coursetemplate.CourseTemplate; import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.coursetemplate.WaypointTemplate; -import com.sap.sailing.domain.coursetemplate.impl.ControlPointTemplateImpl; import com.sap.sailing.domain.coursetemplate.impl.CourseTemplateImpl; +import com.sap.sailing.domain.coursetemplate.impl.MarkPairTemplateImpl; import com.sap.sailing.domain.coursetemplate.impl.MarkTemplateImpl; import com.sap.sailing.domain.coursetemplate.impl.RepeatablePartImpl; import com.sap.sailing.domain.coursetemplate.impl.WaypointTemplateImpl; @@ -43,8 +43,8 @@ public class TestLapConfiguration { top = new MarkTemplateImpl("Windward Mark", "1", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.BUOY); gateLeft = new MarkTemplateImpl("Leeward Gate Port", "4p", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.BUOY); gateRight = new MarkTemplateImpl("Leeward Gate Starboard", "4s", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.BUOY); - startFinish = new ControlPointTemplateImpl("Start/Finish", Arrays.asList(startBoat, pin)); - gate = new ControlPointTemplateImpl("Leeward Gate", Arrays.asList(gateLeft, gateRight)); + startFinish = new MarkPairTemplateImpl("Start/Finish", startBoat, pin); + gate = new MarkPairTemplateImpl("Leeward Gate", gateLeft, gateRight); courseTemplate = new CourseTemplateImpl(UUID.randomUUID(), "L", /* marks */ Arrays.asList(startBoat, pin, top, gateLeft, gateRight), /* waypoints */ Arrays.asList(new WaypointTemplateImpl(startFinish, PassingInstruction.Line), @@ -93,7 +93,7 @@ public class TestLapConfiguration { public void testExceptionInCaseMarkIsMissing() { startBoat = new MarkTemplateImpl("Start Boat", "SB", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.STARTBOAT); pin = new MarkTemplateImpl("Pin End", "Pin", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.BUOY); - startFinish = new ControlPointTemplateImpl("Start/Finish", Arrays.asList(startBoat, pin)); + startFinish = new MarkPairTemplateImpl("Start/Finish", startBoat, pin); try { courseTemplate = new CourseTemplateImpl("Test", /* marks */ Arrays.asList(startBoat), @@ -110,7 +110,7 @@ public class TestLapConfiguration { public void testZeroLapsOkIfNoRepeatablePart() { startBoat = new MarkTemplateImpl("Start Boat", "SB", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.STARTBOAT); pin = new MarkTemplateImpl("Pin End", "Pin", /* color */ null, /* shape */ null, /* pattern */ null, MarkType.BUOY); - startFinish = new ControlPointTemplateImpl("Start/Finish", Arrays.asList(startBoat, pin)); + startFinish = new MarkPairTemplateImpl("Start/Finish", startBoat, pin); courseTemplate = new CourseTemplateImpl("Test", /* marks */ Arrays.asList(startBoat, pin), /* waypoints */ Arrays.asList(new WaypointTemplateImpl(startFinish, PassingInstruction.Line)), /* associatedRoles */ Collections.emptyMap(), diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/ControlPointTemplateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/ControlPointTemplateImpl.java deleted file mode 100755 index d5f891977ee..00000000000 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/coursetemplate/impl/ControlPointTemplateImpl.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sap.sailing.domain.coursetemplate.impl; - -import java.util.HashSet; -import java.util.Set; - -import com.sap.sailing.domain.coursetemplate.ControlPointTemplate; -import com.sap.sailing.domain.coursetemplate.MarkTemplate; -import com.sap.sse.common.Util; -import com.sap.sse.common.impl.NamedImpl; - -public class ControlPointTemplateImpl extends NamedImpl implements ControlPointTemplate { - private static final long serialVersionUID = 5150679935881533985L; - private final Iterable marks; - - public ControlPointTemplateImpl(String name, Iterable marks) { - super(name); - final Set theMarks = new HashSet<>(); - Util.addAll(marks, theMarks); - this.marks = theMarks; - } - - @Override - public Iterable getMarks() { - return marks; - } - -} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index b87f8ad73e1..f5aafce47f9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -307,14 +307,14 @@ import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl; import com.sap.sailing.domain.common.tracking.impl.PreciseCompactGPSFixMovingImpl.PreciseCompactPosition; import com.sap.sailing.domain.common.windfinder.SpotDTO; import com.sap.sailing.domain.coursetemplate.CommonMarkProperties; +import com.sap.sailing.domain.coursetemplate.ControlPointTemplate; import com.sap.sailing.domain.coursetemplate.CourseTemplate; +import com.sap.sailing.domain.coursetemplate.MarkPairTemplate.MarkPairTemplateFactory; import com.sap.sailing.domain.coursetemplate.MarkProperties; import com.sap.sailing.domain.coursetemplate.MarkTemplate; import com.sap.sailing.domain.coursetemplate.RepeatablePart; import com.sap.sailing.domain.coursetemplate.WaypointTemplate; -import com.sap.sailing.domain.coursetemplate.impl.ControlPointTemplateImpl; import com.sap.sailing.domain.coursetemplate.impl.MarkPropertiesImpl; -import com.sap.sailing.domain.coursetemplate.impl.MarkTemplateImpl; import com.sap.sailing.domain.coursetemplate.impl.RepeatablePartImpl; import com.sap.sailing.domain.coursetemplate.impl.WaypointTemplateImpl; import com.sap.sailing.domain.igtimiadapter.Account; @@ -9465,19 +9465,19 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet waypointTemplate.getPassingInstruction()); } - private WaypointTemplate convertToWaypointTemplate(WaypointTemplateDTO waypointTemplate) { - return new WaypointTemplateImpl( - new ControlPointTemplateImpl(waypointTemplate.getName(), - waypointTemplate.getMarkTemplatesForControlPoint().stream() - .map(this::convertToMarkTemplate).collect(Collectors.toList())), - waypointTemplate.getPassingInstruction()); - } - - private MarkTemplate convertToMarkTemplate(MarkTemplateDTO markTemplate) { - return new MarkTemplateImpl(markTemplate.getUuid(), markTemplate.getName(), - markTemplate.getCommonMarkProperties().getShortName(), - markTemplate.getCommonMarkProperties().getColor(), markTemplate.getCommonMarkProperties().getShape(), - markTemplate.getCommonMarkProperties().getPattern(), markTemplate.getCommonMarkProperties().getType()); + private WaypointTemplate convertToWaypointTemplate(WaypointTemplateDTO waypointTemplate, final MarkPairTemplateFactory markPairTemplateFactory) { + final List resolvedMarkTemplates = waypointTemplate.getMarkTemplatesForControlPoint().stream() + .map(t -> getSharedSailingData().getMarkTemplateById(t.getUuid())).collect(Collectors.toList()); + final ControlPointTemplate controlPointTemplate; + if (resolvedMarkTemplates.size() == 1) { + controlPointTemplate = resolvedMarkTemplates.get(0); + } else if (resolvedMarkTemplates.size() == 2) { + controlPointTemplate = markPairTemplateFactory.create(waypointTemplate.getName(), resolvedMarkTemplates); + } else { + throw new IllegalArgumentException("Waypoints must contain one or two marks"); + } + + return new WaypointTemplateImpl(controlPointTemplate, waypointTemplate.getPassingInstruction()); } private RepeatablePart convertToRepeatablePart(RepeatablePartDTO repeatablePart) { @@ -9496,12 +9496,14 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet throw new IllegalArgumentException( String.format("Invalid URL: %s", courseTemplate.getOptionalImageUrl().get())); } - final List marks = courseTemplate.getMarkTemplates().stream().map(this::convertToMarkTemplate) + final List marks = courseTemplate.getMarkTemplates().stream().map(t -> getSharedSailingData().getMarkTemplateById(t.getUuid())) .collect(Collectors.toList()); + final MarkPairTemplateFactory markPairTemplateFactory = new MarkPairTemplateFactory(); final List waypoints = courseTemplate.getWaypointTemplates().stream() - .map(this::convertToWaypointTemplate).collect(Collectors.toList()); + .map(wp -> convertToWaypointTemplate(wp, markPairTemplateFactory)).collect(Collectors.toList()); final Map associatedRoles = courseTemplate.getAssociatedRoles().entrySet().stream() - .collect(Collectors.toMap(k -> convertToMarkTemplate(k.getKey()), Entry::getValue)); + .collect(Collectors.toMap(k -> getSharedSailingData().getMarkTemplateById(k.getKey().getUuid()), + Entry::getValue)); final RepeatablePart optionalRepeatablePart = courseTemplate.getRepeatablePart() != null ? convertToRepeatablePart(courseTemplate.getRepeatablePart()) : null;