mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-28 08:26:44 +00:00
made operation objects serializable; implemented TrackRace operation
This commit is contained in:
+5
@@ -12,6 +12,11 @@ public interface DynamicTrackedEvent extends TrackedEvent {
|
|||||||
*/
|
*/
|
||||||
DynamicTrackedRace getExistingTrackedRace(RaceDefinition race);
|
DynamicTrackedRace getExistingTrackedRace(RaceDefinition race);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param raceDefinitionSetToUpdate
|
||||||
|
* may be <code>null</code> which means that no update will be fired to any
|
||||||
|
* {@link DynamicRaceDefinitionSet}.
|
||||||
|
*/
|
||||||
DynamicTrackedRace createTrackedRace(RaceDefinition raceDefinition, WindStore windStore,
|
DynamicTrackedRace createTrackedRace(RaceDefinition raceDefinition, WindStore windStore,
|
||||||
long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed,
|
long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed,
|
||||||
DynamicRaceDefinitionSet raceDefinitionSetToUpdate);
|
DynamicRaceDefinitionSet raceDefinitionSetToUpdate);
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import com.sap.sailing.domain.base.Event;
|
import com.sap.sailing.domain.base.Event;
|
||||||
import com.sap.sailing.domain.base.RaceDefinition;
|
import com.sap.sailing.domain.base.RaceDefinition;
|
||||||
|
import com.sap.sailing.domain.common.EventAndRaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.EventIdentifier;
|
import com.sap.sailing.domain.common.EventIdentifier;
|
||||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
import com.sap.sailing.domain.common.TimePoint;
|
import com.sap.sailing.domain.common.TimePoint;
|
||||||
@@ -312,4 +313,7 @@ public interface RacingEventService extends TrackedEventRegistry {
|
|||||||
RacesHandle addRace(RaceTrackingConnectivityParameters params, WindStore windStore, long timeoutInMilliseconds)
|
RacesHandle addRace(RaceTrackingConnectivityParameters params, WindStore windStore, long timeoutInMilliseconds)
|
||||||
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
throws MalformedURLException, FileNotFoundException, URISyntaxException, Exception;
|
||||||
|
|
||||||
|
TrackedRace createTrackedRace(EventAndRaceIdentifier raceIdentifier, WindStore windStore,
|
||||||
|
long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-4
@@ -13,12 +13,13 @@ import com.sap.sailing.domain.common.HttpMessageSenderServletConstants;
|
|||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public abstract class HttpMessageSenderServletRequestHandler {
|
public abstract class HttpMessageSenderServletRequestHandler {
|
||||||
|
private static final Logger logger = Logger.getLogger(AbstractHttpPostServlet.class.getName());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Every so many milliseconds the servlet will send a {@link #PONG} message. This shows clients that the connection
|
* Every so many milliseconds the servlet will send a {@link #PONG} message. This shows clients that the connection
|
||||||
* is still alive. If after several such intervals the client hasn't received a {@link #PONG} message it seems reasonable
|
* is still alive. If after several such intervals the client hasn't received a {@link #PONG} message it seems reasonable
|
||||||
* to assume the connection has died.
|
* to assume the connection has died.
|
||||||
*/
|
*/
|
||||||
private static final Logger logger = Logger.getLogger(AbstractHttpPostServlet.class.getName());
|
|
||||||
private static final long timeoutInMilliseconds = 60000;
|
private static final long timeoutInMilliseconds = 60000;
|
||||||
private long timeInMillisOfLastExpeditionMessageReceived;
|
private long timeInMillisOfLastExpeditionMessageReceived;
|
||||||
private boolean stop;
|
private boolean stop;
|
||||||
@@ -34,6 +35,10 @@ public abstract class HttpMessageSenderServletRequestHandler {
|
|||||||
protected RacingEventService getService() {
|
protected RacingEventService getService() {
|
||||||
return owner.getService();
|
return owner.getService();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtains the writer through which the server can push data to the client.
|
||||||
|
*/
|
||||||
protected PrintWriter getWriter() {
|
protected PrintWriter getWriter() {
|
||||||
return writer;
|
return writer;
|
||||||
}
|
}
|
||||||
@@ -77,9 +82,6 @@ public abstract class HttpMessageSenderServletRequestHandler {
|
|||||||
/**
|
/**
|
||||||
* Sends a single message across to the receiving client. To do so, the message is Base64 encoded before being sent
|
* Sends a single message across to the receiving client. To do so, the message is Base64 encoded before being sent
|
||||||
* as a string. The message is terminated with a 0 byte.
|
* as a string. The message is terminated with a 0 byte.
|
||||||
* @param writer
|
|
||||||
* @param bytes
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
*/
|
||||||
protected void send(Writer writer, byte[] message) {
|
protected void send(Writer writer, byte[] message) {
|
||||||
String bytes = Base64Utils.toBase64(message);
|
String bytes = Base64Utils.toBase64(message);
|
||||||
|
|||||||
+9
@@ -450,6 +450,15 @@ public class RacingEventServiceImpl implements RacingEventService, EventFetcher,
|
|||||||
return tracker.getRacesHandle();
|
return tracker.getRacesHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized TrackedRace createTrackedRace(EventAndRaceIdentifier raceIdentifier, WindStore windStore,
|
||||||
|
long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed) {
|
||||||
|
DynamicTrackedEvent trackedEvent = getTrackedEvent(getEvent(raceIdentifier));
|
||||||
|
RaceDefinition race = getRace(raceIdentifier);
|
||||||
|
return trackedEvent.createTrackedRace(race, windStore, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed,
|
||||||
|
/* raceDefinitionSetToUpdate */ null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public synchronized RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI,
|
public synchronized RacesHandle addTracTracRace(URL paramURL, URI liveURI, URI storedURI,
|
||||||
TimePoint startOfTracking, TimePoint endOfTracking, WindStore windStore,
|
TimePoint startOfTracking, TimePoint endOfTracking, WindStore windStore,
|
||||||
|
|||||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
|
|
||||||
|
|
||||||
public abstract class AbstractLeaderboardColumnOperation extends AbstractLeaderboardOperation {
|
public abstract class AbstractLeaderboardColumnOperation extends AbstractLeaderboardOperation {
|
||||||
|
private static final long serialVersionUID = 8577267743945864388L;
|
||||||
private final String columnName;
|
private final String columnName;
|
||||||
|
|
||||||
public AbstractLeaderboardColumnOperation(String leaderboardName, String columnName) {
|
public AbstractLeaderboardColumnOperation(String leaderboardName, String columnName) {
|
||||||
|
|||||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
|
|
||||||
|
|
||||||
public abstract class AbstractLeaderboardOperation extends AbstractRacingEventServiceOperation {
|
public abstract class AbstractLeaderboardOperation extends AbstractRacingEventServiceOperation {
|
||||||
|
private static final long serialVersionUID = 5377910723455422127L;
|
||||||
private final String leaderboardName;
|
private final String leaderboardName;
|
||||||
|
|
||||||
public AbstractLeaderboardOperation(String leaderboardName) {
|
public AbstractLeaderboardOperation(String leaderboardName) {
|
||||||
|
|||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
package com.sap.sailing.server.operationaltransformation;
|
||||||
|
|
||||||
|
import com.sap.sailing.domain.common.EventAndRaceIdentifier;
|
||||||
|
|
||||||
|
public abstract class AbstractRaceOperation extends AbstractRacingEventServiceOperation {
|
||||||
|
private static final long serialVersionUID = -1162468486451355784L;
|
||||||
|
private EventAndRaceIdentifier raceIdentifier;
|
||||||
|
|
||||||
|
public AbstractRaceOperation(EventAndRaceIdentifier raceIdentifier) {
|
||||||
|
super();
|
||||||
|
this.raceIdentifier = raceIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected EventAndRaceIdentifier getRaceIdentifier() {
|
||||||
|
return raceIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -12,6 +12,8 @@ import com.sap.sailing.server.RacingEventService;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractRacingEventServiceOperation implements RacingEventServiceOperation {
|
public abstract class AbstractRacingEventServiceOperation implements RacingEventServiceOperation {
|
||||||
|
private static final long serialVersionUID = 3888231857034991271L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacingEventServiceOperation transformRemoveLeaderboardClientOp(RemoveLeaderboard removeLeaderboard) {
|
public RacingEventServiceOperation transformRemoveLeaderboardClientOp(RemoveLeaderboard removeLeaderboard) {
|
||||||
return removeLeaderboard;
|
return removeLeaderboard;
|
||||||
@@ -92,6 +94,8 @@ public abstract class AbstractRacingEventServiceOperation implements RacingEvent
|
|||||||
|
|
||||||
public static RacingEventServiceOperation getNoOp() {
|
public static RacingEventServiceOperation getNoOp() {
|
||||||
return new AbstractRacingEventServiceOperation() {
|
return new AbstractRacingEventServiceOperation() {
|
||||||
|
private static final long serialVersionUID = -7203280393485688834L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacingEventService applyTo(RacingEventService toState) {
|
public RacingEventService applyTo(RacingEventService toState) {
|
||||||
return toState;
|
return toState;
|
||||||
|
|||||||
+1
@@ -10,6 +10,7 @@ import com.sap.sailing.server.RacingEventService;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class AddColumnToLeaderboard extends AbstractLeaderboardColumnOperation {
|
public class AddColumnToLeaderboard extends AbstractLeaderboardColumnOperation {
|
||||||
|
private static final long serialVersionUID = -7670764349119941051L;
|
||||||
private final boolean medalRace;
|
private final boolean medalRace;
|
||||||
|
|
||||||
public AddColumnToLeaderboard(String columnName, String leaderboardName, boolean medalRace) {
|
public AddColumnToLeaderboard(String columnName, String leaderboardName, boolean medalRace) {
|
||||||
|
|||||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public class AddLeaderboard extends AbstractLeaderboardOperation {
|
public class AddLeaderboard extends AbstractLeaderboardOperation {
|
||||||
|
private static final long serialVersionUID = 891352705068098580L;
|
||||||
private final int[] discardThresholds;
|
private final int[] discardThresholds;
|
||||||
|
|
||||||
public AddLeaderboard(String leaderboardName, int[] discardThresholds) {
|
public AddLeaderboard(String leaderboardName, int[] discardThresholds) {
|
||||||
|
|||||||
+2
@@ -4,6 +4,8 @@ import com.sap.sailing.server.RacingEventService;
|
|||||||
|
|
||||||
public class MoveLeaderboardColumnDown extends AbstractLeaderboardColumnOperation {
|
public class MoveLeaderboardColumnDown extends AbstractLeaderboardColumnOperation {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -1041804872669106579L;
|
||||||
|
|
||||||
public MoveLeaderboardColumnDown(String leaderboardName, String columnName) {
|
public MoveLeaderboardColumnDown(String leaderboardName, String columnName) {
|
||||||
super(leaderboardName, columnName);
|
super(leaderboardName, columnName);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -4,6 +4,8 @@ import com.sap.sailing.server.RacingEventService;
|
|||||||
|
|
||||||
public class MoveLeaderboardColumnUp extends AbstractLeaderboardColumnOperation {
|
public class MoveLeaderboardColumnUp extends AbstractLeaderboardColumnOperation {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 8444485841005051004L;
|
||||||
|
|
||||||
public MoveLeaderboardColumnUp(String leaderboardName, String columnName) {
|
public MoveLeaderboardColumnUp(String leaderboardName, String columnName) {
|
||||||
super(leaderboardName, columnName);
|
super(leaderboardName, columnName);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -1,10 +1,12 @@
|
|||||||
package com.sap.sailing.server.operationaltransformation;
|
package com.sap.sailing.server.operationaltransformation;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
import com.sap.sailing.operationaltransformation.Operation;
|
import com.sap.sailing.operationaltransformation.Operation;
|
||||||
import com.sap.sailing.operationaltransformation.Transformer;
|
import com.sap.sailing.operationaltransformation.Transformer;
|
||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public interface RacingEventServiceOperation extends Operation<RacingEventService> {
|
public interface RacingEventServiceOperation extends Operation<RacingEventService>, Serializable {
|
||||||
/**
|
/**
|
||||||
* Implements the specific transformation rule for the implementing subclass for the set of possible peer operations
|
* Implements the specific transformation rule for the implementing subclass for the set of possible peer operations
|
||||||
* along which to transform this operation, assuming this is the client operation. See
|
* along which to transform this operation, assuming this is the client operation. See
|
||||||
|
|||||||
+2
-2
@@ -3,8 +3,8 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public class RemoveColumnFromLeaderboard extends AbstractLeaderboardColumnOperation {
|
public class RemoveColumnFromLeaderboard extends AbstractLeaderboardColumnOperation {
|
||||||
|
private static final long serialVersionUID = 5425526859417359535L;
|
||||||
|
|
||||||
public RemoveColumnFromLeaderboard(String columnName, String leaderboardName) {
|
public RemoveColumnFromLeaderboard(String columnName, String leaderboardName) {
|
||||||
super(leaderboardName, columnName);
|
super(leaderboardName, columnName);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -3,6 +3,8 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public class RemoveLeaderboard extends AbstractLeaderboardOperation {
|
public class RemoveLeaderboard extends AbstractLeaderboardOperation {
|
||||||
|
private static final long serialVersionUID = -6491003416450255268L;
|
||||||
|
|
||||||
public RemoveLeaderboard(String leaderboardName) {
|
public RemoveLeaderboard(String leaderboardName) {
|
||||||
super(leaderboardName);
|
super(leaderboardName);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -3,6 +3,7 @@ package com.sap.sailing.server.operationaltransformation;
|
|||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public class RenameLeaderboardColumn extends AbstractLeaderboardColumnOperation {
|
public class RenameLeaderboardColumn extends AbstractLeaderboardColumnOperation {
|
||||||
|
private static final long serialVersionUID = -1238503068559477351L;
|
||||||
private final String newColumnName;
|
private final String newColumnName;
|
||||||
|
|
||||||
public RenameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName) {
|
public RenameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName) {
|
||||||
|
|||||||
+28
-3
@@ -1,8 +1,33 @@
|
|||||||
package com.sap.sailing.server.operationaltransformation;
|
package com.sap.sailing.server.operationaltransformation;
|
||||||
|
|
||||||
|
import com.sap.sailing.domain.base.Event;
|
||||||
|
import com.sap.sailing.domain.base.RaceDefinition;
|
||||||
|
import com.sap.sailing.domain.common.EventAndRaceIdentifier;
|
||||||
|
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||||
|
import com.sap.sailing.domain.tracking.TrackedEvent;
|
||||||
|
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||||
|
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||||
import com.sap.sailing.server.RacingEventService;
|
import com.sap.sailing.server.RacingEventService;
|
||||||
|
|
||||||
public class TrackRace extends AbstractRacingEventServiceOperation {
|
/**
|
||||||
|
* Creates a tracked race for a race identifier by a {@link RaceIdentifier}. The operation assumes that the
|
||||||
|
* {@link RaceDefinition}, therefore the {@link Event} as well as the {@link TrackedEvent} into which the
|
||||||
|
* new {@link TrackedRace} will be composed already exist and that the {@link TrackedRace} does not yet
|
||||||
|
* exist.
|
||||||
|
*
|
||||||
|
* @author Axel Uhl (d043530)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class TrackRace extends AbstractRaceOperation {
|
||||||
|
private static final long serialVersionUID = 5084401060896514911L;
|
||||||
|
private final long millisecondsOverWhichToAverageWind;
|
||||||
|
private final long millisecondsOverWhichToAverageSpeed;
|
||||||
|
|
||||||
|
public TrackRace(EventAndRaceIdentifier raceIdentifier, long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed) {
|
||||||
|
super(raceIdentifier);
|
||||||
|
this.millisecondsOverWhichToAverageWind = millisecondsOverWhichToAverageWind;
|
||||||
|
this.millisecondsOverWhichToAverageSpeed = millisecondsOverWhichToAverageSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) {
|
public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) {
|
||||||
@@ -18,8 +43,8 @@ public class TrackRace extends AbstractRacingEventServiceOperation {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RacingEventService applyTo(RacingEventService toState) {
|
public RacingEventService applyTo(RacingEventService toState) {
|
||||||
// TODO Auto-generated method stub
|
toState.createTrackedRace(getRaceIdentifier(), EmptyWindStore.INSTANCE, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed);
|
||||||
return null;
|
return toState;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user