4320 |
29 May 08 |
nicklas |
1 |
/** |
4320 |
29 May 08 |
nicklas |
$Id$ |
4320 |
29 May 08 |
nicklas |
3 |
|
4320 |
29 May 08 |
nicklas |
Copyright (C) 2008 Nicklas Nordborg |
4320 |
29 May 08 |
nicklas |
5 |
|
4320 |
29 May 08 |
nicklas |
This file is part of BASE - BioArray Software Environment. |
4320 |
29 May 08 |
nicklas |
Available at http://base.thep.lu.se/ |
4320 |
29 May 08 |
nicklas |
8 |
|
4320 |
29 May 08 |
nicklas |
BASE is free software; you can redistribute it and/or |
4320 |
29 May 08 |
nicklas |
modify it under the terms of the GNU General Public License |
4479 |
05 Sep 08 |
jari |
as published by the Free Software Foundation; either version 3 |
4320 |
29 May 08 |
nicklas |
of the License, or (at your option) any later version. |
4320 |
29 May 08 |
nicklas |
13 |
|
4320 |
29 May 08 |
nicklas |
BASE is distributed in the hope that it will be useful, |
4320 |
29 May 08 |
nicklas |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
4320 |
29 May 08 |
nicklas |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4320 |
29 May 08 |
nicklas |
GNU General Public License for more details. |
4320 |
29 May 08 |
nicklas |
18 |
|
4320 |
29 May 08 |
nicklas |
You should have received a copy of the GNU General Public License |
4515 |
11 Sep 08 |
jari |
along with BASE. If not, see <http://www.gnu.org/licenses/>. |
4320 |
29 May 08 |
nicklas |
21 |
*/ |
4320 |
29 May 08 |
nicklas |
22 |
package net.sf.basedb.util.extensions.events; |
4320 |
29 May 08 |
nicklas |
23 |
|
4320 |
29 May 08 |
nicklas |
24 |
import java.util.Collection; |
4320 |
29 May 08 |
nicklas |
25 |
|
4320 |
29 May 08 |
nicklas |
26 |
import net.sf.basedb.util.extensions.Extension; |
4320 |
29 May 08 |
nicklas |
27 |
import net.sf.basedb.util.extensions.ExtensionPoint; |
4320 |
29 May 08 |
nicklas |
28 |
|
4320 |
29 May 08 |
nicklas |
29 |
/** |
4320 |
29 May 08 |
nicklas |
Event filter that only passes on events based on multiple |
4320 |
29 May 08 |
nicklas |
other event filters. Given a collection of event filters, |
4320 |
29 May 08 |
nicklas |
this filter can pass on the event if at least one of the |
4320 |
29 May 08 |
nicklas |
filters in the collection does or if all of them does. |
4320 |
29 May 08 |
nicklas |
34 |
|
4320 |
29 May 08 |
nicklas |
@author nicklas |
4320 |
29 May 08 |
nicklas |
@version 2.8 |
4320 |
29 May 08 |
nicklas |
@base.modified $Date$ |
4320 |
29 May 08 |
nicklas |
38 |
*/ |
4320 |
29 May 08 |
nicklas |
39 |
public class CombiningEventFilter |
4320 |
29 May 08 |
nicklas |
40 |
implements EventFilter |
4320 |
29 May 08 |
nicklas |
41 |
{ |
4320 |
29 May 08 |
nicklas |
42 |
|
4320 |
29 May 08 |
nicklas |
43 |
private final Collection<EventFilter> filters; |
4320 |
29 May 08 |
nicklas |
44 |
private final boolean allMustPass; |
4320 |
29 May 08 |
nicklas |
45 |
|
4320 |
29 May 08 |
nicklas |
46 |
/** |
4320 |
29 May 08 |
nicklas |
Create a new combining event filter. This filter will pass events |
4320 |
29 May 08 |
nicklas |
depending on how many of the other event filters passes the event. |
4320 |
29 May 08 |
nicklas |
49 |
|
4320 |
29 May 08 |
nicklas |
@param filters A collection of event filters |
4320 |
29 May 08 |
nicklas |
@param allMustPass TRUE if the event must pass all filters to |
4320 |
29 May 08 |
nicklas |
pass this filter, FALSE if the event must pass at least one |
4320 |
29 May 08 |
nicklas |
filter to pass this filter |
4320 |
29 May 08 |
nicklas |
54 |
*/ |
4320 |
29 May 08 |
nicklas |
55 |
public CombiningEventFilter(Collection<EventFilter> filters, boolean allMustPass) |
4320 |
29 May 08 |
nicklas |
56 |
{ |
4320 |
29 May 08 |
nicklas |
57 |
this.filters = filters; |
4320 |
29 May 08 |
nicklas |
58 |
this.allMustPass = allMustPass; |
4320 |
29 May 08 |
nicklas |
59 |
} |
4320 |
29 May 08 |
nicklas |
60 |
|
4320 |
29 May 08 |
nicklas |
61 |
/** |
4320 |
29 May 08 |
nicklas |
@return TRUE if the event passes the filters |
4320 |
29 May 08 |
nicklas |
63 |
*/ |
4320 |
29 May 08 |
nicklas |
64 |
@Override |
4320 |
29 May 08 |
nicklas |
65 |
public boolean shouldSend(EventType event, ExtensionPoint<?> extensionPoint, |
4320 |
29 May 08 |
nicklas |
66 |
Extension<?> extension) |
4320 |
29 May 08 |
nicklas |
67 |
{ |
4320 |
29 May 08 |
nicklas |
68 |
for (EventFilter filter : filters) |
4320 |
29 May 08 |
nicklas |
69 |
{ |
4320 |
29 May 08 |
nicklas |
70 |
boolean pass = filter.shouldSend(event, extensionPoint, extension); |
4320 |
29 May 08 |
nicklas |
71 |
if (pass) |
4320 |
29 May 08 |
nicklas |
72 |
{ |
4320 |
29 May 08 |
nicklas |
73 |
if (!allMustPass) return true; |
4320 |
29 May 08 |
nicklas |
74 |
} |
4320 |
29 May 08 |
nicklas |
75 |
else |
4320 |
29 May 08 |
nicklas |
76 |
{ |
4320 |
29 May 08 |
nicklas |
77 |
if (allMustPass) return false; |
4320 |
29 May 08 |
nicklas |
78 |
} |
4320 |
29 May 08 |
nicklas |
79 |
} |
4320 |
29 May 08 |
nicklas |
80 |
return allMustPass; |
4320 |
29 May 08 |
nicklas |
81 |
} |
4320 |
29 May 08 |
nicklas |
82 |
|
4320 |
29 May 08 |
nicklas |
83 |
} |