diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java index 9c437bdd4be..c2e50bea7ce 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardEntryPoint.java @@ -136,6 +136,8 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint implements @Override public void onSuccess(Iterable result) { + final Function sailingServiceFactory = leaderboardName -> SailingServiceHelper + .createSailingServiceInstance(() -> leaderboardName); if (leaderboardDTO.type.isMetaLeaderboard()) { // overall MetaLeaderboardPerspectiveLifecycle rootComponentLifeCycle = new MetaLeaderboardPerspectiveLifecycle( @@ -148,9 +150,6 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint implements public void onSuccess( PerspectiveCompositeSettings defaultSettings) { configureWithSettings(defaultSettings, timer); - - Function sailingServiceFactory = leaderboardName -> SailingServiceHelper - .createSailingServiceInstance(() -> leaderboardName); final MetaLeaderboardViewer leaderboardViewer = new MetaLeaderboardViewer( null, context, rootComponentLifeCycle, defaultSettings, sailingServiceFactory, new AsyncActionsExecutor(), timer, null, @@ -195,7 +194,7 @@ public class LeaderboardEntryPoint extends AbstractSailingEntryPoint implements configureWithSettings(defaultSettings, timer); final MultiRaceLeaderboardViewer leaderboardViewer = new MultiRaceLeaderboardViewer( null, context, rootComponentLifeCycle, - defaultSettings, getSailingService(), + defaultSettings, sailingServiceFactory, new AsyncActionsExecutor(), timer, leaderboardGroupName, leaderboardName, LeaderboardEntryPoint.this, getStringMessages(), diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java index 94f27ef61df..12398a44c0a 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/MultiRaceLeaderboardViewer.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.ui.leaderboard; import java.util.List; +import java.util.function.Function; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -36,12 +37,12 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer> componentContext, LeaderboardPerspectiveLifecycle lifecycle, PerspectiveCompositeSettings settings, - final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, + final Function sailingServiceFactory, final AsyncActionsExecutor asyncActionsExecutor, final Timer timer, final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, DetailType chartDetailType, Iterable availableDetailTypes) { this(parent, componentContext, lifecycle, settings, new CompetitorSelectionModel(/* hasMultiSelection */true), - sailingService, asyncActionsExecutor, timer, + sailingServiceFactory, asyncActionsExecutor, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, chartDetailType, availableDetailTypes); } @@ -51,13 +52,16 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer settings, CompetitorSelectionModel competitorSelectionModel, - final SailingServiceAsync sailingService, final AsyncActionsExecutor asyncActionsExecutor, + final Function sailingServiceFactory, final AsyncActionsExecutor asyncActionsExecutor, final Timer timer, final String leaderboardGroupName, String leaderboardName, final ErrorReporter errorReporter, final StringMessages stringMessages, DetailType chartDetailType, Iterable availableDetailTypes) { super(parent, componentContext, lifecycle, settings, competitorSelectionModel, asyncActionsExecutor, timer, stringMessages); - init(new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingService, asyncActionsExecutor, + + final SailingServiceAsync sailingServiceForMainLeaderboard = sailingServiceFactory.apply(leaderboardName); + + init(new MultiRaceLeaderboardPanel(this, getComponentContext(), sailingServiceForMainLeaderboard, asyncActionsExecutor, settings.findSettingsByComponentId(LeaderboardPanelLifecycle.ID), false, competitorSelectionModel, timer, leaderboardGroupName, leaderboardName, errorReporter, stringMessages, settings.getPerspectiveOwnSettings().isShowRaceDetails(), @@ -71,9 +75,8 @@ public class MultiRaceLeaderboardViewer extends AbstractLeaderboardViewer>( + if (perspectiveSettings.isShowOverallLeaderboard()) { + sailingServiceForMainLeaderboard.getOverallLeaderboardNamesContaining(leaderboardName, new MarkedAsyncCallback>( new AsyncCallback>() { @Override public void onSuccess(List result) { - if(result.size() == 1) { + if (result.size() == 1) { String overallLeaderboardName = result.get(0); + final SailingServiceAsync sailingServiceForOverallLeaderboard = sailingServiceFactory.apply(overallLeaderboardName); overallLeaderboardPanel = new OverallLeaderboardPanel(MultiRaceLeaderboardViewer.this, - getComponentContext(), sailingService, + getComponentContext(), sailingServiceForOverallLeaderboard, asyncActionsExecutor, settings.findSettingsByComponentId(OverallLeaderboardPanelLifecycle.ID), false, competitorSelectionProvider, timer,