From 82f9ba3af109c813868f7362d16d552f103b7bee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20M=C3=BC=C3=9Feler?= Date: Thu, 7 Dec 2017 13:37:24 +0100 Subject: [PATCH] created PairingListEntryPoint to show Pairing list --- .../domain/common/dto/PairingListDTO.java | 21 ++++ java/com.sap.sailing.gwt.ui/PairingList.css | 18 ---- .../sailing/gwt/ui/client/SailingService.java | 4 + .../gwt/ui/client/SailingServiceAsync.java | 4 + .../sailing/gwt/ui/client/StringMessages.java | 1 + .../gwt/ui/client/StringMessages.properties | 1 + .../ui/client/StringMessages_de.properties | 1 + .../PairingListContextDefinition.java | 34 +++++++ .../ui/pairinglist/PairingListEntryPoint.java | 95 ++++++++++++++++++- .../gwt/ui/server/SailingServiceImpl.java | 67 +++++++------ .../sailing/server/RacingEventService.java | 3 + .../server/impl/RacingEventServiceImpl.java | 33 ++++++- 12 files changed, 224 insertions(+), 58 deletions(-) create mode 100644 java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/PairingListDTO.java create mode 100644 java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListContextDefinition.java diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/PairingListDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/PairingListDTO.java new file mode 100644 index 00000000000..72b6d4a6ce3 --- /dev/null +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/PairingListDTO.java @@ -0,0 +1,21 @@ +package com.sap.sailing.domain.common.dto; + +import java.io.Serializable; +import java.util.List; + +public class PairingListDTO implements Serializable{ + + private static final long serialVersionUID = 102220422437194196L; + // TODO set Pair of competitors and boats + private List>> pairingList; + + public PairingListDTO() { } + + public PairingListDTO(List>> competitors) { + this.pairingList = competitors; + } + + public List>> getPairingList() { + return pairingList; + } +} diff --git a/java/com.sap.sailing.gwt.ui/PairingList.css b/java/com.sap.sailing.gwt.ui/PairingList.css index 1c018005ddb..1c3ded8ff6f 100644 --- a/java/com.sap.sailing.gwt.ui/PairingList.css +++ b/java/com.sap.sailing.gwt.ui/PairingList.css @@ -43,24 +43,6 @@ h1 { table { border-collapse: separate; } -.leaderboardContent { -} - -.leaderboardContent td, .leaderboardContent th { -/* vertical-align: bottom; */ - line-height: 1.3; -/* padding-top: 2px; */ -} - -.leaderboardContent-toolbar { - -} - -.leaderboardLabel { - border-bottom: 2px solid #007dc0; - font-weight: bold; - margin: 5px; - } .refreshAndSettings { background: #f2f2f2; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 85aa64d43e1..cb2a6e2876f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -35,6 +35,7 @@ import com.sap.sailing.domain.common.dto.BoatDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO; +import com.sap.sailing.domain.common.dto.PairingListDTO; import com.sap.sailing.domain.common.dto.PairingListTemplateDTO; import com.sap.sailing.domain.common.dto.PersonDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -698,6 +699,9 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS PairingListTemplateDTO calculatePairingList(StrippedLeaderboardDTO leaderboardDTO, int competitorsCount, int flightMultiplier) throws NotFoundException,IllegalArgumentException; + PairingListDTO getPairingListFromTemplate(PairingListTemplateDTO pairingListTemplateDTO, StrippedLeaderboardDTO leaderboardDTO) + throws NotFoundException; + void fillRaceLogsFromPairingListTemplate(PairingListTemplateDTO pairingListTemplateDTO, StrippedLeaderboardDTO leaderboardDTO) throws NotFoundException, CompetitorRegistrationOnRaceLogDisabledException; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 0b5170085c1..f6e27346a2b 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -31,6 +31,7 @@ import com.sap.sailing.domain.common.dto.BoatDTO; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.FleetDTO; import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO; +import com.sap.sailing.domain.common.dto.PairingListDTO; import com.sap.sailing.domain.common.dto.PairingListTemplateDTO; import com.sap.sailing.domain.common.dto.PersonDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -876,6 +877,9 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan void calculatePairingList(StrippedLeaderboardDTO leaderboardDTO, int competitorCount, int flightMultiplier, AsyncCallback callback) throws NotFoundException,IllegalArgumentException ; + void getPairingListFromTemplate(PairingListTemplateDTO pairingListTemplateDTO, StrippedLeaderboardDTO leaderboardDTO, + AsyncCallback callback); + void fillRaceLogsFromPairingListTemplate(PairingListTemplateDTO pairingListTemplateDTO, StrippedLeaderboardDTO leaderboardDTO, AsyncCallback callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java index ad9294ecef0..451b67c46c7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java @@ -346,6 +346,7 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, String showWindSpeedSeries(); String showWindDirectionSeries(); String fleet(); + String boat(); String boatClass(); String setDelayToLive(); String pleaseEnterNonEmptyVenue(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties index 2f125b2bf4c..977cb22dcc7 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties @@ -357,6 +357,7 @@ replicatingFromMaster=Replicating from master {0}:{2}, messaging port {3}:{1}, e showWindSpeedSeries=Show wind speed data showWindDirectionSeries=Show wind directions data fleet=Fleet +boat=Boat boatClass=Boat Class setDelayToLive=Set delay to live pleaseEnterNonEmptyVenue=Please enter a venue. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties index 5490bad1198..b29132da81d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties @@ -358,6 +358,7 @@ replicatingFromMaster=Repliziert von master {0}:{2}, Messaging Port {3}:{1}, Exc showWindSpeedSeries=Daten für Windgeschwindigkeit zeigen showWindDirectionSeries=Daten für Windrichtung zeigen fleet=Flotte +boat=Boot boatClass=Bootsklasse setDelayToLive=Verzögerung zu ''Live'' setzen pleaseEnterNonEmptyVenue=Bitte geben sie einen Veranstaltungsort ein. diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListContextDefinition.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListContextDefinition.java new file mode 100644 index 00000000000..115712e9955 --- /dev/null +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListContextDefinition.java @@ -0,0 +1,34 @@ +package com.sap.sailing.gwt.ui.pairinglist; + +import com.sap.sse.common.settings.generic.AbstractGenericSerializableSettings; +import com.sap.sse.common.settings.generic.IntegerSetting; +import com.sap.sse.common.settings.generic.StringSetting; + +public class PairingListContextDefinition extends AbstractGenericSerializableSettings { + + private static final long serialVersionUID = 6206953942932913058L; + + private transient StringSetting leaderboardName; + private transient IntegerSetting flightMultiplier; + + public PairingListContextDefinition() { } + + public PairingListContextDefinition(String leaderboardName, int flightMultiplier) { + this.leaderboardName.setValue(leaderboardName); + this.flightMultiplier.setValue(flightMultiplier); + } + + @Override + protected void addChildSettings() { + this.leaderboardName = new StringSetting("leaderboardName", this); + this.flightMultiplier = new IntegerSetting("flightMultiplier", this); + } + + public String getLeaderboardName() { + return this.leaderboardName.getValue(); + } + + public int getFlightMultiplier() { + return this.flightMultiplier.getValue(); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java index 251d937ad63..56cd840dec0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/pairinglist/PairingListEntryPoint.java @@ -1,17 +1,32 @@ package com.sap.sailing.gwt.ui.pairinglist; +import java.util.List; + +import com.google.gwt.dom.client.Style; +import com.google.gwt.dom.client.Style.TextAlign; import com.google.gwt.dom.client.Style.Unit; +import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.DockLayoutPanel; +import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.RootLayoutPanel; import com.google.gwt.user.client.ui.ScrollPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; +import com.sap.sailing.domain.common.dto.CompetitorDTO; +import com.sap.sailing.domain.common.dto.PairingListDTO; +import com.sap.sailing.domain.common.dto.PairingListTemplateDTO; import com.sap.sailing.gwt.common.authentication.FixedSailingAuthentication; import com.sap.sailing.gwt.common.authentication.SAPSailingHeaderWithAuthentication; import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint; +import com.sap.sailing.gwt.ui.client.StringMessages; +import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO; +import com.sap.sse.gwt.settings.SettingsToUrlSerializer; public class PairingListEntryPoint extends AbstractSailingEntryPoint { + private PairingListContextDefinition pairingListContextDefinition; + @Override protected void doOnModuleLoad() { super.doOnModuleLoad(); @@ -23,17 +38,89 @@ public class PairingListEntryPoint extends AbstractSailingEntryPoint { DockLayoutPanel mainPanel = new DockLayoutPanel(Unit.PX); RootLayoutPanel.get().add(mainPanel); - SAPSailingHeaderWithAuthentication header = new SAPSailingHeaderWithAuthentication("PairingList"); + SAPSailingHeaderWithAuthentication header = new SAPSailingHeaderWithAuthentication(getStringMessages().pairingLists()); new FixedSailingAuthentication(getUserService(), header.getAuthenticationMenuView()); mainPanel.addNorth(header, 75); - mainPanel.add(new ScrollPanel(createPairingListPanel())); + pairingListContextDefinition = new SettingsToUrlSerializer() + .deserializeFromCurrentLocation(new PairingListContextDefinition()); + + sailingService.getLeaderboard(pairingListContextDefinition.getLeaderboardName(), new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + try { + throw caught; + } catch (Throwable e) { + e.printStackTrace(); + } + } + + @Override + public void onSuccess(StrippedLeaderboardDTO result) { + PairingListTemplateDTO pairingListTemplateDTO = new PairingListTemplateDTO(result.competitorsCount, + pairingListContextDefinition.getFlightMultiplier()); + + sailingService.getPairingListFromTemplate(pairingListTemplateDTO, result, new AsyncCallback() { + + @Override + public void onSuccess(PairingListDTO result) { + mainPanel.add(createPairingListPanel(result)); + } + + @Override + public void onFailure(Throwable caught) { + try { + throw caught; + } catch (Throwable e) { + e.printStackTrace(); + } + } + }); + } + }); } - private Widget createPairingListPanel() { + private Widget createPairingListPanel(PairingListDTO pairingListDTO) { VerticalPanel pairingListPanel = new VerticalPanel(); + pairingListPanel.ensureDebugId("PairingListPanel"); + pairingListPanel.getElement().setPropertyString("overflow", "auto"); - // TODO show pairing list + final int flightCount = pairingListDTO.getPairingList().size(); + final int groupCount = pairingListDTO.getPairingList().get(0).size(); + final int boatCount = pairingListDTO.getPairingList().get(0).get(0).size(); + + Grid pairingListGrid = new Grid(flightCount * groupCount + 1, boatCount + 1); + pairingListGrid.setCellPadding(15); + + int groupCounter = 1; + int boatCounter = 1; + + for (int i = 1; i <= boatCount; i++) { + pairingListGrid.setWidget(0, i, new Label(getStringMessages().boat() + " " + String.valueOf(i))); + pairingListGrid.getCellFormatter().getElement(0, i).getStyle().setTextAlign(TextAlign.CENTER); + } + + for (List> flight : pairingListDTO.getPairingList()) { + for (List group : flight) { + pairingListGrid.setWidget(groupCounter, 0, new Label(getStringMessages().fleet() + " " + String.valueOf(groupCounter))); + boatCounter = 1; + for (CompetitorDTO competitorDTO : group) { + pairingListGrid.setWidget(groupCounter, boatCounter, new Label(competitorDTO.getSailID())); + + pairingListGrid.getCellFormatter().getElement(groupCounter, boatCounter).getStyle() + .setFontWeight(Style.FontWeight.BOLD); + pairingListGrid.getCellFormatter().getElement(groupCounter, boatCounter).getStyle() + .setTextAlign(TextAlign.CENTER); + pairingListGrid.getCellFormatter().getElement(groupCounter, boatCounter).getStyle() + .setPadding(5, Unit.PX); + boatCounter++; + } + groupCounter++; + } + } + + pairingListPanel.add(pairingListGrid); return pairingListPanel; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 2d500d22ed4..c7b75775433 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -199,6 +199,7 @@ import com.sap.sailing.domain.common.dto.FullLeaderboardDTO; import com.sap.sailing.domain.common.dto.IncrementalLeaderboardDTO; import com.sap.sailing.domain.common.dto.IncrementalOrFullLeaderboardDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.PairingListDTO; import com.sap.sailing.domain.common.dto.PairingListTemplateDTO; import com.sap.sailing.domain.common.dto.PersonDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; @@ -493,7 +494,6 @@ import com.sap.sse.gwt.shared.replication.ReplicaDTO; import com.sap.sse.gwt.shared.replication.ReplicationMasterDTO; import com.sap.sse.gwt.shared.replication.ReplicationStateDTO; import com.sap.sse.i18n.ResourceBundleStringMessages; -import com.sap.sse.pairinglist.CompetitionFormat; import com.sap.sse.pairinglist.PairingList; import com.sap.sse.pairinglist.PairingListTemplate; import com.sap.sse.replication.OperationWithResult; @@ -6792,10 +6792,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public PairingListTemplateDTO calculatePairingList(StrippedLeaderboardDTO leaderboardDTO, int competitorsCount, - int flightMultiplier) throws NotFoundException,IllegalArgumentException { - if(!(getLeaderboardByName(leaderboardDTO.getName()) instanceof LeaderboardThatHasRegattaLike)){ - throw new IllegalArgumentException("This Leaderboard is not suiteable for a Pairinglist!"); - } + int flightMultiplier) { PairingListTemplate template = getService().createPairingListFromRegatta(leaderboardDTO, competitorsCount, flightMultiplier); int flightCount = leaderboardDTO.getRaceColumnsCount(); @@ -6804,41 +6801,41 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S competitorsCount, flightMultiplier, template.getPairingListTemplate(), template.getQuality()); } + @Override + public PairingListDTO getPairingListFromTemplate(PairingListTemplateDTO pairingListTemplateDTO, + StrippedLeaderboardDTO leaderboardDTO) throws NotFoundException { + Leaderboard leaderboard = getLeaderboardByName(leaderboardDTO.getName()); + + PairingListTemplate pairingListTemplate = getService().createPairingListFromRegatta(leaderboardDTO, + pairingListTemplateDTO.getCompetitorCount(), pairingListTemplateDTO.getFlightMultiplier()); + PairingList pairingList = + getService().getPairingListFromTemplate(pairingListTemplate, leaderboard); + + List>> result = new ArrayList<>(); + + for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { + List> fleets = new ArrayList<>(); + for (Fleet fleet : raceColumn.getFleets()) { + fleets.add(this.convertToCompetitorDTOs(pairingList.getCompetitors(raceColumn, fleet))); + } + result.add(fleets); + } + + return new PairingListDTO(result); + } + + // TODO remove StrippedLeaderboardDTO @Override public void fillRaceLogsFromPairingListTemplate(PairingListTemplateDTO pairingListTemplateDTO, StrippedLeaderboardDTO leaderboardDTO) throws NotFoundException, CompetitorRegistrationOnRaceLogDisabledException { - PairingListTemplate template = getService().createPairingListFromRegatta(leaderboardDTO, pairingListTemplateDTO.getCompetitorCount(), + + PairingListTemplate pairingListTemplate = getService().createPairingListFromRegatta(leaderboardDTO, pairingListTemplateDTO.getCompetitorCount(), pairingListTemplateDTO.getFlightMultiplier()); + Leaderboard leaderboard = getLeaderboardByName(leaderboardDTO.getName()); - if(pairingListTemplateDTO.getFlightMultiplier()>1){ - //FIXME type cast... - LeaderboardThatHasRegattaLike leaderboardThatHasRegattaLike = (LeaderboardThatHasRegattaLike) leaderboard; - leaderboardThatHasRegattaLike.getRegattaLike().setFleetsCanRunInParallelToTrue(); - //TODO Warning to user - } - PairingList pairingList = template.createPairingList(new CompetitionFormat() { - - @Override - public Iterable getFlights() { - return leaderboard.getRaceColumns(); - } - - @Override - public Iterable getCompetitors() { - return leaderboard.getAllCompetitors(); - } - - @Override - public Iterable getGroups(RaceColumn flight) { - // FIXME - return (Iterable) leaderboard.getRaceColumnByName(flight.getName()).getFleets(); - } - - @Override - public int getGroupsCount() { - return Util.size(Util.get(leaderboard.getRaceColumns(), 0).getFleets()); - } - }); + + PairingList pairingList = getService().getPairingListFromTemplate(pairingListTemplate, leaderboard); + for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { for (Fleet fleet : raceColumn.getFleets()) { Set competitors = new HashSet(this.convertToCompetitorDTOs(pairingList.getCompetitors(raceColumn, fleet))); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java index 2a97a295dc5..ea9b45c61f9 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/RacingEventService.java @@ -97,6 +97,7 @@ import com.sap.sse.common.search.KeywordQuery; import com.sap.sse.common.search.Result; import com.sap.sse.common.search.Searchable; import com.sap.sse.filestorage.FileStorageManagementService; +import com.sap.sse.pairinglist.PairingList; import com.sap.sse.pairinglist.PairingListTemplate; import com.sap.sse.replication.impl.ReplicableWithObjectInputStream; import com.sap.sse.shared.media.ImageDescriptor; @@ -827,4 +828,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch */ PairingListTemplate createPairingListFromRegatta(AbstractLeaderboardDTO leaderboardDTO, int competitorsCount, int flightMultiplier); + + PairingList getPairingListFromTemplate(PairingListTemplate pairingListTemplate, Leaderboard leaderboard); } diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java index f512a74ab47..b5dba827165 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RacingEventServiceImpl.java @@ -1,6 +1,6 @@ package com.sap.sailing.server.impl; -import java.io.BufferedReader; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -259,7 +259,9 @@ import com.sap.sse.common.search.ResultImpl; import com.sap.sse.concurrent.LockUtil; import com.sap.sse.concurrent.NamedReentrantReadWriteLock; import com.sap.sse.filestorage.FileStorageManagementService; +import com.sap.sse.pairinglist.CompetitionFormat; import com.sap.sse.pairinglist.PairingFrameProvider; +import com.sap.sse.pairinglist.PairingList; import com.sap.sse.pairinglist.PairingListTemplate; import com.sap.sse.pairinglist.impl.PairingListTemplateFactoryImpl; import com.sap.sse.replication.OperationExecutionListener; @@ -4179,5 +4181,34 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes return null; } } + + @Override + public PairingList getPairingListFromTemplate(PairingListTemplate pairingListTemplate, + Leaderboard leaderboard) { + PairingList pairingList = pairingListTemplate.createPairingList(new CompetitionFormat() { + + @Override + public Iterable getFlights() { + return leaderboard.getRaceColumns(); + } + + @Override + public Iterable getCompetitors() { + return (Iterable) leaderboard.getAllCompetitors(); + } + + @Override + public Iterable getGroups(RaceColumn flight) { + // FIXME + return (Iterable) leaderboard.getRaceColumnByName(flight.getName()).getFleets(); + } + + @Override + public int getGroupsCount() { + return Util.size(Util.get(leaderboard.getRaceColumns(), 0).getFleets()); + } + }); + return pairingList; + } }