Add delete button to course layout feature of RaceLog Tracking

This commit is contained in:
Jan Broß committed 2015-09-28 14:56:19 +02:00
1 parent f1d31385b0
commit 3b19a22de4
5 files changed
+55 -1

No files matched your search

@@ -103,6 +103,7 @@ public abstract class CourseManagementWidget implements IsWidget {
}
}
});
waypoints.getTable().addColumn(waypointsActionColumn);
waypoints.getSelectionModel().addSelectionChangeHandler(new Handler() {
@@ -1,5 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.Set;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -47,7 +49,29 @@ public class RaceLogTrackingCourseDefinitionDialog extends RaceLogTrackingDialog
});
marksBtnsPanel.add(addMark);
Button removeMark = new Button(stringMessages.remove(stringMessages.mark()));
removeMark.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Set<MarkDTO> marksToRemove = marks.getSelectionModel().getSelectedSet();
for (MarkDTO markToRemove : marksToRemove) {
sailingService.revokeMarkDefinitionEventInRaceLog(leaderboardName, raceColumnName, fleetName, markToRemove, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
refresh();
}
@Override
public void onFailure(Throwable caught) {
}
});
}
}
});
marksBtnsPanel.add(removeMark);
Button cancel = new Button(stringMessages.cancel());
cancel.addClickHandler(new ClickHandler() {
@Override
@@ -616,4 +616,7 @@ public interface SailingService extends RemoteService, FileStorageManagementGwtS
void setTrackingTimes(RaceLogSetTrackingTimesDTO dto);
Pair<TimePoint, TimePoint> getTrackingTimes(String leaderboardName, String raceColumnName, String fleetName);
void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName,
MarkDTO markDTO);
}
@@ -719,4 +719,7 @@ public interface SailingServiceAsync extends ServerInfoRetriever, FileStorageMan
void getTrackingTimes(String leaderboardName, String raceColumnName, String fleetName,
AsyncCallback<Pair<TimePoint, TimePoint>> callback);
void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName,
MarkDTO markDTO, AsyncCallback<Void> callback);
}
@@ -79,6 +79,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.FlagPoleSta
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.gate.ReadonlyGateStartRacingProcedure;
import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.rrs26.ReadonlyRRS26RacingProcedure;
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogCloseOpenEndedDeviceMappingEvent;
import com.sap.sailing.domain.abstractlog.race.tracking.RaceLogDefineMarkEvent;
import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder;
import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogOpenEndedDeviceMappingCloser;
import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer;
@@ -4994,6 +4995,28 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
raceLog.add(event);
}
@Override
public void revokeMarkDefinitionEventInRaceLog(String leaderboardName, String raceColumnName, String fleetName, MarkDTO markDTO) {
RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName);
final List<RaceLogEvent> raceLogDeviceMarkMappingEvents = new AllEventsOfTypeFinder<>(raceLog, /* only unrevoked */ true, RaceLogDefineMarkEvent.class).analyze();
RaceLogEvent eventToRevoke = null;
for (RaceLogEvent event : raceLogDeviceMarkMappingEvents) {
RaceLogDefineMarkEvent defineMarkEvent = (RaceLogDefineMarkEvent) event;
if (defineMarkEvent.getMark().getId().toString().equals(markDTO.getIdAsString())){
eventToRevoke = event;
}
}
if (eventToRevoke != null){
RaceLogEvent event = RaceLogEventFactory.INSTANCE.createRevokeEvent(getService().getServerAuthor(), raceLog.getCurrentPassId(), eventToRevoke, "Revoked by AdminConsole (RaceLogTracking)");
raceLog.add(event);
} else {
logger.warning("Could not revoke event for mark "+markDTO.getIdAsString()+". Mark not found in RaceLog.");
}
}
@Override
public Iterable<MarkDTO> getMarksInRaceLog(String leaderboardName, String raceColumnName, String fleetName) {
RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName);