bug 1564 : Rename variables and refactoring

Change-Id: Icdb792cf2a863fe4874841114a5f4cb05b25847d
This commit is contained in:
Alexander Tatarinovich committed 2016-09-27 16:07:00 +03:00
1 parent 3312208fbc
commit c72a9923df
46 files changed
+177 -153

No files matched your search

@@ -1144,7 +1144,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
logger.log(Level.WARNING, "Error loading racing procedure configration for regatta.", e); 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 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 Boolean controlTrackingFromStartAndFinishTimes = (Boolean) dbRegatta.get(FieldNames.REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES.name());
final RankingMetricConstructor rankingMetricConstructor = loadRankingMetricConstructor(dbRegatta); final RankingMetricConstructor rankingMetricConstructor = loadRankingMetricConstructor(dbRegatta);
@@ -34,7 +34,7 @@ public enum FieldNames {
REGATTA_END_DATE, REGATTA_END_DATE,
REGATTA_SERIES, REGATTA_SERIES,
REGATTA_REGATTA_CONFIGURATION, REGATTA_REGATTA_CONFIGURATION,
REGATTA_CIRCLE_RADIUS, REGATTA_HULL_LENGTH_RADIUS_FACTOR,
REGATTA_USE_START_TIME_INFERENCE, REGATTA_USE_START_TIME_INFERENCE,
REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES, REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES,
SERIES_NAME, SERIES_NAME,
@@ -646,7 +646,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
DBObject configurationObject = (DBObject) JSON.parse(json.toString()); DBObject configurationObject = (DBObject) JSON.parse(json.toString());
dbRegatta.put(FieldNames.REGATTA_REGATTA_CONFIGURATION.name(), configurationObject); 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_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_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES.name(), regatta.isControlTrackingFromStartAndFinishTimes());
dbRegatta.put(FieldNames.REGATTA_RANKING_METRIC.name(), storeRankingMetric(regatta)); dbRegatta.put(FieldNames.REGATTA_RANKING_METRIC.name(), storeRankingMetric(regatta));
@@ -86,7 +86,7 @@ public class CreateAndTrackWithRaceLogTest {
service); service);
regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser", regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser",
/* startDate */null, /* endDate */null, UUID.randomUUID(), Collections.<Series> singletonList(series), false, /* startDate */null, /* endDate */null, UUID.randomUUID(), Collections.<Series> 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); series.addRaceColumn(columnName, /* trackedRegattaRegistry */null);
leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {}); leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {});
adapter = RaceLogTrackingAdapterFactory.INSTANCE.getAdapter(DomainFactory.INSTANCE); adapter = RaceLogTrackingAdapterFactory.INSTANCE.getAdapter(DomainFactory.INSTANCE);
@@ -446,13 +446,15 @@ public class MockedTrackedRace implements DynamicTrackedRace {
} }
public double getCircleRadius(){ @Override
public double getHullLengthRadiusFactor(){
return 1.0; return 1.0;
} }
public void setCircleRadius(double circleRadius){ @Override
public void setHullLengthRadiusFactor(double hullLengthRadiusFactor){
} }
@Override @Override
public RegattaLikeIdentifier getRegattaLikeIdentifier() { public RegattaLikeIdentifier getRegattaLikeIdentifier() {
return null; return null;
@@ -24,7 +24,7 @@ import com.sap.sse.common.TimePoint;
* *
*/ */
public interface Regatta extends NamedWithID, IsRegattaLike, HasRaceColumnsAndRegattaLike { public interface Regatta extends NamedWithID, IsRegattaLike, HasRaceColumnsAndRegattaLike {
public static final double DEFAULT_HULL_LENGHT_FACTOR = 2; public static final double DEFAULT_HULL_LENGHT_FACTOR = 2;
ScoringScheme getScoringScheme(); ScoringScheme getScoringScheme();
@@ -158,9 +158,9 @@ public interface Regatta extends NamedWithID, IsRegattaLike, HasRaceColumnsAndRe
RegattaAndRaceIdentifier getRaceIdentifier(RaceDefinition race); 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, * When there is no race committee app in place and no operator is managing the race start times for this regatta,
@@ -115,7 +115,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
private transient RaceLogStore raceLogStore; private transient RaceLogStore raceLogStore;
private final IsRegattaLike regattaLikeHelper; private final IsRegattaLike regattaLikeHelper;
private final RankingMetricConstructor rankingMetricConstructor; private final RankingMetricConstructor rankingMetricConstructor;
private double circleRadius; private double hullLengthRadiusFactor;
private CourseArea defaultCourseArea; private CourseArea defaultCourseArea;
private RegattaConfiguration configuration; private RegattaConfiguration configuration;
@@ -216,7 +216,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
*/ */
public <S extends Series> RegattaImpl(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, String name, public <S extends Series> RegattaImpl(RaceLogStore raceLogStore, RegattaLogStore regattaLogStore, String name,
BoatClass boatClass, TimePoint startDate, TimePoint endDate, Iterable<S> series, boolean persistent, BoatClass boatClass, TimePoint startDate, TimePoint endDate, Iterable<S> 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) { boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor) {
super(name); super(name);
this.rankingMetricConstructor = rankingMetricConstructor; this.rankingMetricConstructor = rankingMetricConstructor;
@@ -242,7 +242,7 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
this.scoringScheme = scoringScheme; this.scoringScheme = scoringScheme;
this.defaultCourseArea = courseArea; this.defaultCourseArea = courseArea;
this.configuration = null; this.configuration = null;
this.circleRadius = circleRadius; this.hullLengthRadiusFactor = hullLengthRadiusFactor;
this.regattaLikeHelper = new BaseRegattaLikeImpl(new RegattaAsRegattaLikeIdentifier(this), regattaLogStore) { this.regattaLikeHelper = new BaseRegattaLikeImpl(new RegattaAsRegattaLikeIdentifier(this), regattaLogStore) {
private static final long serialVersionUID = 8546222568682770206L; private static final long serialVersionUID = 8546222568682770206L;
@@ -575,13 +575,13 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
} }
@Override @Override
public double getCircleRadius() { public double getHullLengthRadiusFactor() {
return circleRadius; return hullLengthRadiusFactor;
} }
@Override @Override
public void setCircleRadius(double circleRadius) { public void setHullLengthRadiusFactor(double hullLengthRadiusFactor) {
this.circleRadius = circleRadius; this.hullLengthRadiusFactor = hullLengthRadiusFactor;
} }
@Override @Override
@@ -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;
}
}
@@ -41,7 +41,7 @@ public class PingMarkViaRegattaLogTest {
Collections.singletonList(columnName), service); Collections.singletonList(columnName), service);
Regatta regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser", /*startDate*/ null, /*endDate*/ null, Regatta regatta = service.createRegatta(RegattaImpl.getDefaultName("regatta", "Laser"), "Laser", /*startDate*/ null, /*endDate*/ null,
UUID.randomUUID(), Collections.<Series>singletonList(series), UUID.randomUUID(), Collections.<Series>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)); /* controlTrackingFromStartAndFinishTimes */ false, RankingMetricsFactory.getRankingMetricConstructor(RankingMetrics.ONE_DESIGN));
RegattaLeaderboard leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {}); RegattaLeaderboard leaderboard = service.addRegattaLeaderboard(regatta.getRegattaIdentifier(), "RegattaLeaderboard", new int[] {});
@@ -181,16 +181,13 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
linkParams.put(RaceMapSettings.PARAM_SHOW_MAPCONTROLS, "true"); linkParams.put(RaceMapSettings.PARAM_SHOW_MAPCONTROLS, "true");
linkParams.put(RaceBoardPerspectiveSettings.PARAM_VIEW_SHOW_NAVIGATION_PANEL, "true"); linkParams.put(RaceBoardPerspectiveSettings.PARAM_VIEW_SHOW_NAVIGATION_PANEL, "true");
linkParams.put("regattaName", regattaName); 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; return linkParams;
} }
private double getRegattaBuoyZoneRadius(String regattaName) { private double getRegattaBuoyZoneRadius(String regattaName) {
if (regattaName == null) {
return RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS;
}
for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) { for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) {
if (regattaName.equals(regatta.getId())) { if (regattaName != null && regattaName.equals(regatta.getId())) {
return regatta.getBuoyZoneRadius(); return regatta.getBuoyZoneRadius();
} }
} }
@@ -267,18 +267,15 @@ public abstract class AbstractEventActivity<PLACE extends AbstractEventPlace> ex
} }
linkParams.put("raceName", trackedRaceName); linkParams.put("raceName", trackedRaceName);
linkParams.put("regattaName", regattaName); 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 // TODO this must only be forwarded if there is a logged-on user
// linkParams.put(RaceBoardViewConfiguration.PARAM_CAN_REPLAY_DURING_LIVE_RACES, "true"); // linkParams.put(RaceBoardViewConfiguration.PARAM_CAN_REPLAY_DURING_LIVE_RACES, "true");
return linkParams; return linkParams;
} }
private double getRegattaBuoyZoneRadius(String regattaName) { private double getRegattaBuoyZoneRadius(String regattaName) {
if (regattaName == null) {
return RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS;
}
for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) { for (RegattaMetadataDTO regatta : eventDTO.getRegattas()) {
if (regattaName.equals(regatta.getId())) { if (regattaName != null && regattaName.equals(regatta.getId())) {
return regatta.getBuoyZoneRadius(); return regatta.getBuoyZoneRadius();
} }
} }
@@ -9,6 +9,7 @@ import java.util.Set;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; 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.Event;
import com.sap.sailing.domain.base.EventBase; import com.sap.sailing.domain.base.EventBase;
import com.sap.sailing.domain.base.Fleet; 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.communication.regatta.RegattaWithProgressDTO;
import com.sap.sailing.gwt.home.server.EventActionUtil.RaceCallback; import com.sap.sailing.gwt.home.server.EventActionUtil.RaceCallback;
import com.sap.sailing.gwt.server.HomeServiceUtil; 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.server.RacingEventService;
import com.sap.sailing.util.RegattaUtil;
import com.sap.sse.common.Duration; import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint; import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util; import com.sap.sse.common.Util;
@@ -254,13 +255,9 @@ public class LeaderboardContext {
private double getRegattaBuoyZoneRadius() { private double getRegattaBuoyZoneRadius() {
Regatta regatta = service.getRegattaByName(getLeaderboardName()); Regatta regatta = service.getRegattaByName(getLeaderboardName());
Double boatHullLength = HomeServiceUtil.getBoatClassHullLenght(leaderboard); BoatClass boatClass = HomeServiceUtil.getBoatClass(leaderboard);
if (regatta != null) { double boatHullLength = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(regatta, boatClass);
return boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS return boatHullLength;
: (boatHullLength * regatta.getCircleRadius());
}
return boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS : boatHullLength * Regatta.DEFAULT_HULL_LENGHT_FACTOR;
} }
private static boolean hasMultipleLeaderboardGroups(EventBase event) { private static boolean hasMultipleLeaderboardGroups(EventBase event) {
@@ -934,7 +934,7 @@ public class RegattaRaceStatesComponent extends SimplePanel implements Component
raceLinkParameters.put("raceName", entryDTO.raceInfo.raceIdentifier.getRaceName()); raceLinkParameters.put("raceName", entryDTO.raceInfo.raceIdentifier.getRaceName());
raceLinkParameters.put("canReplayDuringLiveRaces", "true"); raceLinkParameters.put("canReplayDuringLiveRaces", "true");
raceLinkParameters.put("regattaName", entryDTO.regattaName); 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); return EntryPointLinkFactory.createRaceBoardLink(raceLinkParameters);
} }
@@ -25,7 +25,6 @@ import com.sap.sailing.domain.base.LeaderboardGroupBase;
import com.sap.sailing.domain.base.RaceColumn; import com.sap.sailing.domain.base.RaceColumn;
import com.sap.sailing.domain.base.Regatta; import com.sap.sailing.domain.base.Regatta;
import com.sap.sailing.domain.base.RemoteSailingServerReference; 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.FlexibleLeaderboard;
import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.domain.leaderboard.LeaderboardGroup; import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
@@ -229,14 +228,7 @@ public final class HomeServiceUtil {
return boatClass == null ? null : boatClass.getName(); return boatClass == null ? null : boatClass.getName();
} }
public static Double getBoatClassHullLenght(Leaderboard leaderboard) { public static BoatClass getBoatClass(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) {
if(leaderboard instanceof RegattaLeaderboard) { if(leaderboard instanceof RegattaLeaderboard) {
RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard;
BoatClass boatClassFromRegatta = regattaLeaderboard.getRegatta().getBoatClass(); BoatClass boatClassFromRegatta = regattaLeaderboard.getRegatta().getBoatClass();
@@ -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.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.FlushableCellTable; 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.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.RaceLogDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO; import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sailing.gwt.ui.shared.RegattaLogDTO; import com.sap.sailing.gwt.ui.shared.RegattaLogDTO;
@@ -191,11 +192,10 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel implement
raceColumnTable.setSelectedLeaderboardName(getSelectedLeaderboardName()); raceColumnTable.setSelectedLeaderboardName(getSelectedLeaderboardName());
RegattaDTO regatta = getSelectedRegatta(); RegattaDTO regatta = getSelectedRegatta();
if (regatta != null) { double buoyZoneRadius = regatta == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS
double buoyZoneRadiusInMeters = regatta.boatClass == null ? 15 /* default if no boat class */ : regatta.getCalculatedBuoyZoneRadius();
: (regatta.boatClass.getHullLengthInMeters() * regatta.circleRadius); raceColumnTable.setSelectedRegattaHullLenghtCircleFactor(buoyZoneRadius);
raceColumnTable.setSelectedRegattaHullLenghtCircleFactor(buoyZoneRadiusInMeters);
}
} }
}); });
filteredLeaderboardList.addDataDisplay(leaderboardTable); filteredLeaderboardList.addDataDisplay(leaderboardTable);
@@ -51,7 +51,7 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
protected final ListBox sailingEventsListBox; protected final ListBox sailingEventsListBox;
protected final CheckBox useStartTimeInferenceCheckBox; protected final CheckBox useStartTimeInferenceCheckBox;
protected final CheckBox controlTrackingFromStartAndFinishTimesCheckBox; protected final CheckBox controlTrackingFromStartAndFinishTimesCheckBox;
protected final DoubleBox circleRadiusDoubleBox; protected final DoubleBox hullLengthRadiusFactorDoubleBox;
protected final ListEditorComposite<SeriesDTO> seriesEditor; protected final ListEditorComposite<SeriesDTO> seriesEditor;
private final ListBox rankingMetricListBox; private final ListBox rankingMetricListBox;
@@ -96,8 +96,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
controlTrackingFromStartAndFinishTimesCheckBox.ensureDebugId("ControlTrackingFromStartAndFinishTimesCheckBox"); controlTrackingFromStartAndFinishTimesCheckBox.ensureDebugId("ControlTrackingFromStartAndFinishTimesCheckBox");
controlTrackingFromStartAndFinishTimesCheckBox.setValue(regatta.controlTrackingFromStartAndFinishTimes); controlTrackingFromStartAndFinishTimesCheckBox.setValue(regatta.controlTrackingFromStartAndFinishTimes);
circleRadiusDoubleBox = createDoubleBox(regatta.circleRadius, 10); hullLengthRadiusFactorDoubleBox = createDoubleBox(regatta.hullLengthRadiusFactor, 10);
circleRadiusDoubleBox.ensureDebugId("CircleRadiusDoubleBox"); hullLengthRadiusFactorDoubleBox.ensureDebugId("HullLengthRadiusFactorDoubleBox");
courseAreaListBox = createListBox(false); courseAreaListBox = createListBox(false);
courseAreaListBox.ensureDebugId("CourseAreaListBox"); courseAreaListBox.ensureDebugId("CourseAreaListBox");
@@ -166,8 +166,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
formGrid.setWidget(6, 1, useStartTimeInferenceCheckBox); formGrid.setWidget(6, 1, useStartTimeInferenceCheckBox);
formGrid.setWidget(7, 0, new Label(stringMessages.controlTrackingFromStartAndFinishTimes() + ":")); formGrid.setWidget(7, 0, new Label(stringMessages.controlTrackingFromStartAndFinishTimes() + ":"));
formGrid.setWidget(7, 1, controlTrackingFromStartAndFinishTimesCheckBox); formGrid.setWidget(7, 1, controlTrackingFromStartAndFinishTimesCheckBox);
formGrid.setWidget(8, 0, new Label(stringMessages.circleRadius() + ":")); formGrid.setWidget(8, 0, new Label(stringMessages.hullLengthRadiusFactor() + ":"));
formGrid.setWidget(8, 1, circleRadiusDoubleBox); formGrid.setWidget(8, 1, hullLengthRadiusFactorDoubleBox);
setupAdditionalWidgetsOnPanel(panel, formGrid); setupAdditionalWidgetsOnPanel(panel, formGrid);
return panel; return panel;
} }
@@ -292,7 +292,7 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
result.scoringScheme = getSelectedScoringSchemeType(); result.scoringScheme = getSelectedScoringSchemeType();
result.useStartTimeInference = useStartTimeInferenceCheckBox.getValue(); result.useStartTimeInference = useStartTimeInferenceCheckBox.getValue();
result.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimesCheckBox.getValue(); result.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimesCheckBox.getValue();
result.circleRadius = circleRadiusDoubleBox.getValue(); result.hullLengthRadiusFactor = hullLengthRadiusFactorDoubleBox.getValue();
setCourseAreaInRegatta(result); setCourseAreaInRegatta(result);
result.series = getSeriesEditor().getValue(); result.series = getSeriesEditor().getValue();
return result; return result;
@@ -66,7 +66,7 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
sailingService.createRegatta(newRegatta.getName(), newRegatta.boatClass==null?null:newRegatta.boatClass.getName(), sailingService.createRegatta(newRegatta.getName(), newRegatta.boatClass==null?null:newRegatta.boatClass.getName(),
newRegatta.startDate, newRegatta.endDate, newRegatta.startDate, newRegatta.endDate,
new RegattaCreationParametersDTO(seriesStructure), true, new RegattaCreationParametersDTO(seriesStructure), true,
newRegatta.scoringScheme, newRegatta.defaultCourseAreaUuid, newRegatta.circleRadius, newRegatta.useStartTimeInference, newRegatta.scoringScheme, newRegatta.defaultCourseAreaUuid, newRegatta.hullLengthRadiusFactor, newRegatta.useStartTimeInference,
newRegatta.controlTrackingFromStartAndFinishTimes, newRegatta.controlTrackingFromStartAndFinishTimes,
newRegatta.rankingMetricType, new AsyncCallback<RegattaDTO>() { newRegatta.rankingMetricType, new AsyncCallback<RegattaDTO>() {
@Override @Override
@@ -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.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.StringMessages; import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings; 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.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.EntityIdentityComparator; import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
@@ -55,7 +54,7 @@ extends TableWrapper<RaceColumnDTOAndFleetDTOWithNameBasedEquality, S> {
.getA().getRaceIdentifier(raceInLeaderboardDTOAndFleetName.getB()); .getA().getRaceIdentifier(raceInLeaderboardDTOAndFleetName.getB());
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
params.put("leaderboardName", selectedLeaderboardName); 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("regattaName", raceIdentifier.getRegattaName());
params.put("raceName", raceIdentifier.getRaceName()); params.put("raceName", raceIdentifier.getRaceName());
params.put("canReplayDuringLiveRaces", "true"); params.put("canReplayDuringLiveRaces", "true");
@@ -61,7 +61,8 @@ public class RegattaDetailsComposite extends Composite {
private final Label useStartTimeInference; private final Label useStartTimeInference;
private final Label controlTrackingFromStartAndFinishTimes; private final Label controlTrackingFromStartAndFinishTimes;
private final Label configuration; private final Label configuration;
private final Label hullLengthRadiusFactor;
private final SelectionModel<SeriesDTO> seriesSelectionModel; private final SelectionModel<SeriesDTO> seriesSelectionModel;
private final CellTable<SeriesDTO> seriesTable; private final CellTable<SeriesDTO> seriesTable;
private ListDataProvider<SeriesDTO> seriesListDataProvider; private ListDataProvider<SeriesDTO> seriesListDataProvider;
@@ -79,7 +80,7 @@ public class RegattaDetailsComposite extends Composite {
VerticalPanel vPanel = new VerticalPanel(); VerticalPanel vPanel = new VerticalPanel();
mainPanel.add(vPanel); mainPanel.add(vPanel);
int rows = 11; int rows = 12;
Grid grid = new Grid(rows, 2); Grid grid = new Grid(rows, 2);
vPanel.add(grid); vPanel.add(grid);
@@ -92,10 +93,11 @@ public class RegattaDetailsComposite extends Composite {
defaultCourseArea = createLabelAndValueWidget(grid, currentRow++, stringMessages.courseArea(), "CourseAreaLabel"); defaultCourseArea = createLabelAndValueWidget(grid, currentRow++, stringMessages.courseArea(), "CourseAreaLabel");
useStartTimeInference = createLabelAndValueWidget(grid, currentRow++, stringMessages.useStartTimeInference(), "UseStartTimeInferenceLabel"); useStartTimeInference = createLabelAndValueWidget(grid, currentRow++, stringMessages.useStartTimeInference(), "UseStartTimeInferenceLabel");
controlTrackingFromStartAndFinishTimes = createLabelAndValueWidget(grid, currentRow++, stringMessages.controlTrackingFromStartAndFinishTimes(), "UseStartTimeInferenceLabel"); controlTrackingFromStartAndFinishTimes = createLabelAndValueWidget(grid, currentRow++, stringMessages.controlTrackingFromStartAndFinishTimes(), "UseStartTimeInferenceLabel");
hullLengthRadiusFactor = createLabelAndValueWidget(grid, currentRow++, stringMessages.hullLengthRadiusFactor(), "HullLengthRadiusFactorLabel");
configuration = createLabelAndValueWidget(grid, currentRow++, stringMessages.racingProcedureConfiguration(), "RacingProcedureLabel"); configuration = createLabelAndValueWidget(grid, currentRow++, stringMessages.racingProcedureConfiguration(), "RacingProcedureLabel");
scoringSystem = createLabelAndValueWidget(grid, currentRow++, stringMessages.scoringSystem(), "ScoringSystemLabel"); scoringSystem = createLabelAndValueWidget(grid, currentRow++, stringMessages.scoringSystem(), "ScoringSystemLabel");
rankingMetric = createLabelAndValueWidget(grid, currentRow++, stringMessages.rankingMetric(), "RankingMetricLabel"); rankingMetric = createLabelAndValueWidget(grid, currentRow++, stringMessages.rankingMetric(), "RankingMetricLabel");
seriesTable = createRegattaSeriesTable(); seriesTable = createRegattaSeriesTable();
seriesTable.ensureDebugId("SeriesCellTable"); seriesTable.ensureDebugId("SeriesCellTable");
seriesSelectionModel = new SingleSelectionModel<SeriesDTO>(); seriesSelectionModel = new SingleSelectionModel<SeriesDTO>();
@@ -398,6 +400,8 @@ public class RegattaDetailsComposite extends Composite {
defaultCourseArea.setText(regatta.defaultCourseAreaUuid == null ? "" : regatta.defaultCourseAreaName); defaultCourseArea.setText(regatta.defaultCourseAreaUuid == null ? "" : regatta.defaultCourseAreaName);
useStartTimeInference.setText(regatta.useStartTimeInference ? stringMessages.yes() : stringMessages.no()); useStartTimeInference.setText(regatta.useStartTimeInference ? stringMessages.yes() : stringMessages.no());
controlTrackingFromStartAndFinishTimes.setText(regatta.controlTrackingFromStartAndFinishTimes ? stringMessages.yes() : stringMessages.no()); controlTrackingFromStartAndFinishTimes.setText(regatta.controlTrackingFromStartAndFinishTimes ? stringMessages.yes() : stringMessages.no());
hullLengthRadiusFactor.setText(String.valueOf(regatta.hullLengthRadiusFactor));
if (regatta.configuration != null) { if (regatta.configuration != null) {
configuration.setText(stringMessages.configured()); configuration.setText(stringMessages.configured());
} else { } else {
@@ -290,7 +290,7 @@ public class RegattaListComposite extends Composite implements RegattasDisplayer
final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName()); final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName());
sailingService.updateRegatta(regattaName, editedRegatta.startDate, editedRegatta.endDate, editedRegatta.defaultCourseAreaUuid, 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<Void>(new AsyncCallback<Void>() { new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
@@ -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.Grid;
import com.google.gwt.user.client.ui.TabPanel; import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalPanel; 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.base.Series;
import com.sap.sailing.domain.common.LeaderboardNameConstants; import com.sap.sailing.domain.common.LeaderboardNameConstants;
import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.FleetDTO;
@@ -109,6 +110,7 @@ public class RegattaWithSeriesAndFleetsCreateDialog extends RegattaWithSeriesAnd
List<EventDTO> existingEvents, EventDTO correspondingEvent, StringMessages stringMessages, DialogCallback<RegattaDTO> callback) { List<EventDTO> existingEvents, EventDTO correspondingEvent, StringMessages stringMessages, DialogCallback<RegattaDTO> callback) {
super(new RegattaDTO(), Collections.<SeriesDTO>emptySet(), existingEvents, correspondingEvent, stringMessages.addRegatta(), stringMessages.ok(), super(new RegattaDTO(), Collections.<SeriesDTO>emptySet(), existingEvents, correspondingEvent, stringMessages.addRegatta(), stringMessages.ok(),
stringMessages, new RegattaParameterValidator(stringMessages, existingRegattas), callback); stringMessages, new RegattaParameterValidator(stringMessages, existingRegattas), callback);
hullLengthRadiusFactorDoubleBox.setValue(Regatta.DEFAULT_HULL_LENGHT_FACTOR);
SeriesDTO series = new SeriesDTO(); SeriesDTO series = new SeriesDTO();
series.setName(Series.DEFAULT_NAME); series.setName(Series.DEFAULT_NAME);
series.setMedal(false); series.setMedal(false);
@@ -336,7 +336,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
List<RaceColumnDTOAndFleetDTOWithNameBasedEquality> races = List<RaceColumnDTOAndFleetDTOWithNameBasedEquality> races =
new ArrayList<>(raceColumnTable.getDataProvider().getList()); new ArrayList<>(raceColumnTable.getDataProvider().getList());
races.remove(raceColumnDTOAndFleetDTO); races.remove(raceColumnDTOAndFleetDTO);
double regattaHullLenghtCircleFactor = getSelectedRegatta() != null ? null : getSelectedRegatta().circleRadius; double regattaHullLenghtCircleFactor = getSelectedRegatta() != null ? null : getSelectedRegatta().hullLengthRadiusFactor;
new CopyCourseAndCompetitorsDialog(sailingService, errorReporter, stringMessages, races, new CopyCourseAndCompetitorsDialog(sailingService, errorReporter, stringMessages, races,
leaderboardName, regattaHullLenghtCircleFactor, new DialogCallback<CourseAndCompetitorCopyOperation>() { leaderboardName, regattaHullLenghtCircleFactor, new DialogCallback<CourseAndCompetitorCopyOperation>() {
@Override @Override
@@ -619,7 +619,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
DeviceConfigurationDTO.RegattaConfigurationDTO configuration) { DeviceConfigurationDTO.RegattaConfigurationDTO configuration) {
final RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName()); final RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName());
sailingService.updateRegatta(regattaIdentifier, regatta.startDate, regatta.endDate, sailingService.updateRegatta(regattaIdentifier, regatta.startDate, regatta.endDate,
regatta.defaultCourseAreaUuid, configuration, regatta.circleRadius, regatta.useStartTimeInference, regatta.defaultCourseAreaUuid, configuration, regatta.hullLengthRadiusFactor, regatta.useStartTimeInference,
regatta.controlTrackingFromStartAndFinishTimes, regatta.controlTrackingFromStartAndFinishTimes,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() { new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override @Override
@@ -215,7 +215,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate,
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent,
ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference,
boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType); boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType);
void removeRegatta(RegattaIdentifier regattaIdentifier); void removeRegatta(RegattaIdentifier regattaIdentifier);
@@ -225,7 +225,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
void removeRegattas(Collection<RegattaIdentifier> regattas); void removeRegattas(Collection<RegattaIdentifier> regattas);
void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid, 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<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName, List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName,
List<Pair<String, Integer>> columnNames); List<Pair<String, Integer>> columnNames);
@@ -441,7 +441,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, void createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate,
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent, RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, boolean persistent,
ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, ScoringSchemeType scoringSchemeType, UUID defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference,
boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType, boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType,
AsyncCallback<RegattaDTO> callback); AsyncCallback<RegattaDTO> callback);
@@ -528,7 +528,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void storeSwissTimingArchiveConfiguration(String swissTimingUrl, AsyncCallback<Void> asyncCallback); void storeSwissTimingArchiveConfiguration(String swissTimingUrl, AsyncCallback<Void> asyncCallback);
void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid, 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<Void> callback); boolean controlTrackingFromStartAndFinishTimes, AsyncCallback<Void> callback);
/** /**
@@ -1645,5 +1645,5 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String notificationRegattaConfigurationUpdatedUsingByMarks(); String notificationRegattaConfigurationUpdatedUsingByMarks();
String warningOverrideRegattaConfigurationCourseDesignerToByMarks(); String warningOverrideRegattaConfigurationCourseDesignerToByMarks();
String allRacesHaveBeenDenoted(); String allRacesHaveBeenDenoted();
String circleRadius(); String hullLengthRadiusFactor();
} }
@@ -1618,4 +1618,4 @@ maximumNumberOfDiscards=Maximum number of discards
notificationRegattaConfigurationUpdatedUsingByMarks=Active regatta configuration was set, using the "By Marks" course designer. 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"? 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. allRacesHaveBeenDenoted=All races have been denoted for racelog tracking.
circleRadius=Circle radius hullLengthRadiusFactor=Hull length radius factor
@@ -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_STREAMLETS = "viewShowStreamlets";
public static final String PARAM_VIEW_SHOW_STREAMLET_COLORS = "viewShowStreamletColors"; 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_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; 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 showWindStreamletOverlay = GwtHttpRequestUtils.getBooleanParameter(PARAM_VIEW_SHOW_STREAMLETS, defaultForViewShowStreamlets /* default */);
final boolean showWindStreamletColors = GwtHttpRequestUtils.getBooleanParameter(PARAM_VIEW_SHOW_STREAMLET_COLORS, defaultForViewShowStreamletColors /* 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 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); return new RaceMapSettings(showMapControls, showCourseGeometry, windUp, buoyZoneRadiusInMeters, showWindStreamletOverlay, showWindStreamletColors, showSimulationOverlay);
} }
public Set<ManeuverType> getManeuverTypesToShow() { public Set<ManeuverType> getManeuverTypesToShow() {
return maneuverTypesToShow; return maneuverTypesToShow;
} }
} }
@@ -208,7 +208,7 @@ public class RaceBoardPanel extends AbstractPerspectiveComposite<RaceBoardPerspe
RaceTimePanelLifecycle raceTimePanelLifecycle = perspectiveLifecycleWithAllSettings.getPerspectiveLifecycle().getRaceTimePanelLifecycle(); RaceTimePanelLifecycle raceTimePanelLifecycle = perspectiveLifecycleWithAllSettings.getPerspectiveLifecycle().getRaceTimePanelLifecycle();
RaceTimePanelSettings raceTimePanelSettings = perspectiveLifecycleWithAllSettings.findComponentSettingsByLifecycle(raceTimePanelLifecycle); RaceTimePanelSettings raceTimePanelSettings = perspectiveLifecycleWithAllSettings.findComponentSettingsByLifecycle(raceTimePanelLifecycle);
final double buoyZoneRadiusInMeters = GwtHttpRequestUtils.getDoubleParameter(RaceMapSettings.PARAM_VIEW_BUOY_ZONE_RADIUS, 0.0 /* default */); final double buoyZoneRadiusInMeters = GwtHttpRequestUtils.getDoubleParameter(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS, RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS /* default */);
final RaceMapSettings raceMapSettings = new RaceMapSettings(defaultRaceMapSettings.getZoomSettings(), defaultRaceMapSettings.getHelpLinesSettings(), final RaceMapSettings raceMapSettings = new RaceMapSettings(defaultRaceMapSettings.getZoomSettings(), defaultRaceMapSettings.getHelpLinesSettings(),
defaultRaceMapSettings.getTransparentHoverlines(), defaultRaceMapSettings.getHoverlineStrokeWeight(), defaultRaceMapSettings.getTransparentHoverlines(), defaultRaceMapSettings.getHoverlineStrokeWeight(),
defaultRaceMapSettings.getTailLengthInMilliseconds(), defaultRaceMapSettings.isWindUp(), defaultRaceMapSettings.getTailLengthInMilliseconds(), defaultRaceMapSettings.isWindUp(),
@@ -301,7 +301,6 @@ import com.sap.sailing.gwt.ui.adminconsole.RaceLogSetTrackingTimesDTO;
import com.sap.sailing.gwt.ui.client.SailingService; import com.sap.sailing.gwt.ui.client.SailingService;
import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrackDTO; import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrackDTO;
import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTracksDTO; import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTracksDTO;
import com.sap.sailing.gwt.ui.client.shared.racemap.RaceMapSettings;
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO; import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
import com.sap.sailing.gwt.ui.shared.CompactBoatPositionsDTO; import com.sap.sailing.gwt.ui.shared.CompactBoatPositionsDTO;
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO; import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
@@ -443,6 +442,7 @@ import com.sap.sailing.simulator.SimulationResults;
import com.sap.sailing.simulator.TimedPositionWithSpeed; import com.sap.sailing.simulator.TimedPositionWithSpeed;
import com.sap.sailing.simulator.impl.PolarDiagramGPS; import com.sap.sailing.simulator.impl.PolarDiagramGPS;
import com.sap.sailing.simulator.impl.SparseSimulationDataException; import com.sap.sailing.simulator.impl.SparseSimulationDataException;
import com.sap.sailing.util.RegattaUtil;
import com.sap.sailing.xrr.schema.RegattaResults; import com.sap.sailing.xrr.schema.RegattaResults;
import com.sap.sailing.xrr.structureimport.SeriesParameters; import com.sap.sailing.xrr.structureimport.SeriesParameters;
import com.sap.sailing.xrr.structureimport.StructureImporter; import com.sap.sailing.xrr.structureimport.StructureImporter;
@@ -561,7 +561,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
Activator activator = Activator.getInstance(); Activator activator = Activator.getInstance();
if (context != null) { if (context != null) {
activator.setSailingService(this); // register so this service is informed when the bundle shuts down activator.setSailingService(this); // register so this service is informed when the bundle shuts down
} }
quickRanksLiveCache = new QuickRanksLiveCache(this); quickRanksLiveCache = new QuickRanksLiveCache(this);
racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class); racingEventServiceTracker = ServiceTrackerFactory.createAndOpen(context, RacingEventService.class);
replicationServiceTracker = ServiceTrackerFactory.createAndOpen(context, ReplicationService.class); replicationServiceTracker = ServiceTrackerFactory.createAndOpen(context, ReplicationService.class);
@@ -835,7 +835,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
regattaDTO.defaultCourseAreaUuid = regatta.getDefaultCourseArea().getId(); regattaDTO.defaultCourseAreaUuid = regatta.getDefaultCourseArea().getId();
regattaDTO.defaultCourseAreaName = regatta.getDefaultCourseArea().getName(); regattaDTO.defaultCourseAreaName = regatta.getDefaultCourseArea().getName();
} }
regattaDTO.circleRadius = regatta.getCircleRadius(); regattaDTO.hullLengthRadiusFactor = regatta.getHullLengthRadiusFactor();
regattaDTO.useStartTimeInference = regatta.useStartTimeInference(); regattaDTO.useStartTimeInference = regatta.useStartTimeInference();
regattaDTO.controlTrackingFromStartAndFinishTimes = regatta.isControlTrackingFromStartAndFinishTimes(); regattaDTO.controlTrackingFromStartAndFinishTimes = regatta.isControlTrackingFromStartAndFinishTimes();
regattaDTO.configuration = convertToRegattaConfigurationDTO(regatta.getRegattaConfiguration()); regattaDTO.configuration = convertToRegattaConfigurationDTO(regatta.getRegattaConfiguration());
@@ -2819,7 +2819,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
/* isMedal */false, /* isFleetsCanRunInParallel */ true, Collections.singletonList(new FleetImpl( /* isMedal */false, /* isFleetsCanRunInParallel */ true, Collections.singletonList(new FleetImpl(
LeaderboardNameConstants.DEFAULT_FLEET_NAME)), LeaderboardNameConstants.DEFAULT_FLEET_NAME)),
/* race column names */new ArrayList<String>(), getService())), false, /* race column names */new ArrayList<String>(), 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)); /* controlTrackingFromStartAndFinishTimes */ false, RankingMetricsFactory.getRankingMetricConstructor(RankingMetrics.ONE_DESIGN));
// TODO: is course area relevant for swiss timing replay? // TODO: is course area relevant for swiss timing replay?
} else { } else {
@@ -3921,7 +3921,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
@Override @Override
public void updateRegatta(RegattaIdentifier regattaName, Date startDate, Date endDate, UUID defaultCourseAreaUuid, 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); Regatta regatta = getService().getRegatta(regattaName);
if (regatta != null) { if (regatta != null) {
SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.UPDATE, regatta.getName())); 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 startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null;
TimePoint endTimePoint = endDate != null ? new MillisecondsTimePoint(endDate) : null; TimePoint endTimePoint = endDate != null ? new MillisecondsTimePoint(endDate) : null;
getService().apply(new UpdateSpecificRegatta(regattaName, startTimePoint, endTimePoint, getService().apply(new UpdateSpecificRegatta(regattaName, startTimePoint, endTimePoint,
defaultCourseAreaUuid, convertToRegattaConfiguration(configurationDTO), circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes)); defaultCourseAreaUuid, convertToRegattaConfiguration(configurationDTO), hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes));
} }
@Override @Override
@@ -4020,7 +4020,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
@Override @Override
public RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate, public RegattaDTO createRegatta(String regattaName, String boatClassName, Date startDate, Date endDate,
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedal, 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) { boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType) {
SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.CREATE, regattaName)); SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.CREATE, regattaName));
TimePoint startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null; TimePoint startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null;
@@ -4029,7 +4029,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
new AddSpecificRegatta( new AddSpecificRegatta(
regattaName, boatClassName, startTimePoint, endTimePoint, UUID.randomUUID(), regattaName, boatClassName, startTimePoint, endTimePoint, UUID.randomUUID(),
seriesNamesWithFleetNamesAndFleetOrderingAndMedal, seriesNamesWithFleetNamesAndFleetOrderingAndMedal,
persistent, baseDomainFactory.createScoringScheme(scoringSchemeType), defaultCourseAreaId, circleRadius, useStartTimeInference, persistent, baseDomainFactory.createScoringScheme(scoringSchemeType), defaultCourseAreaId, hullLengthRadiusFactor, useStartTimeInference,
controlTrackingFromStartAndFinishTimes, rankingMetricType)); controlTrackingFromStartAndFinishTimes, rankingMetricType));
return convertToRegattaDTO(regatta); return convertToRegattaDTO(regatta);
} }
@@ -4237,15 +4237,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
if (leaderboard != null) { if (leaderboard != null) {
if (visibleRegattas != null && !visibleRegattas.contains(leaderboard.getName())) { if (visibleRegattas != null && !visibleRegattas.contains(leaderboard.getName())) {
return result; return result;
} }
String regattaName = getRegattaNameFromLeaderboard(leaderboard); String regattaName = getRegattaNameFromLeaderboard(leaderboard);
if (leaderboard instanceof RegattaLeaderboard) { if (leaderboard instanceof RegattaLeaderboard) {
RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard; RegattaLeaderboard regattaLeaderboard = (RegattaLeaderboard) leaderboard;
Regatta regatta = regattaLeaderboard.getRegatta(); Regatta regatta = regattaLeaderboard.getRegatta();
BoatClass boatClass = regatta.getBoatClass(); BoatClass boatClass = regatta.getBoatClass();
Distance boatHullLength = boatClass.getHullLength(); double buyZoneRadius = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(regatta, boatClass);
double buyZoneRadius = boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS
: boatHullLength.getMeters() * regatta.getCircleRadius();
for (Series series : regatta.getSeries()) { for (Series series : regatta.getSeries()) {
Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>(); Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>();
for (RaceColumn raceColumn : series.getRaceColumns()) { for (RaceColumn raceColumn : series.getRaceColumns()) {
@@ -4261,9 +4259,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
boatClass = trackedRace.getRace().getBoatClass(); boatClass = trackedRace.getRace().getBoatClass();
break; break;
} }
Distance boatHullLength = boatClass == null ? null : boatClass.getHullLength(); double buyZoneRadius = RegattaUtil.getCalculatedRegattaBuoyZoneRadius(null, boatClass);
double buyZoneRadius = boatHullLength == null ? RaceMapSettings.DEFAULT_BUOY_ZONE_RADIUS
: boatHullLength.getMeters() * Regatta.DEFAULT_HULL_LENGHT_FACTOR;
Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>(); Map<String, List<RegattaOverviewEntryDTO>> entriesPerFleet = new HashMap<String, List<RegattaOverviewEntryDTO>>();
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
getRegattaOverviewEntries(showOnlyRacesOfSameDay, dayToCheck, usedCourseArea, 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())); SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.CREATE, regatta.getName()));
this.createRegatta(regatta.getName(), regatta.boatClass.getName(), regatta.startDate, regatta.endDate, this.createRegatta(regatta.getName(), regatta.boatClass.getName(), regatta.startDate, regatta.endDate,
new RegattaCreationParametersDTO(getSeriesCreationParameters(regatta)), 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); regatta.controlTrackingFromStartAndFinishTimes, regatta.rankingMetricType);
} }
@@ -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.NamedDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.dto.RaceDTO; 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; import com.sap.sse.common.Util.Pair;
public class RegattaDTO extends NamedDTO { public class RegattaDTO extends NamedDTO {
@@ -34,7 +35,7 @@ public class RegattaDTO extends NamedDTO {
public boolean useStartTimeInference = true; public boolean useStartTimeInference = true;
public boolean controlTrackingFromStartAndFinishTimes = false; public boolean controlTrackingFromStartAndFinishTimes = false;
public RankingMetrics rankingMetricType; public RankingMetrics rankingMetricType;
public double circleRadius; public double hullLengthRadiusFactor;
public RegattaDTO() {} public RegattaDTO() {}
@@ -65,7 +66,7 @@ public class RegattaDTO extends NamedDTO {
this.configuration = other.configuration; this.configuration = other.configuration;
this.useStartTimeInference = other.useStartTimeInference; this.useStartTimeInference = other.useStartTimeInference;
this.controlTrackingFromStartAndFinishTimes = other.controlTrackingFromStartAndFinishTimes; this.controlTrackingFromStartAndFinishTimes = other.controlTrackingFromStartAndFinishTimes;
this.circleRadius = other.circleRadius; this.hullLengthRadiusFactor = other.hullLengthRadiusFactor;
} }
@@ -123,6 +124,11 @@ public class RegattaDTO extends NamedDTO {
return false; 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 @Override
public int hashCode() { public int hashCode() {
final int prime = 31; final int prime = 31;
@@ -434,12 +434,21 @@ public class LeaderboardGroupPanel extends SimplePanel implements HasWelcomeWidg
Boolean.toString(showNavigationPanel)); Boolean.toString(showNavigationPanel));
linkParams.put("regattaName", raceIdentifier.getRegattaName()); linkParams.put("regattaName", raceIdentifier.getRegattaName());
linkParams.put("leaderboardGroupName", leaderboardGroup.getName()); linkParams.put("leaderboardGroupName", leaderboardGroup.getName());
linkParams.put(RaceMapSettings.PARAM_BUOY_ZONE_RADIUS,
String.valueOf(getRegattaBuoyZoneRadius(raceIdentifier.getRegattaName())));
if (viewMode != null && !viewMode.isEmpty()) { if (viewMode != null && !viewMode.isEmpty()) {
linkParams.put("viewMode", viewMode); linkParams.put("viewMode", viewMode);
} }
return linkParams; 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) { private SafeHtml getAnchor(String link, String linkText, String style) {
if (isEmbedded) { if (isEmbedded) {
return ANCHORTEMPLATE.anchorWithTarget(link, linkText, style, "_blank"); return ANCHORTEMPLATE.anchorWithTarget(link, linkText, style, "_blank");
@@ -62,7 +62,7 @@ public abstract class AbstractTestStoringAndRetrievingRaceLogInRegatta extends R
List<Series> series = createSeriesForTestRegatta(); List<Series> series = createSeriesForTestRegatta();
Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), RegattaImpl.getDefaultName(regattaBaseName, Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), RegattaImpl.getDefaultName(regattaBaseName,
boatClass == null ? null : boatClass.getName()), boatClass, /*startDate*/ null, /*endDate*/ null, series, persistent, scoringScheme, "123", 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; return regatta;
} }
@@ -405,7 +405,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
regattaStartDate, regattaEndDate, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, OneDesignRankingMetric::new); regattaStartDate, regattaEndDate, /* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, OneDesignRankingMetric::new);
final String regattaName = regattaProxy.getName(); final String regattaName = regattaProxy.getName();
Regatta regatta = res.createRegatta(regattaName, regattaProxy.getBoatClass().getName(), regattaStartDate, regattaEndDate, 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); addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 }); res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 });
DomainObjectFactory dof = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE); 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 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(), 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); trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta); addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
logColumnsInRegatta(regatta); logColumnsInRegatta(regatta);
@@ -51,7 +51,7 @@ public class LeaderboardGroupResourceTest extends AbstractJaxRsApiTest {
series.add(testSeries); series.add(testSeries);
regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName, regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName,
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*persistent*/ true, /*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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
testSeries.addRaceColumn("R1", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R1", /* trackedRegattaRegistry */ null);
testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null);
@@ -59,7 +59,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaBaseName, boatClassName), boatClassName, regatta = racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaBaseName, boatClassName), boatClassName,
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*persistent*/ true, /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*persistent*/ true,
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, 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("R1", /* trackedRegattaRegistry */ null);
testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null);
List<Competitor> competitors = createCompetitors(4); List<Competitor> competitors = createCompetitors(4);
@@ -49,7 +49,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
series.add(testSeries); series.add(testSeries);
racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName, racingEventService.createRegatta(RegattaImpl.getDefaultName(regattaName, boatClassName), boatClassName,
startDate, endDate, UUID.randomUUID(), series, /*persistent*/ true, 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("R1", /* trackedRegattaRegistry */ null);
testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null); testSeries.addRaceColumn("R2", /* trackedRegattaRegistry */ null);
} }
@@ -104,7 +104,7 @@ public abstract class AbstractLogReplicationTest<LogT extends AbstractLog<EventT
RegattaCreationParametersDTO regattaCreationParams = new RegattaCreationParametersDTO(seriesCreationParameters); RegattaCreationParametersDTO regattaCreationParams = new RegattaCreationParametersDTO(seriesCreationParameters);
AddSpecificRegatta addRegattaOperation = new AddSpecificRegatta(regattaName, boatClassName, AddSpecificRegatta addRegattaOperation = new AddSpecificRegatta(regattaName, boatClassName,
/*startDate*/ null, /*endDate*/ null, /* regatta ID */ UUID.randomUUID(), regattaCreationParams, /* persistent */ true, /*startDate*/ null, /*endDate*/ null, /* regatta ID */ UUID.randomUUID(), regattaCreationParams, /* persistent */ true,
new LowPoint(), /* default course area ID */ UUID.randomUUID(), /*circleRadius*/1.0, /* useStartTimeInference */ true, new LowPoint(), /* default course area ID */ UUID.randomUUID(), /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true,
/* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN); /* controlTrackingFromStartAndFinishTimes */ false, RankingMetrics.ONE_DESIGN);
return master.apply(addRegattaOperation); return master.apply(addRegattaOperation);
} }
@@ -76,7 +76,7 @@ public class CompetitorReplicationTest extends AbstractServerReplicationTest {
Iterable<Series> series = Collections.emptyList(); Iterable<Series> series = Collections.emptyList();
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName,
/*startDate*/ null, /*endDate*/ null, regattaId, series, /*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); /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
Iterable<Waypoint> emptyWaypointList = Collections.emptyList(); Iterable<Waypoint> emptyWaypointList = Collections.emptyList();
final String competitorName = "Der mit dem Kiel zieht"; final String competitorName = "Der mit dem Kiel zieht";
@@ -123,7 +123,7 @@ public class InitialLoadReplicationObjectIdentityTest extends AbstractServerRepl
final Iterable<Series> series = Collections.emptyList(); final Iterable<Series> series = Collections.emptyList();
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName,
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), series, /*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); /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric.CONSTRUCTOR);
assertNotNull(master.getRegatta(masterRegatta.getRegattaIdentifier())); assertNotNull(master.getRegatta(masterRegatta.getRegattaIdentifier()));
assertTrue(master.getAllRegattas().iterator().hasNext()); assertTrue(master.getAllRegattas().iterator().hasNext());
@@ -46,7 +46,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
final UUID regattaId = UUID.randomUUID(); final UUID regattaId = UUID.randomUUID();
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName,
/*startDate*/ null, /*endDate*/ null, regattaId, series, /*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); Thread.sleep(1000);
@@ -76,11 +76,11 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("Kiel Week 2012", "49er"), "49er", Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("Kiel Week 2012", "49er"), "49er",
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(), /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(),
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), currentCourseAreaId, /* 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' // Test for 'null'
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -89,7 +89,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
// Test for 'alpha' // Test for 'alpha'
currentCourseAreaId = alphaCourseAreaId; currentCourseAreaId = alphaCourseAreaId;
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -98,7 +98,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
// Test for 'tv' // Test for 'tv'
currentCourseAreaId = tvCourseAreaId; currentCourseAreaId = tvCourseAreaId;
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -107,7 +107,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
// Test back to 'null' // Test back to 'null'
currentCourseAreaId = null; currentCourseAreaId = null;
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -126,7 +126,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
final String regattaName = RegattaImpl.getDefaultName("Kiel Week 2012", "49er"); final String regattaName = RegattaImpl.getDefaultName("Kiel Week 2012", "49er");
Regatta masterRegatta = master.createRegatta(regattaName, "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(), Regatta masterRegatta = master.createRegatta(regattaName, "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(),
/* persistent */ true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), tvCourseAreaId, /* 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()); event = master.getEvent(event.getId());
assertTrue(event.getRegattas().iterator().hasNext()); assertTrue(event.getRegattas().iterator().hasNext());
assertEquals(regattaName, event.getRegattas().iterator().next().getName()); assertEquals(regattaName, event.getRegattas().iterator().next().getName());
@@ -136,7 +136,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
assertTrue(regattasInReplicatedEvent.hasNext()); assertTrue(regattasInReplicatedEvent.hasNext());
assertEquals(regattaName, regattasInReplicatedEvent.next().getName()); assertEquals(regattaName, regattasInReplicatedEvent.next().getName());
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, golfCourseAreaId, null, 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 @Test
@@ -153,11 +153,11 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
UUID currentCourseAreaId = null; UUID currentCourseAreaId = null;
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("RR", "49er"), "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(), Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName("RR", "49er"), "49er", /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), Collections.<Series>emptyList(),
true, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), currentCourseAreaId, 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' // Test for 'null'
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -167,7 +167,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
RegattaConfigurationImpl config = new RegattaConfigurationImpl(); RegattaConfigurationImpl config = new RegattaConfigurationImpl();
config.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MARKS); config.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MARKS);
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, config, 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); Thread.sleep(1000);
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -200,7 +200,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null); Arrays.asList(new Fleet[] { new FleetImpl("Medal") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null);
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ 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, 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); Thread.sleep(1000);
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -236,7 +236,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
Arrays.asList(new Fleet[] { new FleetImpl("Yellow"), new FleetImpl("Blue") }), emptyRaceColumnNamesList, /* trackedRegattaRegistry */ null); 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, 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, 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); Thread.sleep(1000);
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
assertNotNull(replicatedRegatta); assertNotNull(replicatedRegatta);
@@ -281,7 +281,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null, Regatta masterRegatta = master.createRegatta(RegattaImpl.getDefaultName(baseEventName, boatClassName), boatClassName, /*startDate*/ null, /*endDate*/ null,
UUID.randomUUID(), Arrays.asList(new Series[] { qualification }), /* persistent */ true, UUID.randomUUID(), Arrays.asList(new Series[] { qualification }), /* persistent */ true,
DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null, DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null,
/*circleRadius*/1.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, /*hullLengthRadiusFactor*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
OneDesignRankingMetric::new); OneDesignRankingMetric::new);
Thread.sleep(1000); Thread.sleep(1000);
Regatta replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); 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, 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(), /* 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); Thread.sleep(1000);
Event replicatedEvent = replica.getEvent(masterEvent.getId()); Event replicatedEvent = replica.getEvent(masterEvent.getId());
assertNotNull(replicatedEvent); assertNotNull(replicatedEvent);
@@ -210,7 +210,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -473,7 +473,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -631,7 +631,7 @@ public class MasterDataImportTest {
series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService)); series.add(new SeriesImpl("testSeries", false, /* isFleetsCanRunInParallel */ true, fleets, emptyRaceColumnNamesList, sourceService));
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta(RegattaImpl.getDefaultName("testRegatta", "29er"), "29er", 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -795,7 +795,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -955,7 +955,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -1069,7 +1069,7 @@ public class MasterDataImportTest {
destService)); destService));
Regatta regattaNotToOverride = destService.createRegatta( Regatta regattaNotToOverride = destService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regattaNotToOverride); event.addRegatta(regattaNotToOverride);
for (String name : raceColumnNamesNotToOverride) { for (String name : raceColumnNamesNotToOverride) {
@@ -1157,7 +1157,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -1267,7 +1267,7 @@ public class MasterDataImportTest {
destService)); destService));
Regatta regattaToOverride = destService.createRegatta( Regatta regattaToOverride = destService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ 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); /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regattaToOverride); event.addRegatta(regattaToOverride);
for (String name : raceColumnNamesToOverride) { for (String name : raceColumnNamesToOverride) {
@@ -1378,7 +1378,7 @@ public class MasterDataImportTest {
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */
null, /* endDate */null, UUID.randomUUID(), new ArrayList<Series>(), true, new LowPoint(), null, /* endDate */null, UUID.randomUUID(), new ArrayList<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);
// Let's use the setters directly because we are not testing replication // Let's use the setters directly because we are not testing replication
RegattaConfigurationImpl configuration = new RegattaConfigurationImpl(); RegattaConfigurationImpl configuration = new RegattaConfigurationImpl();
configuration.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MAP); configuration.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MAP);
@@ -1460,7 +1460,7 @@ public class MasterDataImportTest {
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
/* startDate */null, /* endDate */null, regattaUUID, series, true, new LowPoint(), /* 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) { for (String name : raceColumnNames) {
series.get(0).addRaceColumn(name, sourceService); series.get(0).addRaceColumn(name, sourceService);
} }
@@ -1593,7 +1593,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -1837,7 +1837,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, 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); /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
event.addRegatta(regatta); event.addRegatta(regatta);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
@@ -2068,7 +2068,7 @@ public class MasterDataImportTest {
UUID regattaUUID = UUID.randomUUID(); UUID regattaUUID = UUID.randomUUID();
Regatta regatta = sourceService.createRegatta( Regatta regatta = sourceService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, /* startDate */ 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); /* useStartTimeInference */true, /* controlTrackingFromStartAndFinishTimes */ false, OneDesignRankingMetric::new);
for (String name : raceColumnNames) { for (String name : raceColumnNames) {
seriesOnSource.get(0).addRaceColumn(name, sourceService); seriesOnSource.get(0).addRaceColumn(name, sourceService);
@@ -2197,7 +2197,7 @@ public class MasterDataImportTest {
Regatta regattaOnTarget = destService.createRegatta( Regatta regattaOnTarget = destService.createRegatta(
RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME, RegattaImpl.getDefaultName(TEST_REGATTA_NAME, TEST_BOAT_CLASS_NAME), TEST_BOAT_CLASS_NAME,
/* startDate */null, /* endDate */null, regattaUUID, seriesOnTarget, true, new LowPoint(), /* 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, raceColumnOnTarget.setTrackedRace(defaultFleetOnTarget, new DummyTrackedRace(raceId, competitors,
regattaOnTarget, null, sourceService.getWindStore())); regattaOnTarget, null, sourceService.getWindStore()));
@@ -141,7 +141,7 @@ public class SearchServiceTest {
pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er", pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er",
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ 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", "R1"));
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R2")); server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R2"));
server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R3")); server.apply(new AddColumnToSeries(pfingstbusch29er.getRegattaIdentifier(), "Default", "R3"));
@@ -149,7 +149,7 @@ public class SearchServiceTest {
/* leaderboardDisplayName */ null, /* discardThresholds */ new int[0])); /* leaderboardDisplayName */ null, /* discardThresholds */ new int[0]));
pfingstbusch470 = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "470"), "470", pfingstbusch470 = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "470"), "470",
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ /*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", "R1"));
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R2")); server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R2"));
server.apply(new AddColumnToSeries(pfingstbusch470.getRegattaIdentifier(), "Default", "R3")); 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", aalRegatta = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Aalregatta", "ORC"), "ORC",
/*startDate*/ null, /*endDate*/ null, UUID.randomUUID(), /*startDate*/ null, /*endDate*/ null, UUID.randomUUID(),
new RegattaCreationParametersDTO(seriesCreationParams), /* persistent */ 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", "R1"));
server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2")); server.apply(new AddColumnToSeries(aalRegatta.getRegattaIdentifier(), "Default", "R2"));
RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(), RegattaLeaderboard aalRegattaLeaderboard = server.apply(new CreateRegattaLeaderboard(aalRegatta.getRegattaIdentifier(),
@@ -314,12 +314,12 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
* @param controlTrackingFromStartAndFinishTimes TODO * @param controlTrackingFromStartAndFinishTimes TODO
*/ */
Regatta createRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable<? extends Series> series, Regatta createRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, Iterable<? extends Series> series,
boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double circleRadius, boolean persistent, ScoringScheme scoringScheme, Serializable defaultCourseAreaId, double hullLengthRadiusFactor,
boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor); boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, RankingMetricConstructor rankingMetricConstructor);
Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate,
Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration, Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration,
Iterable<? extends Series> series, double circleRadius, boolean useStartTimeInference, Iterable<? extends Series> series, double hullLengthRadiusFactor, boolean useStartTimeInference,
boolean controlTrackingFromStartAndFinishTimes); boolean controlTrackingFromStartAndFinishTimes);
/** /**
@@ -465,7 +465,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String fullRegattaName, String boatClassName, Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String fullRegattaName, String boatClassName,
TimePoint startDate, TimePoint endDate, Serializable id, TimePoint startDate, TimePoint endDate, Serializable id,
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Iterable<? extends Series> 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 * @return map where keys are the toString() representation of the {@link RaceDefinition#getId() IDs} of races passed to
@@ -1247,11 +1247,11 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
@Override @Override
public Regatta createRegatta(String fullRegattaName, String boatClassName, TimePoint startDate, TimePoint endDate, public Regatta createRegatta(String fullRegattaName, String boatClassName, TimePoint startDate, TimePoint endDate,
Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Serializable id, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
RankingMetricConstructor rankingMetricConstructor) { RankingMetricConstructor rankingMetricConstructor) {
com.sap.sse.common.Util.Pair<Regatta, Boolean> regattaWithCreatedFlag = getOrCreateRegattaWithoutReplication( com.sap.sse.common.Util.Pair<Regatta, Boolean> regattaWithCreatedFlag = getOrCreateRegattaWithoutReplication(
fullRegattaName, boatClassName, startDate, endDate, id, series, persistent, scoringScheme, fullRegattaName, boatClassName, startDate, endDate, id, series, persistent, scoringScheme,
defaultCourseAreaId, circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor); defaultCourseAreaId, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes, rankingMetricConstructor);
Regatta regatta = regattaWithCreatedFlag.getA(); Regatta regatta = regattaWithCreatedFlag.getA();
if (regattaWithCreatedFlag.getB()) { if (regattaWithCreatedFlag.getB()) {
onRegattaLikeAdded(regatta); onRegattaLikeAdded(regatta);
@@ -1284,12 +1284,12 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
public com.sap.sse.common.Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String fullRegattaName, public com.sap.sse.common.Util.Pair<Regatta, Boolean> getOrCreateRegattaWithoutReplication(String fullRegattaName,
String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id,
Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme, Iterable<? extends Series> series, boolean persistent, ScoringScheme scoringScheme,
Serializable defaultCourseAreaId, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes, Serializable defaultCourseAreaId, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
RankingMetricConstructor rankingMetricConstructor) { RankingMetricConstructor rankingMetricConstructor) {
CourseArea courseArea = getCourseArea(defaultCourseAreaId); CourseArea courseArea = getCourseArea(defaultCourseAreaId);
Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), fullRegattaName, Regatta regatta = new RegattaImpl(getRaceLogStore(), getRegattaLogStore(), fullRegattaName,
getBaseDomainFactory().getOrCreateBoatClass(boatClassName), startDate, endDate, series, persistent, 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); boolean wasCreated = addAndConnectRegatta(persistent, defaultCourseAreaId, regatta);
if (wasCreated) { if (wasCreated) {
logger.info("Created regatta " + regatta.getName() + " (" + hashCode() + ") on " + this); 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 replicate(new AddSpecificRegatta(regatta.getName(), regatta.getBoatClass() == null ? null : regatta
.getBoatClass().getName(), regatta.getStartDate(), regatta.getEndDate(), regatta.getId(), .getBoatClass().getName(), regatta.getStartDate(), regatta.getEndDate(), regatta.getId(),
getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(), getSeriesWithoutRaceColumnsConstructionParametersAsMap(regatta), regatta.isPersistent(),
regatta.getScoringScheme(), courseAreaId, regatta.getCircleRadius(), regatta.useStartTimeInference(), regatta.isControlTrackingFromStartAndFinishTimes(), regatta.getScoringScheme(), courseAreaId, regatta.getHullLengthRadiusFactor(), regatta.useStartTimeInference(), regatta.isControlTrackingFromStartAndFinishTimes(),
regatta.getRankingMetricType())); regatta.getRankingMetricType()));
RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier(); RegattaIdentifier regattaIdentifier = regatta.getRegattaIdentifier();
for (RaceDefinition race : regatta.getAllRaces()) { for (RaceDefinition race : regatta.getAllRaces()) {
@@ -2152,7 +2152,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
@Override @Override
public Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, public Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate,
Serializable newDefaultCourseAreaId, RegattaConfiguration newRegattaConfiguration, Serializable newDefaultCourseAreaId, RegattaConfiguration newRegattaConfiguration,
Iterable<? extends Series> series, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { Iterable<? extends Series> 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. // We're not doing any renaming of the regatta itself, therefore we don't have to sync on the maps.
Regatta regatta = getRegatta(regattaIdentifier); Regatta regatta = getRegatta(regattaIdentifier);
CourseArea newCourseArea = getCourseArea(newDefaultCourseAreaId); CourseArea newCourseArea = getCourseArea(newDefaultCourseAreaId);
@@ -2161,7 +2161,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
} }
regatta.setStartDate(startDate); regatta.setStartDate(startDate);
regatta.setEndDate(endDate); regatta.setEndDate(endDate);
regatta.setCircleRadius(circleRadius); regatta.setHullLengthRadiusFactor(hullLengthRadiusFactor);
regatta.setControlTrackingFromStartAndFinishTimes(controlTrackingFromStartAndFinishTimes); regatta.setControlTrackingFromStartAndFinishTimes(controlTrackingFromStartAndFinishTimes);
if (regatta.useStartTimeInference() != useStartTimeInference) { if (regatta.useStartTimeInference() != useStartTimeInference) {
regatta.setUseStartTimeInference(useStartTimeInference); regatta.setUseStartTimeInference(useStartTimeInference);
@@ -29,14 +29,14 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation {
private final boolean persistent; private final boolean persistent;
private final ScoringScheme scoringScheme; private final ScoringScheme scoringScheme;
private final Serializable defaultCourseAreaId; private final Serializable defaultCourseAreaId;
private final double circleRadius; private final double hullLengthRadiusFactor;
private final boolean useStartTimeInference; private final boolean useStartTimeInference;
private final boolean controlTrackingFromStartAndFinishTimes; private final boolean controlTrackingFromStartAndFinishTimes;
private final RankingMetrics rankingMetricType; private final RankingMetrics rankingMetricType;
public AddSpecificRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id, public AddSpecificRegatta(String regattaName, String boatClassName, TimePoint startDate, TimePoint endDate, Serializable id,
RegattaCreationParametersDTO seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds, 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) { boolean controlTrackingFromStartAndFinishTimes, RankingMetrics rankingMetricType) {
super(regattaName, boatClassName, startDate, endDate, id); super(regattaName, boatClassName, startDate, endDate, id);
this.seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndStartsWithZeroScoreAndDiscardingThresholds = seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds; this.seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndStartsWithZeroScoreAndDiscardingThresholds = seriesNamesWithFleetNamesAndFleetOrderingAndMedalAndDiscardingThresholds;
@@ -46,13 +46,13 @@ public class AddSpecificRegatta extends AbstractAddRegattaOperation {
this.useStartTimeInference = useStartTimeInference; this.useStartTimeInference = useStartTimeInference;
this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes; this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes;
this.rankingMetricType = rankingMetricType; this.rankingMetricType = rankingMetricType;
this.circleRadius = circleRadius; this.hullLengthRadiusFactor = hullLengthRadiusFactor;
} }
@Override @Override
public Regatta internalApplyTo(RacingEventService toState) throws Exception { public Regatta internalApplyTo(RacingEventService toState) throws Exception {
Regatta regatta = toState.createRegatta(getRegattaName(), getBoatClassName(), getStartDate(), getEndDate(), getId(), createSeries(toState), 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; return regatta;
} }
@@ -15,14 +15,14 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation<R
private final RegattaIdentifier regattaIdentifier; private final RegattaIdentifier regattaIdentifier;
private final UUID newDefaultCourseAreaId; private final UUID newDefaultCourseAreaId;
private final RegattaConfiguration newConfiguration; private final RegattaConfiguration newConfiguration;
private final double circleRadius; private final double hullLengthRadiusFactor;
private final boolean useStartTimeInference; private final boolean useStartTimeInference;
private final boolean controlTrackingFromStartAndFinishTimes; private final boolean controlTrackingFromStartAndFinishTimes;
private final TimePoint startDate; private final TimePoint startDate;
private final TimePoint endDate; private final TimePoint endDate;
public UpdateSpecificRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, UUID newDefaultCourseAreaId, public UpdateSpecificRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, UUID newDefaultCourseAreaId,
RegattaConfiguration newConfiguration, double circleRadius, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) { RegattaConfiguration newConfiguration, double hullLengthRadiusFactor, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) {
this.regattaIdentifier = regattaIdentifier; this.regattaIdentifier = regattaIdentifier;
this.startDate = startDate; this.startDate = startDate;
this.endDate = endDate; this.endDate = endDate;
@@ -30,12 +30,12 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation<R
this.newConfiguration = newConfiguration; this.newConfiguration = newConfiguration;
this.useStartTimeInference = useStartTimeInference; this.useStartTimeInference = useStartTimeInference;
this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes; this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes;
this.circleRadius = circleRadius; this.hullLengthRadiusFactor = hullLengthRadiusFactor;
} }
@Override @Override
public Regatta internalApplyTo(RacingEventService toState) throws Exception { public Regatta internalApplyTo(RacingEventService toState) throws Exception {
Regatta regatta = toState.updateRegatta(regattaIdentifier, startDate, endDate, newDefaultCourseAreaId, newConfiguration, null, circleRadius, useStartTimeInference, controlTrackingFromStartAndFinishTimes); Regatta regatta = toState.updateRegatta(regattaIdentifier, startDate, endDate, newDefaultCourseAreaId, newConfiguration, null, hullLengthRadiusFactor, useStartTimeInference, controlTrackingFromStartAndFinishTimes);
return regatta; return regatta;
} }