# Class AbstractParameterDescriptor

Object
FormattableObject
AbstractIdentifiedObject
AbstractParameterDescriptor

All Implemented Interfaces:
  `Serializable`, `Formattable`, `Deprecable`, `LenientComparable`, `Printable`, `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

- ## Field Summary

  ### Fields inherited from class AbstractIdentifiedObject

  `DEPRECATED_KEY, DOMAINS_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 as the specified one.

- ## Method Summary

  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, formatTo, getAlias, getDescription, getDomains, 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 Details

  - ### 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 as 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 Details

  - ### 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.
    See Also:
      - `GeneralParameterDescriptor​.getMaximumOccurs()`

  - ### 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.
    See Also:
      - `GeneralParameterDescriptor​.getMinimumOccurs()`

  - ### 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.

    Specified by:
      `print` in interface `Printable`
    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 fallbacks 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:
      - `FormattableObject​.toWKT()`
      - `FormattableObject​.toString()`