# Class DefaultStandardOrderProcess

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultStandardOrderProcess

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

public class DefaultStandardOrderProcess extends ISOMetadata implements StandardOrderProcess
Common ways in which the resource may be obtained or received, and related instructions and fee information.

## 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
  `DefaultStandardOrderProcess()`
  Constructs an initially empty standard order process.
  `DefaultStandardOrderProcess(StandardOrderProcess object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultStandardOrderProcess`
  `castOrCopy(StandardOrderProcess object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Currency`
  `getCurrency()`
  Returns the monetary units of the `fees` (as specified in ISO 4217).
  `InternationalString`
  `getFees()`
  Returns fees and terms for retrieving the resource.
  `InternationalString`
  `getOrderingInstructions()`
  Returns general instructions, terms and services provided by the distributor.
  `Record`
  `getOrderOptions()`
  Returns the request/purchase choices.
  `RecordType`
  `getOrderOptionsType()`
  Returns the description of the order options record.
  `Temporal`
  `getPlannedAvailableDate()`
  Returns the date and time when the dataset will be available.
  `Date`
  `getPlannedAvailableDateTime()`
  Deprecated.
  Replaced by `getPlannedAvailableDate()`.
  `InternationalString`
  `getTurnaround()`
  Returns typical turnaround time for the filling of an order.
  `void`
  `setCurrency(Currency newValue)`
  Sets the monetary units of the `fees` (as specified in ISO 4217).
  `void`
  `setFees(InternationalString newValue)`
  Sets fees and terms for retrieving the resource.
  `void`
  `setOrderingInstructions(InternationalString newValue)`
  Sets general instructions, terms and services provided by the distributor.
  `void`
  `setOrderOptions(Record newValue)`
  Sets the request/purchase choices.
  `void`
  `setOrderOptionsType(RecordType newValue)`
  Sets the description of the order options record.
  `void`
  `setPlannedAvailableDate(Temporal newValue)`
  Sets the date and time when the dataset will be available.
  `void`
  `setPlannedAvailableDateTime(Date newValue)`
  Deprecated.
  Replaced by `setPlannedAvailableDate(Temporal)`.
  `void`
  `setTurnaround(InternationalString newValue)`
  Sets typical turnaround time for the filling of an order.

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

  - ### DefaultStandardOrderProcess

    public DefaultStandardOrderProcess()
    Constructs an initially empty standard order process.

  - ### DefaultStandardOrderProcess

    public DefaultStandardOrderProcess(StandardOrderProcess 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(StandardOrderProcess)`

- ## Method Details

  - ### castOrCopy

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

  - ### getFees

    public InternationalString getFees()
    Returns fees and terms for retrieving the resource. Include monetary units (as specified in ISO 4217). The monetary units may also be available with `getCurrency()`.
    Specified by:
      `getFees` in interface `StandardOrderProcess`
    Returns:
      fees and terms for retrieving the resource, or `null`.
    See Also:
      - `getCurrency()`

  - ### setFees

    public void setFees(InternationalString newValue)
    Sets fees and terms for retrieving the resource. Include monetary units (as specified in ISO 4217).
    Parameters:
      `newValue` - the new fees.
    See Also:
      - `setCurrency(Currency)`

  - ### getCurrency

    public Currency getCurrency()
    Returns the monetary units of the `fees` (as specified in ISO 4217).

    #### Constraints

    For ISO 19115 compatibility reasons, this method is not required to return a non-null value even if the text returned by `getFees()` contains a currency units. However if this method returns a non-null value, then that value is required to be consistent with the fees text.
    Returns:
      the fees monetary units, or `null` if none or unknown.
    Since:
      0.5
    See Also:
      - `getFees()`

  - ### setCurrency

    public void setCurrency(Currency newValue)
    Sets the monetary units of the `fees` (as specified in ISO 4217). Callers should ensure that the given currency is consistent with the currency in the fees text.
    Parameters:
      `newValue` - the new currency.
    Since:
      0.5
    See Also:
      - `setFees(InternationalString)`

  - ### getPlannedAvailableDateTime

    @Deprecated(since="1.5") public Date getPlannedAvailableDateTime()
    Deprecated.
    Replaced by `getPlannedAvailableDate()`.
    Returns the date and time when the dataset will be available.
    Specified by:
      `getPlannedAvailableDateTime` in interface `StandardOrderProcess`
    Returns:
      date and time when the dataset will be available, or `null`.

  - ### setPlannedAvailableDateTime

    @Deprecated(since="1.5") public void setPlannedAvailableDateTime(Date newValue)
    Deprecated.
    Replaced by `setPlannedAvailableDate(Temporal)`.
    Sets the date and time when the dataset will be available.
    Parameters:
      `newValue` - the new planned available time.

  - ### getPlannedAvailableDate

    @UML(identifier="plannedAvailableDateTime", obligation=OPTIONAL, specification=ISO_19115) public Temporal getPlannedAvailableDate()
    Returns the date and time when the dataset will be available.
    Returns:
      date and time when the dataset will be available, or `null`.
    Since:
      1.5

  - ### setPlannedAvailableDate

    public void setPlannedAvailableDate(Temporal newValue)
    Sets the date and time when the dataset will be available. The specified value should be an instance of `LocalDate`, `LocalDateTime`, `OffsetDateTime` or `ZonedDateTime`, depending whether hours are defined and how the timezone (if any) is defined. But other types are also allowed.
    Parameters:
      `newValue` - the new planned available time.
    Since:
      1.5

  - ### getOrderingInstructions

    public InternationalString getOrderingInstructions()
    Returns general instructions, terms and services provided by the distributor.
    Specified by:
      `getOrderingInstructions` in interface `StandardOrderProcess`
    Returns:
      general instructions, terms and services provided by the distributor, or `null`.

  - ### setOrderingInstructions

    public void setOrderingInstructions(InternationalString newValue)
    Sets general instructions, terms and services provided by the distributor.
    Parameters:
      `newValue` - the new ordering instructions.

  - ### getTurnaround

    public InternationalString getTurnaround()
    Returns typical turnaround time for the filling of an order.
    Specified by:
      `getTurnaround` in interface `StandardOrderProcess`
    Returns:
      typical turnaround time for the filling of an order, or `null`.

  - ### setTurnaround

    public void setTurnaround(InternationalString newValue)
    Sets typical turnaround time for the filling of an order.
    Parameters:
      `newValue` - the new turnaround.

  - ### getOrderOptionsType

    @UML(identifier="orderOptionsType", obligation=OPTIONAL, specification=ISO_19115) public RecordType getOrderOptionsType()
    Returns the description of the order options record.
    Returns:
      description of the order options record, or `null` if none.
    Since:
      1.0
    See Also:
      - `DefaultRecord​.getRecordType()`

  - ### setOrderOptionsType

    public void setOrderOptionsType(RecordType newValue)
    Sets the description of the order options record.
    Parameters:
      `newValue` - new description of the order options record.
    Since:
      1.0

  - ### getOrderOptions

    @UML(identifier="orderOptions", obligation=OPTIONAL, specification=ISO_19115) public Record getOrderOptions()
    Returns the request/purchase choices.
    Returns:
      request/purchase choices.
    Since:
      0.5
    "TODO:"
      We presume that this record is filled by the vendor for describing the options chosen by the client when he ordered the resource. We presume that this is not a record to be filled by the user for new orders, otherwise this method would need to be a factory rather than a getter.

  - ### setOrderOptions

    public void setOrderOptions(Record newValue)
    Sets the request/purchase choices.
    Parameters:
      `newValue` - the new request/purchase choices.
    Since:
      0.5