diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorStore.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorStore.java index f1460a4dd56..e35512de261 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorStore.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/CompetitorStore.java @@ -69,7 +69,12 @@ public interface CompetitorStore extends CompetitorFactory, BoatFactory { * Obtains a non-live snapshot of the list of competitors managed by this store. */ Iterable getCompetitors(); - + + /** + * Obtains a non-live snapshot of the list of competitors with a assigned boat. + */ + Iterable getCompetitorsWithBoat(); + void removeCompetitor(Competitor competitor); /** diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/TransientCompetitorStoreImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/TransientCompetitorStoreImpl.java index 77ed8add9b4..9959cf051e9 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/TransientCompetitorStoreImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/base/impl/TransientCompetitorStoreImpl.java @@ -252,6 +252,22 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab } } + @Override + public Iterable getCompetitorsWithBoat() { + LockUtil.lockForRead(lock); + try { + List competitors = new ArrayList<>(); + for (Competitor c: competitorCache.values()) { + if (c instanceof CompetitorWithBoat) { + competitors.add((CompetitorWithBoat) c); + } + } + return competitors; + } finally { + LockUtil.unlockAfterRead(lock); + } + } + @Override public void removeCompetitor(Competitor competitor) { LockUtil.lockForWrite(lock); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorImportProviderSelectionDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorImportProviderSelectionDialog.java index ab7392da5f0..ddc457f8fb0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorImportProviderSelectionDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorImportProviderSelectionDialog.java @@ -222,7 +222,7 @@ public class CompetitorImportProviderSelectionDialog extends DataEntryDialog(getCompetitorDescriptorsCallback)); - sailingService.getCompetitors(new MarkedAsyncCallback<>(getCompetitorsCallback)); + sailingService.getCompetitors(false, new MarkedAsyncCallback<>(getCompetitorsCallback)); } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java index eceff3b9244..a037ba99b4b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorPanel.java @@ -45,7 +45,7 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay { final StringMessages stringMessages, final ErrorReporter errorReporter) { super(); this.leaderboardName = leaderboardName; - this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true); + this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true, /* showOnlyCompetitorsWithBoat */ false); this.refreshableCompetitorSelectionModel = (RefreshableMultiSelectionModel) competitorTable.getSelectionModel(); busyIndicator = new SimpleBusyIndicator(false, 0.8f); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorRegistrationsPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorRegistrationsPanel.java index ea9435a1bb1..1a9f6bf1b1c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorRegistrationsPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorRegistrationsPanel.java @@ -140,9 +140,9 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl final CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool()); final CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors()); allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ - true, /* enablePager */true); + true, /* enablePager */true, canBoatsOfCompetitorsChangePerRace); registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ - true, /* enablePager */false); + true, /* enablePager */false, !canBoatsOfCompetitorsChangePerRace); allCompetitorsPanel.add(allCompetitorsTable); registeredCompetitorsPanel.add(registeredCompetitorsTable); VerticalPanel movePanel = new VerticalPanel(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java index 668d4a0ec5b..816e332fc18 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/CompetitorTableWrapper.java @@ -50,9 +50,10 @@ import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel; */ public class CompetitorTableWrapper> extends TableWrapper { private final LabeledAbstractFilterablePanel filterField; + private final boolean showOnlyCompetitorsWithBoat; public CompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, - boolean multiSelection, boolean enablePager) { + boolean multiSelection, boolean enablePager, boolean showOnlyCompetitorsWithBoat) { super(sailingService, stringMessages, errorReporter, multiSelection, enablePager, new EntityIdentityComparator() { @Override @@ -64,6 +65,7 @@ public class CompetitorTableWrapper competitorColumnListHandler = getColumnSortHandler(); // competitors table @@ -370,7 +372,7 @@ public class CompetitorTableWrapper(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true); + competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, /* showOnlyCompetitorsWithBoat */ false); markTable = new MarkTableWrapper>(/* multiSelection */ false, sailingService, stringMessages, errorReporter); final SingleSelectionModel markSelectionModel = markTable.getSelectionModel(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MatchImportedCompetitorsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MatchImportedCompetitorsDialog.java index 0a35dd94399..727d2fcb22f 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MatchImportedCompetitorsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/MatchImportedCompetitorsDialog.java @@ -91,7 +91,7 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog(sailingService, stringMessages, errorReporter, /* multiSelection */ - false, /* enablePager */true); + false, /* enablePager */true, /* showOnlyCompetitorsWithBoat */ false); final CompetitorsToImportToExistingLinking linker = new CompetitorsToImportToExistingLinking() { @Override public void unlinkCompetitor(CompetitorDescriptor competitor) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java index 601aade96e7..757ccb4db96 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportFixesAndAddMappingsDialog.java @@ -65,7 +65,7 @@ public class RegattaLogImportFixesAndAddMappingsDialog extends DataEntryDialog(sailingService, stringMessages, errorReporter, /* multiSelection */ - false, true); + false, true, /* showOnlyCompetitorsWithBoat */ false); markTable = new MarkTableWrapper>( /* multiSelection */false, sailingService, stringMessages, errorReporter); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportSensorDataAndAddMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportSensorDataAndAddMappingsDialog.java index 102e2067b89..c7c192f60be 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportSensorDataAndAddMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RegattaLogImportSensorDataAndAddMappingsDialog.java @@ -54,7 +54,7 @@ public class RegattaLogImportSensorDataAndAddMappingsDialog extends DataEntryDia } }); competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ - false, true); + false, true, /* showOnlyCompetitorsWithBoat */ false); competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 2e6aec539f3..4a8139be5df 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -433,7 +433,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS DataImportProgress getImportOperationProgress(UUID id); - Iterable getCompetitors(); + Iterable getCompetitors(boolean onlyCompetitorsWithBoat); Iterable getCompetitorsOfLeaderboard(String leaderboardName); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index f2c49e38c7b..a3a329ab649 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -589,7 +589,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void getLeaderboardGroupNamesFromRemoteServer(String host, AsyncCallback> leaderboardGroupNames); - void getCompetitors(AsyncCallback> asyncCallback); + void getCompetitors(boolean onlyCompetitorsWithBoat, AsyncCallback> asyncCallback); void getCompetitorsOfLeaderboard(String leaderboardName, AsyncCallback> asyncCallback); 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 2d2d63d2b85..4bb02e9e599 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 @@ -4833,8 +4833,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public Iterable getCompetitors() { - return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitors()); + public Iterable getCompetitors(boolean onlyCompetitorsWithBoat) { + if (onlyCompetitorsWithBoat) { + return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitors()); + } else { + return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitorsWithBoat()); + } } @Override