mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 09:26:44 +00:00
allow resetting many competitors at once
This commit is contained in:
+36
-8
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -18,6 +19,7 @@ import com.google.gwt.user.cellview.client.CellTable;
|
||||
import com.google.gwt.user.cellview.client.Column;
|
||||
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
|
||||
import com.google.gwt.user.cellview.client.TextColumn;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.HorizontalPanel;
|
||||
@@ -28,7 +30,10 @@ import com.google.gwt.user.client.ui.TextBox;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
import com.google.gwt.view.client.ListDataProvider;
|
||||
import com.google.gwt.view.client.MultiSelectionModel;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent;
|
||||
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.gwt.ui.client.DataEntryDialog.DialogCallback;
|
||||
import com.sap.sailing.gwt.ui.client.ErrorReporter;
|
||||
import com.sap.sailing.gwt.ui.client.FlagImageResolver;
|
||||
@@ -76,6 +81,14 @@ public class CompetitorPanel extends SimplePanel {
|
||||
}
|
||||
});
|
||||
buttonPanel.add(refreshButton);
|
||||
final Button allowReloadButton = new Button(stringMessages.allowReload());
|
||||
allowReloadButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
allowUpdate(competitorSelectionModel.getSelectedSet());
|
||||
}
|
||||
});
|
||||
buttonPanel.add(allowReloadButton);
|
||||
competitorsPanel.add(buttonPanel);
|
||||
|
||||
// sailing events table
|
||||
@@ -143,15 +156,10 @@ public class CompetitorPanel extends SimplePanel {
|
||||
if (CompetitorConfigImagesBarCell.ACTION_EDIT.equals(value)) {
|
||||
openEditCompetitorDialog(competitor);
|
||||
} else if (CompetitorConfigImagesBarCell.ACTION_REFRESH.equals(value)) {
|
||||
sailingService.allowCompetitorResetToDefaults(competitor, new AsyncCallback<Void>() {
|
||||
@Override public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to allow resetting competitor "+competitor.getName()
|
||||
+" to defaults: "+caught.getMessage());
|
||||
}
|
||||
@Override public void onSuccess(Void result) {}
|
||||
});
|
||||
allowUpdate(Collections.singleton(competitor));
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
HorizontalPanel filterBoxWithLabel = new HorizontalPanel();
|
||||
@@ -176,9 +184,29 @@ public class CompetitorPanel extends SimplePanel {
|
||||
competitorSelectionModel = new MultiSelectionModel<CompetitorDTO>();
|
||||
competitorTable.setSelectionModel(competitorSelectionModel);
|
||||
mainPanel.add(competitorTable);
|
||||
|
||||
competitorSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
allowReloadButton.setEnabled(!competitorSelectionModel.getSelectedSet().isEmpty());
|
||||
}
|
||||
});
|
||||
allowReloadButton.setEnabled(!competitorSelectionModel.getSelectedSet().isEmpty());
|
||||
}
|
||||
|
||||
private void allowUpdate(final Iterable<CompetitorDTO> competitors) {
|
||||
List<CompetitorDTO> serializableSingletonList = new ArrayList<CompetitorDTO>();
|
||||
Util.addAll(competitors, serializableSingletonList);
|
||||
sailingService.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
|
||||
@Override public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Error trying to allow resetting competitors "+competitors
|
||||
+" to defaults: "+caught.getMessage());
|
||||
}
|
||||
@Override public void onSuccess(Void result) {
|
||||
Window.alert(stringMessages.successfullyAllowedCompetitorReset(competitors.toString()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void openEditCompetitorDialog(CompetitorDTO competitor) {
|
||||
new CompetitorEditDialog(stringMessages, competitor, new DialogCallback<CompetitorDTO>() {
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -329,5 +329,5 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
CompetitorDTO updateCompetitor(CompetitorDTO competitor);
|
||||
|
||||
void allowCompetitorResetToDefaults(CompetitorDTO competitor);
|
||||
void allowCompetitorResetToDefaults(Iterable<CompetitorDTO> competitors);
|
||||
}
|
||||
|
||||
+1
-1
@@ -451,7 +451,7 @@ public interface SailingServiceAsync {
|
||||
|
||||
void updateCompetitor(CompetitorDTO competitor, AsyncCallback<CompetitorDTO> asyncCallback);
|
||||
|
||||
void allowCompetitorResetToDefaults(CompetitorDTO competitor, AsyncCallback<Void> asyncCallback);
|
||||
void allowCompetitorResetToDefaults(Iterable<CompetitorDTO> competitors, AsyncCallback<Void> asyncCallback);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -826,4 +826,6 @@ public interface StringMessages extends Messages {
|
||||
String filterCompetitors();
|
||||
String editCompetitor();
|
||||
String pleaseEnterASailNumber();
|
||||
String successfullyAllowedCompetitorReset(String names);
|
||||
String allowReload();
|
||||
}
|
||||
|
||||
+3
-1
@@ -818,4 +818,6 @@ doYouReallyWantToRemoveCompetitors=Do you really want to remove the selected com
|
||||
doYouReallyWantToRemoveCompetitor=Do you really want to remove competitor {0}?
|
||||
filterCompetitors=Filter competitors by name, boat class or sail number
|
||||
editCompetitor=Edit Competitor
|
||||
pleaseEnterASailNumber=Please enter a sail number
|
||||
pleaseEnterASailNumber=Please enter a sail number
|
||||
successfullyAllowedCompetitorReset=Successfully allowed reload of competitor(s) {0}.
|
||||
allowReload=Allow reload
|
||||
+3
-1
@@ -814,4 +814,6 @@ doYouReallyWantToRemoveCompetitors=Möchten Sie wirlich die ausgewählten Teilne
|
||||
doYouReallyWantToRemoveCompetitor=Möchten Sie wirklicn den Teilnehmer {0} entfernen?
|
||||
filterCompetitors=Filtere Teilnehmer nach Name, Bootsklasse oder Segelnummer
|
||||
editCompetitor=Teilnehmer bearbeiten
|
||||
pleaseEnterASailNumber=Bitte Segelnummer eingeben
|
||||
pleaseEnterASailNumber=Bitte Segelnummer eingeben
|
||||
successfullyAllowedCompetitorReset=Aktualisierung der Daten zu Teilnehmer(n) {0} erfolgreich ermöglicht.
|
||||
allowReload=Aktualisierung ermöglichen
|
||||
+6
-2
@@ -3274,8 +3274,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allowCompetitorResetToDefaults(CompetitorDTO competitor) {
|
||||
getService().apply(new AllowCompetitorResetToDefaults(competitor.getIdAsString()));
|
||||
public void allowCompetitorResetToDefaults(Iterable<CompetitorDTO> competitors) {
|
||||
List<String> competitorIdsAsStrings = new ArrayList<String>();
|
||||
for (CompetitorDTO competitor : competitors) {
|
||||
competitorIdsAsStrings.add(competitor.getIdAsString());
|
||||
}
|
||||
getService().apply(new AllowCompetitorResetToDefaults(competitorIdsAsStrings));
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -106,7 +106,7 @@ public class CompetitorReplicationTest extends AbstractServerReplicationTest {
|
||||
assertEquals(newCompetitorName, replicatedCompetitor.getName()); // expect in-place update of existing competitor in replica
|
||||
|
||||
// now allow for resetting to default through some event, such as receiving a GPS position
|
||||
master.apply(new AllowCompetitorResetToDefaults(competitor.getId().toString()));
|
||||
master.apply(new AllowCompetitorResetToDefaults(Collections.singleton(competitor.getId().toString())));
|
||||
// modify the competitor on the master "from below" without an UpdateCompetitor operation, only locally:
|
||||
master.getBaseDomainFactory().getCompetitorStore().updateCompetitor(competitor.getId().toString(), competitorName,
|
||||
competitor.getBoat().getSailID(), competitor.getTeam().getNationality());
|
||||
|
||||
+13
-6
@@ -1,25 +1,32 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
import com.sap.sailing.domain.common.impl.Util;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class AllowCompetitorResetToDefaults extends AbstractRacingEventServiceOperation<Void> {
|
||||
private static final long serialVersionUID = 5133140671156755328L;
|
||||
private final String competitorIdAsString;
|
||||
private final Iterable<String> competitorIdsAsStrings;
|
||||
|
||||
public AllowCompetitorResetToDefaults(String competitorIdAsString) {
|
||||
public AllowCompetitorResetToDefaults(Iterable<String> competitorIdsAsStrings) {
|
||||
super();
|
||||
this.competitorIdAsString = competitorIdAsString;
|
||||
final ArrayList<String> arrayList = new ArrayList<>(); // to guarantee serializability, even if an unmodifiable or singleton is passed
|
||||
this.competitorIdsAsStrings = arrayList;
|
||||
Util.addAll(competitorIdsAsStrings, arrayList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
final CompetitorStore competitorStore = toState.getBaseDomainFactory().getCompetitorStore();
|
||||
Competitor competitor = competitorStore.getExistingCompetitorByIdAsString(competitorIdAsString);
|
||||
if (competitor != null) {
|
||||
competitorStore.allowCompetitorResetToDefaults(competitor);
|
||||
for (String competitorIdAsString : competitorIdsAsStrings) {
|
||||
Competitor competitor = competitorStore.getExistingCompetitorByIdAsString(competitorIdAsString);
|
||||
if (competitor != null) {
|
||||
competitorStore.allowCompetitorResetToDefaults(competitor);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user