Class TLcdAIXMTACANHandler

java.lang.Object
com.luciad.format.aixm.decoder.TLcdAIXMTACANHandler
All Implemented Interfaces:
ILcdAIXMHandler

public class TLcdAIXMTACANHandler extends Object
This implementation of ILcdAIXMHandler deals with TACAN elements. Decoded models have as model descriptor an instance of TLcdAIXMTACANModelDescriptor.

The objects in decoded models are based on the AIS domain objects available in com.luciad.ais.model, which all implement ILcdDataObject. This interface provides a generic and format-independent way of accessing the type and properties (features) of a domain object.

For this handler, the type of the decoded objects is TLcdAIXMDataTypes.TACAN, which can also be retrieved through ILcdDataObject.getDataType(). The available properties of the objects are defined in TLcdAIXMTACANDataProperties. The values for these properties can be retrieved through ILcdDataObject.getValue(com.luciad.datamodel.TLcdDataProperty).

Next to ILcdDataObject, the objects in decoded models also implement ILcdFeatured, the former interface to access the properties (features) of a domain object. This is still fully supported, and explained in the following comments.

The setTACANFeatureNamesToBeDecoded method allows the user to specify which AIXM features are decoded into the featured model objects.

If no feature names to be decoded are specified, all features will be decoded.

The following fields (taken from the AIXM specification) are supported by the decoder. The list indicates into which feature or attribute the fields are decoded. It also indicates from which AIXM version on they are available.

  • Version 3.3 :
    • Identifier: ILcdAIXMTACANFeature.IDENTIFIER
    • Name: ILcdAIXMTACANFeature.NAME
    • NAVAID Class: ILcdAIXMTACANFeature.NAVAID_CLASS
    • Type: ILcdAIXMTACANFeature.TYPE
    • Beginning date: ILcdAIXMTACANFeature.DATE_FROM
    • End date: ILcdAIXMTACANFeature.DATE_TILL
    • Artificial unique identifier: ILcdAIXMTACANFeature.MID
    • Channel: ILcdAIXMTACANFeature.CHANNEL
    • Emission: ILcdAIXMTACANFeature.EMISSION
    • Organization name: ILcdAIXMTACANFeature.ORGANISATION
    • Magnetic variation: ILcdAIXMTACANFeature.MAGNETIC_VARIATION, ILcdAIXMTACANFeature.MAGNETIC_VARIATION_DATE
    • Elevation: ILcdAIXMTACANFeature.ELEVATION
    • Elevation accuracy: ILcdAIXMTACANFeature.ELEVATION_ACCURACY
    • Geographical accuracy: ILcdAIXMTACANFeature.GEO_ACCURACY, ILcdAIXMTACANFeature.GEO_ACCURACY_UNIT
    • Geoid undulation: ILcdAIXMTACANFeature.GEOID_UNDULATION
    • Vertical datum: ILcdAIXMTACANFeature.VERTICAL_DATUM
    • Vertical distance unit: ILcdAIXMTACANFeature.VERTICAL_DISTANCE_UNIT
    • Original latitude: ILcdAIXMTACANFeature.ORIGINAL_LATITUDE
    • Original longitude: ILcdAIXMTACANFeature.ORIGINAL_LONGITUDE
    • Original horizontal datum: ILcdAIXMTACANFeature.ORIGINAL_DATUM
    • Free text remarks: ILcdAIXMTACANFeature.REMARK
  • Version 4.0 :
    • Station declination: ILcdAIXMTACANFeature.STATION_DECLINATION
  • Version 4.5 : no extra fields added.

AIXM handlers rely on a specific set of key features that uniquely define an object. This set of features must always be included in the set of features to be decoded. For TACANs the key features are:

The following features are currently not supported:

  • TACAN Timetable
  • Features of the responsible organization or authority (except for the name)
  • TACAN Limitation
