Package org.apache.sis.parameter

## Class AbstractParameterDescriptor

- Object
- - FormattableObject
  - - AbstractIdentifiedObject
    - - AbstractParameterDescriptor

- All Implemented Interfaces:
    `Serializable`, `Deprecable`, `LenientComparable`, `GeneralParameterDescriptor`, `IdentifiedObject`
  Direct Known Subclasses:
    `DefaultParameterDescriptor`, `DefaultParameterDescriptorGroup`

      public abstract class AbstractParameterDescriptor
      extends AbstractIdentifiedObject
      implements GeneralParameterDescriptor

  Abstract definition of a parameter or group of parameters used by a coordinate operation or a process. This interface combines information provided by Referencing by Coordinates (ISO 19111), Service Metadata (ISO 19115) and Web Processing Services (WPS) standards. The main information are:

  Main parameter properties
  Getter method | ISO 19111 | WPS | ISO 19115 | Remarks
  --- | --- | --- | --- | ---
  `getName()` | `name` | `Identifier` | `name` | See `Parameters​.getMemberName(ParameterDescriptor)` for `MemberName` ↔ `Identifier` mapping.
  `AbstractIdentifiedObject.getDescription()` |  | `Abstract` | `description` | Also known as “definition”.
  `getDirection()` |  |  | `direction` | Tells if the parameter is a WPS `Input` or `Output` structure.
  `getMinimumOccurs()` | `minimumOccurs` | `MinOccurs` | `optionality` | `optionality = (minimumOccurs > 0)`
  `getMaximumOccurs()` | `maximumOccurs` | `MaxOccurs` | `repeatability` | `repeatability = (maximumOccurs > 1)`

  Since:
    0.5
  See Also:
    Serialized Form

  Defined in the `sis-referencing` module

- - ### Field Summary

    - ### Fields inherited from class AbstractIdentifiedObject

      `DEPRECATED_KEY, LOCALE_KEY`

    - ### Fields inherited from interface IdentifiedObject

      `ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `AbstractParameterDescriptor​(Map<String,​?> properties, int minimumOccurs, int maximumOccurs)` | Constructs a parameter descriptor from a set of properties.
    `protected` | `AbstractParameterDescriptor​(GeneralParameterDescriptor descriptor)` | Constructs a new parameter descriptor with the same values than the specified one.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object object, ComparisonMode mode)` | Compares the specified object with this parameter for equality.
    `protected String` | `formatTo​(Formatter formatter)` | Formats this descriptor as a pseudo-Well Known Text element.
    `Class<? extends GeneralParameterDescriptor>` | `getInterface()` | Returns the GeoAPI interface implemented by this class.
    `int` | `getMaximumOccurs()` | The maximum number of times that values for this parameter group or parameter can be included.
    `int` | `getMinimumOccurs()` | The minimum number of times that values for this parameter group or parameter are required.
    `void` | `print()` | Prints a string representation of this descriptor to the standard output stream.
    `String` | `toString()` | Returns a string representation of this descriptor.

    - ### Methods inherited from class AbstractIdentifiedObject

      `castOrCopy, computeHashCode, equals, getAlias, getDescription, getIdentifiers, getName, getRemarks, hashCode, isDeprecated, isHeuristicMatchForName`

    - ### Methods inherited from class FormattableObject

      `toString, toWKT`

    - ### Methods inherited from class Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface GeneralParameterDescriptor

      `createValue`

    - ### Methods inherited from interface IdentifiedObject

      `getAlias, getIdentifiers, getName, getRemarks, toWKT`

