mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-27 07:56:38 +00:00
add secret for registration link to regatta dialog in the admin console
This commit is contained in:
+2
-1
@@ -1297,7 +1297,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
} else {
|
||||
competitorRegistrationType = CompetitorRegistrationType.CLOSED;
|
||||
}
|
||||
|
||||
final RankingMetricConstructor rankingMetricConstructor = loadRankingMetricConstructor(dbRegatta);
|
||||
if (createMigratableRegatta) {
|
||||
result = new MigratableRegattaImpl(getRaceLogStore(), getRegattaLogStore(), name, boatClass,
|
||||
@@ -1319,6 +1318,8 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
rankingMetricConstructor);
|
||||
}
|
||||
result.setRegattaConfiguration(configuration);
|
||||
String registrationLinkSecret = (String) dbRegatta.get(FieldNames.REGATTA_REGISTRATION_LINK_SECRET.name());
|
||||
result.setRegistrationLinkSecret(registrationLinkSecret);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+1
@@ -40,6 +40,7 @@ public enum FieldNames {
|
||||
REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES,
|
||||
REGATTA_CAN_BOATS_OF_COMPETITORS_CHANGE_PER_RACE,
|
||||
REGATTA_COMPETITOR_REGISTRATION_TYPE,
|
||||
REGATTA_REGISTRATION_LINK_SECRET,
|
||||
SERIES_NAME,
|
||||
SERIES_IS_MEDAL,
|
||||
SERIES_IS_FLEETS_CAN_RUN_IN_PARALLEL,
|
||||
|
||||
+1
@@ -717,6 +717,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
dbRegatta.put(FieldNames.REGATTA_CONTROL_TRACKING_FROM_START_AND_FINISH_TIMES.name(), regatta.isControlTrackingFromStartAndFinishTimes());
|
||||
dbRegatta.put(FieldNames.REGATTA_CAN_BOATS_OF_COMPETITORS_CHANGE_PER_RACE.name(), regatta.canBoatsOfCompetitorsChangePerRace());
|
||||
dbRegatta.put(FieldNames.REGATTA_COMPETITOR_REGISTRATION_TYPE.name(), regatta.getCompetitorRegistrationType().name());
|
||||
dbRegatta.put(FieldNames.REGATTA_REGISTRATION_LINK_SECRET.name(), regatta.getRegistrationLinkSecret());
|
||||
dbRegatta.put(FieldNames.REGATTA_RANKING_METRIC.name(), storeRankingMetric(regatta));
|
||||
boolean success = false;
|
||||
final int MAX_TRIES = 3;
|
||||
|
||||
+32
-1
@@ -9,6 +9,9 @@ import com.google.gwt.dom.client.OptionElement;
|
||||
import com.google.gwt.dom.client.SelectElement;
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
import com.google.gwt.user.client.ui.DoubleBox;
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
@@ -58,9 +61,11 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
|
||||
protected final ListEditorComposite<SeriesDTO> seriesEditor;
|
||||
private final ListBox rankingMetricListBox;
|
||||
protected final ListBox competitorRegistrationTypeListBox;
|
||||
protected final Button registrationLinkWithQRCodeOpenButton;
|
||||
|
||||
protected final List<EventDTO> existingEvents;
|
||||
private EventDTO defaultEvent;
|
||||
private RegistrationLinkWithQRCode registrationLinkWithQRCode;
|
||||
|
||||
public AbstractRegattaWithSeriesAndFleetsDialog(RegattaDTO regatta, Iterable<SeriesDTO> series, List<EventDTO> existingEvents, EventDTO correspondingEvent,
|
||||
String title, String okButton, StringMessages stringMessages, Validator<T> validator, DialogCallback<T> callback) {
|
||||
@@ -110,6 +115,25 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
|
||||
competitorRegistrationTypeListBox = createListBox(false);
|
||||
EnumSet.allOf(CompetitorRegistrationType.class).forEach(t->competitorRegistrationTypeListBox.addItem(t.getLabel(stringMessages), t.name()));
|
||||
competitorRegistrationTypeListBox.setSelectedIndex(regatta.competitorRegistrationType.ordinal());
|
||||
|
||||
registrationLinkWithQRCode = new RegistrationLinkWithQRCode();
|
||||
registrationLinkWithQRCode.setSecret(regatta.registrationLinkSecret);
|
||||
registrationLinkWithQRCodeOpenButton = new Button(stringMessages.registrationLinkConfig(), new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
new RegistrationLinkWithQRCodeDialog(stringMessages, registrationLinkWithQRCode,
|
||||
new DialogCallback<RegistrationLinkWithQRCode>() {
|
||||
@Override
|
||||
public void ok(RegistrationLinkWithQRCode result) {
|
||||
registrationLinkWithQRCode = result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
}
|
||||
}).show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -153,7 +177,7 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(10, 2);
|
||||
Grid formGrid = new Grid(11, 2);
|
||||
panel.add(formGrid);
|
||||
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.timeZone() + ":"));
|
||||
@@ -176,6 +200,8 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
|
||||
formGrid.setWidget(8, 1, buoyZoneRadiusInHullLengthsDoubleBox);
|
||||
formGrid.setWidget(9, 0, new Label(stringMessages.competitorRegistrationType() + ":"));
|
||||
formGrid.setWidget(9, 1, competitorRegistrationTypeListBox);
|
||||
formGrid.setWidget(10, 0, new Label(stringMessages.registrationLink() + ":"));
|
||||
formGrid.setWidget(10, 1, registrationLinkWithQRCodeOpenButton);
|
||||
setupAdditionalWidgetsOnPanel(panel, formGrid);
|
||||
return panel;
|
||||
}
|
||||
@@ -304,6 +330,11 @@ public abstract class AbstractRegattaWithSeriesAndFleetsDialog<T> extends DataEn
|
||||
setCourseAreaInRegatta(result);
|
||||
result.series = getSeriesEditor().getValue();
|
||||
result.competitorRegistrationType = CompetitorRegistrationType.valueOf(competitorRegistrationTypeListBox.getSelectedValue());
|
||||
if (result.competitorRegistrationType.isOpen() && registrationLinkWithQRCode != null) {
|
||||
result.registrationLinkSecret = registrationLinkWithQRCode.getSecret();
|
||||
} else {
|
||||
result.registrationLinkSecret = null;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ public class RegattaDetailsComposite extends Composite {
|
||||
configuration = createLabelAndValueWidget(grid, currentRow++, stringMessages.racingProcedureConfiguration(), "RacingProcedureLabel");
|
||||
scoringSystem = createLabelAndValueWidget(grid, currentRow++, stringMessages.scoringSystem(), "ScoringSystemLabel");
|
||||
rankingMetric = createLabelAndValueWidget(grid, currentRow++, stringMessages.rankingMetric(), "RankingMetricLabel");
|
||||
openRegattaRegistrationLink = createLabelAndValueWidget(grid, currentRow++, "Registration Link", "OpenRegattaRegistrationLinkLabel") ;
|
||||
openRegattaRegistrationLink = createLabelAndValueWidget(grid, currentRow++, stringMessages.registrationLink(), "OpenRegattaRegistrationLinkLabel") ;
|
||||
|
||||
seriesTable = createRegattaSeriesTable();
|
||||
seriesTable.ensureDebugId("SeriesCellTable");
|
||||
|
||||
+1
-1
@@ -311,9 +311,9 @@ public class RegattaListComposite extends Composite implements RegattasDisplayer
|
||||
|
||||
private void commitEditedRegatta(final RegattaDTO editedRegatta) {
|
||||
final RegattaIdentifier regattaName = new RegattaName(editedRegatta.getName());
|
||||
|
||||
sailingService.updateRegatta(regattaName, editedRegatta.startDate, editedRegatta.endDate, editedRegatta.defaultCourseAreaUuid,
|
||||
editedRegatta.configuration, editedRegatta.buoyZoneRadiusInHullLengths, editedRegatta.useStartTimeInference, editedRegatta.controlTrackingFromStartAndFinishTimes,
|
||||
editedRegatta.registrationLinkSecret,
|
||||
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
/**
|
||||
* Type to transfer data between {#link {@link RegistrationLinkWithQRCodeDialog) and caller.
|
||||
*
|
||||
* @author Thomas Wiese
|
||||
*
|
||||
*/
|
||||
public class RegistrationLinkWithQRCode {
|
||||
|
||||
/* Secret for extending registration URL. */
|
||||
private String secret;
|
||||
|
||||
public RegistrationLinkWithQRCode() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get entered secrect.
|
||||
* @return Secret or null, if not set
|
||||
*/
|
||||
public String getSecret() {
|
||||
return secret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set secret.
|
||||
* @param secret
|
||||
*/
|
||||
public void setSecret(String secret) {
|
||||
this.secret = secret;
|
||||
}
|
||||
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
public class RegistrationLinkWithQRCodeDialog extends DataEntryDialog<RegistrationLinkWithQRCode> {
|
||||
|
||||
private StringMessages stringMessages;
|
||||
private TextBox secretTextBox;
|
||||
|
||||
private RegistrationLinkWithQRCode registrationLinkWithQRCode;
|
||||
|
||||
public RegistrationLinkWithQRCodeDialog(final StringMessages stringMessages,
|
||||
RegistrationLinkWithQRCode registrationLinkWithQRCode,
|
||||
DialogCallback<RegistrationLinkWithQRCode> callback) {
|
||||
super(stringMessages.registrationLinkDialog(), stringMessages.explainRegistrationLinkDialog(),
|
||||
stringMessages.ok(), stringMessages.cancel(), null, true, callback);
|
||||
this.stringMessages = stringMessages;
|
||||
this.registrationLinkWithQRCode = registrationLinkWithQRCode == null ? new RegistrationLinkWithQRCode()
|
||||
: registrationLinkWithQRCode;
|
||||
secretTextBox = createTextBox(registrationLinkWithQRCode.getSecret(), 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected RegistrationLinkWithQRCode getResult() {
|
||||
registrationLinkWithQRCode.setSecret(secretTextBox.getValue());
|
||||
return registrationLinkWithQRCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Widget getAdditionalWidget() {
|
||||
final VerticalPanel panel = new VerticalPanel();
|
||||
Widget additionalWidget = super.getAdditionalWidget();
|
||||
if (additionalWidget != null) {
|
||||
panel.add(additionalWidget);
|
||||
}
|
||||
Grid formGrid = new Grid(1, 2);
|
||||
panel.add(formGrid);
|
||||
|
||||
formGrid.setWidget(0, 0, new Label(stringMessages.registrationLinkSecret() + ":"));
|
||||
formGrid.setWidget(0, 1, secretTextBox);
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -748,7 +748,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
|
||||
final RegattaIdentifier regattaIdentifier = new RegattaName(regatta.getName());
|
||||
sailingService.updateRegatta(regattaIdentifier, regatta.startDate, regatta.endDate,
|
||||
regatta.defaultCourseAreaUuid, configuration, regatta.buoyZoneRadiusInHullLengths, regatta.useStartTimeInference,
|
||||
regatta.controlTrackingFromStartAndFinishTimes,
|
||||
regatta.controlTrackingFromStartAndFinishTimes, regatta.registrationLinkSecret,
|
||||
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
|
||||
+2
-1
@@ -247,7 +247,8 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
void removeRegattas(Collection<RegattaIdentifier> regattas);
|
||||
|
||||
void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid,
|
||||
RegattaConfigurationDTO regattaConfiguration, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes);
|
||||
RegattaConfigurationDTO regattaConfiguration, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
|
||||
String registrationLinkSecret);
|
||||
|
||||
List<RaceColumnInSeriesDTO> addRaceColumnsToSeries(RegattaIdentifier regattaIdentifier, String seriesName,
|
||||
List<Pair<String, Integer>> columnNames);
|
||||
|
||||
+1
-1
@@ -553,7 +553,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
|
||||
|
||||
void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, UUID defaultCourseAreaUuid,
|
||||
RegattaConfigurationDTO regattaConfiguration, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference,
|
||||
boolean controlTrackingFromStartAndFinishTimes, AsyncCallback<Void> callback);
|
||||
boolean controlTrackingFromStartAndFinishTimes, String registrationLinkSecret, AsyncCallback<Void> callback);
|
||||
|
||||
/**
|
||||
* @param detailType
|
||||
|
||||
+5
@@ -1195,6 +1195,11 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
|
||||
String canNotRegisterBoats();
|
||||
String competitorRegistrationType();
|
||||
String competitorRegistrationTypeShort();
|
||||
String registrationLink();
|
||||
String registrationLinkConfig();
|
||||
String registrationLinkDialog();
|
||||
String registrationLinkSecret();
|
||||
String explainRegistrationLinkDialog();
|
||||
String numberOfQueueMessagesSent();
|
||||
String totalSize();
|
||||
String averageMessageSize();
|
||||
|
||||
+5
@@ -1185,6 +1185,11 @@ competitorRegistrationTypeShort=Registration
|
||||
competitorRegistrationTypeClosed=closed
|
||||
competitorRegistrationTypeOpenModerated=open moderated
|
||||
competitorRegistrationTypeOpenUnmoderated=open unmoderated
|
||||
registrationLink=Registration Link
|
||||
registrationLinkConfig=configure
|
||||
registrationLinkDialog=Link for open regatta registration
|
||||
registrationLinkSecret=Secret
|
||||
explainRegistrationLinkDialog=
|
||||
numberOfQueueMessagesSent=Number of queue messages sent
|
||||
totalSize=Total Size
|
||||
averageMessageSize=Average size per message in bytes
|
||||
|
||||
+5
@@ -1172,6 +1172,11 @@ competitorRegistrationTypeShort=Registrierung
|
||||
competitorRegistrationTypeClosed=geschlossen
|
||||
competitorRegistrationTypeOpenModerated=Öffentlich moderiert
|
||||
competitorRegistrationTypeOpenUnmoderated=Öffentlich unmoderiert
|
||||
registrationLink=Registrierungslink
|
||||
registrationLinkConfig=konfigurieren
|
||||
registrationLinkDialog=Registrierungslink für offene Regattas
|
||||
registrationLinkSecret=Secret
|
||||
explainRegistrationLinkDialog=
|
||||
numberOfQueueMessagesSent=Anzahl verschickter Queue Nachrichten
|
||||
totalSize=Gesamtgröße
|
||||
averageMessageSize=Durchschnittsgrösse einer Nachricht
|
||||
|
||||
+5
-3
@@ -4353,15 +4353,17 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
@Override
|
||||
public void updateRegatta(RegattaIdentifier regattaName, Date startDate, Date endDate, UUID defaultCourseAreaUuid,
|
||||
RegattaConfigurationDTO configurationDTO, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) {
|
||||
RegattaConfigurationDTO configurationDTO, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
|
||||
String registrationLinkSecret) {
|
||||
Regatta regatta = getService().getRegatta(regattaName);
|
||||
if (regatta != null) {
|
||||
SecurityUtils.getSubject().checkPermission(Permission.REGATTA.getStringPermissionForObjects(Mode.UPDATE, regatta.getName()));
|
||||
}
|
||||
TimePoint startTimePoint = startDate != null ? new MillisecondsTimePoint(startDate) : null;
|
||||
TimePoint endTimePoint = endDate != null ? new MillisecondsTimePoint(endDate) : null;
|
||||
getService().apply(new UpdateSpecificRegatta(regattaName, startTimePoint, endTimePoint,
|
||||
defaultCourseAreaUuid, convertToRegattaConfiguration(configurationDTO), buoyZoneRadiusInHullLengths, useStartTimeInference, controlTrackingFromStartAndFinishTimes));
|
||||
getService().apply(new UpdateSpecificRegatta(regattaName, startTimePoint, endTimePoint, defaultCourseAreaUuid,
|
||||
convertToRegattaConfiguration(configurationDTO), buoyZoneRadiusInHullLengths, useStartTimeInference,
|
||||
controlTrackingFromStartAndFinishTimes, registrationLinkSecret));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+12
-6
@@ -118,7 +118,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
|
||||
// Test for 'null'
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null,
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -127,7 +128,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
// Test for 'alpha'
|
||||
currentCourseAreaId = alphaCourseAreaId;
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null,
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -136,7 +138,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
// Test for 'tv'
|
||||
currentCourseAreaId = tvCourseAreaId;
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null,
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
currentCourseAreaId, null, /*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -145,7 +148,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
// Test back to 'null'
|
||||
currentCourseAreaId = null;
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, null,
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -173,7 +177,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
|
||||
// Test for 'null'
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, null,
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
@@ -183,7 +188,8 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest {
|
||||
RegattaConfigurationImpl config = new RegattaConfigurationImpl();
|
||||
config.setDefaultCourseDesignerMode(CourseDesignerMode.BY_MARKS);
|
||||
master.apply(new UpdateSpecificRegatta(masterRegatta.getRegattaIdentifier(), /*startDate*/ null, /*endDate*/ null, currentCourseAreaId, config,
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false));
|
||||
/*buoyZoneRadiusInHullLengths*/2.0, /* useStartTimeInference */ true, /* controlTrackingFromStartAndFinishTimes */ false,
|
||||
/* registrationLinkSecret*/ null));
|
||||
Thread.sleep(1000);
|
||||
replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName()));
|
||||
assertNotNull(replicatedRegatta);
|
||||
|
||||
@@ -347,7 +347,7 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate,
|
||||
Serializable newDefaultCourseAreaId, RegattaConfiguration regattaConfiguration,
|
||||
Iterable<? extends Series> series, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference,
|
||||
boolean controlTrackingFromStartAndFinishTimes);
|
||||
boolean controlTrackingFromStartAndFinishTimes, String registrationLinkSecret);
|
||||
|
||||
/**
|
||||
* Adds <code>raceDefinition</code> to the {@link Regatta} such that it will appear in {@link Regatta#getAllRaces()}
|
||||
|
||||
+3
-1
@@ -2404,7 +2404,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
@Override
|
||||
public Regatta updateRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate,
|
||||
Serializable newDefaultCourseAreaId, RegattaConfiguration newRegattaConfiguration,
|
||||
Iterable<? extends Series> series, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) {
|
||||
Iterable<? extends Series> series, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
|
||||
String registrationLinkSecret) {
|
||||
if (useStartTimeInference && controlTrackingFromStartAndFinishTimes) {
|
||||
throw new IllegalArgumentException("Cannot set both of useStartTimeInference and controlTrackingFromStartAndFinishTimes to true");
|
||||
}
|
||||
@@ -2418,6 +2419,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
regatta.setEndDate(endDate);
|
||||
regatta.setBuoyZoneRadiusInHullLengths(buoyZoneRadiusInHullLengths);
|
||||
regatta.setControlTrackingFromStartAndFinishTimes(controlTrackingFromStartAndFinishTimes);
|
||||
regatta.setRegistrationLinkSecret(registrationLinkSecret);
|
||||
if (regatta.useStartTimeInference() != useStartTimeInference) {
|
||||
regatta.setUseStartTimeInference(useStartTimeInference);
|
||||
final DynamicTrackedRegatta trackedRegatta = getTrackedRegatta(regatta);
|
||||
|
||||
+7
-3
@@ -20,9 +20,12 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation<R
|
||||
private final boolean controlTrackingFromStartAndFinishTimes;
|
||||
private final TimePoint startDate;
|
||||
private final TimePoint endDate;
|
||||
private final String registrationLinkSecret;
|
||||
|
||||
public UpdateSpecificRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate, UUID newDefaultCourseAreaId,
|
||||
RegattaConfiguration newConfiguration, Double buoyZoneRadiusInHullLengths, boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes) {
|
||||
public UpdateSpecificRegatta(RegattaIdentifier regattaIdentifier, TimePoint startDate, TimePoint endDate,
|
||||
UUID newDefaultCourseAreaId, RegattaConfiguration newConfiguration, Double buoyZoneRadiusInHullLengths,
|
||||
boolean useStartTimeInference, boolean controlTrackingFromStartAndFinishTimes,
|
||||
String registrationLinkSecret) {
|
||||
this.regattaIdentifier = regattaIdentifier;
|
||||
this.startDate = startDate;
|
||||
this.endDate = endDate;
|
||||
@@ -31,11 +34,12 @@ public class UpdateSpecificRegatta extends AbstractRacingEventServiceOperation<R
|
||||
this.useStartTimeInference = useStartTimeInference;
|
||||
this.controlTrackingFromStartAndFinishTimes = controlTrackingFromStartAndFinishTimes;
|
||||
this.buoyZoneRadiusInHullLengths = buoyZoneRadiusInHullLengths;
|
||||
this.registrationLinkSecret = registrationLinkSecret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Regatta internalApplyTo(RacingEventService toState) throws Exception {
|
||||
Regatta regatta = toState.updateRegatta(regattaIdentifier, startDate, endDate, newDefaultCourseAreaId, newConfiguration, null, buoyZoneRadiusInHullLengths, useStartTimeInference, controlTrackingFromStartAndFinishTimes);
|
||||
Regatta regatta = toState.updateRegatta(regattaIdentifier, startDate, endDate, newDefaultCourseAreaId, newConfiguration, null, buoyZoneRadiusInHullLengths, useStartTimeInference, controlTrackingFromStartAndFinishTimes, registrationLinkSecret);
|
||||
return regatta;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user