public DistributedAnalysisRunner(final DataCleanerConfiguration configuration, final ClusterManager clusterManager, final AnalysisListener... listeners) { _configuration = configuration; _clusterManager = clusterManager; _analysisListener = new CompositeAnalysisListener(listeners); }
@PostConstruct private void initialize() { Collection<AnalysisListener> listeners = BeanFactoryUtils.beansOfTypeIncludingAncestors(appCtx, AnalysisListener.class).values(); if(listeners.size() == 1) { analysisListener = listeners.iterator().next(); } else if(listeners.size() > 1) { analysisListener = new CompositeAnalysisListener(listeners.toArray(new AnalysisListener[listeners.size()])); } }
private AnalysisListener createAnalysisListener(ExecutionLog execution, ExecutionLogger executionLogger) { // we always want a MonitorAnalysisListener instance final AnalysisListener monitorAnalysisListener = new MonitorAnalysisListener(execution, executionLogger); // we might want to plug in additional AnalysisListeners final Map<String, AnalysisListener> analysisListeners = (_applicationContext == null ? null : _applicationContext.getBeansOfType(AnalysisListener.class)); final AnalysisListener analysisListener; if (analysisListeners == null || analysisListeners.isEmpty()) { analysisListener = monitorAnalysisListener; } else { final AnalysisListener[] delegates = analysisListeners.values().toArray( new AnalysisListener[analysisListeners.size()]); analysisListener = new CompositeAnalysisListener(monitorAnalysisListener, delegates); } return analysisListener; }
new CompositeAnalysisListener(rowConsumeConfiguration.analysisListener, errorAwareAnalysisListener);
@Override public AnalysisResultFuture run(final AnalysisJob job) { final Queue<JobAndResult> resultQueue = new LinkedBlockingQueue<>(); // This analysis listener will keep track of all collected errors final ErrorAwareAnalysisListener errorListener = new ErrorAwareAnalysisListener(); // This analysis listener is a composite for all other listeners final CompositeAnalysisListener analysisListener = new CompositeAnalysisListener(errorListener, _sharedAnalysisListeners); if (DebugLoggingAnalysisListener.isEnabled()) { // enable debug logging? analysisListener.addDelegate(new DebugLoggingAnalysisListener()); } else if (InfoLoggingAnalysisListener.isEnabled()) { analysisListener.addDelegate(new InfoLoggingAnalysisListener()); } // set up the task runner that is aware of errors final TaskRunner taskRunner = new ErrorAwareTaskRunnerWrapper(errorListener, _configuration.getEnvironment().getTaskRunner()); final boolean includedNonDistributed = isNonDistributedTasksIncluded(); // the delegate will do all the actual work final AnalysisRunnerJobDelegate delegate = new AnalysisRunnerJobDelegate(job, _configuration, taskRunner, analysisListener, resultQueue, errorListener, includedNonDistributed); return delegate.run(); }