- - ### Constructor Detail

    - #### AbstractParameterDescriptor

          protected AbstractParameterDescriptor​(Map<String,​?> properties,
                                                int minimumOccurs,
                                                int maximumOccurs)

      Constructs a parameter descriptor from a set of properties. The properties map is given unchanged to the super-class constructor. The following table is a reminder of main (not all) properties:

      Recognized properties (non exhaustive list)
      Property name | Value type | Returned by
      --- | --- | ---
      "name" | `ReferenceIdentifier` or `String` | `AbstractIdentifiedObject.getName()`
      "alias" | `GenericName` or `CharSequence` (optionally as array) | `AbstractIdentifiedObject.getAlias()`
      "identifiers" | `ReferenceIdentifier` (optionally as array) | `AbstractIdentifiedObject.getIdentifiers()`
      "remarks" | `InternationalString` or `String` | `AbstractIdentifiedObject.getRemarks()`

      Parameters:
        `properties` - the properties to be given to the identified object.
        `minimumOccurs` - the minimum number of times that values for this parameter group are required, or 0 if no restriction.
        `maximumOccurs` - the maximum number of times that values for this parameter group are required, or `Integer​.MAX_VALUE` if no restriction.

    - #### AbstractParameterDescriptor

          protected AbstractParameterDescriptor​(GeneralParameterDescriptor descriptor)

      Constructs a new parameter descriptor with the same values than the specified one. This copy constructor provides a way to convert an arbitrary implementation into a SIS one or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API.

      This constructor performs a shallow copy, i.e. the properties are not cloned.

      Parameters:
        `descriptor` - the object to shallow copy.

  - ### Method Detail

    - #### getInterface

          public Class<? extends GeneralParameterDescriptor> getInterface()

      Returns the GeoAPI interface implemented by this class. The default implementation returns `GeneralParameterDescriptor​.class`. Subclasses implementing a more specific GeoAPI interface shall override this method.
      Overrides:
        `getInterface` in class `AbstractIdentifiedObject`
      Returns:
        the parameter descriptor interface implemented by this class.

    - #### getMinimumOccurs

          public int getMinimumOccurs()

      The minimum number of times that values for this parameter group or parameter are required. A value of 0 means an optional parameter.
      Specified by:
        `getMinimumOccurs` in interface `GeneralParameterDescriptor`
      Returns:
        the minimum occurrence.

    - #### getMaximumOccurs

          public int getMaximumOccurs()

      The maximum number of times that values for this parameter group or parameter can be included. A value greater than 1 means a repeatable parameter.
      Specified by:
        `getMaximumOccurs` in interface `GeneralParameterDescriptor`
      Returns:
        the maximum occurrence.

    - #### equals

          public boolean equals​(Object object,
                                ComparisonMode mode)

      Compares the specified object with this parameter for equality.
      Specified by:
        `equals` in interface `LenientComparable`
      Overrides:
        `equals` in class `AbstractIdentifiedObject`
      Parameters:
        `object` - the object to compare to `this`.
        `mode` - the strictness level of the comparison.
      Returns:
        `true` if both objects are equal according the given comparison mode.
      See Also:
        `AbstractIdentifiedObject​.computeHashCode()`, `Utilities​.deepEquals(Object, Object, ComparisonMode)`

    - #### toString

          public String toString()

      Returns a string representation of this descriptor.

      This method is for information purpose only and may change in future SIS version.

      Overrides:
        `toString` in class `FormattableObject`
      Returns:
        the Well Known Text (WKT) or an alternative representation of this object.

    - #### print

          @Debug
          public void print()

      Prints a string representation of this descriptor to the standard output stream. If a console is attached to the running JVM (i.e. if the application is run from the command-line and the output is not redirected to a file) and if Apache SIS thinks that the console supports the ANSI escape codes (a.k.a. X3.64), then a syntax coloring will be applied.

      This is a convenience method for debugging purpose and for console applications.

      Overrides:
        `print` in class `FormattableObject`

    - #### formatTo

          protected String formatTo​(Formatter formatter)

      Formats this descriptor as a pseudo-Well Known Text element. The WKT specification does not define any representation of parameter descriptors. Apache SIS fallback on a list of descriptors. The text formatted by this method is flagged as invalid WKT.
      Overrides:
        `formatTo` in class `AbstractIdentifiedObject`
      Parameters:
        `formatter` - the formatter where to format the inner content of this WKT element.
      Returns:
        `"Parameter"` or `"ParameterGroup"`.
      See Also:
        WKT 2 specification §7