bug4227 Integrated PeriodicRaceListAnniversaryDeterminator into

RacingEventServiceImpl
This commit is contained in:
Benjamin Barth committed 2017-08-21 18:10:06 +02:00
1 parent 204e9a6a19
commit 3b64756ae4
4 files changed
+35 -17

No files matched your search

@@ -56,7 +56,8 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat
@Override public CompetitorStore getCompetitorStore() { return getBaseDomainFactory().getCompetitorStore(); } @Override public CompetitorStore getCompetitorStore() { return getBaseDomainFactory().getCompetitorStore(); }
}; };
}, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptySensorFixStore.INSTANCE, null, null, /* sailingNotificationService */ null, }, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptySensorFixStore.INSTANCE, null, null, /* sailingNotificationService */ null,
/* trackedRaceStatisticsCache */ null, /* restoreTrackedRaces */ false); /* trackedRaceStatisticsCache */ null, /* restoreTrackedRaces */ false,
/* periodicRaceListAnniversaryDeterminator */ null);
} }
@Override @Override
@@ -76,7 +77,8 @@ public abstract class AbstractServerReplicationTest extends com.sap.sse.replicat
}; };
}, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptySensorFixStore.INSTANCE, }, MediaDBFactory.INSTANCE.getMediaDB(mongoDBService), EmptyWindStore.INSTANCE, EmptySensorFixStore.INSTANCE,
/* serviceFinderFactory */ null, null, /* sailingNotificationService */ null, /* serviceFinderFactory */ null, null, /* sailingNotificationService */ null,
/* trackedRaceStatisticsCache */ null, /* restoreTrackedRaces */ false); /* trackedRaceStatisticsCache */ null, /* restoreTrackedRaces */ false,
/* periodicRaceListAnniversaryDeterminator */ null);
} }
} }
} }
@@ -20,11 +20,11 @@ import com.sap.sse.osgi.CachedOsgiTypeBasedServiceFinderFactory;
public class PeriodicRaceListAnniversaryDeterminator implements PeriodicRaceListCalculator { public class PeriodicRaceListAnniversaryDeterminator implements PeriodicRaceListCalculator {
private static final Logger logger = Logger.getLogger(PeriodicRaceListAnniversaryDeterminator.class.getName()); private static final Logger logger = Logger.getLogger(PeriodicRaceListAnniversaryDeterminator.class.getName());
private MongoObjectFactory mongoObjectFactory; private final MongoObjectFactory mongoObjectFactory;
private PeriodicRaceListCalculationScheduler anniversaryCalculator; private PeriodicRaceListCalculationScheduler anniversaryCalculator;
ConcurrentHashMap<Integer, DetailedRaceInfo> knownAnniversaries; private final ConcurrentHashMap<Integer, DetailedRaceInfo> knownAnniversaries;
CopyOnWriteArrayList<AnniversaryChecker> checkers; private final CopyOnWriteArrayList<AnniversaryChecker> checkers;
/** /**
* Contains the results of the last calculation, a number giving the next anniversary * 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); serviceFinderFactory = new CachedOsgiTypeBasedServiceFinderFactory(context);
final PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator = new PeriodicRaceListAnniversaryDeterminator(
serviceFinderFactory, new QuarterChecker(), new SameDigitChecker());
racingEventService = new RacingEventServiceImpl(clearPersistentCompetitors, serviceFinderFactory, racingEventService = new RacingEventServiceImpl(clearPersistentCompetitors, serviceFinderFactory,
trackedRegattaListener, notificationService, trackedRaceStatisticsCache, restoreTrackedRaces); trackedRegattaListener, notificationService, trackedRaceStatisticsCache, restoreTrackedRaces,
periodicRaceListAnniversaryDeterminator);
notificationService.setRacingEventService(racingEventService); notificationService.setRacingEventService(racingEventService);
PeriodicRaceListCalculationScheduler raceListScheduler = new PeriodicRaceListCalculationScheduler(racingEventService, PeriodicRaceListCalculationScheduler raceListScheduler = new PeriodicRaceListCalculationScheduler(racingEventService,
ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor()); ThreadPoolUtil.INSTANCE.getDefaultBackgroundTaskThreadPoolExecutor());
raceListScheduler.addListener(new PeriodicRaceListAnniversaryDeterminator(serviceFinderFactory,new QuarterChecker(),new SameDigitChecker())); raceListScheduler.addListener(periodicRaceListAnniversaryDeterminator);
masterDataImportClassLoaderServiceTracker = new ServiceTracker<MasterDataImportClassLoaderService, MasterDataImportClassLoaderService>( masterDataImportClassLoaderServiceTracker = new ServiceTracker<MasterDataImportClassLoaderService, MasterDataImportClassLoaderService>(
context, MasterDataImportClassLoaderService.class, context, MasterDataImportClassLoaderService.class,
@@ -179,6 +179,7 @@ import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl;
import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory; import com.sap.sailing.expeditionconnector.ExpeditionWindTrackerFactory;
import com.sap.sailing.server.RacingEventService; import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.Replicator; 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.CourseAreaJsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer; import com.sap.sailing.server.gateway.deserialization.impl.EventBaseJsonDeserializer;
import com.sap.sailing.server.gateway.deserialization.impl.LeaderboardGroupBaseJsonDeserializer; 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 TrackedRaceStatisticsCache trackedRaceStatisticsCache;
private final PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator;
/** /**
* Providing the constructor parameters for a new {@link RacingEventServiceImpl} instance is a bit tricky * 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. * 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) { 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 * 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 * notification service is available, e.g., in test set-ups
* @param trackedRaceStatisticsCache * @param trackedRaceStatisticsCache
* a cache that gives access to detailed statistics about TrackedRaces. If <code>null</code>, no * a cache that gives access to detailed statistics about TrackedRaces. If <code>null</code>, no detailed
* detailed statistics about TrackedRaces will be calculated. * statistics about TrackedRaces will be calculated.
* @param periodicRaceListAnniversaryDeterminator
* a determinator service to periodically check for anniversaries
*/ */
public RacingEventServiceImpl(boolean clearPersistentCompetitorStore, final TypeBasedServiceFinderFactory serviceFinderFactory, public RacingEventServiceImpl(boolean clearPersistentCompetitorStore, final TypeBasedServiceFinderFactory serviceFinderFactory,
TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService, TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService,
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces) { TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator) {
this((final RaceLogResolver raceLogResolver)-> { this((final RaceLogResolver raceLogResolver)-> {
return new ConstructorParameters() { return new ConstructorParameters() {
private final MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(serviceFinderFactory); 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 DomainFactory getBaseDomainFactory() { return competitorStore.getBaseDomainFactory(); }
@Override public CompetitorStore getCompetitorStore() { return competitorStore; } @Override public CompetitorStore getCompetitorStore() { return competitorStore; }
}; };
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), null, null, serviceFinderFactory ,trackedRegattaListener, sailingNotificationService, }, MediaDBFactory.INSTANCE.getDefaultMediaDB(), null, null, serviceFinderFactory, trackedRegattaListener,
trackedRaceStatisticsCache, restoreTrackedRaces); sailingNotificationService, trackedRaceStatisticsCache, restoreTrackedRaces,
periodicRaceListAnniversaryDeterminator);
} }
private RacingEventServiceImpl(final boolean clearPersistentCompetitorStore, WindStore windStore, 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 DomainFactory getBaseDomainFactory() { return competitorStore.getBaseDomainFactory(); }
@Override public CompetitorStore getCompetitorStore() { return competitorStore; } @Override public CompetitorStore getCompetitorStore() { return competitorStore; }
}; };
}, MediaDBFactory.INSTANCE.getDefaultMediaDB(), windStore, sensorFixStore, serviceFinderFactory, null, sailingNotificationService, }, MediaDBFactory.INSTANCE.getDefaultMediaDB(), windStore, sensorFixStore, serviceFinderFactory, null,
/* trackedRaceStatisticsCache */ null, restoreTrackedRaces); sailingNotificationService, /* trackedRaceStatisticsCache */ null, restoreTrackedRaces,
/* periodicRaceListAnniversaryDeterminator */ null);
} }
public RacingEventServiceImpl(final DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory, public RacingEventServiceImpl(final DomainObjectFactory domainObjectFactory, MongoObjectFactory mongoObjectFactory,
@@ -565,7 +575,8 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
@Override public CompetitorStore getCompetitorStore() { return getBaseDomainFactory().getCompetitorStore(); } @Override public CompetitorStore getCompetitorStore() { return getBaseDomainFactory().getCompetitorStore(); }
}; };
}, mediaDB, windStore, sensorFixStore, null, null, /* sailingNotificationService */ null, }, 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, public RacingEventServiceImpl(Function<RaceLogResolver, ConstructorParameters> constructorParametersProvider, MediaDB mediaDb,
final WindStore windStore, final SensorFixStore sensorFixStore, TypeBasedServiceFinderFactory serviceFinderFactory, final WindStore windStore, final SensorFixStore sensorFixStore, TypeBasedServiceFinderFactory serviceFinderFactory,
TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService, TrackedRegattaListener trackedRegattaListener, SailingNotificationService sailingNotificationService,
TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces) { TrackedRaceStatisticsCache trackedRaceStatisticsCache, boolean restoreTrackedRaces,
PeriodicRaceListAnniversaryDeterminator periodicRaceListAnniversaryDeterminator) {
logger.info("Created " + this); logger.info("Created " + this);
this.numberOfTrackedRacesRestored = new AtomicInteger(); this.numberOfTrackedRacesRestored = new AtomicInteger();
this.scoreCorrectionListenersByLeaderboard = new ConcurrentHashMap<>(); this.scoreCorrectionListenersByLeaderboard = new ConcurrentHashMap<>();
@@ -686,6 +698,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
getMongoObjectFactory().removeAllConnectivityParametersForRacesToRestore(); getMongoObjectFactory().removeAllConnectivityParametersForRacesToRestore();
} }
this.trackedRaceStatisticsCache = trackedRaceStatisticsCache; this.trackedRaceStatisticsCache = trackedRaceStatisticsCache;
this.periodicRaceListAnniversaryDeterminator = periodicRaceListAnniversaryDeterminator;
} }
private void restoreTrackedRaces() { private void restoreTrackedRaces() {