mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
Implemented calculation of media count for race list
This commit is contained in:
1 parent
6163565b24
commit
2e743e8a86
3 files changed
+42
-9
No files matched your search
+10
-6
@@ -12,6 +12,7 @@ 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.ResultWithTTL;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
@@ -35,21 +36,23 @@ public final class EventActionUtil {
|
||||
}
|
||||
|
||||
public static LeaderboardContext getOverallLeaderboardContext(DispatchContext context, UUID eventId) {
|
||||
Event event = context.getRacingEventService().getEvent(eventId);
|
||||
RacingEventService service = context.getRacingEventService();
|
||||
Event event = service.getEvent(eventId);
|
||||
if(!HomeServiceUtil.isFakeSeries(event)) {
|
||||
throw new DispatchException("The given event is not a series event.");
|
||||
}
|
||||
LeaderboardGroup leaderboardGroup = Util.get(event.getLeaderboardGroups(), 0);
|
||||
Leaderboard overallLeaderboard = leaderboardGroup.getOverallLeaderboard();
|
||||
return new LeaderboardContext(event, leaderboardGroup, overallLeaderboard);
|
||||
return new LeaderboardContext(service, event, leaderboardGroup, overallLeaderboard);
|
||||
}
|
||||
|
||||
public static LeaderboardContext getLeaderboardContext(DispatchContext context, UUID eventId, String leaderboardId) {
|
||||
Event event = context.getRacingEventService().getEvent(eventId);
|
||||
RacingEventService service = context.getRacingEventService();
|
||||
Event event = service.getEvent(eventId);
|
||||
for(LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) {
|
||||
for(Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
if(leaderboard.getName().equals(leaderboardId)) {
|
||||
return new LeaderboardContext(event, leaderboardGroup, leaderboard);
|
||||
return new LeaderboardContext(service, event, leaderboardGroup, leaderboard);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -87,10 +90,11 @@ public final class EventActionUtil {
|
||||
}
|
||||
|
||||
public static void forLeaderboardsOfEvent(DispatchContext context, UUID eventId, LeaderboardCallback callback) {
|
||||
Event event = context.getRacingEventService().getEvent(eventId);
|
||||
RacingEventService service = context.getRacingEventService();
|
||||
Event event = service.getEvent(eventId);
|
||||
for (LeaderboardGroup leaderboardGroup : event.getLeaderboardGroups()) {
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
callback.doForLeaderboard(new LeaderboardContext(event, leaderboardGroup, leaderboard));
|
||||
callback.doForLeaderboard(new LeaderboardContext(service, event, leaderboardGroup, leaderboard));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -27,8 +27,10 @@ public class LeaderboardContext {
|
||||
private final Event event;
|
||||
private final LeaderboardGroup leaderboardGroup;
|
||||
private final Leaderboard leaderboard;
|
||||
private final RacingEventService service;
|
||||
|
||||
public LeaderboardContext(Event event, LeaderboardGroup leaderboardGroup, Leaderboard leaderboard) {
|
||||
public LeaderboardContext(RacingEventService service, Event event, LeaderboardGroup leaderboardGroup, Leaderboard leaderboard) {
|
||||
this.service = service;
|
||||
this.event = event;
|
||||
this.leaderboardGroup = leaderboardGroup;
|
||||
this.leaderboard = leaderboard;
|
||||
@@ -37,7 +39,7 @@ public class LeaderboardContext {
|
||||
public void forRaces(DispatchContext context, RaceCallback callback) {
|
||||
for(RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
for(Fleet fleet : raceColumn.getFleets()) {
|
||||
callback.doForRace(new RaceContext(event, leaderboard, raceColumn, fleet, context.getRacingEventService()));
|
||||
callback.doForRace(new RaceContext(service, event, leaderboard, raceColumn, fleet, context.getRacingEventService()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+28
-1
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.common.TimingConstants;
|
||||
import com.sap.sailing.domain.common.Wind;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.common.media.MediaTrack;
|
||||
import com.sap.sailing.domain.common.racelog.FlagPole;
|
||||
import com.sap.sailing.domain.common.racelog.Flags;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
@@ -45,10 +46,12 @@ import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceTrackingState;
|
||||
import com.sap.sailing.gwt.ui.shared.race.RaceMetadataDTO.RaceViewState;
|
||||
import com.sap.sailing.gwt.ui.shared.race.RaceProgressDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.race.SimpleWindDTO;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sse.common.Duration;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MediaType;
|
||||
|
||||
@GwtIncompatible
|
||||
public class RaceContext {
|
||||
@@ -64,6 +67,7 @@ public class RaceContext {
|
||||
private final RaceLog raceLog;
|
||||
private final ReadonlyRaceState state;
|
||||
private final Event event;
|
||||
private final RacingEventService service;
|
||||
|
||||
private TimePoint startTime;
|
||||
private boolean startTimeCalculated = false;
|
||||
@@ -71,7 +75,8 @@ public class RaceContext {
|
||||
private boolean finishTimeCalculated = false;
|
||||
private RaceViewState raceViewState;
|
||||
|
||||
public RaceContext(Event event, Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet, RaceLogResolver raceLogResolver) {
|
||||
public RaceContext(RacingEventService service, Event event, Leaderboard leaderboard, RaceColumn raceColumn, Fleet fleet, RaceLogResolver raceLogResolver) {
|
||||
this.service = service;
|
||||
this.event = event;
|
||||
this.leaderboard = leaderboard;
|
||||
this.raceColumn = raceColumn;
|
||||
@@ -305,12 +310,34 @@ public class RaceContext {
|
||||
liveRaceDTO.setDuration(getDurationOrNull());
|
||||
liveRaceDTO.setWinner(getWinnerOrNull());
|
||||
liveRaceDTO.setWindSourcesCount(getWindSourceCount());
|
||||
liveRaceDTO.setVideoCount(getVideoCount());
|
||||
liveRaceDTO.setAudioCount(getAudioCount());
|
||||
|
||||
return liveRaceDTO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private int getAudioCount() {
|
||||
return getMediaCount( MediaType.audio);
|
||||
}
|
||||
|
||||
private int getVideoCount() {
|
||||
return getMediaCount(MediaType.video);
|
||||
}
|
||||
|
||||
private int getMediaCount(MediaType mediaType) {
|
||||
int mediaCount = 0;
|
||||
if(trackedRace != null) {
|
||||
for(MediaTrack mediaTrack : service.getMediaTracksForRace(trackedRace.getRaceIdentifier())) {
|
||||
if(mediaTrack.mimeType != null && mediaTrack.mimeType.mediaType == mediaType) {
|
||||
mediaCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return mediaCount;
|
||||
}
|
||||
|
||||
private int getWindSourceCount() {
|
||||
if(trackedRace != null) {
|
||||
return trackedRace.getWindSources().size() - trackedRace.getWindSourcesToExclude().size();
|
||||
|
||||
Reference in new issue
Block a user