From c72a9923dfb924ba280d3650c87ce35ad89627d0 Mon Sep 17 00:00:00 2001 From: Alexander Tatarinovich Date: Tue, 27 Sep 2016 13:26:08 +0300 Subject: [PATCH] bug 1564 : Rename variables and refactoring Change-Id: Icdb792cf2a863fe4874841114a5f4cb05b25847d --- .../impl/DomainObjectFactoryImpl.java | 2 +- .../domain/persistence/impl/FieldNames.java | 2 +- .../impl/MongoObjectFactoryImpl.java | 2 +- .../impl/CreateAndTrackWithRaceLogTest.java | 2 +- .../domain/test/mock/MockedTrackedRace.java | 8 +++-- .../com/sap/sailing/domain/base/Regatta.java | 6 ++-- .../sailing/domain/base/impl/RegattaImpl.java | 14 ++++----- .../src/com/sap/sailing/util/RegattaUtil.java | 22 ++++++++++++++ .../ui/test/PingMarkViaRegattaLogTest.java | 2 +- .../places/event/AbstractEventActivity.java | 7 ++--- .../places/event/AbstractEventActivity.java | 7 ++--- .../gwt/home/server/LeaderboardContext.java | 13 ++++---- .../client/RegattaRaceStatesComponent.java | 2 +- .../sailing/gwt/server/HomeServiceUtil.java | 10 +------ .../AbstractLeaderboardConfigPanel.java | 10 +++---- ...tractRegattaWithSeriesAndFleetsDialog.java | 12 ++++---- .../adminconsole/CreateRegattaCallback.java | 2 +- .../gwt/ui/adminconsole/RaceTableWrapper.java | 3 +- .../adminconsole/RegattaDetailsComposite.java | 10 +++++-- .../ui/adminconsole/RegattaListComposite.java | 2 +- ...egattaWithSeriesAndFleetsCreateDialog.java | 2 ++ ...martphoneTrackingEventManagementPanel.java | 4 +-- .../sailing/gwt/ui/client/SailingService.java | 4 +-- .../gwt/ui/client/SailingServiceAsync.java | 4 +-- .../sailing/gwt/ui/client/StringMessages.java | 2 +- .../gwt/ui/client/StringMessages.properties | 2 +- .../shared/racemap/RaceMapSettings.java | 5 ++-- .../gwt/ui/raceboard/RaceBoardPanel.java | 2 +- .../gwt/ui/server/SailingServiceImpl.java | 28 ++++++++--------- .../sap/sailing/gwt/ui/shared/RegattaDTO.java | 10 +++++-- .../ui/spectator/LeaderboardGroupPanel.java | 11 ++++++- ...tStoringAndRetrievingRaceLogInRegatta.java | 2 +- ...estStoringAndLoadingEventsAndRegattas.java | 4 +-- .../jaxrs/LeaderboardGroupResourceTest.java | 2 +- .../test/jaxrs/LeaderboardsResourceTest.java | 2 +- .../test/jaxrs/RegattasResourceTest.java | 2 +- .../test/AbstractLogReplicationTest.java | 2 +- .../test/CompetitorReplicationTest.java | 2 +- ...tialLoadReplicationObjectIdentityTest.java | 2 +- .../test/RegattaReplicationTest.java | 30 +++++++++---------- .../server/test/MasterDataImportTest.java | 28 ++++++++--------- .../server/test/SearchServiceTest.java | 6 ++-- .../sailing/server/RacingEventService.java | 6 ++-- .../server/impl/RacingEventServiceImpl.java | 14 ++++----- .../AddSpecificRegatta.java | 8 ++--- .../UpdateSpecificRegatta.java | 8 ++--- 46 files changed, 177 insertions(+), 153 deletions(-) create mode 100644 java/com.sap.sailing.domain/src/com/sap/sailing/util/RegattaUtil.java diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index 66eaec1a31a..b08beb0501a 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -1144,7 +1144,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { logger.log(Level.WARNING, "Error loading racing procedure configration for regatta.", e); } } - final Double cicleRadius = (Double) dbRegatta.get(FieldNames.REGATTA_CIRCLE_RADIUS.name()); + final Double cicleRadius = (Double) dbRegatta.get(FieldNames.REGATTA_HULL_LENGTH_RADIUS_FACTOR.name()); final Boolean useStartTimeInference = (Boolean) dbRegatta.get(FieldNames.REGATTA_USE_START_TIME_INFERENCE.name()); final Boolean controlTrackingFromStartAndFinishTimes = (Boolean) dbRegatta.get(FieldNames.REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES.name()); final RankingMetricConstructor rankingMetricConstructor = loadRankingMetricConstructor(dbRegatta); diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java index c1735c0f2dc..5cca7ee5141 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/FieldNames.java @@ -34,7 +34,7 @@ public enum FieldNames { REGATTA_END_DATE, REGATTA_SERIES, REGATTA_REGATTA_CONFIGURATION, - REGATTA_CIRCLE_RADIUS, + REGATTA_HULL_LENGTH_RADIUS_FACTOR, REGATTA_USE_START_TIME_INFERENCE, REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES, SERIES_NAME, diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java index c0cc79f0900..6849154863f 100644 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/MongoObjectFactoryImpl.java @@ -646,7 +646,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory { DBObject configurationObject = (DBObject) JSON.parse(json.toString()); dbRegatta.put(FieldNames.REGATTA_REGATTA_CONFIGURATION.name(), configurationObject); } - dbRegatta.put(FieldNames.REGATTA_CIRCLE_RADIUS.name(), regatta.getCircleRadius()); + dbRegatta.put(FieldNames.REGATTA_HULL_LENGTH_RADIUS_FACTOR.name(), regatta.getHullLengthRadiusFactor()); dbRegatta.put(FieldNames.REGATTA_USE_START_TIME_INFERENCE.name(), regatta.useStartTimeInference()); dbRegatta.put(FieldNames.REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES.name(), regatta.isControlTrackingFromStartAndFinishTimes()); dbRegatta.put(FieldNames.REGATTA_RANKING_METRIC.name(), storeRankingMetric(regatta)); diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java index c1a9683b794..ab0c445e1d4 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/CreateAndTrackWithRaceLogTest.java @@ -86,7 +86,7 @@ public class CreateAndTrackWithRaceLogTest { service); regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser", /* startDate */null, /* endDate */null, UUID.randomUUID(), Collections. singletonList(series), false, - new HighPoint(), UUID.randomUUID(), /*circleRadius*/1.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + new HighPoint(), UUID.randomUUID(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); series.addRaceColumn(columnName, /* trackedRegattaRegistry */null); leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {}); adapter = RaceLogTrackingAdapterFactory.INSTANCE.getAdapter(DomainFactory.INSTANCE); diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java index e8edbfa14d1..3a6cb5b8c7a 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/mock/MockedTrackedRace.java @@ -446,13 +446,15 @@ public class MockedTrackedRace implements DynamicTrackedRace { } - public double getCircleRadius(){ + @Override + public double getHullLengthRadiusFactor(){ return 1.0; } - public void setCircleRadius(double circleRadius){ + @Override + public void setHullLengthRadiusFactor(double hullLengthRadiusFactor){ } - + @Override public RegattaLikeIdentifier getRegattaLikeIdentifier() { return null; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java index 34c9292bd9c..6990ea2ae52 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Regatta.java @@ -24,7 +24,7 @@ import com.sap.sse.common.TimePoint; * */ public interface Regatta extends NamedWithID, IsRegattaLike, HasRaceColumnsAndRegattaLike { - + public static final double DEFAULT_HULL_LENGHT_FACTOR = 2; ScoringScheme getScoringScheme(); @@ -158,9 +158,9 @@ public interface Regatta extends NamedWithID, IsRegattaLike, HasRaceColumnsAndRe RegattaAndRaceIdentifier getRaceIdentifier(RaceDefinition race); - public double getCircleRadius(); + public double getHullLengthRadiusFactor(); - public void setCircleRadius(double circleRadius); + public void setHullLengthRadiusFactor(double hullLengthRadiusFactor); /** * When there is no race committee app in place and no operator is managing the race start times for this regatta, diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java index 19ca45d9ff1..93adcc6a3e9 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java @@ -115,7 +115,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene private transient RaceLogStore raceLogStore; private final IsRegattaLike regattaLikeHelper; private final RankingMetricConstructor rankingMetricConstructor; - private double circleRadius; + private double hullLengthRadiusFactor; private CourseArea defaultCourseArea; private RegattaConfiguration configuration; @@ -216,7 +216,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene */ public RegattaImpl(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, String name, BoatClass boatClass, TimePoint startDate, TimePoint endDate, Iterable series, boolean persistent, - ScoringScheme scoringScheme, Serializable id, CourseArea courseArea, double circleRadius, boolean useStartTimeInference, + ScoringScheme scoringScheme, Serializable id, CourseArea courseArea, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor) { super(name); this.rankingMetricConstructor = rankingMetricConstructor; @@ -242,7 +242,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene this.scoringScheme = scoringScheme; this.defaultCourseArea = courseArea; this.configuration = null; - this.circleRadius = circleRadius; + this.hullLengthRadiusFactor = hullLengthRadiusFactor; this.regattaLikeHelper = new BaseRegattaLikeImpl(new RegattaAsRegattaLikeIdentifier(this), regattaLogStore) { private static final long serialVersionUID = 8546222568682770206L; @@ -575,13 +575,13 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene } @Override - public double getCircleRadius() { - return circleRadius; + public double getHullLengthRadiusFactor() { + return hullLengthRadiusFactor; } @Override - public void setCircleRadius(double circleRadius) { - this.circleRadius = circleRadius; + public void setHullLengthRadiusFactor(double hullLengthRadiusFactor) { + this.hullLengthRadiusFactor = hullLengthRadiusFactor; } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/RegattaUtil.java b/java/com.sap.sailing.domain/src/com/sap/sailing/util/RegattaUtil.java new file mode 100644 index 00000000000..f0b7ab07fc2 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/util/RegattaUtil.java @@ -0,0 +1,22 @@ +package com.sap.sailing.util; + +import com.sap.sailing.domain.base.BoatClass; +import com.sap.sailing.domain.base.Regatta; +import com.sap.sailing.domain.common.Distance; + +public class RegattaUtil { + + public static final double DEFAULT_BUOY_ZONE_RADIUS = 15; + + public static double getCalculatedRegattaBuoyZoneRadius(Regatta regatta, BoatClass boatClass) { + double hullLengthRadiusFactor = Regatta.DEFAULT_HULL_LENGHT_FACTOR; + if (regatta != null) { + hullLengthRadiusFactor = regatta.getHullLengthRadiusFactor(); + } + + Distance boatHullLength = boatClass == null ? null : boatClass.getHullLength(); + double buyZoneRadius = boatHullLength == null ? DEFAULT_BUOY_ZONE_RADIUS + : boatHullLength.getMeters() * hullLengthRadiusFactor; + return buyZoneRadius; + } +} diff --git a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PingMarkViaRegattaLogTest.java b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PingMarkViaRegattaLogTest.java index e90e633a12d..a1ea6ccc3e8 100644 --- a/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PingMarkViaRegattaLogTest.java +++ b/java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/PingMarkViaRegattaLogTest.java @@ -41,7 +41,7 @@ public class PingMarkViaRegattaLogTest { Collections.singletonList(columnName), service); Regatta regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.singletonList(series), - false, new HighPoint(), UUID.randomUUID(), /*circleRadius*/1.0, /* useStartTimeInference */ true, + false, new HighPoint(), UUID.randomUUID(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetricsFactory.getRankingMetricConstructor(RankingMetrics.ONE_DESIGN)); RegattaLeaderboard leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {}); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java index 2dce1e87f68..e8ca8bf85ec 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/event/AbstractEventActivity.java @@ -181,16 +181,13 @@ public abstract class AbstractEventActivity ex linkParams.put(RaceMapSettings.PARAM_SHOW_MAPCONTROLS, "true"); linkParams.put(RaceBoardPerspectiveSettings.PARAM_VIEW_SHOW_NAVIGATION_PANEL, "true"); linkParams.put("regattaName", regattaName); - linkParams.put(RaceMapSettings.PARAM_VIEW_BUOY_ZONE_RADIUS, String.valueOf(getRegattaBuoyZoneRadius(regattaName))); + linkParams.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, String.valueOf(getRegattaBuoyZoneRadius(regattaName))); return linkParams; } private double getRegattaBuoyZoneRadius(String regattaName) { - if (regattaName == null) { - return RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS; - } for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) { - if (regattaName.equals(regatta.getId())) { + if (regattaName != null && regattaName.equals(regatta.getId())) { return regatta.getBuoyZoneRadius(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java index 0a9a104135a..372efde44d8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/event/AbstractEventActivity.java @@ -267,18 +267,15 @@ public abstract class AbstractEventActivity ex } linkParams.put("raceName", trackedRaceName); linkParams.put("regattaName", regattaName); - linkParams.put(RaceMapSettings.PARAM_VIEW_BUOY_ZONE_RADIUS, String.valueOf(getRegattaBuoyZoneRadius(regattaName))); + linkParams.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, String.valueOf(getRegattaBuoyZoneRadius(regattaName))); // TODO this must only be forwarded if there is a logged-on user // linkParams.put(RaceBoardViewConfiguration.PARAM_CAN_REPLAY_DURING_LIVE_RACES, "true"); return linkParams; } private double getRegattaBuoyZoneRadius(String regattaName) { - if (regattaName == null) { - return RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS; - } for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) { - if (regattaName.equals(regatta.getId())) { + if (regattaName != null && regattaName.equals(regatta.getId())) { return regatta.getBuoyZoneRadius(); } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/server/LeaderboardContext.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/server/LeaderboardContext.java index 0046b08a7bc..2f954c304d1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/server/LeaderboardContext.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/server/LeaderboardContext.java @@ -9,6 +9,7 @@ import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; +import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Event; import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.Fleet; @@ -32,8 +33,8 @@ import com.sap.sailing.gwt.home.communication.eventview.RegattaMetadataDTO; import com.sap.sailing.gwt.home.communication.regatta.RegattaWithProgressDTO; import com.sap.sailing.gwt.home.server.EventActionUtil.RaceCallback; import com.sap.sailing.gwt.server.HomeServiceUtil; -import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sailing.server.RacingEventService; +import com.sap.sailing.util.RegattaUtil; import com.sap.sse.common.Duration; import com.sap.sse.common.TimePoint; import com.sap.sse.common.Util; @@ -254,13 +255,9 @@ public class LeaderboardContext { private double getRegattaBuoyZoneRadius() { Regatta regatta = service.getRegattaByName(getLeaderboardName()); - Double boatHullLength = HomeServiceUtil.getBoatClassHullLenght(leaderboard); - if (regatta != null) { - return boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS - : (boatHullLength * regatta.getCircleRadius()); - } - - return boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS : boatHullLength * Regatta.DEFAULT_HULL_LENGHT_FACTOR; + BoatClass boatClass = HomeServiceUtil.getBoatClass(leaderboard); + double boatHullLength = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(regatta, boatClass); + return boatHullLength; } private static boolean hasMultipleLeaderboardGroups(EventBase event) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java index 3738e9f7288..799a9811186 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/regattaoverview/client/RegattaRaceStatesComponent.java @@ -934,7 +934,7 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component raceLinkParameters.put("raceName", entryDTO.raceInfo.raceIdentifier.getRaceName()); raceLinkParameters.put("canReplayDuringLiveRaces", "true"); raceLinkParameters.put("regattaName", entryDTO.regattaName); - raceLinkParameters.put(RaceMapSettings.PARAM_VIEW_BUOY_ZONE_RADIUS, String.valueOf(entryDTO.buyZoneRadius)); + raceLinkParameters.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, String.valueOf(entryDTO.buyZoneRadius)); return EntryPointLinkFactory.createRaceBoardLink(raceLinkParameters); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java index 24b6ed0f531..f15a302c1d9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/server/HomeServiceUtil.java @@ -25,7 +25,6 @@ import com.sap.sailing.domain.base.LeaderboardGroupBase; import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.RemoteSailingServerReference; -import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; @@ -229,14 +228,7 @@ public final class HomeServiceUtil { return boatClass == null ? null : boatClass.getName(); } - public static Double getBoatClassHullLenght(Leaderboard leaderboard) { - BoatClass boatClass = getBoatClass(leaderboard); - Distance boatHullLength = boatClass == null ? null - : boatClass.getHullLength(); - return boatHullLength == null ? null : boatHullLength.getMeters(); - } - - private static BoatClass getBoatClass(Leaderboard leaderboard) { + public static BoatClass getBoatClass(Leaderboard leaderboard) { if(leaderboard instanceof RegattaLeaderboard) { RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; BoatClass boatClassFromRegatta = regattaLeaderboard.getRegatta().getBoatClass(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java index 92da777d7d6..a4f35440194 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardConfigPanel.java @@ -44,6 +44,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.controls.FlushableCellTable; import com.sap.sailing.gwt.ui.client.shared.controls.SelectionCheckboxColumn; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sailing.gwt.ui.shared.RaceLogDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.RegattaLogDTO; @@ -191,11 +192,10 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement raceColumnTable.setSelectedLeaderboardName(getSelectedLeaderboardName()); RegattaDTO regatta = getSelectedRegatta(); - if (regatta != null) { - double buoyZoneRadiusInMeters = regatta.boatClass == null ? 15 /* default if no boat class */ - : (regatta.boatClass.getHullLengthInMeters() * regatta.circleRadius); - raceColumnTable.setSelectedRegattaHullLenghtCircleFactor(buoyZoneRadiusInMeters); - } + double buoyZoneRadius = regatta == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS + : regatta.getCalculatedBuoyZoneRadius(); + raceColumnTable.setSelectedRegattaHullLenghtCircleFactor(buoyZoneRadius); + } }); filteredLeaderboardList.addDataDisplay(leaderboardTable); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractRegattaWithSeriesAndFleetsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractRegattaWithSeriesAndFleetsDialog.java index 15c1b8c4325..9045b98f075 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractRegattaWithSeriesAndFleetsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractRegattaWithSeriesAndFleetsDialog.java @@ -51,7 +51,7 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog extends DataEn protected final ListBox sailingEventsListBox; protected final CheckBox useStartTimeInferenceCheckBox; protected final CheckBox controlTrackingFromStartAndFinishTimesCheckBox; - protected final DoubleBox circleRadiusDoubleBox; + protected final DoubleBox hullLengthRadiusFactorDoubleBox; protected final ListEditorComposite seriesEditor; private final ListBox rankingMetricListBox; @@ -96,8 +96,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog extends DataEn controlTrackingFromStartAndFinishTimesCheckBox.ensureDebugId("ControlTrackingFromStartAndFinishTimesCheckBox"); controlTrackingFromStartAndFinishTimesCheckBox.setValue(regatta.controlTrackingFromStartAndFinishTimes); - circleRadiusDoubleBox = createDoubleBox(regatta.circleRadius, 10); - circleRadiusDoubleBox.ensureDebugId("CircleRadiusDoubleBox"); + hullLengthRadiusFactorDoubleBox = createDoubleBox(regatta.hullLengthRadiusFactor, 10); + hullLengthRadiusFactorDoubleBox.ensureDebugId("HullLengthRadiusFactorDoubleBox"); courseAreaListBox = createListBox(false); courseAreaListBox.ensureDebugId("CourseAreaListBox"); @@ -166,8 +166,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog extends DataEn formGrid.setWidget(6, 1, useStartTimeInferenceCheckBox); formGrid.setWidget(7, 0, new Label(stringMessages.controlTrackingFromStartAndFinishTimes() + ":")); formGrid.setWidget(7, 1, controlTrackingFromStartAndFinishTimesCheckBox); - formGrid.setWidget(8, 0, new Label(stringMessages.circleRadius() + ":")); - formGrid.setWidget(8, 1, circleRadiusDoubleBox); + formGrid.setWidget(8, 0, new Label(stringMessages.hullLengthRadiusFactor() + ":")); + formGrid.setWidget(8, 1, hullLengthRadiusFactorDoubleBox); setupAdditionalWidgetsOnPanel(panel, formGrid); return panel; } @@ -292,7 +292,7 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog extends DataEn result.scoringScheme = getSelectedScoringSchemeType(); result.useStartTimeInference = useStartTimeInferenceCheckBox.getValue(); result.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimesCheckBox.getValue(); - result.circleRadius = circleRadiusDoubleBox.getValue(); + result.hullLengthRadiusFactor = hullLengthRadiusFactorDoubleBox.getValue(); setCourseAreaInRegatta(result); result.series = getSeriesEditor().getValue(); return result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java index 7539f032369..62feb449d7b 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java @@ -66,7 +66,7 @@ public class CreateRegattaCallback implements DialogCallback{ sailingService.createRegatta(newRegatta.getName(), newRegatta.boatClass==null?null:newRegatta.boatClass.getName(), newRegatta.startDate, newRegatta.endDate, new RegattaCreationParametersDTO(seriesStructure), true, - newRegatta.scoringScheme, newRegatta.defaultCourseAreaUuid, newRegatta.circleRadius, newRegatta.useStartTimeInference, + newRegatta.scoringScheme, newRegatta.defaultCourseAreaUuid, newRegatta.hullLengthRadiusFactor, newRegatta.useStartTimeInference, newRegatta.controlTrackingFromStartAndFinishTimes, newRegatta.rankingMetricType, new AsyncCallback() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java index fa268f34d76..dcdc5de646a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceTableWrapper.java @@ -17,7 +17,6 @@ import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; -import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sse.common.util.NaturalComparator; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.celltable.EntityIdentityComparator; @@ -55,7 +54,7 @@ extends TableWrapper { .getA().getRaceIdentifier(raceInLeaderboardDTOAndFleetName.getB()); Map params = new HashMap<>(); params.put("leaderboardName", selectedLeaderboardName); - params.put(RaceMapSettings.PARAM_VIEW_BUOY_ZONE_RADIUS, String.valueOf(selectedRegattaHullLenghtCircleFactor)); + params.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, String.valueOf(selectedRegattaHullLenghtCircleFactor)); params.put("regattaName", raceIdentifier.getRegattaName()); params.put("raceName", raceIdentifier.getRaceName()); params.put("canReplayDuringLiveRaces", "true"); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java index 62defaaa2a0..83b56b9bbf4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java @@ -61,7 +61,8 @@ public class RegattaDetailsComposite extends Composite { private final Label useStartTimeInference; private final Label controlTrackingFromStartAndFinishTimes; private final Label configuration; - + private final Label hullLengthRadiusFactor; + private final SelectionModel seriesSelectionModel; private final CellTable seriesTable; private ListDataProvider seriesListDataProvider; @@ -79,7 +80,7 @@ public class RegattaDetailsComposite extends Composite { VerticalPanel vPanel = new VerticalPanel(); mainPanel.add(vPanel); - int rows = 11; + int rows = 12; Grid grid = new Grid(rows, 2); vPanel.add(grid); @@ -92,10 +93,11 @@ public class RegattaDetailsComposite extends Composite { defaultCourseArea = createLabelAndValueWidget(grid, currentRow++, stringMessages.courseArea(), "CourseAreaLabel"); useStartTimeInference = createLabelAndValueWidget(grid, currentRow++, stringMessages.useStartTimeInference(), "UseStartTimeInferenceLabel"); controlTrackingFromStartAndFinishTimes = createLabelAndValueWidget(grid, currentRow++, stringMessages.controlTrackingFromStartAndFinishTimes(), "UseStartTimeInferenceLabel"); + hullLengthRadiusFactor = createLabelAndValueWidget(grid, currentRow++, stringMessages.hullLengthRadiusFactor(), "HullLengthRadiusFactorLabel"); configuration = createLabelAndValueWidget(grid, currentRow++, stringMessages.racingProcedureConfiguration(), "RacingProcedureLabel"); scoringSystem = createLabelAndValueWidget(grid, currentRow++, stringMessages.scoringSystem(), "ScoringSystemLabel"); rankingMetric = createLabelAndValueWidget(grid, currentRow++, stringMessages.rankingMetric(), "RankingMetricLabel"); - + seriesTable = createRegattaSeriesTable(); seriesTable.ensureDebugId("SeriesCellTable"); seriesSelectionModel = new SingleSelectionModel(); @@ -398,6 +400,8 @@ public class RegattaDetailsComposite extends Composite { defaultCourseArea.setText(regatta.defaultCourseAreaUuid == null ? "" : regatta.defaultCourseAreaName); useStartTimeInference.setText(regatta.useStartTimeInference ? stringMessages.yes() : stringMessages.no()); controlTrackingFromStartAndFinishTimes.setText(regatta.controlTrackingFromStartAndFinishTimes ? stringMessages.yes() : stringMessages.no()); + hullLengthRadiusFactor.setText(String.valueOf(regatta.hullLengthRadiusFactor)); + if (regatta.configuration != null) { configuration.setText(stringMessages.configured()); } else { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java index 9be6a35d5ca..53c4e14eb28 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java @@ -290,7 +290,7 @@ public class RegattaListComposite extends Composite implements RegattasDisplayer final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName()); sailingService.updateRegatta(regattaName, editedRegatta.startDate, editedRegatta.endDate, editedRegatta.defaultCourseAreaUuid, - editedRegatta.configuration, editedRegatta.circleRadius, editedRegatta.useStartTimeInference, editedRegatta.controlTrackingFromStartAndFinishTimes, + editedRegatta.configuration, editedRegatta.hullLengthRadiusFactor, editedRegatta.useStartTimeInference, editedRegatta.controlTrackingFromStartAndFinishTimes, new MarkedAsyncCallback(new AsyncCallback() { @Override public void onFailure(Throwable caught) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsCreateDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsCreateDialog.java index bd7ad5495bc..92aa91d0c2b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsCreateDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaWithSeriesAndFleetsCreateDialog.java @@ -12,6 +12,7 @@ import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.VerticalPanel; +import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Series; import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.common.dto.FleetDTO; @@ -109,6 +110,7 @@ public class RegattaWithSeriesAndFleetsCreateDialog extends RegattaWithSeriesAnd List existingEvents, EventDTO correspondingEvent, StringMessages stringMessages, DialogCallback callback) { super(new RegattaDTO(), Collections.emptySet(), existingEvents, correspondingEvent, stringMessages.addRegatta(), stringMessages.ok(), stringMessages, new RegattaParameterValidator(stringMessages, existingRegattas), callback); + hullLengthRadiusFactorDoubleBox.setValue(Regatta.DEFAULT_HULL_LENGHT_FACTOR); SeriesDTO series = new SeriesDTO(); series.setName(Series.DEFAULT_NAME); series.setMedal(false); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java index 0f786614231..29f6aca06fd 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java @@ -336,7 +336,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC List races = new ArrayList<>(raceColumnTable.getDataProvider().getList()); races.remove(raceColumnDTOAndFleetDTO); - double regattaHullLenghtCircleFactor = getSelectedRegatta() != null ? null : getSelectedRegatta().circleRadius; + double regattaHullLenghtCircleFactor = getSelectedRegatta() != null ? null : getSelectedRegatta().hullLengthRadiusFactor; new CopyCourseAndCompetitorsDialog(sailingService, errorReporter, stringMessages, races, leaderboardName, regattaHullLenghtCircleFactor, new DialogCallback() { @Override @@ -619,7 +619,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC DeviceConfigurationDTO.RegattaConfigurationDTO configuration) { final RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); sailingService.updateRegatta(regattaIdentifier, regatta.startDate, regatta.endDate, - regatta.defaultCourseAreaUuid, configuration, regatta.circleRadius, regatta.useStartTimeInference, + regatta.defaultCourseAreaUuid, configuration, regatta.hullLengthRadiusFactor, regatta.useStartTimeInference, regatta.controlTrackingFromStartAndFinishTimes, new MarkedAsyncCallback(new AsyncCallback() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 40b871e5474..a896459ce6b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -215,7 +215,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent, - ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, + ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType); void removeRegatta(RegattaIdentifier regattaIdentifier); @@ -225,7 +225,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS void removeRegattas(Collection regattas); void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid, - RegattaConfigurationDTO regattaConfiguration, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes); + RegattaConfigurationDTO regattaConfiguration, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes); List addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List> columnNames); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 4ae811a3a4b..bc202f927b1 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -441,7 +441,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent, - ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, + ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType, AsyncCallback callback); @@ -528,7 +528,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void storeSwissTimingArchiveConfiguration(String swissTimingUrl, AsyncCallback asyncCallback); void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid, - RegattaConfigurationDTO regattaConfiguration, double circleRadius, boolean useStartTimeInference, + RegattaConfigurationDTO regattaConfiguration, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, AsyncCallback callback); /** diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index 9accc9b9c55..b9d981d00e4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1645,5 +1645,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String notificationRegattaConfigurationUpdatedUsingByMarks(); String warningOverrideRegattaConfigurationCourseDesignerToByMarks(); String allRacesHaveBeenDenoted(); - String circleRadius(); + String hullLengthRadiusFactor(); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 9b2cd8942ce..b36d708d8ad 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1618,4 +1618,4 @@ maximumNumberOfDiscards=Maximum number of discards notificationRegattaConfigurationUpdatedUsingByMarks=Active regatta configuration was set, using the "By Marks" course designer. warningOverrideRegattaConfigurationCourseDesignerToByMarks=Active regatta configuration already exists, but with the wrong course designer setting.\nWould you like to override course designer setting to "By Marks"? allRacesHaveBeenDenoted=All races have been denoted for racelog tracking. -circleRadius=Circle radius \ No newline at end of file +hullLengthRadiusFactor=Hull length radius factor \ No newline at end of file diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapSettings.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapSettings.java index b2806fd119d..02532266712 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapSettings.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/shared/racemap/RaceMapSettings.java @@ -17,7 +17,7 @@ public class RaceMapSettings extends AbstractSettings { public static final String PARAM_VIEW_SHOW_STREAMLETS = "viewShowStreamlets"; public static final String PARAM_VIEW_SHOW_STREAMLET_COLORS = "viewShowStreamletColors"; public static final String PARAM_VIEW_SHOW_SIMULATION = "viewShowSimulation"; - public static final String PARAM_VIEW_BUOY_ZONE_RADIUS = "regattaHullLenghtCircleFactor"; + public static final String PARAM_BUOY_ZONE_RADIUS = "buoyZoneRadius"; public static final double DEFAULT_BUOY_ZONE_RADIUS = 15; @@ -243,11 +243,12 @@ public class RaceMapSettings extends AbstractSettings { final boolean showWindStreamletOverlay = GwtHttpRequestUtils.getBooleanParameter(PARAM_VIEW_SHOW_STREAMLETS, defaultForViewShowStreamlets /* default */); final boolean showWindStreamletColors = GwtHttpRequestUtils.getBooleanParameter(PARAM_VIEW_SHOW_STREAMLET_COLORS, defaultForViewShowStreamletColors /* default */); final boolean showSimulationOverlay = GwtHttpRequestUtils.getBooleanParameter(PARAM_VIEW_SHOW_SIMULATION, defaultForViewShowSimulation /* default */); - final double buoyZoneRadiusInMeters = GwtHttpRequestUtils.getDoubleParameter(PARAM_VIEW_BUOY_ZONE_RADIUS, 0.0 /* default */); + final double buoyZoneRadiusInMeters = GwtHttpRequestUtils.getDoubleParameter(PARAM_BUOY_ZONE_RADIUS, 0.0 /* default */); return new RaceMapSettings(showMapControls, showCourseGeometry, windUp, buoyZoneRadiusInMeters, showWindStreamletOverlay, showWindStreamletColors, showSimulationOverlay); } public Set getManeuverTypesToShow() { return maneuverTypesToShow; } + } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java index 89ccaa10ff0..7c8a294ae6d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/raceboard/RaceBoardPanel.java @@ -208,7 +208,7 @@ public class RaceBoardPanel extends AbstractPerspectiveComposite(), getService())), false, - baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, + baseDomainFactory.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetricsFactory.getRankingMetricConstructor(RankingMetrics.ONE_DESIGN)); // TODO: is course area relevant for swiss timing replay? } else { @@ -3921,7 +3921,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public void updateRegatta(RegattaIdentifier regattaName, Date startDate, Date endDate, UUID defaultCourseAreaUuid, - RegattaConfigurationDTO configurationDTO, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { + RegattaConfigurationDTO configurationDTO, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { Regatta regatta = getService().getRegatta(regattaName); if (regatta != null) { SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.UPDATE, regatta.getName())); @@ -3929,7 +3929,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S TimePoint startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null; TimePoint endTimePoint = endDate != null ? new MillisecondsTimePoint(endDate) : null; getService().apply(new UpdateSpecificRegatta(regattaName, startTimePoint, endTimePoint, - defaultCourseAreaUuid, convertToRegattaConfiguration(configurationDTO), circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes)); + defaultCourseAreaUuid, convertToRegattaConfiguration(configurationDTO), hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes)); } @Override @@ -4020,7 +4020,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, - boolean persistent, ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, + boolean persistent, ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType) { SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.CREATE, regattaName)); TimePoint startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null; @@ -4029,7 +4029,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S new AddSpecificRegatta( regattaName, boatClassName, startTimePoint, endTimePoint, UUID.randomUUID(), seriesNamesWithFleetNamesAndFleetOrderingAndMedal, - persistent, baseDomainFactory.createScoringScheme(scoringSchemeType), defaultCourseAreaId, circleRadius, useStartTimeInference, + persistent, baseDomainFactory.createScoringScheme(scoringSchemeType), defaultCourseAreaId, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricType)); return convertToRegattaDTO(regatta); } @@ -4237,15 +4237,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S if (leaderboard != null) { if (visibleRegattas != null && !visibleRegattas.contains(leaderboard.getName())) { return result; - } + } String regattaName = getRegattaNameFromLeaderboard(leaderboard); if (leaderboard instanceof RegattaLeaderboard) { RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; Regatta regatta = regattaLeaderboard.getRegatta(); BoatClass boatClass = regatta.getBoatClass(); - Distance boatHullLength = boatClass.getHullLength(); - double buyZoneRadius = boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS - : boatHullLength.getMeters() * regatta.getCircleRadius(); + double buyZoneRadius = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(regatta, boatClass); for (Series series : regatta.getSeries()) { Map> entriesPerFleet = new HashMap>(); for (RaceColumn raceColumn : series.getRaceColumns()) { @@ -4261,9 +4259,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S boatClass = trackedRace.getRace().getBoatClass(); break; } - Distance boatHullLength = boatClass == null ? null : boatClass.getHullLength(); - double buyZoneRadius = boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS - : boatHullLength.getMeters() * Regatta.DEFAULT_HULL_LENGHT_FACTOR; + double buyZoneRadius = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(null, boatClass); Map> entriesPerFleet = new HashMap>(); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { getRegattaOverviewEntries(showOnlyRacesOfSameDay, dayToCheck, usedCourseArea, @@ -4279,7 +4275,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.CREATE, regatta.getName())); this.createRegatta(regatta.getName(), regatta.boatClass.getName(), regatta.startDate, regatta.endDate, new RegattaCreationParametersDTO(getSeriesCreationParameters(regatta)), - true, regatta.scoringScheme, regatta.defaultCourseAreaUuid, regatta.circleRadius, regatta.useStartTimeInference, + true, regatta.scoringScheme, regatta.defaultCourseAreaUuid, regatta.hullLengthRadiusFactor, regatta.useStartTimeInference, regatta.controlTrackingFromStartAndFinishTimes, regatta.rankingMetricType); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RegattaDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RegattaDTO.java index e5f43336a86..238765682ee 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RegattaDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/RegattaDTO.java @@ -15,6 +15,7 @@ import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.NamedDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceDTO; +import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; import com.sap.sse.common.Util.Pair; public class RegattaDTO extends NamedDTO { @@ -34,7 +35,7 @@ public class RegattaDTO extends NamedDTO { public boolean useStartTimeInference = true; public boolean controlTrackingFromStartAndFinishTimes = false; public RankingMetrics rankingMetricType; - public double circleRadius; + public double hullLengthRadiusFactor; public RegattaDTO() {} @@ -65,7 +66,7 @@ public class RegattaDTO extends NamedDTO { this.configuration = other.configuration; this.useStartTimeInference = other.useStartTimeInference; this.controlTrackingFromStartAndFinishTimes = other.controlTrackingFromStartAndFinishTimes; - this.circleRadius = other.circleRadius; + this.hullLengthRadiusFactor = other.hullLengthRadiusFactor; } @@ -123,6 +124,11 @@ public class RegattaDTO extends NamedDTO { return false; } + public double getCalculatedBuoyZoneRadius() { + double boatHullLength = boatClass == null ? 0.0 : boatClass.getHullLengthInMeters(); + return boatHullLength == 0.0 ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS : (boatHullLength * hullLengthRadiusFactor); + } + @Override public int hashCode() { final int prime = 31; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupPanel.java index 5b909282106..4d464e591e5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/spectator/LeaderboardGroupPanel.java @@ -434,12 +434,21 @@ public class LeaderboardGroupPanel extends SimplePanel implements HasWelcomeWidg Boolean.toString(showNavigationPanel)); linkParams.put("regattaName", raceIdentifier.getRegattaName()); linkParams.put("leaderboardGroupName", leaderboardGroup.getName()); + linkParams.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, + String.valueOf(getRegattaBuoyZoneRadius(raceIdentifier.getRegattaName()))); if (viewMode != null && !viewMode.isEmpty()) { linkParams.put("viewMode", viewMode); } return linkParams; } - + + private double getRegattaBuoyZoneRadius(String regattaName) { + RegattaDTO regatta = regattasByName.get(regattaName); + double buoyZoneRadius = regatta == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS + : regatta.getCalculatedBuoyZoneRadius(); + return buoyZoneRadius; + } + private SafeHtml getAnchor(String link, String linkText, String style) { if (isEmbedded) { return ANCHORTEMPLATE.anchorWithTarget(link, linkText, style, "_blank"); diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java index e889fd3f354..8302f495183 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractTestStoringAndRetrievingRaceLogInRegatta.java @@ -62,7 +62,7 @@ public abstract class AbstractTestStoringAndRetrievingRaceLogInRegatta extends R List series = createSeriesForTestRegatta(); Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), RegattaImpl.getDefaultName(regattaBaseName, boatClass == null ? null : boatClass.getName()), boatClass, /*startDate*/ null, /*endDate*/ null, series, persistent, scoringScheme, "123", - courseArea, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + courseArea, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); return regatta; } diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java index 8298be90591..0668834a1ea 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java @@ -405,7 +405,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest regattaStartDate, regattaEndDate, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, OneDesignRankingMetric::new); final String regattaName = regattaProxy.getName(); Regatta regatta = res.createRegatta(regattaName, regattaProxy.getBoatClass().getName(), regattaStartDate, regattaEndDate, - "123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + "123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta); res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 }); DomainObjectFactory dof = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE); @@ -447,7 +447,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest Regatta regattaProxy = createRegatta(RegattaImpl.getDefaultName(regattaBaseName, boatClass.getName()), boatClass, regattaStartDate, regattaEndDate, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, OneDesignRankingMetric::new); Regatta regatta = res.createRegatta(regattaProxy.getName(), regattaProxy.getBoatClass().getName(), regattaProxy.getStartDate(), regattaProxy.getEndDate(), - "123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + "123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta); addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta); logColumnsInRegatta(regatta); diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardGroupResourceTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardGroupResourceTest.java index 8a5b1b47c90..25e39bd3974 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardGroupResourceTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardGroupResourceTest.java @@ -51,7 +51,7 @@ public class LeaderboardGroupResourceTest extends AbstractJaxRsApiTest { series.add(testSeries); regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*persistent*/ true, - DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); testSeries.addRaceColumn("R1", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceTest.java index 569ba676672..6c7182710a3 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/LeaderboardsResourceTest.java @@ -59,7 +59,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest { regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaBaseName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*persistent*/ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); testSeries.addRaceColumn("R1", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); List competitors = createCompetitors(4); diff --git a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/RegattasResourceTest.java b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/RegattasResourceTest.java index 972629fa794..0920baadf43 100644 --- a/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/RegattasResourceTest.java +++ b/java/com.sap.sailing.server.gateway.test/src/com/sap/sailing/server/gateway/test/jaxrs/RegattasResourceTest.java @@ -49,7 +49,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest { series.add(testSeries); racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName, startDate, endDate, UUID.randomUUID(), series, /*persistent*/ true, - DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); testSeries.addRaceColumn("R1", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); } diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java index 9a5cfd90ade..bfac0a32ed2 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java @@ -104,7 +104,7 @@ public abstract class AbstractLogReplicationTest series = Collections.emptyList(); Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, regattaId, series, - /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, + /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Iterable emptyWaypointList = Collections.emptyList(); final String competitorName = "Der mit dem Kiel zieht"; diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java index f8b9234be8e..1a5b07ead27 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/InitialLoadReplicationObjectIdentityTest.java @@ -123,7 +123,7 @@ public class InitialLoadReplicationObjectIdentityTest extends AbstractServerRepl final Iterable series = Collections.emptyList(); Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, - /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, + /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric.CONSTRUCTOR); assertNotNull(master.getRegatta(masterRegatta.getRegattaIdentifier())); assertTrue(master.getAllRegattas().iterator().hasNext()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java index c71ecec4077..71977ec4801 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java @@ -46,7 +46,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { final UUID regattaId = UUID.randomUUID(); Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, regattaId, series, - /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Thread.sleep(1000); @@ -76,11 +76,11 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("Kiel Week 2012", "49er"), "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.emptyList(), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), currentCourseAreaId, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); // Test for 'null' master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, - currentCourseAreaId, null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + currentCourseAreaId, null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -89,7 +89,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { // Test for 'alpha' currentCourseAreaId = alphaCourseAreaId; master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, - currentCourseAreaId, null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + currentCourseAreaId, null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -98,7 +98,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { // Test for 'tv' currentCourseAreaId = tvCourseAreaId; master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, - currentCourseAreaId, null, /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + currentCourseAreaId, null, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -107,7 +107,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { // Test back to 'null' currentCourseAreaId = null; master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -126,7 +126,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { final String regattaName = RegattaImpl.getDefaultName("Kiel Week 2012", "49er"); Regatta masterRegatta = master.createRegatta(regattaName, "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.emptyList(), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), tvCourseAreaId, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event = master.getEvent(event.getId()); assertTrue(event.getRegattas().iterator().hasNext()); assertEquals(regattaName, event.getRegattas().iterator().next().getName()); @@ -136,7 +136,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { assertTrue(regattasInReplicatedEvent.hasNext()); assertEquals(regattaName, regattasInReplicatedEvent.next().getName()); master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, golfCourseAreaId, null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); } @Test @@ -153,11 +153,11 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { UUID currentCourseAreaId = null; Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("RR", "49er"), "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.emptyList(), true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), currentCourseAreaId, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); // Test for 'null' master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -167,7 +167,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { RegattaConfigurationImpl config = new RegattaConfigurationImpl(); config.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MARKS); master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, config, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false)); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -200,7 +200,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null); Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Arrays.asList(new Series[] { qualification, finals, medal }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Thread.sleep(1000); Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -236,7 +236,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null); Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Arrays.asList(new Series[] { qualification }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Thread.sleep(1000); Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -281,7 +281,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Arrays.asList(new Series[] { qualification }), /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Thread.sleep(1000); Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); @@ -318,7 +318,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(eventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), masterCourseArea.getId(), - /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); Thread.sleep(1000); Event replicatedEvent = replica.getEvent(masterEvent.getId()); assertNotNull(replicatedEvent); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java index f843ba74898..35cea8d832a 100644 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/MasterDataImportTest.java @@ -210,7 +210,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -473,7 +473,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -631,7 +631,7 @@ public class MasterDataImportTest { series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService)); UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta(RegattaImpl.getDefaultName("testRegatta", "29er"), "29er", - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -795,7 +795,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -955,7 +955,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -1069,7 +1069,7 @@ public class MasterDataImportTest { destService)); Regatta regattaNotToOverride = destService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ - null, /* endDate */null, regattaUUID, seriesNotToOverride, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + null, /* endDate */null, regattaUUID, seriesNotToOverride, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regattaNotToOverride); for (String name : raceColumnNamesNotToOverride) { @@ -1157,7 +1157,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -1267,7 +1267,7 @@ public class MasterDataImportTest { destService)); Regatta regattaToOverride = destService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ - null, /* endDate */null, regattaUUID, seriesToOverride, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + null, /* endDate */null, regattaUUID, seriesToOverride, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regattaToOverride); for (String name : raceColumnNamesToOverride) { @@ -1378,7 +1378,7 @@ public class MasterDataImportTest { Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ null, /* endDate */null, UUID.randomUUID(), new ArrayList(), true, new LowPoint(), - defaultCourseArea.getId(), /*circleRadius*/1.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + defaultCourseArea.getId(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); // Let's use the setters directly because we are not testing replication RegattaConfigurationImpl configuration = new RegattaConfigurationImpl(); configuration.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MAP); @@ -1460,7 +1460,7 @@ public class MasterDataImportTest { Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), - defaultCourseArea.getId(), /*circleRadius*/1.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + defaultCourseArea.getId(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); for (String name : raceColumnNames) { series.get(0).addRaceColumn(name, sourceService); } @@ -1593,7 +1593,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -1837,7 +1837,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, - /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + /* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); event.addRegatta(regatta); for (String name : raceColumnNames) { @@ -2068,7 +2068,7 @@ public class MasterDataImportTest { UUID regattaUUID = UUID.randomUUID(); Regatta regatta = sourceService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ - null, /* endDate */null, regattaUUID, seriesOnSource, true, new LowPoint(), courseAreaUUID, /*circleRadius*/1.0, + null, /* endDate */null, regattaUUID, seriesOnSource, true, new LowPoint(), courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); for (String name : raceColumnNames) { seriesOnSource.get(0).addRaceColumn(name, sourceService); @@ -2197,7 +2197,7 @@ public class MasterDataImportTest { Regatta regattaOnTarget = destService.createRegatta( RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */null, /* endDate */null, regattaUUID, seriesOnTarget, true, new LowPoint(), - courseAreaUUID, /*circleRadius*/1.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); + courseAreaUUID, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new); raceColumnOnTarget.setTrackedRace(defaultFleetOnTarget, new DummyTrackedRace(raceId, competitors, regattaOnTarget, null, sourceService.getWindStore())); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java index 76db677bf37..2669dd6a62d 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java @@ -141,7 +141,7 @@ public class SearchServiceTest { pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ - true, new LowPoint(), kielAlpha.getId(), /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); + true, new LowPoint(), kielAlpha.getId(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R1")); server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R2")); server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R3")); @@ -149,7 +149,7 @@ public class SearchServiceTest { /* leaderboardDisplayName */ null, /* discardThresholds */ new int[0])); pfingstbusch470 = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "470"), "470", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ - true, new LowPoint(), kielBravo.getId(), /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); + true, new LowPoint(), kielBravo.getId(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R1")); server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R2")); server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R3")); @@ -172,7 +172,7 @@ public class SearchServiceTest { aalRegatta = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Aalregatta", "ORC"), "ORC", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ - true, new LowPoint(), flensburgStandard.getId(), /*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); + true, new LowPoint(), flensburgStandard.getId(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN)); server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R1")); server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2")); RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(), diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index e86e696746a..85e943f4758 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -314,12 +314,12 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch * @param controlTrackingFromStartAndFinishTimes TODO */ Regatta createRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable series, - boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double circleRadius, + boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor); Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration, - Iterable series, double circleRadius, boolean useStartTimeInference, + Iterable series, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes); /** @@ -465,7 +465,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch Util.Pair getOrCreateRegattaWithoutReplication(String fullRegattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable series, boolean persistent, ScoringScheme scoringScheme, - Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor); + Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor); /** * @return map where keys are the toString() representation of the {@link RaceDefinition#getId() IDs} of races passed to diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index 84027442beb..531c4f9366f 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -1247,11 +1247,11 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes @Override public Regatta createRegatta(String fullRegattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable series, boolean persistent, ScoringScheme scoringScheme, - Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, + Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor) { com.sap.sse.common.Util.Pair regattaWithCreatedFlag = getOrCreateRegattaWithoutReplication( fullRegattaName, boatClassName, startDate, endDate, id, series, persistent, scoringScheme, - defaultCourseAreaId, circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor); + defaultCourseAreaId, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor); Regatta regatta = regattaWithCreatedFlag.getA(); if (regattaWithCreatedFlag.getB()) { onRegattaLikeAdded(regatta); @@ -1284,12 +1284,12 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes public com.sap.sse.common.Util.Pair getOrCreateRegattaWithoutReplication(String fullRegattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable series, boolean persistent, ScoringScheme scoringScheme, - Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, + Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor) { CourseArea courseArea = getCourseArea(defaultCourseAreaId); Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), fullRegattaName, getBaseDomainFactory().getOrCreateBoatClass(boatClassName), startDate, endDate, series, persistent, - scoringScheme, id, courseArea, circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor); + scoringScheme, id, courseArea, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor); boolean wasCreated = addAndConnectRegatta(persistent, defaultCourseAreaId, regatta); if (wasCreated) { logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on " + this); @@ -1470,7 +1470,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes replicate(new AddSpecificRegatta(regatta.getName(), regatta.getBoatClass() == null ? null : regatta .getBoatClass().getName(), regatta.getStartDate(), regatta.getEndDate(), regatta.getId(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(), - regatta.getScoringScheme(), courseAreaId, regatta.getCircleRadius(), regatta.useStartTimeInference(), regatta.isControlTrackingFromStartAndFinishTimes(), + regatta.getScoringScheme(), courseAreaId, regatta.getHullLengthRadiusFactor(), regatta.useStartTimeInference(), regatta.isControlTrackingFromStartAndFinishTimes(), regatta.getRankingMetricType())); RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier(); for (RaceDefinition race : regatta.getAllRaces()) { @@ -2152,7 +2152,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes @Override public Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, Serializable newDefaultCourseAreaId, RegattaConfiguration newRegattaConfiguration, - Iterable series, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { + Iterable series, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { // We're not doing any renaming of the regatta itself, therefore we don't have to sync on the maps. Regatta regatta = getRegatta(regattaIdentifier); CourseArea newCourseArea = getCourseArea(newDefaultCourseAreaId); @@ -2161,7 +2161,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes } regatta.setStartDate(startDate); regatta.setEndDate(endDate); - regatta.setCircleRadius(circleRadius); + regatta.setHullLengthRadiusFactor(hullLengthRadiusFactor); regatta.setControlTrackingFromStartAndFinishTimes(controlTrackingFromStartAndFinishTimes); if (regatta.useStartTimeInference() != useStartTimeInference) { regatta.setUseStartTimeInference(useStartTimeInference); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java index d1365460285..147c27a8ac2 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/AddSpecificRegatta.java @@ -29,14 +29,14 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { private final boolean persistent; private final ScoringScheme scoringScheme; private final Serializable defaultCourseAreaId; - private final double circleRadius; + private final double hullLengthRadiusFactor; private final boolean useStartTimeInference; private final boolean controlTrackingFromStartAndFinishTimes; private final RankingMetrics rankingMetricType; public AddSpecificRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds, - boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, + boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType) { super(regattaName, boatClassName, startDate, endDate, id); this.seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndStartsWithZeroScoreAndDiscardingThresholds = seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds; @@ -46,13 +46,13 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation { this.useStartTimeInference = useStartTimeInference; this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes; this.rankingMetricType = rankingMetricType; - this.circleRadius = circleRadius; + this.hullLengthRadiusFactor = hullLengthRadiusFactor; } @Override public Regatta internalApplyTo(RacingEventService toState) throws Exception { Regatta regatta = toState.createRegatta(getRegattaName(), getBoatClassName(), getStartDate(), getEndDate(), getId(), createSeries(toState), - persistent, scoringScheme, defaultCourseAreaId, circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes, RankingMetricsFactory.getRankingMetricConstructor(rankingMetricType)); + persistent, scoringScheme, defaultCourseAreaId, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes, RankingMetricsFactory.getRankingMetricConstructor(rankingMetricType)); return regatta; } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java index d20aa20074e..8451f150dd3 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/UpdateSpecificRegatta.java @@ -15,14 +15,14 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation