From 82c788b66bdf87a0c30b4f8608ac777ddd4530c0 Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Mon, 17 Nov 2014 11:26:08 +0100 Subject: [PATCH] removed AbstractLog#revoke() methods - AbstractLog now has generic type param . We can't generate a RevokeEvent that conforms to T without a (T)-cast or the need for factory-methods in every AbstractLog-implementation --- .../impl/RaceLogRaceTracker.java | 6 ++-- .../impl/RaceLogTrackingAdapterImpl.java | 16 ++++------ .../META-INF/MANIFEST.MF | 2 +- .../racelog/test/RaceLogRevocationTest.java | 29 +++++++++++-------- .../domain/abstractlog/AbstractLog.java | 12 -------- .../domain/abstractlog/AbstractLogEvent.java | 2 +- .../abstractlog/impl/AbstractLogImpl.java | 21 -------------- .../race/impl/NoAddingRaceLogWrapper.java | 14 --------- .../race/state/impl/RaceStateImpl.java | 10 ++----- .../race/tracking/events/RevokeEventImpl.java | 15 +++++++++- .../LeaderboardScoringAndRankingTest.java | 8 ++--- .../gwt/ui/server/SailingServiceImpl.java | 6 ++-- 12 files changed, 48 insertions(+), 93 deletions(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java index 10c324aef1b..88843bb0f53 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java @@ -26,6 +26,7 @@ import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DeviceMar import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceInformationFinder; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RegisteredCompetitorsAnalyzer; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.ControlPoint; @@ -48,7 +49,6 @@ import com.sap.sailing.domain.common.TrackedRaceStatusEnum; import com.sap.sailing.domain.common.WithID; import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; import com.sap.sailing.domain.common.racelog.tracking.RaceNotCreatedException; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; @@ -373,9 +373,7 @@ public class RaceLogRaceTracker extends BaseRaceLogEventVisitor implements RaceT Course course = new CourseImpl(raceName + " course", courseBase.getWaypoints()); if (raceColumn.getTrackedRace(fleet) != null) { - try { - raceLog.revokeEvent(params.getService().getServerAuthor(), event); - } catch (NotRevokableException e) {} + raceLog.add(RevokeEventImpl.create(raceLog, params.getService().getServerAuthor(), event)); throw new RaceNotCreatedException(String.format("Race for racelog (%s) has already been created", raceLog)); } diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java index 243cf203b09..5ec97e3cb95 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogTrackingAdapterImpl.java @@ -24,6 +24,7 @@ import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.AllEvents import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.LastEventOfTypeFinder; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RegisteredCompetitorsAnalyzer; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.ControlPoint; @@ -43,7 +44,6 @@ import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotableForRaceLogTrackingException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogRaceTrackerExistsException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; @@ -202,9 +202,7 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { private void revokeAlreadyDefinedMarks(RaceLog raceLog, RaceLogEventAuthor author) { List markEvents = new AllEventsOfTypeFinder(raceLog, true, DefineMarkEvent.class).analyze(); for (RaceLogEvent event : markEvents) { - try { - raceLog.revokeEvent(author, event); - } catch (NotRevokableException e) {} + raceLog.add(RevokeEventImpl.create(raceLog, author, event)); } } @@ -263,10 +261,8 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { public void removeDenotationForRaceLogTracking(RacingEventService service, RaceLog raceLog) { Revokable denoteForTrackingEvent = (Revokable) new LastEventOfTypeFinder(raceLog, true, DenoteForTrackingEvent.class).analyze(); Revokable startTrackingEvent = (Revokable) new LastEventOfTypeFinder(raceLog, true, StartTrackingEvent.class).analyze(); - try { - raceLog.revokeEvent(service.getServerAuthor(), denoteForTrackingEvent); - raceLog.revokeEvent(service.getServerAuthor(), startTrackingEvent); - } catch (NotRevokableException e) {} + raceLog.add(RevokeEventImpl.create(raceLog, service.getServerAuthor(), denoteForTrackingEvent)); + raceLog.add(RevokeEventImpl.create(raceLog, service.getServerAuthor(), startTrackingEvent)); } @Override @@ -293,9 +289,7 @@ public class RaceLogTrackingAdapterImpl implements RaceLogTrackingAdapter { if (event instanceof RegisterCompetitorEvent) { RegisterCompetitorEvent registerEvent = (RegisterCompetitorEvent) event; if (toBeRemoved.contains(registerEvent.getCompetitor())) { - try { - raceLog.revokeEvent(service.getServerAuthor(), (RegisterCompetitorEvent) event); - } catch (NotRevokableException e) {} + raceLog.add(RevokeEventImpl.create(raceLog, service.getServerAuthor(), (RegisterCompetitorEvent) event)); } } } diff --git a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF index f5ee39088af..623c6ea3388 100644 --- a/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF +++ b/java/com.sap.sailing.domain.shared.android.test/META-INF/MANIFEST.MF @@ -7,9 +7,9 @@ Bundle-Vendor: SAP Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: com.sap.sailing.domain.common;bundle-version="1.0.0", com.sap.sailing.domain.shared.android;bundle-version="1.0.0", + org.hamcrest;bundle-version="1.1.0", org.junit4;bundle-version="4.8.2", org.objenesis;bundle-version="1.3.0", - org.hamcrest;bundle-version="1.1.0", org.mockito.mockito-core;bundle-version="1.9.5", com.sap.sailing.domain.test, com.sap.sailing.domain.racelogtrackingadapter.testsupport;bundle-version="1.0.0", diff --git a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java index e9d476d80ff..d92ef571167 100644 --- a/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java +++ b/java/com.sap.sailing.domain.shared.android.test/src/com/sap/sailing/domain/racelog/test/RaceLogRevocationTest.java @@ -2,6 +2,9 @@ package com.sap.sailing.domain.racelog.test; import static org.junit.Assert.assertEquals; +import static org.hamcrest.Matchers.*; +import static org.hamcrest.MatcherAssert.assertThat; + import java.util.UUID; import org.junit.Before; @@ -15,6 +18,7 @@ import com.sap.sailing.domain.abstractlog.race.RevokeEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventAuthorImpl; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.abstractlog.race.tracking.DenoteForTrackingEvent; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; @@ -51,6 +55,7 @@ public class RaceLogRevocationTest { if (clientEvent == null) { eventsToAdd = serverRaceLog.getEventsToDeliver(clientUUID); } else { + clientRaceLog.add(clientEvent); eventsToAdd = serverRaceLog.add(clientEvent, clientUUID); } for (RaceLogEvent eventToAdd : eventsToAdd) { @@ -98,15 +103,15 @@ public class RaceLogRevocationTest { sendClientAEvent(null); sendClientBEvent(null); sendClientCEvent(null); - + //they revoke the event independently - try { - clientARaceLog.revokeEvent(clientAAuthor, event); - } catch (NotRevokableException e) { - //expected, because A does not have sufficient priority - } - RevokeEvent revokeEventB = clientBRaceLog.revokeEvent(clientBAuthor, event); - RevokeEvent revokeEventC = clientCRaceLog.revokeEvent(clientCAuthor, event); + RevokeEvent revokeEventA = RevokeEventImpl.create(clientARaceLog, clientAAuthor, event); + RevokeEvent revokeEventB = RevokeEventImpl.create(clientBRaceLog, clientBAuthor, event); + RevokeEvent revokeEventC = RevokeEventImpl.create(clientCRaceLog, clientCAuthor, event); + + sendClientAEvent(revokeEventA); + //expected, because A does not have sufficient priority + assertThat("event not revoked due to insufficient author priority", event, isIn(clientARaceLog.getUnrevokedEvents())); sendClientBEvent(revokeEventB); sendClientCEvent(revokeEventC); @@ -118,12 +123,12 @@ public class RaceLogRevocationTest { //check if the event has been revoked on the server and clients assertNumUnrevoked(clientARaceLog, 0); - assertNumAll(clientARaceLog, 3); + assertNumAll(clientARaceLog, 4); assertNumUnrevoked(clientBRaceLog, 0); - assertNumAll(clientBRaceLog, 3); + assertNumAll(clientBRaceLog, 4); assertNumUnrevoked(clientCRaceLog, 0); - assertNumAll(clientCRaceLog, 3); + assertNumAll(clientCRaceLog, 4); assertNumUnrevoked(serverRaceLog, 0); - assertNumAll(serverRaceLog, 3); + assertNumAll(serverRaceLog, 4); } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java index be1e510ace7..a876fd0dafb 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLog.java @@ -6,12 +6,9 @@ import java.util.NavigableSet; import java.util.UUID; import com.sap.sailing.domain.abstractlog.race.RaceLog; -import com.sap.sailing.domain.abstractlog.race.RaceLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; -import com.sap.sailing.domain.abstractlog.race.RevokeEvent; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.WithID; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.tracking.Track; /** @@ -124,15 +121,6 @@ public interface AbstractLog extends Track, WithI * @return */ NavigableSet getUnrevokedEventsDescending(); - - /** - * Inserts a {@link RevokeEvent} for {@code toRevoke}, if latter is revokable, exists in the racelog - * and has not yet been revoked. - * - * @param author The author for the {@code RevokeEvent}. - */ - RevokeEvent revokeEvent(RaceLogEventAuthor author, T toRevoke, String reason) throws NotRevokableException; - RevokeEvent revokeEvent(RaceLogEventAuthor author, T toRevoke) throws NotRevokableException; /** * Merges all events from the other race log into this. diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java index 1a7aaa095fe..18255ceab03 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/AbstractLogEvent.java @@ -13,7 +13,7 @@ import com.sap.sailing.domain.common.WithID; /** *

