View Javadoc

1   package cz.cuni.amis.pogamut.base.component.bus.event;
2   
3   import cz.cuni.amis.pogamut.base.component.IComponent;
4   import cz.cuni.amis.pogamut.base.component.bus.IComponentEvent;
5   import cz.cuni.amis.utils.token.Token;
6   
7   /**
8    * Class for accepting events - provides description of which event should be checked and method that performs the check.
9    * <p><p>
10   * Preferred way of usage are anonymous classes which override {@link EventFilter#accept(IComponentEvent)} that otherwise
11   * always return null.
12   * 
13   * @author Jimmy
14   *
15   * @param <T>
16   */
17  public class EventFilter<T> implements WaitForEvent.IEventFilter<T>  {
18  
19  	private Class<T> eventClass;
20  	
21  	private Class<? extends IComponent> componentClass;
22  
23  	private Token componentId;
24  
25  	/**
26  	 * @param eventClass which events should be examined inside {@link EventFilter#accept(IComponentEvent)}
27  	 */
28  	public EventFilter(Class<T> eventClass) {
29  		this.eventClass = eventClass;
30  	}
31  	
32  	/**
33  	 * 
34  	 * @param eventClass which events should be examined inside {@link EventFilter#accept(IComponentEvent)}
35  	 * @param componentClass from which component class the events are examined inside {@link EventFilter#accept(IComponentEvent)}
36  	 */
37  	public EventFilter(Class<T> eventClass, Class<? extends IComponent> componentClass) {
38  		this.eventClass = eventClass;
39  		this.componentClass = componentClass;
40  	}
41  	
42  	/**
43  	 * @param eventClass which events should be examined inside {@link EventFilter#accept(IComponentEvent)}
44  	 * @param componentId from which component id the events are examined inside {@link EventFilter#accept(IComponentEvent)}
45  	 */
46  	public EventFilter(Class<T> eventClass, Token componentId) {
47  		this.eventClass = eventClass;
48  		this.componentId = componentId;
49  	}
50  
51  	@Override
52  	public boolean accept(T event) {
53  		return true;
54  	}
55  		
56  	@Override
57  	public Class getComponentClass() {
58  		return componentClass;
59  	}
60  
61  	@Override
62  	public Token getComponentId() {
63  		return componentId;
64  	}
65  
66  	@Override
67  	public Class<T> getEventClass() {
68  		return eventClass;
69  	}
70  
71  }