Package org.apache.sis.metadata.iso.distribution

## Class DefaultDigitalTransferOptions

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - DefaultDigitalTransferOptions

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

      public class DefaultDigitalTransferOptions
      extends ISOMetadata
      implements DigitalTransferOptions

  Technical means and media by which a resource is obtained from the distributor.

  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
    --- | ---
    `DefaultDigitalTransferOptions()` | Constructs an initially empty digital transfer options.
    `DefaultDigitalTransferOptions​(DigitalTransferOptions object)` | Constructs a new instance initialized with the values from the specified metadata object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultDigitalTransferOptions` | `castOrCopy​(DigitalTransferOptions object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `Collection<Format>` | `getDistributionFormats()` | Returns the formats of distribution.
    `Medium` | `getOffLine()` | Deprecated. As of ISO 19115:2014, replaced by `getOffLines()`.
    `Collection<Medium>` | `getOffLines()` | Returns information about offline media on which the resource can be obtained.
    `Collection<OnlineResource>` | `getOnLines()` | Returns information about online sources from which the resource can be obtained.
    `PeriodDuration` | `getTransferFrequency()` | Returns the rate of occurrence of distribution.
    `Double` | `getTransferSize()` | Returns an estimated size of a unit in the specified transfer format, expressed in megabytes.
    `InternationalString` | `getUnitsOfDistribution()` | Returns tiles, layers, geographic areas, etc., in which data is available.
    `void` | `setDistributionFormats​(Collection<? extends Format> newValues)` | Sets the formats of distribution.
    `void` | `setOffLine​(Medium newValue)` | Deprecated. As of ISO 19115:2014, replaced by `setOffLines(Collection)`.
    `void` | `setOffLines​(Collection<? extends Medium> newValues)` | Sets information about offline media on which the resource can be obtained.
    `void` | `setOnLines​(Collection<? extends OnlineResource> newValues)` | Sets information about online sources from which the resource can be obtained.
    `void` | `setTransferFrequency​(PeriodDuration newValue)` | Sets the rate of occurrence of distribution.
    `void` | `setTransferSize​(Double newValue)` | Sets an estimated size of a unit in the specified transfer format, expressed in megabytes.
    `void` | `setUnitsOfDistribution​(InternationalString newValue)` | Sets tiles, layers, geographic areas, etc., in which data is available.

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

    - #### DefaultDigitalTransferOptions

          public DefaultDigitalTransferOptions()

      Constructs an initially empty digital transfer options.

    - #### DefaultDigitalTransferOptions

          public DefaultDigitalTransferOptions​(DigitalTransferOptions 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.
      Note on properties validation: This constructor does not verify the property values of the given metadata (e.g. whether it contains unexpected negative values). This is because invalid metadata exist in practice, and verifying their validity in this copy constructor is often too late. Note that this is not the only hole, as invalid metadata instances can also be obtained by unmarshalling an invalid XML document.
      Parameters:
        `object` - the metadata to copy values from, or `null` if none.
      See Also:
        `castOrCopy(DigitalTransferOptions)`

  - ### Method Detail

    - #### castOrCopy

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

    - #### getUnitsOfDistribution

          public InternationalString getUnitsOfDistribution()

      Returns tiles, layers, geographic areas, etc., in which data is available.
      Specified by:
        `getUnitsOfDistribution` in interface `DigitalTransferOptions`
      Returns:
        tiles, layers, geographic areas, etc. in which data is available, or `null`.

    - #### setUnitsOfDistribution

          public void setUnitsOfDistribution​(InternationalString newValue)

      Sets tiles, layers, geographic areas, etc., in which data is available.
      Parameters:
        `newValue` - the new units of distribution.

    - #### getTransferSize

          @ValueRange(minimum=0.0,
                      isMinIncluded=false)
          public Double getTransferSize()

      Returns an estimated size of a unit in the specified transfer format, expressed in megabytes. The transfer size is greater than zero.
      Specified by:
        `getTransferSize` in interface `DigitalTransferOptions`
      Returns:
        estimated size of a unit in the specified transfer format in megabytes, or `null`.

    - #### setTransferSize

          public void setTransferSize​(Double newValue)

      Sets an estimated size of a unit in the specified transfer format, expressed in megabytes. The transfer shall be greater than zero.
      Parameters:
        `newValue` - the new transfer size, or `null`.
      Throws:
        `IllegalArgumentException` - if the given value is NaN or negative.

    - #### getOnLines

          public Collection<OnlineResource> getOnLines()

      Returns information about online sources from which the resource can be obtained.
      Specified by:
        `getOnLines` in interface `DigitalTransferOptions`
      Returns:
        online sources from which the resource can be obtained.

    - #### setOnLines

          public void setOnLines​(Collection<? extends OnlineResource> newValues)

      Sets information about online sources from which the resource can be obtained.
      Parameters:
        `newValues` - the new online sources.

    - #### getOffLines

          @UML(identifier="offLine",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<Medium> getOffLines()

      Returns information about offline media on which the resource can be obtained.
      Returns:
        offline media on which the resource can be obtained.
      Since:
        0.5

    - #### setOffLines

          public void setOffLines​(Collection<? extends Medium> newValues)

      Sets information about offline media on which the resource can be obtained.
      Parameters:
        `newValues` - the new offline media.
      Since:
        0.5

    - #### getOffLine

          @Deprecated
          public Medium getOffLine()

      Deprecated.
      As of ISO 19115:2014, replaced by `getOffLines()`.
      Returns information about offline media on which the resource can be obtained.
      Specified by:
        `getOffLine` in interface `DigitalTransferOptions`
      Returns:
        offline media on which the resource can be obtained, or `null`.

    - #### setOffLine

          @Deprecated
          public void setOffLine​(Medium newValue)

      Deprecated.
      As of ISO 19115:2014, replaced by `setOffLines(Collection)`.
      Sets information about offline media on which the resource can be obtained.
      Parameters:
        `newValue` - the new offline media.

    - #### getTransferFrequency

          @UML(identifier="transferFrequency",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public PeriodDuration getTransferFrequency()

      Returns the rate of occurrence of distribution.
      Returns:
        rate of occurrence of distribution, or `null` if none.
      Since:
        0.5

    - #### setTransferFrequency

          public void setTransferFrequency​(PeriodDuration newValue)

      Sets the rate of occurrence of distribution.
      Parameters:
        `newValue` - the new rate of occurrence of distribution.
      Since:
        0.5

    - #### getDistributionFormats

          @UML(identifier="distributionFormat",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<Format> getDistributionFormats()

      Returns the formats of distribution.
      Returns:
        formats of distribution.
      Since:
        0.5

    - #### setDistributionFormats

          public void setDistributionFormats​(Collection<? extends Format> newValues)

      Sets the formats of distribution.
      Parameters:
        `newValues` - the new formats of distribution.
      Since:
        0.5