Class TLcdAIXMILSHandler

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

public class TLcdAIXMILSHandler extends Object
This implementation of ILcdAIXMHandler deals with ILS elements. Decoded models have as model descriptor an instance of TLcdAIXMILSModelDescriptor.

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.ILS, which can also be retrieved through ILcdDataObject.getDataType(). The available properties of the objects are defined in TLcdAIXMILSDataProperties. 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 methods setILSFeatureNamesToBeDecoded, setGlidePathFeatureNamesToBeDecoded and setLocalizerFeatureNamesToBeDecoded allow 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.

General ILS features:

  • Version 3.3 :
    • Airport identifier: ILcdAIXMILSFeature.AIRPORT_ID
    • Runway designator: ILcdAIXMILSFeature.RUNWAY_DESIGNATOR
    • Runway direction designator: ILcdAIXMILSFeature.RUNWAY_DIRECTION_DESIGNATOR
    • FATO designator: ILcdAIXMILSFeature.FATO_DESIGNATOR
    • FATO direction designator: ILcdAIXMILSFeature.FATO_DIRECTION_DESIGNATOR
    • Category: ILcdAIXMILSFeature.CATEGORY
    • Beginning date: ILcdAIXMILSFeature.DATE_FROM
    • End date: ILcdAIXMILSFeature.DATE_TILL
    • Artificial unique identifier: ILcdAIXMILSFeature.MID
    • Free text remarks: ILcdAIXMILSFeature.REMARK
  • Version 4.0, 4.5 : no extra fields added.

Localizer features:

  • Version 3.3 :
    • Identifier: ILcdAIXMLocalizerFeature.IDENTIFIER
    • Frequency: ILcdAIXMLocalizerFeature.FREQUENCY, ILcdAIXMLocalizerFeature.FREQUENCY_UNIT
    • Emission: ILcdAIXMLocalizerFeature.EMISSION
    • Magnetic bearing: ILcdAIXMLocalizerFeature.MAGNETIC_BEARING
    • True bearing: ILcdAIXMLocalizerFeature.TRUE_BEARING
    • Width: ILcdAIXMLocalizerFeature.WIDTH
    • Usability in the back course sector bearing: ILcdAIXMLocalizerFeature.USE_BACK
    • Geographical accuracy: ILcdAIXMLocalizerFeature.GEO_ACCURACY, ILcdAIXMLocalizerFeature.GEO_ACCURACY_UNIT
    • Elevation: ILcdAIXMLocalizerFeature.ELEVATION
    • Elevation accuracy: ILcdAIXMLocalizerFeature.ELEVATION_ACCURACY
    • Geoid undulation: ILcdAIXMLocalizerFeature.GEOID_UNDULATION
    • Vertical distance unit: ILcdAIXMLocalizerFeature.VERTICAL_DISTANCE_UNIT
    • Vertical datum: ILcdAIXMLocalizerFeature.VERTICAL_DATUM
    • Free text remarks: ILcdAIXMLocalizerFeature.REMARK
  • Version 4.0 : no extra fields added.
  • Version 4.5 :
    • Magnetic variation: ILcdAIXMLocalizerFeature.MAGNETIC_VARIATION, ILcdAIXMLocalizerFeature.MAGNETIC_VARIATION_DATE

Glide path features:

  • Version 3.3 :
    • Frequency: ILcdAIXMGlidePathFeature.FREQUENCY, ILcdAIXMGlidePathFeature.FREQUENCY_UNIT
    • Emission: ILcdAIXMGlidePathFeature.EMISSION
    • Glide path angle: ILcdAIXMGlidePathFeature.GLIDE_PATH_ANGLE
    • Reference datum height: ILcdAIXMGlidePathFeature.REFERENCE_DATUM_HEIGHT, ILcdAIXMGlidePathFeature.REFERENCE_DATUM_HEIGHT_UNIT
    • Geographical accuracy: ILcdAIXMGlidePathFeature.GEO_ACCURACY, ILcdAIXMGlidePathFeature.GEO_ACCURACY_UNIT
    • Elevation: ILcdAIXMGlidePathFeature.ELEVATION
    • Elevation accuracy: ILcdAIXMGlidePathFeature.ELEVATION_ACCURACY
    • Geoid undulation: ILcdAIXMGlidePathFeature.GEOID_UNDULATION
    • Vertical distance unit: ILcdAIXMGlidePathFeature.VERTICAL_DISTANCE_UNIT
    • Vertical datum: ILcdAIXMGlidePathFeature.VERTICAL_DATUM
    • Free text remarks: ILcdAIXMGlidePathFeature.REMARK
  • Version 4.0, 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 ILSs the key features are:

The following features are currently not supported:

  • Localizer Timetable
  • Glide path Timetable
See Also:
  • Constructor Details

    • TLcdAIXMILSHandler

      public TLcdAIXMILSHandler()
      Creates a new TLcdAIXMILSHandler 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.
    • getILSFeatureNamesToBeDecoded

      public String[] getILSFeatureNamesToBeDecoded()
      Returns the AIXM ILS features which are decoded into the featured model objects.
      Returns:
      the AIXM ILS features which are decoded into the featured model objects.
    • setILSFeatureNamesToBeDecoded

      public void setILSFeatureNamesToBeDecoded(String[] aILSFeatureNamesToBeDecoded)
      Sets the AIXM ILS 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:
      aILSFeatureNamesToBeDecoded - the AIXM ILS features which need to be decoded into the featured model objects.
    • getLocalizerFeatureNamesToBeDecoded

      public String[] getLocalizerFeatureNamesToBeDecoded()
      Returns the AIXM localizer features which are decoded into the featured model objects.
      Returns:
      the AIXM localizer features which are decoded into the featured model objects.
    • setLocalizerFeatureNamesToBeDecoded

      public void setLocalizerFeatureNamesToBeDecoded(String[] aLocalizerFeatureNamesToBeDecoded)
      Sets the AIXM localizer 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:
      aLocalizerFeatureNamesToBeDecoded - the AIXM localizer features which need to be decoded into the featured model objects.
    • getGlidePathFeatureNamesToBeDecoded

      public String[] getGlidePathFeatureNamesToBeDecoded()
      Returns the AIXM glide path features which are decoded into the featured model objects.
      Returns:
      the AIXM glide path features which are decoded into the featured model objects.
    • setGlidePathFeatureNamesToBeDecoded

      public void setGlidePathFeatureNamesToBeDecoded(String[] aGlidePathFeatureNamesToBeDecoded)
      Sets the AIXM glide path 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:
      aGlidePathFeatureNamesToBeDecoded - the AIXM glide path 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.