mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-15 08:41:01 +00:00
Initial implementation of service for new event list view
This commit is contained in:
1 parent
54619dbeea
commit
cb53f55ffd
8 files changed
+213
-16
No files matched your search
+3
@@ -84,6 +84,7 @@ import com.sap.sailing.gwt.ui.shared.TrackFileImportDeviceIdentifierDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
@@ -588,4 +589,6 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
MediaDTO getMediaForEvent(UUID eventId);
|
||||
|
||||
MediaDTO getMediaForEventSeries(UUID seriesId);
|
||||
|
||||
EventListViewDTO getEventListView() throws Exception;
|
||||
}
|
||||
+3
@@ -74,6 +74,7 @@ import com.sap.sailing.gwt.ui.shared.TrackFileImportDeviceIdentifierDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.VenueDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.fakeseries.EventSeriesViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaDTO;
|
||||
@@ -699,4 +700,6 @@ public interface SailingServiceAsync extends BuildVersionRetriever, FileStorageM
|
||||
void getMediaForEvent(UUID eventId, AsyncCallback<MediaDTO> callback);
|
||||
|
||||
void getMediaForEventSeries(UUID seriesId, AsyncCallback<MediaDTO> callback);
|
||||
|
||||
void getEventListView(AsyncCallback<EventListViewDTO> callback);
|
||||
}
|
||||
+58
-15
@@ -264,6 +264,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.common.client.DateUtil;
|
||||
import com.sap.sailing.gwt.ui.client.SailingService;
|
||||
import com.sap.sailing.gwt.ui.shared.BulkScoreCorrectionDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.CompactRaceMapDataDTO;
|
||||
@@ -332,6 +333,8 @@ import com.sap.sailing.gwt.ui.shared.WaypointDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListEventDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventlist.EventListViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventType;
|
||||
@@ -5581,27 +5584,16 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
return e1.getStartDate().compareTo(e2.getEndDate());
|
||||
}
|
||||
});
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
boolean oneEventStarted = false;
|
||||
boolean oneEventLive = false;
|
||||
boolean oneEventNotFinished = false;
|
||||
for(Event eventInSeries: fakeSeriesEvents) {
|
||||
EventMetadataDTO eventOfSeries = new EventMetadataDTO();
|
||||
eventOfSeries.setId(eventInSeries.getId());
|
||||
eventOfSeries.setDisplayName(eventInSeries.getName());
|
||||
eventOfSeries.setStartDate(eventInSeries.getStartDate().asDate());
|
||||
eventOfSeries.setEndDate(eventInSeries.getEndDate().asDate());
|
||||
eventOfSeries.setState(calculateEventState(eventInSeries.isPublic(), eventInSeries.getStartDate().asDate(), eventInSeries.getEndDate().asDate()));
|
||||
eventOfSeries.setVenue(eventInSeries.getVenue().getName());
|
||||
EventMetadataDTO eventOfSeries = convertToMetadataDTO(eventInSeries);
|
||||
dto.addEvent(eventOfSeries);
|
||||
|
||||
boolean eventStarted = now.after(eventInSeries.getStartDate());
|
||||
boolean eventNotEnded = now.before(eventInSeries.getEndDate());
|
||||
boolean eventLive = eventStarted && eventNotEnded;
|
||||
|
||||
oneEventStarted |= eventStarted;
|
||||
oneEventLive |= eventLive;
|
||||
oneEventNotFinished |= eventNotEnded;
|
||||
oneEventStarted |= eventOfSeries.isStarted();
|
||||
oneEventLive |= (eventOfSeries.isStarted() && eventOfSeries.isFinished());
|
||||
oneEventNotFinished |= !eventOfSeries.isFinished();
|
||||
}
|
||||
if(oneEventLive) {
|
||||
dto.setState(EventSeriesState.RUNNING);
|
||||
@@ -5644,4 +5636,55 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
// TODO implement correctly. We currently do not show media for series.
|
||||
return getMediaForEvent(seriesId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventListViewDTO getEventListView() throws MalformedURLException {
|
||||
EventListViewDTO result = new EventListViewDTO();
|
||||
URL requestedBaseURL = getRequestBaseURL();
|
||||
for (Event event : getService().getAllEvents()) {
|
||||
if(event.isPublic()) {
|
||||
EventListEventDTO eventDTO = convertToEventListDTO(event, requestedBaseURL, false);
|
||||
result.addEvent(eventDTO, DateUtil.getYear(eventDTO.getStartDate()));
|
||||
}
|
||||
}
|
||||
for (Entry<RemoteSailingServerReference, com.sap.sse.common.Util.Pair<Iterable<EventBase>, Exception>> serverRefAndEventsOrException :
|
||||
getService().getPublicEventsOfAllSailingServers().entrySet()) {
|
||||
final com.sap.sse.common.Util.Pair<Iterable<EventBase>, Exception> eventsOrException = serverRefAndEventsOrException.getValue();
|
||||
final RemoteSailingServerReference serverRef = serverRefAndEventsOrException.getKey();
|
||||
final Iterable<EventBase> remoteEvents = eventsOrException.getA();
|
||||
URL baseURL = getBaseURL(serverRef.getURL());
|
||||
if (remoteEvents != null) {
|
||||
for (EventBase remoteEvent : remoteEvents) {
|
||||
EventListEventDTO eventDTO = convertToEventListDTO(remoteEvent, baseURL, true);
|
||||
result.addEvent(eventDTO, DateUtil.getYear(eventDTO.getStartDate()));
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private EventListEventDTO convertToEventListDTO(EventBase event, URL baseURL, boolean onRemoteServer) {
|
||||
EventListEventDTO dto = new EventListEventDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
dto.setBaseURL(baseURL.toString());
|
||||
dto.setOnRemoteServer(onRemoteServer);
|
||||
return dto;
|
||||
}
|
||||
|
||||
private EventMetadataDTO convertToMetadataDTO(EventBase event) {
|
||||
EventMetadataDTO dto = new EventMetadataDTO();
|
||||
mapToMetadataDTO(event, dto);
|
||||
return dto;
|
||||
}
|
||||
|
||||
private void mapToMetadataDTO(EventBase event, EventMetadataDTO dto) {
|
||||
dto.setId((UUID) event.getId());
|
||||
dto.setDisplayName(event.getName());
|
||||
dto.setStartDate(event.getStartDate().asDate());
|
||||
dto.setEndDate(event.getEndDate().asDate());
|
||||
dto.setState(calculateEventState(event.isPublic(), dto.getStartDate(), dto.getEndDate()));
|
||||
dto.setVenue(event.getVenue().getName());
|
||||
// TODO wrong! we need the teaser img here
|
||||
dto.setLogoImageURL(event.getLogoImageURL().toString());
|
||||
}
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
package com.sap.sailing.gwt.ui.shared.eventlist;
|
||||
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventMetadataDTO;
|
||||
|
||||
public class EventListEventDTO extends EventMetadataDTO {
|
||||
private String baseURL;
|
||||
private boolean isOnRemoteServer;
|
||||
|
||||
public String getBaseURL() {
|
||||
return baseURL;
|
||||
}
|
||||
|
||||
public void setBaseURL(String baseURL) {
|
||||
this.baseURL = baseURL;
|
||||
}
|
||||
|
||||
public boolean isOnRemoteServer() {
|
||||
return isOnRemoteServer;
|
||||
}
|
||||
|
||||
public void setOnRemoteServer(boolean isOnRemoteServer) {
|
||||
this.isOnRemoteServer = isOnRemoteServer;
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.sap.sailing.gwt.ui.shared.eventlist;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.EventViewDTO.EventState;
|
||||
|
||||
public class EventListViewDTO implements IsSerializable {
|
||||
|
||||
private ArrayList<EventListEventDTO> upcommingEvents = new ArrayList<>();
|
||||
private ArrayList<EventListYearDTO> recentEvents = new ArrayList<>();
|
||||
|
||||
public ArrayList<EventListEventDTO> getUpcommingEvents() {
|
||||
return upcommingEvents;
|
||||
}
|
||||
|
||||
private void addUpcommingEvent(EventListEventDTO event) {
|
||||
for(int i = 0; i < upcommingEvents.size(); i++) {
|
||||
if(upcommingEvents.get(i).getStartDate().compareTo(event.getStartDate()) > 0);
|
||||
upcommingEvents.add(i, event);
|
||||
}
|
||||
upcommingEvents.add(event);
|
||||
}
|
||||
|
||||
public ArrayList<EventListYearDTO> getRecentEvents() {
|
||||
return recentEvents;
|
||||
}
|
||||
|
||||
private EventListYearDTO getYear(int year) {
|
||||
for(int i = 0; i < recentEvents.size(); i++) {
|
||||
EventListYearDTO yearDTO = recentEvents.get(i);
|
||||
if(year == yearDTO.getYear()) {
|
||||
return yearDTO;
|
||||
}
|
||||
if(year > yearDTO.getYear()) {
|
||||
EventListYearDTO newYear = new EventListYearDTO(year);
|
||||
recentEvents.add(i, newYear);
|
||||
return newYear;
|
||||
}
|
||||
}
|
||||
EventListYearDTO newYear = new EventListYearDTO(year);
|
||||
recentEvents.add(newYear);
|
||||
return newYear;
|
||||
}
|
||||
|
||||
public void addEvent(EventListEventDTO event, int year) {
|
||||
if (event.getState() == EventState.RUNNING || event.getState() == EventState.FINISHED) {
|
||||
// recent event or live event
|
||||
getYear(year).addEvent(event);
|
||||
} else {
|
||||
// upcoming event
|
||||
addUpcommingEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.sap.sailing.gwt.ui.shared.eventlist;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
|
||||
public class EventListYearDTO implements IsSerializable {
|
||||
private int year;
|
||||
private int countryCount;
|
||||
private int sailorCount;
|
||||
private int trackedRacesCount;
|
||||
private ArrayList<EventListEventDTO> events = new ArrayList<>();
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private EventListYearDTO() {
|
||||
}
|
||||
|
||||
public EventListYearDTO(int year) {
|
||||
this.year = year;
|
||||
}
|
||||
|
||||
public int getYear() {
|
||||
return year;
|
||||
}
|
||||
|
||||
public ArrayList<EventListEventDTO> getEvents() {
|
||||
return events;
|
||||
}
|
||||
|
||||
protected void addEvent(EventListEventDTO event) {
|
||||
for(int i = 0; i < events.size(); i++) {
|
||||
if(events.get(i).getStartDate().compareTo(event.getStartDate()) < 0);
|
||||
events.add(i, event);
|
||||
}
|
||||
events.add(event);
|
||||
}
|
||||
|
||||
public int getCountryCount() {
|
||||
return countryCount;
|
||||
}
|
||||
|
||||
public void setCountryCount(int countryCount) {
|
||||
this.countryCount = countryCount;
|
||||
}
|
||||
|
||||
public int getSailorCount() {
|
||||
return sailorCount;
|
||||
}
|
||||
|
||||
public void setSailorCount(int sailorCount) {
|
||||
this.sailorCount = sailorCount;
|
||||
}
|
||||
|
||||
public int getTrackedRacesCount() {
|
||||
return trackedRacesCount;
|
||||
}
|
||||
|
||||
public void setTrackedRacesCount(int trackedRacesCount) {
|
||||
this.trackedRacesCount = trackedRacesCount;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -18,7 +18,7 @@ public class EventViewDTO extends EventDTO {
|
||||
}
|
||||
|
||||
public enum EventState {
|
||||
UPCOMING(LabelType.UPCOMMING), RUNNING(LabelType.LIVE), FINISHED(LabelType.FINISHED), PLANNED(LabelType.NONE);
|
||||
PLANNED(LabelType.NONE), UPCOMING(LabelType.UPCOMMING), RUNNING(LabelType.LIVE), FINISHED(LabelType.FINISHED);
|
||||
|
||||
private final LabelType stateMarker;
|
||||
|
||||
|
||||
+8
@@ -17,6 +17,14 @@ public class EventMetadataDTO extends EventReferenceDTO {
|
||||
public EventState getState() {
|
||||
return state;
|
||||
}
|
||||
|
||||
public boolean isStarted() {
|
||||
return state.compareTo(EventState.RUNNING) >= 0;
|
||||
}
|
||||
|
||||
public boolean isFinished() {
|
||||
return state == EventState.FINISHED;
|
||||
}
|
||||
|
||||
public void setState(EventState state) {
|
||||
this.state = state;
|
||||
|
||||
Reference in new issue
Block a user