From 792d11c3824b3c1aa8c02f6c7aafcf418510ac89 Mon Sep 17 00:00:00 2001 From: Finn Huelsbusch Date: Mon, 8 Aug 2022 17:44:42 +0200 Subject: [PATCH] added new Checkbox to enable cross Fleet scoring --- .../dto/SeriesCreationParametersDTO.java | 9 +- .../domain/base/RaceColumnListener.java | 2 + .../com/sap/sailing/domain/base/Series.java | 10 + .../RaceColumnListenerWithDefaultAction.java | 5 + .../sailing/domain/base/impl/RegattaImpl.java | 6 + .../sailing/domain/base/impl/SeriesImpl.java | 68 ++- .../impl/AbstractSimpleLeaderboardImpl.java | 5 + .../meta/LeaderboardGroupMetaLeaderboard.java | 6 + .../meta/MetaLeaderboardColumn.java | 5 + .../util/impl/RaceColumnListeners.java | 6 + .../adminconsole/CreateRegattaCallback.java | 2 +- .../adminconsole/RegattaDetailsComposite.java | 12 +- .../ui/adminconsole/RegattaListComposite.java | 2 +- .../gwt/ui/adminconsole/SeriesDescriptor.java | 8 +- .../gwt/ui/adminconsole/SeriesEditDialog.java | 8 +- .../SeriesWithFleetsCreateDialog.java | 8 +- .../SeriesWithFleetsDefaultListEditor.java | 3 +- .../gwt/ui/client/SailingServiceWrite.java | 4 +- .../ui/client/SailingServiceWriteAsync.java | 4 +- .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 3 +- .../ui/client/StringMessages_de.properties | 3 +- .../gwt/ui/server/SailingServiceImpl.java | 7 +- .../ui/server/SailingServiceWriteImpl.java | 4 +- .../sap/sailing/gwt/ui/shared/SeriesDTO.java | 14 +- .../gateway/jaxrs/api/EventsResource.java | 6 +- .../gateway/jaxrs/api/RegattasResource.java | 4 +- .../impl/ExpeditionAllInOneImporter.java | 2 +- .../UpdateSeries.java | 5 +- .../test/AbstractLogReplicationTest.java | 4 +- .../test/RegattaReplicationTest.java | 4 +- ...BoatCompetitorMetadataReplicationTest.java | 2 +- ...ticRetrackUponCompetitorSetChangeTest.java | 2 +- .../server/test/SearchServiceTest.java | 2 +- .../SailingServer (No Proxy).launch | 541 +++++++++--------- .../server/impl/RacingEventServiceImpl.java | 2 +- .../xrr/structureimport/SeriesParameters.java | 12 +- 37 files changed, 460 insertions(+), 331 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/SeriesCreationParametersDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/SeriesCreationParametersDTO.java index b3185b79d43..f4d24e51c8b 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/SeriesCreationParametersDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/SeriesCreationParametersDTO.java @@ -20,18 +20,21 @@ public class SeriesCreationParametersDTO implements Serializable { private boolean hasSplitFleetContiguousScoring; + private boolean hasCrossFleetMergedRanking; + private Integer maximumNumberOfDiscards; SeriesCreationParametersDTO() {} public SeriesCreationParametersDTO(List fleets, boolean isMedal, boolean isFleetsCanRunInParallel, boolean isStartsWithZeroScore, boolean firstColumnIsNonDiscardableCarryForward, - int[] discardingThresholds, boolean hasSplitFleetContiguousScoring, Integer maximumNumberOfDiscards) { + int[] discardingThresholds, boolean hasSplitFleetContiguousScoring, boolean hasCrossFleetMergedRanking, Integer maximumNumberOfDiscards) { super(); this.fleets = fleets; this.isMedal = isMedal; this.isFleetsCanRunInParallel = isFleetsCanRunInParallel; this.isStartsWithZeroScore = isStartsWithZeroScore; this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; this.firstColumnIsNonDiscardableCarryForward = firstColumnIsNonDiscardableCarryForward; this.discardingThresholds = discardingThresholds; this.maximumNumberOfDiscards = maximumNumberOfDiscards; @@ -56,6 +59,10 @@ public class SeriesCreationParametersDTO implements Serializable { public boolean hasSplitFleetContiguousScoring() { return hasSplitFleetContiguousScoring; } + + public boolean hasCrossFleetMergedRanking() { + return hasCrossFleetMergedRanking; + } public int[] getDiscardingThresholds() { return discardingThresholds; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumnListener.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumnListener.java index 4e48e069cca..32e3a934007 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumnListener.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceColumnListener.java @@ -22,6 +22,8 @@ public interface RaceColumnListener extends Serializable { void isFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, boolean firstColumnIsNonDiscardableCarryForward); void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring); + + void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking); default boolean canAddRaceColumnToContainer(RaceColumn raceColumn) { return true; diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java index 6929d382d25..8f328ef70ef 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/Series.java @@ -126,5 +126,15 @@ public interface Series extends SeriesBase { boolean hasSplitFleetContiguousScoring(); void setSplitFleetContiguousScoring(boolean hasSplitFleetScore); + + /** + * When a series has more than one fleet, there are two different options for scoring it when the fleets are of the same rank. + * Either the scoring scheme is applied to both fleets at the same time and competitors compete across the fleets; or the scoring scheme is applied to each fleet separately, + * leading to the best score being awarded in the column as many times as there are fleets in the column. + * For the latter case, this field is false which is also the default. + */ + boolean hasCrossFleetMergedRanking(); + + void setCrossFleetMergedRanking(boolean hasCrossFleetMergedRanking); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnListenerWithDefaultAction.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnListenerWithDefaultAction.java index 0ff5150f908..a31ff0cef80 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnListenerWithDefaultAction.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceColumnListenerWithDefaultAction.java @@ -63,6 +63,11 @@ public interface RaceColumnListenerWithDefaultAction extends RaceColumnListener default void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) { defaultAction(); } + + @Override + default void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + defaultAction(); + } @Override default void raceColumnAddedToContainer(RaceColumn raceColumn) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java index e4caa145058..a4137789422 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RegattaImpl.java @@ -575,6 +575,12 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene raceColumnListeners.notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); } + + @Override + public void hasCrossFleetMergedRankingChanged (RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + raceColumnListeners.notifyListenersAboutHasCrossFleetMergedRankingChanged(raceColumn, + hasCrossFleetMergedRanking); + } @Override public boolean canAddRaceColumnToContainer(RaceColumn raceColumn) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java index 41ca4099958..2a1269ac70f 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/SeriesImpl.java @@ -64,14 +64,22 @@ public class SeriesImpl extends RenamableImpl implements Series, RaceColumnListe private boolean firstColumnIsNonDiscardableCarryForward; /** - * When a column has more than one fleet, there are two different options for scoring it. Either the scoring scheme is applied - * to the sequence of competitors one gets when first ordering the competitors by fleets and then within each fleet by their - * rank in the fleet's race; or the scoring scheme is applied to each fleet separately, leading to the best score being awarded - * in the column as many times as there are fleets in the column. For the latter case, this field is false which is - * also the default. + * When a column has more than one fleet, there are two different options for scoring it when the fleets have different ranks. + * Either the scoring scheme is applied to the sequence of competitors one gets when first ordering the competitors by fleets + * and then within each fleet by their rank in the fleet's race; or the scoring scheme is applied to each fleet separately, + * leading to the best score being awarded in the column as many times as there are fleets in the column. + * For the latter case, this field is false which is also the default. */ private boolean hasSplitFleetContiguousScoring; + /** + * When a column has more than one fleet, there are two different options for scoring it when the fleets are of the same rank. + * Either the scoring scheme is applied to both fleets at the same time and competitors compete across the fleets; or the scoring scheme is applied to each fleet separately, + * leading to the best score being awarded in the column as many times as there are fleets in the column. + * For the latter case, this field is false which is also the default. + */ + private boolean hasCrossFleetMergedRanking; + /** * @param fleets * must be non-empty @@ -285,11 +293,6 @@ public class SeriesImpl extends RenamableImpl implements Series, RaceColumnListe raceColumnListeners.notifyListenersAboutIsStartsWithZeroScoreChanged(raceColumn, newIsStartsWithZeroScore); } - @Override - public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) { - raceColumnListeners.notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); - } - @Override public void isFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, boolean firstColumnIsNonDiscardableCarryForward) { raceColumnListeners.notifyListenersAboutIsFirstColumnIsNonDiscardableCarryForwardChanged(raceColumn, firstColumnIsNonDiscardableCarryForward); @@ -408,16 +411,6 @@ public class SeriesImpl extends RenamableImpl implements Series, RaceColumnListe } } - @Override - public void setSplitFleetContiguousScoring(boolean hasSplitFleetContiguousScoring) { - if (hasSplitFleetContiguousScoring != this.hasSplitFleetContiguousScoring) { - this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; - for (RaceColumn raceColumn : getRaceColumns()) { - raceColumnListeners.notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); - } - } - } - @Override public boolean isFirstColumnIsNonDiscardableCarryForward() { return firstColumnIsNonDiscardableCarryForward; @@ -440,4 +433,39 @@ public class SeriesImpl extends RenamableImpl implements Series, RaceColumnListe public boolean hasSplitFleetContiguousScoring() { return hasSplitFleetContiguousScoring; } + + @Override + public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) { + raceColumnListeners.notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); + } + + @Override + public void setSplitFleetContiguousScoring(boolean hasSplitFleetContiguousScoring) { + if (hasSplitFleetContiguousScoring != this.hasSplitFleetContiguousScoring) { + this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + for (RaceColumn raceColumn : getRaceColumns()) { + raceColumnListeners.notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); + } + } + } + + @Override + public boolean hasCrossFleetMergedRanking() { + return hasCrossFleetMergedRanking; + } + + @Override + public void setCrossFleetMergedRanking(boolean hasCrossFleetMergedRanking) { + if (hasCrossFleetMergedRanking != this.hasCrossFleetMergedRanking) { + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; + for (RaceColumn raceColumn : getRaceColumns()) { + raceColumnListeners.notifyListenersAboutHasCrossFleetMergedRankingChanged(raceColumn, hasCrossFleetMergedRanking); + } + } + } + + @Override + public void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + raceColumnListeners.notifyListenersAboutHasCrossFleetMergedRankingChanged(raceColumn, hasCrossFleetMergedRanking); + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java index 30ca039ad0e..01463a0cb7d 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java @@ -270,6 +270,11 @@ public abstract class AbstractSimpleLeaderboardImpl extends AbstractLeaderboardW getRaceColumnListeners().notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); } + + @Override + public void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + getRaceColumnListeners().notifyListenersAboutHasCrossFleetMergedRankingChanged(raceColumn, hasCrossFleetMergedRanking); + } @Override public void raceColumnMoved(RaceColumn raceColumn, int newIndex) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java index d16c28ee39c..8edd2976049 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/LeaderboardGroupMetaLeaderboard.java @@ -101,4 +101,10 @@ public class LeaderboardGroupMetaLeaderboard extends AbstractMetaLeaderboard imp public LeaderboardType getLeaderboardType() { return LeaderboardType.RegattaMetaLeaderboard; } + + @Override + public void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + // TODO Auto-generated method stub + + } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java index 466389de46b..3b1854bc0ec 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/meta/MetaLeaderboardColumn.java @@ -147,6 +147,11 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R public void hasSplitFleetContiguousScoringChanged(RaceColumn raceColumn, boolean hasSplitFleetContiguousScoring) { getRaceColumnListeners().notifyListenersAboutHasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); } + + @Override + public void hasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + getRaceColumnListeners().notifyListenersAboutHasCrossFleetMergedRankingChanged(raceColumn, hasCrossFleetMergedRanking); + } @Override public boolean canAddRaceColumnToContainer(RaceColumn raceColumn) { diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java b/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java index 43299723bc4..7bb9b9175f4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java @@ -103,6 +103,12 @@ public class RaceColumnListeners implements Serializable { listener.hasSplitFleetContiguousScoringChanged(raceColumn, hasSplitFleetContiguousScoring); } } + + public void notifyListenersAboutHasCrossFleetMergedRankingChanged(RaceColumn raceColumn, boolean hasCrossFleetMergedRanking) { + for (RaceColumnListener listener : getRaceColumnListeners()) { + listener.hasSplitFleetContiguousScoringChanged(raceColumn, hasCrossFleetMergedRanking); + } + } public void notifyListenersAboutIsFirstColumnIsNonDiscardableCarryForwardChanged(RaceColumn raceColumn, boolean firstColumnIsNonDiscardableCarryForward) { for (RaceColumnListener listener : getRaceColumnListeners()) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java index 2b0a801f647..07ab119fca3 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CreateRegattaCallback.java @@ -57,7 +57,7 @@ public class CreateRegattaCallback implements DialogCallback{ SeriesCreationParametersDTO seriesPair = new SeriesCreationParametersDTO(seriesDTO.getFleets(), seriesDTO.isMedal(), seriesDTO.isFleetsCanRunInParallel(), seriesDTO.isStartsWithZeroScore(), seriesDTO.isFirstColumnIsNonDiscardableCarryForward(), seriesDTO.getDiscardThresholds(), - seriesDTO.hasSplitFleetContiguousScoring(), seriesDTO.getMaximumNumberOfDiscards()); + seriesDTO.hasSplitFleetContiguousScoring(), seriesDTO.hasCrossFleetMergedRanking(), seriesDTO.getMaximumNumberOfDiscards()); seriesStructure.put(seriesDTO.getName(), seriesPair); } sailingServiceWrite.createRegatta(newRegatta.getName(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java index f6c9d2b001c..05af99b1f0a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaDetailsComposite.java @@ -202,6 +202,12 @@ public class RegattaDetailsComposite extends Composite { return series.hasSplitFleetContiguousScoring() ? stringMessages.yes() : stringMessages.no(); } }; + TextColumn hasCrossFleetMergedRankingColumn = new TextColumn() { + @Override + public String getValue(SeriesDTO series) { + return series.hasCrossFleetMergedRanking() ? stringMessages.yes() : stringMessages.no(); + } + }; TextColumn isFirstColumnIsNonDiscardableCarryForwardColumn = new TextColumn() { @Override public String getValue(SeriesDTO series) { @@ -310,6 +316,7 @@ public class RegattaDetailsComposite extends Composite { table.addColumn(isFirstColumnIsNonDiscardableCarryForwardColumn, stringMessages.firstRaceIsNonDiscardableCarryForward()); table.addColumn(startsWithZeroScoreColumn, stringMessages.startsWithZeroScore()); table.addColumn(hasSplitFleetContiguousScoringColumn, stringMessages.hasSplitFleetContiguousScoring()); + table.addColumn(hasCrossFleetMergedRankingColumn, stringMessages.hasCrossFleetMergedRanking()); table.addColumn(isFleetsCanRunInParallelColumn, stringMessages.canFleetsRunInParallel()); table.addColumn(maximumNumberOfDiscardsColumn, stringMessages.maximumNumberOfDiscards()); table.addColumn(actionsColumn, stringMessages.actions()); @@ -349,6 +356,7 @@ public class RegattaDetailsComposite extends Composite { final boolean isStartsWithZeroScoreChanged = series.isStartsWithZeroScore() != seriesDescriptor.isStartsWithZeroScore(); final boolean isFirstColumnIsNonDiscardableCarryForwardChanged = series.isFirstColumnIsNonDiscardableCarryForward() != seriesDescriptor.isFirstColumnIsNonDiscardableCarryForward(); final boolean hasSplitFleetContiguousScoringChanged = series.hasSplitFleetContiguousScoring() != seriesDescriptor.hasSplitFleetContiguousScoring(); + final boolean hasCrossFleetMergedRankingChanged = series.hasCrossFleetMergedRanking() != seriesDescriptor.hasCrossFleetMergedRanking(); final boolean seriesResultDiscardingThresholdsChanged = !Arrays.equals(series.getDiscardThresholds(), seriesDescriptor.getResultDiscardingThresholds()); final boolean maximumNumberOfDiscardsChanged = series.getMaximumNumberOfDiscards() != seriesDescriptor.getMaximumNumberOfDiscards(); @@ -405,12 +413,12 @@ public class RegattaDetailsComposite extends Composite { public void onSuccess(List raceColumns) { if (isMedalChanged || isFleetsCanRunInParallelChanged || seriesResultDiscardingThresholdsChanged || isStartsWithZeroScoreChanged || isFirstColumnIsNonDiscardableCarryForwardChanged || hasSplitFleetContiguousScoringChanged - || seriesNameChanged || maximumNumberOfDiscardsChanged) { + || hasCrossFleetMergedRankingChanged || seriesNameChanged || maximumNumberOfDiscardsChanged) { sailingServiceWrite.updateSeries(regattaIdentifier, series.getName(), seriesDescriptor.getSeriesName(), seriesDescriptor.isMedal(), seriesDescriptor.isFleetsCanRunInParallel(), seriesDescriptor.getResultDiscardingThresholds(), seriesDescriptor.isStartsWithZeroScore(), seriesDescriptor.isFirstColumnIsNonDiscardableCarryForward(), - seriesDescriptor.hasSplitFleetContiguousScoring(), seriesDescriptor.getMaximumNumberOfDiscards(), + seriesDescriptor.hasSplitFleetContiguousScoring(), seriesDescriptor.hasCrossFleetMergedRanking(), seriesDescriptor.getMaximumNumberOfDiscards(), series.getFleets(), new AsyncCallback() { @Override public void onFailure(Throwable caught) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java index 99dc3f49075..ff3394266ed 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaListComposite.java @@ -380,7 +380,7 @@ public class RegattaListComposite extends Composite { final SeriesDTO series = seriesIter.next(); sailingServiceWrite.updateSeries(regattaName, series.getName(), series.getName(), series.isMedal(), series.isFleetsCanRunInParallel(), series.getDiscardThresholds(), series.isStartsWithZeroScore(), - series.isFirstColumnIsNonDiscardableCarryForward(), series.hasSplitFleetContiguousScoring(), + series.isFirstColumnIsNonDiscardableCarryForward(), series.hasSplitFleetContiguousScoring(), series.hasCrossFleetMergedRanking(), series.getMaximumNumberOfDiscards(), series.getFleets(), new MarkedAsyncCallback(new AsyncCallback() { @Override public void onFailure(Throwable caught) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesDescriptor.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesDescriptor.java index a6a32d048f4..f42b689f4cd 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesDescriptor.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesDescriptor.java @@ -20,13 +20,14 @@ public class SeriesDescriptor { private final boolean isFleetsCanRunInParallel; private final boolean startsWithZeroScore; private final boolean hasSplitFleetContiguousScoring; + private final boolean hasCrossFleetMergedRanking; private final boolean firstColumnIsNonDiscardableCarryForward; private final Integer maximumNumberOfDiscards; private final int[] resultDiscardingThresholds; public SeriesDescriptor(SeriesDTO series, String seriesName, List races, boolean isMedal, boolean isFleetsCanRunInParallel, int[] resultDiscardingThresholds, boolean startsWithZeroScore, - boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, Integer maximumNumberOfDiscards) { + boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, boolean hasCrossFleetMergedRanking, Integer maximumNumberOfDiscards) { this.seriesName = seriesName; this.series = series; this.races = races; @@ -34,6 +35,7 @@ public class SeriesDescriptor { this.isFleetsCanRunInParallel = isFleetsCanRunInParallel; this.startsWithZeroScore = startsWithZeroScore; this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; this.resultDiscardingThresholds = resultDiscardingThresholds; this.firstColumnIsNonDiscardableCarryForward = firstColumnIsNonDiscardableCarryForward; this.maximumNumberOfDiscards = maximumNumberOfDiscards; @@ -70,6 +72,10 @@ public class SeriesDescriptor { public boolean hasSplitFleetContiguousScoring() { return hasSplitFleetContiguousScoring; } + + public boolean hasCrossFleetMergedRanking() { + return hasCrossFleetMergedRanking; + } public boolean isFirstColumnIsNonDiscardableCarryForward() { return firstColumnIsNonDiscardableCarryForward; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesEditDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesEditDialog.java index 7fbb64db693..cb40fe3b5db 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesEditDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesEditDialog.java @@ -44,6 +44,7 @@ public class SeriesEditDialog extends DataEntryDialog { private CheckBox fleetsCanRunInParallelCheckbox; private CheckBox startWithZeroScoreCheckbox; private CheckBox hasSplitFleetContiguousScoringCheckbox; + private CheckBox hasCrossFleetMergedRankingCheckbox; private CheckBox firstColumnIsNonDiscardableCarryForwardCheckbox; private IntegerBox maximumNumberOfDiscardsBox; private CheckBox useSeriesResultDiscardingThresholdsCheckbox; @@ -135,12 +136,13 @@ public class SeriesEditDialog extends DataEntryDialog { } races.add(raceColumnDTO); } + boolean status = hasCrossFleetMergedRankingCheckbox.getValue(); return new SeriesDescriptor(selectedSeries, seriesNameTextBox.getValue(), races, isMedalCheckbox.getValue(), fleetsCanRunInParallelCheckbox.getValue(), useSeriesResultDiscardingThresholdsCheckbox.getValue() ? discardThresholdBoxes.getDiscardThresholds() : null, startWithZeroScoreCheckbox.getValue(), firstColumnIsNonDiscardableCarryForwardCheckbox.getValue(), hasSplitFleetContiguousScoringCheckbox.getValue(), - maximumNumberOfDiscardsBox.getValue()); + hasCrossFleetMergedRankingCheckbox.getValue(), maximumNumberOfDiscardsBox.getValue()); } private RaceColumnDTO findRaceColumnInSeriesByName(SeriesDTO series, String raceColumnName) { @@ -191,6 +193,10 @@ public class SeriesEditDialog extends DataEntryDialog { hasSplitFleetContiguousScoringCheckbox.setValue(selectedSeries.hasSplitFleetContiguousScoring()); additionalWidgetPanel.add(hasSplitFleetContiguousScoringCheckbox); + hasCrossFleetMergedRankingCheckbox = createCheckbox(stringMessages.hasCrossFleetMergedRanking()); + hasCrossFleetMergedRankingCheckbox.setValue(selectedSeries.hasCrossFleetMergedRanking()); + additionalWidgetPanel.add(hasCrossFleetMergedRankingCheckbox); + firstColumnIsNonDiscardableCarryForwardCheckbox = createCheckbox(stringMessages.firstRaceIsNonDiscardableCarryForward()); firstColumnIsNonDiscardableCarryForwardCheckbox.ensureDebugId("StartsWithNonDiscardableCarryForwardCheckbox"); firstColumnIsNonDiscardableCarryForwardCheckbox.setValue(selectedSeries.isFirstColumnIsNonDiscardableCarryForward()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java index 4640b7a368f..80b2f633c26 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsCreateDialog.java @@ -38,6 +38,7 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { protected CheckBox fleetsCanRunInParallelCheckbox; protected CheckBox startsWithZeroScoreCheckbox; protected CheckBox hasSplitFleetContiguousScoringCheckbox; + protected CheckBox hasCrossFleetMergedRankingCheckbox; protected CheckBox firstColumnIsNonDiscardableCarryForwardCheckbox; protected CheckBox useSeriesResultDiscardingThresholdsCheckbox; protected IntegerBox maximumNumberOfDiscardsBox; @@ -135,6 +136,9 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { hasSplitFleetContiguousScoringCheckbox = createCheckbox(stringMessages.hasSplitFleetContiguousScoring()); hasSplitFleetContiguousScoringCheckbox.ensureDebugId("HasSplitFleetContiguousScoringCheckbox"); + hasCrossFleetMergedRankingCheckbox = createCheckbox(stringMessages.hasCrossFleetMergedRanking()); + hasCrossFleetMergedRankingCheckbox.ensureDebugId("hasCrossFleetMergedRankingCheckbox"); + maximumNumberOfDiscardsBox = createIntegerBox(null, /* visibleLength */ 3); maximumNumberOfDiscardsBox.ensureDebugId("maximumNumberOfDiscardsBox"); @@ -175,6 +179,7 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { series.setFleetsCanRunInParallel(fleetsCanRunInParallelCheckbox.getValue()); series.setStartsWithZeroScore(startsWithZeroScoreCheckbox.getValue()); series.setSplitFleetContiguousScoring(hasSplitFleetContiguousScoringCheckbox.getValue()); + series.setCrossFleetMergedRanking(hasCrossFleetMergedRankingCheckbox.getValue()); series.setFirstColumnIsNonDiscardableCarryForward(firstColumnIsNonDiscardableCarryForwardCheckbox.getValue()); series.setMaximumNumberOfDiscards(maximumNumberOfDiscardsBox.getValue()); series.setFleets(fleetListComposite.getValue()); @@ -189,7 +194,7 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { if (additionalWidget != null) { panel.add(additionalWidget); } - Grid formGrid = new Grid(9, 2); + Grid formGrid = new Grid(10, 2); panel.add(formGrid); int row = 0; formGrid.setWidget(row, 0, new Label(stringMessages.name() + ":")); @@ -198,6 +203,7 @@ public class SeriesWithFleetsCreateDialog extends DataEntryDialog { formGrid.setWidget(row++, 1, fleetsCanRunInParallelCheckbox); formGrid.setWidget(row++, 1, startsWithZeroScoreCheckbox); formGrid.setWidget(row++, 1, hasSplitFleetContiguousScoringCheckbox); + formGrid.setWidget(row++, 1, hasCrossFleetMergedRankingCheckbox); formGrid.setWidget(row++, 1, firstColumnIsNonDiscardableCarryForwardCheckbox); formGrid.setWidget(row, 0, new Label(stringMessages.maximumNumberOfDiscards())); formGrid.setWidget(row++, 1, maximumNumberOfDiscardsBox); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsDefaultListEditor.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsDefaultListEditor.java index ebefa7ba286..7168f8e2f04 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsDefaultListEditor.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SeriesWithFleetsDefaultListEditor.java @@ -87,8 +87,7 @@ public class SeriesWithFleetsDefaultListEditor extends SeriesWithFleetsListEdito final List seriesList = context.getValue(); int oldIndex = seriesList.indexOf(seriesDTO); seriesList.set(oldIndex, newVersionOfEditedSeries); - update(newVersionOfEditedSeries); - + update(newVersionOfEditedSeries); } }); dialog.ensureDebugId("SeriesEditDialog"); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWrite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWrite.java index cc6b17e8d5d..3a4b7ba5a7a 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWrite.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWrite.java @@ -270,8 +270,8 @@ public interface SailingServiceWrite extends FileStorageManagementGwtService, Sa void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal, boolean isFleetsCanRunInParallel, int[] resultDiscardingThresholds, boolean startsWithZeroScore, - boolean firstRaceIsNonDiscardableCarryForward, boolean hasSplitFleetScore, Integer maximumNumberOfDiscards, - List fleets) throws UnauthorizedException; + boolean firstRaceIsNonDiscardableCarryForward, boolean hasSplitFleetScore, boolean hasCrossFleetMergedRanking, + Integer maximumNumberOfDiscards, List fleets) throws UnauthorizedException; void updateRegatta(RegattaIdentifier regattaIdentifier, Date startDate, Date endDate, List courseAreaUuids, RegattaConfigurationDTO regattaConfiguration, Double buoyZoneRadiusInHullLengths, diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWriteAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWriteAsync.java index 815ea8642eb..90f23c2beec 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWriteAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceWriteAsync.java @@ -479,8 +479,8 @@ public interface SailingServiceWriteAsync extends FileStorageManagementGwtServic void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal, boolean isFleetsCanRunInParallel, int[] resultDiscardingThresholds, boolean startsWithZeroScore, - boolean firstRaceIsNonDiscardableCarryForward, boolean hasSplitFleetScore, Integer maximumNumberOfDiscards, - List fleets, AsyncCallback callback); + boolean firstRaceIsNonDiscardableCarryForward, boolean hasSplitFleetScore, boolean hasCrossFleetMergedRanking, + Integer maximumNumberOfDiscards, List fleets, AsyncCallback callback); void removeRaceColumnsFromSeries(RegattaIdentifier regattaIdentifier, String seriesName, List columnNames, AsyncCallback callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index a943100c317..954cb384b16 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -1039,6 +1039,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String releaseNotes(); String pwaAnchor(); String hasSplitFleetContiguousScoring(); + String hasCrossFleetMergedRanking(); String eventOverview(); String addRaceLogTracker(); String addRaceLogTrackers(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index b14cea1b570..5b192c978d1 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -1046,7 +1046,8 @@ showDiagram=Show Diagram rerunQueryAfterRefreshTooltip=Reruns the query after the tables have been refreshed. releaseNotes=News and Release History pwaAnchor=Switch to PWA view -hasSplitFleetContiguousScoring=Split fleets scored contiguously +hasSplitFleetContiguousScoring=Split fleets of different rank scored contiguously +hasCrossFleetMergedRanking = Split fleets of the same rank are scored as one fleet addRaceLogTracker=Add RaceLog Tracker addRaceLogTrackers=Add RaceLog Trackers denoteForRaceLogTracking=Denote for RaceLog tracking diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 3a05281d867..ca6ff2cca76 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -1030,7 +1030,8 @@ showDiagram=Diagramm anzeigen rerunQueryAfterRefreshTooltip=Wiederholt die Anfrage nachdem die Tabellen aktualisiert wurden. releaseNotes=Neuigkeiten und Änderungshistorie pwaAnchor=Switch to PWA view -hasSplitFleetContiguousScoring=Gruppen durchgängig bepunkten +hasSplitFleetContiguousScoring=Gruppen von unterschiedlichem Rang durchgängig bepunkten +hasCrossFleetMergedRanking = Gruppen vom selben Rang wie eine Gruppe bepunkten addRaceLogTracker=RaceLog Tracker hinzufügen addRaceLogTrackers=RaceLog Tracker hinzufügen denoteForRaceLogTracking=Für RaceLog Tracking markieren diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index c1fd061308e..c5f64825846 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -985,7 +985,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet SeriesDTO result = new SeriesDTO(series.getName(), fleets, raceColumns, series.isMedal(), series.isFleetsCanRunInParallel(), series.getResultDiscardingRule() == null ? null : series.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces(), series.isStartsWithZeroScore(), series.isFirstColumnIsNonDiscardableCarryForward(), series.hasSplitFleetContiguousScoring(), - series.getMaximumNumberOfDiscards()); + series.hasCrossFleetMergedRanking() , series.getMaximumNumberOfDiscards()); return result; } @@ -4142,9 +4142,10 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet } private SeriesParameters getSeriesParameters(SeriesDTO seriesDTO) { - SeriesParameters series = new SeriesParameters(false, false, false, null, seriesDTO.getMaximumNumberOfDiscards()); + SeriesParameters series = new SeriesParameters(false, false, false, false, null, seriesDTO.getMaximumNumberOfDiscards()); series.setFirstColumnIsNonDiscardableCarryForward(seriesDTO.isFirstColumnIsNonDiscardableCarryForward()); series.setHasSplitFleetContiguousScoring(seriesDTO.hasSplitFleetContiguousScoring()); + series.sethasCrossFleetMergedRanking(seriesDTO.hasCrossFleetMergedRanking()); series.setStartswithZeroScore(seriesDTO.isStartsWithZeroScore()); series.setDiscardingThresholds(seriesDTO.getDiscardThresholds()); return series; @@ -4157,7 +4158,7 @@ public class SailingServiceImpl extends ResultCachingProxiedRemoteServiceServlet seriesCreationParams.put(series.getName(), new SeriesCreationParametersDTO(series.getFleets(), false, true, seriesParameters.isStartswithZeroScore(), seriesParameters.isFirstColumnIsNonDiscardableCarryForward(), seriesParameters.getDiscardingThresholds(), seriesParameters.isHasSplitFleetContiguousScoring(), - seriesParameters.getMaximumNumberOfDiscards())); + seriesParameters.isHasCrossFleetMergedRanking(), seriesParameters.getMaximumNumberOfDiscards())); } return seriesCreationParams; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceWriteImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceWriteImpl.java index 57a7600b18d..41d70e68269 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceWriteImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceWriteImpl.java @@ -1619,14 +1619,14 @@ public class SailingServiceWriteImpl extends SailingServiceImpl implements Saili public void updateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal, boolean isFleetsCanRunInParallel, int[] resultDiscardingThresholds, boolean startsWithZeroScore, boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, - Integer maximumNumberOfDiscards, List fleets) { + boolean hasCrossFleetMergedRanking, Integer maximumNumberOfDiscards, List fleets) { Regatta regatta = getService().getRegatta(regattaIdentifier); if (regatta != null) { SecurityUtils.getSubject().checkPermission(SecuredDomainType.REGATTA.getStringPermissionForObject(DefaultActions.UPDATE, regatta)); } getService().apply( new UpdateSeries(regattaIdentifier, seriesName, newSeriesName, isMedal, isFleetsCanRunInParallel, resultDiscardingThresholds, - startsWithZeroScore, firstColumnIsNonDiscardableCarryForward, hasSplitFleetContiguousScoring, + startsWithZeroScore, firstColumnIsNonDiscardableCarryForward, hasSplitFleetContiguousScoring, hasCrossFleetMergedRanking, maximumNumberOfDiscards, fleets)); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/SeriesDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/SeriesDTO.java index 08be87e12b9..3ed3a92f552 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/SeriesDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/SeriesDTO.java @@ -17,6 +17,7 @@ public class SeriesDTO extends NamedDTO { private Boolean startsWithZeroScore; private boolean firstColumnIsNonDiscardableCarryForward; private boolean hasSplitFleetContiguousScoring; + private boolean hasCrossFleetMergedRanking; private Integer maximumNumberOfDiscards; public SeriesDTO() { @@ -25,7 +26,7 @@ public class SeriesDTO extends NamedDTO { public SeriesDTO(String name, List fleets, List raceColumns, boolean isMedal, boolean isFleetsCanRunInParallel, int[] discardThresholds, boolean startsWithZeroScore, boolean firstColumnIsNonDiscardableCarryForward, - boolean hasSplitFleetContiguousScoring, Integer maximumNumberOfDiscards) { + boolean hasSplitFleetContiguousScoring, boolean hasCrossFleetMergedRanking, Integer maximumNumberOfDiscards) { super(name); this.fleets = fleets; this.raceColumns = raceColumns; @@ -33,6 +34,7 @@ public class SeriesDTO extends NamedDTO { this.isFleetsCanRunInParallel = isFleetsCanRunInParallel; this.startsWithZeroScore = startsWithZeroScore; this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; this.discardThresholds = discardThresholds; this.firstColumnIsNonDiscardableCarryForward = firstColumnIsNonDiscardableCarryForward; this.maximumNumberOfDiscards = maximumNumberOfDiscards; @@ -47,7 +49,7 @@ public class SeriesDTO extends NamedDTO { this(otherSeries.getName(), otherSeries.getFleets(), otherSeries.getRaceColumns() == null ? null : new ArrayList(otherSeries.getRaceColumns()), otherSeries.isMedal(), otherSeries.isFleetsCanRunInParallel(), otherSeries.getDiscardThresholds(), otherSeries.isStartsWithZeroScore(), - otherSeries.isFirstColumnIsNonDiscardableCarryForward(), otherSeries.hasSplitFleetContiguousScoring(), + otherSeries.isFirstColumnIsNonDiscardableCarryForward(), otherSeries.hasSplitFleetContiguousScoring(), otherSeries.hasCrossFleetMergedRanking(), otherSeries.getMaximumNumberOfDiscards()); } @@ -123,6 +125,14 @@ public class SeriesDTO extends NamedDTO { public void setSplitFleetContiguousScoring(Boolean hasSplitFleetContiguousScoring) { this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; } + + public Boolean hasCrossFleetMergedRanking() { + return hasCrossFleetMergedRanking; + } + + public void setCrossFleetMergedRanking(Boolean hasCrossFleetMergedRanking) { + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; + } public Integer getMaximumNumberOfDiscards() { return maximumNumberOfDiscards; diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/EventsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/EventsResource.java index 49bbfb51c38..a73bdfbfa76 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/EventsResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/EventsResource.java @@ -729,8 +729,8 @@ public class EventsResource extends AbstractSailingServerResource { getService().apply(new UpdateSeries(new RegattaName(regatta.getName()), "Default", "Default", defaultSeries.isMedal(), defaultSeries.isFleetsCanRunInParallel(), defaultSeries.getDiscardingThresholds(), defaultSeries.isStartsWithZero(), defaultSeries.isFirstColumnIsNonDiscardableCarryForward(), - defaultSeries.hasSplitFleetContiguousScoring(), defaultSeries.getMaximumNumberOfDiscards(), - defaultSeries.getFleets())); + defaultSeries.hasSplitFleetContiguousScoring(), defaultSeries.hasCrossFleetMergedRanking(), + defaultSeries.getMaximumNumberOfDiscards(), defaultSeries.getFleets())); } private void addRaceColumns(String regattaName, String seriesName, int numberOfRaces) { @@ -869,7 +869,7 @@ public class EventsResource extends AbstractSailingServerResource { final LinkedHashMap series = new LinkedHashMap<>(); series.put("Default", new SeriesCreationParametersDTO( - Arrays.asList(new FleetDTO("Default", 0, null)), false, false, false, false, null, false, null)); + Arrays.asList(new FleetDTO("Default", 0, null)), false, false, false, false, null, false, false, null)); return series; } diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java index 99bde824cb2..a0d71c72b1e 100755 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/RegattasResource.java @@ -2653,6 +2653,8 @@ public class RegattasResource extends AbstractSailingServerResource { boolean firstColumnIsNonDiscardableCarryForward = (boolean) requestObject .get("firstColumnIsNonDiscardableCarryForward"); boolean hasSplitFleetContiguousScoring = (boolean) requestObject.get("hasSplitFleetContiguousScoring"); + + boolean hasCrossFleetMergedRanking = (boolean) requestObject.get("hasCrossFleetMergedRanking"); Integer maximumNumberOfDiscards = null; if (requestObject.containsKey("maximumNumberOfDiscards")) { @@ -2679,7 +2681,7 @@ public class RegattasResource extends AbstractSailingServerResource { } getService().apply(new UpdateSeries(regatta.getRegattaIdentifier(), seriesName, seriesNameNew, isMedal, isFleetsCanRunInParallel, resultDiscardingThresholds, startsWithZeroScore, - firstColumnIsNonDiscardableCarryForward, hasSplitFleetContiguousScoring, maximumNumberOfDiscards, + firstColumnIsNonDiscardableCarryForward, hasSplitFleetContiguousScoring, hasCrossFleetMergedRanking ,maximumNumberOfDiscards, fleets)); } else { throw new IllegalStateException("RegattaName could not be resolved to regatta " + regattaName); diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/ExpeditionAllInOneImporter.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/ExpeditionAllInOneImporter.java index dfc657431c7..bb97e805136 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/ExpeditionAllInOneImporter.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/trackfiles/impl/ExpeditionAllInOneImporter.java @@ -757,7 +757,7 @@ public class ExpeditionAllInOneImporter { seriesCreationParameters.put(seriesName, new SeriesCreationParametersDTO(fleets, /*isMedal*/ false, /* isFleetsCanRunInParallel */ false, /*isStartsWithZeroScore*/ false, /*firstColumnIsNonDiscardableCarryForward*/false, /*discardingThresholds*/ null, - /*hasSplitFleetContiguousScoring*/ false, /*maximumNumberOfDiscards*/ null)); + /*hasSplitFleetContiguousScoring*/ false, /* hasCrossFleetMergedRanking */ false, /*maximumNumberOfDiscards*/ null)); final RegattaCreationParametersDTO regattaCreationParameters = new RegattaCreationParametersDTO(seriesCreationParameters); regatta = service.apply(new AddSpecificRegatta(regattaNameAndleaderboardName, boatClassName, /* can boats of competitors change */ false, CompetitorRegistrationType.CLOSED, diff --git a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java index 49903a9e242..c09445c0008 100755 --- a/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java +++ b/java/com.sap.sailing.server.interface/src/com/sap/sailing/server/operationaltransformation/UpdateSeries.java @@ -26,13 +26,14 @@ public class UpdateSeries extends AbstractSeriesOperation { private final boolean startsWithZeroScore; private final boolean firstColumnIsNonDiscardableCarryForward; private final boolean hasSplitFleetContiguousScoring; + private final boolean hasCrossFleetMergedRanking; private final boolean seriesNameChanged; private final String newSeriesName; private final Integer maximumNumberOfDiscards; public UpdateSeries(RegattaIdentifier regattaIdentifier, String seriesName, String newSeriesName, boolean isMedal, boolean isFleetsCanRunInParallel, int[] resultDiscardingThresholds, boolean startsWithZeroScore, - boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, + boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, boolean hasCrossFleetMergedRanking, Integer maximumNumberOfDiscards, List fleets) { super(regattaIdentifier, seriesName); this.seriesNameChanged = !seriesName.equals(newSeriesName); @@ -43,6 +44,7 @@ public class UpdateSeries extends AbstractSeriesOperation { this.startsWithZeroScore = startsWithZeroScore; this.firstColumnIsNonDiscardableCarryForward = firstColumnIsNonDiscardableCarryForward; this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; this.maximumNumberOfDiscards = maximumNumberOfDiscards; this.fleets = fleets; } @@ -63,6 +65,7 @@ public class UpdateSeries extends AbstractSeriesOperation { series.setStartsWithZeroScore(startsWithZeroScore); series.setFirstColumnIsNonDiscardableCarryForward(firstColumnIsNonDiscardableCarryForward); series.setSplitFleetContiguousScoring(hasSplitFleetContiguousScoring); + series.setCrossFleetMergedRanking(hasCrossFleetMergedRanking); series.setMaximumNumberOfDiscards(maximumNumberOfDiscards); if (series.getRegatta().isPersistent()) { toState.updateStoredRegatta(series.getRegatta()); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java index 8811cf64fcb..402dc08592b 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/AbstractLogReplicationTest.java @@ -99,8 +99,8 @@ public abstract class AbstractLogReplicationTest seriesCreationParameters = new LinkedHashMap<>(); SeriesCreationParametersDTO creationParametersForDefaultSeries = new SeriesCreationParametersDTO( Arrays.asList(new FleetDTO[] { new FleetDTO(fleetName, 0, Color.BLACK), }), /* medal */false, /* fleetsCanRunInParallel */ true, /* startsWithZero */ - false, /* firstColumnIsNonDiscardableCarryForward */false, /* discardingThresholds */new int[0], /* hasSplitFleetContiguousScoring */ - false, /* maximumNumberOfDiscards */ null); + false, /* firstColumnIsNonDiscardableCarryForward */ false, /* discardingThresholds */new int[0], /* hasSplitFleetContiguousScoring */ + false, /* hasCrossFleetMergedRanking */ false, /* maximumNumberOfDiscards */ null); seriesCreationParameters.put(seriesName, creationParametersForDefaultSeries); // 1. Install some race column on master... RegattaCreationParametersDTO regattaCreationParams = new RegattaCreationParametersDTO(seriesCreationParameters); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java index 441e5152cec..390f1680200 100755 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/RegattaReplicationTest.java @@ -278,7 +278,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { master.apply(new UpdateSeries(masterRegatta.getRegattaIdentifier(), finals.getName(), finals.getName(), finals.isMedal(), finals.isFleetsCanRunInParallel(), new int[] {}, finals.isStartsWithZeroScore(), finals.isFirstColumnIsNonDiscardableCarryForward(), - finals.hasSplitFleetContiguousScoring(), finals.getMaximumNumberOfDiscards(), Arrays.asList(new FleetDTO[] { finalsGoldFleet }))); + finals.hasSplitFleetContiguousScoring(), finals.hasCrossFleetMergedRanking() ,finals.getMaximumNumberOfDiscards(), Arrays.asList(new FleetDTO[] { finalsGoldFleet }))); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); @@ -321,7 +321,7 @@ public class RegattaReplicationTest extends AbstractServerReplicationTest { qualification.isMedal(), qualification.isFleetsCanRunInParallel(), new int[] {}, qualification.isStartsWithZeroScore(), qualification.isFirstColumnIsNonDiscardableCarryForward(), - qualification.hasSplitFleetContiguousScoring(), qualification.getMaximumNumberOfDiscards(), Arrays.asList(new FleetDTO[] { }))); + qualification.hasSplitFleetContiguousScoring(), qualification.hasCrossFleetMergedRanking(), qualification.getMaximumNumberOfDiscards(), Arrays.asList(new FleetDTO[] { }))); Thread.sleep(1000); replicatedRegatta = replica.getRegatta(new RegattaName(masterRegatta.getName())); assertNotNull(replicatedRegatta); diff --git a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java index a302e4ff8a2..a8e86e14c43 100644 --- a/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java +++ b/java/com.sap.sailing.server.replication.test/src/com/sap/sailing/server/replication/test/TrackRaceBoatCompetitorMetadataReplicationTest.java @@ -115,7 +115,7 @@ public class TrackRaceBoatCompetitorMetadataReplicationTest extends AbstractServ final RegattaName regattaIdentifier = new RegattaName(regatta.getName()); master.apply(new UpdateSeries(regattaIdentifier, "Default", "Default", /* isMedal */ false, /* isFleetsCanRunInParallel */ false, /* resultDiscardingThresholds */ null, /* startsWithZeroScore */ false, /* firstColumnIsNonDiscardableCarryForward */ false, - /* hasSplitFleetContiguousScoring */ false, /* maximumNumberOfDiscards */ null, + /* hasSplitFleetContiguousScoring */ false, /* hasCrossFleetMergedRanking */ false, /* maximumNumberOfDiscards */ null, Arrays.asList(new FleetDTO("Red", 0, Color.RED), new FleetDTO("Green", 0, Color.GREEN), new FleetDTO("Blue", 0, Color.BLUE)))); racesHandle = master.addRace(/* regattaToAddTo */ regattaIdentifier, trackingParams, /* timeoutInMilliseconds */ 60000, new DefaultRaceTrackingHandler()); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/AutomaticRetrackUponCompetitorSetChangeTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/AutomaticRetrackUponCompetitorSetChangeTest.java index 029fd0a1f97..0d52a99430f 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/AutomaticRetrackUponCompetitorSetChangeTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/AutomaticRetrackUponCompetitorSetChangeTest.java @@ -139,7 +139,7 @@ public class AutomaticRetrackUponCompetitorSetChangeTest { final String seriesName = "Default"; service.apply(new UpdateSeries(regattaIdentifier, seriesName, seriesName, /* isMedal */ false, /* isFleetsCanRunInParallel */ false, /* resultDiscardingThresholds */ null, /* startsWithZeroScore */ false, /* firstColumnIsNonDiscardableCarryForward */ false, - /* hasSplitFleetContiguousScoring */ false, /* maximumNumberOfDiscards */ null, + /* hasSplitFleetContiguousScoring */ false, /* hasCrossFleetMergedRanking */ false,/* maximumNumberOfDiscards */ null, Arrays.asList(new FleetDTO(RED_FLEET_NAME, 0, Color.RED), new FleetDTO(GREEN_FLEET_NAME, 0, Color.GREEN), new FleetDTO(BLUE_FLEET_NAME, 0, Color.BLUE)))); service.apply(new CreateRegattaLeaderboard(regattaIdentifier, /* leaderboardDisplayName */ null, new int[0])); service.apply(new AddColumnToSeries(regattaIdentifier, seriesName, FIRST_RACE_COLUMN_NAME)); diff --git a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java index 50d489ff009..7b1d45b39c3 100755 --- a/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java +++ b/java/com.sap.sailing.server.test/src/com/sap/sailing/server/test/SearchServiceTest.java @@ -167,7 +167,7 @@ public class SearchServiceTest { seriesCreationParams.put("Default", new SeriesCreationParametersDTO(Collections.singletonList(new FleetDTO("Default", /* order */-1, Color.RED)), /* medal */false, /* fleetsCanRunInParallel */ true, /* startsWithZero */false, /* firstColumnIsNonDiscardableCarryForward */false, - /* discardingThresholds */null, /* hasSplitFleetContiguousScoring */false, /* maximumNumberOfDiscards */ null)); + /* discardingThresholds */null, /* hasSplitFleetContiguousScoring */false, /* hasCrossFleetMergedRanking */ false, /* maximumNumberOfDiscards */ null)); pfingstbusch29er = server.apply(new AddSpecificRegatta(RegattaImpl.getDefaultName("Pfingstbusch", "29er"), "29er", /* canBoatsOfCompetitorsChangePerRace */ true, CompetitorRegistrationType.CLOSED, /* registrationLinkSecret */ UUID.randomUUID().toString(), /* startDate */ null, /* endDate */ null, diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy).launch b/java/com.sap.sailing.server/SailingServer (No Proxy).launch index 6988fac8bf6..4582254e511 100755 --- a/java/com.sap.sailing.server/SailingServer (No Proxy).launch +++ b/java/com.sap.sailing.server/SailingServer (No Proxy).launch @@ -33,280 +33,275 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index c99dcd0b319..616770f41c7 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -2094,7 +2094,7 @@ implements RacingEventService, ClearStateTestSupport, RegattaListener, Leaderboa new SeriesCreationParametersDTO(fleetNamesAndOrdering, s.isMedal(), s.isFleetsCanRunInParallel(), s.isStartsWithZeroScore(), s .isFirstColumnIsNonDiscardableCarryForward(), s.getResultDiscardingRule() == null ? null : s.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces(), s - .hasSplitFleetContiguousScoring(), s.getMaximumNumberOfDiscards())); + .hasSplitFleetContiguousScoring(), s.hasCrossFleetMergedRanking(), s.getMaximumNumberOfDiscards())); } return new RegattaCreationParametersDTO(result); } diff --git a/java/com.sap.sailing.xrr.structureimport/src/com/sap/sailing/xrr/structureimport/SeriesParameters.java b/java/com.sap.sailing.xrr.structureimport/src/com/sap/sailing/xrr/structureimport/SeriesParameters.java index b66ee509ef7..bd500a1fe5f 100755 --- a/java/com.sap.sailing.xrr.structureimport/src/com/sap/sailing/xrr/structureimport/SeriesParameters.java +++ b/java/com.sap.sailing.xrr.structureimport/src/com/sap/sailing/xrr/structureimport/SeriesParameters.java @@ -3,14 +3,16 @@ package com.sap.sailing.xrr.structureimport; public class SeriesParameters { private boolean firstColumnIsNonDiscardableCarryForward = false; private boolean hasSplitFleetContiguousScoring = false; + private boolean hasCrossFleetMergedRanking = false; private boolean startswithZeroScore = false; private int[] discardingThresholds = null; private Integer maximumNumberOfDiscards = null; public SeriesParameters(boolean firstColumnIsNonDiscardableCarryForward, boolean hasSplitFleetContiguousScoring, - boolean startswithZeroScore, int[] discardingThresholds, Integer maximumNumberOfDiscards) { + boolean hasCrossFleetMergedRanking, boolean startswithZeroScore, int[] discardingThresholds, Integer maximumNumberOfDiscards) { this.firstColumnIsNonDiscardableCarryForward = firstColumnIsNonDiscardableCarryForward; this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; this.startswithZeroScore = startswithZeroScore; this.discardingThresholds = discardingThresholds; this.maximumNumberOfDiscards = maximumNumberOfDiscards; @@ -27,10 +29,18 @@ public class SeriesParameters { public boolean isHasSplitFleetContiguousScoring() { return hasSplitFleetContiguousScoring; } + + public boolean isHasCrossFleetMergedRanking() { + return hasCrossFleetMergedRanking; + } public void setHasSplitFleetContiguousScoring(boolean hasSplitFleetContiguousScoring) { this.hasSplitFleetContiguousScoring = hasSplitFleetContiguousScoring; } + + public void sethasCrossFleetMergedRanking(boolean hasCrossFleetMergedRanking) { + this.hasCrossFleetMergedRanking = hasCrossFleetMergedRanking; + } public boolean isStartswithZeroScore() { return startswithZeroScore;