diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractPairingListParameterValidator.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractPairingListParameterValidator.java index 5bd4b96fd1f..069674bbb95 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractPairingListParameterValidator.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractPairingListParameterValidator.java @@ -15,17 +15,18 @@ public class AbstractPairingListParameterValidator implements Validator0){ - errorMessage= "Flightcount has to be a multiple of Flightmultiplier!"; - } else if(Util.size(valueToValidate.getSelectedFlightNames())<1) { - errorMessage= "Invalid series selection"; + errorMessage = stringMessages.invalidFlightMultiplier(); + } else if (valueToValidate.getFlightCount() % valueToValidate.getFlightMultiplier() != 0 + && valueToValidate.getFlightMultiplier() > 0) { + errorMessage = stringMessages.flightsMustBeAMultipleOfMultiplier(); + } else if (Util.size(valueToValidate.getSelectedFlightNames()) < 1) { + errorMessage = stringMessages.invalidSeriesSelection(); } - + return errorMessage; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java index f1282482e32..a0d3a461de8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationDialog.java @@ -28,10 +28,7 @@ public class PairingListCreationDialog extends DataEntryDialog 1) { - Label flightMultiplierLabel = new Label(String.valueOf(this.template.getFlightMultiplier())); - formGrid.setWidget(4, 0, new Label("Flight Multiplier:")); + Label flightMultiplierLabel = new Label(String.valueOf(this.template.getFlightMultiplier())); + formGrid.setWidget(4, 0, new Label(stringMessages.flightMultiplier())); formGrid.setWidget(4, 1, flightMultiplierLabel); flightMultiplierLabel.ensureDebugId("FlightMultiplierCountLabel"); } @@ -93,7 +91,7 @@ public class PairingListCreationDialog extends DataEntryDialog() { + sailingService.fillRaceLogsFromPairingListTemplate(leaderboardDTO.getName(), + template.getFlightMultiplier(), template.getSelectedFlightNames(), new AsyncCallback() { - @Override - public void onSuccess(Void result) { - System.out.println("it worked ;-)"); - } - - @Override - public void onFailure(Throwable caught) { - caught.printStackTrace(); - } - }); + @Override + public void onSuccess(Void result) { + System.out.println("it worked ;-)"); + } + + @Override + public void onFailure(Throwable caught) { + caught.printStackTrace(); + } + }); } }); @@ -177,10 +168,10 @@ public class PairingListCreationDialog extends DataEntryDialog createLinkParameters() { Map result = new HashMap<>(); result.put("leaderboardName", leaderboardDTO.getName()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationSetupDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationSetupDialog.java index 1993fe8e891..246aadf00c0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationSetupDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/PairingListCreationSetupDialog.java @@ -21,24 +21,24 @@ import com.sap.sse.common.Util; import com.sap.sse.gwt.client.controls.IntegerBox; public class PairingListCreationSetupDialog extends AbstractPairingListCreationSetupDialog { - + private final IntegerBox competitorCountTextBox; private final IntegerBox flightMultiplierTextBox; private final CheckBox flightMultiplierCheckBox; private Iterable selectedSeriesCheckboxes; private final int groupCount; - + protected static class PairingListParameterValidator extends AbstractPairingListParameterValidator { public PairingListParameterValidator(StringMessages stringMessages) { super(stringMessages); } } - - public PairingListCreationSetupDialog(StrippedLeaderboardDTO leaderboardDTO, StringMessages stringMessages, + + public PairingListCreationSetupDialog(StrippedLeaderboardDTO leaderboardDTO, StringMessages stringMessages, DialogCallback callback) { - - super(leaderboardDTO, stringMessages.pairingLists(), stringMessages, new PairingListParameterValidator(stringMessages), - callback); + + super(leaderboardDTO, stringMessages.pairingLists(), stringMessages, + new PairingListParameterValidator(stringMessages), callback); this.groupCount = Util.size(leaderboardDTO.getRaceList().get(0).getFleets()); this.competitorCountTextBox = createIntegerBox(leaderboardDTO.competitorsCount, 2); @@ -47,29 +47,29 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS this.flightMultiplierTextBox.setEnabled(false); this.flightMultiplierTextBox.setValue(1); this.flightMultiplierTextBox.ensureDebugId("FlightMultiplierIntegerBox"); - this.flightMultiplierCheckBox = createCheckbox("Flight Multiplier"); + this.flightMultiplierCheckBox = createCheckbox(this.stringMessages.flightMultiplier()); this.ensureDebugId("PairingListCreationSetupDialog"); - + this.flightMultiplierCheckBox.addValueChangeHandler(new ValueChangeHandler() { - + @Override public void onValueChange(ValueChangeEvent event) { flightMultiplierTextBox.setEnabled(event.getValue()); } }); flightMultiplierCheckBox.ensureDebugId("CompetitorCountTextBox"); - + List checkboxes = new ArrayList(); - for(String seriesName : getSeriesNamesFromAllRaces(leaderboardDTO.getRaceList())) { + for (String seriesName : getSeriesNamesFromAllRaces(leaderboardDTO.getRaceList())) { CheckBox current = createCheckbox(seriesName); current.addValueChangeHandler(new ValueChangeHandler() { @Override public void onValueChange(ValueChangeEvent event) { - if(event.getValue()) { + if (event.getValue()) { disableSelectedSeriesCheckBoxes(leaderboardDTO); } else { - if(Util.size(getCheckedSelectedCheckBoxes())>0) { - + if (Util.size(getCheckedSelectedCheckBoxes()) > 0) { + } else { enableAllSelectedSeriesCheckBoxes(); } @@ -82,34 +82,33 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS selectedSeriesCheckboxes = checkboxes; this.flightMultiplierCheckBox.ensureDebugId("FlightMultiplierCheckBox"); } - + @Override protected Widget getAdditionalWidget() { final VerticalPanel panel = new VerticalPanel(); - + CaptionPanel infoPanel = new CaptionPanel(); infoPanel.setCaptionText("Info"); panel.add(infoPanel); - + ScrollPanel infoScrollPanel = new ScrollPanel(); infoScrollPanel.setPixelSize((Window.getClientWidth() / 3), 150); infoScrollPanel.add(new Label(stringMessages.pairingListCreationInfo())); - + infoPanel.add(infoScrollPanel); - + Grid formGrid = new Grid(4, 2); panel.add(formGrid); - - //TODO add stringMessages - formGrid.setWidget(0, 0, new Label("Please set the competitors count:")); + + formGrid.setWidget(0, 0, new Label(stringMessages.setCompetitors())); formGrid.setWidget(0, 1, this.competitorCountTextBox); formGrid.setWidget(1, 0, this.flightMultiplierCheckBox); formGrid.setWidget(1, 1, this.flightMultiplierTextBox); - - formGrid.setWidget(2, 0, new Label("Please select one or more series that should be in a PairingList:")); + + formGrid.setWidget(2, 0, new Label(stringMessages.seriesHint())); int count = 0; - for(CheckBox current : selectedSeriesCheckboxes) { - formGrid.setWidget(2+count, 1, current); + for (CheckBox current : selectedSeriesCheckboxes) { + formGrid.setWidget(2 + count, 1, current); count++; } return panel; @@ -117,18 +116,18 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS @Override protected PairingListTemplateDTO getResult() { - PairingListTemplateDTO dto = new PairingListTemplateDTO(this.competitorCountTextBox.getValue(), + PairingListTemplateDTO dto = new PairingListTemplateDTO(this.competitorCountTextBox.getValue(), this.flightMultiplierTextBox.getValue()); dto.setGroupCount(this.groupCount); - + int flightCount = 0; - + for (RaceColumnDTO raceColumn : leaderboardDTO.getRaceList()) { if (!raceColumn.isMedalRace()) { flightCount++; } } - + dto.setFlightCount(flightCount); if (this.flightMultiplierCheckBox.getValue()) { @@ -141,21 +140,19 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS for (CheckBox box : getCheckedSelectedCheckBoxes()) { selectedFlightNames.addAll(getRaceColumnNamesFromSeriesName(box.getText(), leaderboardDTO.getRaceList())); } - + dto.setSelectedFlightNames(selectedFlightNames); - - return dto; + + return dto; } - + public void setDefaultCompetitorCount(int competitorCount) { if (this.competitorCountTextBox.getValue() == 0) { this.competitorCountTextBox.setValue(competitorCount); this.validateAndUpdate(); } } - - //private void changeFlights - + // filter medal race private Iterable getSeriesNamesFromAllRaces(Iterable raceColumns) { List result = new ArrayList<>(); @@ -172,55 +169,56 @@ public class PairingListCreationSetupDialog extends AbstractPairingListCreationS } return result; } - + private RaceColumnDTO getOneRaceFromSeriesName(String seriesName, Iterable raceColumns) { - for(RaceColumnDTO raceColumn : raceColumns) { - if(!raceColumn.isMedalRace() && seriesName.equals(raceColumn.getSeriesName())) { + for (RaceColumnDTO raceColumn : raceColumns) { + if (!raceColumn.isMedalRace() && seriesName.equals(raceColumn.getSeriesName())) { return raceColumn; } } return null; } - + private List getRaceColumnNamesFromSeriesName(String seriesName, Iterable raceColumns) { List result = new ArrayList<>(); - for(RaceColumnDTO raceColumn : raceColumns) { - if(!raceColumn.isMedalRace() && seriesName.equals(raceColumn.getSeriesName())) { + for (RaceColumnDTO raceColumn : raceColumns) { + if (!raceColumn.isMedalRace() && seriesName.equals(raceColumn.getSeriesName())) { result.add(raceColumn.getName()); } } return result; } - + public Iterable getCheckedSelectedCheckBoxes() { List result = new ArrayList<>(); - for(CheckBox box : selectedSeriesCheckboxes) { - if(box.getValue()) { + for (CheckBox box : selectedSeriesCheckboxes) { + if (box.getValue()) { result.add(box); } } return result; } - + private void disableSelectedSeriesCheckBoxes(StrippedLeaderboardDTO leaderboardDTO) { Iterable boxes = getCheckedSelectedCheckBoxes(); - if(Util.size(boxes)>1) { + if (Util.size(boxes) > 1) { } else { - + RaceColumnDTO race = getOneRaceFromSeriesName(Util.get(boxes, 0).getText(), leaderboardDTO.getRaceList()); - for(CheckBox box : selectedSeriesCheckboxes) { - if(race.getFleets().size() == getOneRaceFromSeriesName(box.getText(), leaderboardDTO.getRaceList()).getFleets().size()) { - + for (CheckBox box : selectedSeriesCheckboxes) { + if (race.getFleets().size() == getOneRaceFromSeriesName(box.getText(), leaderboardDTO.getRaceList()) + .getFleets().size()) { + } else { box.setEnabled(false); } } } } - + private void enableAllSelectedSeriesCheckBoxes() { - for(CheckBox box : selectedSeriesCheckboxes) { + for (CheckBox box : selectedSeriesCheckboxes) { box.setEnabled(true); } } 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 9b601d01af9..f1629e16403 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 @@ -235,9 +235,24 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String pairingList(); String pairingLists(); String pairingListCreationInfo(); + String setCompetitors(); + String seriesHint(); + String flightMultiplier(); String applyToRacelog(); String csvExport(); String printView(); + String invalidCompetitorCount(); + String invalidFlightMultiplier(); + String invalidSeriesSelection(); + String flightsMustBeAMultipleOfMultiplier(); + String dataOfPairingList(); + String numberOfFlights(); + String numberOfGroups(); + String numberOfCompetitors(); + String quality(); + String pairingListTemplate(); + String printHint(); + String blockedApplyButton(); String settingsForComponent(String localizedComponentName); String noEventsFound(); String noEventSelected(); 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 6b2f6b25aae..0ed996c602a 100755 --- 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 @@ -238,9 +238,24 @@ pairingLists=Pairing Lists pairingListCreationInfo=First of all a template will be calculated that contains only the competitor numbers and can be applied to other leaderboards. If the competitor count is not divisible by the boat count without remainder, empty placeholders will be entered into the pairing list. \ \ In addition if the competitor count is unequal to the registered competitor count in the actual leaderboard, the pairing list cannot be applied to Race logs. \ \ The count of the flights, that is used to generate a pairing list, is set by all flights of the leaderboard that are not medal races. +setCompetitors=Please set the competitors count: +seriesHint=Please select one or more series that should be in a PairingList: +flightMultiplier=Flight Multiplier applyToRacelog=Apply to Racelog csvExport=Export as CSV printView=Print view +invalidCompetitorCount=Invalid competitor count +invalidFlightMultiplier=Invalid flight multiplier +invalidSeriesSelection=Invalid series selection +flightsMustBeAMultipleOfMultiplier=Flights has to be a multiple of flight multiplier +dataOfPairingList=Data of Pairinglist +numberOfFlights=Number of Flights +numberOfGroups=Number of Groups +numberOfCompetitors=Number of Competiors +quality=Quality +pairingListTemplate=Pairinglist Template +printHint=Prints the applied version +blockedApplyButton=Registered Competitors are unequal to Competitors from Pairinglist! settingsForComponent=Settings for {0} noEventsFound=No events were found noEventSelected=No event selected 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 8095cdfd105..1c701509f87 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 @@ -240,9 +240,24 @@ pairingLists=Gegner Paarungslisten pairingListCreationInfo=Es wird zunächst ein Template berechnet, das nur aus Zahlen besteht. Wenn die Teilnehmer Anzahl nicht durch die Anzahl der Boote dividiert werden kann, entstehen leere Plätze in der Pairing List. \ \ Wenn außerdem die Anzahl der Teilnehmer nicht der auf der Rangliste registrierten Teilnehmer Anzahl entspricht, kann die Pairing List nicht in die Race Logs eingetragen werden. \ \ Es wird eine Vereinigungsmenge aus allen Rennen, die keine Medallien Rennen sind, als Rennenanzahl für die Pairing List gebildet. +setCompetitors=Anzahl der Teilnehmer: +seriesHint=Bitte wählen Sie eine oder mehr Serien für die eine Paarungsliste aus: +flightMultiplier= Wiederholungsfaktor applyToRacelog=Anwenden auf Race log csvExport=Export als CSV printView=Druckansicht +invalidCompetitorCount=Ungültige Teilnehmeranzahl +invalidFlightMultiplier=Ungültiger Wiederholungsfaktor +invalidSeriesSelection=Ungültige Serienauswahl +flightsMustBeAMultipleOfMultiplier=Anzahl der Wettfahren muss ein Vielfaches vom Wiederholungsfaktor sein +dataOfPairingList=Daten der Paarungsliste +numberOfFlights=Anzahl der Wettfahrten +numberOfGroups=Anzahl der Rennen pro Wettfahrt +numberOfCompetitors=Anzahl der Teilnehmer +quality=Qualität +pairingListTemplate=Paarungsliste +printHint=Druckt die aktuell angewendete Version! +blockedApplyButton=Die Anzahl der Teilnehmer der Paarungliste ist ungleich den registrierten Teilnehmern! settingsForComponent=Einstellungen für {0} noEventsFound=Es wurden keine Rennen gefunden noEventSelected=Kein Rennen ausgewählt diff --git a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/pairinglist/PairinglistTest.java b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/pairinglist/PairinglistTest.java index a52aaff7f82..c074866697a 100644 --- a/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/pairinglist/PairinglistTest.java +++ b/java/com.sap.sailing.selenium.test/src/com/sap/sailing/selenium/test/pairinglist/PairinglistTest.java @@ -42,6 +42,7 @@ public class PairinglistTest extends AbstractSeleniumTest { clearState(getContextRoot()); super.setUp(); } + @Test public void createEventAndTestPOForCalculation() { final RegattaDescriptor regattaDescriptor = new RegattaDescriptor(REGATTA_49ER, BOAT_CLASS_49ER); @@ -69,7 +70,8 @@ public class PairinglistTest extends AbstractSeleniumTest { editSeriesMedals.pressOk(); LeaderboardConfigurationPanelPO leaderboardConfigurationPanelPO = adminConsolePage .goToLeaderboardConfiguration(); - LeaderboardEntryPO leaderboardEntryPO=leaderboardConfigurationPanelPO.getLeaderboardTable().getEntry(REGATTA_49ER_WITH_SUFFIX); + LeaderboardEntryPO leaderboardEntryPO = leaderboardConfigurationPanelPO.getLeaderboardTable() + .getEntry(REGATTA_49ER_WITH_SUFFIX); PairingListCreationSetupDialogPO dialog = leaderboardEntryPO.getLeaderboardPairingListCreationSetupDialog(); Assert.assertTrue(!dialog.isOkButtonEnabled()); dialog.setCompetitorsCount("1"); @@ -82,32 +84,33 @@ public class PairinglistTest extends AbstractSeleniumTest { dialog.setCompetitorsCount("18"); Assert.assertTrue(dialog.isOkButtonEnabled()); PairinfListCreationDialogPO dialog2 = dialog.pressOk(); - Assert.assertEquals("12",dialog2.getValueOfFlightsLabel()); + Assert.assertEquals("12", dialog2.getValueOfFlightsLabel()); Assert.assertEquals("1", dialog2.getValueOfGroupsLabel()); Assert.assertEquals("18", dialog2.getValueOfCompetitorsLabel()); - dialog2.pressClose(); + dialog2.pressClose(); } { - AdminConsolePage adminConsolePage = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); - LeaderboardConfigurationPanelPO leaderboardConfigurationPanelPO = adminConsolePage - .goToLeaderboardConfiguration(); - LeaderboardEntryPO leaderboardEntryPO=leaderboardConfigurationPanelPO.getLeaderboardTable().getEntry(REGATTA_49ER_WITH_SUFFIX); - PairingListCreationSetupDialogPO dialog = leaderboardEntryPO.getLeaderboardPairingListCreationSetupDialog(); - dialog.setCompetitorsCount("18"); - Assert.assertTrue(!dialog.isFlightMultiplierBoxEnabled()); - dialog.clickFlightMultiplierCheckBox(); - Assert.assertTrue(dialog.isFlightMultiplierBoxEnabled()); - dialog.setFlightMultiplier("0"); - Assert.assertTrue(!dialog.isOkButtonEnabled()); - dialog.setFlightMultiplier("2"); - dialog.clickFlightCheckBox(); - Assert.assertTrue(dialog.isOkButtonEnabled()); - PairinfListCreationDialogPO dialog2 = dialog.pressOk(); - Assert.assertEquals("12",dialog2.getValueOfFlightsLabel()); - Assert.assertEquals("1", dialog2.getValueOfGroupsLabel()); - Assert.assertEquals("18", dialog2.getValueOfCompetitorsLabel()); - Assert.assertEquals("2", dialog2.getValueOfMultiplerLabel()); - dialog2.pressClose(); - } + AdminConsolePage adminConsolePage = AdminConsolePage.goToPage(getWebDriver(), getContextRoot()); + LeaderboardConfigurationPanelPO leaderboardConfigurationPanelPO = adminConsolePage + .goToLeaderboardConfiguration(); + LeaderboardEntryPO leaderboardEntryPO = leaderboardConfigurationPanelPO.getLeaderboardTable() + .getEntry(REGATTA_49ER_WITH_SUFFIX); + PairingListCreationSetupDialogPO dialog = leaderboardEntryPO.getLeaderboardPairingListCreationSetupDialog(); + dialog.setCompetitorsCount("18"); + Assert.assertTrue(!dialog.isFlightMultiplierBoxEnabled()); + dialog.clickFlightMultiplierCheckBox(); + Assert.assertTrue(dialog.isFlightMultiplierBoxEnabled()); + dialog.setFlightMultiplier("0"); + Assert.assertTrue(!dialog.isOkButtonEnabled()); + dialog.setFlightMultiplier("2"); + dialog.clickFlightCheckBox(); + Assert.assertTrue(dialog.isOkButtonEnabled()); + PairinfListCreationDialogPO dialog2 = dialog.pressOk(); + Assert.assertEquals("12", dialog2.getValueOfFlightsLabel()); + Assert.assertEquals("1", dialog2.getValueOfGroupsLabel()); + Assert.assertEquals("18", dialog2.getValueOfCompetitorsLabel()); + Assert.assertEquals("2", dialog2.getValueOfMultiplerLabel()); + dialog2.pressClose(); + } } } diff --git a/java/com.sap.sse.test/src/com/sap/see/pairinglist/test/PairingListTemplateTest.java b/java/com.sap.sse.test/src/com/sap/see/pairinglist/test/PairingListTemplateTest.java index 1a3d74a61b9..3d27d40b9c2 100644 --- a/java/com.sap.sse.test/src/com/sap/see/pairinglist/test/PairingListTemplateTest.java +++ b/java/com.sap.sse.test/src/com/sap/see/pairinglist/test/PairingListTemplateTest.java @@ -16,37 +16,6 @@ public class PairingListTemplateTest extends PairingListTemplateImpl { super(new PairingFrameProviderTest(15, 3, 18)); } - @Test - public void testArrayCopy() { - - int[][] flightColumn = { { 0, 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10, 11 }, { 12, 13, 14, 15, 16, 17 } }; - - int[][][] associationRow = new int[3][5][18]; - int[][] currentAssociations = { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, }; - - this.copyInto3rdDimension(18, currentAssociations, associationRow, flightColumn, 1, 0); - assertArrayEquals(currentAssociations[0], associationRow[0][0]); - this.copyInto3rdDimension(18, currentAssociations, associationRow, flightColumn, 1, 1); - assertArrayEquals(currentAssociations[6], associationRow[1][0]); - } - @Test public void testTeamAssociationCreation() { final int flights = 15; diff --git a/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListTemplateImpl.java b/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListTemplateImpl.java index 5172d1b9285..d424eca56ee 100644 --- a/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListTemplateImpl.java +++ b/java/com.sap.sse/src/com/sap/sse/pairinglist/impl/PairingListTemplateImpl.java @@ -327,15 +327,10 @@ public class PairingListTemplateImpl implements PairingListTemplate { Arrays.fill(group, -1); } boolean[] contains = new boolean[competitorCount]; - // LinkedList competitors=new LinkedList<>(); - // for(int competitor=0;competitor 1) { int[] associationHigh = new int[groupCount - 1]; flightColumn[0][0] = seed; contains[seed] = true; - // competitors.remove((Integer)seed); int[] sumsOf3rdDemension = new int[competitorCount]; System.arraycopy(currentAssociations[seed], 0, sumsOf3rdDemension, 0, competitorCount); int[] maxValues = new int[competitorCount]; @@ -343,7 +338,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { for (int assignmentIndex = 1; assignmentIndex < (competitorCount / groupCount); assignmentIndex++) { int associationSum = Integer.MAX_VALUE; associationHigh[0] = Integer.MAX_VALUE; - // for(int competitorIndex:competitors) { for (int competitorIndex = 0; competitorIndex < competitorCount; competitorIndex++) { if (sumsOf3rdDemension[competitorIndex] <= associationSum && !contains[competitorIndex] && maxValues[competitorIndex] <= associationHigh[0]) { @@ -354,7 +348,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { } } contains[flightColumn[0][assignmentIndex]] = true; - // competitors.remove((Integer)flightColumn[0][assignmentIndex]); for (int competitor = 0; competitor < competitorCount; competitor++) { if (flightColumn[0][assignmentIndex] != competitor) { sumsOf3rdDemension[competitor] += currentAssociations[flightColumn[0][assignmentIndex]][competitor]; @@ -365,8 +358,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { } } for (int groupIndex = 1; groupIndex < groupCount - 1; groupIndex++) { - // flightColumn[groupIndex][0]=competitors.get(0); - // competitors.remove(0); for (int competitorIndex = 0; competitorIndex < competitorCount; competitorIndex++) { if (!contains[competitorIndex]) { flightColumn[groupIndex][0] = competitorIndex; @@ -383,7 +374,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { int associationSum = Integer.MAX_VALUE; associationHigh[groupIndex] = Integer.MAX_VALUE; - // for (int competitorIndex:competitors) { for (int competitorIndex = 0; competitorIndex < competitorCount; competitorIndex++) { if (sumsOf3rdDemension[competitorIndex] <= associationSum && !contains[competitorIndex] && maxValues[competitorIndex] <= associationHigh[groupIndex]) { @@ -392,7 +382,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { associationHigh[groupIndex] = maxValues[competitorIndex]; } } - // competitors.remove((Integer)flightColumn[groupIndex][assignmentIndex]); contains[flightColumn[groupIndex][assignmentIndex]] = true; for (int competitor = 0; competitor < competitorCount; competitor++) { if (flightColumn[groupIndex][assignmentIndex] != competitor) { @@ -405,16 +394,13 @@ public class PairingListTemplateImpl implements PairingListTemplate { } } } - // last Flight for (int assignmentIndex = 0; assignmentIndex < (competitorCount / groupCount); assignmentIndex++) { - // for (int competitorIndex:competitors) { for (int competitorIndex = 0; competitorIndex < competitorCount; competitorIndex++) { if (!contains[competitorIndex]) { flightColumn[groupCount - 1][assignmentIndex] = competitorIndex; } } contains[flightColumn[groupCount - 1][assignmentIndex]] = true; - // competitors.remove((Integer)flightColumn[groupCount - 1][assignmentIndex]); } return flightColumn; } @@ -563,7 +549,7 @@ public class PairingListTemplateImpl implements PairingListTemplate { * @return the improved pairingListTemplate */ private int[][] improveAssignmentChanges(int[][] pairingList, int flights, int competitors) { - int boatChanges[] = new int[flights-1]; + int boatChanges[] = new int[flights - 1]; for (int i = 1; i < flights; i++) { int[] groupPrev = pairingList[i * pairingList.length / flights - 1]; @@ -584,9 +570,10 @@ public class PairingListTemplateImpl implements PairingListTemplate { int[] temp = new int[pairingList[0].length]; System.arraycopy(pairingList[i * pairingList.length / flights], 0, temp, 0, temp.length); - System.arraycopy(pairingList[i * pairingList.length / flights+ bestMatchesIndex], 0, - pairingList[i * pairingList.length / flights ], 0, groupNext.length); - System.arraycopy(temp, 0, pairingList[i * pairingList.length / flights + bestMatchesIndex], 0, temp.length); + System.arraycopy(pairingList[i * pairingList.length / flights + bestMatchesIndex], 0, + pairingList[i * pairingList.length / flights], 0, groupNext.length); + System.arraycopy(temp, 0, pairingList[i * pairingList.length / flights + bestMatchesIndex], 0, + temp.length); } boatChanges[i - 1] = groupNext.length - bestMatch; @@ -597,7 +584,7 @@ public class PairingListTemplateImpl implements PairingListTemplate { private int getMatches(int[] arr1, int[] arr2) { int matches = 0; - for (int value: arr1) { + for (int value : arr1) { if (this.contains(arr2, value)) { matches++; } @@ -605,14 +592,15 @@ public class PairingListTemplateImpl implements PairingListTemplate { return matches; } - + private int[][] multiplyFlights(int[][] bestPLT, int flightCount, int groupCount, int competitorCount) { - int[][] result = new int[((flightCount*flightMultiplier) * groupCount)][competitorCount / groupCount]; - + int[][] result = new int[((flightCount * flightMultiplier) * groupCount)][competitorCount / groupCount]; + for (int flightIndex = 0; flightIndex < flightCount; flightIndex++) { for (int x = 0; x < flightMultiplier; x++) { for (int groupIndex = 0; groupIndex < groupCount; groupIndex++) { - result[(flightIndex * groupCount * (flightMultiplier) + groupIndex) + x * groupCount] = bestPLT[flightIndex * groupCount + groupIndex]; + result[(flightIndex * groupCount * (flightMultiplier) + groupIndex) + + x * groupCount] = bestPLT[flightIndex * groupCount + groupIndex]; } } } @@ -641,14 +629,6 @@ public class PairingListTemplateImpl implements PairingListTemplate { } return worstValuePos; } - - protected int[][][] copyInto3rdDimension(int competitors, int[][] currentAssociations, int[][][] associationRow, - int[][] flightColumn, int zGroups, int fleet) { - System.arraycopy(currentAssociations[flightColumn[fleet][zGroups - 1]], 0, associationRow[fleet][zGroups - 1], - 0, competitors); - return associationRow; - } - private boolean contains(int[] arr, int value) { for (int i = 0; i < arr.length; i++) { @@ -768,7 +748,11 @@ public class PairingListTemplateImpl implements PairingListTemplate { return standardDev; } - + /** + * This Method replaces the given number of dummy competitors with -1, so they are not longer valid and could not be read on client side. + * @param bestPLT actual pairinglist, which should be modified + * @return the modified pairinglist + */ private int[][] resetDummies(int[][] bestPLT, int competitorCount) { if (dummies > 0) { int[] dummyCompetitors = new int[dummies];