mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 19:50:01 +00:00
simplified steps for racelog-tracking
This commit is contained in:
1 parent
764b30ac50
commit
13a1776cc0
18 files changed
+328
-345
No files matched your search
+9
-6
@@ -21,7 +21,7 @@ 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.SingleSelectionModel;
|
||||
import com.google.gwt.view.client.SetSelectionModel;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
@@ -69,7 +69,7 @@ TrackedRaceChangedListener {
|
||||
|
||||
protected LabeledAbstractFilterablePanel<StrippedLeaderboardDTO> filterLeaderboardPanel;
|
||||
|
||||
protected final SingleSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel;
|
||||
protected final SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel;
|
||||
|
||||
protected List<StrippedLeaderboardDTO> availableLeaderboardList;
|
||||
|
||||
@@ -117,7 +117,8 @@ TrackedRaceChangedListener {
|
||||
}
|
||||
|
||||
public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, AdminConsoleEntryPoint adminConsole,
|
||||
final ErrorReporter errorReporter, StringMessages theStringConstants) {
|
||||
final ErrorReporter errorReporter, StringMessages theStringConstants,
|
||||
SetSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> raceColumnTableSelectionModel) {
|
||||
this.stringMessages = theStringConstants;
|
||||
this.sailingService = sailingService;
|
||||
leaderboardList = new ListDataProvider<StrippedLeaderboardDTO>();
|
||||
@@ -236,7 +237,7 @@ TrackedRaceChangedListener {
|
||||
|
||||
addColumnsToRacesTable(raceColumnTable);
|
||||
|
||||
raceColumnTableSelectionModel = new SingleSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>();
|
||||
this.raceColumnTableSelectionModel = raceColumnTableSelectionModel;
|
||||
raceColumnTable.setSelectionModel(raceColumnTableSelectionModel);
|
||||
raceColumnTableSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
@@ -420,8 +421,10 @@ TrackedRaceChangedListener {
|
||||
}
|
||||
|
||||
protected RaceColumnDTOAndFleetDTOWithNameBasedEquality getSelectedRaceColumnWithFleet() {
|
||||
RaceColumnDTOAndFleetDTOWithNameBasedEquality raceInLeaderboardAndFleetName = raceColumnTableSelectionModel.getSelectedObject();
|
||||
return raceInLeaderboardAndFleetName;
|
||||
if (raceColumnTableSelectionModel.getSelectedSet().isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return raceColumnTableSelectionModel.getSelectedSet().iterator().next();
|
||||
}
|
||||
|
||||
protected String getSelectedLeaderboardName() {
|
||||
|
||||
+4
-3
@@ -29,6 +29,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
|
||||
import com.google.gwt.user.client.ui.Panel;
|
||||
import com.google.gwt.view.client.SingleSelectionModel;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
@@ -86,7 +87,7 @@ TrackedRaceChangedListener {
|
||||
|
||||
public LeaderboardConfigPanel(final SailingServiceAsync sailingService, AdminConsoleEntryPoint adminConsole,
|
||||
final ErrorReporter errorReporter, StringMessages theStringConstants, final boolean showRaceDetails) {
|
||||
super(sailingService, adminConsole, errorReporter, theStringConstants);
|
||||
super(sailingService, adminConsole, errorReporter, theStringConstants, new SingleSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
|
||||
this.showRaceDetails = showRaceDetails;
|
||||
}
|
||||
|
||||
@@ -548,7 +549,7 @@ TrackedRaceChangedListener {
|
||||
*/
|
||||
private void moveSelectedRaceColumnDown() {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
||||
final String selectedRaceColumnName = getSelectedRaceColumnWithFleet().getA().getRaceColumnName();
|
||||
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
|
||||
new MarkedAsyncCallback<Void>(
|
||||
new AsyncCallback<Void>() {
|
||||
@@ -572,7 +573,7 @@ TrackedRaceChangedListener {
|
||||
*/
|
||||
private void moveSelectedRaceColumnUp() {
|
||||
final String selectedLeaderboardName = getSelectedLeaderboardName();
|
||||
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
|
||||
final String selectedRaceColumnName = getSelectedRaceColumnWithFleet().getA().getRaceColumnName();
|
||||
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
|
||||
new MarkedAsyncCallback<Void>(
|
||||
new AsyncCallback<Void>() {
|
||||
|
||||
+2
-5
@@ -10,7 +10,6 @@ import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
|
||||
|
||||
public class RaceLogTrackingEventManagementImagesBarCell extends ImagesBarCell {
|
||||
public static final String ACTION_DENOTE_FOR_RACELOG_TRACKING = "ACTION_DENOTE_FOR_RACELOG_TRACKING";
|
||||
public static final String ACTION_ADD_RACELOG_TRACKERS = "ACTION_ADD_RACELOG_TRACKERS";
|
||||
private static AdminConsoleResources resources = GWT.create(AdminConsoleResources.class);
|
||||
private final StringMessages stringMessages;
|
||||
|
||||
@@ -29,12 +28,10 @@ public class RaceLogTrackingEventManagementImagesBarCell extends ImagesBarCell {
|
||||
ArrayList<ImageSpec> result = new ArrayList<ImageSpec>();
|
||||
|
||||
StrippedLeaderboardDTO leaderboard = (StrippedLeaderboardDTO) getContext().getKey();
|
||||
if (! leaderboard.isDenotedForRaceLogTracking) {
|
||||
|
||||
if (leaderboard.isDenotableForRaceLogTracking) {
|
||||
result.add(new ImageSpec(ACTION_DENOTE_FOR_RACELOG_TRACKING, stringMessages.denoteForRaceLogTracking(), makeImagePrototype(resources.denoteForRaceLogTracking())));
|
||||
}
|
||||
if (leaderboard.raceLogTrackersCanBeAdded) {
|
||||
result.add(new ImageSpec(ACTION_ADD_RACELOG_TRACKERS, stringMessages.addRaceLogTrackers(), makeImagePrototype(resources.addRaceLogTracker())));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
+60
-55
@@ -1,14 +1,20 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.gwt.cell.client.FieldUpdater;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.cellview.client.CellTable;
|
||||
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.Label;
|
||||
import com.google.gwt.user.client.ui.Panel;
|
||||
import com.google.gwt.user.client.ui.VerticalPanel;
|
||||
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.FleetDTO;
|
||||
@@ -25,11 +31,16 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
/**
|
||||
* Allows the user to start and stop tracking of races using the RaceLog-tracking connector.
|
||||
*/
|
||||
public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConfigPanel {
|
||||
public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConfigPanel {
|
||||
private Button startTrackingButton;
|
||||
private MultiSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality> multiRaceSelectionModel;
|
||||
|
||||
public RaceLogTrackingEventManagementPanel(SailingServiceAsync sailingService, AdminConsoleEntryPoint adminConsole,
|
||||
RegattaRefresher regattaRefresher,
|
||||
ErrorReporter errorReporter, StringMessages stringMessages) {
|
||||
super(sailingService, adminConsole, errorReporter, stringMessages);
|
||||
super(sailingService, adminConsole, errorReporter, stringMessages,
|
||||
new MultiSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>());
|
||||
multiRaceSelectionModel = new MultiSelectionModel<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -57,9 +68,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
leaderboardActionColumn.setFieldUpdater(new FieldUpdater<StrippedLeaderboardDTO, String>() {
|
||||
@Override
|
||||
public void update(int index, StrippedLeaderboardDTO leaderboardDTO, String value) {
|
||||
if (RaceLogTrackingEventManagementImagesBarCell.ACTION_ADD_RACELOG_TRACKERS.equals(value)) {
|
||||
addRaceLogTrackers(leaderboardDTO);
|
||||
} else if (RaceLogTrackingEventManagementImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) {
|
||||
if (RaceLogTrackingEventManagementImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) {
|
||||
denoteForRaceLogTracking(leaderboardDTO);
|
||||
}
|
||||
}
|
||||
@@ -111,12 +120,8 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
final String raceColumnName = object.getA().getName();
|
||||
final String fleetName = object.getB().getName();
|
||||
boolean editable = object.getB().raceLogTrackingState != RaceLogTrackingState.TRACKING;
|
||||
if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_ADD_RACELOG_TRACKER.equals(value)) {
|
||||
addRaceLogTracker(object.getA(), object.getB());
|
||||
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) {
|
||||
if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) {
|
||||
denoteForRaceLogTracking(object.getA(), object.getB());
|
||||
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_START_RACELOG_TRACKING.equals(value)) {
|
||||
startRaceLogTracking(object.getA(), object.getB());
|
||||
} else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_COMPETITOR_REGISTRATIONS.equals(value)) {
|
||||
new RaceLogTrackingCompetitorRegistrationsDialog(sailingService, stringMessages, errorReporter,
|
||||
getSelectedLeaderboardName(), object.getA().getName(), object.getB().getName(), editable).show();
|
||||
@@ -169,6 +174,9 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
racesTable.addColumn(trackerStateColumn, stringMessages.trackerStatus());
|
||||
racesTable.addColumn(raceActionColumn, stringMessages.actions());
|
||||
racesTable.setWidth("600px");
|
||||
|
||||
//set multi selection model, overriding single selection model
|
||||
racesTable.setSelectionModel(multiRaceSelectionModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -178,7 +186,34 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
protected void addLeaderboardCreateControls(Panel createPanel) {}
|
||||
|
||||
@Override
|
||||
protected void addSelectedLeaderboardRacesControls(Panel racesPanel) {}
|
||||
protected void addSelectedLeaderboardRacesControls(Panel racesPanel) {
|
||||
startTrackingButton = new Button(stringMessages.startTracking());
|
||||
startTrackingButton.setEnabled(false);
|
||||
racesPanel.add(startTrackingButton);
|
||||
startTrackingButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
startTracking(raceColumnTableSelectionModel.getSelectedSet());
|
||||
}
|
||||
});
|
||||
|
||||
raceColumnTableSelectionModel.addSelectionChangeHandler(new Handler() {
|
||||
@Override
|
||||
public void onSelectionChange(SelectionChangeEvent event) {
|
||||
enableStartTrackingButtonIfAppropriateRacesSelected();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void enableStartTrackingButtonIfAppropriateRacesSelected() {
|
||||
boolean enable = raceColumnTableSelectionModel.getSelectedSet().size() > 0;
|
||||
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : raceColumnTableSelectionModel.getSelectedSet()) {
|
||||
if (! race.getB().raceLogTrackingState.isForTracking() || race.getB().raceLogTrackerExists) {
|
||||
enable = false;
|
||||
}
|
||||
}
|
||||
startTrackingButton.setEnabled(enable);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void leaderboardRaceColumnSelectionChanged() {
|
||||
@@ -216,6 +251,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
loadAndRefreshLeaderboard(leaderboard.name, null);
|
||||
raceColumnTableSelectionModel.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -231,6 +267,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
loadAndRefreshLeaderboard(leaderboard.name, raceColumn.getName());
|
||||
raceColumnTableSelectionModel.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -239,62 +276,30 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void startTracking(Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> races) {
|
||||
final StrippedLeaderboardDTO leaderboard = getSelectedLeaderboard();
|
||||
|
||||
private void addRaceLogTrackers(final StrippedLeaderboardDTO leaderboard) {
|
||||
final RaceColumnDTOAndFleetDTOWithNameBasedEquality selectedRCFleet = getSelectedRaceColumnWithFleet();
|
||||
if (leaderboard.raceLogTrackersCanBeAdded) {
|
||||
sailingService.addRaceLogTrackers(leaderboard.name, new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
loadAndRefreshLeaderboard(leaderboard.name, selectedRCFleet.getA().getName());
|
||||
trackedRacesListComposite.regattaRefresher.fillRegattas();
|
||||
}
|
||||
for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : races) {
|
||||
final RaceColumnDTO raceColumn = race.getA();
|
||||
final FleetDTO fleet = race.getB();
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Failed to add RaceLog tracker: " + caught.getMessage());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
errorReporter.reportError("No RaceLogTracker can be added for any of the RaceLogs in this leaderboard");
|
||||
}
|
||||
}
|
||||
|
||||
private void addRaceLogTracker(final RaceColumnDTO raceColumn, FleetDTO fleet) {
|
||||
if (fleet.raceLogTrackerCanBeAdded) {
|
||||
final StrippedLeaderboardDTO leaderboard = getSelectedLeaderboard();
|
||||
sailingService.addRaceLogTracker(leaderboard.name, raceColumn.getName(), fleet.getName(), new AsyncCallback<Void>() {
|
||||
sailingService.startRaceLogTracking(leaderboard.name, raceColumn.getName(), fleet.getName(),
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
loadAndRefreshLeaderboard(leaderboard.name, raceColumn.getName());
|
||||
trackedRacesListComposite.regattaRefresher.fillRegattas();
|
||||
raceColumnTableSelectionModel.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Failed to add RaceLog trackers: " + caught.getMessage());
|
||||
errorReporter.reportError("Failed to start tracking " + raceColumn.getName() + " - "
|
||||
+ fleet.getName() + ": " + caught.getMessage());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
errorReporter.reportError("No RaceLogTracker can be added for the RaceLog of this fleet");
|
||||
}
|
||||
}
|
||||
|
||||
private void startRaceLogTracking(final RaceColumnDTO raceColumn, FleetDTO fleet) {
|
||||
final StrippedLeaderboardDTO leaderboard = getSelectedLeaderboard();
|
||||
sailingService.startRaceLogTracking(leaderboard.name, raceColumn.getName(), fleet.getName(), new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
loadAndRefreshLeaderboard(leaderboard.name, raceColumn.getName());
|
||||
trackedRacesListComposite.regattaRefresher.fillRegattas();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError("Failed to start tracking: " + caught.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void setStartTime(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO) {
|
||||
|
||||
-10
@@ -4,15 +4,12 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gwt.core.client.GWT;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sailing.gwt.ui.client.shared.components.ImagesBarCell;
|
||||
|
||||
public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCell {
|
||||
public final static String ACTION_ADD_RACELOG_TRACKER = "ACTION_ADD_RACELOG_TRACKER";
|
||||
public final static String ACTION_DENOTE_FOR_RACELOG_TRACKING = "ACTION_DENOTE_FOR_RACELOG_TRACKING";
|
||||
public final static String ACTION_START_RACELOG_TRACKING = "ACTION_START_RACELOG_TRACKING";
|
||||
public final static String ACTION_COMPETITOR_REGISTRATIONS = "ACTION_COMPETITOR_REGISTRATIONS";
|
||||
public final static String ACTION_DEFINE_COURSE = "ACTION_DEFINE_COURSE";
|
||||
public final static String ACTION_MAP_DEVICES = "ACTION_MAP_DEVICES";
|
||||
@@ -31,17 +28,10 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe
|
||||
protected Iterable<ImageSpec> getImageSpecs() {
|
||||
List<ImageSpec> result = new ArrayList<ImageSpec>();
|
||||
RaceColumnDTOAndFleetDTOWithNameBasedEquality object = (RaceColumnDTOAndFleetDTOWithNameBasedEquality) getContext().getKey();
|
||||
if (object.getB().raceLogTrackerCanBeAdded) {
|
||||
result.add(new ImageSpec(ACTION_ADD_RACELOG_TRACKER, stringMessages.addRaceLogTracker(), makeImagePrototype(resources.addRaceLogTracker())));
|
||||
}
|
||||
if (! object.getB().raceLogTrackingState.isForTracking()) {
|
||||
result.add(new ImageSpec(ACTION_DENOTE_FOR_RACELOG_TRACKING, stringMessages.denoteForRaceLogTracking(), makeImagePrototype(resources.denoteForRaceLogTracking())));
|
||||
}
|
||||
|
||||
if (object.getB().raceLogTrackerExists && object.getB().raceLogTrackingState != RaceLogTrackingState.TRACKING) {
|
||||
result.add(new ImageSpec(ACTION_START_RACELOG_TRACKING, stringMessages.startRaceLogTracking(), makeImagePrototype(resources.startRaceLogTracking())));
|
||||
}
|
||||
|
||||
if (object.getB().raceLogTrackingState.isForTracking()) {
|
||||
result.add(new ImageSpec(ACTION_COMPETITOR_REGISTRATIONS, stringMessages.competitorRegistrations(), makeImagePrototype(resources.competitorRegistrations())));
|
||||
result.add(new ImageSpec(ACTION_DEFINE_COURSE, stringMessages.defineCourse(), makeImagePrototype(resources.defineCourse())));
|
||||
|
||||
+17
-8
@@ -9,8 +9,8 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.google.gwt.user.client.rpc.RemoteService;
|
||||
import com.sap.sailing.domain.common.DataImportProgress;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.common.DataImportProgress;
|
||||
import com.sap.sailing.domain.common.DetailType;
|
||||
import com.sap.sailing.domain.common.LeaderboardType;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
@@ -33,12 +33,14 @@ import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO;
|
||||
import com.sap.sailing.domain.common.impl.Util.Pair;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.RaceNotCreatedException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.domain.racelog.Revokable;
|
||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||
import com.sap.sailing.domain.common.racelog.RacingProcedureType;
|
||||
import com.sap.sailing.domain.racelogtracking.RaceLogTrackingAdapter;
|
||||
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompetitorsRaceDataDTO;
|
||||
@@ -396,15 +398,18 @@ public interface SailingService extends RemoteService {
|
||||
|
||||
Map<RegattaAndRaceIdentifier, Integer> importWindFromIgtimi(List<RaceDTO> selectedRaces) throws Exception;
|
||||
|
||||
void addRaceLogTrackers(String leaderboardName) throws Exception, RaceNotCreatedException;
|
||||
|
||||
void addRaceLogTracker(String leaderboardName, String raceColumnName, String fleetName) throws Exception, RaceNotCreatedException;
|
||||
|
||||
void denoteForRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName) throws Exception;
|
||||
|
||||
void denoteForRaceLogTracking(String leaderboardName) throws Exception;
|
||||
|
||||
void startRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName);
|
||||
/**
|
||||
* Performs all the necessary steps to start tracking the race.
|
||||
* The {@code RaceLog} needs to be denoted for racelog-tracking beforehand.
|
||||
*
|
||||
* @see RaceLogTrackingAdapter#startTracking
|
||||
*/
|
||||
void startRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName)
|
||||
throws NotDenotedForRaceLogTrackingException, Exception;
|
||||
|
||||
void setCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName, Set<CompetitorDTO> competitors);
|
||||
|
||||
@@ -441,5 +446,9 @@ public interface SailingService extends RemoteService {
|
||||
void closeOpenEndedDeviceMapping(String leaderboardName, String raceColumnName, String fleetName, DeviceMappingDTO mapping,
|
||||
Date closingTimePoint) throws NoCorrespondingServiceRegisteredException, TransformationException;
|
||||
|
||||
/**
|
||||
* Revoke the events in the {@code RaceLog} that are identified by the {@code eventIds}.
|
||||
* This only affects such events that implement {@link Revokable}.
|
||||
*/
|
||||
void revokeRaceLogEvents(String leaderboardName, String raceColumnName, String fleetName, List<Serializable> eventIds);
|
||||
}
|
||||
-5
@@ -526,11 +526,6 @@ public interface SailingServiceAsync {
|
||||
|
||||
void getLeaderboardsByEvent(EventDTO event, AsyncCallback<List<StrippedLeaderboardDTO>> callback);
|
||||
|
||||
void addRaceLogTrackers(String leaderboardName, AsyncCallback<Void> callback);
|
||||
|
||||
void addRaceLogTracker(String leaderboardName, String raceColumnName,
|
||||
String fleetName, AsyncCallback<Void> callback);
|
||||
|
||||
void denoteForRaceLogTracking(String leaderboardName,
|
||||
String raceColumnName, String fleetName,
|
||||
AsyncCallback<Void> callback);
|
||||
|
||||
+16
-55
@@ -161,6 +161,7 @@ import com.sap.sailing.domain.common.racelog.FlagPole;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TransformationException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinderFactory;
|
||||
@@ -2031,8 +2032,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
} else {
|
||||
leaderboardDTO.discardThresholds = null;
|
||||
}
|
||||
leaderboardDTO.isDenotedForRaceLogTracking = false;
|
||||
leaderboardDTO.raceLogTrackersCanBeAdded = false;
|
||||
leaderboardDTO.isDenotableForRaceLogTracking = leaderboard instanceof RegattaLeaderboard;
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
RaceDTO raceDTO = null;
|
||||
@@ -2054,13 +2054,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
fleetDTO.raceLogTrackerExists = getService().getRaceTrackerById(raceLog.getId()) != null;
|
||||
fleetDTO.courseDefinitionInRaceLog = new LastPublishedCourseDesignFinder(raceLog).analyze() != null;
|
||||
|
||||
if (getRaceLogTrackingAdapter().isDenotedForRaceLogTracking(getService(), raceColumn, fleet)) {
|
||||
leaderboardDTO.isDenotedForRaceLogTracking = true;
|
||||
}
|
||||
|
||||
if (getRaceLogTrackingAdapter().canRaceLogTrackerBeAdded(getService(), raceColumn, fleet)) {
|
||||
leaderboardDTO.raceLogTrackersCanBeAdded = true;
|
||||
fleetDTO.raceLogTrackerCanBeAdded = true;
|
||||
if (! raceLog.isEmpty()) {
|
||||
leaderboardDTO.isDenotableForRaceLogTracking = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4024,40 +4019,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
}
|
||||
|
||||
private void addRaceLogTracker(Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet) throws Exception {
|
||||
RegattaIdentifier regatta = null;
|
||||
if (leaderboard instanceof RegattaLeaderboard) {
|
||||
regatta = ((RegattaLeaderboard) leaderboard).getRegatta().getRegattaIdentifier();
|
||||
}
|
||||
|
||||
getRaceLogTrackingAdapter().addRace(getService(), regatta, leaderboard, raceColumn, fleet, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRaceLogTracker(String leaderboardName,
|
||||
String raceColumnName, String fleetName) throws Exception {
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
RaceColumn raceColumn = getService().getLeaderboardByName(leaderboardName).getRaceColumnByName(raceColumnName);
|
||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||
|
||||
addRaceLogTracker(leaderboard, raceColumn, fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRaceLogTrackers(String leaderboardName) throws Exception {
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
RaceLogTrackingAdapter adapter = getRaceLogTrackingAdapter();
|
||||
|
||||
Map<RaceColumn, Collection<Fleet>> canBeLoaded = adapter.listRaceLogTrackersThatCanBeAdded(getService(), leaderboard);
|
||||
for (RaceColumn raceColumn : canBeLoaded.keySet()) {
|
||||
if (canBeLoaded.get(raceColumn) != null) {
|
||||
for (Fleet fleet : canBeLoaded.get(raceColumn)) {
|
||||
addRaceLogTracker(leaderboard, raceColumn, fleet);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void denoteForRaceLogTracking(String leaderboardName,
|
||||
String raceColumnName, String fleetName) throws Exception {
|
||||
@@ -4065,13 +4026,13 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
RaceColumn raceColumn = getService().getLeaderboardByName(leaderboardName).getRaceColumnByName(raceColumnName);
|
||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||
|
||||
getRaceLogTrackingAdapter().denoteForRaceLogTracking(getService(), leaderboard, raceColumn, fleet, null);
|
||||
getRaceLogTrackingAdapter().denoteRaceForRaceLogTracking(getService(), leaderboard, raceColumn, fleet, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void denoteForRaceLogTracking(String leaderboardName) throws Exception {
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
getRaceLogTrackingAdapter().denoteForRaceLogTracking(getService(), leaderboard);
|
||||
getRaceLogTrackingAdapter().denoteLeaderboardForRaceLogTracking(getService(), leaderboard);
|
||||
}
|
||||
|
||||
private RaceLog getRaceLog(String leaderboardName, String raceColumnName, String fleetName) {
|
||||
@@ -4080,16 +4041,6 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return raceColumn.getRaceLog(fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName) {
|
||||
RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName);
|
||||
|
||||
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createStartTrackingEvent(MillisecondsTimePoint.now(),
|
||||
getService().getServerAuthor(), raceLog.getCurrentPassId());
|
||||
|
||||
raceLog.add(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<CompetitorDTO> getCompetitorRegistrations(String leaderboardName, String raceColumnName, String fleetName) {
|
||||
return convertToCompetitorDTOs(
|
||||
@@ -4397,4 +4348,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
raceLog.add(event);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName)
|
||||
throws NotDenotedForRaceLogTrackingException, Exception {
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
||||
Fleet fleet = raceColumn.getFleetByName(fleetName);
|
||||
|
||||
getRaceLogTrackingAdapter().startTracking(getService(), leaderboard, raceColumn, fleet);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user