() {
+ protected Boolean initialValue() {
+ return false;
+ };
+ };
+ }
+
+ public void setMasterDataExportOngoingThreadFlag(boolean flagValue) {
+ ongoingMasterDataExport.set(flagValue);
+ }
+
+ private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+ final boolean masterDataImportOngoing = ois.readBoolean();
+ if (masterDataImportOngoing) {
+ trackedRaces = new HashMap<>();
+ } else {
+ ois.defaultReadObject();
+ }
+ this.ongoingMasterDataExport = createOngoingMasterDataExportThreadLocal();
+ }
+
+ private void writeObject(ObjectOutputStream oos) throws IOException {
+ final Boolean masterDataExportOngoing = ongoingMasterDataExport.get();
+ oos.writeBoolean(masterDataExportOngoing);
+ if (!masterDataExportOngoing) {
+ oos.defaultWriteObject();
+ }
+ }
+
+}
diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogIdentifierTemplate.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogIdentifierTemplate.java
index f97405a6793..35d705f030e 100644
--- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogIdentifierTemplate.java
+++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/RaceLogIdentifierTemplate.java
@@ -9,29 +9,34 @@ import com.sap.sailing.domain.base.Fleet;
*
* {LeaderboardName / RegattaName} + RaceColumnName + FleetName
*
- * As the components of the RaceLogIdentifier are not available on RaceColumn level, we have to propagate the
+ * As the components of the RaceLogIdentifier are not available on RaceColumn level, we have to propagate the
* information in this template data object.
- *
*/
public interface RaceLogIdentifierTemplate extends Serializable {
/**
- * This method returns the name of parent object of the {@link RaceColumn}. This can be a {@link FlexibleLeaderboard} or a {@link Regatta}.
+ * This method returns the name of parent object of the {@link RaceColumn}. This can be a
+ * {@link FlexibleLeaderboard} or a {@link Regatta}.
+ *
* @return the name of the parent object
*/
String getParentObjectName();
/**
- * Compiles the template with giving the last component, the {@link Fleet}, to a RaceLogIdentifier that is used to retrieve the
- * {@link RaceLogEvent}s from a RaceLogStore
- * @param fleet the fleet of the race
+ * Compiles the template with giving the last component, the {@link Fleet}, to a RaceLogIdentifier that is used to
+ * retrieve the {@link RaceLogEvent}s from a RaceLogStore
+ *
+ * @param fleet
+ * the fleet of the race
* @return the RaceLogIdentifier
*/
RaceLogIdentifier compileRaceLogIdentifier(Fleet fleet);
/**
* Resolves this RaceLogIdentifier template for replication with the help of the given resolver.
- * @param resolver the resolver that resolves this template, either for {@link Leaderboard} or for {@link Regatta}.
+ *
+ * @param resolver
+ * the resolver that resolves this template, either for {@link Leaderboard} or for {@link Regatta}.
*/
void resolve(RaceLogIdentifierTemplateResolver resolver);
diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java b/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java
index 3fd17e9b759..32d21ec2be0 100755
--- a/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java
+++ b/java/com.sap.sailing.domain/src/com/sap/sailing/util/impl/RaceColumnListeners.java
@@ -151,11 +151,9 @@ public class RaceColumnListeners implements Serializable {
}
}
- public void notifyListenersAboutRaceLogEventAdded(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier,
- RaceLogEvent event) {
+ public void notifyListenersAboutRaceLogEventAdded(RaceColumn raceColumn, RaceLogIdentifier raceLogIdentifier, RaceLogEvent event) {
for (RaceColumnListener listener : getRaceColumnListeners()) {
listener.raceLogEventAdded(raceColumn, raceLogIdentifier, event);
}
}
-
}
diff --git a/java/com.sap.sailing.gwt.ui/CommonControls.css b/java/com.sap.sailing.gwt.ui/CommonControls.css
index f610d184b15..86ac829d7e7 100644
--- a/java/com.sap.sailing.gwt.ui/CommonControls.css
+++ b/java/com.sap.sailing.gwt.ui/CommonControls.css
@@ -697,6 +697,20 @@ body ::-webkit-scrollbar-track {
background-repeat: no-repeat;
}
+.minMaxBackgroundBarBad {
+ left: 0px;
+ background-image: url(images/redBar.png);
+ background-position: left;
+ background-repeat: no-repeat;
+}
+
+.minMaxBackgroundBarGood {
+ left: 0px;
+ background-image: url(images/greenBar.png);
+ background-position: left;
+ background-repeat: no-repeat;
+}
+
.inlineButton {
height: 20px;
padding: 0px 10px 3px;
diff --git a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF
index 8b2b7c2f023..f0a5a043a25 100755
--- a/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF
+++ b/java/com.sap.sailing.gwt.ui/META-INF/MANIFEST.MF
@@ -25,7 +25,7 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sailing.domain.swisstimingreplayadapter,
com.sap.sailing.simulator;bundle-version="1.0.0",
de.csenk.gwt.ws,
- com.google.gwt.osgi;bundle-version="2.5.1",
+ com.google.gwt.osgi;bundle-version="2.6.0",
com.sap.sailing.domain.igtimiadapter,
com.sap.sailing.datamining.shared;bundle-version="1.0.0",
com.sap.sailing.datamining;bundle-version="1.0.0",
diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling.launch b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling.launch
index 3b48a46e865..0f7980a58d2 100755
--- a/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling.launch
+++ b/java/com.sap.sailing.gwt.ui/SailingGWT Remote Profiling.launch
@@ -1,53 +1,53 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/com.sap.sailing.gwt.ui/SailingGWT.launch b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
index 276fc714052..b23d6c67870 100755
--- a/java/com.sap.sailing.gwt.ui/SailingGWT.launch
+++ b/java/com.sap.sailing.gwt.ui/SailingGWT.launch
@@ -49,7 +49,7 @@
-
+
diff --git a/java/com.sap.sailing.gwt.ui/WEB-INF/lib/gwt-servlet.jar b/java/com.sap.sailing.gwt.ui/WEB-INF/lib/gwt-servlet.jar
index c8ea21f4d48..2e85a1a4b52 100755
Binary files a/java/com.sap.sailing.gwt.ui/WEB-INF/lib/gwt-servlet.jar and b/java/com.sap.sailing.gwt.ui/WEB-INF/lib/gwt-servlet.jar differ
diff --git a/java/com.sap.sailing.gwt.ui/images/greenBar.png b/java/com.sap.sailing.gwt.ui/images/greenBar.png
new file mode 100755
index 00000000000..2b3b6fd5afb
Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/images/greenBar.png differ
diff --git a/java/com.sap.sailing.gwt.ui/images/redBar.png b/java/com.sap.sailing.gwt.ui/images/redBar.png
new file mode 100755
index 00000000000..060f3d81cbc
Binary files /dev/null and b/java/com.sap.sailing.gwt.ui/images/redBar.png differ
diff --git a/java/com.sap.sailing.gwt.ui/images/greyBar.png b/java/com.sap.sailing.gwt.ui/images/yellowBar.png
similarity index 100%
rename from java/com.sap.sailing.gwt.ui/images/greyBar.png
rename to java/com.sap.sailing.gwt.ui/images/yellowBar.png
diff --git a/java/com.sap.sailing.gwt.ui/pom.xml b/java/com.sap.sailing.gwt.ui/pom.xml
index e3fbce9b646..c84263601d1 100644
--- a/java/com.sap.sailing.gwt.ui/pom.xml
+++ b/java/com.sap.sailing.gwt.ui/pom.xml
@@ -10,7 +10,7 @@
com.sap.sailing.gwt.ui
eclipse-plugin
- 2.5.1
+ 2.6.0
@@ -79,7 +79,7 @@
org.codehaus.mojo
gwt-maven-plugin
- 2.5.1
+ 2.6.0
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncAction.java
index 5343f1a9188..88a52adf45b 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncAction.java
@@ -10,13 +10,5 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
* @author c5163874
*/
public interface AsyncAction {
- void execute(AsyncActionsExecutor asyncActionsExecutor);
-
- Result getResult();
-
- AsyncCallback getCallback();
-
- AsyncCallback getWrapperCallback(AsyncActionsExecutor asyncActionsExecutor);
-
- String getType();
+ public void execute(AsyncCallback callback);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncActionsExecutor.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncActionsExecutor.java
index 20589284811..89c7ebf42e1 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncActionsExecutor.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/AsyncActionsExecutor.java
@@ -5,6 +5,10 @@ import java.util.Map;
import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+import com.sap.sailing.gwt.ui.client.MarkedAsyncCallback;
+
/**
* A executor class making the actual remote call for an {@link AsyncAction}. The class is managing the number of
* executed actions in order to prevent a server overload. If the amount of actions to be executed exceeds a defined
@@ -13,42 +17,99 @@ import com.google.gwt.core.client.GWT;
* @author c5163874
*/
public class AsyncActionsExecutor {
- private Map> lastRequestedActions;
- private int numPendingCalls;
+ private class ExecutionJob implements AsyncCallback {
+ private AsyncAction action;
+ private String category;
+ private AsyncCallback callback;
+
+ public ExecutionJob(AsyncAction action, String category, AsyncCallback callback) {
+ this.action = action;
+ this.category = category;
+ this.callback = callback;
+ }
+
+ public String getCategory() {
+ return (this.category == null ? MarkedAsyncCallback.CATEGORY_GLOBAL : this.category);
+ }
+
+ public String getType() {
+ return this.action.getClass().getName();
+ }
+
+ public void execute() {
+ this.action.execute(new MarkedAsyncCallback(this, getCategory()));
+ }
+
+ @Override
+ public void onSuccess(T result) {
+ try {
+ GWT.log("Execution success for action of type: " + getType());
+ this.callback.onSuccess(result);
+ } finally {
+ AsyncActionsExecutor.this.callCompleted(this);
+ }
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ try {
+ GWT.log("Execution failure for action of type: " + getType());
+ this.callback.onFailure(caught);
+ } finally {
+ AsyncActionsExecutor.this.callCompleted(this);
+ }
+ }
+ }
+
private final int maxPendingCalls;
private final int maxPendingCallsPerType;
- private Map actionsPerType;
-
+ private int numPendingCalls = 0;
+ private final Map actionsPerType = new HashMap();
+ private final Map> lastRequestedActions = new HashMap>();
+
+
public AsyncActionsExecutor() {
- numPendingCalls = 0;
- maxPendingCalls = 6;
- maxPendingCallsPerType = 4;
- lastRequestedActions = new HashMap>();
- actionsPerType = new HashMap();
+ this(6, 4);
}
+
+ public AsyncActionsExecutor(int maxPendingCalls, int maxPendingCallsPerType) {
+ this.maxPendingCalls = maxPendingCalls;
+ this.maxPendingCallsPerType = maxPendingCallsPerType;
+ }
+
+ public void execute(AsyncAction action, AsyncCallback callback) {
+ execute(action, MarkedAsyncCallback.CATEGORY_GLOBAL, callback);
+ }
+
+ public void execute(AsyncAction action, String category, AsyncCallback callback) {
+ execute(new ExecutionJob(action, category, callback));
+ }
+
+ private void execute(ExecutionJob> job) {
+ Integer numActionsOfType = actionsPerType.get(job.getType());
+
+ if (numActionsOfType == null) {
+ numActionsOfType = Integer.valueOf(0);
+ }
- public void execute(final AsyncAction action) {
- Integer numActionsOfType = actionsPerType.get(action.getType());
- if (numPendingCalls >= maxPendingCalls || (numActionsOfType != null && numActionsOfType >= maxPendingCallsPerType)) {
- GWT.log("Drop action : " + action.getType());
+ if (numPendingCalls >= maxPendingCalls || (numActionsOfType >= maxPendingCallsPerType)) {
+ GWT.log("Drop action : " + job.getType());
// don't put the call into the execution queue, but save it as the last one of each type
- lastRequestedActions.put(action.getType(), action);
+ lastRequestedActions.put(job.getType(), job);
return;
}
- action.execute(this);
- if (numActionsOfType == null) {
- numActionsOfType = 0;
- }
- actionsPerType.put(action.getType(), numActionsOfType+1);
+
+ actionsPerType.put(job.getType(), numActionsOfType + 1);
numPendingCalls++;
- GWT.log("Execute action: " + action.getType());
- GWT.log("Pending actions counter: " + numPendingCalls);
+
+ job.execute();
}
- protected void callCompleted(String type) {
+ private void callCompleted(ExecutionJob> job) {
+ String type = job.getType();
Integer numActionsPerType = actionsPerType.get(type);
if (numActionsPerType != null && numActionsPerType > 0) {
- actionsPerType.put(type, numActionsPerType-1);
+ actionsPerType.put(type, numActionsPerType - 1);
}
numPendingCalls--;
checkForEmptyCallQueue(type);
@@ -57,7 +118,7 @@ public class AsyncActionsExecutor {
private void checkForEmptyCallQueue(String type) {
Integer numActionsPerType = actionsPerType.get(type);
if (numActionsPerType != null && numActionsPerType < maxPendingCallsPerType && lastRequestedActions.containsKey(type)) {
- AsyncAction> lastRequestedAction = lastRequestedActions.remove(type);
+ ExecutionJob> lastRequestedAction = lastRequestedActions.remove(type);
GWT.log("Set back last action : " + lastRequestedAction.getType());
execute(lastRequestedAction);
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/DefaultAsyncAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/DefaultAsyncAction.java
deleted file mode 100644
index acd6bc53cdf..00000000000
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/DefaultAsyncAction.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.sap.sailing.gwt.ui.actions;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public abstract class DefaultAsyncAction implements AsyncAction {
- private final AsyncCallback callback;
- private Result result;
-
- protected DefaultAsyncAction(AsyncCallback callback) {
- this.callback = callback;
- }
-
- public AsyncCallback getWrapperCallback(final AsyncActionsExecutor asyncActionsExecutor) {
- // Wrap with action callback to hook into the call chain
- AsyncCallback wrapper = new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- String type = DefaultAsyncAction.this.getType();
- GWT.log("Execution failure for action of type: " + type);
- AsyncCallback callback = DefaultAsyncAction.this.getCallback();
- callback.onFailure(caught);
- asyncActionsExecutor.callCompleted(type);
- }
-
- @Override
- public void onSuccess(Result result) {
- String type = DefaultAsyncAction.this.getType();
- GWT.log("Execution success for action of type: " + type);
- AsyncCallback callback = DefaultAsyncAction.this.getCallback();
- callback.onSuccess(result);
- asyncActionsExecutor.callCompleted(type);
- }
- };
- return wrapper;
- }
-
- @Override
- public AsyncCallback getCallback() {
- return callback;
- }
-
- @Override
- public String getType() {
- return getClass().getName();
- }
-
- @Override
- public Result getResult() {
- return result;
- }
-}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCompetitorsRaceDataAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCompetitorsRaceDataAction.java
index 51d23d8b5c5..59aab739b3e 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCompetitorsRaceDataAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCompetitorsRaceDataAction.java
@@ -10,7 +10,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.shared.CompetitorsRaceDataDTO;
-public class GetCompetitorsRaceDataAction extends DefaultAsyncAction {
+public class GetCompetitorsRaceDataAction implements AsyncAction {
private final SailingServiceAsync sailingService;
private final RegattaAndRaceIdentifier raceIdentifier;
private final List competitors;
@@ -23,8 +23,7 @@ public class GetCompetitorsRaceDataAction extends DefaultAsyncAction competitors, Date fromDate, Date toDate, long stepSizeInMs, DetailType detailType,
- String leaderboardGroupName, String leaderboardName, AsyncCallback callback) {
- super(callback);
+ String leaderboardGroupName, String leaderboardName) {
this.sailingService = sailingService;
this.raceIdentifier = raceIdentifier;
this.competitors = competitors;
@@ -37,8 +36,8 @@ public class GetCompetitorsRaceDataAction extends DefaultAsyncAction) getWrapperCallback(asyncActionsExecutor));
+ public void execute(AsyncCallback callback) {
+ sailingService.getCompetitorsRaceData(raceIdentifier, competitors, fromDate, toDate, stepSizeInMs, detailType,
+ leaderboarGroupName, leaderboardName, callback);
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCoursePositionsAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCoursePositionsAction.java
index abe0a7af58b..3d035c957b5 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCoursePositionsAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetCoursePositionsAction.java
@@ -7,21 +7,19 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.shared.CoursePositionsDTO;
-public class GetCoursePositionsAction extends DefaultAsyncAction {
+public class GetCoursePositionsAction implements AsyncAction {
private final SailingServiceAsync sailingService;
private final RegattaAndRaceIdentifier raceIdentifier;
private final Date date;
- public GetCoursePositionsAction(SailingServiceAsync sailingService, RegattaAndRaceIdentifier raceIdentifier, Date date,
- AsyncCallback callback) {
- super(callback);
+ public GetCoursePositionsAction(SailingServiceAsync sailingService, RegattaAndRaceIdentifier raceIdentifier, Date date) {
this.sailingService = sailingService;
this.raceIdentifier = raceIdentifier;
this.date = date;
}
@Override
- public void execute(AsyncActionsExecutor asyncActionsExecutor) {
- sailingService.getCoursePositions(raceIdentifier, date, (AsyncCallback) getWrapperCallback(asyncActionsExecutor));
+ public void execute(AsyncCallback callback) {
+ sailingService.getCoursePositions(raceIdentifier, date, callback);
}
}
\ No newline at end of file
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetLeaderboardByNameAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetLeaderboardByNameAction.java
index 5b07bc2bc68..c762c6be0a9 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetLeaderboardByNameAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetLeaderboardByNameAction.java
@@ -26,7 +26,7 @@ import com.sap.sailing.gwt.ui.client.Timer;
* @author Frank Mittag, Axel Uhl (d043530)
*
*/
-public class GetLeaderboardByNameAction extends DefaultAsyncAction {
+public class GetLeaderboardByNameAction implements AsyncAction {
private final SailingServiceAsync sailingService;
private final String leaderboardName;
private final Date date;
@@ -38,8 +38,7 @@ public class GetLeaderboardByNameAction extends DefaultAsyncAction namesOfRacesForWhichToLoadLegDetails, LeaderboardDTO previousLeaderboard,
- Timer timerToAdjustOffsetIn, ErrorReporter errorReporter, StringMessages stringMessages, AsyncCallback callback) {
- super(callback);
+ Timer timerToAdjustOffsetIn, ErrorReporter errorReporter, StringMessages stringMessages) {
this.sailingService = sailingService;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
@@ -51,16 +50,14 @@ public class GetLeaderboardByNameAction extends DefaultAsyncAction wrapperCallback = getWrapperCallback(asyncActionsExecutor);
+ public void execute(final AsyncCallback callback) {
final long clientTimeWhenRequestWasSent = System.currentTimeMillis();
- sailingService
- .getLeaderboardByName(leaderboardName, date, namesOfRacesForWhichToLoadLegDetails,
+ sailingService.getLeaderboardByName(leaderboardName, date, namesOfRacesForWhichToLoadLegDetails,
previousLeaderboard==null?null:previousLeaderboard.getId(),
new AsyncCallback() {
@Override
public void onFailure(Throwable caught) {
- wrapperCallback.onFailure(caught);
+ callback.onFailure(caught);
}
@Override
@@ -74,7 +71,7 @@ public class GetLeaderboardByNameAction extends DefaultAsyncAction, List>>> {
+public class GetLeaderboardDataEntriesAction implements AsyncAction, List>>> {
private final SailingServiceAsync sailingService;
private final DetailType detailType;
private final String leaderboardName;
private final Date date;
- public GetLeaderboardDataEntriesAction(SailingServiceAsync sailingService, String leaderboardName, Date date, DetailType detailType,
- AsyncCallback, List>>> callback) {
- super(callback);
+ public GetLeaderboardDataEntriesAction(SailingServiceAsync sailingService, String leaderboardName, Date date, DetailType detailType) {
this.sailingService = sailingService;
this.leaderboardName = leaderboardName;
this.date = date;
@@ -25,8 +23,7 @@ public class GetLeaderboardDataEntriesAction extends DefaultAsyncAction, List>>>) getWrapperCallback(asyncActionsExecutor));
+ public void execute(AsyncCallback, List>>> callback) {
+ sailingService.getLeaderboardDataEntriesForAllRaceColumns(leaderboardName, date, detailType, callback);
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetRaceMapDataAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetRaceMapDataAction.java
index 5816ab58b4e..e5492407ecb 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetRaceMapDataAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetRaceMapDataAction.java
@@ -11,7 +11,7 @@ import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
import com.sap.sailing.gwt.ui.shared.RaceMapDataDTO;
-public class GetRaceMapDataAction extends DefaultAsyncAction {
+public class GetRaceMapDataAction implements AsyncAction {
private final SailingServiceAsync sailingService;
private final Iterable allCompetitors;
private final RegattaAndRaceIdentifier raceIdentifier;
@@ -20,10 +20,9 @@ public class GetRaceMapDataAction extends DefaultAsyncAction {
private final boolean extrapolate;
private final Date date;
- public GetRaceMapDataAction(SailingServiceAsync sailingService, Iterable allCompetitors, RegattaAndRaceIdentifier raceIdentifier,
- Date date, Map from, Map to,
- boolean extrapolate, AsyncCallback callback) {
- super(callback);
+ public GetRaceMapDataAction(SailingServiceAsync sailingService, Iterable allCompetitors,
+ RegattaAndRaceIdentifier raceIdentifier, Date date, Map from,
+ Map to, boolean extrapolate) {
this.allCompetitors = allCompetitors;
this.sailingService = sailingService;
this.raceIdentifier = raceIdentifier;
@@ -34,28 +33,28 @@ public class GetRaceMapDataAction extends DefaultAsyncAction {
}
@Override
- public void execute(final AsyncActionsExecutor asyncActionsExecutor) {
- final AsyncCallback wrapperCallback = (AsyncCallback) getWrapperCallback(asyncActionsExecutor);
- AsyncCallback uncompactingCallback = new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- wrapperCallback.onFailure(caught);
- }
-
- @Override
- public void onSuccess(CompactRaceMapDataDTO result) {
- wrapperCallback.onSuccess(result.getRaceMapDataDTO(allCompetitors));
- }
- };
+ public void execute(final AsyncCallback callback) {
Map fromByCompetitorIdAsString = new HashMap();
for (Map.Entry fromEntry : from.entrySet()) {
fromByCompetitorIdAsString.put(fromEntry.getKey().getIdAsString(), fromEntry.getValue());
}
+
Map toByCompetitorIdAsString = new HashMap();
for (Map.Entry toEntry : to.entrySet()) {
toByCompetitorIdAsString.put(toEntry.getKey().getIdAsString(), toEntry.getValue());
}
+
sailingService.getRaceMapData(raceIdentifier, date, fromByCompetitorIdAsString, toByCompetitorIdAsString,
- extrapolate, uncompactingCallback);
+ extrapolate, new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ callback.onFailure(caught);
+ }
+
+ @Override
+ public void onSuccess(CompactRaceMapDataDTO result) {
+ callback.onSuccess(result.getRaceMapDataDTO(allCompetitors));
+ }
+ });
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetWindInfoAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetWindInfoAction.java
index 82ca40c8a68..7254cbf8a37 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetWindInfoAction.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/actions/GetWindInfoAction.java
@@ -8,7 +8,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
-public class GetWindInfoAction extends DefaultAsyncAction {
+public class GetWindInfoAction implements AsyncAction {
private final SailingServiceAsync sailingService;
private final RegattaAndRaceIdentifier raceIdentifier;
private Date from;
@@ -23,9 +23,8 @@ public class GetWindInfoAction extends DefaultAsyncAction {
private enum CallVariants { Variant1, Variant2 };
private final CallVariants callVariant;
- public GetWindInfoAction(SailingServiceAsync sailingService, RegattaAndRaceIdentifier raceIdentifier, Date from, long millisecondsStepWidth,
- int numberOfFixes, Collection windSourceTypeNames, AsyncCallback callback) {
- super(callback);
+ public GetWindInfoAction(SailingServiceAsync sailingService, RegattaAndRaceIdentifier raceIdentifier, Date from,
+ long millisecondsStepWidth, int numberOfFixes, Collection windSourceTypeNames) {
this.sailingService = sailingService;
this.raceIdentifier = raceIdentifier;
this.from = from;
@@ -36,9 +35,7 @@ public class GetWindInfoAction extends DefaultAsyncAction {
}
public GetWindInfoAction(SailingServiceAsync sailingService, RegattaAndRaceIdentifier raceIdentifier, Date fromDate,
- Date toDate, long resolutionInMilliseconds, Collection windSourceTypeNames,
- AsyncCallback callback) {
- super(callback);
+ Date toDate, long resolutionInMilliseconds, Collection windSourceTypeNames) {
this.sailingService = sailingService;
this.raceIdentifier = raceIdentifier;
this.fromDate = fromDate;
@@ -49,13 +46,13 @@ public class GetWindInfoAction extends DefaultAsyncAction {
}
@Override
- public void execute(AsyncActionsExecutor asyncActionsExecutor) {
+ public void execute(AsyncCallback callback) {
switch (callVariant) {
case Variant1:
- sailingService.getAveragedWindInfo(raceIdentifier, from, millisecondsStepWidth, numberOfFixes, windSourceTypeNames, (AsyncCallback) getWrapperCallback(asyncActionsExecutor));
+ sailingService.getAveragedWindInfo(raceIdentifier, from, millisecondsStepWidth, numberOfFixes, windSourceTypeNames, callback);
break;
case Variant2:
- sailingService.getAveragedWindInfo(raceIdentifier, fromDate, toDate, resolutionInMilliseconds, windSourceTypeNames, (AsyncCallback) getWrapperCallback(asyncActionsExecutor));
+ sailingService.getAveragedWindInfo(raceIdentifier, fromDate, toDate, resolutionInMilliseconds, windSourceTypeNames, callback);
break;
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java
index dfcaa47b45b..1bbc626bbc2 100644
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/AbstractTrackedRacesListComposite.java
@@ -16,6 +16,7 @@ import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
+import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
@@ -382,19 +383,21 @@ public abstract class AbstractTrackedRacesListComposite extends SimplePanel impl
if (raceIdentifiersToUpdate != null && !raceIdentifiersToUpdate.isEmpty()) {
sailingService.updateRacesDelayToLive(raceIdentifiersToUpdate, settings.getDelayToLiveInSeconds() * 1000l,
- new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable caught) {
- errorReporter
- .reportError("Exception trying to set the delay to live for the selected tracked races: "
- + caught.getMessage());
- }
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ errorReporter.reportError(
+ "Exception trying to set the delay to live for the selected tracked races: "
+ + caught.getMessage());
+ }
- @Override
- public void handleSuccess(Void result) {
- regattaRefresher.fillRegattas();
- }
- });
+ @Override
+ public void onSuccess(Void result) {
+ regattaRefresher.fillRegattas();
+ }
+ }
+ ));
}
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
index d545fc105e6..7412e6366c6 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/LeaderboardConfigPanel.java
@@ -610,19 +610,20 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
protected void openUpdateFlexibleLeaderboardDialog(final StrippedLeaderboardDTO leaderboardDTO, final List otherExistingLeaderboard,
final String oldLeaderboardName, final LeaderboardDescriptor descriptor) {
- sailingService.getEvents(new AsyncCallback>() {
- @Override
- public void onSuccess(List result) {
- openUpdateFlexibleLeaderboardDialog(leaderboardDTO, otherExistingLeaderboard, oldLeaderboardName,
- descriptor, result);
- }
-
- @Override
- public void onFailure(Throwable caught) {
- openUpdateFlexibleLeaderboardDialog(leaderboardDTO, otherExistingLeaderboard, oldLeaderboardName,
- descriptor, new ArrayList());
- }
- });
+ sailingService.getEvents(new MarkedAsyncCallback>(
+ new AsyncCallback>() {
+ @Override
+ public void onSuccess(List result) {
+ openUpdateFlexibleLeaderboardDialog(leaderboardDTO, otherExistingLeaderboard, oldLeaderboardName,
+ descriptor, result);
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ openUpdateFlexibleLeaderboardDialog(leaderboardDTO, otherExistingLeaderboard, oldLeaderboardName,
+ descriptor, new ArrayList());
+ }
+ }));
}
protected void openUpdateFlexibleLeaderboardDialog(StrippedLeaderboardDTO leaderboardDTO, List otherExistingLeaderboard,
@@ -654,24 +655,25 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
}
public void loadLeaderboards() {
- sailingService.getLeaderboards(new MarkedAsyncCallback>() {
- @Override
- public void handleSuccess(List leaderboards) {
- leaderboardList.getList().clear();
- availableLeaderboardList.clear();
- leaderboardList.getList().addAll(leaderboards);
- availableLeaderboardList.addAll(leaderboards);
- filterLeaderboardPanel.updateAll(availableLeaderboardList);
- leaderboardSelectionChanged();
- leaderboardRaceColumnSelectionChanged();
- }
-
- @Override
- public void handleFailure(Throwable t) {
- LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to obtain list of leaderboards: "
- + t.getMessage());
- }
- });
+ sailingService.getLeaderboards(new MarkedAsyncCallback>(
+ new AsyncCallback>() {
+ @Override
+ public void onSuccess(List leaderboards) {
+ leaderboardList.getList().clear();
+ availableLeaderboardList.clear();
+ leaderboardList.getList().addAll(leaderboards);
+ availableLeaderboardList.addAll(leaderboards);
+ filterLeaderboardPanel.updateAll(availableLeaderboardList);
+ leaderboardSelectionChanged();
+ leaderboardRaceColumnSelectionChanged();
+ }
+
+ @Override
+ public void onFailure(Throwable t) {
+ LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to obtain list of leaderboards: "
+ + t.getMessage());
+ }
+ }));
}
/**
@@ -680,31 +682,32 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
* after the refresh has successfully completed. See {@link #selectRaceColumn(String)}.
*/
public void loadAndRefreshLeaderboard(final String leaderboardName, final String nameOfRaceColumnToSelect) {
- sailingService.getLeaderboard(leaderboardName, new MarkedAsyncCallback() {
- @Override
- public void handleSuccess(StrippedLeaderboardDTO leaderboard) {
- for (StrippedLeaderboardDTO leaderboardDTO : leaderboardSelectionModel.getSelectedSet()) {
- if (leaderboardDTO.name.equals(leaderboardName)) {
- leaderboardSelectionModel.setSelected(leaderboardDTO, false);
- break;
- }
- }
-
- replaceLeaderboardInList(leaderboardList.getList(), leaderboardName, leaderboard);
- replaceLeaderboardInList(availableLeaderboardList, leaderboardName, leaderboard);
- leaderboardSelectionModel.setSelected(leaderboard, true);
- if (nameOfRaceColumnToSelect != null) {
- selectRaceColumn(nameOfRaceColumnToSelect);
- }
- leaderboardSelectionChanged();
- }
-
- @Override
- public void handleFailure(Throwable t) {
- LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to update leaderboard with name " + leaderboardName + " : "
- + t.getMessage());
- }
- });
+ sailingService.getLeaderboard(leaderboardName, new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onSuccess(StrippedLeaderboardDTO leaderboard) {
+ for (StrippedLeaderboardDTO leaderboardDTO : leaderboardSelectionModel.getSelectedSet()) {
+ if (leaderboardDTO.name.equals(leaderboardName)) {
+ leaderboardSelectionModel.setSelected(leaderboardDTO, false);
+ break;
+ }
+ }
+
+ replaceLeaderboardInList(leaderboardList.getList(), leaderboardName, leaderboard);
+ replaceLeaderboardInList(availableLeaderboardList, leaderboardName, leaderboard);
+ leaderboardSelectionModel.setSelected(leaderboard, true);
+ if (nameOfRaceColumnToSelect != null) {
+ selectRaceColumn(nameOfRaceColumnToSelect);
+ }
+ leaderboardSelectionChanged();
+ }
+
+ @Override
+ public void onFailure(Throwable t) {
+ LeaderboardConfigPanel.this.errorReporter.reportError("Error trying to update leaderboard with name " + leaderboardName + " : "
+ + t.getMessage());
+ }
+ }));
}
private void replaceLeaderboardInList(List leaderboardList, String leaderboardToReplace, StrippedLeaderboardDTO newLeaderboard) {
@@ -723,20 +726,21 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
private void unlinkRaceColumnFromTrackedRace(final String raceColumnName, final FleetDTO fleet) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName, fleet.getName(),
- new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable t) {
- errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumnName
- + " from leaderboard " + selectedLeaderboardName + ": " + t.getMessage());
- }
-
- @Override
- public void handleSuccess(Void arg0) {
- trackedRacesListComposite.clearSelection();
- getSelectedRaceColumnWithFleet().getA().setRaceIdentifier(fleet, null);
- raceColumnAndFleetList.refresh();
- }
- });
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable t) {
+ errorReporter.reportError("Error trying to unlink tracked race from column " + raceColumnName
+ + " from leaderboard " + selectedLeaderboardName + ": " + t.getMessage());
+ }
+
+ @Override
+ public void onSuccess(Void arg0) {
+ trackedRacesListComposite.clearSelection();
+ getSelectedRaceColumnWithFleet().getA().setRaceIdentifier(fleet, null);
+ raceColumnAndFleetList.refresh();
+ }
+ }));
}
private void setStartTime(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO) {
@@ -766,16 +770,18 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
private void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
- sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO, new AsyncCallback() {
- @Override
- public void onFailure(Throwable caught) {
- errorReporter.reportError(caught.getMessage(), true);
- }
- @Override
- public void onSuccess(RaceLogDTO result) {
- openRaceLogDialog(result);
- }
- });
+ sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ errorReporter.reportError(caught.getMessage(), true);
+ }
+ @Override
+ public void onSuccess(RaceLogDTO result) {
+ openRaceLogDialog(result);
+ }
+ }));
}
private void openRaceLogDialog(RaceLogDTO raceLogDTO) {
@@ -793,38 +799,40 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
private void refreshRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleet, final boolean showAlerts) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
- sailingService.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet, new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable caught) {
- if (showAlerts) {
- errorReporter.reportError(caught.getMessage());
- }
- }
- @Override
- public void handleSuccess(Void result) {
- if (showAlerts) {
- Window.alert(stringMessages.raceLogReloaded());
- }
- }
- });
+ sailingService.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet, new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ if (showAlerts) {
+ errorReporter.reportError(caught.getMessage());
+ }
+ }
+ @Override
+ public void onSuccess(Void result) {
+ if (showAlerts) {
+ Window.alert(stringMessages.raceLogReloaded());
+ }
+ }
+ }));
}
private void removeRaceColumn(final RaceColumnDTO raceColumnDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String raceColumnString = raceColumnDTO.getRaceColumnName();
sailingService.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
- new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable t) {
- errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumnDTO
- + " in leaderboard " + getSelectedLeaderboardName() + ": " + t.getMessage());
- }
-
- @Override
- public void handleSuccess(Void arg0) {
- loadAndRefreshLeaderboard(selectedLeaderboardName, /* raceColumnNameToSelect */ null);
- }
- });
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable t) {
+ errorReporter.reportError("Error trying to remove leaderboard race column " + raceColumnDTO
+ + " in leaderboard " + getSelectedLeaderboardName() + ": " + t.getMessage());
+ }
+
+ @Override
+ public void onSuccess(Void arg0) {
+ loadAndRefreshLeaderboard(selectedLeaderboardName, /* raceColumnNameToSelect */ null);
+ }
+ }));
}
/**
@@ -835,19 +843,20 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
- new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable caught) {
- errorReporter.reportError("Error trying to move leaderboard race column "
- + selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName()
- + " down: " + caught.getMessage());
- }
-
- @Override
- public void handleSuccess(Void result) {
- loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
- }
- });
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ errorReporter.reportError("Error trying to move leaderboard race column "
+ + selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName()
+ + " down: " + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
+ }
+ }));
}
/**
@@ -858,19 +867,20 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String selectedRaceColumnName = raceColumnTableSelectionModel.getSelectedObject().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
- new MarkedAsyncCallback() {
- @Override
- public void handleFailure(Throwable caught) {
- errorReporter.reportError("Error trying to move leaderboard race column "
- + selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName() + " up: "
- + caught.getMessage());
- }
-
- @Override
- public void handleSuccess(Void result) {
- loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
- }
- });
+ new MarkedAsyncCallback(
+ new AsyncCallback() {
+ @Override
+ public void onFailure(Throwable caught) {
+ errorReporter.reportError("Error trying to move leaderboard race column "
+ + selectedRaceColumnName + " in leaderboard " + getSelectedLeaderboardName() + " up: "
+ + caught.getMessage());
+ }
+
+ @Override
+ public void onSuccess(Void result) {
+ loadAndRefreshLeaderboard(selectedLeaderboardName, selectedRaceColumnName);
+ }
+ }));
}
private void leaderboardRaceColumnSelectionChanged() {
@@ -903,29 +913,30 @@ public class LeaderboardConfigPanel extends FormPanel implements SelectedLeaderb
final String selectedRaceColumnName = selectedRaceColumnAndFleetNameInLeaderboard.getA().getRaceColumnName();
final String selectedFleetName = selectedRaceColumnAndFleetNameInLeaderboard.getB().getName();
sailingService.getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
- selectedRaceColumnName, new MarkedAsyncCallback