| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package cz.senslog.analyzer.analysis;
- import cz.senslog.analyzer.analysis.module.FilterHandler;
- import cz.senslog.analyzer.analysis.module.HandlersModule;
- import cz.senslog.analyzer.analysis.module.ThresholdHandler;
- import cz.senslog.analyzer.core.EventBusModule;
- import cz.senslog.analyzer.core.api.BlockingHandler;
- import cz.senslog.analyzer.core.EventBus;
- import cz.senslog.analyzer.core.api.HandlerInvoker;
- import cz.senslog.analyzer.domain.DoubleStatistics;
- import cz.senslog.analyzer.domain.Observation;
- import cz.senslog.analyzer.persistence.repository.StatisticsRepository;
- import dagger.Module;
- import dagger.Provides;
- import org.apache.logging.log4j.LogManager;
- import org.apache.logging.log4j.Logger;
- import javax.inject.Named;
- import java.util.List;
- import static cz.senslog.analyzer.core.api.HandlerInvoker.cancelInvoker;
- @Module(includes = {
- HandlersModule.class,
- EventBusModule.class
- })
- public class AnalyzerModule {
- private static final Logger logger = LogManager.getLogger(AnalyzerModule.class);
- @Provides @Named("statisticsAnalyzer")
- Analyzer provideSimpleAnalyzer (
- @Named("sensorFilterHandler") FilterHandler<Observation> sensorFilterHandler,
- @Named("sensorThresholdHandler") ThresholdHandler<Observation> sensorThresholdHandler,
- @Named("aggregationCollectorHandler") BlockingHandler<Observation, DoubleStatistics> aggregateCollectorHandler,
- @Named("groupThresholdHandler") ThresholdHandler<DoubleStatistics> groupThresholdHandler,
- EventBus eventBus
- ) {
- // filter & group mapping ===>> check sensor value ====>> aggregate by groups ====>> check group statistics
- HandlerInvoker<DoubleStatistics> groupThreshold = HandlerInvoker.create()
- .handler(groupThresholdHandler).nextHandlerInvoker(cancelInvoker())
- .eventBus(eventBus).build();
- HandlerInvoker<Observation> aggregateCollector = HandlerInvoker.create()
- .blockingHandler(aggregateCollectorHandler, eventBus::save)
- .nextHandlerInvoker(groupThreshold)
- .eventBus(eventBus).build();
- HandlerInvoker<Observation> sensorThreshold = HandlerInvoker.create()
- .handler(sensorThresholdHandler).nextHandlerInvoker(aggregateCollector)
- .eventBus(eventBus).build();
- HandlerInvoker<Observation> sensorFilter = HandlerInvoker.create()
- .handler(sensorFilterHandler).nextHandlerInvoker(sensorThreshold)
- .eventBus(eventBus).build();
- return new ObservationAnalyzer(sensorFilter);
- }
- }
|