mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-11 14:50:56 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
2e0bcaa63d
32 files changed
+634
-217
No files matched your search
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RegattaRegistry;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.common.RaceFetcher;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
@@ -67,20 +68,10 @@ import com.sap.sailing.expeditionconnector.ExpeditionListener;
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RaceFetcher {
|
||||
/**
|
||||
* @return a thread-safe copy of the regattas currently known by the service; it's safe for callers to iterate over
|
||||
* the iterable returned, and no risk of a {@link ConcurrentModificationException} exists
|
||||
*/
|
||||
Iterable<Regatta> getAllRegattas();
|
||||
|
||||
Regatta getRegattaByName(String name);
|
||||
|
||||
public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher {
|
||||
@Override
|
||||
Regatta getRegatta(RegattaName regattaName);
|
||||
|
||||
Regatta getRegatta(RegattaIdentifier regattaIdentifier);
|
||||
|
||||
@Override
|
||||
RaceDefinition getRace(RegattaAndRaceIdentifier raceIdentifier);
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.SpeedWithBearing;
|
||||
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
@@ -35,6 +35,7 @@ import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.persistence.MongoFactory;
|
||||
import com.sap.sailing.domain.persistence.MongoWindStoreFactory;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
@@ -337,8 +338,10 @@ public class AdminApp extends Servlet {
|
||||
try {
|
||||
TimePoint timePoint = getTimePoint(req, PARAM_NAME_TIME, PARAM_NAME_TIME_MILLIS, MillisecondsTimePoint.now());
|
||||
Wind wind = new WindImpl(p, timePoint, speed);
|
||||
final DynamicTrackedRace trackedRace = getService().getOrCreateTrackedRegatta(regatta).getTrackedRace(race);
|
||||
trackedRace.recordWind(wind, trackedRace.getWindSources(WindSourceType.WEB).iterator().next());
|
||||
final DynamicTrackedRace trackedRace = getService().getOrCreateTrackedRegatta(regatta).getExistingTrackedRace(race);
|
||||
if (trackedRace != null) {
|
||||
trackedRace.recordWind(wind, new WindSourceImpl(WindSourceType.WEB));
|
||||
}
|
||||
} catch (InvalidDateException ex) {
|
||||
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Couldn't parse time specification " + ex.getMessage());
|
||||
}
|
||||
|
||||
+7
-7
@@ -199,8 +199,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
// Add one default leaderboard that aggregates all races currently tracked by this service.
|
||||
// This is more for debugging purposes than for anything else.
|
||||
addFlexibleLeaderboard(DefaultLeaderboardName.DEFAULT_LEADERBOARD_NAME, new int[] { 5, 8 });
|
||||
loadStoredLeaderboardsAndGroups();
|
||||
loadStoredRegattas();
|
||||
loadStoredLeaderboardsAndGroups();
|
||||
loadStoredEvents();
|
||||
}
|
||||
|
||||
@@ -222,14 +222,14 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
private void loadStoredLeaderboardsAndGroups() {
|
||||
// Loading all leaderboard groups and the contained leaderboards
|
||||
for (LeaderboardGroup leaderboardGroup : domainObjectFactory.getAllLeaderboardGroups()) {
|
||||
for (LeaderboardGroup leaderboardGroup : domainObjectFactory.getAllLeaderboardGroups(this)) {
|
||||
leaderboardGroupsByName.put(leaderboardGroup.getName(), leaderboardGroup);
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
leaderboardsByName.put(leaderboard.getName(), leaderboard);
|
||||
}
|
||||
}
|
||||
// Loading the remaining leaderboards
|
||||
for (Leaderboard leaderboard : domainObjectFactory.getLeaderboardsNotInGroup()) {
|
||||
for (Leaderboard leaderboard : domainObjectFactory.getLeaderboardsNotInGroup(this)) {
|
||||
leaderboardsByName.put(leaderboard.getName(), leaderboard);
|
||||
}
|
||||
}
|
||||
@@ -244,7 +244,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
leaderboardsByName.put(name, result);
|
||||
}
|
||||
mongoObjectFactory.storeFlexibleLeaderboard(result);
|
||||
mongoObjectFactory.storeLeaderboard(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
}
|
||||
leaderboardsByName.put(result.getName(), result);
|
||||
}
|
||||
mongoObjectFactory.storeRegattaLeaderboard(result);
|
||||
mongoObjectFactory.storeLeaderboard(result);
|
||||
} else {
|
||||
logger.warning("Cannot find regatta "+regattaIdentifier+". Hence, cannot create regatta leaderboard for it.");
|
||||
}
|
||||
@@ -347,13 +347,13 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
|
||||
@Override
|
||||
public void updateStoredFlexibleLeaderboard(FlexibleLeaderboard leaderboard) {
|
||||
mongoObjectFactory.storeFlexibleLeaderboard(leaderboard);
|
||||
mongoObjectFactory.storeLeaderboard(leaderboard);
|
||||
syncGroupsAfterLeaderboardChange(leaderboard, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateStoredRegattaLeaderboard(RegattaLeaderboard leaderboard) {
|
||||
mongoObjectFactory.storeRegattaLeaderboard(leaderboard);
|
||||
mongoObjectFactory.storeLeaderboard(leaderboard);
|
||||
syncGroupsAfterLeaderboardChange(leaderboard, true);
|
||||
}
|
||||
|
||||
|
||||
+3
-7
@@ -1,10 +1,7 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.domain.common.NoWindException;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
@@ -18,14 +15,14 @@ public class UpdateLeaderboardMaxPointsReason extends AbstractLeaderboardColumnO
|
||||
private static final long serialVersionUID = -492130952256848047L;
|
||||
private final String competitorIdAsString;
|
||||
private final MaxPointsReason newMaxPointsReason;
|
||||
private final Date date;
|
||||
private final TimePoint timePoint;
|
||||
|
||||
public UpdateLeaderboardMaxPointsReason(String leaderboardName, String columnName, String competitorIdAsString,
|
||||
MaxPointsReason newMaxPointsReason, Date date) {
|
||||
MaxPointsReason newMaxPointsReason, TimePoint timePoint) {
|
||||
super(leaderboardName, columnName);
|
||||
this.competitorIdAsString = competitorIdAsString;
|
||||
this.newMaxPointsReason = newMaxPointsReason;
|
||||
this.date = date;
|
||||
this.timePoint = timePoint;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -42,7 +39,6 @@ public class UpdateLeaderboardMaxPointsReason extends AbstractLeaderboardColumnO
|
||||
|
||||
@Override
|
||||
public Pair<Integer, Integer> internalApplyTo(RacingEventService toState) throws NoWindException {
|
||||
TimePoint timePoint = new MillisecondsTimePoint(date);
|
||||
Leaderboard leaderboard = toState.getLeaderboardByName(getLeaderboardName());
|
||||
if (leaderboard != null) {
|
||||
Competitor competitor = leaderboard.getCompetitorByIdAsString(competitorIdAsString);
|
||||
|
||||
+4
-7
@@ -1,11 +1,9 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.common.NoWindException;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.impl.Util.Triple;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
@@ -15,14 +13,14 @@ public class UpdateLeaderboardScoreCorrection extends AbstractLeaderboardColumnO
|
||||
private static final long serialVersionUID = -977025759476022993L;
|
||||
private final String competitorIdAsString;
|
||||
private final Integer correctedScore;
|
||||
private final Date date;
|
||||
private final TimePoint timePoint;
|
||||
|
||||
public UpdateLeaderboardScoreCorrection(String leaderboardName, String columnName, String competitorIdAsString,
|
||||
Integer correctedScore, Date date) {
|
||||
Integer correctedScore, TimePoint timePoint) {
|
||||
super(leaderboardName, columnName);
|
||||
this.competitorIdAsString = competitorIdAsString;
|
||||
this.correctedScore = correctedScore;
|
||||
this.date = date;
|
||||
this.timePoint = timePoint;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -44,7 +42,6 @@ public class UpdateLeaderboardScoreCorrection extends AbstractLeaderboardColumnO
|
||||
int newTotalPoints;
|
||||
boolean isScoreCorrected;
|
||||
if (leaderboard != null) {
|
||||
MillisecondsTimePoint timePoint = new MillisecondsTimePoint(date);
|
||||
Competitor competitor = leaderboard.getCompetitorByIdAsString(competitorIdAsString);
|
||||
if (competitor != null) {
|
||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(getColumnName());
|
||||
|
||||
Reference in new issue
Block a user