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:
  • Constructor Details

    • CumulativeBooleanOrFilter

      public CumulativeBooleanOrFilter()
  • Method Details

    • addFilter

      public void addFilter(Filter filter)
      Add a sub-Filter to this CumulativeBooleanOrFilter.
      Specified by:
      addFilter in interface CumulativeFilter
      Parameters:
      filter - Filter to be added to this filter
    • removeFilter

      public void removeFilter(Filter filter)
      Disconnect the specified Filter from this CumulativeBooleanOrFilter.
      Specified by:
      removeFilter in interface CumulativeFilter
      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 interface CumulativeFilter
      Returns:
      int filter count
    • getFilter

      public Filter getFilter(int index) throws IndexOutOfBoundsException
      Get a reference to the Nth Filter installed in this CumulativeBooleanOrFilter.
      Specified by:
      getFilter in interface CumulativeFilter
      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

      public Iterator<Filter> iterator()
      Returns an iterator over the child Filters of this CumulativeBooleanOrFilter.
      Specified by:
      iterator in interface CumulativeFilter
      Specified by:
      iterator in interface Iterable<Filter>
      Returns:
      an Iterator.
    • getFilterTypeTagName

      public String 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 class Filter
      Returns:
      String to use in looking up form label for this filter's editor
    • getFilterHelpTagName

      public String getFilterHelpTagName()
      Report a tag name used to look up JavaHelp for a filter editor.
      Specified by:
      getFilterHelpTagName in class Filter
      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

      public void setFilterTypeTagName(String tagName)
      Set the tag name to be used by this particular instance of CumulativeBooleanOrFilter.
      Parameters:
      tagName - String tag name to return
      See Also:
    • getFilterUIName

      public String 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 class Filter
      Returns:
      String name of GUI class for this filter
    • setPrefPrefix

      public void setPrefPrefix(String prefPrefix)
      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 interface PersistingFilter
      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

      public int 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()).
      Specified by:
      acceptAX25Frame in class Filter
      Parameters:
      frame - the timestamped AX25 frame record to analyze
      Returns:
      RESULT_xxx constant indicating if message information should be displayed
    • acceptMessage

      public 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()).
      Specified by:
      acceptMessage in class Filter
      Parameters:
      msg - the APRS Message record to analyze
      Returns:
      Result indicating if message information should be displayed
    • acceptStation

      public int acceptStation(StationState ss)
      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 class Filter
      Parameters:
      ss - StationState record to analyze
      Returns:
      RESULT_xxx constant indicating if station information should be displayed
    • addFilterChangeListener

      public void addFilterChangeListener(FilterChangeListener l)
      Register a listener for changes of this Filter.
      Specified by:
      addFilterChangeListener in class Filter
      Parameters:
      l - FilterChangeListener to register
    • removeFilterChangeListener

      public void removeFilterChangeListener(FilterChangeListener l)
      Deregisters a listener. The listener will no longer be informed of changes to this filter.
      Specified by:
      removeFilterChangeListener in class Filter
      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 class Filter
    • 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 class Filter
      Returns:
      boolean true if this filter is currently capable of rejecting something
      See Also:
    • filterSettingsChanged

      public void filterSettingsChanged(Filter changedFilter, boolean changedByUser)
      DO NOT CALL. Listener to forward a filter change from a contained sub-Filter to the listeners on this Filter.
      Specified by:
      filterSettingsChanged in interface FilterChangeListener
      Parameters:
      changedFilter - the sub-Filter originally reporting the filter change
      changedByUser - boolean true if change was manually made by user, false if change was made automatically by dynamic filter logic
    • clone

      public Object clone() throws CloneNotSupportedException
      Creates and returns a copy of this object.
      Overrides:
      clone in class Filter
      Returns:
      a clone of this instance.
      Throws:
      CloneNotSupportedException - if the object's class does not support the Cloneable interface. Subclasses that override the clone 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 interface MonitoringFilter
    • 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 interface MonitoringFilter
    • close

      public void close() throws IOException
      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 interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if an I/O error occurs