mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-02 17:19:37 +00:00
Revert "Merge remote-tracking branch 'server/ribdashboard' into ribdashboard"
This reverts commit1fc692e4d3, reversing changes made to1c8bb3b414.
This commit is contained in:
1 parent
3069a2d70d
commit
73684d27c8
8 files changed
+6
-148
No files matched your search
-5
@@ -495,11 +495,6 @@ public class MockedTrackedRace implements DynamicTrackedRace {
|
|||||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, boolean useMarkPassingcalculator) {
|
DynamicRaceDefinitionSet raceDefinitionSetToUpdate, boolean useMarkPassingcalculator) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TrackedRace getPreviousRaceInExecutionOrder(TrackedRace race) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -73,9 +73,4 @@ public interface TrackedRegatta extends Serializable {
|
|||||||
|
|
||||||
void removeTrackedRace(RaceDefinition raceDefinition);
|
void removeTrackedRace(RaceDefinition raceDefinition);
|
||||||
|
|
||||||
/**
|
|
||||||
* Parameter <code>race</code> is a {@link TrackedRace} from which the method returns the previous {@link TrackedRace} in the execution order of a {@link Regatta}.
|
|
||||||
* */
|
|
||||||
TrackedRace getPreviousRaceInExecutionOrder(TrackedRace race);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
+2
-10
@@ -46,7 +46,6 @@ import com.sap.sailing.domain.tracking.RaceChangeListener;
|
|||||||
import com.sap.sailing.domain.tracking.RaceExecutionOrderProvider;
|
import com.sap.sailing.domain.tracking.RaceExecutionOrderProvider;
|
||||||
import com.sap.sailing.domain.tracking.StartTimeChangedListener;
|
import com.sap.sailing.domain.tracking.StartTimeChangedListener;
|
||||||
import com.sap.sailing.domain.tracking.TrackedLeg;
|
import com.sap.sailing.domain.tracking.TrackedLeg;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
|
||||||
import com.sap.sailing.domain.tracking.TrackedRaceStatus;
|
import com.sap.sailing.domain.tracking.TrackedRaceStatus;
|
||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.WindStore;
|
import com.sap.sailing.domain.tracking.WindStore;
|
||||||
@@ -661,15 +660,8 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
|||||||
TimePoint startOfTracking = getStartOfTracking();
|
TimePoint startOfTracking = getStartOfTracking();
|
||||||
TimePoint endOfRace = getEndOfRace();
|
TimePoint endOfRace = getEndOfRace();
|
||||||
TimePoint endOfTracking = getEndOfTracking();
|
TimePoint endOfTracking = getEndOfTracking();
|
||||||
TrackedRace previosRaceInExecutionOrder = getTrackedRegatta().getPreviousRaceInExecutionOrder(this);
|
if ((startOfTracking == null || !startOfTracking.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_MILLIS).after(wind.getTimePoint()) ||
|
||||||
long conditional_time_before_start_to_track_wind;
|
(startOfRace != null && !startOfRace.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_MILLIS).after(wind.getTimePoint())))
|
||||||
if(previosRaceInExecutionOrder == null || previosRaceInExecutionOrder.getEndOfTracking() != null || !previosRaceInExecutionOrder.hasWindData()){
|
|
||||||
conditional_time_before_start_to_track_wind = EXTRA_LONG_TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS;
|
|
||||||
}else{
|
|
||||||
conditional_time_before_start_to_track_wind = TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS;
|
|
||||||
}
|
|
||||||
if ((startOfTracking == null || !startOfTracking.minus(conditional_time_before_start_to_track_wind).after(wind.getTimePoint()) ||
|
|
||||||
(startOfRace != null && !startOfRace.minus(conditional_time_before_start_to_track_wind).after(wind.getTimePoint())))
|
|
||||||
&&
|
&&
|
||||||
// Caution: don't add to endOfTracking; it may be the end of time, leading to a wrap-around / overflow
|
// Caution: don't add to endOfTracking; it may be the end of time, leading to a wrap-around / overflow
|
||||||
(endOfTracking == null || endOfTracking.after(wind.getTimePoint().minus(TimingConstants.IS_LIVE_GRACE_PERIOD_IN_MILLIS)) ||
|
(endOfTracking == null || endOfTracking.after(wind.getTimePoint().minus(TimingConstants.IS_LIVE_GRACE_PERIOD_IN_MILLIS)) ||
|
||||||
|
|||||||
+2
-7
@@ -152,13 +152,8 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
|||||||
// TODO make this variable
|
// TODO make this variable
|
||||||
private static final long DELAY_FOR_CACHE_CLEARING_IN_MILLISECONDS = 7500;
|
private static final long DELAY_FOR_CACHE_CLEARING_IN_MILLISECONDS = 7500;
|
||||||
|
|
||||||
public static final long TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS = 4 * 60 * 1000l; // let wind start four minutes before race
|
public static final long TIME_BEFORE_START_TO_TRACK_WIND_MILLIS = 4 * 60 * 1000l; // let wind start four minutes before race
|
||||||
|
|
||||||
/**
|
|
||||||
* To make wind accessible 30 minutes before first race starts, there is a additional time buffer to record wind.
|
|
||||||
*/
|
|
||||||
public static final long EXTRA_LONG_TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS = 30 * 60 * 1000l;
|
|
||||||
|
|
||||||
private TrackedRaceStatus status;
|
private TrackedRaceStatus status;
|
||||||
|
|
||||||
private final Object statusNotifier;
|
private final Object statusNotifier;
|
||||||
|
|||||||
-114
@@ -7,8 +7,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@@ -16,13 +14,9 @@ import java.util.logging.Logger;
|
|||||||
|
|
||||||
import com.sap.sailing.domain.base.BoatClass;
|
import com.sap.sailing.domain.base.BoatClass;
|
||||||
import com.sap.sailing.domain.base.Competitor;
|
import com.sap.sailing.domain.base.Competitor;
|
||||||
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.RaceDefinition;
|
||||||
import com.sap.sailing.domain.base.Regatta;
|
import com.sap.sailing.domain.base.Regatta;
|
||||||
import com.sap.sailing.domain.base.Series;
|
|
||||||
import com.sap.sailing.domain.base.Sideline;
|
import com.sap.sailing.domain.base.Sideline;
|
||||||
import com.sap.sailing.domain.base.impl.AbstractRaceColumnListener;
|
|
||||||
import com.sap.sailing.domain.common.NoWindException;
|
import com.sap.sailing.domain.common.NoWindException;
|
||||||
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
import com.sap.sailing.domain.racelog.tracking.GPSFixStore;
|
||||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||||
@@ -32,16 +26,8 @@ import com.sap.sailing.domain.tracking.TrackedRace;
|
|||||||
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
import com.sap.sailing.domain.tracking.TrackedRegatta;
|
||||||
import com.sap.sailing.domain.tracking.WindStore;
|
import com.sap.sailing.domain.tracking.WindStore;
|
||||||
import com.sap.sse.common.TimePoint;
|
import com.sap.sse.common.TimePoint;
|
||||||
import com.sap.sse.util.SmartFutureCache;
|
|
||||||
import com.sap.sse.util.SmartFutureCache.AbstractCacheUpdater;
|
|
||||||
import com.sap.sse.util.SmartFutureCache.EmptyUpdateInterval;
|
|
||||||
|
|
||||||
import difflib.PatchFailedException;
|
|
||||||
|
|
||||||
public class TrackedRegattaImpl implements TrackedRegatta {
|
public class TrackedRegattaImpl implements TrackedRegatta {
|
||||||
|
|
||||||
private RaceExecutionOrderCache raceExecutionOrderCache;
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 6480508193567014285L;
|
private static final long serialVersionUID = 6480508193567014285L;
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(TrackedRegattaImpl.class.getName());
|
private static final Logger logger = Logger.getLogger(TrackedRegattaImpl.class.getName());
|
||||||
@@ -57,13 +43,11 @@ public class TrackedRegattaImpl implements TrackedRegatta {
|
|||||||
this.trackedRaces = new HashMap<RaceDefinition, TrackedRace>();
|
this.trackedRaces = new HashMap<RaceDefinition, TrackedRace>();
|
||||||
this.trackedRacesByBoatClass = new HashMap<BoatClass, Collection<TrackedRace>>();
|
this.trackedRacesByBoatClass = new HashMap<BoatClass, Collection<TrackedRace>>();
|
||||||
raceListeners = new HashSet<RaceListener>();
|
raceListeners = new HashSet<RaceListener>();
|
||||||
this.raceExecutionOrderCache = new RaceExecutionOrderCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
|
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
|
||||||
ois.defaultReadObject();
|
ois.defaultReadObject();
|
||||||
this.raceListeners = new HashSet<RaceListener>();
|
this.raceListeners = new HashSet<RaceListener>();
|
||||||
this.raceExecutionOrderCache = new RaceExecutionOrderCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeObject(ObjectOutputStream oos) throws IOException {
|
private void writeObject(ObjectOutputStream oos) throws IOException {
|
||||||
@@ -200,103 +184,5 @@ public class TrackedRegattaImpl implements TrackedRegatta {
|
|||||||
addTrackedRace(result);
|
addTrackedRace(result);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TrackedRace getPreviousRaceInExecutionOrder(TrackedRace race) {
|
|
||||||
List<TrackedRace> racesInOrder = raceExecutionOrderCache.getRacesInExecutionOrder();
|
|
||||||
if (racesInOrder != null) {
|
|
||||||
int indexOfRace = racesInOrder.indexOf(race);
|
|
||||||
if (indexOfRace != -1 && indexOfRace != 0) {
|
|
||||||
return racesInOrder.get(indexOfRace - 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class RaceExecutionOrderCache extends AbstractRaceColumnListener {
|
|
||||||
|
|
||||||
private transient SmartFutureCache<String, List<TrackedRace>, EmptyUpdateInterval> racesOrderCache;
|
|
||||||
private final String RACES_ORDER_LIST_CACHE_KEY = "racesOrderCacheKey";
|
|
||||||
private final String RACES_ORDER_LIST_LOCKS_NAME = getClass().getName();
|
|
||||||
private static final long serialVersionUID = -1016823551825618490L;
|
|
||||||
|
|
||||||
public RaceExecutionOrderCache() {
|
|
||||||
racesOrderCache = createRacesOrderCache();
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
getRegatta().addRaceColumnListener(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<TrackedRace> getRacesInExecutionOrder() {
|
|
||||||
List<TrackedRace> result;
|
|
||||||
result = racesOrderCache.get(RACES_ORDER_LIST_CACHE_KEY,/*waitForLatest*/ true);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void trackedRaceLinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void trackedRaceUnlinked(RaceColumn raceColumn, Fleet fleet, TrackedRace trackedRace) {
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void raceColumnAddedToContainer(RaceColumn raceColumn) {
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void raceColumnRemovedFromContainer(RaceColumn raceColumn) {
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void raceColumnMoved(RaceColumn raceColumn, int newIndex) {
|
|
||||||
racesOrderCache.triggerUpdate(RACES_ORDER_LIST_CACHE_KEY,/*update interval*/ null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<TrackedRace> reloadRacesInExecutionOrder() {
|
|
||||||
List<TrackedRace> raceIdListInExecutionOrder = new ArrayList<TrackedRace>();
|
|
||||||
Iterator<? extends Series> seriesInRegatta = getRegatta().getSeries().iterator();
|
|
||||||
while (seriesInRegatta.hasNext()) {
|
|
||||||
Series currentSeries = seriesInRegatta.next();
|
|
||||||
Iterator<? extends RaceColumn> raceColumns = currentSeries.getRaceColumns().iterator();
|
|
||||||
while (raceColumns.hasNext()) {
|
|
||||||
RaceColumn currentRaceColumn = raceColumns.next();
|
|
||||||
Iterator<? extends Fleet> fleetsInRaceColumn = currentRaceColumn.getFleets().iterator();
|
|
||||||
while (fleetsInRaceColumn.hasNext()) {
|
|
||||||
TrackedRace trackedRaceInColumnForFleet = currentRaceColumn.getTrackedRace(fleetsInRaceColumn
|
|
||||||
.next());
|
|
||||||
if (trackedRaceInColumnForFleet != null) {
|
|
||||||
raceIdListInExecutionOrder.add(trackedRaceInColumnForFleet);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return raceIdListInExecutionOrder;
|
|
||||||
}
|
|
||||||
|
|
||||||
private SmartFutureCache<String, List<TrackedRace>, EmptyUpdateInterval> createRacesOrderCache() {
|
|
||||||
return new SmartFutureCache<String, List<TrackedRace>, SmartFutureCache.EmptyUpdateInterval>(
|
|
||||||
new AbstractCacheUpdater<String, List<TrackedRace>, SmartFutureCache.EmptyUpdateInterval>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<TrackedRace> computeCacheUpdate(String key,
|
|
||||||
EmptyUpdateInterval updateInterval) throws Exception {
|
|
||||||
if (key.equals(RACES_ORDER_LIST_CACHE_KEY)) {
|
|
||||||
return reloadRacesInExecutionOrder();
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, RACES_ORDER_LIST_LOCKS_NAME);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException, PatchFailedException {
|
|
||||||
ois.defaultReadObject();
|
|
||||||
racesOrderCache = createRacesOrderCache();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -141,7 +141,7 @@ public abstract class VirtualWindFixesAsNavigableSet extends AbstractUnmodifiabl
|
|||||||
protected TimePoint getFrom() {
|
protected TimePoint getFrom() {
|
||||||
final TimePoint startOfRace = getTrackedRace().getStartOfRace();
|
final TimePoint startOfRace = getTrackedRace().getStartOfRace();
|
||||||
return from == null ? startOfRace == null ? new MillisecondsTimePoint(Long.MAX_VALUE)
|
return from == null ? startOfRace == null ? new MillisecondsTimePoint(Long.MAX_VALUE)
|
||||||
: floorToResolution(startOfRace.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS)) : from;
|
: floorToResolution(startOfRace.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_MILLIS)) : from;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ public abstract class VirtualWindTrackImpl extends WindTrackImpl {
|
|||||||
final TimePoint startOfRace = getTrackedRace().getStartOfRace();
|
final TimePoint startOfRace = getTrackedRace().getStartOfRace();
|
||||||
TimePoint timePointOfNewestEvent = getTrackedRace().getTimePointOfNewestEvent();
|
TimePoint timePointOfNewestEvent = getTrackedRace().getTimePointOfNewestEvent();
|
||||||
if (startOfRace != null) {
|
if (startOfRace != null) {
|
||||||
TimePoint fourMinutesBeforeRaceStartTimePoint = startOfRace.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_IN_MILLISECONDS); // let wind tracks start four minutes before start
|
TimePoint fourMinutesBeforeRaceStartTimePoint = startOfRace.minus(TrackedRaceImpl.TIME_BEFORE_START_TO_TRACK_WIND_MILLIS); // let wind tracks start four minutes before start
|
||||||
if (timePointOfNewestEvent != null) {
|
if (timePointOfNewestEvent != null) {
|
||||||
if (at.compareTo(fourMinutesBeforeRaceStartTimePoint) < 0) {
|
if (at.compareTo(fourMinutesBeforeRaceStartTimePoint) < 0) {
|
||||||
adjustedAt = fourMinutesBeforeRaceStartTimePoint;
|
adjustedAt = fourMinutesBeforeRaceStartTimePoint;
|
||||||
|
|||||||
-5
@@ -491,11 +491,6 @@ public class MockedTrackedRace implements DynamicTrackedRace {
|
|||||||
boolean useMarkPassingCalculator) {
|
boolean useMarkPassingCalculator) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TrackedRace getPreviousRaceInExecutionOrder(TrackedRace race) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user