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.LeaderboardGroupBase;
|
||||||
import com.sap.sailing.domain.base.RaceColumn;
|
import com.sap.sailing.domain.base.RaceColumn;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
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.FlexibleLeaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
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.sailing.server.RacingEventService;
|
||||||
import com.sap.sse.common.TimePoint;
|
import com.sap.sse.common.TimePoint;
|
||||||
import com.sap.sse.common.Util;
|
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.impl.MillisecondsTimePoint;
|
||||||
import com.sap.sse.common.media.ImageDescriptor;
|
import com.sap.sse.common.media.ImageDescriptor;
|
||||||
import com.sap.sse.common.media.MediaDescriptor;
|
import com.sap.sse.common.media.MediaDescriptor;
|
||||||
@@ -450,46 +446,11 @@ public final class HomeServiceUtil {
|
|||||||
return result;
|
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() {
|
public static TimePoint getLiveTimePoint() {
|
||||||
return new MillisecondsTimePoint(getLiveTimePointInMillis());
|
return new MillisecondsTimePoint(getLiveTimePointInMillis());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long getLiveTimePointInMillis() {
|
public static long getLiveTimePointInMillis() {
|
||||||
// TODO better solution
|
// TODO better solution
|
||||||
long livePlayDelayInMillis = 15_000;
|
long livePlayDelayInMillis = 15_000;
|
||||||
return System.currentTimeMillis() - livePlayDelayInMillis;
|
return System.currentTimeMillis() - livePlayDelayInMillis;
|
||||||
|
|||||||
+90
-3
@@ -1,18 +1,25 @@
|
|||||||
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
package com.sap.sailing.gwt.ui.shared.dispatch.event;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import com.sap.sailing.domain.base.Event;
|
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.Fleet;
|
||||||
import com.sap.sailing.domain.base.RaceColumn;
|
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.CompetitorDTO;
|
||||||
|
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||||
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||||
import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO;
|
import com.sap.sailing.domain.common.dto.LeaderboardEntryDTO;
|
||||||
import com.sap.sailing.domain.common.dto.LeaderboardRowDTO;
|
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.Leaderboard;
|
||||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
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.server.HomeServiceUtil;
|
||||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchException;
|
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.dispatch.regatta.RegattaWithProgressDTO;
|
||||||
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
import com.sap.sailing.gwt.ui.shared.eventview.RegattaMetadataDTO;
|
||||||
import com.sap.sailing.server.RacingEventService;
|
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 {
|
public class LeaderboardContext {
|
||||||
private static final Logger logger = Logger.getLogger(LeaderboardContext.class.getName());
|
private static final Logger logger = Logger.getLogger(LeaderboardContext.class.getName());
|
||||||
@@ -49,7 +59,7 @@ public class LeaderboardContext {
|
|||||||
RegattaProgressCalculator regattaProgressCalculator = new RegattaProgressCalculator();
|
RegattaProgressCalculator regattaProgressCalculator = new RegattaProgressCalculator();
|
||||||
forRaces(context, regattaProgressCalculator);
|
forRaces(context, regattaProgressCalculator);
|
||||||
RegattaWithProgressDTO regattaDTO = new RegattaWithProgressDTO(regattaProgressCalculator.getResult());
|
RegattaWithProgressDTO regattaDTO = new RegattaWithProgressDTO(regattaProgressCalculator.getResult());
|
||||||
HomeServiceUtil.fillRegattaFields(event, leaderboardGroup, leaderboard, regattaDTO);
|
fillRegattaFields(regattaDTO);
|
||||||
return regattaDTO;
|
return regattaDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +73,7 @@ public class LeaderboardContext {
|
|||||||
|
|
||||||
result.setScoreCorrectionText(leaderboardDTO.getComment());
|
result.setScoreCorrectionText(leaderboardDTO.getComment());
|
||||||
result.setLastScoreUpdate(leaderboardDTO.getTimePointOfLastCorrectionsValidity());
|
result.setLastScoreUpdate(leaderboardDTO.getTimePointOfLastCorrectionsValidity());
|
||||||
boolean isLive = HomeServiceUtil.hasLiveRace(leaderboardDTO);
|
boolean isLive = hasLiveRace(leaderboardDTO);
|
||||||
result.setLive(isLive);
|
result.setLive(isLive);
|
||||||
|
|
||||||
int rank = 0;
|
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() {
|
public String getLeaderboardName() {
|
||||||
return leaderboard.getName();
|
return leaderboard.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegattaMetadataDTO asRegattaMetadataDTO() {
|
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() {
|
public boolean isPartOfEvent() {
|
||||||
|
|||||||
Reference in new issue
Block a user