From 5112a20ab79d31d08e6ea726982924a673fc25cb Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 18 Oct 2016 15:15:35 +0200 Subject: [PATCH 01/10] bug3949 Reversed sort order of events in a series --- .../home/communication/fakeseries/GetEventSeriesViewAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java index ff8a5ffb569..ceed8fbb7dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java @@ -80,7 +80,7 @@ public class GetEventSeriesViewAction implements SailingAction() { public int compare(Event e1, Event e2) { - return e1.getStartDate().compareTo(e2.getEndDate()); + return e2.getStartDate().compareTo(e1.getStartDate()); } }); for(Event eventInSeries: fakeSeriesEvents) { From 646820cd783382813f01a7c8e8774ef3845c4c56 Mon Sep 17 00:00:00 2001 From: Benjamin Barth Date: Tue, 8 Nov 2016 18:01:23 +0100 Subject: [PATCH 02/10] bug3949 Adjusted sort order of events in a series event lists and quickfinders --- .../event/GetEventViewAction.java | 20 ++----------- .../communication/eventview/EventViewDTO.java | 7 ----- .../fakeseries/EventSeriesViewDTO.java | 18 +++++++----- .../fakeseries/GetEventSeriesViewAction.java | 20 ++----------- .../partials/seriesheader/SeriesHeader.java | 2 +- .../eventstab/SeriesEventsTabView.java | 2 +- .../partials/seriesheader/SeriesHeader.java | 2 +- .../mobile/places/series/SeriesActivity.java | 2 +- .../mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardActivity.java | 2 +- .../sailing/gwt/server/HomeServiceUtil.java | 28 +++++++++++++++++++ 11 files changed, 49 insertions(+), 56 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java index 8c1a1f6611a..9833c851401 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java @@ -1,10 +1,6 @@ package com.sap.sailing.gwt.home.communication.event; import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -93,21 +89,9 @@ public class GetEventViewAction implements SailingAction, IsClient LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next(); dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup)); - List fakeSeriesEvents = new ArrayList(); - for (Event eventOfSeries : context.getRacingEventService().getAllEvents()) { - for (LeaderboardGroup leaderboardGroup : eventOfSeries.getLeaderboardGroups()) { - if (overallLeaderboardGroup.equals(leaderboardGroup)) { - fakeSeriesEvents.add(eventOfSeries); - } - } - } - Collections.sort(fakeSeriesEvents, new Comparator() { - public int compare(Event e1, Event e2) { - return e1.getStartDate().compareTo(e2.getEndDate()); - } - }); - for(Event eventInSeries: fakeSeriesEvents) { + for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, + context.getRacingEventService())) { String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService()); if(displayName == null) { displayName = eventInSeries.getName(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java index 78e35e28813..9ffb70e2498 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java @@ -28,13 +28,6 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { private String officialWebsiteURL; private String sailorsInfoWebsiteURL; - public EventViewDTO() { - } - - public EventViewDTO(String name) { - setDisplayName(name); - } - public EventType getType() { return type; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java index 8bc734a8436..1f29385d5ae 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java @@ -1,6 +1,7 @@ package com.sap.sailing.gwt.home.communication.fakeseries; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.UUID; @@ -13,7 +14,7 @@ import com.sap.sse.gwt.dispatch.shared.commands.Result; public class EventSeriesViewDTO implements Result, HasLogo { private UUID id; private String displayName; - private ArrayList events = new ArrayList<>(); + private ArrayList eventsDescending = new ArrayList<>(); private ImageDTO logoImage; private boolean hasMedia; private boolean hasAnalytics; @@ -36,9 +37,6 @@ public class EventSeriesViewDTO implements Result, HasLogo { public EventSeriesState state; - public EventSeriesViewDTO() { - } - public UUID getId() { return id; } @@ -55,12 +53,18 @@ public class EventSeriesViewDTO implements Result, HasLogo { this.displayName = displayName; } - public List getEvents() { - return events; + public List getEventsDescending() { + return eventsDescending; + } + + public List getEventsAscending() { + ArrayList eventsAscending = new ArrayList<>(eventsDescending); + Collections.reverse(eventsAscending); + return eventsAscending; } public void addEvent(EventMetadataDTO event) { - this.events.add(event); + this.eventsDescending.add(event); } public ImageDTO getLogoImage() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java index ceed8fbb7dc..84eb5c1dae6 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java @@ -1,9 +1,5 @@ package com.sap.sailing.gwt.home.communication.fakeseries; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; import java.util.UUID; import com.google.gwt.core.shared.GwtIncompatible; @@ -70,20 +66,8 @@ public class GetEventSeriesViewAction implements SailingAction fakeSeriesEvents = new ArrayList(); - for (Event event : ctx.getRacingEventService().getAllEvents()) { - for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) { - if (overallLeaderboardGroup.equals(leaderboardGroup)) { - fakeSeriesEvents.add(event); - } - } - } - Collections.sort(fakeSeriesEvents, new Comparator() { - public int compare(Event e1, Event e2) { - return e2.getStartDate().compareTo(e1.getStartDate()); - } - }); - for(Event eventInSeries: fakeSeriesEvents) { + for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, + ctx.getRacingEventService())) { EventMetadataDTO eventOfSeries = HomeServiceUtil.convertToMetadataDTO(eventInSeries, ctx.getRacingEventService()); dto.addEvent(eventOfSeries); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java index 7acb4c0f065..ea5f51fd3a8 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/partials/seriesheader/SeriesHeader.java @@ -78,7 +78,7 @@ public class SeriesHeader extends Composite { eventName.setInnerText(series.getDisplayName()); LabelTypeUtil.renderLabelType(eventState, series.getState().getStateMarker()); - for (EventMetadataDTO eventOfSeries : series.getEvents()) { + for (EventMetadataDTO eventOfSeries : series.getEventsAscending()) { if(eventOfSeries.getState() == EventState.PLANNED) { InlineLabel eventLabel = new InlineLabel(eventOfSeries.getLocationOrVenue()); eventLabel.addStyleName(SeriesHeaderResources.INSTANCE.css().eventheader_intro_details_item()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java index ebd5f94acb4..dfa83f4f3b9 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/desktop/places/fakeseries/eventstab/SeriesEventsTabView.java @@ -46,7 +46,7 @@ public class SeriesEventsTabView extends Composite implements SeriesTabView getEventsForSeriesInDescendingOrder(LeaderboardGroup overallLeaderboardGroup, + RacingEventService service) { + List eventsInSeries = new ArrayList<>(); + for (Event event : service.getAllEvents()) { + for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) { + if (overallLeaderboardGroup.equals(leaderboardGroup)) { + eventsInSeries.add(event); + } + } + } + Collections.sort(eventsInSeries, new Comparator() { + public int compare(Event e1, Event e2) { + return e2.getStartDate().compareTo(e1.getStartDate()); + } + }); + return eventsInSeries; + } } From ea06a1349df1c89439d9b9c3122e2e9d2270412b Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 18 Jul 2017 13:21:30 +0200 Subject: [PATCH 03/10] Normalized line endings after master merge --- .../event/GetEventViewAction.java | 224 ++++++++--------- .../communication/eventview/EventViewDTO.java | 238 +++++++++--------- 2 files changed, 231 insertions(+), 231 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java index 9833c851401..a88c1cb4455 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java @@ -1,112 +1,112 @@ -package com.sap.sailing.gwt.home.communication.event; - -import java.net.URL; -import java.util.UUID; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.google.gwt.core.shared.GwtIncompatible; -import com.sap.sailing.domain.base.Event; -import com.sap.sailing.domain.leaderboard.LeaderboardGroup; -import com.sap.sailing.gwt.home.communication.SailingAction; -import com.sap.sailing.gwt.home.communication.SailingDispatchContext; -import com.sap.sailing.gwt.home.communication.eventview.EventViewDTO; -import com.sap.sailing.gwt.home.communication.eventview.EventViewDTO.EventType; -import com.sap.sailing.gwt.home.communication.eventview.RegattaMetadataDTO; -import com.sap.sailing.gwt.home.server.EventActionUtil; -import com.sap.sailing.gwt.home.server.EventActionUtil.LeaderboardCallback; -import com.sap.sailing.gwt.home.server.LeaderboardContext; -import com.sap.sailing.gwt.server.HomeServiceUtil; -import com.sap.sse.common.media.MediaTagConstants; -import com.sap.sse.gwt.dispatch.shared.caching.IsClientCacheable; -import com.sap.sse.shared.media.ImageDescriptor; - -/** - *

- * {@link SailingAction} implementation to load the basic logo, name, state, date and navigation information for a - * {@link #GetEventViewAction(UUID) given event-id} to be shown on several pages of this event. - *

- */ -public class GetEventViewAction implements SailingAction, IsClientCacheable { - private static final Logger logger = Logger.getLogger(GetEventViewAction.class.getName()); - - private UUID eventId; - - @SuppressWarnings("unused") - private GetEventViewAction() { - } - - /** - * Creates a {@link GetEventViewAction} instance for the given event-id. - * - * @param eventId - * {@link UUID} of the {@link Event} to load data for - */ - public GetEventViewAction(UUID eventId) { - this.eventId = eventId; - } - - @GwtIncompatible - public EventViewDTO execute(SailingDispatchContext context) { - final Event event = context.getRacingEventService().getEvent(eventId); - if (event == null) { - throw new RuntimeException("Event not found"); - } - - final EventViewDTO dto = new EventViewDTO(); - HomeServiceUtil.mapToMetadataDTO(event, dto, context.getRacingEventService()); - - ImageDescriptor logoImage = event.findImageWithTag(MediaTagConstants.LOGO); - dto.setLogoImage(logoImage != null ? HomeServiceUtil.convertToImageDTO(logoImage) : null); - dto.setOfficialWebsiteURL(event.getOfficialWebsiteURL() == null ? null : event.getOfficialWebsiteURL().toString()); - URL sailorsInfoWebsiteURL = event.getSailorsInfoWebsiteURLOrFallback(context.getClientLocale()); - dto.setSailorsInfoWebsiteURL(sailorsInfoWebsiteURL == null ? null : sailorsInfoWebsiteURL.toString()); - - dto.setHasMedia(HomeServiceUtil.hasMedia(event)); - dto.setState(HomeServiceUtil.calculateEventState(event)); - // bug2982: always show leaderboard and competitor analytics - dto.setHasAnalytics(true); - - final boolean isFakeSeries = HomeServiceUtil.isFakeSeries(event); - - EventActionUtil.forLeaderboardsOfEvent(context, event, new LeaderboardCallback() { - @Override - public void doForLeaderboard(LeaderboardContext context) { - try { - if(isFakeSeries && !context.isPartOfEvent()) { - return; - } - RegattaMetadataDTO regattaDTO = context.asRegattaMetadataDTO(); - dto.getRegattas().add(regattaDTO); - } catch (Exception e) { - logger.log(Level.SEVERE, "Catched exception while reading data for leaderboard " + context.getLeaderboardName(), e); - } - } - }); - - if (isFakeSeries) { - dto.setType(EventType.SERIES_EVENT); - - LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next(); - dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup)); - - for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, - context.getRacingEventService())) { - String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService()); - if(displayName == null) { - displayName = eventInSeries.getName(); - } - EventState eventState = HomeServiceUtil.calculateEventState(eventInSeries); - dto.getEventsOfSeries().add(new EventReferenceWithStateDTO(eventInSeries.getId(), displayName, eventState)); - } - } else { - dto.setType(dto.getRegattas().size() == 1 ? EventType.SINGLE_REGATTA: EventType.MULTI_REGATTA); - } - return dto; - } - - @Override - public void cacheInstanceKey(StringBuilder key) { - key.append(eventId); - } -} +package com.sap.sailing.gwt.home.communication.event; + +import java.net.URL; +import java.util.UUID; +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.google.gwt.core.shared.GwtIncompatible; +import com.sap.sailing.domain.base.Event; +import com.sap.sailing.domain.leaderboard.LeaderboardGroup; +import com.sap.sailing.gwt.home.communication.SailingAction; +import com.sap.sailing.gwt.home.communication.SailingDispatchContext; +import com.sap.sailing.gwt.home.communication.eventview.EventViewDTO; +import com.sap.sailing.gwt.home.communication.eventview.EventViewDTO.EventType; +import com.sap.sailing.gwt.home.communication.eventview.RegattaMetadataDTO; +import com.sap.sailing.gwt.home.server.EventActionUtil; +import com.sap.sailing.gwt.home.server.EventActionUtil.LeaderboardCallback; +import com.sap.sailing.gwt.home.server.LeaderboardContext; +import com.sap.sailing.gwt.server.HomeServiceUtil; +import com.sap.sse.common.media.MediaTagConstants; +import com.sap.sse.gwt.dispatch.shared.caching.IsClientCacheable; +import com.sap.sse.shared.media.ImageDescriptor; + +/** + *

+ * {@link SailingAction} implementation to load the basic logo, name, state, date and navigation information for a + * {@link #GetEventViewAction(UUID) given event-id} to be shown on several pages of this event. + *

+ */ +public class GetEventViewAction implements SailingAction, IsClientCacheable { + private static final Logger logger = Logger.getLogger(GetEventViewAction.class.getName()); + + private UUID eventId; + + @SuppressWarnings("unused") + private GetEventViewAction() { + } + + /** + * Creates a {@link GetEventViewAction} instance for the given event-id. + * + * @param eventId + * {@link UUID} of the {@link Event} to load data for + */ + public GetEventViewAction(UUID eventId) { + this.eventId = eventId; + } + + @GwtIncompatible + public EventViewDTO execute(SailingDispatchContext context) { + final Event event = context.getRacingEventService().getEvent(eventId); + if (event == null) { + throw new RuntimeException("Event not found"); + } + + final EventViewDTO dto = new EventViewDTO(); + HomeServiceUtil.mapToMetadataDTO(event, dto, context.getRacingEventService()); + + ImageDescriptor logoImage = event.findImageWithTag(MediaTagConstants.LOGO); + dto.setLogoImage(logoImage != null ? HomeServiceUtil.convertToImageDTO(logoImage) : null); + dto.setOfficialWebsiteURL(event.getOfficialWebsiteURL() == null ? null : event.getOfficialWebsiteURL().toString()); + URL sailorsInfoWebsiteURL = event.getSailorsInfoWebsiteURLOrFallback(context.getClientLocale()); + dto.setSailorsInfoWebsiteURL(sailorsInfoWebsiteURL == null ? null : sailorsInfoWebsiteURL.toString()); + + dto.setHasMedia(HomeServiceUtil.hasMedia(event)); + dto.setState(HomeServiceUtil.calculateEventState(event)); + // bug2982: always show leaderboard and competitor analytics + dto.setHasAnalytics(true); + + final boolean isFakeSeries = HomeServiceUtil.isFakeSeries(event); + + EventActionUtil.forLeaderboardsOfEvent(context, event, new LeaderboardCallback() { + @Override + public void doForLeaderboard(LeaderboardContext context) { + try { + if(isFakeSeries && !context.isPartOfEvent()) { + return; + } + RegattaMetadataDTO regattaDTO = context.asRegattaMetadataDTO(); + dto.getRegattas().add(regattaDTO); + } catch (Exception e) { + logger.log(Level.SEVERE, "Catched exception while reading data for leaderboard " + context.getLeaderboardName(), e); + } + } + }); + + if (isFakeSeries) { + dto.setType(EventType.SERIES_EVENT); + + LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next(); + dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup)); + + for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, + context.getRacingEventService())) { + String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService()); + if(displayName == null) { + displayName = eventInSeries.getName(); + } + EventState eventState = HomeServiceUtil.calculateEventState(eventInSeries); + dto.getEventsOfSeries().add(new EventReferenceWithStateDTO(eventInSeries.getId(), displayName, eventState)); + } + } else { + dto.setType(dto.getRegattas().size() == 1 ? EventType.SINGLE_REGATTA: EventType.MULTI_REGATTA); + } + return dto; + } + + @Override + public void cacheInstanceKey(StringBuilder key) { + key.append(eventId); + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java index 9ffb70e2498..dcd9b8bf2a0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java @@ -1,119 +1,119 @@ -package com.sap.sailing.gwt.home.communication.eventview; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.TreeSet; - -import com.sap.sailing.gwt.home.communication.event.EventMetadataDTO; -import com.sap.sailing.gwt.home.communication.event.EventReferenceWithStateDTO; -import com.sap.sailing.gwt.home.communication.event.HasLogo; -import com.sap.sse.gwt.client.media.ImageDTO; -import com.sap.sse.gwt.dispatch.shared.commands.Result; - -public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { - - public enum EventType { - SINGLE_REGATTA, MULTI_REGATTA, SERIES_EVENT - } - - private TreeSet regattas = new TreeSet<>(); - private ArrayList eventsOfSeries = new ArrayList<>(); - - private EventType type; - private boolean hasMedia; - private boolean hasAnalytics; - private String seriesName; - private ImageDTO logoImage; - private String officialWebsiteURL; - private String sailorsInfoWebsiteURL; - - public EventType getType() { - return type; - } - - public void setType(EventType type) { - this.type = type; - } - - public Collection getRegattas() { - return regattas; - } - - public List getEventsOfSeries() { - return eventsOfSeries; - } - - public String getVenueCountry() { - // FIXME: We need a country? - return ""; - } - - public void setSeriesName(String seriesName) { - this.seriesName = seriesName; - } - - public String getSeriesName() { - return seriesName; - } - public String getSeriesIdAsString() { - return getId().toString(); - } - - public boolean isHasMedia() { - return hasMedia; - } - - public void setHasMedia(boolean hasMedia) { - this.hasMedia = hasMedia; - } - - public boolean isHasAnalytics() { - return hasAnalytics; - } - - public void setHasAnalytics(boolean hasAnalytics) { - this.hasAnalytics = hasAnalytics; - } - - public boolean isRegattaIDKnown(String regattaId) { - for (RegattaMetadataDTO regatta : regattas) { - if(regatta.getId().equals(regattaId)) { - return true; - } - } - return false; - } - - public void setLogoImage(ImageDTO logoImage) { - this.logoImage = logoImage; - } - - public ImageDTO getLogoImage() { - return logoImage; - } - - public void setOfficialWebsiteURL(String officialWebsiteURL) { - this.officialWebsiteURL = officialWebsiteURL; - } - - public String getOfficialWebsiteURL() { - return officialWebsiteURL; - } - - public String getSailorsInfoWebsiteURL() { - return sailorsInfoWebsiteURL; - } - - public void setSailorsInfoWebsiteURL(String sailorsInfoWebsiteURL) { - this.sailorsInfoWebsiteURL = sailorsInfoWebsiteURL; - } - - public String getLocationAndVenueAndCountry() { - String venue = getLocationAndVenue(); - if(getVenueCountry() != null && !getVenueCountry().isEmpty()) { - return venue + ", " + getVenueCountry(); - } - return venue; - } -} +package com.sap.sailing.gwt.home.communication.eventview; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.TreeSet; + +import com.sap.sailing.gwt.home.communication.event.EventMetadataDTO; +import com.sap.sailing.gwt.home.communication.event.EventReferenceWithStateDTO; +import com.sap.sailing.gwt.home.communication.event.HasLogo; +import com.sap.sse.gwt.client.media.ImageDTO; +import com.sap.sse.gwt.dispatch.shared.commands.Result; + +public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { + + public enum EventType { + SINGLE_REGATTA, MULTI_REGATTA, SERIES_EVENT + } + + private TreeSet regattas = new TreeSet<>(); + private ArrayList eventsOfSeries = new ArrayList<>(); + + private EventType type; + private boolean hasMedia; + private boolean hasAnalytics; + private String seriesName; + private ImageDTO logoImage; + private String officialWebsiteURL; + private String sailorsInfoWebsiteURL; + + public EventType getType() { + return type; + } + + public void setType(EventType type) { + this.type = type; + } + + public Collection getRegattas() { + return regattas; + } + + public List getEventsOfSeries() { + return eventsOfSeries; + } + + public String getVenueCountry() { + // FIXME: We need a country? + return ""; + } + + public void setSeriesName(String seriesName) { + this.seriesName = seriesName; + } + + public String getSeriesName() { + return seriesName; + } + public String getSeriesIdAsString() { + return getId().toString(); + } + + public boolean isHasMedia() { + return hasMedia; + } + + public void setHasMedia(boolean hasMedia) { + this.hasMedia = hasMedia; + } + + public boolean isHasAnalytics() { + return hasAnalytics; + } + + public void setHasAnalytics(boolean hasAnalytics) { + this.hasAnalytics = hasAnalytics; + } + + public boolean isRegattaIDKnown(String regattaId) { + for (RegattaMetadataDTO regatta : regattas) { + if(regatta.getId().equals(regattaId)) { + return true; + } + } + return false; + } + + public void setLogoImage(ImageDTO logoImage) { + this.logoImage = logoImage; + } + + public ImageDTO getLogoImage() { + return logoImage; + } + + public void setOfficialWebsiteURL(String officialWebsiteURL) { + this.officialWebsiteURL = officialWebsiteURL; + } + + public String getOfficialWebsiteURL() { + return officialWebsiteURL; + } + + public String getSailorsInfoWebsiteURL() { + return sailorsInfoWebsiteURL; + } + + public void setSailorsInfoWebsiteURL(String sailorsInfoWebsiteURL) { + this.sailorsInfoWebsiteURL = sailorsInfoWebsiteURL; + } + + public String getLocationAndVenueAndCountry() { + String venue = getLocationAndVenue(); + if(getVenueCountry() != null && !getVenueCountry().isEmpty()) { + return venue + ", " + getVenueCountry(); + } + return venue; + } +} From 8be4584c5c57a52d5cad6a04174a22974c001fa6 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Wed, 26 Jul 2017 09:44:39 +0200 Subject: [PATCH 04/10] added sorting based on reverse flag for all known uses of series --- .../event/GetEventViewAction.java | 4 +++- .../communication/eventview/EventViewDTO.java | 17 ++++++++++++++++- .../fakeseries/EventSeriesViewDTO.java | 18 +++++++++++------- .../fakeseries/GetEventSeriesViewAction.java | 1 + .../partials/seriesheader/SeriesHeader.java | 2 +- .../event/regatta/EventRegattaActivity.java | 2 +- .../eventstab/SeriesEventsTabView.java | 2 +- .../partials/seriesheader/SeriesHeader.java | 2 +- .../places/event/AbstractEventActivity.java | 5 +++-- .../mobile/places/series/SeriesActivity.java | 2 +- .../mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardActivity.java | 2 +- 12 files changed, 41 insertions(+), 18 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java index a88c1cb4455..0e1a7c055cf 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java @@ -90,6 +90,8 @@ public class GetEventViewAction implements SailingAction, IsClient LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next(); dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup)); + dto.setAscending(!overallLeaderboardGroup.isDisplayGroupsInReverseOrder()); + for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, context.getRacingEventService())) { String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService()); @@ -97,7 +99,7 @@ public class GetEventViewAction implements SailingAction, IsClient displayName = eventInSeries.getName(); } EventState eventState = HomeServiceUtil.calculateEventState(eventInSeries); - dto.getEventsOfSeries().add(new EventReferenceWithStateDTO(eventInSeries.getId(), displayName, eventState)); + dto.addEventToSeries(new EventReferenceWithStateDTO(eventInSeries.getId(), displayName, eventState)); } } else { dto.setType(dto.getRegattas().size() == 1 ? EventType.SINGLE_REGATTA: EventType.MULTI_REGATTA); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java index dcd9b8bf2a0..7f03a86a38d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java @@ -2,6 +2,7 @@ package com.sap.sailing.gwt.home.communication.eventview; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.TreeSet; @@ -27,6 +28,7 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { private ImageDTO logoImage; private String officialWebsiteURL; private String sailorsInfoWebsiteURL; + private boolean ascending; public EventType getType() { return type; @@ -40,7 +42,16 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { return regattas; } - public List getEventsOfSeries() { + public void addEventToSeries(EventReferenceWithStateDTO eventRef) { + eventsOfSeries.add(eventRef); + } + + public List getEventsOfSeriesSorted() { + if (ascending) { + ArrayList eventsAscending = new ArrayList<>(eventsOfSeries); + Collections.reverse(eventsAscending); + return eventsAscending; + } return eventsOfSeries; } @@ -116,4 +127,8 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { } return venue; } + + public void setAscending(boolean ascending) { + this.ascending = ascending; + } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java index 1f29385d5ae..0c167448e69 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java @@ -18,7 +18,7 @@ public class EventSeriesViewDTO implements Result, HasLogo { private ImageDTO logoImage; private boolean hasMedia; private boolean hasAnalytics; - + boolean ascending; private String leaderboardId; public enum EventSeriesState { @@ -52,16 +52,20 @@ public class EventSeriesViewDTO implements Result, HasLogo { public void setDisplayName(String displayName) { this.displayName = displayName; } + + public void setAscending(boolean ascending) { + this.ascending = ascending; + } - public List getEventsDescending() { + public List getEventsSorted() { + if(ascending){ + ArrayList eventsAscending = new ArrayList<>(eventsDescending); + Collections.reverse(eventsAscending); + return eventsAscending; + } return eventsDescending; } - public List getEventsAscending() { - ArrayList eventsAscending = new ArrayList<>(eventsDescending); - Collections.reverse(eventsAscending); - return eventsAscending; - } public void addEvent(EventMetadataDTO event) { this.eventsDescending.add(event); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java index 84eb5c1dae6..4903806826e 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java @@ -60,6 +60,7 @@ public class GetEventSeriesViewAction implements SailingAction ex if(showQuickfinder && event.getType() == EventType.MULTI_REGATTA) { view.setQuickFinderValues(getRegattasByLeaderboardGroupName()); } else if(showQuickfinder && event.getType() == EventType.SERIES_EVENT) { - List seriesEventToShow = new ArrayList<>(event.getEventsOfSeries().size()); - for (EventReferenceWithStateDTO seriesEvent : event.getEventsOfSeries()) { + List eventsOfSeriesSorted = event.getEventsOfSeriesSorted(); + List seriesEventToShow = new ArrayList<>(eventsOfSeriesSorted.size()); + for (EventReferenceWithStateDTO seriesEvent : eventsOfSeriesSorted) { if(seriesEvent.getState() != EventState.PLANNED) { seriesEventToShow.add(seriesEvent); } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java index 0dfb716bcac..41d0bbb5067 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesActivity.java @@ -47,7 +47,7 @@ public class SeriesActivity extends AbstractActivity implements SeriesView.Prese private void initUi(final AcceptsOneWidget panel, EventBus eventBus, EventSeriesViewDTO series) { final SeriesView view = new SeriesViewImpl(this); - view.setQuickFinderValues(series.getDisplayName(), series.getEventsDescending()); + view.setQuickFinderValues(series.getDisplayName(), series.getEventsSorted()); panel.setWidget(view.asWidget()); initNavigationPath(); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java index 89aa03413a3..b625e622144 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/SeriesViewImpl.java @@ -53,7 +53,7 @@ public class SeriesViewImpl extends Composite implements SeriesView { private void setupEventListContent(EventSeriesViewDTO series) { boolean first = true; - for(EventMetadataDTO eventOfSeries : series.getEventsDescending()) { + for(EventMetadataDTO eventOfSeries : series.getEventsSorted()) { if(eventOfSeries.getState() == EventState.PLANNED) { continue; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java index 71b98f481bd..79f551dab5c 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/mobile/places/series/minileaderboard/SeriesMiniOverallLeaderboardActivity.java @@ -48,7 +48,7 @@ public class SeriesMiniOverallLeaderboardActivity extends AbstractActivity imple private void initUi(AcceptsOneWidget panel, EventBus eventBus, EventSeriesViewDTO series) { final SeriesMiniOverallLeaderboardView view = new SeriesMiniOverallLeaderboardViewImpl(this); - view.setQuickFinderValues(series.getDisplayName(), series.getEventsDescending()); + view.setQuickFinderValues(series.getDisplayName(), series.getEventsSorted()); panel.setWidget(view.asWidget()); initNavigationPath(); From d424a5b14d8106b9b7138ce035332f2f9f794acb Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Wed, 26 Jul 2017 12:03:36 +0200 Subject: [PATCH 05/10] added working but not ideal solution for leaderboard tabs sorting --- .../gwt/ui/server/SailingServiceImpl.java | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) 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 48540151951..b1eae63da93 100644 --- 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 @@ -21,6 +21,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -303,6 +304,7 @@ import com.sap.sailing.domain.tractracadapter.TracTracAdapter; import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory; import com.sap.sailing.domain.tractracadapter.TracTracConfiguration; import com.sap.sailing.domain.tractracadapter.TracTracConnectionConstants; +import com.sap.sailing.gwt.server.HomeServiceUtil; import com.sap.sailing.gwt.ui.adminconsole.RaceLogSetTrackingTimesDTO; import com.sap.sailing.gwt.ui.client.SailingService; import com.sap.sailing.gwt.ui.client.shared.charts.MarkPositionService.MarkTrackDTO; @@ -3141,19 +3143,53 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S } @Override - public List> getLeaderboardsNamesOfMetaLeaderboard(String metaLeaderboardName) { + public List> getLeaderboardsNamesOfMetaLeaderboard( + String metaLeaderboardName) { Leaderboard leaderboard = getService().getLeaderboardByName(metaLeaderboardName); if (leaderboard == null) { - throw new IllegalArgumentException("Couldn't find leaderboard named "+metaLeaderboardName); + throw new IllegalArgumentException("Couldn't find leaderboard named " + metaLeaderboardName); } if (!(leaderboard instanceof MetaLeaderboard)) { - throw new IllegalArgumentException("The leaderboard "+metaLeaderboardName + " is not a metaleaderboard"); + throw new IllegalArgumentException("The leaderboard " + metaLeaderboardName + " is not a metaleaderboard"); } - List> result = new ArrayList>(); MetaLeaderboard metaLeaderboard = (MetaLeaderboard) leaderboard; - for (Leaderboard containedLeaderboard: metaLeaderboard.getLeaderboards()) { + LeaderboardGroup groupOrNull = getService().getLeaderboardGroupByName(metaLeaderboardName.replace(" Overall", "")); + Iterable leaderBoards = metaLeaderboard.getLeaderboards(); + boolean ascending = true; + List> result = new ArrayList>(); + for (Leaderboard containedLeaderboard : leaderBoards) { result.add(new com.sap.sse.common.Util.Pair(containedLeaderboard.getName(), - containedLeaderboard.getDisplayName() != null ? containedLeaderboard.getDisplayName() : containedLeaderboard.getName())); + containedLeaderboard.getDisplayName() != null ? containedLeaderboard.getDisplayName() + : containedLeaderboard.getName())); + } + if (groupOrNull != null) { + //group found determine sorting + ascending = !groupOrNull.isDisplayGroupsInReverseOrder(); + List sortedEvents = HomeServiceUtil.getEventsForSeriesInDescendingOrder(groupOrNull, getService()); + if (ascending) { + Collections.reverse(sortedEvents); + } + Collections.sort(result, new Comparator>() { + + @Override + public int compare(Pair o1, Pair o2) { + int rank1 = 0; + int rank2 = 0; + for(int i = 0;i Date: Wed, 26 Jul 2017 12:58:00 +0200 Subject: [PATCH 06/10] using constant for overall leaderboard --- .../java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b1eae63da93..034bd9b230c 100644 --- 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 @@ -3153,7 +3153,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S throw new IllegalArgumentException("The leaderboard " + metaLeaderboardName + " is not a metaleaderboard"); } MetaLeaderboard metaLeaderboard = (MetaLeaderboard) leaderboard; - LeaderboardGroup groupOrNull = getService().getLeaderboardGroupByName(metaLeaderboardName.replace(" Overall", "")); + LeaderboardGroup groupOrNull = getService().getLeaderboardGroupByName(metaLeaderboardName.replace(" " + LeaderboardNameConstants.OVERALL, "")); Iterable leaderBoards = metaLeaderboard.getLeaderboards(); boolean ascending = true; List> result = new ArrayList>(); From a38556a7b70fffd635b98959b7338587f36a4e2a Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Thu, 27 Jul 2017 10:47:12 +0200 Subject: [PATCH 07/10] Bug 3949: Events and Leaderboards are now sorted in the UI based on the order of the Leaderboards in the LeaderboardGroup or the reverse order based on LeaderboardGroup.isDisplayGroupsInReverseOrder --- .../event/GetEventViewAction.java | 2 - .../communication/eventview/EventViewDTO.java | 11 --- .../fakeseries/EventSeriesViewDTO.java | 23 +++--- .../fakeseries/GetEventSeriesViewAction.java | 3 +- .../partials/seriesheader/SeriesHeader.java | 4 +- .../eventstab/SeriesEventsTabView.java | 2 +- .../partials/seriesheader/SeriesHeader.java | 2 +- .../mobile/places/series/SeriesActivity.java | 2 +- .../mobile/places/series/SeriesViewImpl.java | 2 +- .../SeriesMiniOverallLeaderboardActivity.java | 2 +- .../sailing/gwt/server/HomeServiceUtil.java | 72 +++++++++++++++++-- .../gwt/ui/server/SailingServiceImpl.java | 43 +++-------- 12 files changed, 92 insertions(+), 76 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java index 0e1a7c055cf..f5c7030d590 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/event/GetEventViewAction.java @@ -90,8 +90,6 @@ public class GetEventViewAction implements SailingAction, IsClient LeaderboardGroup overallLeaderboardGroup = event.getLeaderboardGroups().iterator().next(); dto.setSeriesName(HomeServiceUtil.getLeaderboardDisplayName(overallLeaderboardGroup)); - dto.setAscending(!overallLeaderboardGroup.isDisplayGroupsInReverseOrder()); - for (Event eventInSeries : HomeServiceUtil.getEventsForSeriesInDescendingOrder(overallLeaderboardGroup, context.getRacingEventService())) { String displayName = HomeServiceUtil.getLocation(eventInSeries, context.getRacingEventService()); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java index 7f03a86a38d..7df90631a05 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/eventview/EventViewDTO.java @@ -2,7 +2,6 @@ package com.sap.sailing.gwt.home.communication.eventview; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.TreeSet; @@ -28,7 +27,6 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { private ImageDTO logoImage; private String officialWebsiteURL; private String sailorsInfoWebsiteURL; - private boolean ascending; public EventType getType() { return type; @@ -47,11 +45,6 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { } public List getEventsOfSeriesSorted() { - if (ascending) { - ArrayList eventsAscending = new ArrayList<>(eventsOfSeries); - Collections.reverse(eventsAscending); - return eventsAscending; - } return eventsOfSeries; } @@ -127,8 +120,4 @@ public class EventViewDTO extends EventMetadataDTO implements Result, HasLogo { } return venue; } - - public void setAscending(boolean ascending) { - this.ascending = ascending; - } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java index 0c167448e69..dfb94c5280d 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/EventSeriesViewDTO.java @@ -14,11 +14,10 @@ import com.sap.sse.gwt.dispatch.shared.commands.Result; public class EventSeriesViewDTO implements Result, HasLogo { private UUID id; private String displayName; - private ArrayList eventsDescending = new ArrayList<>(); + private ArrayList eventsAscending = new ArrayList<>(); private ImageDTO logoImage; private boolean hasMedia; private boolean hasAnalytics; - boolean ascending; private String leaderboardId; public enum EventSeriesState { @@ -52,23 +51,19 @@ public class EventSeriesViewDTO implements Result, HasLogo { public void setDisplayName(String displayName) { this.displayName = displayName; } - - public void setAscending(boolean ascending) { - this.ascending = ascending; - } - public List getEventsSorted() { - if(ascending){ - ArrayList eventsAscending = new ArrayList<>(eventsDescending); - Collections.reverse(eventsAscending); - return eventsAscending; - } + public List getEventsAscending() { + return eventsAscending; + } + + public List getEventsDescending() { + ArrayList eventsDescending = new ArrayList<>(eventsAscending); + Collections.reverse(eventsDescending); return eventsDescending; } - public void addEvent(EventMetadataDTO event) { - this.eventsDescending.add(event); + this.eventsAscending.add(event); } public ImageDTO getLogoImage() { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java index 4903806826e..eacfc8674dc 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/home/communication/fakeseries/GetEventSeriesViewAction.java @@ -60,14 +60,13 @@ public class GetEventSeriesViewAction implements SailingAction getEventsForSeriesInDescendingOrder(LeaderboardGroup overallLeaderboardGroup, RacingEventService service) { - List eventsInSeries = new ArrayList<>(); + List eventsForSeriesOrdered = getEventsForSeriesOrdered(overallLeaderboardGroup, service); + Collections.reverse(eventsForSeriesOrdered); + return eventsForSeriesOrdered; + } + + /** + * Provides the list of {@link Event}s for a series based on the given overall {@link LeaderboardGroup} in an + * order that matches the order of {@link Leaderboard Leaderboards} in the {@link LeaderboardGroup}. + * + * @param overallLeaderboardGroup the series overall {@link LeaderboardGroup} + * @param service {@link RacingEventService} + * @return the {@link Event}s for the series + */ + public static List getEventsForSeriesOrdered(LeaderboardGroup overallLeaderboardGroup, + RacingEventService service) { + final Iterable eventsInSeries = getEventsInSeries(overallLeaderboardGroup, service); + final Iterable orderedLeaderboards = getLeaderboardsForSeriesInOrder(overallLeaderboardGroup); + final List orderedEventsInSeries = new ArrayList<>(); + for (Leaderboard leaderboard : orderedLeaderboards) { + final Event associatedEvent = getAssociatedEventForLeaderboardInSeries(leaderboard, eventsInSeries); + if (associatedEvent != null) { + orderedEventsInSeries.add(associatedEvent); + } + } + return orderedEventsInSeries; + } + + /** + * The {@link Leaderboard Leaderboards} referenced in the given {@link LeaderboardGroup} have a defined order. If + * the displayGroupsInReverseOrder flag is set for the {@link LeaderboardGroup}, the order needs to change in the + * UI. This methods sorts the {@link Leaderboard Leaderboards} using this flag. + */ + public static Iterable getLeaderboardsForSeriesInOrder(LeaderboardGroup overallLeaderboardGroup) { + if (overallLeaderboardGroup.isDisplayGroupsInReverseOrder()) { + List leaderboardsInSeries = new ArrayList<>(); + Util.addAll(overallLeaderboardGroup.getLeaderboards(), leaderboardsInSeries); + Collections.reverse(leaderboardsInSeries); + return leaderboardsInSeries; + } + return overallLeaderboardGroup.getLeaderboards(); + } + + private static Event getAssociatedEventForLeaderboardInSeries(Leaderboard leaderboard, + Iterable eventsInSeries) { + final CourseArea defaultCourseArea = leaderboard.getDefaultCourseArea(); + if (defaultCourseArea != null) { + for (Event event : eventsInSeries) { + if (Util.contains(event.getVenue().getCourseAreas(), defaultCourseArea)) { + return event; + } + } + } + return null; + } + + /** + * The given {@link LeaderboardGroup} needs to be one that is used to define a {@link Event} series (e.g. ESS or + * Bundesliga). In this case, multiple {@link Event Events} reference the same {@link LeaderboardGroup}. This method + * calculates all Events that are associated to the given {@link LeaderboardGroup}. + */ + private static Iterable getEventsInSeries(LeaderboardGroup overallLeaderboardGroup, + RacingEventService service) { + Set eventsInSeries = new HashSet<>(); for (Event event : service.getAllEvents()) { for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) { if (overallLeaderboardGroup.equals(leaderboardGroup)) { @@ -587,11 +650,6 @@ public final class HomeServiceUtil { } } } - Collections.sort(eventsInSeries, new Comparator() { - public int compare(Event e1, Event e2) { - return e2.getStartDate().compareTo(e1.getStartDate()); - } - }); return eventsInSeries; } } 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 034bd9b230c..cb881b347a4 100644 --- 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 @@ -21,7 +21,6 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -3153,44 +3152,22 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S throw new IllegalArgumentException("The leaderboard " + metaLeaderboardName + " is not a metaleaderboard"); } MetaLeaderboard metaLeaderboard = (MetaLeaderboard) leaderboard; - LeaderboardGroup groupOrNull = getService().getLeaderboardGroupByName(metaLeaderboardName.replace(" " + LeaderboardNameConstants.OVERALL, "")); - Iterable leaderBoards = metaLeaderboard.getLeaderboards(); - boolean ascending = true; + LeaderboardGroup groupOrNull = null; + for (LeaderboardGroup lg : getService().getLeaderboardGroups().values()) { + if (metaLeaderboard.equals(lg.getOverallLeaderboard())) { + groupOrNull = lg; + break; + } + } + // If we could identify the associated LeaderboardGroup the Leaderboards can be sorted based on that group + Iterable leaderBoards = groupOrNull != null + ? HomeServiceUtil.getLeaderboardsForSeriesInOrder(groupOrNull) : metaLeaderboard.getLeaderboards(); List> result = new ArrayList>(); for (Leaderboard containedLeaderboard : leaderBoards) { result.add(new com.sap.sse.common.Util.Pair(containedLeaderboard.getName(), containedLeaderboard.getDisplayName() != null ? containedLeaderboard.getDisplayName() : containedLeaderboard.getName())); } - if (groupOrNull != null) { - //group found determine sorting - ascending = !groupOrNull.isDisplayGroupsInReverseOrder(); - List sortedEvents = HomeServiceUtil.getEventsForSeriesInDescendingOrder(groupOrNull, getService()); - if (ascending) { - Collections.reverse(sortedEvents); - } - Collections.sort(result, new Comparator>() { - - @Override - public int compare(Pair o1, Pair o2) { - int rank1 = 0; - int rank2 = 0; - for(int i = 0;i Date: Mon, 31 Jul 2017 11:03:32 +0200 Subject: [PATCH 08/10] Bug 3949: Added release notes --- java/com.sap.sailing.www/release_notes_admin.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/java/com.sap.sailing.www/release_notes_admin.html b/java/com.sap.sailing.www/release_notes_admin.html index cf7f5745043..82567582a43 100755 --- a/java/com.sap.sailing.www/release_notes_admin.html +++ b/java/com.sap.sailing.www/release_notes_admin.html @@ -22,6 +22,17 @@

Release Notes - Administration Console

+

July 2017

+
    +
  • The sort order of Events/Leaderboards in event series in Home.html is now more consistent + by using the declared sort order in the respective LeaderboardGroup. In addition, the flag + "Display groups in reverse order" in the LeaderboardGroup dialog now affects all occurrences + of Events/Leaderboards in event series in Home.html. If the flag is not set, the order is + latest on top in vertical lists and latest right in horizontal lists. With this change, + the operator is now fully responsible for the sort order. +
  • +
+

May 2017