# 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

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

  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.
  `TemporalAmount`
  `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(TemporalAmount 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`

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

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

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

  - ### 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(since="1.0") 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(since="1.0") 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

    public TemporalAmount 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(TemporalAmount 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