mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
Get marks from RegattaLog instead of from trackedRace/RaceLog
This commit is contained in:
1 parent
4d7eed5032
commit
36e2908adc
2 files changed
+17
-33
No files matched your search
+1
-1
@@ -579,7 +579,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
|
||||
|
||||
ArrayList<LeaderboardGroupDTO> getLeaderboardGroupsByEventId(UUID id);
|
||||
|
||||
Iterable<MarkDTO> getMarksInRegattaLog(String leaderboardName);
|
||||
Iterable<MarkDTO> getMarksInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException;
|
||||
|
||||
List<DeviceMappingDTO> getDeviceMappingsFromLogHierarchy(String leaderboardName) throws TransformationException;
|
||||
|
||||
|
||||
+16
-32
@@ -4963,14 +4963,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
/**
|
||||
* Also finds the last position of the marks, if set by pinging them
|
||||
*/
|
||||
private Collection<MarkDTO> convertToMarkDTOs(LeaderboardThatHasRegattaLike leaderboard, RaceLog raceLog, Iterable<Mark> marks) {
|
||||
List<MarkDTO> dtos = new ArrayList<MarkDTO>();
|
||||
private MarkDTO convertToMarkDTO(LeaderboardThatHasRegattaLike leaderboard, Mark mark) {
|
||||
final TimePoint now = MillisecondsTimePoint.now();
|
||||
for (Mark mark : marks) {
|
||||
final Position lastPos = getService().getMarkPosition(mark, leaderboard, now, raceLog);
|
||||
dtos.add(convertToMarkDTO(mark, lastPos));
|
||||
}
|
||||
return dtos;
|
||||
final Position lastPos = getService().getMarkPosition(mark, leaderboard, now, null);
|
||||
return convertToMarkDTO(mark, lastPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -5724,38 +5720,26 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Marks defined in the RaceLogs of the RaceColumns corresponding to the leaderboard leaderboardName
|
||||
* Gets all Marks defined in the RegattaLog and the trackedRace
|
||||
* @throws DoesNotHaveRegattaLogException
|
||||
*/
|
||||
@Override
|
||||
public Iterable<MarkDTO> getMarksInRegattaLog(String leaderboardName) {
|
||||
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
|
||||
if (leaderboard == null) {
|
||||
// TODO: implement proper Exception Handling
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!(leaderboard instanceof IsRegattaLike)){
|
||||
return null;
|
||||
public Iterable<MarkDTO> getMarksInRegattaLog(String leaderboardName) throws DoesNotHaveRegattaLogException {
|
||||
Leaderboard l = getService().getLeaderboardByName(leaderboardName);
|
||||
if (! (l instanceof HasRegattaLike)) {
|
||||
throw new DoesNotHaveRegattaLogException();
|
||||
}
|
||||
LeaderboardThatHasRegattaLike leaderboard = (LeaderboardThatHasRegattaLike) l;
|
||||
RegattaLog regattaLog = ((HasRegattaLike) l).getRegattaLike().getRegattaLog();
|
||||
|
||||
Set<MarkDTO> markDTOs = new HashSet<>();
|
||||
|
||||
Map<Serializable, Mark> marksById = new HashMap<>();
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); //might not yet be attached
|
||||
|
||||
if (trackedRace != null) {
|
||||
for (Mark markFromTrackedRace : trackedRace.getMarks()) {
|
||||
marksById.put(markFromTrackedRace.getId(), markFromTrackedRace);
|
||||
}
|
||||
}
|
||||
Util.addAll(convertToMarkDTOs(
|
||||
(LeaderboardThatHasRegattaLike) getService().getLeaderboardByName(leaderboardName),
|
||||
raceLog, marksById.values()), markDTOs);
|
||||
}
|
||||
List<RegattaLogEvent> markEvents = new AllEventsOfTypeFinder<>(regattaLog, /* only unrevoked */ true, RegattaLogDefineMarkEvent.class).analyze();
|
||||
for (RegattaLogEvent regattaLogEvent : markEvents) {
|
||||
RegattaLogDefineMarkEvent defineMarkEvent = (RegattaLogDefineMarkEvent) regattaLogEvent;
|
||||
markDTOs.add(convertToMarkDTO(leaderboard, defineMarkEvent.getMark()));
|
||||
}
|
||||
|
||||
return markDTOs;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user