mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-06 19:12:23 +00:00
bug5866/bug5867: pass through centerPosition/radius for CourseArea creation
This commit is contained in:
1 parent
8d3c5c81d1
commit
9dd347b7c2
10 files changed
+42
-20
No files matched your search
+1
-1
@@ -39,6 +39,6 @@ public class CourseAreaImpl extends NamedImpl implements CourseArea {
|
||||
|
||||
@Override
|
||||
public CourseArea resolve(SharedDomainFactory<?> domainFactory) {
|
||||
return domainFactory.getOrCreateCourseArea(id, getName(), /* centerPosition */ null, /* radius */ null);
|
||||
return domainFactory.getOrCreateCourseArea(id, getName(), getCenterPosition(), getRadius());
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -356,6 +356,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta;
|
||||
import com.sap.sailing.server.security.SailingViewerRole;
|
||||
import com.sap.sailing.server.util.WaitForTrackedRaceUtil;
|
||||
import com.sap.sailing.xrr.schema.RegattaResults;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sse.common.Speed;
|
||||
@@ -1546,7 +1547,9 @@ public class SailingServiceWriteImpl extends SailingServiceImpl implements Saili
|
||||
getSecurityService().checkCurrentUserUpdatePermission(getService().getEvent(eventId));
|
||||
getService().apply(new AddCourseAreas(eventId,
|
||||
Util.toArray(Util.map(courseAreas, CourseAreaDTO::getName), new String[courseAreas.size()]),
|
||||
Util.toArray(Util.map(courseAreas, CourseAreaDTO::getId), new UUID[courseAreas.size()])));
|
||||
Util.toArray(Util.map(courseAreas, CourseAreaDTO::getId), new UUID[courseAreas.size()]),
|
||||
Util.toArray(Util.map(courseAreas, CourseAreaDTO::getCenterPosition), new Position[courseAreas.size()]),
|
||||
Util.toArray(Util.map(courseAreas, CourseAreaDTO::getRadius), new Distance[courseAreas.size()])));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+5
-1
@@ -59,6 +59,7 @@ import com.sap.sailing.domain.base.impl.EventBaseImpl;
|
||||
import com.sap.sailing.domain.common.CompetitorRegistrationType;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
import com.sap.sailing.domain.common.NotFoundException;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.RankingMetrics;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
@@ -101,6 +102,7 @@ import com.sap.sailing.server.operationaltransformation.UpdateSeries;
|
||||
import com.sap.sailing.server.security.SailingViewerRole;
|
||||
import com.sap.sailing.shared.server.gateway.jaxrs.AbstractSailingServerResource;
|
||||
import com.sap.sse.InvalidDateException;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -768,7 +770,9 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
SecuredDomainType.EVENT.getStringPermissionForObject(DefaultActions.UPDATE, event));
|
||||
String[] courseAreaNames = new String[] { courseAreaName };
|
||||
UUID[] courseAreaIds = new UUID[] { UUID.randomUUID() };
|
||||
final CourseArea[] courseAreas = getService().apply(new AddCourseAreas(event.getId(), courseAreaNames, courseAreaIds));
|
||||
final CourseArea[] courseAreas = getService().apply(
|
||||
new AddCourseAreas(event.getId(), courseAreaNames, courseAreaIds,
|
||||
/* centerPositions */ new Position[] { null }, /* radiuses */ new Distance[] { null }));
|
||||
return courseAreas[0];
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -96,6 +96,7 @@ import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateEvent;
|
||||
import com.sap.sailing.server.security.PermissionAwareRaceTrackingHandler;
|
||||
import com.sap.sailing.server.util.WaitForTrackedRaceUtil;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
@@ -743,7 +744,7 @@ public class ExpeditionAllInOneImporter {
|
||||
private UUID addDefaultCourseArea(final Event event) {
|
||||
final String courseAreaName = "Default";
|
||||
final UUID courseAreaId = UUID.randomUUID();
|
||||
service.addCourseAreas(event.getId(), new String[] { courseAreaName }, new UUID[] { courseAreaId });
|
||||
service.addCourseAreas(event.getId(), new String[] { courseAreaName }, new UUID[] { courseAreaId }, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0]);
|
||||
return courseAreaId;
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -105,6 +105,7 @@ import com.sap.sailing.domain.tracking.TrackingConnectorInfo;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.WindTracker;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveEvent;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.PairingListCreationException;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TypeBasedServiceFinder;
|
||||
@@ -509,7 +510,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
void removeRemoteSailingServerReference(String name);
|
||||
|
||||
|
||||
CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds);
|
||||
CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds, Position[] centerPositions, Distance[] radiuses);
|
||||
|
||||
com.sap.sailing.domain.base.DomainFactory getBaseDomainFactory();
|
||||
|
||||
@@ -595,7 +596,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
|
||||
void setRegattaForRace(Regatta regatta, String raceIdAsString);
|
||||
|
||||
CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames);
|
||||
CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames, Position[] centerPositions, Distance[] radiuses);
|
||||
|
||||
CourseArea[] removeCourseAreaWithoutReplication(UUID eventId, UUID[] courseAreaIds);
|
||||
|
||||
|
||||
+8
-2
@@ -5,8 +5,10 @@ import java.util.UUID;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Venue;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.server.interfaces.RacingEventService;
|
||||
import com.sap.sailing.server.interfaces.RacingEventServiceOperation;
|
||||
import com.sap.sse.common.Distance;
|
||||
|
||||
/**
|
||||
* Adds a course area to an {@link Event}'s {@link Venue}.
|
||||
@@ -20,17 +22,21 @@ public class AddCourseAreas extends AbstractRacingEventServiceOperation<CourseAr
|
||||
private final String[] courseAreaNames;
|
||||
private final UUID[] courseAreaIds;
|
||||
private final UUID eventId;
|
||||
private final Position[] centerPositions;
|
||||
private final Distance[] radiuses;
|
||||
|
||||
public AddCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds) {
|
||||
public AddCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds, Position[] centerPositions, Distance[] radiuses) {
|
||||
super();
|
||||
this.eventId = eventId;
|
||||
this.courseAreaIds = courseAreaIds;
|
||||
this.courseAreaNames = courseAreaNames;
|
||||
this.centerPositions = centerPositions;
|
||||
this.radiuses = radiuses;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseArea[] internalApplyTo(RacingEventService toState) throws Exception {
|
||||
return toState.addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames);
|
||||
return toState.addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames, centerPositions, radiuses);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+4
-1
@@ -15,10 +15,12 @@ import org.junit.Test;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.AddLeaderboardGroupToEvent;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateLeaderboardGroup;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardGroupFromEvent;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -100,7 +102,8 @@ public class EventReplicationTest extends AbstractServerReplicationTest {
|
||||
final TimePoint eventStartDate = new MillisecondsTimePoint(new Date());
|
||||
final TimePoint eventEndDate = new MillisecondsTimePoint(new Date());
|
||||
Event masterEvent = master.addEvent(eventName, /* eventDescription */ null, eventStartDate, eventEndDate, venueName, isPublic, UUID.randomUUID());
|
||||
CourseArea masterCourseArea = master.addCourseAreas(masterEvent.getId(), new String[] {courseArea}, new UUID[] {UUID.randomUUID()})[0];
|
||||
CourseArea masterCourseArea = master.addCourseAreas(masterEvent.getId(), new String[] {courseArea}, new UUID[] {UUID.randomUUID()},
|
||||
/* TODO bug5866 centerPositions */ new Position[0], /* TODO bug5866 radiuses */ new Distance[0])[0];
|
||||
Thread.sleep(1000);
|
||||
Event replicatedEvent = replica.getEvent(masterEvent.getId());
|
||||
assertNotNull(replicatedEvent);
|
||||
|
||||
+6
-4
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.common.CompetitorRegistrationType;
|
||||
import com.sap.sailing.domain.common.CourseDesignerMode;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
@@ -35,6 +36,7 @@ import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSeries;
|
||||
import com.sap.sailing.server.operationaltransformation.UpdateSpecificRegatta;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -106,8 +108,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
final TimePoint eventStartDate = new MillisecondsTimePoint(new Date());
|
||||
final TimePoint eventEndDate = new MillisecondsTimePoint(new Date());
|
||||
Event event = master.addEvent("Event", /* eventDescription */ null, eventStartDate, eventEndDate, "Venue", true, UUID.randomUUID());
|
||||
master.addCourseAreas(event.getId(), new String[] {"Alpha"}, new UUID[] {alphaCourseAreaId});
|
||||
master.addCourseAreas(event.getId(), new String[] {"TV"}, new UUID[] {tvCourseAreaId});
|
||||
master.addCourseAreas(event.getId(), new String[] {"Alpha"}, new UUID[] {alphaCourseAreaId}, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0]);
|
||||
master.addCourseAreas(event.getId(), new String[] {"TV"}, new UUID[] {tvCourseAreaId}, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0]);
|
||||
UUID currentCourseAreaId = null;
|
||||
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("Kiel Week 2012", "49er"), "49er",
|
||||
/* canBoatsOfCompetitorsChangePerRace */ true, CompetitorRegistrationType.CLOSED,
|
||||
@@ -162,7 +164,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
final TimePoint eventStartDate = new MillisecondsTimePoint(new Date());
|
||||
final TimePoint eventEndDate = new MillisecondsTimePoint(new Date());
|
||||
Event event = master.addEvent("Event", /* eventDescription */ null, eventStartDate, eventEndDate, "Venue", true, UUID.randomUUID());
|
||||
master.addCourseAreas(event.getId(), new String[] {"Alpha"}, new UUID[] {alphaCourseAreaId});
|
||||
master.addCourseAreas(event.getId(), new String[] {"Alpha"}, new UUID[] {alphaCourseAreaId}, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0]);
|
||||
UUID currentCourseAreaId = null;
|
||||
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("RR", "49er"), "49er",
|
||||
/* canBoatsOfCompetitorsChangePerRace */ true, CompetitorRegistrationType.CLOSED,
|
||||
@@ -342,7 +344,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
final TimePoint eventStartDate = new MillisecondsTimePoint(new Date());
|
||||
final TimePoint eventEndDate = new MillisecondsTimePoint(new Date());
|
||||
Event masterEvent = master.addEvent(eventName, /* eventDescription */ null, eventStartDate, eventEndDate, venueName, isPublic, UUID.randomUUID());
|
||||
CourseArea masterCourseArea = master.addCourseAreas(masterEvent.getId(), new String[] {courseArea}, new UUID[] {UUID.randomUUID()})[0];
|
||||
CourseArea masterCourseArea = master.addCourseAreas(masterEvent.getId(), new String[] {courseArea}, new UUID[] {UUID.randomUUID()}, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0])[0];
|
||||
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(eventName, boatClassName),
|
||||
boatClassName, /* canBoatsOfCompetitorsChangePerRace */ true, CompetitorRegistrationType.CLOSED,
|
||||
/* registrationLinkSecret */ null, /* startDate */ null, /* endDate */ null, UUID.randomUUID(), series,
|
||||
|
||||
+3
-2
@@ -145,6 +145,7 @@ import com.sap.sailing.server.masterdata.MasterDataImporter;
|
||||
import com.sap.sailing.server.testsupport.RacingEventServiceImplMock;
|
||||
import com.sap.sailing.shared.server.gateway.jaxrs.AbstractSailingServerResource;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Timed;
|
||||
import com.sap.sse.common.TypeBasedServiceFinderFactory;
|
||||
@@ -1410,7 +1411,7 @@ public class MasterDataImportTest {
|
||||
/* sailorsInfoWebsiteURL */null, /* videos */
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), Collections.<VideoDescriptor> emptyList());
|
||||
CourseArea defaultCourseArea = sourceService.addCourseAreas(event.getId(), new String[] { "ECHO" },
|
||||
new UUID[] { UUID.randomUUID() })[0];
|
||||
new UUID[] { UUID.randomUUID() }, /* centerPositions */ new Position[0], /* radiuses */ new Distance[0])[0];
|
||||
|
||||
Regatta regatta = sourceService.createRegatta(
|
||||
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME),
|
||||
@@ -1476,7 +1477,7 @@ public class MasterDataImportTest {
|
||||
/* sailorsInfoWebsiteURL */null, /* videos */
|
||||
/* images */Collections.<ImageDescriptor> emptyList(), Collections.<VideoDescriptor> emptyList());
|
||||
CourseArea defaultCourseArea = sourceService.addCourseAreas(event.getId(), new String[] { "ECHO" },
|
||||
new UUID[] { UUID.randomUUID() })[0];
|
||||
new UUID[] { UUID.randomUUID() }, /* TODO bug5866 centerPositions */ new Position[0], /* TODO bug5866 radiuses */ new Distance[0])[0];
|
||||
|
||||
List<String> raceColumnNames = new ArrayList<>();
|
||||
String raceColumnName = "T1";
|
||||
|
||||
+6
-5
@@ -315,6 +315,7 @@ import com.sap.sailing.server.tagging.TaggingServiceFactory;
|
||||
import com.sap.sailing.server.util.EventUtil;
|
||||
import com.sap.sailing.shared.server.SharedSailingData;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.common.Distance;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.PairingListCreationException;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
@@ -3888,17 +3889,17 @@ Replicator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds) {
|
||||
final CourseArea[] courseAreas = addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames);
|
||||
replicate(new AddCourseAreas(eventId, courseAreaNames, courseAreaIds));
|
||||
public CourseArea[] addCourseAreas(UUID eventId, String[] courseAreaNames, UUID[] courseAreaIds, Position[] centerPositions, Distance[] radiuses) {
|
||||
final CourseArea[] courseAreas = addCourseAreasWithoutReplication(eventId, courseAreaIds, courseAreaNames, centerPositions, radiuses);
|
||||
replicate(new AddCourseAreas(eventId, courseAreaNames, courseAreaIds, centerPositions, radiuses));
|
||||
return courseAreas;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames) {
|
||||
public CourseArea[] addCourseAreasWithoutReplication(UUID eventId, UUID[] courseAreaIds, String[] courseAreaNames, Position[] centerPositions, Distance[] radiuses) {
|
||||
final CourseArea[] result = new CourseArea[courseAreaNames.length];
|
||||
for (int i=0; i<courseAreaIds.length; i++) {
|
||||
final CourseArea courseArea = getBaseDomainFactory().getOrCreateCourseArea(courseAreaIds[i], courseAreaNames[i], /* centerPosition */ null, /* radius */ null);
|
||||
final CourseArea courseArea = getBaseDomainFactory().getOrCreateCourseArea(courseAreaIds[i], courseAreaNames[i], centerPositions[i], radiuses[i]);
|
||||
final Event event = eventsById.get(eventId);
|
||||
if (event == null) {
|
||||
throw new IllegalArgumentException("No sailing event with ID " + eventId + " found.");
|
||||
|
||||
Reference in new issue
Block a user