mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 03:13:49 +00:00
factored out the common stop() functionality of RaceTrackers
This commit is contained in:
1 parent
0955c2fd64
commit
4c96d2e23c
3 files changed
+55
-29
No files matched your search
+14
-9
@@ -30,6 +30,7 @@ import com.sap.sailing.domain.swisstimingadapter.SailMasterListener;
|
||||
import com.sap.sailing.domain.swisstimingadapter.StartList;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingRaceTracker;
|
||||
import com.sap.sailing.domain.tracking.AbstractRaceTrackerImpl;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedEvent;
|
||||
@@ -41,6 +42,7 @@ import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.RaceTracker;
|
||||
import com.sap.sailing.domain.tracking.TrackedEventRegistry;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sailing.util.Util;
|
||||
@@ -48,7 +50,7 @@ import com.sap.sailing.util.Util.Triple;
|
||||
|
||||
import difflib.PatchFailedException;
|
||||
|
||||
public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailMasterListener {
|
||||
public class SwissTimingRaceTrackerImpl extends AbstractRaceTrackerImpl implements SwissTimingRaceTracker, SailMasterListener {
|
||||
private static final Logger logger = Logger.getLogger(SwissTimingRaceTrackerImpl.class.getName());
|
||||
|
||||
private final SailMasterConnector connector;
|
||||
@@ -57,7 +59,6 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
|
||||
private final DomainFactory domainFactory;
|
||||
private final Triple<String, String, Integer> id;
|
||||
private final Event event;
|
||||
private final DynamicTrackedEvent trackedEvent;
|
||||
private final WindStore windStore;
|
||||
|
||||
private RaceDefinition race;
|
||||
@@ -76,7 +77,7 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
|
||||
this.id = new Triple<String, String, Integer>(raceID, hostname, port);
|
||||
connector.addSailMasterListener(raceID, this);
|
||||
event = domainFactory.getOrCreateEvent(raceID);
|
||||
trackedEvent = trackedEventRegistry.getOrCreateTrackedEvent(event);
|
||||
setTrackedEvent(trackedEventRegistry.getOrCreateTrackedEvent(event));
|
||||
connector.trackRace(raceID);
|
||||
|
||||
}
|
||||
@@ -84,6 +85,15 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
|
||||
@Override
|
||||
public void stop() throws MalformedURLException, IOException, InterruptedException {
|
||||
connector.removeSailMasterListener(raceID, this);
|
||||
Set<RaceDefinition> races = getRaces();
|
||||
if (races != null && !races.isEmpty()) {
|
||||
for (RaceDefinition race : races) {
|
||||
TrackedRace trackedRace = getTrackedEvent().getExistingTrackedRace(race);
|
||||
if (trackedRace != null) {
|
||||
getTrackedEvent().removedTrackedRace(trackedRace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -111,7 +121,7 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
|
||||
|
||||
@Override
|
||||
public DynamicTrackedEvent getTrackedEvent() {
|
||||
return trackedEvent;
|
||||
return SwissTimingRaceTrackerImpl.this.getTrackedEvent();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -121,11 +131,6 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicTrackedEvent getTrackedEvent() {
|
||||
return trackedEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindStore getWindStore() {
|
||||
return windStore;
|
||||
|
||||
+7
-20
@@ -21,12 +21,13 @@ import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
|
||||
import com.sap.sailing.domain.tracking.AbstractRaceTrackerImpl;
|
||||
import com.sap.sailing.domain.tracking.DynamicRaceDefinitionSet;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedEvent;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.GPSFix;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
import com.sap.sailing.domain.tracking.TrackedEvent;
|
||||
import com.sap.sailing.domain.tracking.TrackedEventRegistry;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindStore;
|
||||
@@ -44,7 +45,7 @@ import com.tractrac.clientmodule.data.DataController;
|
||||
import com.tractrac.clientmodule.data.DataController.Listener;
|
||||
import com.tractrac.clientmodule.setup.KeyValue;
|
||||
|
||||
public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, DynamicRaceDefinitionSet {
|
||||
public class TracTracRaceTrackerImpl extends AbstractRaceTrackerImpl implements Listener, TracTracRaceTracker, DynamicRaceDefinitionSet {
|
||||
private static final Logger logger = Logger.getLogger(TracTracRaceTrackerImpl.class.getName());
|
||||
|
||||
/**
|
||||
@@ -59,7 +60,6 @@ public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, D
|
||||
private final DataController controller;
|
||||
private final Set<Receiver> receivers;
|
||||
private final DomainFactory domainFactory;
|
||||
private final DynamicTrackedEvent trackedEvent;
|
||||
private final WindStore windStore;
|
||||
private final Set<RaceDefinition> races;
|
||||
|
||||
@@ -90,7 +90,7 @@ public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, D
|
||||
* Provides the capability to obtain the {@link WindTrack}s for the different wind sources. A trivial
|
||||
* implementation is {@link EmptyWindStore} which simply provides new, empty tracks. This is always
|
||||
* available but loses track of the wind, e.g., during server restarts.
|
||||
* @param trackedEventRegistry TODO
|
||||
* @param trackedEventRegistry used to create the {@link TrackedEvent} for the domain event
|
||||
*/
|
||||
protected TracTracRaceTrackerImpl(DomainFactory domainFactory, URL paramURL, URI liveURI, URI storedURI,
|
||||
WindStore windStore, TrackedEventRegistry trackedEventRegistry) throws URISyntaxException,
|
||||
@@ -119,10 +119,10 @@ public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, D
|
||||
domainFactory.removeRace(tractracEvent, tractracRace, trackedEventRegistry);
|
||||
}
|
||||
domainEvent = domainFactory.getOrCreateEvent(tractracEvent);
|
||||
trackedEvent = trackedEventRegistry.getOrCreateTrackedEvent(domainEvent);
|
||||
setTrackedEvent(trackedEventRegistry.getOrCreateTrackedEvent(domainEvent));
|
||||
receivers = new HashSet<Receiver>();
|
||||
Set<TypeController> typeControllers = new HashSet<TypeController>();
|
||||
for (Receiver receiver : domainFactory.getUpdateReceivers(trackedEvent, tractracEvent, windStore, this)) {
|
||||
for (Receiver receiver : domainFactory.getUpdateReceivers(getTrackedEvent(), tractracEvent, windStore, this)) {
|
||||
receivers.add(receiver);
|
||||
for (TypeController typeController : receiver.getTypeControllersAndStart()) {
|
||||
typeControllers.add(typeController);
|
||||
@@ -182,11 +182,6 @@ public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, D
|
||||
return windStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicTrackedEvent getTrackedEvent() {
|
||||
return trackedEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RaceHandle getRaceHandle() {
|
||||
return new RaceHandleImpl(domainFactory, tractracEvent, getTrackedEvent(), this);
|
||||
@@ -232,15 +227,7 @@ public class TracTracRaceTrackerImpl implements Listener, TracTracRaceTracker, D
|
||||
}
|
||||
ioThread.join(3000); // wait no more than three seconds
|
||||
logger.info("Joined TracTrac IO thread for race(s) "+getRaces());
|
||||
Set<RaceDefinition> races = getRaces();
|
||||
if (races != null && !races.isEmpty()) {
|
||||
for (RaceDefinition race : races) {
|
||||
TrackedRace trackedRace = trackedEvent.getExistingTrackedRace(race);
|
||||
if (trackedRace != null) {
|
||||
trackedEvent.removedTrackedRace(trackedRace);
|
||||
}
|
||||
}
|
||||
}
|
||||
super.stop();
|
||||
}
|
||||
|
||||
protected DataController getController() {
|
||||
|
||||
Executable
+34
@@ -0,0 +1,34 @@
|
||||
package com.sap.sailing.domain.tracking;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
|
||||
public abstract class AbstractRaceTrackerImpl implements RaceTracker {
|
||||
private DynamicTrackedEvent trackedEvent;
|
||||
|
||||
@Override
|
||||
public DynamicTrackedEvent getTrackedEvent() {
|
||||
return trackedEvent;
|
||||
}
|
||||
|
||||
protected void setTrackedEvent(DynamicTrackedEvent trackedEvent) {
|
||||
this.trackedEvent = trackedEvent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() throws MalformedURLException, IOException, InterruptedException {
|
||||
Set<RaceDefinition> races = getRaces();
|
||||
if (races != null && !races.isEmpty()) {
|
||||
for (RaceDefinition race : races) {
|
||||
TrackedRace trackedRace = trackedEvent.getExistingTrackedRace(race);
|
||||
if (trackedRace != null) {
|
||||
trackedEvent.removedTrackedRace(trackedRace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user