# 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

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

  Modifier and Type
  Method
  Description
  `void`
  `addUsageDates(Temporal beginning, Temporal ending)`
  Adds a period for the range of uses of the resource and/or resource series.
  `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()`
  Deprecated.
  Replaced by `getUsageDates()`.
  `Collection<TemporalPrimitive>`
  `getUsageDates()`
  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)`
  Deprecated.
  Replaced by `setUsageDates(Collection)`.
  `void`
  `setUsageDates(Collection<TemporalPrimitive> newValues)`
  Sets the date and time of the first use or range of uses of the resource and/or resource series.
  `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`

  ### Methods inherited from class ModifiableMetadata

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

  ### Methods inherited from class AbstractMetadata

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

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### 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, because 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 Details

  - ### 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, because 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

    @Deprecated(since="1.5") public Date getUsageDate()
    Deprecated.
    Replaced by `getUsageDates()`.
    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

    @Deprecated(since="1.5") public void setUsageDate(Date newValue)
    Deprecated.
    Replaced by `setUsageDates(Collection)`.
    Sets the date and time of the first use.
    Parameters:
      `newValue` - the new usage date.

  - ### getUsageDates

    @UML(identifier="usageDateTime", obligation=OPTIONAL, specification=ISO_19115) public Collection<TemporalPrimitive> getUsageDates()
    Returns the date and time of the first use or range of uses of the resource and/or resource series.
    Returns:
      date of the first use of the resource.
    Since:
      1.5

  - ### setUsageDates

    public void setUsageDates(Collection<TemporalPrimitive> newValues)
    Sets the date and time of the first use or range of uses of the resource and/or resource series.
    Parameters:
      `newValues` - date of the first use of the resource.
    Since:
      1.5

  - ### addUsageDates

    public void addUsageDates(Temporal beginning, Temporal ending)
    Adds a period for the range of uses of the resource and/or resource series. This is a convenience method for adding a temporal period.
    Parameters:
      `beginning` - the begin instant (inclusive), or `null`.
      `ending` - the end instant (inclusive), or `null`.
    Since:
      1.5

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