# Class AbstractParty

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
AbstractParty

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

Direct Known Subclasses:
  `DefaultIndividual`, `DefaultOrganisation`

@TitleProperty(name="name") @UML(identifier="CI_Party", specification=ISO_19115) public class AbstractParty extends ISOMetadata
Information about the individual and / or organization of the party. The following property is conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
`CI_Party` `└─name……` Name of the party.
Note on International Standard versions
This class is derived from a new type defined in the ISO 19115 international standard published in 2014, while GeoAPI 3.0 is based on the version published in 2003. Consequently this implementation class does not yet implement a GeoAPI interface, but is expected to do so after the next GeoAPI releases. When the interface will become available, all references to this implementation class in Apache SIS will be replaced be references to the `Party` interface.

## 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.5
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
  `AbstractParty()`
  Constructs an initially empty party.
  `AbstractParty(CharSequence name, Contact contactInfo)`
  Constructs a party initialized with the specified name and contact information.
  `AbstractParty(AbstractParty object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Collection<Contact>`
  `getContactInfo()`
  Returns the contact information for the party.
  `Collection<Identifier>`
  `getIdentifiers()`
  Identifiers of the party.
  `InternationalString`
  `getName()`
  Return the name of the party.
  `void`
  `setContactInfo(Collection<? extends Contact> newValues)`
  Sets the contact information for the party.
  `void`
  `setIdentifiers(Collection<? extends Identifier> newValues)`
  Sets the identifiers of the party.
  `void`
  `setName(InternationalString newValue)`
  Sets the name of the party.

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, 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

  - ### AbstractParty

    public AbstractParty()
    Constructs an initially empty party.

  - ### AbstractParty

    public AbstractParty(CharSequence name, Contact contactInfo)
    Constructs a party initialized with the specified name and contact information.
    Parameters:
      `name` - name of the party, or `null` if none.
      `contactInfo` - contact information for the party, or `null` if none.

  - ### AbstractParty

    public AbstractParty(AbstractParty 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.

- ## Method Details

  - ### getName

    @UML(identifier="name", obligation=CONDITIONAL, specification=ISO_19115) public InternationalString getName()
    Return the name of the party.
    Returns:
      name of the party.

  - ### setName

    public void setName(InternationalString newValue)
    Sets the name of the party.
    Parameters:
      `newValue` - the new name of the party.

  - ### getIdentifiers

    public Collection<Identifier> getIdentifiers()
    Identifiers of the party.

    #### Unified identifiers view

    In this SIS implementation, the collection returned by this method includes the XML identifiers (ID, UUID, etc.), thus providing a unified view of every kind of identifiers associated to this party.

    #### XML marshalling note

    The `<mac:identifier>` element marshalled to XML will exclude all the above cited identifiers, for compliance with ISO 19115 model. Those identifiers will appear in other XML elements or attributes.
    Specified by:
      `getIdentifiers` in interface `IdentifiedObject`
    Overrides:
      `getIdentifiers` in class `ISOMetadata`
    Returns:
      identifiers of the party, or an empty collection if none.
    Since:
      1.3
    See Also:
      - `DefaultCitation​.getIdentifiers()`
      - `DefaultObjective​.getIdentifiers()`
      - `AbstractIdentifiedObject​.getIdentifiers()`

  - ### setIdentifiers

    public void setIdentifiers(Collection<? extends Identifier> newValues)
    Sets the identifiers of the party.

    XML identifiers (ID, UUID, etc.), are not affected by this method, unless they are explicitly provided in the given collection.

    Parameters:
      `newValues` - the new identifiers values.
    Since:
      1.3

  - ### getContactInfo

    @UML(identifier="contactInfo", obligation=OPTIONAL, specification=ISO_19115) public Collection<Contact> getContactInfo()
    Returns the contact information for the party.
    Returns:
      contact information for the party.

  - ### setContactInfo

    public void setContactInfo(Collection<? extends Contact> newValues)
    Sets the contact information for the party.
    Parameters:
      `newValues` - the new contact information for the party.