Class TLcdAssociationBasedAirspace

java.lang.Object
com.luciad.shape.ALcdShape
com.luciad.shape.ALcdShapeList
com.luciad.ais.model.airspace.TLcdAssociationBasedAirspace
All Implemented Interfaces:
ILcdAssociationBasedAirspace, ILcdEditableAssociationBasedAirspace, ILcdGenericAirspace, ILcdDataObject, ILcdBounded, ILcdShape, ILcdShapeList, ILcdCache, ILcdCloneable, ILcdInvalidateable, Serializable, Cloneable
Direct Known Subclasses:
TLcdFeaturedAssociationBasedAirspace

public class TLcdAssociationBasedAirspace extends ALcdShapeList implements ILcdEditableAssociationBasedAirspace
The default implementation of an association-based airspace without features.

This implementation performs a discretization in geodetic coordinates of the airspaces contained in the associations and geometrically combines them using the corresponding association types. This calculation is performed in 2D; the height values of the associated airspaces will be ignored.

Before an association-based airspace can be discretized, it must comply to a few rules:

  • the rules defined in ILcdAssociationBasedAirspace for adding airspace associations must be fulfilled.
  • each associated ILcdGenericAirspace must be of the type ILcdAirspace or ILcdAssociationBasedAirspace; if it has the former type, it should be a valid convex or concave polygon; if it has the latter type, it should be discretizable.
