Implemented calculation of media count for race list

This commit is contained in:
Steffen Schaefer committed 2015-07-13 10:32:24 +02:00
1 parent 6163565b24
commit 2e743e8a86
3 files changed
+42 -9

No files matched your search

@@ -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));
}
}
}
@@ -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,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();