Added an option to the CompetitorTableWrapper to show only competitors with an already assigned boat

This commit is contained in:
Frank Mittag committed 2017-11-14 17:45:13 +01:00
1 parent fe35196670
commit 8e2cb8fb29
13 files changed
+42 -15

No files matched your search

@@ -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<? extends Competitor> getCompetitors();
/**
* Obtains a non-live snapshot of the list of competitors with a assigned boat.
*/
Iterable<CompetitorWithBoat> getCompetitorsWithBoat();
void removeCompetitor(Competitor competitor);
/**
@@ -252,6 +252,22 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
}
}
@Override
public Iterable<CompetitorWithBoat> getCompetitorsWithBoat() {
LockUtil.lockForRead(lock);
try {
List<CompetitorWithBoat> 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);
@@ -222,7 +222,7 @@ public class CompetitorImportProviderSelectionDialog extends DataEntryDialog<Com
};
// trigger both calls, allowing for parallel execution, synchronizing with the parallel execution holder above:
sailingService.getCompetitorDescriptors(competitorProviderName, eventName, regattaName, new MarkedAsyncCallback<>(getCompetitorDescriptorsCallback));
sailingService.getCompetitors(new MarkedAsyncCallback<>(getCompetitorsCallback));
sailingService.getCompetitors(false, new MarkedAsyncCallback<>(getCompetitorsCallback));
}
}
}
@@ -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<CompetitorDTO>) competitorTable.getSelectionModel();
busyIndicator = new SimpleBusyIndicator(false, 0.8f);
@@ -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();
@@ -50,9 +50,10 @@ import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
*/
public class CompetitorTableWrapper<S extends RefreshableSelectionModel<CompetitorDTO>> extends TableWrapper<CompetitorDTO, S> {
private final LabeledAbstractFilterablePanel<CompetitorDTO> 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<CompetitorDTO>() {
@Override
@@ -64,6 +65,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
return t.getIdAsString().hashCode();
}
});
this.showOnlyCompetitorsWithBoat = showOnlyCompetitorsWithBoat;
ListHandler<CompetitorDTO> competitorColumnListHandler = getColumnSortHandler();
// competitors table
@@ -370,7 +372,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
if (leaderboardName != null) {
sailingService.getCompetitorsOfLeaderboard(leaderboardName, myCallback);
} else {
sailingService.getCompetitors(myCallback);
sailingService.getCompetitors(showOnlyCompetitorsWithBoat, myCallback);
}
}
@@ -34,7 +34,7 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
ErrorReporter errorReporter, final SelectionChangedHandler handler, MappableToDevice selected) {
this.selected = selected;
this.errorReporter = errorReporter;
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, /* showOnlyCompetitorsWithBoat */ false);
markTable = new MarkTableWrapper<RefreshableSingleSelectionModel<MarkDTO>>(/* multiSelection */ false, sailingService,
stringMessages, errorReporter);
final SingleSelectionModel<MarkDTO> markSelectionModel = markTable.getSelectionModel();
@@ -91,7 +91,7 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<Com
protected Widget getAdditionalWidget() {
existingCompetitorsTable = new CompetitorTableWrapper<>(sailingService, stringMessages,
errorReporter, /* multiSelection */
false, /* enablePager */true);
false, /* enablePager */true, /* showOnlyCompetitorsWithBoat */ false);
final CompetitorsToImportToExistingLinking linker = new CompetitorsToImportToExistingLinking() {
@Override
public void unlinkCompetitor(CompetitorDescriptor competitor) {
@@ -65,7 +65,7 @@ public class RegattaLogImportFixesAndAddMappingsDialog extends DataEntryDialog<C
}
});
competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */
false, true);
false, true, /* showOnlyCompetitorsWithBoat */ false);
markTable = new MarkTableWrapper<RefreshableSingleSelectionModel<MarkDTO>>(
/* multiSelection */false, sailingService, stringMessages, errorReporter);
@@ -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
@@ -433,7 +433,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
DataImportProgress getImportOperationProgress(UUID id);
Iterable<CompetitorDTO> getCompetitors();
Iterable<CompetitorDTO> getCompetitors(boolean onlyCompetitorsWithBoat);
Iterable<CompetitorDTO> getCompetitorsOfLeaderboard(String leaderboardName);
@@ -589,7 +589,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void getLeaderboardGroupNamesFromRemoteServer(String host, AsyncCallback<List<String>> leaderboardGroupNames);
void getCompetitors(AsyncCallback<Iterable<CompetitorDTO>> asyncCallback);
void getCompetitors(boolean onlyCompetitorsWithBoat, AsyncCallback<Iterable<CompetitorDTO>> asyncCallback);
void getCompetitorsOfLeaderboard(String leaderboardName, AsyncCallback<Iterable<CompetitorDTO>> asyncCallback);
@@ -4833,8 +4833,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public Iterable<CompetitorDTO> getCompetitors() {
return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitors());
public Iterable<CompetitorDTO> getCompetitors(boolean onlyCompetitorsWithBoat) {
if (onlyCompetitorsWithBoat) {
return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitors());
} else {
return convertToCompetitorDTOs(getService().getBaseDomainFactory().getCompetitorStore().getCompetitorsWithBoat());
}
}
@Override