mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
Provide competitor registration and deregistration methods on RaeColumn and HasRegattaLike
This commit is contained in:
1 parent
e753390b0f
commit
2f75c64c45
7 files changed
+173
-7
No files matched your search
+13
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.domain.test.mock;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.NavigableSet;
|
||||
@@ -496,6 +497,18 @@ public class MockedTrackedRace implements DynamicTrackedRace {
|
||||
@Override
|
||||
public void registerCompetitor(Competitor competitor) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCompetitors(Collection<Competitor> competitor) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitor(Competitor competitor) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitors(Collection<Competitor> competitor) {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.domain.base;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
@@ -287,4 +289,15 @@ public interface RaceColumn extends Named {
|
||||
* thrown if competitor registration is disabled on racelog as well as if RaceColumn belongs to a {@link MetaLeaderboard}
|
||||
*/
|
||||
void registerCompetitor(Competitor competitor, Fleet fleet) throws CompetitorRegistrationOnRaceLogDisabledException;
|
||||
void registerCompetitors(Collection<Competitor> competitor, Fleet fleet) throws CompetitorRegistrationOnRaceLogDisabledException;
|
||||
|
||||
/**
|
||||
* Deregisters a competitor on the the race column's race log associated to the passed fleet.
|
||||
* @param competitor
|
||||
* @param fleet
|
||||
* @throws CompetitorRegistrationOnRaceLogDisabledException
|
||||
* thrown if competitor registration is disabled on racelog as well as if RaceColumn belongs to a {@link MetaLeaderboard}
|
||||
*/
|
||||
void deRegisterCompetitor(Competitor competitors, Fleet fleet) throws CompetitorRegistrationOnRaceLogDisabledException;
|
||||
void deRegisterCompetitors(Collection<Competitor> competitors, Fleet fleet) throws CompetitorRegistrationOnRaceLogDisabledException;
|
||||
}
|
||||
+44
-2
@@ -3,27 +3,32 @@ package com.sap.sailing.domain.base.impl;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.DefinedMarkFinder;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.analyzing.impl.RegisteredCompetitorsAnalyzer;
|
||||
import com.sap.sailing.domain.abstractlog.race.tracking.impl.RaceLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
|
||||
import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
|
||||
import com.sap.sailing.domain.common.racelog.tracking.CompetitorRegistrationOnRaceLogDisabledException;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.RaceLogStore;
|
||||
@@ -277,6 +282,12 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem
|
||||
|
||||
@Override
|
||||
public void registerCompetitor(Competitor competitor, Fleet fleet) throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
registerCompetitors(Collections.singleton(competitor), fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCompetitors(Collection<Competitor> competitors, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
if (isCompetitorRegistrationInRacelogEnabled(fleet)){
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
@@ -284,8 +295,39 @@ public abstract class AbstractRaceColumn extends SimpleAbstractRaceColumn implem
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
RaceLog raceLog = getRaceLog(fleet);
|
||||
int passId = raceLog.getCurrentPassId();
|
||||
raceLog.add(new RaceLogRegisterCompetitorEventImpl(now, now, raceLogEventAuthorForRaceColumn,
|
||||
UUID.randomUUID(), passId, competitor));
|
||||
for (Competitor competitor: competitors){
|
||||
raceLog.add(new RaceLogRegisterCompetitorEventImpl(now, now, raceLogEventAuthorForRaceColumn,
|
||||
UUID.randomUUID(), passId, competitor));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deRegisterCompetitor(Competitor competitor, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
deRegisterCompetitors(Collections.singleton(competitor), fleet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deRegisterCompetitors(Collection<Competitor> competitors, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
if (isCompetitorRegistrationInRacelogEnabled(fleet)){
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
|
||||
RaceLog raceLog = getRaceLog(fleet);
|
||||
for (RaceLogEvent event : raceLog.getUnrevokedEventsDescending()) {
|
||||
if (event instanceof RegisterCompetitorEvent) {
|
||||
RegisterCompetitorEvent<?> registerEvent = (RegisterCompetitorEvent<?>) event;
|
||||
if (competitors.contains(registerEvent.getCompetitor())) {
|
||||
try {
|
||||
raceLog.revokeEvent(raceLogEventAuthorForRaceColumn, event,
|
||||
"unregistering competitor because no longer selected for registration");
|
||||
} catch (NotRevokableException e) {
|
||||
logger.log(Level.WARNING, "could not unregister competitor by adding RevokeEvent", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.io.ObjectInputStream;
|
||||
import java.io.ObjectStreamException;
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.HashMap;
|
||||
@@ -26,6 +27,7 @@ import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsInLogAnalyzer;
|
||||
import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
@@ -45,6 +47,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaName;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
|
||||
import com.sap.sailing.domain.leaderboard.ResultDiscardingRule;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.leaderboard.impl.AbstractLeaderboardImpl;
|
||||
@@ -749,12 +752,43 @@ public class RegattaImpl extends NamedImpl implements Regatta, RaceColumnListene
|
||||
regattaLog);
|
||||
return analyzer.analyze();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void registerCompetitor(Competitor competitor) {
|
||||
registerCompetitors(Collections.singleton(competitor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCompetitors(Collection<Competitor> competitors) {
|
||||
RegattaLog regattaLog = getRegattaLike().getRegattaLog();
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForRegatta ,
|
||||
UUID.randomUUID(), competitor));
|
||||
|
||||
for (Competitor competitor : competitors) {
|
||||
regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForRegatta,
|
||||
UUID.randomUUID(), competitor));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitor(Competitor competitor) {
|
||||
deregisterCompetitors(Collections.singleton(competitor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitors(Collection<Competitor> competitors) {
|
||||
RegattaLog regattaLog = getRegattaLike().getRegattaLog();
|
||||
for (RegattaLogEvent event : regattaLog.getUnrevokedEventsDescending()) {
|
||||
if (event instanceof RegisterCompetitorEvent) {
|
||||
RegisterCompetitorEvent<?> registerEvent = (RegisterCompetitorEvent<?>) event;
|
||||
if (competitors.contains(registerEvent.getCompetitor())) {
|
||||
try {
|
||||
regattaLog.revokeEvent(regattaLogEventAuthorForRegatta, event,
|
||||
"unregistering competitor because no longer selected for registration");
|
||||
} catch (NotRevokableException e) {
|
||||
logger.log(Level.WARNING, "could not unregister competitor by adding RevokeEvent", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+41
-2
@@ -1,11 +1,14 @@
|
||||
package com.sap.sailing.domain.leaderboard.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
@@ -15,11 +18,13 @@ import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEvent;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLogEventVisitor;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.events.impl.RegattaLogRegisterCompetitorEventImpl;
|
||||
import com.sap.sailing.domain.abstractlog.shared.analyzing.CompetitorsInLogAnalyzer;
|
||||
import com.sap.sailing.domain.abstractlog.shared.events.RegisterCompetitorEvent;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceColumnListener;
|
||||
import com.sap.sailing.domain.common.MaxPointsReason;
|
||||
import com.sap.sailing.domain.common.abstractlog.NotRevokableException;
|
||||
import com.sap.sailing.domain.leaderboard.HasRaceColumnsAndRegattaLike;
|
||||
import com.sap.sailing.domain.leaderboard.ScoreCorrection;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
@@ -49,6 +54,9 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI
|
||||
|
||||
private final AbstractLogEventAuthor regattaLogEventAuthorForAbstraceLeaderboard = new LogEventAuthorImpl(
|
||||
AbstractLeaderboardImpl.class.getName(), 0);
|
||||
|
||||
private static final Logger logger = Logger.getLogger(AbstractLeaderboardImpl.class.getName());
|
||||
|
||||
|
||||
/**
|
||||
* @param scoreComparator
|
||||
@@ -200,9 +208,40 @@ public abstract class AbstractLeaderboardImpl extends AbstractSimpleLeaderboardI
|
||||
|
||||
@Override
|
||||
public void registerCompetitor(Competitor competitor) {
|
||||
registerCompetitors(Collections.singleton(competitor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCompetitors(Collection<Competitor> competitors) {
|
||||
RegattaLog regattaLog = getRegattaLike().getRegattaLog();
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForAbstraceLeaderboard,
|
||||
UUID.randomUUID(), competitor));
|
||||
|
||||
for (Competitor competitor : competitors) {
|
||||
regattaLog.add(new RegattaLogRegisterCompetitorEventImpl(now, now, regattaLogEventAuthorForAbstraceLeaderboard,
|
||||
UUID.randomUUID(), competitor));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitor(Competitor competitor) {
|
||||
deregisterCompetitors(Collections.singleton(competitor));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deregisterCompetitors(Collection<Competitor> competitors) {
|
||||
RegattaLog regattaLog = getRegattaLike().getRegattaLog();
|
||||
for (RegattaLogEvent event : regattaLog.getUnrevokedEventsDescending()) {
|
||||
if (event instanceof RegisterCompetitorEvent) {
|
||||
RegisterCompetitorEvent<?> registerEvent = (RegisterCompetitorEvent<?>) event;
|
||||
if (competitors.contains(registerEvent.getCompetitor())) {
|
||||
try {
|
||||
regattaLog.revokeEvent(regattaLogEventAuthorForAbstraceLeaderboard, event,
|
||||
"unregistering competitor because no longer selected for registration");
|
||||
} catch (NotRevokableException e) {
|
||||
logger.log(Level.WARNING, "could not unregister competitor by adding RevokeEvent", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+19
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.domain.leaderboard.meta;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -252,4 +253,22 @@ public class MetaLeaderboardColumn extends SimpleAbstractRaceColumn implements R
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerCompetitors(Collection<Competitor> competitor, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deRegisterCompetitor(Competitor competitors, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deRegisterCompetitors(Collection<Competitor> competitors, Fleet fleet)
|
||||
throws CompetitorRegistrationOnRaceLogDisabledException {
|
||||
throw new CompetitorRegistrationOnRaceLogDisabledException();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.domain.regattalike;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
@@ -20,4 +22,8 @@ public interface HasRegattaLike {
|
||||
Iterable<Competitor> getCompetitorsRegisteredInRegattaLog();
|
||||
|
||||
void registerCompetitor(Competitor competitor);
|
||||
void registerCompetitors(Collection<Competitor> competitor);
|
||||
|
||||
void deregisterCompetitor(Competitor competitor);
|
||||
void deregisterCompetitors(Collection<Competitor> competitor);
|
||||
}
|
||||
Reference in new issue
Block a user