AnalyzerModule.java 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package cz.senslog.analyzer.analysis;
  2. import cz.senslog.analyzer.analysis.module.FilterHandler;
  3. import cz.senslog.analyzer.analysis.module.HandlersModule;
  4. import cz.senslog.analyzer.analysis.module.ThresholdHandler;
  5. import cz.senslog.analyzer.core.EventBusModule;
  6. import cz.senslog.analyzer.core.api.BlockingHandler;
  7. import cz.senslog.analyzer.core.EventBus;
  8. import cz.senslog.analyzer.core.api.HandlerInvoker;
  9. import cz.senslog.analyzer.domain.DoubleStatistics;
  10. import cz.senslog.analyzer.domain.Observation;
  11. import dagger.Module;
  12. import dagger.Provides;
  13. import javax.inject.Named;
  14. import java.util.List;
  15. import static cz.senslog.analyzer.core.api.HandlerInvoker.cancelInvoker;
  16. @Module(includes = {
  17. HandlersModule.class,
  18. EventBusModule.class
  19. })
  20. public class AnalyzerModule {
  21. @Provides @Named("advancedAnalyzer")
  22. Analyzer provideAdvancedAnalyzer (
  23. @Named("sensorFilterHandler") FilterHandler<Observation> sensorFilterHandler,
  24. @Named("sensorThresholdHandler") ThresholdHandler<Observation> thresholdHandler,
  25. @Named("observationCollector") BlockingHandler<Observation, DoubleStatistics> observationCollector,
  26. @Named("groupFilterHandler") FilterHandler<DoubleStatistics> groupFilterHandler,
  27. @Named("groupThresholdHandler") ThresholdHandler<DoubleStatistics> groupThresholdHandler,
  28. @Named("statisticsCollector") BlockingHandler<DoubleStatistics, DoubleStatistics> statisticsCollector,
  29. EventBus eventBus
  30. ) {
  31. HandlerInvoker<Observation> invoker = HandlerInvoker.create()
  32. .handler(sensorFilterHandler)
  33. .nextHandlerInvoker(HandlerInvoker.create()
  34. .handler(thresholdHandler)
  35. .nextHandlerInvoker(HandlerInvoker.create()
  36. .blockingHandler(observationCollector, eventBus::save)
  37. .nextHandlerInvoker(HandlerInvoker.create()
  38. .handler(groupFilterHandler)
  39. .nextHandlerInvoker(HandlerInvoker.create()
  40. .handler(groupThresholdHandler)
  41. .nextHandlerInvoker(HandlerInvoker.create()
  42. .blockingHandler(statisticsCollector, eventBus::save)
  43. .nextHandlerInvoker(cancelInvoker())
  44. .eventBus(eventBus)
  45. .build()
  46. ).eventBus(eventBus)
  47. .build()
  48. ).eventBus(eventBus)
  49. .build()
  50. ).eventBus(eventBus)
  51. .build()
  52. ).eventBus(eventBus)
  53. .build()
  54. ).eventBus(eventBus)
  55. .build();
  56. return new ObservationAnalyzer(invoker);
  57. }
  58. @Provides @Named("simpleAnalyzer")
  59. Analyzer provideSimpleAnalyzer (
  60. @Named("sensorFilterHandler") FilterHandler<Observation> sensorFilterHandler,
  61. @Named("sensorThresholdHandler") ThresholdHandler<Observation> thresholdHandler,
  62. @Named("observationCollector") BlockingHandler<Observation, DoubleStatistics> observationCollector,
  63. EventBus eventBus
  64. ) {
  65. HandlerInvoker<Observation> obsColl = HandlerInvoker.create()
  66. .blockingHandler(observationCollector, eventBus::save)
  67. .nextHandlerInvoker(cancelInvoker()).eventBus(eventBus)
  68. .build();
  69. HandlerInvoker<Observation> obsThs = HandlerInvoker.create().handler(thresholdHandler)
  70. .nextHandlerInvoker(obsColl).eventBus(eventBus).build();
  71. HandlerInvoker<Observation> obsFlt = HandlerInvoker.create().handler(sensorFilterHandler)
  72. .nextHandlerInvoker(obsThs).eventBus(eventBus).build();
  73. return new ObservationAnalyzer(obsFlt);
  74. }
  75. }