org.ka2ddo.yaac.filter
Class RadiusFilter

java.lang.Object
  extended by org.ka2ddo.yaac.filter.Filter
      extended by org.ka2ddo.yaac.filter.RadiusFilter
All Implemented Interfaces:
java.lang.Cloneable, PersistingFilter

public class RadiusFilter
extends Filter
implements java.lang.Cloneable, PersistingFilter

This class implements a filter based on radius from a specified location (defaulting to the beacon location for the station).


Field Summary
 StationTracker TRACKER
           
 
Fields inherited from class org.ka2ddo.yaac.filter.Filter
RESULT_NEUTRAL, RESULT_PASS, RESULT_REJECT, RESULT_WEAK_PASS, RESULT_WEAK_REJECT
 
Constructor Summary
RadiusFilter(java.lang.String prefPrefix)
          Create a RadiusFilter instance with the specified prefix for the persistence parameter names.
 
Method Summary
 int acceptAX25Frame(AX25Frame frame)
          Indicate whether the specified message should be displayed.
 int acceptLatLon(double lat, double lon)
           
 int acceptMessage(AX25Message msg)
          Indicate whether the specified message should be displayed.
 int acceptStation(StationState ss)
          Indicate whether the specified station should be displayed.
 void addFilterChangeListener(FilterChangeListener l)
          Register a listener for changes of this Filter.
 java.lang.Object clone()
          Creates and returns a copy of this object.
protected  void fireFilterChange()
           
 java.lang.String getFilterHelpTagName()
          Report a tag name used to look up JavaHelp for a filter editor.
 java.lang.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.
 java.lang.String getFilterUIName()
          Get the class name of a dynamically loadable class for the the GUI for this filter.
 double getLatitude()
          Get the latitude center of this filter.
 double getLongitude()
          Get the longitude center of this filter.
 double getRadiusInKM()
          Get the current radius in kilometers.
 boolean isEnabled()
          Test if this RadiusFilter is enabled.
 boolean isUseHome()
          Test if this RadiusFilter will use the local station's current position or an explicitly configured position.
 void removeFilterChangeListener(FilterChangeListener l)
          Deregisters a listener.
 void setEnabled(boolean enabled)
          Specify whether this RadiusFilter is enabled.
 void setLatitude(double latitude)
          Programmatically change the center point latitude of this RadiusFilter.
 void setLongitude(double longitude)
          Programmatically change the center point longitude of this RadiusFilter.
 void setPrefPrefix(java.lang.String prefPrefix)
          Change the persisted parameter prefix for this instance of RadiusFilter.
 void setRadiusInKM(double radiusInKM)
          Set the current radius in kilometers.
 void setToPassall()
          Reset the filter to a configuration that would pass the maximum amount of messages, packets, and stations.
 void setUseHome(boolean useHome)
          Specify if this RadiusFilter will use the local station's current position or an explicitly configured position.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TRACKER

public final StationTracker TRACKER
Constructor Detail

RadiusFilter

public RadiusFilter(java.lang.String prefPrefix)
Create a RadiusFilter instance with the specified prefix for the persistence parameter names.

Parameters:
prefPrefix - prefix String (can be empty string "") or null to indicate this filter should not be persisted
Method Detail

getFilterUIName

public java.lang.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(java.lang.String prefPrefix)
Change the persisted parameter prefix for this instance of RadiusFilter.

Specified by:
setPrefPrefix in interface PersistingFilter
Parameters:
prefPrefix - prefix String (can be empty string "") or null to indicate this filter should not be persisted

getLatitude

public double getLatitude()
Get the latitude center of this filter.

Returns:
double latitude in fractional degrees North

setLatitude

public void setLatitude(double latitude)
Programmatically change the center point latitude of this RadiusFilter.

Parameters:
latitude - latitude in fractional degrees North

getLongitude

public double getLongitude()
Get the longitude center of this filter.

Returns:
double longitude in fractional degrees East

setLongitude

public void setLongitude(double longitude)
Programmatically change the center point longitude of this RadiusFilter.

Parameters:
longitude - longitude in fractional degrees East

isEnabled

public boolean isEnabled()
Test if this RadiusFilter is enabled.

Returns:
boolean true if filter will affect processed messages

setEnabled

public void setEnabled(boolean enabled)
Specify whether this RadiusFilter is enabled.

Parameters:
enabled - boolean true if filter should affect processed messages

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

isUseHome

public boolean isUseHome()
Test if this RadiusFilter will use the local station's current position or an explicitly configured position.

Returns:
boolean true if the Radius Filter will use the current GPS position (if available) or the configured fixed beacon position, false if the explicitly configured position will be used

setUseHome

public void setUseHome(boolean useHome)
Specify if this RadiusFilter will use the local station's current position or an explicitly configured position.

Parameters:
useHome - boolean true if the Radius Filter will use the current GPS position (if available) or the configured fixed beacon position, false if the explicitly configured position will be used

getRadiusInKM

public double getRadiusInKM()
Get the current radius in kilometers.

Returns:
radius in kilometers

setRadiusInKM

public void setRadiusInKM(double radiusInKM)
Set the current radius in kilometers.

Parameters:
radiusInKM - radius in kilometers

acceptAX25Frame

public int acceptAX25Frame(AX25Frame frame)
Indicate whether the specified message should be displayed.

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

acceptLatLon

public int acceptLatLon(double lat,
                        double lon)

acceptMessage

public int acceptMessage(AX25Message msg)
Indicate whether the specified message should be displayed.

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

acceptStation

public int acceptStation(StationState ss)
Indicate whether the specified station should be displayed.

Specified by:
acceptStation in class Filter
Parameters:
ss - StationState record to analyze
Returns:
RESULT_xxx constant indicating if station information should be displayed

getFilterTypeTagName

public java.lang.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 java.lang.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

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

fireFilterChange

protected void fireFilterChange()

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. The general intent is that, for any object x, the expression:
 x.clone() != x
will be true, and that the expression:
 x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
 x.clone().equals(x)
will be true, this is not an absolute requirement. By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass(). By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means copying any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified.

Overrides:
clone in class Filter
Returns:
a clone of this instance.
Throws:
java.lang.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:
Cloneable