fixed validation of race column add dialog

This commit is contained in:
Axel Uhl committed 2013-03-04 13:18:17 +01:00
1 parent c2f92087d1
commit dec37d6572
3 files changed
+20 -32

No files matched your search

@@ -4,8 +4,10 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.cell.client.FieldUpdater;
@@ -745,7 +747,8 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
final boolean oldIsMedalRace = raceColumnWithFleet.getA().isMedalRace();
final String oldRaceColumnName = raceColumnWithFleet.getA().getRaceColumnName();
final Double oldExplicitFactor = raceColumnWithFleet.getA().getExplicitFactor();
List<RaceColumnDTO> existingRacesWithoutThisRace = new ArrayList<RaceColumnDTO>();
// use a set to avoid duplicates in the case of regatta leaderboards with multiple fleets per column
Set<RaceColumnDTO> existingRacesWithoutThisRace = new HashSet<RaceColumnDTO>();
for (Pair<RaceColumnDTO, FleetDTO> pair : raceColumnAndFleetList.getList()) {
existingRacesWithoutThisRace.add(pair.getA());
}
@@ -822,10 +825,9 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
private void addRaceColumnsToLeaderboard() {
final String leaderboardName = getSelectedLeaderboardName();
final List<RaceColumnDTO> existingRaceColumns = new ArrayList<RaceColumnDTO>();
for(Pair<RaceColumnDTO, FleetDTO> pair: raceColumnAndFleetList.getList()) {
for (Pair<RaceColumnDTO, FleetDTO> pair : raceColumnAndFleetList.getList()) {
existingRaceColumns.add(pair.getA());
}
final RaceColumnsInLeaderboardDialog raceDialog = new RaceColumnsInLeaderboardDialog(existingRaceColumns,
stringMessages, new DialogCallback<List<RaceColumnDTO>>() {
@Override
@@ -1,7 +1,5 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.List;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.DoubleBox;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
@@ -58,12 +56,11 @@ public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnInL
}
private static class RaceDialogValidator implements Validator<RaceColumnDescriptor> {
private final StringMessages stringMessages;
private final Iterable<RaceColumnDTO> existingRaces;
private StringMessages stringConstants;
private List<RaceColumnDTO> existingRaces;
public RaceDialogValidator(StringMessages stringConstants, List<RaceColumnDTO> existingRaceColumnsAndFleetNames) {
this.stringConstants = stringConstants;
public RaceDialogValidator(StringMessages stringConstants, Iterable<RaceColumnDTO> existingRaceColumnsAndFleetNames) {
this.stringMessages = stringConstants;
this.existingRaces = existingRaceColumnsAndFleetNames;
}
@@ -83,11 +80,11 @@ public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnInL
}
if (!isNameNotEmpty) {
errorMessage = stringConstants.pleaseEnterAName();
errorMessage = stringMessages.pleaseEnterAName();
} else if (!medalRaceNotNull) {
errorMessage = stringConstants.medalRaceIsNull();
errorMessage = stringMessages.medalRaceIsNull();
} else if (!unique) {
errorMessage = stringConstants.raceWithThisNameAlreadyExists();
errorMessage = stringMessages.raceWithThisNameAlreadyExists();
} else {
return errorMessage = null;
}
@@ -95,7 +92,7 @@ public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnInL
}
}
public RaceColumnInLeaderboardDialog(List<RaceColumnDTO> existingRaces, RaceColumnDTO raceColumnToEdit,
public RaceColumnInLeaderboardDialog(Iterable<RaceColumnDTO> existingRaces, RaceColumnDTO raceColumnToEdit,
boolean isRegattaLeaderboard, StringMessages stringMessages, DialogCallback<RaceColumnDescriptor> callback) {
super(stringMessages.actionRaceEdit(), null, stringMessages.ok(), stringMessages.cancel(),
new RaceDialogValidator(stringMessages, existingRaces), callback);
@@ -41,36 +41,26 @@ public class RaceColumnsInLeaderboardDialog extends DataEntryDialog<List<RaceCol
@Override
public String getErrorMessage(List<RaceColumnDTO> raceColumnsWithFleetToValidate) {
String errorMessage = null;
List<RaceColumnDTO> raceColumnsToValidate = new ArrayList<RaceColumnDTO>();
for (RaceColumnDTO raceColumnDTO : raceColumnsToValidate) {
raceColumnsToValidate.add(raceColumnDTO);
}
if(errorMessage == null) {
if (errorMessage == null) {
int index = 0;
boolean raceColumnNameNotEmpty = true;
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
for (RaceColumnDTO raceColumn : raceColumnsWithFleetToValidate) {
raceColumnNameNotEmpty = raceColumn.name != null && raceColumn.name.length() > 0;
if (!raceColumnNameNotEmpty) {
break;
}
index++;
}
int index2 = 0;
boolean raceColumnUnique = true;
HashSet<String> setToFindDuplicates = new HashSet<String>();
for (RaceColumnDTO raceColumn : raceColumnsToValidate) {
for (RaceColumnDTO raceColumn : raceColumnsWithFleetToValidate) {
if (!setToFindDuplicates.add(raceColumn.name)) {
raceColumnUnique = false;
break;
}
index2++;
}
if (!raceColumnNameNotEmpty) {
errorMessage = stringConstants.race() + " " + (index + 1) + ": "
+ stringConstants.pleaseEnterAName();
@@ -85,12 +75,12 @@ public class RaceColumnsInLeaderboardDialog extends DataEntryDialog<List<RaceCol
}
public RaceColumnsInLeaderboardDialog(List<RaceColumnDTO> existingRaces, StringMessages stringConstants,
public RaceColumnsInLeaderboardDialog(List<RaceColumnDTO> existingRaces, StringMessages stringMessages,
DialogCallback<List<RaceColumnDTO>> callback) {
super(stringConstants.actionAddRaces(), null, stringConstants.ok(), stringConstants.cancel(),
new RaceDialogValidator(stringConstants), callback);
super(stringMessages.actionAddRaces(), null, stringMessages.ok(), stringMessages.cancel(),
new RaceDialogValidator(stringMessages), callback);
this.existingRaces = existingRaces;
this.stringMessages = stringConstants;
this.stringMessages = stringMessages;
addRacesListBox = createListBox(false);
raceNamePrefixTextBox = createTextBox(null);
raceNameEntryFields = new ArrayList<TextBox>();
@@ -195,7 +185,6 @@ public class RaceColumnsInLeaderboardDialog extends DataEntryDialog<List<RaceCol
} else {
raceColumnsGrid = new Grid(0, 0);
}
parentPanel.insert(raceColumnsGrid, widgetIndex);
}