# Class DefaultMaintenanceInformation

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultMaintenanceInformation

All Implemented Interfaces:
  `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `MaintenanceInformation`

public class DefaultMaintenanceInformation extends ISOMetadata implements MaintenanceInformation
Information about the scope and frequency of updating. The following property is mandatory in a well-formed metadata according ISO 19115:
`MD_MaintenanceInformation` `└─maintenanceAndUpdateFrequency……` Frequency with which changes and additions are made to the resource.

## 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
  `DefaultMaintenanceInformation()`
  Creates a an initially empty maintenance information.
  `DefaultMaintenanceInformation(MaintenanceFrequency maintenanceAndUpdateFrequency)`
  Creates a maintenance information.
  `DefaultMaintenanceInformation(MaintenanceInformation object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultMaintenanceInformation`
  `castOrCopy(MaintenanceInformation object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Collection<ResponsibleParty>`
  `getContacts()`
  Returns identification of, and means of communicating with, person(s) and organization(s) with responsibility for maintaining the resource.
  `Date`
  `getDateOfNextUpdate()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getMaintenanceDates()` in order to enable inclusion of a `DateType` to describe the type of the date.
  `MaintenanceFrequency`
  `getMaintenanceAndUpdateFrequency()`
  Returns the frequency with which changes and additions are made to the resource after the initial resource is completed.
  `Collection<CitationDate>`
  `getMaintenanceDates()`
  Return the date information associated with maintenance of resource.
  `Collection<InternationalString>`
  `getMaintenanceNotes()`
  Returns information regarding specific requirements for maintaining the resource.
  `Collection<Scope>`
  `getMaintenanceScopes()`
  Return the types of resource and / or extents to which the maintenance information applies.
  `final Collection<ScopeDescription>`
  `getUpdateScopeDescriptions()`
  Deprecated.
  As of ISO 19115:2014, `getUpdateScopes()` and `getUpdateScopeDescriptions()` were combined into `getMaintenanceScopes()` in order to allow specifying a scope that includes a spatial and temporal extent.
  `final Collection<ScopeCode>`
  `getUpdateScopes()`
  Deprecated.
  As of ISO 19115:2014, `getUpdateScopes()` and `getUpdateScopeDescriptions()` were combined into `getMaintenanceScopes()` in order to allow specifying a scope that includes a spatial and temporal extent.
  `PeriodDuration`
  `getUserDefinedMaintenanceFrequency()`
  Returns the maintenance period other than those defined.
  `void`
  `setContacts(Collection<? extends ResponsibleParty> newValues)`
  Sets identification of, and means of communicating with, person(s) and organization(s) with responsibility for maintaining the resource.
  `void`
  `setDateOfNextUpdate(Date newValue)`
  Deprecated.
  `void`
  `setMaintenanceAndUpdateFrequency(MaintenanceFrequency newValue)`
  Sets the frequency with which changes and additions are made to the resource after the initial resource is completed.
  `void`
  `setMaintenanceDates(Collection<? extends CitationDate> newValues)`
  Sets the date information associated with maintenance of resource.
  `void`
  `setMaintenanceNotes(Collection<? extends InternationalString> newValues)`
  Sets information regarding specific requirements for maintaining the resource.
  `void`
  `setMaintenanceScopes(Collection<? extends Scope> newValues)`
  Sets the types of resource and / or extents to which the maintenance information applies.
  `void`
  `setUpdateScopeDescriptions(Collection<? extends ScopeDescription> newValues)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setMaintenanceScopes(Collection)`.
  `void`
  `setUpdateScopes(Collection<? extends ScopeCode> newValues)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setMaintenanceScopes(Collection)`.
  `void`
  `setUserDefinedMaintenanceFrequency(PeriodDuration newValue)`
  Sets the maintenance period other than those defined.

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

  - ### DefaultMaintenanceInformation

    public DefaultMaintenanceInformation()
    Creates a an initially empty maintenance information.

  - ### DefaultMaintenanceInformation

    public DefaultMaintenanceInformation(MaintenanceFrequency maintenanceAndUpdateFrequency)
    Creates a maintenance information.
    Parameters:
      `maintenanceAndUpdateFrequency` - the frequency with which changes and additions are made to the resource after the initial resource is completed, or `null` if none.

  - ### DefaultMaintenanceInformation

    public DefaultMaintenanceInformation(MaintenanceInformation 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(MaintenanceInformation)`

- ## Method Details

  - ### castOrCopy

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

  - ### getMaintenanceAndUpdateFrequency

    public MaintenanceFrequency getMaintenanceAndUpdateFrequency()
    Returns the frequency with which changes and additions are made to the resource after the initial resource is completed.
    Specified by:
      `getMaintenanceAndUpdateFrequency` in interface `MaintenanceInformation`
    Returns:
      frequency with which changes and additions are made to the resource, or `null`.

  - ### setMaintenanceAndUpdateFrequency

    public void setMaintenanceAndUpdateFrequency(MaintenanceFrequency newValue)
    Sets the frequency with which changes and additions are made to the resource after the initial resource is completed.
    Parameters:
      `newValue` - the new maintenance frequency.

  - ### getMaintenanceDates

    @UML(identifier="maintenanceDate", obligation=OPTIONAL, specification=ISO_19115) public Collection<CitationDate> getMaintenanceDates()
    Return the date information associated with maintenance of resource.
    Returns:
      date information associated with maintenance of resource.
    Since:
      0.5

  - ### setMaintenanceDates

    public void setMaintenanceDates(Collection<? extends CitationDate> newValues)
    Sets the date information associated with maintenance of resource.
    Parameters:
      `newValues` - the new date information associated with maintenance of resource.
    Since:
      0.5

  - ### getDateOfNextUpdate

    @Deprecated(since="1.0") public Date getDateOfNextUpdate()
    Deprecated.
    As of ISO 19115:2014, replaced by `getMaintenanceDates()` in order to enable inclusion of a `DateType` to describe the type of the date. The associated date type is `DateType​.valueOf("NEXT_UPDATE")`.
    Returns the scheduled revision date for resource. This method fetches the value from the maintenance dates.
    Specified by:
      `getDateOfNextUpdate` in interface `MaintenanceInformation`
    Returns:
      scheduled revision date, or `null`.

  - ### setDateOfNextUpdate

    @Deprecated(since="1.0") public void setDateOfNextUpdate(Date newValue)
    Deprecated.
    Sets the scheduled revision date for resource. This method stores the value in the maintenance dates.
    Parameters:
      `newValue` - the new date of next update.

  - ### getUserDefinedMaintenanceFrequency

    public PeriodDuration getUserDefinedMaintenanceFrequency()
    Returns the maintenance period other than those defined.
    Upcoming API change
    The return type may be changed to `TemporalAmount` in Apache SIS 2.0. This change depend on a corresponding change in GeoAPI interfaces.
    Specified by:
      `getUserDefinedMaintenanceFrequency` in interface `MaintenanceInformation`
    Returns:
      the maintenance period, or `null`.

  - ### setUserDefinedMaintenanceFrequency

    public void setUserDefinedMaintenanceFrequency(PeriodDuration newValue)
    Sets the maintenance period other than those defined.
    Upcoming API change
    The parameter type may be changed to `TemporalAmount` in Apache SIS 2.0. This change depend on a corresponding change in GeoAPI interfaces.
    Parameters:
      `newValue` - the new user defined maintenance frequency.

  - ### getMaintenanceScopes

    @UML(identifier="maintenanceScope", obligation=OPTIONAL, specification=ISO_19115) public Collection<Scope> getMaintenanceScopes()
    Return the types of resource and / or extents to which the maintenance information applies.
    Returns:
      type of resource and / or extent to which the maintenance information applies.
    Since:
      0.5

  - ### setMaintenanceScopes

    public void setMaintenanceScopes(Collection<? extends Scope> newValues)
    Sets the types of resource and / or extents to which the maintenance information applies.
    Parameters:
      `newValues` - the types of resource and / or extents to which the maintenance information applies.
    Since:
      0.5

  - ### getUpdateScopes

    @Deprecated(since="1.0") public final Collection<ScopeCode> getUpdateScopes()
    Deprecated.
    As of ISO 19115:2014, `getUpdateScopes()` and `getUpdateScopeDescriptions()` were combined into `getMaintenanceScopes()` in order to allow specifying a scope that includes a spatial and temporal extent.
    Returns the scope of data to which maintenance is applied. This method fetches the values from the maintenance scopes.
    Specified by:
      `getUpdateScopes` in interface `MaintenanceInformation`
    Returns:
      scope of data to which maintenance is applied.

  - ### setUpdateScopes

    @Deprecated(since="1.0") public void setUpdateScopes(Collection<? extends ScopeCode> newValues)
    Deprecated.
    As of ISO 19115:2014, replaced by `setMaintenanceScopes(Collection)`.
    Sets the scope of data to which maintenance is applied. This method stores the values in the maintenance scopes.
    Parameters:
      `newValues` - the new update scopes.

  - ### getUpdateScopeDescriptions

    @Deprecated(since="1.0") public final Collection<ScopeDescription> getUpdateScopeDescriptions()
    Deprecated.
    As of ISO 19115:2014, `getUpdateScopes()` and `getUpdateScopeDescriptions()` were combined into `getMaintenanceScopes()` in order to allow specifying a scope that includes a spatial and temporal extent.
    Returns additional information about the range or extent of the resource. This method fetches the values from the maintenance scopes.
    Specified by:
      `getUpdateScopeDescriptions` in interface `MaintenanceInformation`
    Returns:
      additional information about the range or extent of the resource.

  - ### setUpdateScopeDescriptions

    @Deprecated(since="1.0") public void setUpdateScopeDescriptions(Collection<? extends ScopeDescription> newValues)
    Deprecated.
    As of ISO 19115:2014, replaced by `setMaintenanceScopes(Collection)`.
    Sets additional information about the range or extent of the resource. This method stores the values in the maintenance scopes.
    Parameters:
      `newValues` - the new update scope descriptions.

  - ### getMaintenanceNotes

    public Collection<InternationalString> getMaintenanceNotes()
    Returns information regarding specific requirements for maintaining the resource.
    Specified by:
      `getMaintenanceNotes` in interface `MaintenanceInformation`
    Returns:
      information regarding specific requirements for maintaining the resource.

  - ### setMaintenanceNotes

    public void setMaintenanceNotes(Collection<? extends InternationalString> newValues)
    Sets information regarding specific requirements for maintaining the resource.
    Parameters:
      `newValues` - the new maintenance notes.

  - ### getContacts

    public Collection<ResponsibleParty> getContacts()
    Returns identification of, and means of communicating with, person(s) and organization(s) with responsibility for maintaining the resource.
    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:
      `getContacts` in interface `MaintenanceInformation`
    Returns:
      means of communicating with person(s) and organization(s) with responsibility for maintaining the resource.

  - ### setContacts

    public void setContacts(Collection<? extends ResponsibleParty> newValues)
    Sets identification of, and means of communicating with, person(s) and organization(s) with responsibility for maintaining the resource.
    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 identification of person(s) and organization(s) with responsibility for maintaining the resource.