Merge branch 'master' into bug5147

This commit is contained in:
Axel Uhl committed 2022-11-07 12:58:01 +01:00
commit 2e669c4ea8
205 files changed
+3717 -985

No files matched your search

@@ -1,46 +0,0 @@
package com.sap.sailing.server.interfaces;
import java.util.Map;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.TrackedRaceStatusEnum;
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprint;
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.TrackedRace;
/**
* A registry to provide access to the {@link MarkPassingRaceFingerprint}s at the different levels of the domain model.
* The following use cases exist:
* <ul>
* <li>Check for a {@link RaceIdentifier} whether mark passings have been stored persistently for the race identified by
* that identifier; the result is a {@link MarkPassingRaceFingerprint} which can may or may not be
* {@link MarkPassingRaceFingerprint#matches(com.sap.sailing.domain.tracking.TrackedRace) matched} by a
* {@link TrackedRace}</li>
* <li>If a matching fingerprint is stored in this registry for a race then {@link #loadMarkPassings(RaceIdentifier)
* loading the mark passings} for that race and {@link DynamicTrackedRace#updateMarkPassings(Competitor, Iterable)
* updating it to the tracked race} is the logical next step.</li>
* <li>When a tracked race has reached a "stable" state, e.g., because it's {@link TrackedRace#getEndOfTracking()
* end-of-tracking} time point has passed or its {@link TrackedRace#getStatus() status} has changed to
* {@link TrackedRaceStatusEnum#FINISHED} then the latest mark passing calculation results can be
* {@link #storeMarkPassings(RaceIdentifier, MarkPassingRaceFingerprint, Map) stored} together with the fingerprint
* computed from the tracked race.</li>
* </ul>
*
* @author Fabian Kallenbach (i550803)
*/
public interface MarkPassingRaceFingerprintRegistry {
void storeMarkPassings(RaceIdentifier raceIdentifier, MarkPassingRaceFingerprint fingerprint, Map<Competitor, Map<Waypoint, MarkPassing>> markPassings);
MarkPassingRaceFingerprint getMarkPassingRaceFingerprint(RaceIdentifier raceIdentifier);
/**
* <b>Precondition</b>: {@code fingerprint}.{@link MarkPassingRaceFingerprint#matches(com.sap.sailing.domain.tracking.TrackedRace) matches}
* {@code (}{@link #getMarkPassingRaceFingerprint(RaceIdentifier) getMarkPassingRaceFingerprint(raceIdentifier)}{@code )}<p>
*
* If a mark passing race fingerprint is known for {@code raceIdentifier} in this registry and the
*/
Map<Competitor, Map<Waypoint, MarkPassing>> loadMarkPassings(RaceIdentifier raceIdentifier);
}
@@ -80,6 +80,7 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboardWithEliminations;
import com.sap.sailing.domain.leaderboard.RegattaLeaderboardWithOtherTieBreakingLeaderboard;
import com.sap.sailing.domain.leaderboard.ScoringScheme;
import com.sap.sailing.domain.leaderboard.impl.DelegatingRegattaLeaderboardWithCompetitorElimination;
import com.sap.sailing.domain.markpassinghash.MarkPassingRaceFingerprintRegistry;
import com.sap.sailing.domain.persistence.DomainObjectFactory;
import com.sap.sailing.domain.persistence.MongoObjectFactory;
import com.sap.sailing.domain.polars.PolarDataService;
@@ -148,8 +149,8 @@ import com.sap.sse.shared.media.VideoDescriptor;
* @author Axel Uhl (d043530)
*
*/
public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, RaceFetcher,
LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager,
public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetcher, RegattaRegistry, MarkPassingRaceFingerprintRegistry,
RaceFetcher, LeaderboardRegistry, EventResolver, LeaderboardGroupResolver, TrackerManager,
Searchable<LeaderboardSearchResult, KeywordQueryWithOptionalEventQualification>,
ReplicableWithObjectInputStream<RacingEventService, RacingEventServiceOperation<?>>, RaceLogAndTrackedRaceResolver,
SensorFixStoreSupplier, WindFinderReviewedSpotsCollectionIdProvider {