mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-07 21:01:03 +00:00
Merge branch 'master' into racecommittee_integrated
Conflicts: java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/GwtTestCaseColumnToggling.java java/com.sap.sailing.gwt.ui.test/src/com/sap/sailing/gwt/ui/test/TestColumnSwapping.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractLeaderboardDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/FlexibleLeaderboardCreateDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/FlexibleLeaderboardEditDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardDescriptor.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLeaderboardCreateDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLeaderboardDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLeaderboardEditDialog.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndLoadingEventsAndRegattas.java java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/DelayedLeaderboardCorrectionsReplicationTest.java java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/PrematureOperationReceiptTest.java java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/ServerReplicationTest.java java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceReplicationTest.java java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/LeaderboardDiscardingRulesTest.java java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/OperationalTransformationTest.java java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateFlexibleLeaderboard.java java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/CreateRegattaLeaderboard.java
This commit is contained in:
commit
79a39ef402
26 files changed
+173
-100
No files matched your search
+1
-1
@@ -103,7 +103,7 @@ public class GwtTestCaseColumnToggling extends GWTTestCase {
|
||||
}
|
||||
|
||||
private void createLeaderboard(){
|
||||
service.createFlexibleLeaderboard(LEADERBOARD_NAME, new int[] { 1, 2 }, ScoringSchemeType.LOW_POINT, null,
|
||||
service.createFlexibleLeaderboard(LEADERBOARD_NAME, null, new int[] { 1, 2 }, ScoringSchemeType.LOW_POINT, null,
|
||||
new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@Override
|
||||
public void onSuccess(StrippedLeaderboardDTO result) {
|
||||
|
||||
+17
-2
@@ -40,7 +40,15 @@ public class TestColumnSwapping {
|
||||
public void prepareColumnSwapping() {
|
||||
service = new SailingServiceImplMock();
|
||||
int[] disc = { 5, 8, 9, 0, 7, 5, 43 };
|
||||
service.createFlexibleLeaderboard(LEADERBOARDNAME, disc, ScoringSchemeType.LOW_POINT, null);
|
||||
service.createFlexibleLeaderboard(LEADERBOARDNAME, null, disc, ScoringSchemeType.LOW_POINT, null);
|
||||
service.addColumnToLeaderboard("Race1", LEADERBOARDNAME, true);
|
||||
service.addColumnToLeaderboard("Race2", LEADERBOARDNAME, true);
|
||||
service.addColumnToLeaderboard("Race3", LEADERBOARDNAME, true);
|
||||
leglist = new ArrayList<String>();
|
||||
leglist.add("Race1");
|
||||
leglist.add("Race2");
|
||||
leglist.add("Race3");
|
||||
leaderboardCreationDate = new Date();
|
||||
try {
|
||||
// get Leaderboard with name and current date
|
||||
leaderboardOriginalDTO = new LeaderboardDTO(null, null, /* higherScoreIsBetter */ false);
|
||||
@@ -64,7 +72,14 @@ public class TestColumnSwapping {
|
||||
sailingService = new SailingServiceImplMock();
|
||||
assertNotNull("Sailingservice != NULL", sailingService);
|
||||
int td[] = { 5, 8 };
|
||||
sailingService.createFlexibleLeaderboard(TEST_LEADERBOARD_NAME, td, ScoringSchemeType.LOW_POINT, null);
|
||||
sailingService.createFlexibleLeaderboard(TEST_LEADERBOARD_NAME, null, td, ScoringSchemeType.LOW_POINT, null);
|
||||
for (int i = 0; i < races.length; i++)
|
||||
sailingService.addColumnToLeaderboard(races[i], TEST_LEADERBOARD_NAME, isMedalRace[i]);
|
||||
sailingService.moveLeaderboardColumnDown(TEST_LEADERBOARD_NAME, races[0]);
|
||||
sailingService.moveLeaderboardColumnDown(TEST_LEADERBOARD_NAME, races[0]);
|
||||
sailingService.moveLeaderboardColumnUp(TEST_LEADERBOARD_NAME, races[2]);
|
||||
sailingService.updateIsMedalRace(TEST_LEADERBOARD_NAME, races[0], true);
|
||||
sailingService.updateIsMedalRace(TEST_LEADERBOARD_NAME, races[2], false);
|
||||
try {
|
||||
for (int i = 0; i < races.length; i++)
|
||||
sailingService.addColumnToLeaderboard(races[i], TEST_LEADERBOARD_NAME, isMedalRace[i]);
|
||||
|
||||
+7
-8
@@ -15,26 +15,25 @@ public abstract class AbstractLeaderboardDialog extends DataEntryDialog<Leaderbo
|
||||
protected final StringMessages stringMessages;
|
||||
protected TextBox nameTextBox;
|
||||
protected TextBox displayNameTextBox;
|
||||
protected LeaderboardDescriptor leaderboard;
|
||||
protected LeaderboardDescriptor leaderboardDescriptor;
|
||||
|
||||
protected LongBox[] discardThresholdBoxes;
|
||||
protected static final int MAX_NUMBER_OF_DISCARDED_RESULTS = 4;
|
||||
|
||||
public AbstractLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDTO, StringMessages stringConstants,
|
||||
public AbstractLeaderboardDialog(String title, LeaderboardDescriptor leaderboardDescriptor, StringMessages stringConstants,
|
||||
Validator<LeaderboardDescriptor> validator, DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(title, null, stringConstants.ok(), stringConstants.cancel(), validator, callback);
|
||||
this.stringMessages = stringConstants;
|
||||
this.leaderboard = leaderboardDTO;
|
||||
this.leaderboardDescriptor = leaderboardDescriptor;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
int[] discardThresholdsBoxContents = getDiscardThresholds(discardThresholdBoxes);
|
||||
leaderboard.setName(nameTextBox.getValue());
|
||||
leaderboard.setDisplayName(displayNameTextBox.getValue().trim().isEmpty() ? null : displayNameTextBox.getValue());
|
||||
leaderboard.setDiscardThresholds(discardThresholdsBoxContents);
|
||||
|
||||
return leaderboard;
|
||||
leaderboardDescriptor.setName(nameTextBox.getValue());
|
||||
leaderboardDescriptor.setDisplayName(displayNameTextBox.getValue().trim().isEmpty() ? null : displayNameTextBox.getValue());
|
||||
leaderboardDescriptor.setDiscardThresholds(discardThresholdsBoxContents);
|
||||
return leaderboardDescriptor;
|
||||
}
|
||||
|
||||
protected static int[] getDiscardThresholds(LongBox[] discardThresholdBoxes) {
|
||||
|
||||
+3
@@ -14,6 +14,9 @@ public class FlexibleLeaderboardCreateDialog extends FlexibleLeaderboardDialog {
|
||||
super(stringMessages.createFlexibleLeaderboard(), new LeaderboardDescriptor(), stringMessages, existingEvents, errorReporter, new FlexibleLeaderboardDialog.LeaderboardParameterValidator(stringMessages, existingLeaderboards), callback);
|
||||
nameTextBox = createTextBox(null);
|
||||
displayNameTextBox = createTextBox(null);
|
||||
nameTextBox.setVisibleLength(50);
|
||||
displayNameTextBox.setVisibleLength(50);
|
||||
|
||||
scoringSchemeListBox = createScoringSchemeListBox(this, stringMessages);
|
||||
sailingEventsListBox = createSailingEventListBox();
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
|
||||
+3
@@ -22,6 +22,9 @@ public class FlexibleLeaderboardEditDialog extends FlexibleLeaderboardDialog {
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
displayNameTextBox = createTextBox(leaderboard.getDisplayName());
|
||||
scoringSchemeListBox = createListBox(false);
|
||||
nameTextBox.setVisibleLength(50);
|
||||
displayNameTextBox.setVisibleLength(50);
|
||||
|
||||
int j = 0;
|
||||
for (ScoringSchemeType scoringSchemeType: ScoringSchemeType.values()) {
|
||||
scoringSchemeListBox.addItem(ScoringSchemeTypeFormatter.format(scoringSchemeType, stringConstants));
|
||||
|
||||
+2
-2
@@ -940,7 +940,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
|
||||
@Override
|
||||
public void ok(final LeaderboardDescriptor newLeaderboard) {
|
||||
sailingService.createFlexibleLeaderboard(newLeaderboard.getName(), newLeaderboard.getDiscardThresholds(),
|
||||
sailingService.createFlexibleLeaderboard(newLeaderboard.getName(), newLeaderboard.getDisplayName(), newLeaderboard.getDiscardThresholds(),
|
||||
newLeaderboard.getScoringScheme(), newLeaderboard.getCourseAreaIdAsString(),
|
||||
new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@Override
|
||||
@@ -969,7 +969,7 @@ public class LeaderboardConfigPanel extends FormPanel implements RegattaDisplaye
|
||||
@Override
|
||||
public void ok(final LeaderboardDescriptor newLeaderboard) {
|
||||
RegattaIdentifier regattaIdentifier = new RegattaName(newLeaderboard.getRegattaName());
|
||||
sailingService.createRegattaLeaderboard(regattaIdentifier, newLeaderboard.getDiscardThresholds(),
|
||||
sailingService.createRegattaLeaderboard(regattaIdentifier, newLeaderboard.getDisplayName(), newLeaderboard.getDiscardThresholds(),
|
||||
new AsyncCallback<StrippedLeaderboardDTO>() {
|
||||
@Override
|
||||
public void onFailure(Throwable t) {
|
||||
|
||||
+8
-8
@@ -10,14 +10,6 @@ import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
public class LeaderboardDescriptor {
|
||||
private String name;
|
||||
private String displayName;
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
private ScoringSchemeType scoringScheme;
|
||||
private int[] discardThresholds;
|
||||
private String regattaName;
|
||||
@@ -74,6 +66,14 @@ public class LeaderboardDescriptor {
|
||||
public void setRegattaName(String regattaName) {
|
||||
this.regattaName = regattaName;
|
||||
}
|
||||
|
||||
public String getDisplayName() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
public void setDisplayName(String displayName) {
|
||||
this.displayName = displayName;
|
||||
}
|
||||
|
||||
public String getCourseAreaIdAsString() {
|
||||
return courseAreaIdAsString;
|
||||
|
||||
+17
-5
@@ -2,6 +2,8 @@ package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.google.gwt.event.dom.client.ChangeEvent;
|
||||
import com.google.gwt.event.dom.client.ChangeHandler;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
|
||||
@@ -16,11 +18,21 @@ public class RegattaLeaderboardCreateDialog extends RegattaLeaderboardDialog {
|
||||
nameTextBox = createTextBox(null);
|
||||
displayNameTextBox = createTextBox(null);
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
}
|
||||
// the name of the regatta leaderboard will be derived from the selected regatta
|
||||
nameTextBox.setEnabled(false);
|
||||
nameTextBox.setVisibleLength(50);
|
||||
displayNameTextBox.setVisibleLength(50);
|
||||
|
||||
regattaListBox = createSortedRegattaListBox(existingRegattas, null);
|
||||
regattaListBox.addChangeHandler(new ChangeHandler() {
|
||||
public void onChange(ChangeEvent event) {
|
||||
int selectedIndex = regattaListBox.getSelectedIndex();
|
||||
if (selectedIndex > 0) {
|
||||
nameTextBox.setText(regattaListBox.getValue(selectedIndex));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
discardThresholdBoxes = initEmptyDiscardThresholdBoxes(this);
|
||||
}
|
||||
|
||||
+33
-11
@@ -1,6 +1,9 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.user.client.ui.Grid;
|
||||
import com.google.gwt.user.client.ui.HasVerticalAlignment;
|
||||
@@ -32,7 +35,6 @@ public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog
|
||||
@Override
|
||||
public String getErrorMessage(LeaderboardDescriptor leaderboardToValidate) {
|
||||
String errorMessage;
|
||||
boolean nonEmpty = leaderboardToValidate.getName() != null && leaderboardToValidate.getName().length() > 0;
|
||||
|
||||
boolean discardThresholdsAscending = true;
|
||||
for (int i = 1; i < leaderboardToValidate.getDiscardThresholds().length; i++) {
|
||||
@@ -47,16 +49,14 @@ public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog
|
||||
|
||||
boolean unique = true;
|
||||
for (StrippedLeaderboardDTO dao : existingLeaderboards) {
|
||||
if(dao.name.equals(leaderboardToValidate.getName())){
|
||||
if(dao.name.equals(leaderboardToValidate.getRegattaName())){
|
||||
unique = false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean regattaSelected = leaderboardToValidate.getRegattaName() != null ? true : false;
|
||||
|
||||
if (!nonEmpty) {
|
||||
errorMessage = stringConstants.pleaseEnterAName();
|
||||
} else if(!regattaSelected){
|
||||
if(!regattaSelected){
|
||||
errorMessage = stringConstants.pleaseSelectARegatta();
|
||||
} else if(!unique){
|
||||
errorMessage = stringConstants.leaderboardWithThisNameAlreadyExists();
|
||||
@@ -75,6 +75,28 @@ public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog
|
||||
this.existingRegattas = existingRegattas;
|
||||
}
|
||||
|
||||
protected ListBox createSortedRegattaListBox(Collection<RegattaDTO> regattas, String preSelectedRegattaName) {
|
||||
ListBox result = createListBox(false);
|
||||
|
||||
// sort the regatta names
|
||||
List<String> sortedRegattaNames = new ArrayList<String>();
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
sortedRegattaNames.add(regatta.name);
|
||||
}
|
||||
Collections.sort(sortedRegattaNames);
|
||||
|
||||
result.addItem(stringMessages.pleaseSelectARegatta());
|
||||
int i=1;
|
||||
for (String regattaName : sortedRegattaNames) {
|
||||
result.addItem(regattaName);
|
||||
if (preSelectedRegattaName != null && regattaName.equals(preSelectedRegattaName)) {
|
||||
result.setSelectedIndex(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LeaderboardDescriptor getResult() {
|
||||
LeaderboardDescriptor leaderboard = super.getResult();
|
||||
@@ -88,12 +110,12 @@ public abstract class RegattaLeaderboardDialog extends AbstractLeaderboardDialog
|
||||
|
||||
Grid formGrid = new Grid(3,3);
|
||||
formGrid.setCellSpacing(3);
|
||||
formGrid.setWidget(0, 0, createLabel(stringMessages.name()));
|
||||
formGrid.setWidget(0, 1, nameTextBox);
|
||||
formGrid.setWidget(1, 0, createLabel(stringMessages.displayName()));
|
||||
formGrid.setWidget(1, 1, displayNameTextBox);
|
||||
formGrid.setWidget(2, 0, createLabel(stringMessages.regatta()));
|
||||
formGrid.setWidget(2, 1, regattaListBox);
|
||||
formGrid.setWidget(0, 0, createLabel(stringMessages.regatta()));
|
||||
formGrid.setWidget(0, 1, regattaListBox);
|
||||
formGrid.setWidget(1, 0, createLabel(stringMessages.name()));
|
||||
formGrid.setWidget(1, 1, nameTextBox);
|
||||
formGrid.setWidget(2, 0, createLabel(stringMessages.displayName()));
|
||||
formGrid.setWidget(2, 1, displayNameTextBox);
|
||||
|
||||
mainPanel.add(formGrid);
|
||||
|
||||
|
||||
+9
-16
@@ -10,26 +10,19 @@ import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
public class RegattaLeaderboardEditDialog extends RegattaLeaderboardDialog {
|
||||
|
||||
public RegattaLeaderboardEditDialog(Collection<StrippedLeaderboardDTO> otherExistingLeaderboards, Collection<RegattaDTO> existingRegattas,
|
||||
LeaderboardDescriptor leaderboard, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
LeaderboardDescriptor leaderboardDescriptor, StringMessages stringConstants, ErrorReporter errorReporter,
|
||||
DialogCallback<LeaderboardDescriptor> callback) {
|
||||
super(stringConstants.editRegattaLeaderboard(), leaderboard, existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(
|
||||
super(stringConstants.editRegattaLeaderboard(), leaderboardDescriptor, existingRegattas, stringConstants, errorReporter, new RegattaLeaderboardDialog.LeaderboardParameterValidator(
|
||||
stringConstants, otherExistingLeaderboards), callback);
|
||||
|
||||
nameTextBox = createTextBox(leaderboard.getName());
|
||||
displayNameTextBox = createTextBox(leaderboard.getDisplayName());
|
||||
nameTextBox = createTextBox(leaderboardDescriptor.getName());
|
||||
displayNameTextBox = createTextBox(leaderboardDescriptor.getDisplayName());
|
||||
nameTextBox.setEnabled(false);
|
||||
nameTextBox.setVisibleLength(50);
|
||||
displayNameTextBox.setVisibleLength(50);
|
||||
|
||||
regattaListBox = createListBox(false);
|
||||
regattaListBox.addItem(stringConstants.pleaseSelectARegatta());
|
||||
int i=1;
|
||||
for (RegattaDTO regatta : existingRegattas) {
|
||||
regattaListBox.addItem(regatta.name);
|
||||
if (regatta.name.equals(leaderboard.getRegattaName())) {
|
||||
regattaListBox.setSelectedIndex(i);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
regattaListBox = createSortedRegattaListBox(existingRegattas, leaderboardDescriptor.getRegattaName());
|
||||
regattaListBox.setEnabled(false);
|
||||
//TODO Preselect selected event and course area
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboard.getDiscardThresholds(), this);
|
||||
discardThresholdBoxes = initPrefilledDiscardThresholdBoxes(leaderboardDescriptor.getDiscardThresholds(), this);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -130,9 +130,10 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
void updateLeaderboard(String leaderboardName, String newLeaderboardName, String newLeaderboardDisplayName, int[] newDiscardingThreasholds);
|
||||
|
||||
StrippedLeaderboardDTO createFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringSchemeType scoringSchemeType, String courseAreaId);
|
||||
StrippedLeaderboardDTO createFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringSchemeType scoringSchemeType);
|
||||
StrippedLeaderboardDTO createFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringSchemeType scoringSchemeType, String courseAreaId);
|
||||
|
||||
StrippedLeaderboardDTO createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds);
|
||||
StrippedLeaderboardDTO createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds);
|
||||
|
||||
void removeLeaderboard(String leaderboardName);
|
||||
|
||||
|
||||
+3
-3
@@ -213,10 +213,11 @@ public interface SailingServiceAsync {
|
||||
void updateLeaderboard(String leaderboardName, String newLeaderboardName, String newLeaderboardDisplayName,
|
||||
int[] newDiscardingThreasholds, AsyncCallback<Void> callback);
|
||||
|
||||
void createFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringSchemeType scoringSchemeType, String courseAreaId,
|
||||
void createFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringSchemeType scoringSchemeType,
|
||||
void createFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringSchemeType scoringSchemeType, String courseAreaId,
|
||||
AsyncCallback<StrippedLeaderboardDTO> asyncCallback);
|
||||
|
||||
void createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds,
|
||||
void createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds,
|
||||
AsyncCallback<StrippedLeaderboardDTO> asyncCallback);
|
||||
|
||||
void removeLeaderboard(String leaderboardName, AsyncCallback<Void> asyncCallback);
|
||||
@@ -452,4 +453,3 @@ public interface SailingServiceAsync {
|
||||
|
||||
|
||||
void getPolarSheetData(String polarSheetId, int angle, int windSpeed, AsyncCallback<PolarSheetsHistogramData> wrapperCallback);
|
||||
}
|
||||
+4
-6
@@ -1995,10 +1995,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
@Override
|
||||
public StrippedLeaderboardDTO createFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringSchemeType scoringSchemeType,
|
||||
public StrippedLeaderboardDTO createFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringSchemeType scoringSchemeType,
|
||||
String courseAreaId) {
|
||||
UUID courseAreaUuid = convertIdentifierStringToUuid(courseAreaId);
|
||||
return createStrippedLeaderboardDTO(getService().apply(new CreateFlexibleLeaderboard(leaderboardName, discardThresholds,
|
||||
return createStrippedLeaderboardDTO(getService().apply(new CreateFlexibleLeaderboard(leaderboardName, leaderboardDisplayName, discardThresholds,
|
||||
baseDomainFactory.createScoringScheme(scoringSchemeType), courseAreaUuid)), false);
|
||||
}
|
||||
|
||||
@@ -2014,8 +2014,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public StrippedLeaderboardDTO createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds) {
|
||||
public StrippedLeaderboardDTO createRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds) {
|
||||
return createStrippedLeaderboardDTO(getService().apply(new CreateRegattaLeaderboard(regattaIdentifier, leaderboardDisplayName, discardThresholds)), false);
|
||||
return createStrippedLeaderboardDTO(getService().apply(new CreateRegattaLeaderboard(regattaIdentifier, discardThresholds)), false);
|
||||
}
|
||||
|
||||
@@ -3299,5 +3299,3 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
|
||||
return histogramData;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -145,7 +145,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
Regatta regatta = res.createRegatta(regattaProxy.getBaseName(), regattaProxy.getBoatClass().getName(),
|
||||
"123", regattaProxy.getSeries(), regattaProxy.isPersistent(), DomainFactory.INSTANCE.createScoringScheme(ScoringSchemeType.LOW_POINT), null);
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 });
|
||||
res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 });
|
||||
DomainObjectFactory dof = MongoFactory.INSTANCE.getDomainObjectFactory(getMongoService());
|
||||
Regatta loadedRegatta = dof.loadRegatta(regatta.getName(), /* trackedRegattaRegistry */ null);
|
||||
assertNotNull(loadedRegatta);
|
||||
@@ -188,7 +188,7 @@ public class TestStoringAndLoadingEventsAndRegattas extends AbstractMongoDBTest
|
||||
trackedRegatta[0] = new DynamicTrackedRegattaImpl(regatta);
|
||||
addRaceColumns(numberOfQualifyingRaces, numberOfFinalRaces, regatta);
|
||||
logColumnsInRegatta(regatta);
|
||||
RegattaLeaderboard regattaLeaderboard = res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), new int[] { 3, 5 });
|
||||
RegattaLeaderboard regattaLeaderboard = res.addRegattaLeaderboard(regatta.getRegattaIdentifier(), null, new int[] { 3, 5 });
|
||||
assertSame(regatta, regattaLeaderboard.getRegatta());
|
||||
final RaceColumnInSeries q2 = regatta.getSeriesByName("Qualifying").getRaceColumnByName("Q2");
|
||||
final Fleet yellow = q2.getFleetByName("Yellow");
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class DelayedLeaderboardCorrectionsReplicationTest extends AbstractServer
|
||||
master = createRacingEventServiceWithOneMockedTrackedRace(q2YellowTrackedRace);
|
||||
final String leaderboardName = "My new leaderboard";
|
||||
final int[] discardThresholds = new int[] { 19, 44 };
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, discardThresholds, new LowPoint(), null);
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, null, discardThresholds, new LowPoint(), null);
|
||||
assertNull(master.getLeaderboardByName(leaderboardName));
|
||||
master.apply(createTestLeaderboard);
|
||||
final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName);
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ public class PrematureOperationReceiptTest extends AbstractServerReplicationTest
|
||||
public void testRaceColumnInLeaderboardReplicationAfterInitialLoad() throws InterruptedException, ClassNotFoundException, IOException {
|
||||
final String leaderboardName = "My new leaderboard";
|
||||
final int[] discardThresholds = new int[] { 17, 23 };
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, discardThresholds, new LowPoint(), null);
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, null, discardThresholds, new LowPoint(), null);
|
||||
assertNull(master.getLeaderboardByName(leaderboardName));
|
||||
master.apply(createTestLeaderboard);
|
||||
final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName);
|
||||
|
||||
+1
-1
@@ -47,7 +47,7 @@ public class ServerReplicationTest extends AbstractServerReplicationTest {
|
||||
final String leaderboardName = "My new leaderboard";
|
||||
assertNull(replica.getLeaderboardByName(leaderboardName));
|
||||
final int[] discardThresholds = new int[] { 17, 23 };
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, discardThresholds, new LowPoint(), null);
|
||||
CreateFlexibleLeaderboard createTestLeaderboard = new CreateFlexibleLeaderboard(leaderboardName, null, discardThresholds, new LowPoint(), null);
|
||||
assertNull(master.getLeaderboardByName(leaderboardName));
|
||||
master.apply(createTestLeaderboard);
|
||||
final Leaderboard masterLeaderboard = master.getLeaderboardByName(leaderboardName);
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@ public class TrackRaceReplicationTest extends AbstractServerReplicationTest {
|
||||
@Test
|
||||
public void testReassignmentToLeaderboardReplication() throws Exception {
|
||||
final String leaderboardName = "Test Leaderboard";
|
||||
Leaderboard masterLeaderboard = master.apply(new CreateFlexibleLeaderboard(leaderboardName, new int[0], new LowPoint(), null));
|
||||
Leaderboard masterLeaderboard = master.apply(new CreateFlexibleLeaderboard(leaderboardName, null, new int[0], new LowPoint(), null));
|
||||
final String columnName = "R1";
|
||||
RaceColumn masterColumn = master.apply(new AddColumnToLeaderboard(columnName, leaderboardName, /* medalRace */ false));
|
||||
final Fleet defaultFleet = masterLeaderboard.getFleet(null);
|
||||
|
||||
+4
-4
@@ -42,7 +42,7 @@ public class LeaderboardDiscardingRulesTest {
|
||||
@Test
|
||||
public void testDiscardingRules() {
|
||||
racingEventService.removeLeaderboard(LEADERBOARDNAME);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 1, 4 }, new LowPoint(), null);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, null, new int[] { 1, 4 }, new LowPoint(), null);
|
||||
FlexibleLeaderboard leaderboard = (FlexibleLeaderboard) racingEventService.getLeaderboardByName(LEADERBOARDNAME);
|
||||
assertNotNull(leaderboard);
|
||||
int[] discardingRulesNew = new int[] { 1, 5 };
|
||||
@@ -62,7 +62,7 @@ public class LeaderboardDiscardingRulesTest {
|
||||
@Test
|
||||
public void testDiscardingRulesForMultipleEquallyBadRaces() throws NoWindException {
|
||||
racingEventService.removeLeaderboard(LEADERBOARDNAME);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 1, 2 }, new LowPoint(), null);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, null, new int[] { 1, 2 }, new LowPoint(), null);
|
||||
FlexibleLeaderboard leaderboard = (FlexibleLeaderboard) racingEventService.getLeaderboardByName(LEADERBOARDNAME);
|
||||
assertNotNull(leaderboard);
|
||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true);
|
||||
@@ -102,7 +102,7 @@ public class LeaderboardDiscardingRulesTest {
|
||||
@Test
|
||||
public void testDiscardingRulesForMultipleEquallyBadRacesWithHighPointScoringScheme() throws NoWindException {
|
||||
racingEventService.removeLeaderboard(LEADERBOARDNAME);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 1, 2 }, new HighPoint(), null);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, null, new int[] { 1, 2 }, new HighPoint(), null);
|
||||
FlexibleLeaderboard leaderboard = (FlexibleLeaderboard) racingEventService.getLeaderboardByName(LEADERBOARDNAME);
|
||||
assertNotNull(leaderboard);
|
||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("ESS40", /* typicallyStartsUpwind */ true);
|
||||
@@ -147,7 +147,7 @@ public class LeaderboardDiscardingRulesTest {
|
||||
@Test
|
||||
public void testDiscardingRulesForMultipleEquallyBadRacesWithNonDiscardableDisqualification() throws NoWindException {
|
||||
racingEventService.removeLeaderboard(LEADERBOARDNAME);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 1, 2 }, new LowPoint(), null);
|
||||
racingEventService.addFlexibleLeaderboard(LEADERBOARDNAME, null, new int[] { 1, 2 }, new LowPoint(), null);
|
||||
FlexibleLeaderboard leaderboard = (FlexibleLeaderboard) racingEventService.getLeaderboardByName(LEADERBOARDNAME);
|
||||
assertNotNull(leaderboard);
|
||||
BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("29erXX", /* typicallyStartsUpwind */ true);
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ public class OperationalTransformationTest {
|
||||
|
||||
@Test
|
||||
public void testAddLeaderboard() {
|
||||
RacingEventServiceOperation<FlexibleLeaderboard> addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME, new int[] { 5 },
|
||||
RacingEventServiceOperation<FlexibleLeaderboard> addLeaderboardOp = new CreateFlexibleLeaderboard(LEADERBOARDNAME,null, new int[] { 5 },
|
||||
new LowPoint(), null);
|
||||
server.apply(addLeaderboardOp);
|
||||
server.waitForNotRunning();
|
||||
|
||||
@@ -238,9 +238,9 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
|
||||
*
|
||||
* @return the leaderboard created
|
||||
*/
|
||||
FlexibleLeaderboard addFlexibleLeaderboard(String name, int[] discardThresholds, ScoringScheme scoringScheme, Serializable courseAreaId);
|
||||
FlexibleLeaderboard addFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringScheme scoringScheme, Serializable courseAreaId);
|
||||
|
||||
RegattaLeaderboard addRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds);
|
||||
RegattaLeaderboard addRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds);
|
||||
|
||||
void removeLeaderboard(String leaderboardName);
|
||||
|
||||
|
||||
+7
-2
@@ -6,6 +6,7 @@ import com.sap.sailing.operationaltransformation.Operation;
|
||||
import com.sap.sailing.operationaltransformation.Transformer;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateFlexibleLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.CreateRegattaLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnDown;
|
||||
import com.sap.sailing.server.operationaltransformation.MoveLeaderboardColumnUp;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboard;
|
||||
@@ -56,9 +57,13 @@ public interface RacingEventServiceOperation<ResultType> extends Operation<Racin
|
||||
|
||||
RacingEventServiceOperation<?> transformRenameLeaderboardColumnServerOp(RenameLeaderboardColumn renameLeaderboardColumnServerOp);
|
||||
|
||||
RacingEventServiceOperation<?> transformAddLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard);
|
||||
RacingEventServiceOperation<?> transformAddFlexibleLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard);
|
||||
|
||||
RacingEventServiceOperation<?> transformAddLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard);
|
||||
RacingEventServiceOperation<?> transformAddFlexibleLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard);
|
||||
|
||||
RacingEventServiceOperation<?> transformAddRegattaLeaderboardClientOp(CreateRegattaLeaderboard addLeaderboard);
|
||||
|
||||
RacingEventServiceOperation<?> transformAddRegattaLeaderboardServerOp(CreateRegattaLeaderboard addLeaderboard);
|
||||
|
||||
RacingEventServiceOperation<?> transformRemoveLeaderboardClientOp(RemoveLeaderboard removeLeaderboard);
|
||||
|
||||
|
||||
+8
-6
@@ -241,7 +241,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
// Add one default leaderboard that aggregates all races currently tracked by this service.
|
||||
// This is more for debugging purposes than for anything else.
|
||||
addFlexibleLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, new int[] { 5, 8 },
|
||||
addFlexibleLeaderboard(LeaderboardNameConstants.DEFAULT_LEADERBOARD_NAME, null, new int[] { 5, 8 },
|
||||
tractracDomainFactory.getBaseDomainFactory().createScoringScheme(ScoringSchemeType.LOW_POINT), null);
|
||||
loadStoredRegattas();
|
||||
loadRaceIDToRegattaAssociations();
|
||||
@@ -317,7 +317,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlexibleLeaderboard addFlexibleLeaderboard(String name, int[] discardThresholds, ScoringScheme scoringScheme,
|
||||
public FlexibleLeaderboard addFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringScheme scoringScheme,
|
||||
Serializable courseAreaId) {
|
||||
logger.info("adding flexible leaderboard "+name);
|
||||
|
||||
@@ -326,11 +326,12 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
mongoObjectFactory,
|
||||
domainObjectFactory);
|
||||
CourseArea courseArea = getCourseArea(courseAreaId);
|
||||
FlexibleLeaderboard result = new FlexibleLeaderboardImpl(raceLogStore, name, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl(
|
||||
FlexibleLeaderboard result = new FlexibleLeaderboardImpl(raceLogStore, leaderboardName, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl(
|
||||
discardThresholds), scoringScheme, courseArea);
|
||||
result.setDisplayName(leaderboardDisplayName);
|
||||
synchronized (leaderboardsByName) {
|
||||
if (getLeaderboardByName(name) != null) {
|
||||
throw new IllegalArgumentException("Leaderboard with name "+name+" already exists");
|
||||
if (getLeaderboardByName(leaderboardName) != null) {
|
||||
throw new IllegalArgumentException("Leaderboard with name "+leaderboardName+" already exists");
|
||||
}
|
||||
addLeaderboard(result);
|
||||
}
|
||||
@@ -351,7 +352,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegattaLeaderboard addRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds) {
|
||||
public RegattaLeaderboard addRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds) {
|
||||
Regatta regatta = getRegatta(regattaIdentifier);
|
||||
logger.info("adding regatta leaderboard for regatta "
|
||||
+ (regatta == null ? "null" : (regatta.getName() + " (" + regatta.hashCode() + ")")) + " to " + this);
|
||||
@@ -359,6 +360,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
if (regatta != null) {
|
||||
result = new RegattaLeaderboardImpl(regatta, new ScoreCorrectionImpl(), new ResultDiscardingRuleImpl(
|
||||
discardThresholds));
|
||||
result.setDisplayName(leaderboardDisplayName);
|
||||
synchronized (leaderboardsByName) {
|
||||
if (getLeaderboardByName(result.getName()) != null) {
|
||||
throw new IllegalArgumentException("Leaderboard with name " + result.getName() + " already exists in "+this);
|
||||
|
||||
+12
-2
@@ -48,12 +48,22 @@ public abstract class AbstractRacingEventServiceOperation<ResultType> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformAddLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard) {
|
||||
public RacingEventServiceOperation<?> transformAddFlexibleLeaderboardClientOp(CreateFlexibleLeaderboard addLeaderboard) {
|
||||
return addLeaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformAddLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard) {
|
||||
public RacingEventServiceOperation<?> transformAddFlexibleLeaderboardServerOp(CreateFlexibleLeaderboard addLeaderboard) {
|
||||
return addLeaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformAddRegattaLeaderboardClientOp(CreateRegattaLeaderboard addLeaderboard) {
|
||||
return addLeaderboard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformAddRegattaLeaderboardServerOp(CreateRegattaLeaderboard addLeaderboard) {
|
||||
return addLeaderboard;
|
||||
}
|
||||
|
||||
|
||||
+6
-5
@@ -13,10 +13,12 @@ public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation<Flex
|
||||
private static final long serialVersionUID = 891352705068098580L;
|
||||
private final int[] discardThresholds;
|
||||
private final ScoringScheme scoringScheme;
|
||||
private final String leaderboardDisplayName;
|
||||
private final Serializable courseAreaId;
|
||||
|
||||
public CreateFlexibleLeaderboard(String leaderboardName, int[] discardThresholds, ScoringScheme scoringScheme, Serializable courseAreaId) {
|
||||
public CreateFlexibleLeaderboard(String leaderboardName, String leaderboardDisplayName, int[] discardThresholds, ScoringScheme scoringScheme, Serializable courseAreaId) {
|
||||
super(leaderboardName);
|
||||
this.leaderboardDisplayName = leaderboardDisplayName;
|
||||
this.discardThresholds = discardThresholds;
|
||||
this.scoringScheme = scoringScheme;
|
||||
this.courseAreaId = courseAreaId;
|
||||
@@ -26,7 +28,7 @@ public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation<Flex
|
||||
public FlexibleLeaderboard internalApplyTo(RacingEventService toState) {
|
||||
FlexibleLeaderboard result = null;
|
||||
if (toState.getLeaderboardByName(getLeaderboardName()) == null) {
|
||||
result = toState.addFlexibleLeaderboard(getLeaderboardName(), discardThresholds, scoringScheme, courseAreaId);
|
||||
result = toState.addFlexibleLeaderboard(getLeaderboardName(), leaderboardDisplayName, discardThresholds, scoringScheme, courseAreaId);
|
||||
} else {
|
||||
logger.warning("Cannot replicate creation of flexible leaderboard "+getLeaderboardName()+" because it already exists in the replica");
|
||||
}
|
||||
@@ -35,12 +37,11 @@ public class CreateFlexibleLeaderboard extends AbstractLeaderboardOperation<Flex
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
return serverOp.transformAddLeaderboardClientOp(this);
|
||||
return serverOp.transformAddFlexibleLeaderboardClientOp(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
return clientOp.transformAddLeaderboardServerOp(this);
|
||||
return clientOp.transformAddFlexibleLeaderboardServerOp(this);
|
||||
}
|
||||
|
||||
}
|
||||
+17
-8
@@ -1,36 +1,45 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class CreateRegattaLeaderboard extends AbstractRacingEventServiceOperation<RegattaLeaderboard> {
|
||||
public class CreateRegattaLeaderboard extends AbstractLeaderboardOperation<RegattaLeaderboard> {
|
||||
private static final Logger logger = Logger.getLogger(CreateRegattaLeaderboard.class.getName());
|
||||
private static final long serialVersionUID = 891352705068098580L;
|
||||
private final int[] discardThresholds;
|
||||
private final RegattaIdentifier regattaIdentifier;
|
||||
private final String leaderboardDisplayName;
|
||||
|
||||
public CreateRegattaLeaderboard(RegattaIdentifier regattaIdentifier, int[] discardThresholds) {
|
||||
public CreateRegattaLeaderboard(RegattaIdentifier regattaIdentifier, String leaderboardDisplayName, int[] discardThresholds) {
|
||||
super(((RegattaName) regattaIdentifier).getRegattaName());
|
||||
this.leaderboardDisplayName = leaderboardDisplayName;
|
||||
this.regattaIdentifier = regattaIdentifier;
|
||||
this.discardThresholds = discardThresholds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegattaLeaderboard internalApplyTo(RacingEventService toState) {
|
||||
RegattaLeaderboard result = toState.addRegattaLeaderboard(regattaIdentifier, discardThresholds);
|
||||
RegattaLeaderboard result = null;
|
||||
if (toState.getLeaderboardByName(getLeaderboardName()) == null) {
|
||||
result = toState.addRegattaLeaderboard(regattaIdentifier, leaderboardDisplayName, discardThresholds);
|
||||
} else {
|
||||
logger.warning("Cannot replicate creation of flexible leaderboard "+getLeaderboardName()+" because it already exists in the replica");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
// TODO
|
||||
return null;
|
||||
return serverOp.transformAddRegattaLeaderboardClientOp(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
// TODO
|
||||
return null;
|
||||
return clientOp.transformAddRegattaLeaderboardServerOp(this);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user