Package org.ka2ddo.yaac.filter
Class CumulativeBooleanOrFilter
java.lang.Object
org.ka2ddo.yaac.filter.Filter
org.ka2ddo.yaac.filter.CumulativeBooleanOrFilter
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Cloneable
,Iterable<Filter>
,CumulativeFilter
,FilterChangeListener
,MonitoringFilter
,PersistingFilter
public final class CumulativeBooleanOrFilter
extends Filter
implements CumulativeFilter, MonitoringFilter, FilterChangeListener, Iterable<Filter>, Cloneable, PersistingFilter, Closeable
This filter accumulates the results of several filters. Only if at least one of the
attached filters pass will the cumulative filter pass. This filter will
also provide a vertical column of its contained filters if displayed in
the filter dialog. Sub-filters are expected to be commutative (i.e., the
order they are tested does not affect the final answer).
- Author:
- Andrew Pavlin, KA2DDO
- See Also:
-
Field Summary
Fields inherited from class org.ka2ddo.yaac.filter.Filter
RESULT_NEUTRAL, RESULT_PASS, RESULT_REJECT, RESULT_WEAK_PASS, RESULT_WEAK_REJECT
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
acceptAX25Frame
(AX25Frame frame) Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).int
acceptMessage
(AX25Message msg) Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).int
Indicate whether the specified station should be displayed.void
Add a sub-Filter to this CumulativeBooleanOrFilter.void
Register a listener for changes of this Filter.boolean
Specifies that this filter may reject some stations, messages, and/or frames.clone()
Creates and returns a copy of this object.void
close()
Closes this filter and releases any system resources associated with it.void
filterSettingsChanged
(Filter changedFilter, boolean changedByUser) DO NOT CALL.getFilter
(int index) Get a reference to the Nth Filter installed in this CumulativeBooleanOrFilter.int
Get the number of sub-filters in this CumulativeBooleanOrFilter.Report a tag name used to look up JavaHelp for a filter editor.int
Get sequence number for this filter instance.Report a tag name used to look up the labelling for an editor panel for this editor instance in a ResourceBundle of translated names.Get the class name of a dynamically loadable class for the the GUI for this filter.iterator()
Returns an iterator over the child Filters of this CumulativeBooleanOrFilter.void
removeFilter
(Filter filter) Disconnect the specified Filter from this CumulativeBooleanOrFilter.void
Deregisters a listener.void
setFilterTypeTagName
(String tagName) Set the tag name to be used by this particular instance of CumulativeBooleanOrFilter.void
setPrefPrefix
(String prefPrefix) Change the persisted parameter prefix for this Filter instance.void
Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.void
Start automatically collecting real-time data as YAAC learns about them.void
Stop automatically collecting new real-time data and keep the current cache stable.Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
CumulativeBooleanOrFilter
public CumulativeBooleanOrFilter()
-
-
Method Details
-
addFilter
Add a sub-Filter to this CumulativeBooleanOrFilter.- Specified by:
addFilter
in interfaceCumulativeFilter
- Parameters:
filter
- Filter to be added to this filter
-
removeFilter
Disconnect the specified Filter from this CumulativeBooleanOrFilter.- Specified by:
removeFilter
in interfaceCumulativeFilter
- Parameters:
filter
- Filter to remove; if not found, nothing happens
-
getFilterCount
public int getFilterCount()Get the number of sub-filters in this CumulativeBooleanOrFilter.- Specified by:
getFilterCount
in interfaceCumulativeFilter
- Returns:
- int filter count
-
getFilter
Get a reference to the Nth Filter installed in this CumulativeBooleanOrFilter.- Specified by:
getFilter
in interfaceCumulativeFilter
- Parameters:
index
- zero-based index into this containing Filter- Returns:
- return the Nth Filter instance
- Throws:
IndexOutOfBoundsException
- if the index is out of range
-
iterator
Returns an iterator over the child Filters of this CumulativeBooleanOrFilter.- Specified by:
iterator
in interfaceCumulativeFilter
- Specified by:
iterator
in interfaceIterable<Filter>
- Returns:
- an Iterator.
-
getFilterTypeTagName
Report a tag name used to look up the labelling for an editor panel for this editor instance in a ResourceBundle of translated names.- Specified by:
getFilterTypeTagName
in classFilter
- Returns:
- String to use in looking up form label for this filter's editor
-
getFilterHelpTagName
Report a tag name used to look up JavaHelp for a filter editor.- Specified by:
getFilterHelpTagName
in classFilter
- Returns:
- the first sub-filter's help tag that is not null, or null because there is no filter specific help on any of the sub-filters
-
setFilterTypeTagName
Set the tag name to be used by this particular instance of CumulativeBooleanOrFilter.- Parameters:
tagName
- String tag name to return- See Also:
-
getFilterUIName
Get the class name of a dynamically loadable class for the the GUI for this filter. The name is allowed to have a wildcard '*' in it where a GUI type ("gui" for standard Java or "android" for Android) can be substituted.- Specified by:
getFilterUIName
in classFilter
- Returns:
- String name of GUI class for this filter
-
setPrefPrefix
Change the persisted parameter prefix for this Filter instance. CumulativeBooleanOrFilters don't persist anything themselves, but they pass the change down to their child Filters.- Specified by:
setPrefPrefix
in interfacePersistingFilter
- Parameters:
prefPrefix
- prefix String (can be empty string "") or null to indicate this filter should not be persisted
-
getFilterNum
public int getFilterNum()Get sequence number for this filter instance.- Returns:
- the number assigned to this filter instance
-
acceptAX25Frame
Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).- Specified by:
acceptAX25Frame
in classFilter
- Parameters:
frame
- the timestamped AX25 frame record to analyze- Returns:
- RESULT_xxx constant indicating if message information should be displayed
-
acceptMessage
Indicate whether the specified message should be displayed or used to determine if a station should be displayed (if recursively called from acceptStation()).- Specified by:
acceptMessage
in classFilter
- Parameters:
msg
- the APRS Message record to analyze- Returns:
- Result indicating if message information should be displayed
-
acceptStation
Indicate whether the specified station should be displayed. The acceptMessage() and acceptAX25Frame() methods may be called to assist in the determination.- Specified by:
acceptStation
in classFilter
- Parameters:
ss
- StationState record to analyze- Returns:
- RESULT_xxx constant indicating if station information should be displayed
-
addFilterChangeListener
Register a listener for changes of this Filter.- Specified by:
addFilterChangeListener
in classFilter
- Parameters:
l
- FilterChangeListener to register
-
removeFilterChangeListener
Deregisters a listener. The listener will no longer be informed of changes to this filter.- Specified by:
removeFilterChangeListener
in classFilter
- Parameters:
l
- FilterChangeListener to deregister
-
setToPassall
public void setToPassall()Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.- Specified by:
setToPassall
in classFilter
-
canRejectSome
public boolean canRejectSome()Specifies that this filter may reject some stations, messages, and/or frames. Used to tell combining filters whether a sub-filter is in passall mode and therefore doesn't need to be checked for every call to the combiner, thereby saving CPU time when filtering when most filters are in passall mode.- Overrides:
canRejectSome
in classFilter
- Returns:
- boolean true if this filter is currently capable of rejecting something
- See Also:
-
filterSettingsChanged
DO NOT CALL. Listener to forward a filter change from a contained sub-Filter to the listeners on this Filter.- Specified by:
filterSettingsChanged
in interfaceFilterChangeListener
- Parameters:
changedFilter
- the sub-Filter originally reporting the filter changechangedByUser
- boolean true if change was manually made by user, false if change was made automatically by dynamic filter logic
-
clone
Creates and returns a copy of this object.- Overrides:
clone
in classFilter
- Returns:
- a clone of this instance.
- Throws:
CloneNotSupportedException
- if the object's class does not support theCloneable
interface. Subclasses that override theclone
method can also throw this exception to indicate that an instance cannot be cloned.- See Also:
-
startRealTimeTracking
public void startRealTimeTracking()Start automatically collecting real-time data as YAAC learns about them. Note that CumulativeBooleanOrFilter itself does not collect data, but it handles recursion to child filters that do.- Specified by:
startRealTimeTracking
in interfaceMonitoringFilter
-
stopRealTimeTracking
public void stopRealTimeTracking()Stop automatically collecting new real-time data and keep the current cache stable. Note that CumulativeBooleanOrFilter itself does not collect data, but it handles recursion to child filters that do.- Specified by:
stopRealTimeTracking
in interfaceMonitoringFilter
-
close
Closes this filter and releases any system resources associated with it. If the filter is already closed then invoking this method has no effect.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if an I/O error occurs
-