See Also:
  • Constructor Details

    • TLcdAIXMTACANHandler

      public TLcdAIXMTACANHandler()
      Creates a new TLcdAIXMTACANHandler instance.
  • Method Details

    • startDocument

      public void startDocument()
      Description copied from interface: ILcdAIXMHandler
      Receive notification of the beginning of an AIXM document.
      Specified by:
      startDocument in interface ILcdAIXMHandler
      See Also:
    • startElement

      public void startElement(String aElementName, ILcdAssocSet aAttributes, Stack aElementStack)
      Description copied from interface: ILcdAIXMHandler
      Receive notification of the beginning of an AIXM element.

      This method will be invoked at the beginning of every element in the AIXM document; there will be a corresponding endElement event for every startElement event (even when the element is empty). All of the element's content will be reported, in order, before the corresponding endElement event.

      The attributes attached to the element are available through an immutable ILcdAssocSet. Only the following methods of the interface are available:

      • public int size()
      • public boolean hasValue(Object aObject)
      • public Object getValue(Object aKey)
      • public Enumeration keys()
      • public Enumeration elements()
      An UnsupportedOperationException will be thrown if one of the other methods are called.
      Parameters:
      aElementName - The name of the element.
      aAttributes - The attributes attached to the element.
      aElementStack - A stack containing the element names of all the parents of the current element and itself.
      See Also:
    • endElement

      public void endElement(String aElementName, String aContent, Stack aElementStack)
      Description copied from interface: ILcdAIXMHandler
      Receive notification of the end of an AIXM element.

      This method will be invoked at the end of every element in the AIXM document; there will be a corresponding startElement event for every endElement event (even when the element is empty).

      Parameters:
      aElementName - The name of the element.
      aContent - The contents of the current element, or the empty string if the element was empty.
      aElementStack - A stack containing the element names of all the parents of the current element and itself.
    • getTACANFeatureNamesToBeDecoded

      public String[] getTACANFeatureNamesToBeDecoded()
      Returns the AIXM TACAN features which are decoded into the featured model objects.
      Returns:
      the AIXM TACAN features which are decoded into the featured model objects.
    • setTACANFeatureNamesToBeDecoded

      public void setTACANFeatureNamesToBeDecoded(String[] aTACANFeatureNamesToBeDecoded)
      Sets the AIXM TACAN features which need to be decoded into the featured model objects. By default, all available features are decoded.

      Note that AIXM handlers rely on a specific set of key features that uniquely define an object. This set of features must always be included in the set of features to be decoded. See the class documentation for the key feature list of this handler.

      Parameters:
      aTACANFeatureNamesToBeDecoded - the AIXM TACAN features which need to be decoded into the featured model objects.
    • newModel

      public void newModel(String aSource, ILcdAIXMErrorMessageSupport aErrorMessage)
      Description copied from interface: ILcdAIXMHandler
      Resets the internal state of this handler so that it is ready to handle a new data source from scratch.

      The user should call this method before using this handler in a decoding process of an AIXM snapshot.

      Specified by:
      newModel in interface ILcdAIXMHandler
      Parameters:
      aSource - the name of the source that will be handled
      aErrorMessage - for each irregular situation during the decoding, a report should be added to this object
    • setModelToUpdate

      public boolean setModelToUpdate(String aSource, ILcdModel aModel, ILcdAIXMErrorMessageSupport aErrorMessage)
      Description copied from interface: ILcdAIXMHandler
      Sets the internal state of this handler so that it is ready to update the given model with a new data source.

      The user should call this method before using this handler in a decoding process of an AIXM update.

      Specified by:
      setModelToUpdate in interface ILcdAIXMHandler
      Parameters:
      aSource - the name of the source that will be handled
      aModel - the model that must be updated
      aErrorMessage - for each irregular situation during the decoding, a report should be added to this object
    • endDocument

      public void endDocument()
      Description copied from interface: ILcdAIXMHandler
      Receive notification of the end of an AIXM document.
      Specified by:
      endDocument in interface ILcdAIXMHandler
      See Also:
    • setDomainFactory

      @Deprecated public void setDomainFactory(ALcdAISObjectFactory aDomainFactory)
      Deprecated.
      Description copied from interface: ILcdAIXMHandler
      Specifies the domainFactory to be used to create domain objects.

      The given domainFactory must not be null. Note that if a data object factory is set, the domain factory will not be used.

      Specified by:
      setDomainFactory in interface ILcdAIXMHandler
      Parameters:
      aDomainFactory - the domainFactory to be used to create domain objects
      See Also:
    • getDomainFactory

      @Deprecated public ALcdAISObjectFactory getDomainFactory()
      Deprecated.
      Description copied from interface: ILcdAIXMHandler
      Returns the domainFactory to be used to create domain objects.
      Specified by:
      getDomainFactory in interface ILcdAIXMHandler
      Returns:
      the domainFactory to be used to create domain objects
      See Also:
    • setDataObjectFactory

      public void setDataObjectFactory(TLcdAISDataObjectFactory aFactory)
      Description copied from interface: ILcdAIXMHandler
      Specifies the factory to be used to create domain objects.

      The given factory must not be null.

      Specified by:
      setDataObjectFactory in interface ILcdAIXMHandler
      Parameters:
      aFactory - the domainFactory to be used to create domain objects
      See Also:
    • getDataObjectFactory

      public TLcdAISDataObjectFactory getDataObjectFactory()
      Description copied from interface: ILcdAIXMHandler
      Returns the factory to be used to create domain objects.
      Specified by:
      getDataObjectFactory in interface ILcdAIXMHandler
      Returns:
      the factory to be used to create domain objects
      See Also:
    • updateModel

      public void updateModel()
      Description copied from interface: ILcdAIXMHandler
      Applies the updates that are read to the model.

      Please remark that this handler is only capable of updating the model if the user calls

      Specified by:
      updateModel in interface ILcdAIXMHandler
    • getModel

      Description copied from interface: ILcdAIXMHandler
      Returns the model build by this handler.

      Please remark that this handler is only capable of creating the expected model if the user calls

      • the newModel method to reset the internal state before he or she starts the decoding process,
      • the startDocument method before the first call of the startElement method,
      • the startElement method each time the beginning of an element in the data source is found,
      • the endElement method each time the end of an element in the data source is found,
      • the endDocument method after the last call of the endElement method.
      Specified by:
      getModel in interface ILcdAIXMHandler
      Returns:
      the model build by this handler
    • setBoundsToFilterOn

      public void setBoundsToFilterOn(ILcdBounds aBoundsToFilterOn)
      Description copied from interface: ILcdAIXMHandler
      Specifies a bounds that will be used as a filter on the model created by this handler.

      If this bounds is null, all objects found in the data source will be inserted into the model. If this bounds is not null, only the objects whose bounds interact with the specified bounds will be inserted into the model.

      Specified by:
      setBoundsToFilterOn in interface ILcdAIXMHandler
      Parameters:
      aBoundsToFilterOn - the bounds to be used as a filter
    • getBoundsToFilterOn

      public ILcdBounds getBoundsToFilterOn()
      Description copied from interface: ILcdAIXMHandler
      Returns the bounds that will be used as a filter on the model created by this handler.
      Specified by:
      getBoundsToFilterOn in interface ILcdAIXMHandler
      Returns:
      the bounds that will be used as a filter on the model created by this handler
      See Also:
    • setInitialBounds

      public void setInitialBounds(ILcdBounds aInitialBounds)
      Description copied from interface: ILcdAIXMHandler
      Specifies a bounds to be used as initial bounds for the model created by this handler.

      This bounds should be large enough to enclose (most of) the model objects. This option is used to avoid to many expansions of the model bounds.

      This parameter may be null.

      Note: This bounds is not a filter! If a model objects bounds does not interact with aInitialBounds, aInitialBounds will be enlarged to enclose the object.

      Specified by:
      setInitialBounds in interface ILcdAIXMHandler
      Parameters:
      aInitialBounds - the initial bounds for the model created by this handler
    • getInitialBounds

      public ILcdBounds getInitialBounds()
      Description copied from interface: ILcdAIXMHandler
      Returns the bounds to be used as initial bounds for the model created by this handler.
      Specified by:
      getInitialBounds in interface ILcdAIXMHandler
      Returns:
      bounds to be used as initial bounds for the model created by this handler
      See Also:
    • setAIXMModelFilter

      public void setAIXMModelFilter(ILcdAIXMModelFilter aFilter)
      Description copied from interface: ILcdAIXMHandler
      Specifies a filter to be used while creating the model. Only model objects that pass through the filter will be in the resulting model.
      Specified by:
      setAIXMModelFilter in interface ILcdAIXMHandler
      Parameters:
      aFilter - an ILcdAIXMModelFilter to filter the model objects
    • getAIXMModelFilter

      public ILcdAIXMModelFilter getAIXMModelFilter()
      Returns the currently registered filter.
      Returns:
      the currently registered filter (can be null).
    • getElementsToBeHandled

      public String[] getElementsToBeHandled()
      Description copied from interface: ILcdAIXMHandler
      Returns the elements for which the methods startElement and endElement should be invoked.

      These elements must be a direct child of one of the following AIXM elements:

      • AIXM-Snapshot
      • Changed
      • New
      • Withdrawn
      See the AIXM XML Schema documents for a list of possible childs.
      Specified by:
      getElementsToBeHandled in interface ILcdAIXMHandler
      Returns:
      A String array containing the elements for which the methods startElement and endElement should be invoked.
    • isTraceOn

      public boolean isTraceOn()
      Deprecated.
      This method has been deprecated. It is recommended to use the standard Java logging framework directly.
      Returns true if tracing is enabled for this class.
      Returns:
      true if tracing is enabled for this class, false otherwise.
    • setClassTraceOn

      public static void setClassTraceOn(boolean aClassTraceOn)
      Deprecated.
      This method has been deprecated. It is recommended to use the standard Java logging framework directly.
      Enables tracing for all instances of this class. If the argument is true then all log messages are recorded, otherwise only the informative, warning and error messages are recorded.
      Parameters:
      aClassTraceOn - if true then all log messages are recorded, otherwise only the informative, warning and error messages are recorded.
    • setTraceOn

      public void setTraceOn(boolean aTraceOn)
      Deprecated.
      This method has been deprecated. It is recommended to use the standard Java logging framework directly.
      Enables tracing for this class instance. Calling this method with either true or false as argument automatically turns off tracing for all other class instances for which setTraceOn has not been called. If the argument is false then only the informative, warning and error log messages are recorded.
      Parameters:
      aTraceOn - if true then all log messages are recorded for this instance. If false, then only the informative, warning and error log messages are recorded.