From 5f9ff77495deffa5aababdd24b32929b25b08b60 Mon Sep 17 00:00:00 2001 From: Stsiapan_Tsybulski Date: Fri, 18 Nov 2016 16:42:31 +0300 Subject: [PATCH] Finding competitors from the same race column was improved. Code refactoring --- .../common/dto/CompetitorWithToolTipDTO.java | 9 ++- .../adminconsole/CompetitorTableWrapper.java | 2 +- .../RaceLogCompetitorRegistrationDialog.java | 75 +++++++++---------- ...martphoneTrackingEventManagementPanel.java | 1 + 4 files changed, 43 insertions(+), 44 deletions(-) diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/CompetitorWithToolTipDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/CompetitorWithToolTipDTO.java index 5b380b457ad..eee6392e054 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/CompetitorWithToolTipDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/CompetitorWithToolTipDTO.java @@ -34,12 +34,15 @@ public class CompetitorWithToolTipDTO { @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + if (getClass() != obj.getClass()) { return false; + } CompetitorWithToolTipDTO other = (CompetitorWithToolTipDTO) obj; return Objects.equals(competitor, other.getCompetitor()) && Objects.equals(toolTipMessage, other.getToolTipMessage()); 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 b66b4d42140..ff58f7598cb 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 @@ -383,7 +383,7 @@ public class CompetitorTableWrapper competitors) { table.addCellPreviewHandler(new CellPreviewEvent.Handler() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java index a6a415854ec..f5b6750b6a8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogCompetitorRegistrationDialog.java @@ -20,7 +20,6 @@ import com.sap.sailing.domain.common.dto.CompetitorWithToolTipDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.gwt.ui.client.SailingServiceAsync; import com.sap.sailing.gwt.ui.client.StringMessages; -import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; import com.sap.sse.gwt.client.ErrorReporter; import com.sap.sse.gwt.client.dialog.DataEntryDialog; @@ -89,72 +88,68 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis public RaceLogCompetitorRegistrationDialog(String boatClass, SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, boolean editable, String leaderboardName, - String raceColumnName, String fleetName, + String raceColumnName, String fleetName, List fleets, com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback> callback) { this(sailingService, stringMessages, errorReporter, editable, callback, leaderboardName, boatClass, - raceColumnName, fleetName, new Validator(stringMessages)); + raceColumnName, fleetName, fleets, new Validator(stringMessages)); } public RaceLogCompetitorRegistrationDialog(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter, boolean editable, com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback> callback, - String leaderboardName, String boatClass, String raceColumnName, String fleetName, Validator validator) { + String leaderboardName, String boatClass, String raceColumnName, String fleetName, List fleets, Validator validator) { super(sailingService, stringMessages, errorReporter, editable, callback, leaderboardName, boatClass, validator); this.raceColumnName = raceColumnName; this.fleetName = fleetName; fleetNameWithCompetitors = new HashMap<>(); - findCompetitorsFromTheSameRaceColumn(); + findCompetitorsFromTheSameRaceColumn(fleets); competitorRegistrationInRaceLogCheckBox = new CheckBox(stringMessages.registerCompetitorsOnRace()); validator.setCompetitorRegistrationInRaceLogCheckBox(competitorRegistrationInRaceLogCheckBox); validator.setFleetWithCompetitors(fleetNameWithCompetitors); setupCompetitorRegistationsOnRaceCheckbox(); } - private void findCompetitorsFromTheSameRaceColumn() { + /** + * Finds the competitors from the fleets of the same race column and puts them to the map + */ + private void findCompetitorsFromTheSameRaceColumn(final List fleets) { fleetNameWithCompetitors.clear(); - sailingService.getLeaderboard(leaderboardName, new AsyncCallback() { - @Override - public void onSuccess(StrippedLeaderboardDTO result) { - final List fleets = result.getRaceColumnByName(raceColumnName).getFleets(); - for (FleetDTO fleetDTO : fleets) { - final String curFleetName = fleetDTO.getName(); - if (!curFleetName.equals(fleetName)) { - sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName, - curFleetName, new AsyncCallback>() { - - @Override - public void onSuccess(Collection result) { - fleetNameWithCompetitors.put(curFleetName, new HashSet<>(result)); - //if the data was gained completely then gray out specific rows - if (fleetNameWithCompetitors.size() == fleets.size() - 1) { - grayOutRows(); - } - } - - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load already registered competitors: " - + caught.getMessage()); - } - }); - } - } - } + for (FleetDTO fleetDTO : fleets) { + final String curFleetName = fleetDTO.getName(); + if (!curFleetName.equals(fleetName)) { + sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName, curFleetName, + new AsyncCallback>() { - @Override - public void onFailure(Throwable caught) { - errorReporter.reportError("Could not load leaderboard: " + caught.getMessage()); + @Override + public void onSuccess(Collection result) { + fleetNameWithCompetitors.put(curFleetName, new HashSet<>(result)); + // if the data was gained completely then gray out specific rows + // TODO : maybe, there is a way to make it better + if (fleetNameWithCompetitors.size() == fleets.size() - 1) { + grayOutRows(); + } + } + + @Override + public void onFailure(Throwable caught) { + errorReporter.reportError( + "Could not load already registered competitors: " + caught.getMessage()); + } + }); } - }); + } } + /** + * Grays out rows with competitors from the same race column + */ private void grayOutRows() { List competitors = new ArrayList<>(); for (Map.Entry> entry : fleetNameWithCompetitors.entrySet()) { if (!entry.getKey().equals(fleetName)) { for (CompetitorDTO competitor : entry.getValue()) { - competitors.add(new CompetitorWithToolTipDTO(competitor, - stringMessages.toolTipMessage(competitor.getName(), fleetName, entry.getKey(), raceColumnName))); + competitors.add(new CompetitorWithToolTipDTO(competitor, stringMessages + .toolTipMessage(competitor.getName(), fleetName, entry.getKey(), raceColumnName))); } } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java index c250564b8c5..5b5b2e12225 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/SmartphoneTrackingEventManagementPanel.java @@ -284,6 +284,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC public void showWithBoatClass(String boatClassName) { new RaceLogCompetitorRegistrationDialog(boatClassName, sailingService, stringMessages, errorReporter, editable, leaderboardName, raceColumnName, fleetName, + raceColumnDTOAndFleetDTO.getA().getFleets(), new DialogCallback>() { @Override