Merge branch 'master' into translation

This commit is contained in:
Axel Uhl committed 2016-03-30 14:13:59 +02:00
commit beee35fe90
15 files changed
+151 -127

No files matched your search

@@ -1615,8 +1615,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
loadRegattaLogEvents(result, query, identifier);
} catch (Throwable t) {
// something went wrong during DB access; report, then use empty new regatta log
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load recorded regatta log data. Check MongoDB settings.");
logger.log(Level.SEVERE, "loadRegattaLog", t);
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load recorded regatta log data for "+identifier+". Check MongoDB settings.", t);
}
return result;
}
@@ -1708,7 +1707,15 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
private RegattaLogRegisterCompetitorEvent loadRegattaLogRegisterCompetitorEvent(TimePoint createdAt, AbstractLogEventAuthor author,
TimePoint logicalTimePoint, Serializable id, DBObject dbObject) {
Competitor comp = getCompetitorByID(dbObject);
return new RegattaLogRegisterCompetitorEventImpl(createdAt, logicalTimePoint, author, id, comp);
final RegattaLogRegisterCompetitorEvent result;
if (comp == null) {
result = null;
logger.log(Level.SEVERE, "Couldn't resolve competitor with ID "+dbObject.get(FieldNames.REGATTA_LOG_COMPETITOR_ID.name())+
" from registration event with ID "+id+". Skipping this competitor registration.");
} else {
result = new RegattaLogRegisterCompetitorEventImpl(createdAt, logicalTimePoint, author, id, comp);
}
return result;
}
private RegattaLogCloseOpenEndedDeviceMappingEvent loadRegattaLogCloseOpenEndedDeviceMappingEvent(TimePoint createdAt,
@@ -24,6 +24,7 @@ import com.sap.sailing.domain.abstractlog.race.analyzing.impl.LastPublishedCours
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.TrackingTimesFinder;
import com.sap.sailing.domain.abstractlog.race.impl.BaseRaceLogEventVisitor;
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEndOfTrackingEventImpl;
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogStartOfTrackingEventImpl;
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDenoteForTrackingEvent;
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogStartTrackingEvent;
@@ -181,6 +182,14 @@ public class RaceLogRaceTracker implements RaceTracker, GPSFixReceivedListener {
@Override
public void stop(boolean preemptive) {
RaceLog raceLog = params.getRaceLog();
final Pair<TimePoint, TimePoint> trackingTimes = new TrackingTimesFinder(raceLog).analyze();
if (trackingTimes == null || trackingTimes.getB() == null) {
// seems the first time tracking for this race is started; enter "now" as start of tracking
// into the race log
raceLog.add(new RaceLogEndOfTrackingEventImpl(MillisecondsTimePoint.now(), raceLogEventAuthor, /* passId */ 0));
}
// mark passing calculator is automatically stopped, when the race status is set to {@link
// TrackedRaceStatusEnum#FINISHED}
trackedRace.setStatus(new TrackedRaceStatusImpl(TrackedRaceStatusEnum.FINISHED, 100));
@@ -49,4 +49,9 @@ public class FlexibleLeaderboardAsRegattaLikeIdentifier implements RegattaLikeId
public String getIdentifierType() {
return FlexibleLeaderboard.class.getName();
}
@Override
public String toString() {
return getClass().getName()+": leaderboardName="+getName();
}
}
@@ -49,4 +49,9 @@ public class RegattaAsRegattaLikeIdentifier implements RegattaLikeIdentifier {
public String getIdentifierType() {
return Regatta.class.getName();
}
@Override
public String toString() {
return getClass().getName()+": regattaName="+getName();
}
}
@@ -57,14 +57,8 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
if (startEndTrackingTime == null){
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
} else {
if (startEndTrackingTime.getA() != null){
if (startEndTrackingTime.getB() != null){
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
} else {
result.add(new ImageSpec(ACTION_STOP_TRACKING, stringMessages.stopTracking(), makeImagePrototype(resources.stopRaceLogTracking())));
}
} else {
result.add(new ImageSpec(ACTION_START_TRACKING, stringMessages.startTracking(), makeImagePrototype(resources.startRaceLogTracking())));
if (startEndTrackingTime.getB() == null){
result.add(new ImageSpec(ACTION_STOP_TRACKING, stringMessages.stopTracking(), makeImagePrototype(resources.stopRaceLogTracking())));
}
}
@@ -17,7 +17,6 @@ import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithBootstrap;
@@ -50,7 +49,6 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
private BetterDateTimeBox startTimeBox;
private BetterDateTimeBox endTimeBox;
private ToggleButton startStopButton;
private TextBox authorNameBox;
private com.sap.sse.gwt.client.controls.IntegerBox authorPriorityBox;
@@ -90,13 +88,6 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
currentEnd = result == null ? null : result.getB();
updateDateTimeLabelAndTimeBoxFromDate(currentStart, currentStartLabel, startTimeBox);
updateDateTimeLabelAndTimeBoxFromDate(currentEnd, currentEndLabel, endTimeBox);
if (currentStart == null){
setupStartStopButton(false);
} else if (currentStart != null && currentEnd == null){
setupStartStopButton(true);
} else {
setupStartStopButton(false);
}
}
});
}
@@ -111,10 +102,6 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
}
}
private void setupStartStopButton(boolean startTimeSet) {
startStopButton.setDown(startTimeSet);
}
private Widget createInputPanel() {
Grid content = new Grid(4, 3);
@@ -179,37 +166,6 @@ public class SetTrackingTimesDialog extends DataEntryDialogWithBootstrap<RaceLog
}
});
currentPanel.add(refreshButton);
Image startImage = new Image(resources.startRaceLogTracking());
Image stopImage = new Image(resources.stopRaceLogTracking());
startStopButton = new ToggleButton(startImage, stopImage, new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
RaceLogSetTrackingTimesDTO trackingTimesDTO;
if (startStopButton.isDown()){
trackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(new Date(), null);
} else {
trackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(startTimeBox.getValue(), new Date());
}
service.setTrackingTimes(trackingTimesDTO, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error while setting tracking times: " + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
refreshTimes();
getCancelButton().click();
}
});
}
});
currentPanel.add(startStopButton);
current.add(currentPanel);
return current;
}
@@ -1,6 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -16,18 +17,21 @@ 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.CaptionPanel;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.domain.common.PassingInstruction;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
@@ -45,8 +49,8 @@ import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
@@ -54,7 +58,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
* Allows the user to start and stop tracking of races using the RaceLog-tracking connector.
*/
public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardConfigPanel implements LeaderboardsDisplayer {
private Button startTrackingButton;
private ToggleButton startStopTrackingButton;
private TrackFileImportDeviceIdentifierTableWrapper deviceIdentifierTable;
private CheckBox correctWindDirectionForDeclination;
private CheckBox trackWind;
@@ -77,6 +81,18 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
importPanel.add(importContent);
importContent.add(importWidget);
importContent.add(deviceIdentifierTable);
trackedRacesListComposite.addTrackedRaceChangeListener(new TrackedRaceChangedListener() {
@Override
public void racesStoppedTracking(Iterable<? extends RegattaAndRaceIdentifier> regattaAndRaceIdentifiers) {
loadAndRefreshLeaderboard(getSelectedLeaderboard().name, getSelectedRaceColumnWithFleet().getA().getName());
}
@Override
public void racesRemoved(Iterable<? extends RegattaAndRaceIdentifier> regattaAndRaceIdentifiers) {
loadAndRefreshLeaderboard(getSelectedLeaderboard().name, getSelectedRaceColumnWithFleet().getA().getName());
}
});
}
private static interface ShowWithBoatClass {
@@ -184,6 +200,20 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
return race.getA().getRaceLogTrackingInfo(race.getB()).raceLogTrackingState;
}
private boolean trackerExists(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) {
return race.getA().getRaceLogTrackingInfo(race.getB()).raceLogTrackerExists;
}
private boolean isFinished(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) {
RaceDTO raceDTO = race.getA().getRace(race.getB());
boolean raceFinished = false;
if (raceDTO != null){
raceFinished = raceDTO.status.status.equals(TrackedRaceStatusEnum.FINISHED);
}
return raceFinished;
}
private boolean doesTrackerExist(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) {
return race.getA().getRaceLogTrackingInfo(race.getB()).raceLogTrackerExists;
}
@@ -309,15 +339,9 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_SET_TRACKING_TIMES.equals(value)) {
showSetTrackingTimesDialog(getSelectedRaceColumnWithFleet().getA(), getSelectedRaceColumnWithFleet().getB());;
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_START_TRACKING.equals(value)) {
TimePoint newStart = MillisecondsTimePoint.now();
RaceLogSetTrackingTimesDTO setTrackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(newStart, null);
setTrackingTimes(setTrackingTimesDTO, raceColumnName);
startTracking(Collections.singleton(raceColumnDTOAndFleetDTO), trackWind.getValue(), correctWindDirectionForDeclination.getValue());
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_STOP_TRACKING.equals(value)) {
Pair<TimePoint, TimePoint> startEndTrackingTime = getTrackingTimesFor(raceColumnDTOAndFleetDTO);
TimePoint currentStart = startEndTrackingTime.getA();
TimePoint newEnd = MillisecondsTimePoint.now();
RaceLogSetTrackingTimesDTO setTrackingTimesDTO = generateRaceLogSetTrackingTimesDTOWith(currentStart, newEnd);
setTrackingTimes(setTrackingTimesDTO, raceColumnName);
stopTracking(Collections.singleton(raceColumnDTOAndFleetDTO));
}
}
});
@@ -327,46 +351,6 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
racesTable.addColumn(raceActionColumn, stringMessages.actions());
racesTable.setWidth("600px");
}
private void setTrackingTimes(RaceLogSetTrackingTimesDTO trackingTimesDTO, final String raceColumnName){
sailingService.setTrackingTimes(trackingTimesDTO, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error while setting tracking times: " + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
loadAndRefreshLeaderboard(getSelectedLeaderboard().name, raceColumnName);
}
});
}
private RaceLogSetTrackingTimesDTO generateRaceLogSetTrackingTimesDTOWith(TimePoint startTime, TimePoint endTime) {
Pair<TimePoint, TimePoint> startEndTrackingTime = getTrackingTimesFor(getSelectedRaceColumnWithFleet());
TimePoint currentStart;
TimePoint currentEnd;
if (startEndTrackingTime == null){
currentStart = null;
currentEnd = null;
} else {
currentStart = startEndTrackingTime.getA();
currentEnd = startEndTrackingTime.getB();
}
RaceLogSetTrackingTimesDTO dto = new RaceLogSetTrackingTimesDTO();
dto.leaderboardName = getSelectedLeaderboardName();
dto.raceColumnName = getSelectedRaceColumnWithFleet().getA().getName();
dto.fleetName = getSelectedRaceColumnWithFleet().getB().getName();
dto.authorName = "Shore";
dto.authorPriority = 4;
dto.logicalTimePoint = MillisecondsTimePoint.now();
dto.newStartOfTracking = startTime;
dto.newEndOfTracking = endTime;
dto.currentStartOfTracking = currentStart;
dto.currentEndOfTracking = currentEnd;
return dto;
}
@Override
protected void addLeaderboardControls(Panel controlsPanel) {}
@@ -375,16 +359,21 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
protected void addSelectedLeaderboardRacesControls(Panel racesPanel) {
trackWind = new CheckBox(stringMessages.trackWind());
correctWindDirectionForDeclination = new CheckBox(stringMessages.declinationCheckbox());
startTrackingButton = new Button(stringMessages.startTracking());
startTrackingButton.ensureDebugId("StartTrackingButton");
startTrackingButton.setEnabled(false);
startStopTrackingButton = new ToggleButton(stringMessages.startTracking(), stringMessages.stopTracking());
startStopTrackingButton.ensureDebugId("StartTrackingButton");
startStopTrackingButton.setEnabled(false);
racesPanel.add(trackWind);
racesPanel.add(correctWindDirectionForDeclination);
racesPanel.add(startTrackingButton);
startTrackingButton.addClickHandler(new ClickHandler() {
racesPanel.add(startStopTrackingButton);
startStopTrackingButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
startTracking(raceColumnTableSelectionModel.getSelectedSet(), trackWind.getValue(), correctWindDirectionForDeclination.getValue());
if (startStopTrackingButton.isDown()){
startTracking(raceColumnTableSelectionModel.getSelectedSet(), trackWind.getValue(), correctWindDirectionForDeclination.getValue());
} else {
stopTracking(raceColumnTableSelectionModel.getSelectedSet());
}
refreshTrackingActionButtons();
}
});
@@ -396,14 +385,72 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
});
}
private void stopTracking(final Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> selectedSet) {
final List<RegattaAndRaceIdentifier> racesToStopTracking = new ArrayList<RegattaAndRaceIdentifier>();
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnDTOAndFleetDTOWithNameBasedEquality : selectedSet) {
RaceDTO race = raceColumnDTOAndFleetDTOWithNameBasedEquality.getA().getRace(raceColumnDTOAndFleetDTOWithNameBasedEquality.getB());
if (race != null && race.isTracked){
racesToStopTracking.add(race.getRaceIdentifier());
}
}
sailingService.stopTrackingRaces(racesToStopTracking, new MarkedAsyncCallback<Void>(
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Exception trying to stop tracking races " + racesToStopTracking + ": " + caught.getMessage());
}
@Override
public void onSuccess(Void result) {
trackedRacesListComposite.regattaRefresher.fillRegattas();
for (TrackedRaceChangedListener listener : trackedRacesListComposite.raceIsTrackedRaceChangeListener) {
listener.racesStoppedTracking(racesToStopTracking);
}
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumndDTOAndFleet : selectedSet) {
loadAndRefreshLeaderboard(getSelectedLeaderboard().name, raceColumndDTOAndFleet.getA().getName());
}
}
}));
}
private void enableStartTrackingButtonIfAppropriateRacesSelected() {
boolean enable = raceColumnTableSelectionModel.getSelectedSet().size() > 0;
boolean onlyUntrackedRacesPresent = raceColumnTableSelectionModel.getSelectedSet().size() > 0;
boolean onlyTrackedRacesPresent = raceColumnTableSelectionModel.getSelectedSet().size() > 0;
boolean onlyRacesWithNonExistentTracker = raceColumnTableSelectionModel.getSelectedSet().size() > 0;
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : raceColumnTableSelectionModel.getSelectedSet()) {
if (! getTrackingState(race).isForTracking() || doesTrackerExist(race)) {
enable = false;
if (getTrackingState(race).isForTracking() && isFinished(race)){
onlyUntrackedRacesPresent = false;
onlyTrackedRacesPresent = false;
}
if (! getTrackingState(race).isForTracking() || doesTrackerExist(race) || isFinished(race)) {
onlyUntrackedRacesPresent = false;
} else {
onlyTrackedRacesPresent = false;
}
if (trackerExists(race)){
onlyRacesWithNonExistentTracker = false;
}
}
startTrackingButton.setEnabled(enable);
if ((!onlyTrackedRacesPresent && !onlyUntrackedRacesPresent)){
startStopTrackingButton.setEnabled(false);
}
if (onlyTrackedRacesPresent){
startStopTrackingButton.setDown(true);
startStopTrackingButton.setEnabled(true);
}
if (onlyUntrackedRacesPresent || onlyRacesWithNonExistentTracker){
startStopTrackingButton.setDown(false);
startStopTrackingButton.setEnabled(true);
}
}
@Override
@@ -552,7 +599,7 @@ public class SmartphoneTrackingEventManagementPanel extends AbstractLeaderboardC
new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
loadAndRefreshLeaderboard(leaderboard.name, raceColumn.getName());
loadAndRefreshLeaderboard(leaderboard.name, getSelectedRaceColumnWithFleet().getA().getName());
trackedRacesListComposite.regattaRefresher.fillRegattas();
}
@@ -28,7 +28,7 @@ import com.sap.sse.gwt.client.shared.components.SettingsDialog;
* the {@link AdminConsoleEntryPoint}.
*/
public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite {
private final Set<TrackedRaceChangedListener> raceIsTrackedRaceChangeListener;
final Set<TrackedRaceChangedListener> raceIsTrackedRaceChangeListener;
private Button btnUntrack;
private Button btnRemoveRace;
private Button btnSetDelayToLive;
@@ -56,7 +56,7 @@ public class TrackedRacesListComposite extends AbstractTrackedRacesListComposite
this.raceIsTrackedRaceChangeListener.add(listener);
}
private void stopTrackingRaces(final Iterable<RaceDTO> races) {
void stopTrackingRaces(final Iterable<RaceDTO> races) {
final List<RegattaAndRaceIdentifier> racesToStopTracking = new ArrayList<RegattaAndRaceIdentifier>();
for (RaceDTO race : races) {
if (race.isTracked) {
@@ -277,7 +277,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
Map<CompetitorDTO, List<ManeuverDTO>> getManeuvers(RegattaAndRaceIdentifier raceIdentifier,
Map<CompetitorDTO, Date> from, Map<CompetitorDTO, Date> to) throws NoWindException;
List<StrippedLeaderboardDTO> getLeaderboardsByRaceAndRegatta(RaceDTO race, RegattaIdentifier regattaIdentifier);
List<StrippedLeaderboardDTO> getLeaderboardsByRaceAndRegatta(String raceName, RegattaIdentifier regattaIdentifier);
List<LeaderboardGroupDTO> getLeaderboardGroups(boolean withGeoLocationData);
@@ -228,7 +228,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void getLeaderboards(AsyncCallback<List<StrippedLeaderboardDTO>> callback);
void getLeaderboardsByRaceAndRegatta(RaceDTO race, RegattaIdentifier regattaIdentifier,
void getLeaderboardsByRaceAndRegatta(String raceName, RegattaIdentifier regattaIdentifier,
AsyncCallback<List<StrippedLeaderboardDTO>> callback);
void updateLeaderboard(String leaderboardName, String newLeaderboardName, String newLeaderboardDisplayName,
@@ -1112,10 +1112,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
return null;
}
}
@Override
public void stopTrackingRaces(Iterable<RegattaAndRaceIdentifier> regattaAndRaceIdentifiers) throws Exception {
for (RegattaAndRaceIdentifier regattaAndRaceIdentifier : regattaAndRaceIdentifiers) {
for (RegattaAndRaceIdentifier regattaAndRaceIdentifier : regattaAndRaceIdentifiers) {
getService().apply(new StopTrackingRace(regattaAndRaceIdentifier));
}
}
@@ -2350,7 +2350,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
List<StrippedLeaderboardDTO> results = new ArrayList<StrippedLeaderboardDTO>();
if (regatta != null && regatta.races != null) {
for (RaceDTO race : regatta.races) {
List<StrippedLeaderboardDTO> leaderboard = getLeaderboardsByRaceAndRegatta(race, regatta.getRegattaIdentifier());
List<StrippedLeaderboardDTO> leaderboard = getLeaderboardsByRaceAndRegatta(race.getName(), regatta.getRegattaIdentifier());
if (leaderboard != null && !leaderboard.isEmpty()) {
results.addAll(leaderboard);
}
@@ -2364,7 +2364,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
}
@Override
public List<StrippedLeaderboardDTO> getLeaderboardsByRaceAndRegatta(RaceDTO race, RegattaIdentifier regattaIdentifier) {
public List<StrippedLeaderboardDTO> getLeaderboardsByRaceAndRegatta(String raceName, RegattaIdentifier regattaIdentifier) {
List<StrippedLeaderboardDTO> results = new ArrayList<StrippedLeaderboardDTO>();
Map<String, Leaderboard> leaderboards = getService().getLeaderboards();
for (Leaderboard leaderboard : leaderboards.values()) {
@@ -2375,7 +2375,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
TrackedRace trackedRace = raceInLeaderboard.getTrackedRace(fleet);
if (trackedRace != null) {
RaceDefinition trackedRaceDef = trackedRace.getRace();
if (trackedRaceDef.getName().equals(race.getName())) {
if (trackedRaceDef.getName().equals(raceName)) {
results.add(createStrippedLeaderboardDTO(leaderboard, false, false));
break;
}