Package org.apache.sis.metadata.iso.acquisition

## Class DefaultRequirement

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - DefaultRequirement

- All Implemented Interfaces:
    `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `Requirement`

      public class DefaultRequirement
      extends ISOMetadata
      implements Requirement

  Requirement to be satisfied by the planned data acquisition. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
  `MI_Requirement` `├─identifier………………………………………………………` Unique name, or code, for the requirement. `│ └─code……………………………………………………………` Alphanumeric value identifying an instance in the namespace. `├─requestor…………………………………………………………` Origin of requirement. `│ ├─party…………………………………………………………` Information about the parties. `│ │ └─name…………………………………………………` Name of the party. `│ └─role……………………………………………………………` Function performed by the responsible party. `├─recipient…………………………………………………………` Person(s), or body(ies), to receive results of requirement. `├─priority……………………………………………………………` Relative ordered importance, or urgency, of the requirement. `├─requestedDate………………………………………………` Required or preferred acquisition date and time. `│ ├─requestedDateOfCollection……` Preferred date and time of collection. `│ └─latestAcceptableDate…………………` Latest date and time collection must be completed. `└─expiryDate………………………………………………………` Date and time after which collection is no longer valid.

  Limitations:

  - Instances of this class are not synchronized for multi-threading. Synchronization, if needed, is caller's responsibility.
  - Serialized objects of this class are not guaranteed to be compatible with future Apache SIS releases. Serialization support is appropriate for short term storage or RMI between applications running the same version of Apache SIS. For long term storage, use `XML` instead.
  Since:
    0.3
  See Also:
    Serialized Form

  Defined in the `sis-metadata` module

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class ModifiableMetadata

      `ModifiableMetadata​.State`

  - ### Field Summary

    - ### Fields inherited from class ISOMetadata

      `identifiers`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DefaultRequirement()` | Constructs an initially empty requirement.
    `DefaultRequirement​(Requirement object)` | Constructs a new instance initialized with the values from the specified metadata object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultRequirement` | `castOrCopy​(Requirement object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `Citation` | `getCitation()` | Returns the identification of reference or guidance material for the requirement.
    `Date` | `getExpiryDate()` | Returns the date and time after which collection is no longer valid.
    `Identifier` | `getIdentifier()` | Returns the unique name, or code, for the requirement.
    `Priority` | `getPriority()` | Returns the relative ordered importance, or urgency, of the requirement.
    `Collection<ResponsibleParty>` | `getRecipients()` | Returns the person(s), or body(ies), to receive results of requirement.
    `RequestedDate` | `getRequestedDate()` | Returns the required or preferred acquisition date and time.
    `Collection<ResponsibleParty>` | `getRequestors()` | Returns the origin of requirement.
    `Collection<Plan>` | `getSatisfiedPlans()` | Returns the plan that identifies solution to satisfy the requirement.
    `void` | `setCitation​(Citation newValue)` | Sets the identification of reference or guidance material for the requirement.
    `void` | `setExpiryDate​(Date newValue)` | Sets the date and time after which collection is no longer valid.
    `void` | `setIdentifier​(Identifier newValue)` | Sets the unique name, or code, for the requirement.
    `void` | `setPriority​(Priority newValue)` | Sets the relative ordered importance, or urgency, of the requirement.
    `void` | `setRecipients​(Collection<? extends ResponsibleParty> newValues)` | Sets the Person(s), or body(ies), to receive results of requirement.
    `void` | `setRequestedDate​(RequestedDate newValue)` | Sets the required or preferred acquisition date and time.
    `void` | `setRequestors​(Collection<? extends ResponsibleParty> newValues)` | Sets the origin of requirement.
    `void` | `setSatisfiedPlans​(Collection<? extends Plan> newValues)` |

    - ### Methods inherited from class ISOMetadata

      `getIdentifierMap, getIdentifiers, getStandard, transitionTo`

    - ### Methods inherited from class ModifiableMetadata

      `checkWritePermission, checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, freeze, isModifiable, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, unmodifiable, writeCollection, writeList, writeMap, writeSet`

    - ### Methods inherited from class AbstractMetadata

      `asMap, asTreeTable, equals, equals, getInterface, hashCode, isEmpty, prune, toString`

    - ### Methods inherited from class Object

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

- - ### Constructor Detail

    - #### DefaultRequirement

          public DefaultRequirement()

      Constructs an initially empty requirement.

    - #### DefaultRequirement

          public DefaultRequirement​(Requirement object)

      Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, since the other metadata contained in the given object are not recursively copied.
      Parameters:
        `object` - the metadata to copy values from, or `null` if none.
      See Also:
        `castOrCopy(Requirement)`

  - ### Method Detail

    - #### castOrCopy

          public static DefaultRequirement castOrCopy​(Requirement object)

      Returns a SIS metadata implementation with the values of the given arbitrary implementation. This method performs the first applicable action in the following choices:
      - If the given object is `null`, then this method returns `null`.
      - Otherwise if the given object is already an instance of `DefaultRequirement`, then it is returned unchanged.
      - Otherwise a new `DefaultRequirement` instance is created using the copy constructor and returned. Note that this is a shallow copy operation, since the other metadata contained in the given object are not recursively copied.
      Parameters:
        `object` - the object to get as a SIS implementation, or `null` if none.
      Returns:
        a SIS implementation containing the values of the given object (may be the given object itself), or `null` if the argument was null.

    - #### getCitation

          public Citation getCitation()

      Returns the identification of reference or guidance material for the requirement. `null` if unspecified.
      Specified by:
        `getCitation` in interface `Requirement`
      Returns:
        identification of reference or guidance material, or `null`.

    - #### setCitation

          public void setCitation​(Citation newValue)

      Sets the identification of reference or guidance material for the requirement.
      Parameters:
        `newValue` - the new citation value.

    - #### getIdentifier

          public Identifier getIdentifier()

      Returns the unique name, or code, for the requirement.
      Specified by:
        `getIdentifier` in interface `Requirement`
      Overrides:
        `getIdentifier` in class `ISOMetadata`
      Returns:
        unique name or code, or `null`.

    - #### setIdentifier

          public void setIdentifier​(Identifier newValue)

      Sets the unique name, or code, for the requirement.
      Overrides:
        `setIdentifier` in class `ISOMetadata`
      Parameters:
        `newValue` - the new identifier value.

    - #### getRequestors

          public Collection<ResponsibleParty> getRequestors()

      Returns the origin of requirement.
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change will be tentatively applied in GeoAPI 4.0.
      Specified by:
        `getRequestors` in interface `Requirement`
      Returns:
        origin of requirement.

    - #### setRequestors

          public void setRequestors​(Collection<? extends ResponsibleParty> newValues)

      Sets the origin of requirement.
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change will be tentatively applied in GeoAPI 4.0.
      Parameters:
        `newValues` - the new requestors values.

    - #### getRecipients

          public Collection<ResponsibleParty> getRecipients()

      Returns the person(s), or body(ies), to receive results of requirement.
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change will be tentatively applied in GeoAPI 4.0.
      Specified by:
        `getRecipients` in interface `Requirement`
      Returns:
        person(s), or body(ies), to receive results.

    - #### setRecipients

          public void setRecipients​(Collection<? extends ResponsibleParty> newValues)

      Sets the Person(s), or body(ies), to receive results of requirement.
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change will be tentatively applied in GeoAPI 4.0.
      Parameters:
        `newValues` - the new recipients values.

    - #### getPriority

          public Priority getPriority()

      Returns the relative ordered importance, or urgency, of the requirement.
      Specified by:
        `getPriority` in interface `Requirement`
      Returns:
        relative ordered importance, or urgency, or `null`.

    - #### setPriority

          public void setPriority​(Priority newValue)

      Sets the relative ordered importance, or urgency, of the requirement.
      Parameters:
        `newValue` - the new priority value.

    - #### getRequestedDate

          public RequestedDate getRequestedDate()

      Returns the required or preferred acquisition date and time.
      Specified by:
        `getRequestedDate` in interface `Requirement`
      Returns:
        required or preferred acquisition date and time, or `null`.

    - #### setRequestedDate

          public void setRequestedDate​(RequestedDate newValue)

      Sets the required or preferred acquisition date and time.
      Parameters:
        `newValue` - the new requested date value.

    - #### getExpiryDate

          public Date getExpiryDate()

      Returns the date and time after which collection is no longer valid.
      Specified by:
        `getExpiryDate` in interface `Requirement`
      Returns:
        date and time after which collection is no longer valid, or `null`.

    - #### setExpiryDate

          public void setExpiryDate​(Date newValue)

      Sets the date and time after which collection is no longer valid.
      Parameters:
        `newValue` - the new expiry date.

    - #### getSatisfiedPlans

          public Collection<Plan> getSatisfiedPlans()

      Returns the plan that identifies solution to satisfy the requirement.
      Specified by:
        `getSatisfiedPlans` in interface `Requirement`
      Returns:
        plan that identifies solution to satisfy the requirement.

    - #### setSatisfiedPlans

          public void setSatisfiedPlans​(Collection<? extends Plan> newValues)

      Parameters:
        `newValues` - the new satisfied plans values.