mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-26 23:46:36 +00:00
added command to conenct tracked race to leaderboard column
This commit is contained in:
+6
-3
@@ -140,6 +140,9 @@ import com.sap.sailing.gwt.ui.shared.WindDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindInfoForRaceDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.WindTrackInfoDTO;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.operationaltransformation.AddColumnToLeaderboard;
|
||||
import com.sap.sailing.server.operationaltransformation.RemoveLeaderboardColumn;
|
||||
import com.sap.sailing.server.operationaltransformation.RenameLeaderboardColumn;
|
||||
|
||||
/**
|
||||
* The server side implementation of the RPC service.
|
||||
@@ -1290,17 +1293,17 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
|
||||
@Override
|
||||
public void addColumnToLeaderboard(String columnName, String leaderboardName, boolean medalRace) {
|
||||
getService().addColumnToLeaderboard(columnName, leaderboardName, medalRace);
|
||||
getService().apply(new AddColumnToLeaderboard(columnName, leaderboardName, medalRace));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeLeaderboardColumn(String leaderboardName, String columnName) {
|
||||
getService().removeLeaderboardColumn(leaderboardName, columnName);
|
||||
getService().apply(new RemoveLeaderboardColumn(columnName, leaderboardName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renameLeaderboardColumn(String leaderboardName, String oldColumnName, String newColumnName) {
|
||||
getService().renameLeaderboardColumn(leaderboardName, oldColumnName, newColumnName);
|
||||
getService().apply(new RenameLeaderboardColumn(leaderboardName, oldColumnName, newColumnName));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -37,6 +37,7 @@ import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.RaceRecord;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracRaceTracker;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionListener;
|
||||
import com.sap.sailing.server.operationaltransformation.RacingEventServiceOperation;
|
||||
|
||||
/**
|
||||
* An OSGi service that can be used to track boat races using a TracTrac connector that pushes
|
||||
@@ -327,5 +328,10 @@ public interface RacingEventService extends TrackedEventRegistry {
|
||||
void addRace(EventIdentifier addToEvent, RaceDefinition raceDefinition);
|
||||
|
||||
void updateLeaderboardGroup(String oldName, String newName, String description, List<String> leaderboardNames);
|
||||
|
||||
/**
|
||||
* Executes an operation whose effects need to be replicated to any replica of this service known.
|
||||
*/
|
||||
void apply(RacingEventServiceOperation operation);
|
||||
|
||||
}
|
||||
|
||||
+13
@@ -69,7 +69,9 @@ import com.sap.sailing.domain.tractracadapter.Receiver;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionListener;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory;
|
||||
import com.sap.sailing.expeditionconnector.UDPExpeditionReceiver;
|
||||
import com.sap.sailing.operationaltransformation.Operation;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.operationaltransformation.RacingEventServiceOperation;
|
||||
|
||||
public class RacingEventServiceImpl implements RacingEventService, EventFetcher, RaceFetcher {
|
||||
private static final Logger logger = Logger.getLogger(RacingEventServiceImpl.class.getName());
|
||||
@@ -908,4 +910,15 @@ public class RacingEventServiceImpl implements RacingEventService, EventFetcher,
|
||||
return scheduler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Currently, the operation is executed by immediately {@link Operation#applyTo(Object) applying} it to this
|
||||
* service object.<p>
|
||||
*
|
||||
* Future implementations of this method will need to also replicate the effects of the operation to all replica
|
||||
* of this service known.
|
||||
*/
|
||||
@Override
|
||||
public void apply(RacingEventServiceOperation operation) {
|
||||
operation.applyTo(this);
|
||||
}
|
||||
}
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.RaceInLeaderboard;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class ConnectTrackedRaceToLeaderboardColumn extends AbstractLeaderboardColumnOperation {
|
||||
private static final long serialVersionUID = -1336511401516212508L;
|
||||
private final RaceIdentifier raceToConnect;
|
||||
|
||||
public ConnectTrackedRaceToLeaderboardColumn(String leaderboardName, String columnName, RaceIdentifier raceToConnect) {
|
||||
super(leaderboardName, columnName);
|
||||
this.raceToConnect = raceToConnect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation transformClientOp(RacingEventServiceOperation serverOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation transformServerOp(RacingEventServiceOperation clientOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventService applyTo(RacingEventService toState) {
|
||||
boolean success = false;
|
||||
TrackedRace trackedRace = toState.getExistingTrackedRace(raceToConnect);
|
||||
if (trackedRace != null) {
|
||||
Leaderboard leaderboard = toState.getLeaderboardByName(getLeaderboardName());
|
||||
if (leaderboard != null) {
|
||||
RaceInLeaderboard raceColumn = leaderboard.getRaceColumnByName(getColumnName());
|
||||
if (raceColumn != null) {
|
||||
raceColumn.setTrackedRace(trackedRace);
|
||||
raceColumn.setRaceIdentifier(trackedRace.getRaceIdentifier());
|
||||
success = true;
|
||||
toState.updateStoredLeaderboard(leaderboard);
|
||||
}
|
||||
}
|
||||
}
|
||||
return toState;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user