Class TLcdASDIFlightPlanHistory

java.lang.Object
com.luciad.format.asdi.TLcdASDIFlightPlanHistory
All Implemented Interfaces:
ILcdDataObject, ILcdBounded, ILcdPointList, ILcdTimeBounded, ILcdCache, ILcdFeatured, Serializable

public class TLcdASDIFlightPlanHistory extends Object implements ILcdPointList, ILcdBounded, ILcdFeatured, ILcdCache, ILcdTimeBounded, ILcdDataObject
Models a flightplan that changes over time. For every time stamp it contains a pointlist representing the intended path and additional flight plan information at that time stamp. The points of the most recent intended path define the geometry of the flight plan history.

TLcdASDIFlightPlanHistory objects are based on a mix of FZ, AF, DZ, UZ, AZ, RZ and RT messages. Flight plan messages that belong together are added to the same TLcdASDIFlightPlanHistory .

The number of flight plans in the history can be retrieved using getFlightPlanCount().

The intended path at each timestamp can be retrieved using the getPointCount(int) and getPoint(int, int) methods, the additional information (the flight plan features) is accessible through the getFlightPlanFeatureCount() and getFlightPlanFeature(int, int) methods. An overview of all available flight plan features can be found in ILcdASDIFlightPlanFeatures.

TLcdASDIFlightPlanHistory objects are ILcdPointList, the methods getPointCount() and getPoint(int) allow to retrieve the points of the most recent intended path.

It is also possible to access the flight plan messages through getMessageValue(int, com.luciad.datamodel.TLcdDataProperty). The TLcdDataType of a message can be retrieved using the getMessageDataType(int) method . An overview of all flight plan message data types and properties can be found in TLcdASDIMessageDataTypes.

It is also possible to access the flight plan messages using the ILcdFeatured interface through the methods getMessageCount() , getMessageFeatureCount(int) and getMessageFeature(int, int). The type of a message can be retrieved using getMessageType(int) . An overview of all flight plan message features can be found in ILcdASDIFlightPlanMessageFeatures. These methods exist for backwards compatibility. It is recommended to use the new ILcdDataObject interface instead.

Models with TLcdASDIFlightPlanHistory objects have model descriptors that are TLcdASDIFlightPlanHistoryModelDescriptor. They describe the features (available through the ILcdFeatured interface) of the TLcdASDIFlightPlanHistory objects. Moreover, they have a method getFlightPlanFeaturedDescriptor() to retrieve the ILcdFeaturedDescriptor for the flight plan features and a method getMessageFeaturedDescriptor(String aMessageType) to retrieve the ILcdFeaturedDescriptor for the flight plan message features. The message type that must be provided as argument can be obtained from getMessageType(int aMessageIndex).

Note that the flight id that is available in all messages is used as id for the flight plan history objects, but this is not unique, so different flight plan history objects can have the same id at the same time.

