Package org.apache.sis.metadata.iso.identification

## Class DefaultUsage

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - DefaultUsage

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

      @TitleProperty(name="specificUsage")
      public class DefaultUsage
      extends ISOMetadata
      implements Usage

  Brief description of ways in which the resource(s) is/are currently or has been used. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
  `MD_Usage` `├─specificUsage…………` Brief description of the resource and/or resource series usage. `└─userContactInfo……` Identification of and means of communicating with person(s) and organisation(s). `├─party……………………` Information about the parties. `│ └─name……………` Name of the party. `└─role………………………` Function performed by the responsible party.

  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
    --- | ---
    `DefaultUsage()` | Constructs an initially empty usage.
    `DefaultUsage​(CharSequence specificUsage, ResponsibleParty userContactInfo)` | Creates an usage initialized to the specified values.
    `DefaultUsage​(Usage 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 DefaultUsage` | `castOrCopy​(Usage object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `Collection<Citation>` | `getAdditionalDocumentation()` | Publications that describe usage of data.
    `Collection<Citation>` | `getIdentifiedIssues()` | Citation of a description of known issues associated with the resource along with proposed solutions if available.
    `Collection<InternationalString>` | `getResponses()` | Responses to the user-determined limitations.
    `InternationalString` | `getSpecificUsage()` | Returns a brief description of the resource and/or resource series usage.
    `Date` | `getUsageDate()` | Returns the date and time of the first use or range of uses of the resource and/or resource series.
    `Collection<ResponsibleParty>` | `getUserContactInfo()` | Returns identification of and means of communicating with person(s) and organization(s) using the resource(s).
    `InternationalString` | `getUserDeterminedLimitations()` | Returns applications, determined by the user for which the resource and/or resource series is not suitable.
    `void` | `setAdditionalDocumentation​(Collection<? extends Citation> newValues)` | Sets the publications that describe usage of data.
    `void` | `setIdentifiedIssues​(Collection<? extends Citation> newValues)` | Sets a new citation of a description of known issues associated with the resource along with proposed solutions if available.
    `void` | `setResponses​(Collection<? extends InternationalString> newValues)` | Sets a new response to the user-determined limitations.
    `void` | `setSpecificUsage​(InternationalString newValue)` | Sets a brief description of the resource and/or resource series usage.
    `void` | `setUsageDate​(Date newValue)` | Sets the date and time of the first use.
    `void` | `setUserContactInfo​(Collection<? extends ResponsibleParty> newValues)` | Sets identification of and means of communicating with person(s) and organization(s) using the resource(s).
    `void` | `setUserDeterminedLimitations​(InternationalString newValue)` | Sets applications, determined by the user for which the resource and/or resource series is not suitable.

    - ### Methods inherited from class ISOMetadata

      `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier, 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

    - #### DefaultUsage

          public DefaultUsage()

      Constructs an initially empty usage.

    - #### DefaultUsage

          public DefaultUsage​(CharSequence specificUsage,
                              ResponsibleParty userContactInfo)

      Creates an usage initialized to the specified values.
      Parameters:
        `specificUsage` - brief description of the resource and/or resource series usage, or `null` if none.
        `userContactInfo` - means of communicating with person(s) and organization(s), or `null` if none.

    - #### DefaultUsage

          public DefaultUsage​(Usage 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(Usage)`

  - ### Method Detail

    - #### castOrCopy

          public static DefaultUsage castOrCopy​(Usage 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 `DefaultUsage`, then it is returned unchanged.
      - Otherwise a new `DefaultUsage` 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.

    - #### getSpecificUsage

          public InternationalString getSpecificUsage()

      Returns a brief description of the resource and/or resource series usage.
      Specified by:
        `getSpecificUsage` in interface `Usage`
      Returns:
        description of the resource usage, or `null`.

    - #### setSpecificUsage

          public void setSpecificUsage​(InternationalString newValue)

      Sets a brief description of the resource and/or resource series usage.
      Parameters:
        `newValue` - the new specific usage.

    - #### getUsageDate

          public Date getUsageDate()

      Returns the date and time of the first use or range of uses of the resource and/or resource series.
      Specified by:
        `getUsageDate` in interface `Usage`
      Returns:
        date of the first use of the resource, or `null`.

    - #### setUsageDate

          public void setUsageDate​(Date newValue)

      Sets the date and time of the first use.
      Parameters:
        `newValue` - the new usage date.

    - #### getUserDeterminedLimitations

          public InternationalString getUserDeterminedLimitations()

      Returns applications, determined by the user for which the resource and/or resource series is not suitable.
      Specified by:
        `getUserDeterminedLimitations` in interface `Usage`
      Returns:
        applications for which the resource and/or resource series is not suitable, or `null`.

    - #### setUserDeterminedLimitations

          public void setUserDeterminedLimitations​(InternationalString newValue)

      Sets applications, determined by the user for which the resource and/or resource series is not suitable.
      Parameters:
        `newValue` - the new user determined limitations.

    - #### getUserContactInfo

          public Collection<ResponsibleParty> getUserContactInfo()

      Returns identification of and means of communicating with person(s) and organization(s) using the resource(s).
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change may be applied in GeoAPI 4.0.
      Specified by:
        `getUserContactInfo` in interface `Usage`
      Returns:
        means of communicating with person(s) and organization(s) using the resource(s).

    - #### setUserContactInfo

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

      Sets identification of and means of communicating with person(s) and organization(s) using the resource(s).
      Upcoming API change — generalization
      As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change may be applied in GeoAPI 4.0.
      Parameters:
        `newValues` - the new user contact info.

    - #### getResponses

          @UML(identifier="response",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<InternationalString> getResponses()

      Responses to the user-determined limitations.
      Returns:
        response to the user-determined limitations.
      Since:
        0.5

    - #### setResponses

          public void setResponses​(Collection<? extends InternationalString> newValues)

      Sets a new response to the user-determined limitations.
      Parameters:
        `newValues` - the new response to the user-determined limitations.
      Since:
        0.5

    - #### getAdditionalDocumentation

          @UML(identifier="additionalDocumentation",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<Citation> getAdditionalDocumentation()

      Publications that describe usage of data.
      Returns:
        publications that describe usage of data.
      Since:
        0.5

    - #### setAdditionalDocumentation

          public void setAdditionalDocumentation​(Collection<? extends Citation> newValues)

      Sets the publications that describe usage of data.
      Parameters:
        `newValues` - the new publications.
      Since:
        0.5

    - #### getIdentifiedIssues

          @UML(identifier="identifiedIssues",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<Citation> getIdentifiedIssues()

      Citation of a description of known issues associated with the resource along with proposed solutions if available.
      Returns:
        citation of a description of known issues associated with the resource.
      Since:
        0.5

    - #### setIdentifiedIssues

          public void setIdentifiedIssues​(Collection<? extends Citation> newValues)

      Sets a new citation of a description of known issues associated with the resource along with proposed solutions if available.
      Parameters:
        `newValues` - the new citation of a description.
      Since:
        0.5