mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 11:40:01 +00:00
bug4227 Integrated PeriodicRaceListAnniversaryDeterminator into
RacingEventServiceImpl
This commit is contained in:
1 parent
204e9a6a19
commit
3b64756ae4
4 files changed
+35
-17
No files matched your search
+3
-3
@@ -20,11 +20,11 @@ import com.sap.sse.osgi.CachedOsgiTypeBasedServiceFinderFactory;
|
||||
public class PeriodicRaceListAnniversaryDeterminator implements PeriodicRaceListCalculator {
|
||||
private static final Logger logger = Logger.getLogger(PeriodicRaceListAnniversaryDeterminator.class.getName());
|
||||
|
||||
private MongoObjectFactory mongoObjectFactory;
|
||||
private final MongoObjectFactory mongoObjectFactory;
|
||||
private PeriodicRaceListCalculationScheduler anniversaryCalculator;
|
||||
|
||||
ConcurrentHashMap<Integer, DetailedRaceInfo> knownAnniversaries;
|
||||
CopyOnWriteArrayList<AnniversaryChecker> checkers;
|
||||
private final ConcurrentHashMap<Integer, DetailedRaceInfo> knownAnniversaries;
|
||||
private final CopyOnWriteArrayList<AnniversaryChecker> checkers;
|
||||
|
||||
/**
|
||||
* Contains the results of the last calculation, a number giving the next anniversary
|
||||
|
||||
@@ -122,12 +122,15 @@ public class Activator implements BundleActivator {
|
||||
serviceFinderFactory = new CachedOsgiTypeBasedServiceFinderFactory(context);
|
||||
|
||||
|
||||
final PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator = new PeriodicRaceListAnniversaryDeterminator(
|
||||
serviceFinderFactory, new QuarterChecker(), new SameDigitChecker());
|
||||
racingEventService = new RacingEventServiceImpl(clearPersistentCompetitors, serviceFinderFactory,
|
||||
trackedRegattaListener, notificationService, trackedRaceStatisticsCache, restoreTrackedRaces);
|
||||
trackedRegattaListener, notificationService, trackedRaceStatisticsCache, restoreTrackedRaces,
|
||||
periodicRaceListAnniversaryDeterminator);
|
||||
notificationService.setRacingEventService(racingEventService);
|
||||
PeriodicRaceListCalculationScheduler raceListScheduler = new PeriodicRaceListCalculationScheduler(racingEventService,
|
||||
ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor());
|
||||
raceListScheduler.addListener(new PeriodicRaceListAnniversaryDeterminator(serviceFinderFactory,new QuarterChecker(),new SameDigitChecker()));
|
||||
raceListScheduler.addListener(periodicRaceListAnniversaryDeterminator);
|
||||
|
||||
masterDataImportClassLoaderServiceTracker = new ServiceTracker<MasterDataImportClassLoaderService, MasterDataImportClassLoaderService>(
|
||||
context, MasterDataImportClassLoaderService.class,
|
||||
|
||||
+23
-10
@@ -179,6 +179,7 @@ import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.Replicator;
|
||||
import com.sap.sailing.server.anniversary.PeriodicRaceListAnniversaryDeterminator;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.CourseAreaJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardGroupBaseJsonDeserializer;
|
||||
@@ -460,6 +461,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
|
||||
private final TrackedRaceStatisticsCache trackedRaceStatisticsCache;
|
||||
|
||||
private final PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator;
|
||||
|
||||
/**
|
||||
* Providing the constructor parameters for a new {@link RacingEventServiceImpl} instance is a bit tricky
|
||||
* in some cases because containment and initialization order of some types is fairly tightly coupled.
|
||||
@@ -499,7 +502,9 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
}
|
||||
|
||||
public RacingEventServiceImpl(boolean clearPersistentCompetitorStore, final TypeBasedServiceFinderFactory serviceFinderFactory, boolean restoreTrackedRaces) {
|
||||
this(clearPersistentCompetitorStore, serviceFinderFactory, null, /* sailingNotificationService */ null, /* trackedRaceStatisticsCache */ null, restoreTrackedRaces);
|
||||
this(clearPersistentCompetitorStore, serviceFinderFactory, null, /* sailingNotificationService */ null,
|
||||
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces,
|
||||
/* periodicRaceListAnniversaryDeterminator */ null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -514,12 +519,15 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
* a notification service to call upon events worth notifying users about, or {@code null} if no
|
||||
* notification service is available, e.g., in test set-ups
|
||||
* @param trackedRaceStatisticsCache
|
||||
* a cache that gives access to detailed statistics about TrackedRaces. If <code>null</code>, no
|
||||
* detailed statistics about TrackedRaces will be calculated.
|
||||
* a cache that gives access to detailed statistics about TrackedRaces. If <code>null</code>, no detailed
|
||||
* statistics about TrackedRaces will be calculated.
|
||||
* @param periodicRaceListAnniversaryDeterminator
|
||||
* a determinator service to periodically check for anniversaries
|
||||
*/
|
||||
public RacingEventServiceImpl(boolean clearPersistentCompetitorStore, final TypeBasedServiceFinderFactory serviceFinderFactory,
|
||||
TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService,
|
||||
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces) {
|
||||
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
|
||||
PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator) {
|
||||
this((final RaceLogResolver raceLogResolver)-> {
|
||||
return new ConstructorParameters() {
|
||||
private final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(serviceFinderFactory);
|
||||
@@ -532,8 +540,9 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
@Override public DomainFactory getBaseDomainFactory() { return competitorStore.getBaseDomainFactory(); }
|
||||
@Override public CompetitorStore getCompetitorStore() { return competitorStore; }
|
||||
};
|
||||
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), null, null, serviceFinderFactory ,trackedRegattaListener, sailingNotificationService,
|
||||
trackedRaceStatisticsCache, restoreTrackedRaces);
|
||||
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), null, null, serviceFinderFactory, trackedRegattaListener,
|
||||
sailingNotificationService, trackedRaceStatisticsCache, restoreTrackedRaces,
|
||||
periodicRaceListAnniversaryDeterminator);
|
||||
}
|
||||
|
||||
private RacingEventServiceImpl(final boolean clearPersistentCompetitorStore, WindStore windStore,
|
||||
@@ -551,8 +560,9 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
@Override public DomainFactory getBaseDomainFactory() { return competitorStore.getBaseDomainFactory(); }
|
||||
@Override public CompetitorStore getCompetitorStore() { return competitorStore; }
|
||||
};
|
||||
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), windStore, sensorFixStore, serviceFinderFactory, null, sailingNotificationService,
|
||||
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces);
|
||||
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), windStore, sensorFixStore, serviceFinderFactory, null,
|
||||
sailingNotificationService, /* trackedRaceStatisticsCache */ null, restoreTrackedRaces,
|
||||
/* periodicRaceListAnniversaryDeterminator */ null);
|
||||
}
|
||||
|
||||
public RacingEventServiceImpl(final DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory,
|
||||
@@ -565,7 +575,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
@Override public CompetitorStore getCompetitorStore() { return getBaseDomainFactory().getCompetitorStore(); }
|
||||
};
|
||||
}, mediaDB, windStore, sensorFixStore, null, null, /* sailingNotificationService */ null,
|
||||
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces);
|
||||
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces,
|
||||
/* periodicRaceListAnniversaryDeterminator */ null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -595,7 +606,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
public RacingEventServiceImpl(Function<RaceLogResolver, ConstructorParameters> constructorParametersProvider, MediaDB mediaDb,
|
||||
final WindStore windStore, final SensorFixStore sensorFixStore, TypeBasedServiceFinderFactory serviceFinderFactory,
|
||||
TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService,
|
||||
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces) {
|
||||
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
|
||||
PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator) {
|
||||
logger.info("Created " + this);
|
||||
this.numberOfTrackedRacesRestored = new AtomicInteger();
|
||||
this.scoreCorrectionListenersByLeaderboard = new ConcurrentHashMap<>();
|
||||
@@ -686,6 +698,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
getMongoObjectFactory().removeAllConnectivityParametersForRacesToRestore();
|
||||
}
|
||||
this.trackedRaceStatisticsCache = trackedRaceStatisticsCache;
|
||||
this.periodicRaceListAnniversaryDeterminator = periodicRaceListAnniversaryDeterminator;
|
||||
}
|
||||
|
||||
private void restoreTrackedRaces() {
|
||||
|
||||
Reference in new issue
Block a user