first untested version of a competitor edit dialog

This commit is contained in:
Axel Uhl committed 2013-11-05 08:57:02 +01:00
1 parent aa7f11d257
commit 82ce1980a9
9 files changed
+87 -21

No files matched your search

@@ -1,37 +1,63 @@
package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.CountryCode;
import com.sap.sailing.domain.common.CountryCodeFactory;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTOImpl;
import com.sap.sailing.gwt.ui.client.DataEntryDialog;
import com.sap.sailing.gwt.ui.client.StringMessages;
/**
* The competitors produced by this dialog will have a <code>null</code>
* {@link CompetitorDTO#getTwoLetterIsoCountryCode() twoLetterIsoCountryCode} and a <code>null</code>
* {@link CompetitorDTO#getCountryName() countryName} because all of these can be derived from a valid
* {@link CompetitorDTO#getThreeLetterIocCountryCode() threeLetterIocCountryCode}.
*
* @author Axel Uhl (d043530)
*
*/
public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
private final CompetitorDTO competitorToEdit;
private final TextBox name;
private final ListBox twoLetterIsoCountryCode;
private final ListBox threeLetterIocCountryCode;
private final TextBox sailId;
private final StringMessages stringMessages;
public CompetitorEditDialog(StringMessages stringMessages, CompetitorDTO competitorToEdit,
public CompetitorEditDialog(final StringMessages stringMessages, CompetitorDTO competitorToEdit,
DialogCallback<CompetitorDTO> callback) {
super(stringMessages.editCompetitor(), stringMessages.editCompetitor(), stringMessages.ok(), stringMessages
.cancel(), new Validator<CompetitorDTO>() {
@Override
public String getErrorMessage(CompetitorDTO valueToValidate) {
// TODO Auto-generated method stub
return null;
final String result;
if (valueToValidate.getName() == null || valueToValidate.getName().isEmpty()) {
result = stringMessages.pleaseEnterAName();
} else if (valueToValidate.getSailID() == null || valueToValidate.getSailID().isEmpty()) {
result = stringMessages.pleaseEnterASailNumber();
} else {
result = null;
}
return result;
}
}, /* animationEnabled */true, callback);
this.stringMessages = stringMessages;
this.competitorToEdit = competitorToEdit;
this.name = new TextBox();
this.name.setText(competitorToEdit.getName());
this.twoLetterIsoCountryCode = new ListBox();
this.twoLetterIsoCountryCode.addItem(competitorToEdit.getTwoLetterIsoCountryCode());
this.threeLetterIocCountryCode = new ListBox();
this.threeLetterIocCountryCode.addItem(competitorToEdit.getThreeLetterIocCountryCode());
CountryCodeFactory ccf = CountryCodeFactory.INSTANCE;
int i=0;
for (CountryCode cc : ccf.getAll()) {
this.threeLetterIocCountryCode.addItem(cc.getThreeLetterIOCCode()+" "+cc.getName(), cc.getThreeLetterIOCCode());
if (cc.getThreeLetterIOCCode().equals(competitorToEdit.getThreeLetterIocCountryCode())) {
this.threeLetterIocCountryCode.setSelectedIndex(i);
}
}
this.sailId = new TextBox();
this.sailId.setText(competitorToEdit.getSailID());
}
@@ -39,7 +65,7 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
@Override
protected CompetitorDTO getResult() {
CompetitorDTO result = new CompetitorDTOImpl(name.getText(),
twoLetterIsoCountryCode.getValue(twoLetterIsoCountryCode.getSelectedIndex()),
/* twoLetterIsoCountryCode */ null,
threeLetterIocCountryCode.getValue(threeLetterIocCountryCode.getSelectedIndex()),
/* countryName */null, sailId.getText(), competitorToEdit.getIdAsString(),
competitorToEdit.getBoatClass());
@@ -48,8 +74,14 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
@Override
protected Widget getAdditionalWidget() {
// TODO Auto-generated method stub
return super.getAdditionalWidget();
Grid result = new Grid(3, 2);
result.setWidget(0, 0, new Label(stringMessages.name()));
result.setWidget(0, 1, name);
result.setWidget(1, 0, new Label(stringMessages.sailNumber()));
result.setWidget(1, 1, sailId);
result.setWidget(2, 0, new Label(stringMessages.nationality()));
result.setWidget(2, 1, threeLetterIocCountryCode);
return result;
}
}
@@ -51,7 +51,7 @@ public class CompetitorPanel extends SimplePanel {
private CellTable<CompetitorDTO> competitorTable;
private MultiSelectionModel<CompetitorDTO> competitorSelectionModel;
private ListDataProvider<CompetitorDTO> competitorProvider;
private Iterable<CompetitorDTO> allCompetitors;
private List<CompetitorDTO> allCompetitors;
private Button removeCompetitorsButton;
private TextBox filterField;
private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
@@ -202,12 +202,28 @@ public class CompetitorPanel extends SimplePanel {
new CompetitorEditDialog(stringMessages, competitor, new DialogCallback<CompetitorDTO>() {
@Override
public void ok(CompetitorDTO competitor) {
// sailingService.updateCompetitor(competitor);
sailingService.updateCompetitor(competitor, new AsyncCallback<CompetitorDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to update competitor: "+caught.getMessage());
}
@Override
public void onSuccess(CompetitorDTO updatedCompetitor) {
// replace updated competitor in competitor list
for (int i=0; i<allCompetitors.size(); i++) {
if (allCompetitors.get(i).getIdAsString().equals(updatedCompetitor.getIdAsString())) {
allCompetitors.set(i, updatedCompetitor);
applyFilter();
break;
}
}
}
});
}
@Override
public void cancel() {
// TODO Auto-generated method stub
}
}).show();
}
@@ -236,7 +252,10 @@ public class CompetitorPanel extends SimplePanel {
@Override
public void onSuccess(Iterable<CompetitorDTO> result) {
allCompetitors = result;
allCompetitors = new ArrayList<CompetitorDTO>();
for (CompetitorDTO c : result) {
allCompetitors.add(c);
}
applyFilter();
}
});
@@ -328,4 +328,6 @@ public interface SailingService extends RemoteService {
Iterable<CompetitorDTO> getCompetitors();
void removeCompetitors(Iterable<CompetitorDTO> competitorsToRemove);
CompetitorDTO updateCompetitor(CompetitorDTO competitor);
}
@@ -450,6 +450,8 @@ public interface SailingServiceAsync {
void getCompetitors(AsyncCallback<Iterable<CompetitorDTO>> asyncCallback);
void removeCompetitors(Iterable<CompetitorDTO> competitorsToRemove, AsyncCallback<Void> callback);
void updateCompetitor(CompetitorDTO competitor, AsyncCallback<CompetitorDTO> asyncCallback);
}
@@ -825,4 +825,5 @@ public interface StringMessages extends Messages {
String doYouReallyWantToRemoveCompetitor(String name);
String filterCompetitors();
String editCompetitor();
String pleaseEnterASailNumber();
}
@@ -817,4 +817,5 @@ doYouReallyWantToRemoveEvent=Do you really want to remove event {0}?
doYouReallyWantToRemoveCompetitors=Do you really want to remove the selected competitors?
doYouReallyWantToRemoveCompetitor=Do you really want to remove competitor {0}?
filterCompetitors=Filter competitors by name, boat class or sail number
editCompetitor=Edit Competitor
editCompetitor=Edit Competitor
pleaseEnterASailNumber=Please enter a sail number
@@ -813,4 +813,5 @@ doYouReallyWantToRemoveEvent=Möchten Sie wirklich die Veranstaltung {0} entfern
doYouReallyWantToRemoveCompetitors=Möchten Sie wirlich die ausgewählten Teilnehmer entfernen?
doYouReallyWantToRemoveCompetitor=Möchten Sie wirklicn den Teilnehmer {0} entfernen?
filterCompetitors=Filtere Teilnehmer nach Name, Bootsklasse oder Segelnummer
editCompetitor=Teilnehmer bearbeiten
editCompetitor=Teilnehmer bearbeiten
pleaseEnterASailNumber=Bitte Segelnummer eingeben
@@ -273,6 +273,7 @@ import com.sap.sailing.server.operationaltransformation.SetSuppressedFlagForComp
import com.sap.sailing.server.operationaltransformation.SetWindSourcesToExclude;
import com.sap.sailing.server.operationaltransformation.StopTrackingRace;
import com.sap.sailing.server.operationaltransformation.StopTrackingRegatta;
import com.sap.sailing.server.operationaltransformation.UpdateCompetitor;
import com.sap.sailing.server.operationaltransformation.UpdateCompetitorDisplayNameInLeaderboard;
import com.sap.sailing.server.operationaltransformation.UpdateEvent;
import com.sap.sailing.server.operationaltransformation.UpdateIsMedalRace;
@@ -3273,4 +3274,11 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
getService().apply(new RemoveCompetitors(competitorsToRemove));
}
@Override
public CompetitorDTO updateCompetitor(CompetitorDTO competitor) {
return getBaseDomainFactory().convertToCompetitorDTO(
getService().apply(new UpdateCompetitor(competitor.getIdAsString(), competitor.getName(),
competitor.getSailID(), getBaseDomainFactory().getOrCreateNationality(competitor.getThreeLetterIocCountryCode()))));
}
}
@@ -2,11 +2,12 @@ package com.sap.sailing.server.operationaltransformation;
import java.io.Serializable;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Void> {
public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Competitor> {
private static final long serialVersionUID = 1172181354320184263L;
private final Serializable id;
private final String newName;
@@ -22,9 +23,8 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Void>
}
@Override
public Void internalApplyTo(RacingEventService toState) throws Exception {
toState.getBaseDomainFactory().getCompetitorStore().updateCompetitor(id, newName, newSailId, newNationality);
return null;
public Competitor internalApplyTo(RacingEventService toState) throws Exception {
return toState.getBaseDomainFactory().getCompetitorStore().updateCompetitor(id, newName, newSailId, newNationality);
}
@Override