001 package com.hammurapi.eventbus;
002
003 /**
004 * Composite inference filter consists of several inference filters which are invoked one after another.
005 * @author Pavel Vlasov
006 */
007 public class CompositeInferenceFilter<E, P extends Comparable<P>, C, K, H extends EventBus.Handle<E,P,C>, S extends EventStore<E,P,C,H,S>> implements InferenceFilter<E,P,C,K,H,S> {
008
009 private InferenceFilter<E, P, C, K, H, S>[] parts;
010
011 public CompositeInferenceFilter(InferenceFilter<E,P,C,K,H,S>... parts) {
012 this.parts = parts;
013 }
014
015 public boolean accept(InferenceCommand<E,P,C,K,H,S> inferenceCommand, EventBus<E,P,C,K,H,S> bus) {
016 for (InferenceFilter<E,P,C,K,H,S> filter: parts) {
017 if (!filter.accept(inferenceCommand, bus)) {
018 return false;
019 }
020 }
021 return true;
022 }
023 }