The method isAirspaceAssociationDiscretizable() can be used to check whether discretization is possible.
See Also:
  • Field Details

    • ASSOCIATIONS_PROPERTY

      public final TLcdDataProperty ASSOCIATIONS_PROPERTY
      The AirspaceAssociations property of the airspace. Values for this property are lists of objects of type ILcdAirspaceAssociation.
  • Constructor Details

  • Method Details

    • 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
    • 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(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:
    • 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
    • getAirspaceAssociationCount

      public int getAirspaceAssociationCount()
      Description copied from interface: ILcdAssociationBasedAirspace
      Returns the number of ILcdAirspaceAssociation objects that are used in the ILcdAssociationBasedAirspace object.
      Specified by:
      getAirspaceAssociationCount in interface ILcdAssociationBasedAirspace
      Returns:
      the number of ILcdAirspaceAssociation objects that are used in the ILcdAssociationBasedAirspace object.
    • addAirspaceAssociation

      public void addAirspaceAssociation(ILcdAirspaceAssociation aAirspaceAssociation)
      Description copied from interface: ILcdEditableAssociationBasedAirspace
      Adds an ILcdAirspaceAssociation object to the ILcdAssociationBasedAirspace object. Note that there is no explicit check for null associations, which leave the airspace in an invalid state.
      Specified by:
      addAirspaceAssociation in interface ILcdEditableAssociationBasedAirspace
      Parameters:
      aAirspaceAssociation - An ILcdAirspaceAssociation object for the ILcdAssociationBasedAirspace object
    • getAirspaceAssociation

      public ILcdAirspaceAssociation getAirspaceAssociation(int aSequenceNumber)
      Description copied from interface: ILcdAssociationBasedAirspace
      Returns the ILcdAirspaceAssociation object with the given index. The index represents the index in a list which contains all ILcdAirspaceAssociation objects of the ILcdAssociationBasedAirspace object, ordered by their sequence number.
      Specified by:
      getAirspaceAssociation in interface ILcdAssociationBasedAirspace
      Parameters:
      aSequenceNumber - The index of the airspace association to retrieve.
      Returns:
      the ILcdAirspaceAssociation object with the given index.
    • removeAirspaceAssociation

      public void removeAirspaceAssociation(ILcdAirspaceAssociation aAirspaceAssociation)
      Description copied from interface: ILcdEditableAssociationBasedAirspace
      Removes an ILcdAirspaceAssociation object from the ILcdAssociationBasedAirspace object. If this airspace does not contain the association or if null is supplied, it is unchanged. If the association is found and removed, subsequent associations are shifted to the left.
      Specified by:
      removeAirspaceAssociation in interface ILcdEditableAssociationBasedAirspace
      Parameters:
      aAirspaceAssociation - the ILcdAirspaceAssociation object to be removed.
    • removeAirspaceAssociationAt

      public void removeAirspaceAssociationAt(int aIndex)
      Description copied from interface: ILcdEditableAssociationBasedAirspace
      Removes the ILcdAirspaceAssociation object on the specified index from the ILcdAssociationBasedAirspace. Subsequent associations are shifted to the left after the removal.
      Specified by:
      removeAirspaceAssociationAt in interface ILcdEditableAssociationBasedAirspace
      Parameters:
      aIndex - the index in the ILcdEditableAssociationBasedAirspace where the ILcdAirspaceAssociation object must be removed.
    • getShapeCount

      public int getShapeCount()
      Description copied from interface: ILcdShapeList
      Returns the number of ILcdShape objects in the list.
      Specified by:
      getShapeCount in interface ILcdShapeList
      Returns:
      the number of ILcdShape objects in the list.
    • getShape

      public ILcdShape getShape(int i) throws IndexOutOfBoundsException
      Description copied from interface: ILcdShapeList
      Returns the ILcdShape at the given index.
      Specified by:
      getShape in interface ILcdShapeList
      Parameters:
      i - a valid index in the list of ILcdShape objects.
      Returns:
      the ILcdShape at the given index.
      Throws:
      IndexOutOfBoundsException - when the index is not valid.
    • getBounds

      public ILcdBounds getBounds()
      Description copied from interface: ILcdBounded
      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.

      Specified by:
      getBounds in interface ILcdBounded
      Overrides:
      getBounds in class ALcdShapeList
      Returns:
      the ILcdBounds by which the geometry of this ILcdBounded object is bounded.
    • calculateFocusPoint

      protected void calculateFocusPoint()
      Description copied from class: ALcdShapeList
      Computes the focus point as the center of the bounding box. The resulting point is stored in the focus point cache.
      Overrides:
      calculateFocusPoint in class ALcdShapeList
    • contains2D

      public boolean contains2D(double aX, double aY)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given point in the 2D space. Only the first two dimensions of the ILcdShape are considered.
      Specified by:
      contains2D in interface ILcdShape
      Overrides:
      contains2D in class ALcdShapeList
      Parameters:
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
      Returns:
      the boolean result of the containment test.
    • contains3D

      public boolean contains3D(double aX, double aY, double aZ)
      Description copied from interface: ILcdShape
      Checks whether this ILcdShape contains the given point in the 3D space.
      Specified by:
      contains3D in interface ILcdShape
      Overrides:
      contains3D in class ALcdShapeList
      Parameters:
      aX - the x coordinate of the point.
      aY - the y coordinate of the point.
      aZ - the z coordinate of the point.
      Returns:
      the boolean result of the containment test.
    • contains2D

      public boolean contains2D(ILcdPoint aPoint)
      Description copied from class: ALcdShape
      Checks whether this ALcdShape contains the given point in the 2D cartesian plane.
      Specified by:
      contains2D in interface ILcdShape
      Overrides:
      contains2D in class ALcdShape
      Parameters:
      aPoint - the point to test.
      Returns:
      the boolean result of the containment test.
      See Also:
    • contains3D

      public boolean contains3D(ILcdPoint aPoint)
      Description copied from class: ALcdShape
      Checks whether this ALcdShape contains the given point in the 3D space.
      Specified by:
      contains3D in interface ILcdShape
      Overrides:
      contains3D in class ALcdShape
      Parameters:
      aPoint - the point to test.
      Returns:
      the boolean result of the containment test.
      See Also:
    • clone

      public Object clone()
      Creates and returns a copy of this object.

      The associations are cloned.

      The airspaces inside the associations are copied without being cloned.

      The discretization is not copied or cloned at all, but recalculated when needed.

      Specified by:
      clone in interface ILcdCloneable
      Overrides:
      clone in class ALcdShapeList
      See Also:
    • equals

      public boolean equals(Object aObject)
      Returns true if this object is the same as the specified object.
      Overrides:
      equals in class ALcdShapeList
      Parameters:
      aObject - the reference object with which to compare.
      Returns:
      True if this object is the same as the specified object.
    • hashCode

      public int hashCode()
      Description copied from class: ALcdShape
      The hash code of this shape is the hash code of its class, in order to be consistent with the ALcdShape.equals(Object) method. Extensions should refine this implementation, based on their properties.
      Overrides:
      hashCode in class ALcdShapeList
    • isAirspaceAssociationDiscretizable

      public boolean isAirspaceAssociationDiscretizable()
      Checks whether this association-based airspace can be discretized. If this method returns false, the result of some other methods is determined:
      • the method getShapeCount will return 0.
      • the method getBounds will return the combined bounds of the individual airspaces contained in the associations of this airspace (if there are any).
      Returns:
      true if this association-based airspace can be discretized.
    • invalidate

      public void invalidate()
      Discards the geometry cached with this airspace and recalculates it. Whenever this is done, the ILcdModel containing this airspace should be notified by means of a call to elementChanged()!
    • 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.