mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 21:30:57 +00:00
bug 2467 #19: passing through RacingEventService as RaceLogResolver; added as transient field to TrackedRace, restored after initial load in RacingEventServiceImpl
This commit is contained in:
1 parent
d2113723a9
commit
42dedcecfd
62 files changed
+376
-268
No files matched your search
+1
-1
@@ -42,7 +42,7 @@ public class EventRaceStatesJsonGetServlet extends AbstractJsonHttpServlet {
|
||||
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Event "+eventIdParam+" not found");
|
||||
} else {
|
||||
EventRaceStatesSerializer eventRaceStatesSerializer = new EventRaceStatesSerializer(filterByCourseAreaParam,
|
||||
filterByLeaderboardParam, filterByDayOffsetParam);
|
||||
filterByLeaderboardParam, filterByDayOffsetParam, getService());
|
||||
JSONObject result = eventRaceStatesSerializer.serialize(new Pair<Event, Iterable<Leaderboard>>(event, getService().getLeaderboards().values()));
|
||||
setJsonResponseHeader(response);
|
||||
result.writeJSONString(response.getWriter());
|
||||
|
||||
+17
-17
@@ -6,6 +6,7 @@ import java.util.Date;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
@@ -19,31 +20,30 @@ public class EventRaceStatesSerializer implements JsonSerializer<Pair<Event, Ite
|
||||
public static final String FIELD_EVENT_ID = "id";
|
||||
public static final String FIELD_RACE_STATES = "raceStates";
|
||||
|
||||
private String filterByCourseArea;
|
||||
private String filterByLeaderboardName;
|
||||
private Calendar filterDay;
|
||||
private final String filterByCourseArea;
|
||||
private final String filterByLeaderboardName;
|
||||
private final Calendar filterDay;
|
||||
private final RaceLogResolver raceLogResolver;
|
||||
|
||||
public EventRaceStatesSerializer() {
|
||||
this.filterByCourseArea = null;
|
||||
this.filterByLeaderboardName = null;
|
||||
this.filterDay = null;
|
||||
}
|
||||
|
||||
public EventRaceStatesSerializer(String filterByCourseArea, String filterByLeaderboard, String filterByDayOffset) {
|
||||
public EventRaceStatesSerializer(String filterByCourseArea, String filterByLeaderboard, String filterByDayOffset, RaceLogResolver raceLogResolver) {
|
||||
this.filterByCourseArea = filterByCourseArea;
|
||||
this.filterByLeaderboardName = filterByLeaderboard;
|
||||
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
Integer dayOffset = null;
|
||||
if(filterByDayOffset != null) {
|
||||
if (filterByDayOffset != null) {
|
||||
Calendar myFilterDay;
|
||||
try {
|
||||
dayOffset = Integer.parseInt(filterByDayOffset);
|
||||
filterDay = Calendar.getInstance();
|
||||
filterDay.setTime(new Date());
|
||||
filterDay.add(Calendar.DAY_OF_YEAR, dayOffset);
|
||||
myFilterDay = Calendar.getInstance();
|
||||
myFilterDay.setTime(new Date());
|
||||
myFilterDay.add(Calendar.DAY_OF_YEAR, dayOffset);
|
||||
} catch (NumberFormatException e) {
|
||||
// invalid integer
|
||||
filterDay = null;
|
||||
myFilterDay = null;
|
||||
}
|
||||
filterDay = myFilterDay;
|
||||
} else {
|
||||
filterDay = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class EventRaceStatesSerializer implements JsonSerializer<Pair<Event, Ite
|
||||
for (CourseArea courseArea : event.getVenue().getCourseAreas()) {
|
||||
if(filterByCourseArea == null || courseArea.getName().equals(filterByCourseArea)) {
|
||||
for (Leaderboard leaderboard : leaderboards) {
|
||||
RaceStateSerializer raceStateSerializer = new RaceStateSerializer(leaderboard);
|
||||
RaceStateSerializer raceStateSerializer = new RaceStateSerializer(raceLogResolver);
|
||||
if (filterByLeaderboardName == null || leaderboard.getName().equals(filterByLeaderboardName)) {
|
||||
if (leaderboard.getDefaultCourseArea() != null && leaderboard.getDefaultCourseArea().equals(courseArea)) {
|
||||
String leaderboardName = leaderboard.getName();
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ public class EventsResource extends AbstractSailingServerResource {
|
||||
response = getBadEventErrorResponse(eventId);
|
||||
} else {
|
||||
EventRaceStatesSerializer eventRaceStatesSerializer = new EventRaceStatesSerializer(filterByCourseArea,
|
||||
filterByLeaderboard, filterByDayOffset);
|
||||
filterByLeaderboard, filterByDayOffset, getService());
|
||||
JSONObject raceStatesJson = eventRaceStatesSerializer.serialize(new Pair<Event, Iterable<Leaderboard>>(event, getService().getLeaderboards().values()));
|
||||
String json = raceStatesJson.toJSONString();
|
||||
response = Response.ok(json, MediaType.APPLICATION_JSON).build();
|
||||
|
||||
+7
-13
@@ -7,9 +7,10 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogFlagEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.AbortingFlagFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.FinishedTimeFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.LastFlagsFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.StartTimeFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.ReadonlyRaceState;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.impl.ReadonlyRaceStateImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.ReadonlyGateStartRacingProcedure;
|
||||
@@ -17,23 +18,16 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceStateOfSameDayHelper;
|
||||
import com.sap.sailing.domain.racelog.analyzing.ServerSideRaceLogResolver;
|
||||
import com.sap.sailing.domain.regattalike.HasRegattaLike;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.Util.Pair;
|
||||
|
||||
public class RaceStateSerializer implements JsonSerializer<Pair<RaceColumn, Fleet>> {
|
||||
private final HasRegattaLike regattaLike;
|
||||
private final RaceLogResolver raceLogResolver;
|
||||
|
||||
public RaceStateSerializer(Leaderboard leaderboard) {
|
||||
if (leaderboard instanceof HasRegattaLike) {
|
||||
regattaLike = (HasRegattaLike) leaderboard;
|
||||
} else {
|
||||
regattaLike = null;
|
||||
}
|
||||
public RaceStateSerializer(RaceLogResolver raceLogResolver) {
|
||||
this.raceLogResolver = raceLogResolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,7 +43,7 @@ public class RaceStateSerializer implements JsonSerializer<Pair<RaceColumn, Flee
|
||||
result.put("trackedRaceId", raceIdentifier != null ? raceIdentifier.toString() : null);
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
if (raceLog != null && !raceLog.isEmpty()) {
|
||||
ReadonlyRaceState state = ReadonlyRaceStateImpl.create(new ServerSideRaceLogResolver(regattaLike),raceLog);
|
||||
ReadonlyRaceState state = ReadonlyRaceStateImpl.create(raceLogResolver, raceLog);
|
||||
RaceLogRaceStatus status = state.getStatus();
|
||||
TimePoint startTime = state.getStartTime();
|
||||
TimePoint finishedTime = state.getFinishedTime();
|
||||
@@ -91,7 +85,7 @@ public class RaceStateSerializer implements JsonSerializer<Pair<RaceColumn, Flee
|
||||
boolean result = false;
|
||||
RaceLog raceLog = raceColumn.getRaceLog(fleet);
|
||||
if (raceLog != null && !raceLog.isEmpty()) {
|
||||
TimePoint startTime = new StartTimeFinder(new ServerSideRaceLogResolver(regattaLike), raceLog).analyze().getStartTime();
|
||||
TimePoint startTime = new StartTimeFinder(raceLogResolver, raceLog).analyze().getStartTime();
|
||||
TimePoint finishedTime = new FinishedTimeFinder(raceLog).analyze();
|
||||
RaceLogFlagEvent abortingFlagEvent = new AbortingFlagFinder(raceLog).analyze();
|
||||
TimePoint abortingTime = abortingFlagEvent != null ? abortingFlagEvent.getLogicalTimePoint() : null;
|
||||
|
||||
Reference in new issue
Block a user