# Class DefaultContact

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultContact

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

public class DefaultContact extends ISOMetadata implements Contact
Information required to enable contact with the responsible person and/or organization.

## 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
  `DefaultContact()`
  Constructs an initially empty contact.
  `DefaultContact(Contact object)`
  Constructs a new instance initialized with the values from the specified metadata object.
  `DefaultContact(OnlineResource resource)`
  Constructs a contact initialized to the specified online resource.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultContact`
  `castOrCopy(Contact object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Address`
  `getAddress()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getAddresses()`.
  `Collection<Address>`
  `getAddresses()`
  Returns the physical and email addresses at which the organization or individual may be contacted.
  `InternationalString`
  `getContactInstructions()`
  Returns supplemental instructions on how or when to contact the individual or organization.
  `InternationalString`
  `getContactType()`
  Type of the contact.
  `InternationalString`
  `getHoursOfService()`
  Returns the time period (including time zone) when individuals can contact the organization or individual.
  `OnlineResource`
  `getOnlineResource()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getOnlineResources()`.
  `Collection<OnlineResource>`
  `getOnlineResources()`
  Returns on-line information that can be used to contact the individual or organization.
  `Telephone`
  `getPhone()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getPhones()`.
  `Collection<Telephone>`
  `getPhones()`
  Returns telephone numbers at which the organization or individual may be contacted.
  `void`
  `setAddress(Address newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setAddresses(Collection)`.
  `void`
  `setAddresses(Collection<? extends Address> newValues)`
  Sets the physical and email addresses at which the organization or individual may be contacted.
  `void`
  `setContactInstructions(InternationalString newValue)`
  Sets supplemental instructions on how or when to contact the individual or organization.
  `void`
  `setContactType(InternationalString newValue)`
  Sets new type of the contact.
  `void`
  `setHoursOfService(InternationalString newValue)`
  Sets time period (including time zone) when individuals can contact the organization or individual.
  `void`
  `setOnlineResource(OnlineResource newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setOnlineResources(Collection)`.
  `void`
  `setOnlineResources(Collection<? extends OnlineResource> newValues)`
  Sets on-line information that can be used to contact the individual or organization.
  `void`
  `setPhone(Telephone newValue)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setPhones(Collection)`.
  `void`
  `setPhones(Collection<? extends Telephone> newValues)`
  Sets telephone numbers at which the organization or individual may be contacted.

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

  - ### DefaultContact

    public DefaultContact()
    Constructs an initially empty contact.

  - ### DefaultContact

    public DefaultContact(OnlineResource resource)
    Constructs a contact initialized to the specified online resource.
    Parameters:
      `resource` - the on-line information that can be used to contact the individual or organization, or `null` if none.

  - ### DefaultContact

    public DefaultContact(Contact 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(Contact)`

- ## Method Details

  - ### castOrCopy

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

  - ### getPhones

    @UML(identifier="phone", obligation=OPTIONAL, specification=ISO_19115) public Collection<Telephone> getPhones()
    Returns telephone numbers at which the organization or individual may be contacted.
    Returns:
      telephone numbers at which the organization or individual may be contacted.
    Since:
      0.5

  - ### setPhones

    public void setPhones(Collection<? extends Telephone> newValues)
    Sets telephone numbers at which the organization or individual may be contacted.
    Parameters:
      `newValues` - the new telephones.
    Since:
      0.5

  - ### getPhone

    @Deprecated(since="1.0") public Telephone getPhone()
    Deprecated.
    As of ISO 19115:2014, replaced by `getPhones()`.
    Returns telephone numbers at which the organization or individual may be contacted. This method returns the first telephone number associated to `TelephoneType​.VOICE` or `TelephoneType​.FACSIMILE FACSIMILE`.
    Specified by:
      `getPhone` in interface `Contact`
    Returns:
      telephone numbers at which the organization or individual may be contacted, or `null`.

  - ### setPhone

    @Deprecated(since="1.0") public void setPhone(Telephone newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `setPhones(Collection)`.
    Sets telephone numbers at which the organization or individual may be contacted. This method delegates to `setPhones(Collection)`.
    Parameters:
      `newValue` - the new telephone, or `null` if none.

  - ### getAddresses

    @UML(identifier="address", obligation=OPTIONAL, specification=ISO_19115) public Collection<Address> getAddresses()
    Returns the physical and email addresses at which the organization or individual may be contacted.
    Returns:
      physical and email addresses at which the organization or individual may be contacted, or `null`.
    Since:
      0.5

  - ### setAddresses

    public void setAddresses(Collection<? extends Address> newValues)
    Sets the physical and email addresses at which the organization or individual may be contacted.
    Parameters:
      `newValues` - the new addresses.
    Since:
      0.5

  - ### getAddress

    @Deprecated(since="1.0") public Address getAddress()
    Deprecated.
    As of ISO 19115:2014, replaced by `getAddresses()`.
    Returns the physical and email address at which the organization or individual may be contacted. This method returns the first `adress` element, or null if none.
    Specified by:
      `getAddress` in interface `Contact`
    Returns:
      physical and email address at which the organization or individual may be contacted, or `null`.

  - ### setAddress

    @Deprecated(since="1.0") public void setAddress(Address newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `setAddresses(Collection)`.
    Sets the physical and email address at which the organization or individual may be contacted. This method delegates to `setAddresses(Collection)`.
    Parameters:
      `newValue` - the new address, or `null` if none.

  - ### getOnlineResources

    @UML(identifier="onlineResource", obligation=OPTIONAL, specification=ISO_19115) public Collection<OnlineResource> getOnlineResources()
    Returns on-line information that can be used to contact the individual or organization.
    Returns:
      on-line information that can be used to contact the individual or organization.
    Since:
      0.5

  - ### setOnlineResources

    public void setOnlineResources(Collection<? extends OnlineResource> newValues)
    Sets on-line information that can be used to contact the individual or organization.
    Parameters:
      `newValues` - the new online resources.
    Since:
      0.5

  - ### getOnlineResource

    @Deprecated(since="1.0") public OnlineResource getOnlineResource()
    Deprecated.
    As of ISO 19115:2014, replaced by `getOnlineResources()`.
    Returns on-line information that can be used to contact the individual or organization. This method returns the first `online resource` element, or null if none.
    Specified by:
      `getOnlineResource` in interface `Contact`
    Returns:
      on-line information that can be used to contact the individual or organization, or `null`.

  - ### setOnlineResource

    @Deprecated(since="1.0") public void setOnlineResource(OnlineResource newValue)
    Deprecated.
    As of ISO 19115:2014, replaced by `setOnlineResources(Collection)`.
    Sets on-line information that can be used to contact the individual or organization. This method delegates to `setOnlineResources(Collection)`.
    Parameters:
      `newValue` - the new online resource, or `null` if none.

  - ### getHoursOfService

    public InternationalString getHoursOfService()
    Returns the time period (including time zone) when individuals can contact the organization or individual.
    Upcoming API change — multiplicity
    As of ISO 19115:2014, this singleton has been replaced by a collection. This change will tentatively be applied in GeoAPI 4.0.
    Specified by:
      `getHoursOfService` in interface `Contact`
    Returns:
      time period when individuals can contact the organization or individual.

  - ### setHoursOfService

    public void setHoursOfService(InternationalString newValue)
    Sets time period (including time zone) when individuals can contact the organization or individual.
    Upcoming API change — multiplicity
    As of ISO 19115:2014, this singleton has been replaced by a collection. This change will tentatively be applied in GeoAPI 4.0.
    Parameters:
      `newValue` - the new hours of service.

  - ### getContactInstructions

    public InternationalString getContactInstructions()
    Returns supplemental instructions on how or when to contact the individual or organization.
    Specified by:
      `getContactInstructions` in interface `Contact`
    Returns:
      supplemental instructions on how or when to contact the individual or organization, or `null`.

  - ### setContactInstructions

    public void setContactInstructions(InternationalString newValue)
    Sets supplemental instructions on how or when to contact the individual or organization.
    Parameters:
      `newValue` - the new contact instructions, or `null` if none.

  - ### getContactType

    @UML(identifier="contactType", obligation=OPTIONAL, specification=ISO_19115) public InternationalString getContactType()
    Type of the contact. Returns `null` if none.
    Returns:
      type of the contact, or `null` if none.
    Since:
      0.5

  - ### setContactType

    public void setContactType(InternationalString newValue)
    Sets new type of the contact.
    Parameters:
      `newValue` - the new type of the contact.
    Since:
      0.5