See Also:
  • Method Details

    • getTime

      public long getTime(int aFlightPlanIndex)
      Returns the time that corresponds with flight plan aFlightPlanIndex. It is specified as a value in milliseconds since 1970, similar to Date.getTime().
      Parameters:
      aFlightPlanIndex - The index of the flight plan for which you want to know the time.
      Returns:
      The time that corresponds with flight plan aFlightPlanIndex.
    • getIndexForTimeStamp

      public int getIndexForTimeStamp(long aTimeStamp)
      Finds the index that corresponds to the given timestamp. More strictly speaking, it returns the index for which this condition holds: getTime( returned_index ) <= aTimeStamp < getTime( returned_index + 1 ). Note that if 'returned_index' equals getFlightPlanCount() -1 (largest possible index), getTime( returned_index ) == aTimeStamp.

      If the given time stamp is not in the interval [getBeginTime(), getEndTime()], -1 is returned.

      Parameters:
      aTimeStamp - The timestamp for which the index is requested.
      Returns:
      The index that corresponds with aTimeStamp. -1 is returned when the time stamp could not be located.
      See Also:
    • getTimeBounds

      public ILcdTimeBounds getTimeBounds()
      Description copied from interface: ILcdTimeBounded
      Returns the ILcdTimeBounds by which this object is bounded.
      Specified by:
      getTimeBounds in interface ILcdTimeBounded
      Returns:
      the ILcdTimeBounds by which this object is bounded.
    • getBeginTime

      public long getBeginTime()
      Returns the begin time of this TLcdASDIFlightPlanHistory. The begin time corresponds with the first time the associated flight plan is known to be active.

      The long value is defined as in Date.getTime().

      This method acts as a shortcut method call to retrieve the begin time of the time bounds from getTimeBounds().

      Returns:
      the begin date.
      See Also:
    • getEndTime

      public long getEndTime()
      Returns the end time of this TLcdASDIFlightPlanHistory. The end time corresponds with the last time the associated flight plan is known to be active.

      The long value is defined as in Date.getTime()

      This method acts as a shortcut method call to retrieve the begin time of the time bounds from getTimeBounds().

      Returns:
      the end date.
      See Also:
    • getMessageCount

      public int getMessageCount()
      Returns the number of messages in this flight plan history.

      Each time a message is added to this flight plan history a change is triggered and an extra flight plan is available in the history. The getMessageCount() and getFlightPlanCount() therefor always give the same result and can be used interchangeable.

      Returns:
      the number of messages in this flight plan history object.
      See Also:
    • getMessageFeatureCount

      public int getMessageFeatureCount(int aMessageIndex)
      Returns the number of features in the message with index aMessageIndex. See ILcdASDIFlightPlanMessageFeatures for more info on flight plan message features.

      Parameters:
      aMessageIndex - The index of the message for which you want to know the feature count. Must be smaller than getMessageCount().
      Returns:
      the number of features in the specified message.
      See Also:
    • getMessageFeature

      public Object getMessageFeature(int aMessageIndex, int aFeatureIndex)
      Retrieves the message feature indicated by aFeatureIndex for the message with index aMessageIndex.

      See ILcdASDIFlightPlanMessageFeatures for more info on flight plan message features.

      Parameters:
      aMessageIndex - The index of the message for which you want to know the feature value. Must be smaller than getMessageCount().
      aFeatureIndex - Determines what particular feature value you want to retrieve. Must be smaller than getMessageFeatureCount(int).
      Returns:
      The requested feature for the specified message.
    • getMessageValue

      public Object getMessageValue(int aMessageIndex, TLcdDataProperty aProperty)
      Retrieves the value of the TLcdDataProperty for a given message index.

      The data property must be of the correct data type. To find the data type, use the getMessageDataType(int) method. The properties for all data types returned by this method are described in TLcdASDIMessageDataTypes.
      Parameters:
      aMessageIndex - The index of the message for which you want to know the property value. Must be smaller than getMessageCount().
      aProperty - a TLcdDataProperty that was declared in the data type returned by getMessageDataType(int)
      Returns:
      The requested feature for the specified message, or null if the message index was out of bounds.
      Throws:
      IllegalArgumentException - when the given data property was not declared in the TLcdDataType of the message. To make sure this does not happen, use getMessageDataType(int) to obtain the data type of the message beforehand.
      See Also:
    • getMessageType

      public String getMessageType(int aMessageIndex)
      Returns a String indicating the type of the message with index aMessageIndex. Message types correspond with the abbreviations of the messages used in the specification : FZ, AF, DZ, UZ, AZ, RZ or RT. For instance, the message type of FZ messages is the String "FZ".
      Parameters:
      aMessageIndex - The index of the message for which you want to know the type. Must be smaller than getMessageCount().
      Returns:
      the String indicating the type of the specified message, null if not known.
    • getMessageDataType

      public TLcdDataType getMessageDataType(int aMessageIndex)
      Returns the TLcdDataTypeof the message at the given index. This data type will be supertyped by TLcdASDIMessageDataTypes.AbstractASDIMessageType, and will be one of the TLcdDataType instances found in the TLcdASDIMessageDataTypes class.
      Parameters:
      aMessageIndex - The index of the message for which you want to know the type. Must be smaller than getMessageCount().
      Returns:
      the TLcdDataType of the message, of null if not known.
      See Also:
    • getFlightPlanCount

      public int getFlightPlanCount()
      Returns the number of flight plans in this flight plan history.

      Each time a message is added to this flight plan history a change is triggered and an extra flight plan is available in the history. The getMessageCount() and getFlightPlanCount() therefor always give the same result and can be used interchangeable.

      Returns:
      the number of flight plans in this flight plan history.
    • getFlightPlanFeatureCount

      public int getFlightPlanFeatureCount()
      Returns the number of features in a flight plan.

      See ILcdASDIFlightPlanFeatures for more info on flight plan features.

      Returns:
      the number of features in a flight plan.
      See Also:
    • getFlightPlanFeature

      public Object getFlightPlanFeature(int aFlightPlanIndex, int aFeatureIndex)
      Retrieves the flight plan feature indicated by aFeatureIndex for the flight plan at index aFlightPlanIndex.

      See ILcdASDIFlightPlanFeatures for more info on flight plan features.

      Parameters:
      aFlightPlanIndex - The index of the flight plan for which you want to know the feature value. Must be smaller than getFlightPlanCount().
      aFeatureIndex - Determines what particular feature value you want to retrieve. Must be smaller than getFlightPlanFeatureCount().
      Returns:
      The requested feature for the flight plan at index aFlightPlanIndex.
    • getFlightPlanValue

      public Object getFlightPlanValue(int aFlightPlanIndex, TLcdDataProperty aProperty)
      Gets the value of a flight plan property related to this flight plan history. The properties of a track can be found in TLcdASDIFlightPlanDataTypes.

      Parameters:
      aFlightPlanIndex - The index of the flight plan for which you want to know the property value.
      aProperty - The property of which you want the value of. Property must be from TLcdASDIFlightPlanDataTypes
      Returns:
      The value of the property at the specified point; null when the index is invalid.
      Throws:
      IllegalArgumentException - when the given property is not declared in the flight plan TLcdDataType.
    • getFeatureCount

      public int getFeatureCount()
      Returns the number of features.

      See getFeature(int) for more info on flight plan history features.

      Specified by:
      getFeatureCount in interface ILcdFeatured
      Returns:
      the number of features.
    • getFeature

      public Object getFeature(int aFeatureIndex) throws IndexOutOfBoundsException
      Returns the feature Object at the given index.

      Only one feature is available : the id that links together all flight plans (and their messages) in a TLcdASDIFlightPlanHistory.

      Specified by:
      getFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - a valid feature index.
      Returns:
      the feature Object at the given index.
      Throws:
      IndexOutOfBoundsException - when an index is chosen greater than the result of getFeatureCount.
      See Also:
    • setFeature

      public void setFeature(int aFeatureIndex, Object aValue) throws IllegalArgumentException
      Sets the feature Object at the given index.

      See getFeature(int) for more info on flight plan history features.

      None of the features are editable, so calling this method always results in throwing an IllegalArgumentException.

      Specified by:
      setFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - a valid feature index.
      aValue - the new feature Object.
      Throws:
      IllegalArgumentException - if the feature can't be set.
      See Also:
    • canSetFeature

      public boolean canSetFeature(int aFeatureIndex)
      Checks whether the specified feature is editable.

      See getFeature(int) for more info on flight plan history features.

      None of the features are editable, so always returns false

      .
      Specified by:
      canSetFeature in interface ILcdFeatured
      Parameters:
      aFeatureIndex - a valid feature index.
      Returns:
      true if the feature can be set, false otherwise.
    • getPointCount

      public int getPointCount(int aFlightPlanIndex)
      Returns the number of points in the intended path of the flight plan at index aFlightPlanIndex.
      Parameters:
      aFlightPlanIndex - The index of the flight plan for which you want to know the intended path. Must be smaller than getFlightPlanCount().
      Returns:
      the number of points in the intended path of the flight plan at index aFlightPlanIndex.
      See Also:
    • getPoint

      public ILcdPoint getPoint(int aFlightPlanIndex, int aPointIndex) throws IndexOutOfBoundsException
      Retrieves the position indicated by aPointIndex in the intended path of the flight plan at index aFlightPlanIndex.
      Parameters:
      aFlightPlanIndex - The index of the flight plan for which you want to know the intended path position. Must be smaller than getFlightPlanCount().
      aPointIndex - Determines what particular point you want to retrieve. Must be smaller than getPointCount(int).
      Returns:
      The requested intended path position for the flight plan at index aFlightPlanIndex.
      Throws:
      IndexOutOfBoundsException - when the point index is greater than or equal to getPointCount
    • getPointCount

      public int getPointCount()
      Returns the number of points in the most recent intended path. The most recent intended path defines the geometry of the flight plan history. It corresponds with the intended path of the last flight plan, so with the points defined by getPointCount(getFlightPlanCount() - 1) and getPoint(getFlightPlanCount() - 1, aPointIndex) .
      Specified by:
      getPointCount in interface ILcdPointList
      Returns:
      the number of points in the most recent intended path.
      See Also:
    • getPoint

      public ILcdPoint getPoint(int aPointIndex) throws IndexOutOfBoundsException
      Retrieves the position indicated by aPointIndex in the most recent intended path. The most recent intended path defines the geometry of the flight plan history. It corresponds with the intended path of the last flight plan, so with the points defined by getPointCount(getFlightPlanCount() - 1) and getPoint(getFlightPlanCount() - 1, aPointIndex) .
      Specified by:
      getPoint in interface ILcdPointList
      Parameters:
      aPointIndex - Determines what particular point you want to retrieve. Must be smaller than getPointCount().
      Returns:
      The requested position in the most recent intended path.
      Throws:
      IndexOutOfBoundsException - if the given index is out of bounds.
    • getBounds

      public ILcdBounds getBounds()
      Returns the ILcdBounds by which the geometry of this ILcdBounded object is bounded.

      If the geometry does not allow retrieving valid bounds (for example a polyline with 0 points) the return value is unspecified. It is highly recommended to return an undefined bounds. You can create undefined bounds using the default constructors of TLcdLonLatBounds or TLcdXYBounds.

      The bounds include the points of the most recent intended path (accessable through getPointCount() and getPoint(int)).
      Specified by:
      getBounds in interface ILcdBounded
      Returns:
      the ILcdBounds by which the geometry of this ILcdBounded object is bounded.
    • insertIntoCache

      public void insertIntoCache(Object aKey, Object aObject)
      Description copied from interface: ILcdCache
      Inserts a cache Object corresponding to the given key Object.
      Specified by:
      insertIntoCache in interface ILcdCache
      Parameters:
      aKey - the key Object that will be used to identify the Object. The key must therefore be a unique identifier, typically the caller itself: insertIntoCache(this, ...).
      aObject - the Object to be cached.
    • getCachedObject

      public Object getCachedObject(Object aKey)
      Description copied from interface: ILcdCache
      Looks up and returns the cached Object corresponding to the given key.
      Specified by:
      getCachedObject in interface ILcdCache
      Parameters:
      aKey - the key Object that was used for storing the cache Object.
      Returns:
      the cached Object, or null if there is no Object corresponding to the given key.
    • removeCachedObject

      public Object removeCachedObject(Object aKey)
      Description copied from interface: ILcdCache
      Looks up and removes the cached Object corresponding to the given key.
      Specified by:
      removeCachedObject in interface ILcdCache
      Parameters:
      aKey - the key Object that was used for storing the cache Object.
      Returns:
      the cached Object, or null if there was no Object corresponding to the given key.
    • clearCache

      public void clearCache()
      Description copied from interface: ILcdCache
      Clears the cache.
      Specified by:
      clearCache in interface ILcdCache
    • getDataType

      public TLcdDataType getDataType()
      Description copied from interface: ILcdDataObject
      Returns the type of this data object. This can never be null.
      Specified by:
      getDataType in interface ILcdDataObject
      Returns:
      the type of this data object
    • getValue

      public Object getValue(TLcdDataProperty aProperty)
      Description copied from interface: ILcdDataObject

      Returns the value of the given property.

      If the property is a collection, the returned value will never be null. If the property has not been set, an empty collection of the appropriate type will be returned (Set, List or Map).

      The property must not be null, and must be declared in the data object's type or in one of its super types. Otherwise an IllegalArgumentException is thrown.

      Specified by:
      getValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which the value is to be returned
      Returns:
      the value of the given property for this data object
    • setValue

      public void setValue(TLcdDataProperty aProperty, Object aValue)
      Description copied from interface: ILcdDataObject

      Sets the value of the given property for this data object. The implementation is allowed to throw an exception if the given value can't be set.

      The given property must be declared in the data object's type or in one of its super types. In other words, getDataType().getProperties().contains( aProperty ) should always be true. Otherwise, the implementation should throw an IllegalArgumentException.

      Specified by:
      setValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which the value is to be set
      aValue - the value to set
      See Also:
    • getValue

      public Object getValue(String aPropertyName)
      Description copied from interface: ILcdDataObject

      Convenience method that returns the value of the property with the given name.

      If more than one property exists with the given name, the most specific property should be used (this is the property defined by the most specialized type in this object's data type hierarchy).

      See ILcdDataObject.getValue(TLcdDataProperty) for more information.

      Specified by:
      getValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property of which the value is to be returned
      Returns:
      the value of the property with the given name
      See Also:
    • setValue

      public void setValue(String aPropertyName, Object aValue)
      Description copied from interface: ILcdDataObject

      Convenience method that sets the value of the property with the given name.

      If more than one property exists with the given name, the most specific property should be used (this is the property defined by the most specialized type in this object's data type hierarchy).

      See ILcdDataObject.setValue(TLcdDataProperty, Object) for more information.

      Specified by:
      setValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property of which the value is to be set
      aValue - the value to set
    • hasValue

      public boolean hasValue(TLcdDataProperty aProperty)
      Description copied from interface: ILcdDataObject
      Indicates whether this data object has a value for the given property.

      • aProperty is from the right data type, and this instance has a value for it: returns true
      • aProperty is from the right data type, and this instance has no value for it: returns false
      • aProperty is not from the right data type: not allowed, you will get IllegalArgumentException
      • aProperty is null: not allowed, you will get NullPointerException

      A multivalued property is considered to have a value if it has at least one value.

      Specified by:
      hasValue in interface ILcdDataObject
      Parameters:
      aProperty - the property for which to return whether a value is present or not.
      Returns:
      true if this data object has a value for the given property, false otherwise.
    • hasValue

      public boolean hasValue(String aPropertyName)
      Description copied from interface: ILcdDataObject
      Indicates whether this data object has a value for the given property.
      See ILcdDataObject.hasValue(TLcdDataProperty) for more information.
      Specified by:
      hasValue in interface ILcdDataObject
      Parameters:
      aPropertyName - the name of the property for which to return whether a value is present or not.
      Returns:
      true if this data object has a value for the property with the given name, false otherwise.