- * A {@link AbstractLogEvent} is an entry in a race's log (typically a {@link RaceLog}. + * A {@link AbstractLogEvent} is an entry in a race's log (typically a {@link RaceLog}). *

* *

diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java index 8a3bc461954..31f107a3a7c 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/impl/AbstractLogImpl.java @@ -17,15 +17,12 @@ import java.util.logging.Logger; import com.sap.sailing.domain.abstractlog.AbstractLog; import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; -import com.sap.sailing.domain.abstractlog.race.RaceLogEventAuthor; -import com.sap.sailing.domain.abstractlog.race.RaceLogEventFactory; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.Revokable; import com.sap.sailing.domain.abstractlog.race.RevokeEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventComparator; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl; import com.sap.sailing.domain.base.Timed; -import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.tracking.Track; import com.sap.sailing.domain.tracking.impl.PartialNavigableSetView; @@ -414,22 +411,4 @@ public class AbstractLogImpl extends TrackImpl im unlockAfterWrite(); } } - - @Override - public RevokeEvent revokeEvent(RaceLogEventAuthor author, T toRevoke) throws NotRevokableException { - return revokeEvent(author, toRevoke, null); - } - - @Override - public RevokeEvent revokeEvent(RaceLogEventAuthor author, T toRevoke, String reason) throws NotRevokableException { - if (toRevoke == null) { - throw new NotRevokableException("Received null as event to revoke"); - } - RevokeEvent revokeEvent = RaceLogEventFactory.INSTANCE.createRevokeEvent( - MillisecondsTimePoint.now(), author, getCurrentPassId(), toRevoke.getId(), - toRevoke.getClass().getSimpleName(), toRevoke.getShortInfo(), reason); - checkIfSuccessfullyRevokes(revokeEvent); - add((T) revokeEvent); - return revokeEvent; - } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java index e6788a5f18d..48233c6cfcc 100755 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/impl/NoAddingRaceLogWrapper.java @@ -12,12 +12,9 @@ import java.util.logging.Logger; import com.sap.sailing.domain.abstractlog.AbstractLog; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; -import com.sap.sailing.domain.abstractlog.race.RaceLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; -import com.sap.sailing.domain.abstractlog.race.RevokeEvent; import com.sap.sailing.domain.common.Duration; import com.sap.sailing.domain.common.TimePoint; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; /** * Wrapper for a {@link RaceLog} which will ignore all calls trying to add an {@link RaceLogEvent}. All other @@ -234,15 +231,4 @@ public class NoAddingRaceLogWrapper implements RaceLog { public void merge(AbstractLog other) { innerRaceLog.merge(other); } - - @Override - public RevokeEvent revokeEvent(RaceLogEventAuthor author, RaceLogEvent toRevoke) throws NotRevokableException { - return innerRaceLog.revokeEvent(author, toRevoke); - } - - @Override - public RevokeEvent revokeEvent(RaceLogEventAuthor author, RaceLogEvent toRevoke, String reason) - throws NotRevokableException { - return innerRaceLog.revokeEvent(author, toRevoke, reason); - } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java index 785cb326fba..d190fe030b7 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/state/impl/RaceStateImpl.java @@ -15,6 +15,7 @@ import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProce import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedureFactory; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.RacingProcedurePrerequisite; import com.sap.sailing.domain.abstractlog.race.state.racingprocedure.impl.RacingProcedureFactoryImpl; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.base.CourseBase; import com.sap.sailing.domain.base.configuration.ConfigurationLoader; import com.sap.sailing.domain.base.configuration.RegattaConfiguration; @@ -23,7 +24,6 @@ import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.racelog.Flags; import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.tracking.Wind; /** @@ -173,12 +173,8 @@ public class RaceStateImpl extends ReadonlyRaceStateImpl implements RaceState { } } else { if (event != null) { - try { - // revoke the newest one - raceLog.revokeEvent(author, event); - } catch (NotRevokableException e) { - e.printStackTrace(); - } + // revoke the newest one + raceLog.add(RevokeEventImpl.create(raceLog, author, event)); } } } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RevokeEventImpl.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RevokeEventImpl.java index 68c7ef07064..650e9318e4a 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RevokeEventImpl.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/race/tracking/events/RevokeEventImpl.java @@ -2,13 +2,17 @@ package com.sap.sailing.domain.abstractlog.race.tracking.events; import java.io.Serializable; import java.util.Collections; +import java.util.UUID; +import com.sap.sailing.domain.abstractlog.AbstractLog; +import com.sap.sailing.domain.abstractlog.AbstractLogEvent; import com.sap.sailing.domain.abstractlog.race.RaceLogEventAuthor; import com.sap.sailing.domain.abstractlog.race.RaceLogEventVisitor; import com.sap.sailing.domain.abstractlog.race.RevokeEvent; import com.sap.sailing.domain.abstractlog.race.impl.RaceLogEventImpl; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.TimePoint; +import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; public class RevokeEventImpl extends RaceLogEventImpl implements RevokeEvent { private static final long serialVersionUID = -30864810737555657L; @@ -61,5 +65,14 @@ public class RevokeEventImpl extends RaceLogEventImpl implements RevokeEvent { @Override public String getReason() { return reason; - } + } + + public static RevokeEvent create(AbstractLog log, RaceLogEventAuthor author, AbstractLogEvent toRevoke, String reason) { + return new RevokeEventImpl(MillisecondsTimePoint.now(), author, MillisecondsTimePoint.now(), UUID.randomUUID(), + log.getCurrentPassId(), toRevoke.getId(), toRevoke.getClass().getName(), toRevoke.getShortInfo(), reason); + } + + public static RevokeEvent create(AbstractLog log, RaceLogEventAuthor author, AbstractLogEvent toRevoke) { + return create(log, author, toRevoke, null); + } } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java index 85b669f7e4b..fbf80bd06d0 100644 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/LeaderboardScoringAndRankingTest.java @@ -29,6 +29,7 @@ import com.sap.sailing.domain.abstractlog.race.scoring.AdditionalScoringInformat import com.sap.sailing.domain.abstractlog.race.scoring.impl.AdditionalScoringInformationEventImpl; import com.sap.sailing.domain.abstractlog.race.state.RaceState; import com.sap.sailing.domain.abstractlog.race.state.impl.RaceStateImpl; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.base.DomainFactory; @@ -52,7 +53,6 @@ import com.sap.sailing.domain.common.ScoringSchemeType; import com.sap.sailing.domain.common.TimePoint; import com.sap.sailing.domain.common.dto.LeaderboardDTO; import com.sap.sailing.domain.common.impl.MillisecondsTimePoint; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.leaderboard.LeaderboardGroup; @@ -846,11 +846,7 @@ public class LeaderboardScoringAndRankingTest extends AbstractLeaderboardTest { AdditionalScoringInformationFinder finder = new AdditionalScoringInformationFinder(raceLogForRace2); AdditionalScoringInformationEvent event = finder.analyze(/*filterBy*/AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE); assert event != null; - try { - raceLogForRace2.revokeEvent(new RaceLogEventAuthorImpl("Plopp", 1), event); - } catch (NotRevokableException e) { - e.printStackTrace(); - } + raceLogForRace2.add(RevokeEventImpl.create(raceLogForRace2, new RaceLogEventAuthorImpl("Plopp", 1), event)); event = finder.analyze(/*filterBy*/AdditionalScoringInformationType.MAX_POINTS_DECREASE_MAX_SCORE); assert event == null; assertEquals(new Double(30), leaderboardHighPoint10Or8AndLastBreaksTie.getTotalPoints(competitors[0], later)); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index c1136821074..af6ab9bb215 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -78,6 +78,7 @@ import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.LastPingM import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.OpenEndedDeviceMappingCloser; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RaceLogTrackingStateAnalyzer; import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RegisteredCompetitorsAnalyzer; +import com.sap.sailing.domain.abstractlog.race.tracking.events.RevokeEventImpl; import com.sap.sailing.domain.abstractlog.race.tracking.impl.DeviceMappingImpl; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; @@ -196,7 +197,6 @@ import com.sap.sailing.domain.common.racelog.RaceLogRaceStatus; import com.sap.sailing.domain.common.racelog.RacingProcedureType; import com.sap.sailing.domain.common.racelog.tracking.NoCorrespondingServiceRegisteredException; import com.sap.sailing.domain.common.racelog.tracking.NotDenotedForRaceLogTrackingException; -import com.sap.sailing.domain.common.racelog.tracking.NotRevokableException; import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; import com.sap.sailing.domain.common.racelog.tracking.TransformationException; import com.sap.sailing.domain.common.racelog.tracking.TypeBasedServiceFinder; @@ -4970,14 +4970,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S @Override public void revokeRaceLogEvents(String leaderboardName, String raceColumnName, String fleetName, - List eventIds) throws NotRevokableException { + List eventIds) { RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); for (Serializable idToRevoke : eventIds) { raceLog.lockForRead(); RaceLogEvent event = raceLog.getEventById(idToRevoke); raceLog.unlockAfterRead(); if (event instanceof Revokable) { - raceLog.revokeEvent(getService().getServerAuthor(), (Revokable) event); + raceLog.add(RevokeEventImpl.create(raceLog, getService().getServerAuthor(), (Revokable) event)); } } }