mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
Refactored RegattaMetadataDTO mapping to LeaderboardContext
This commit is contained in:
1 parent
e9abde48e7
commit
ed5df9a27b
2 files changed
+91
-43
No files matched your search
+1
-40
@@ -19,9 +19,6 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.LeaderboardGroupBase;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
@@ -40,7 +37,6 @@ import com.sap.sailing.gwt.ui.shared.start.StageEventType;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.ImageDescriptor;
|
||||
import com.sap.sse.common.media.MediaDescriptor;
|
||||
@@ -450,46 +446,11 @@ public final class HomeServiceUtil {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static RegattaMetadataDTO toRegattaMetadataDTO(EventBase event, LeaderboardGroup leaderboardGroup, Leaderboard leaderboard) {
|
||||
RegattaMetadataDTO regattaDTO = new RegattaMetadataDTO();
|
||||
fillRegattaFields(event, leaderboardGroup, leaderboard, regattaDTO);
|
||||
|
||||
return regattaDTO;
|
||||
}
|
||||
|
||||
public static void fillRegattaFields(EventBase event, LeaderboardGroup leaderboardGroup, Leaderboard leaderboard,
|
||||
RegattaMetadataDTO regattaDTO) {
|
||||
regattaDTO.setId(leaderboard.getName());
|
||||
regattaDTO.setDisplayName(leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName());
|
||||
if(hasMultipleLeaderboardGroups(event)) {
|
||||
regattaDTO.setBoatCategory(leaderboardGroup.getDisplayName() != null ? leaderboardGroup.getDisplayName() : leaderboardGroup.getName());
|
||||
}
|
||||
regattaDTO.setCompetitorsCount(calculateCompetitorsCount(leaderboard));
|
||||
regattaDTO.setRaceCount(calculateRaceColumnCount(leaderboard));
|
||||
regattaDTO.setBoatClass(getBoatClassName(leaderboard));
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
|
||||
regattaDTO.setStartDate(regatta.getStartDate() != null ? regatta.getStartDate().asDate() : null);
|
||||
regattaDTO.setEndDate(regatta.getEndDate() != null ? regatta.getEndDate().asDate() : null);
|
||||
}
|
||||
regattaDTO.setState(calculateRegattaState(regattaDTO));
|
||||
regattaDTO.setDefaultCourseAreaName(getCourseAreaNameForRegattaIdThereIsMoreThanOne(event, leaderboard));
|
||||
}
|
||||
|
||||
private static boolean hasMultipleLeaderboardGroups(EventBase event) {
|
||||
return Util.size(event.getLeaderboardGroups()) > 1;
|
||||
}
|
||||
|
||||
public static boolean hasLiveRace(LeaderboardDTO leaderboard) {
|
||||
List<Pair<RaceColumnDTO, FleetDTO>> liveRaces = leaderboard.getLiveRaces(getLiveTimePointInMillis());
|
||||
return !liveRaces.isEmpty();
|
||||
}
|
||||
|
||||
public static TimePoint getLiveTimePoint() {
|
||||
return new MillisecondsTimePoint(getLiveTimePointInMillis());
|
||||
}
|
||||
|
||||
private static long getLiveTimePointInMillis() {
|
||||
public static long getLiveTimePointInMillis() {
|
||||
// TODO better solution
|
||||
long livePlayDelayInMillis = 15_000;
|
||||
return System.currentTimeMillis() - livePlayDelayInMillis;
|
||||
|
||||
+90
-3
@@ -1,18 +1,25 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardRowDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.gwt.server.HomeServiceUtil;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchException;
|
||||
@@ -21,6 +28,9 @@ import com.sap.sailing.gwt.ui.shared.dispatch.event.EventActionUtil.RaceCallback
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.regatta.RegattaWithProgressDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
|
||||
public class LeaderboardContext {
|
||||
private static final Logger logger = Logger.getLogger(LeaderboardContext.class.getName());
|
||||
@@ -49,7 +59,7 @@ public class LeaderboardContext {
|
||||
RegattaProgressCalculator regattaProgressCalculator = new RegattaProgressCalculator();
|
||||
forRaces(context, regattaProgressCalculator);
|
||||
RegattaWithProgressDTO regattaDTO = new RegattaWithProgressDTO(regattaProgressCalculator.getResult());
|
||||
HomeServiceUtil.fillRegattaFields(event, leaderboardGroup, leaderboard, regattaDTO);
|
||||
fillRegattaFields(regattaDTO);
|
||||
return regattaDTO;
|
||||
}
|
||||
|
||||
@@ -63,7 +73,7 @@ public class LeaderboardContext {
|
||||
|
||||
result.setScoreCorrectionText(leaderboardDTO.getComment());
|
||||
result.setLastScoreUpdate(leaderboardDTO.getTimePointOfLastCorrectionsValidity());
|
||||
boolean isLive = HomeServiceUtil.hasLiveRace(leaderboardDTO);
|
||||
boolean isLive = hasLiveRace(leaderboardDTO);
|
||||
result.setLive(isLive);
|
||||
|
||||
int rank = 0;
|
||||
@@ -89,12 +99,89 @@ public class LeaderboardContext {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasLiveRace(LeaderboardDTO leaderboard) {
|
||||
List<Pair<RaceColumnDTO, FleetDTO>> liveRaces = leaderboard.getLiveRaces(HomeServiceUtil.getLiveTimePointInMillis());
|
||||
return !liveRaces.isEmpty();
|
||||
}
|
||||
|
||||
private Date getStartDateWithEventFallback() {
|
||||
Date result = getStartDate();
|
||||
if(result != null) {
|
||||
return result;
|
||||
}
|
||||
return event.getStartDate().asDate();
|
||||
}
|
||||
|
||||
private Date getStartDate() {
|
||||
TimePoint timePoint = getStartTimePoint();
|
||||
if(timePoint != null) {
|
||||
return timePoint.asDate();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private TimePoint getStartTimePoint() {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
|
||||
return regatta.getStartDate();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Date getEndDateWithEventFallback() {
|
||||
Date result = getEndDate();
|
||||
if(result != null) {
|
||||
return result;
|
||||
}
|
||||
return event.getEndDate().asDate();
|
||||
}
|
||||
|
||||
private Date getEndDate() {
|
||||
TimePoint timePoint = getEndTimePoint();
|
||||
if(timePoint != null) {
|
||||
return timePoint.asDate();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private TimePoint getEndTimePoint() {
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
Regatta regatta = ((RegattaLeaderboard) leaderboard).getRegatta();
|
||||
return regatta.getEndDate();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getLeaderboardName() {
|
||||
return leaderboard.getName();
|
||||
}
|
||||
|
||||
public RegattaMetadataDTO asRegattaMetadataDTO() {
|
||||
return HomeServiceUtil.toRegattaMetadataDTO(event, leaderboardGroup, leaderboard);
|
||||
RegattaMetadataDTO regattaDTO = new RegattaMetadataDTO();
|
||||
fillRegattaFields(regattaDTO);
|
||||
|
||||
return regattaDTO;
|
||||
}
|
||||
|
||||
public void fillRegattaFields(RegattaMetadataDTO regattaDTO) {
|
||||
regattaDTO.setId(getLeaderboardName());
|
||||
regattaDTO.setDisplayName(leaderboard.getDisplayName() != null ? leaderboard.getDisplayName() : leaderboard.getName());
|
||||
if(hasMultipleLeaderboardGroups(event)) {
|
||||
regattaDTO.setBoatCategory(leaderboardGroup.getDisplayName() != null ? leaderboardGroup.getDisplayName() : leaderboardGroup.getName());
|
||||
}
|
||||
regattaDTO.setCompetitorsCount(HomeServiceUtil.calculateCompetitorsCount(leaderboard));
|
||||
regattaDTO.setRaceCount(HomeServiceUtil.calculateRaceColumnCount(leaderboard));
|
||||
regattaDTO.setBoatClass(HomeServiceUtil.getBoatClassName(leaderboard));
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
regattaDTO.setStartDate(getStartDateWithEventFallback());
|
||||
regattaDTO.setEndDate(getEndDateWithEventFallback());
|
||||
}
|
||||
regattaDTO.setState(HomeServiceUtil.calculateRegattaState(regattaDTO));
|
||||
regattaDTO.setDefaultCourseAreaName(HomeServiceUtil.getCourseAreaNameForRegattaIdThereIsMoreThanOne(event, leaderboard));
|
||||
}
|
||||
|
||||
private static boolean hasMultipleLeaderboardGroups(EventBase event) {
|
||||
return Util.size(event.getLeaderboardGroups()) > 1;
|
||||
}
|
||||
|
||||
public boolean isPartOfEvent() {
|
||||
|
||||
Reference in new issue
Block a user