Class MessageContentFilter

java.lang.Object
org.ka2ddo.yaac.filter.Filter
org.ka2ddo.yaac.filter.MessageContentFilter
All Implemented Interfaces:
Cloneable

public class MessageContentFilter extends Filter implements Cloneable
Filter messages based on their containing (or not containing) specific elements in their messages, or specific strings in their free-text comments.
Author:
Andrew Pavlin, KA2DDO
  • 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

    Constructors
    Constructor
    Description
    Create a Filter that will select based on particular types of information in packets.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    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 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
    Register a listener for changes of this Filter.
    boolean
    Specifies that this filter may reject some stations, messages, and/or frames.
    Creates and returns a copy of this object.
    Get an Iterator through all the WeatherEnum and DataExtensionEnum values supported by this filter.
    Get the text fragment used for comment text matching.
    Get the digipeater callsign-SSID used for digipeater matching.
    Report a tag name used to look up JavaHelp for a filter editor.
    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.
    float
    Report the current position latitude ambiguity threshold being used for ambiguity testing.
    boolean
    Report whether the filter is looking for position more precise or less precise than the threshold.
    boolean
    Report whether the entire MessageContentFilter is enabled to check for specific message contents.
    boolean
    Report whether filtering is enabled for messages containing the specified message token as identified by a WeatherEnum or DataExtensionEnum.
    boolean
    Report whether this filter will pass only packets matching the enabled filter elements, or those not matching any of the enabled filter elements.
    void
    Deregisters a listener.
    void
    setAmbiguityLtLimit(boolean ambiguityLtLimit)
    Specify whether the filter is looking for position more precise or less precise than the threshold.
    void
    setCommentText(String commentText)
    Set the text fragment to use for free-text comment matching.
    void
    setDigipeater(String digipeater)
    Set the digipeater callsign-SSID used for digipeater matching.
    void
    setEnabled(boolean enabled)
    Specify whether the entire MessageContentFilter is enabled to check for specific message contents.
    void
    setEnabled(Enum e, boolean enabled)
    Specify whether filtering is enabled for messages containing the specified message token as identified by a WeatherEnum or DataExtensionEnum.
    void
    setLatAmbiguity(float fLatAmbiguity)
    Specify the current position latitude ambiguity threshold being used for ambiguity testing.
    void
    setNotMatch(boolean notMatch)
    Specify whether this filter will pass only packets matching the enabled filter elements, or those not matching any of the enabled filter elements.
    void
    Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.
    Returns a string representation of the object.

    Methods inherited from class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • MessageContentFilter

      public MessageContentFilter()
      Create a Filter that will select based on particular types of information in packets.
  • Method Details

    • 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
    • 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:
      String name (as defined in HelpMap.jhm) for this filter's online help, or null if there is no filter specific help
    • 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
    • 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
    • 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_xxx constant indicating if message 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:
    • 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:
    • getCommentText

      public String getCommentText()
      Get the text fragment used for comment text matching.
      Returns:
      matching text fragment
    • setCommentText

      public void setCommentText(String commentText)
      Set the text fragment to use for free-text comment matching. Null or an empty string specifies no comment text matching.
      Parameters:
      commentText - String of text fragment to search for in free-text comments
    • getDigipeater

      public String getDigipeater()
      Get the digipeater callsign-SSID used for digipeater matching.
      Returns:
      matching callsign
    • setDigipeater

      public void setDigipeater(String digipeater)
      Set the digipeater callsign-SSID used for digipeater matching.
      Parameters:
      digipeater - matching callsign String
    • isEnabled

      public boolean isEnabled(Enum e) throws IllegalArgumentException
      Report whether filtering is enabled for messages containing the specified message token as identified by a WeatherEnum or DataExtensionEnum.
      Parameters:
      e - WeatherEnum or DataExtensionEnum to report on
      Returns:
      boolean true if filter will test for and match only on messages containing the specified message parameter
      Throws:
      IllegalArgumentException - if not a supported Enum instance
    • setEnabled

      public void setEnabled(Enum e, boolean enabled)
      Specify whether filtering is enabled for messages containing the specified message token as identified by a WeatherEnum or DataExtensionEnum.
      Parameters:
      e - WeatherEnum or DataExtensionEnum to report on
      enabled - boolean true if filter will test for and match only on messages containing the specified message parameter
      Throws:
      IllegalArgumentException - if not a supported Enum instance
    • isEnabled

      public boolean isEnabled()
      Report whether the entire MessageContentFilter is enabled to check for specific message contents.
      Returns:
      boolean true if filter is enabled
    • setEnabled

      public void setEnabled(boolean enabled)
      Specify whether the entire MessageContentFilter is enabled to check for specific message contents.
      Parameters:
      enabled - boolean true if filter is enabled
    • isNotMatch

      public boolean isNotMatch()
      Report whether this filter will pass only packets matching the enabled filter elements, or those not matching any of the enabled filter elements.
      Returns:
      boolean true if only non-matches will be passed, false if only complete matches will be passed
    • setNotMatch

      public void setNotMatch(boolean notMatch)
      Specify whether this filter will pass only packets matching the enabled filter elements, or those not matching any of the enabled filter elements.
      Parameters:
      notMatch - boolean true if only non-matches will be passed, false if only complete matches will be passed
    • enumIterator

      public Iterator<Enum> enumIterator()
      Get an Iterator through all the WeatherEnum and DataExtensionEnum values supported by this filter.
      Returns:
      Iterator of Enum values
    • getLatAmbiguity

      public float getLatAmbiguity()
      Report the current position latitude ambiguity threshold being used for ambiguity testing.
      Returns:
      position ambiguity threshold in fractional degrees
    • setLatAmbiguity

      public void setLatAmbiguity(float fLatAmbiguity) throws IllegalArgumentException
      Specify the current position latitude ambiguity threshold being used for ambiguity testing.
      Parameters:
      fLatAmbiguity - position ambiguity threshold in fractional degrees
      Throws:
      IllegalArgumentException - if invalid (negative) ambiguity level
    • isAmbiguityLtLimit

      public boolean isAmbiguityLtLimit()
      Report whether the filter is looking for position more precise or less precise than the threshold.
      Returns:
      boolean true if filter matches more precise positions
    • setAmbiguityLtLimit

      public void setAmbiguityLtLimit(boolean ambiguityLtLimit)
      Specify whether the filter is looking for position more precise or less precise than the threshold.
      Parameters:
      ambiguityLtLimit - boolean true if filter matches more precise positions
    • toString

      public String toString()
      Returns a string representation of the object.
      Overrides:
      toString in class Object
      Returns:
      a string representation of the object.