# Class DefaultGeographicDescription

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
AbstractGeographicExtent
DefaultGeographicDescription

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

public class DefaultGeographicDescription extends AbstractGeographicExtent implements GeographicDescription
Description of the geographic area using identifiers. The following properties are mandatory in a well-formed metadata according ISO 19115:
`EX_GeographicDescription` `└─geographicIdentifier……` The identifier used to represent a geographic area. `└─code……………………………………` Alphanumeric value identifying an instance in the namespace.
The area is given by a geographic identifier, which may be a code in the codespace of some authority (for example, an EPSG code). In addition, the geographic identifier can optionally have a natural language description.

## Examples

A geographic area may be identified by the `1731` code in the `EPSG` codespace. The natural language description for `EPSG:1731` can be France – mainland north of 48.15°N.

## 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
  `DefaultGeographicDescription()`
  Constructs an initially empty geographic description.
  `DefaultGeographicDescription(Citation authority, String code)`
  Creates an inclusive geographic description initialized to the given identifier.
  `DefaultGeographicDescription(GeographicDescription object)`
  Constructs a new instance initialized with the values from the specified metadata object.
  `DefaultGeographicDescription(Identifier value)`
  Constructs a geographic description initialized to the given identifier.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultGeographicDescription`
  `castOrCopy(GeographicDescription object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Identifier`
  `getGeographicIdentifier()`
  Returns the identifier used to represent a geographic area.
  `void`
  `setGeographicIdentifier(Identifier newValue)`
  Sets the identifier used to represent a geographic area.

  ### Methods inherited from class AbstractGeographicExtent

  `castOrCopy, getInclusion, setInclusion`

  ### Methods inherited from class ISOMetadata

  `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier`

  ### Methods inherited from class ModifiableMetadata

  `checkWritePermission, 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`

  ### Methods inherited from interface GeographicExtent

  `getInclusion`

- ## Constructor Details

  - ### DefaultGeographicDescription

    public DefaultGeographicDescription()
    Constructs an initially empty geographic description.

  - ### DefaultGeographicDescription

    public DefaultGeographicDescription(Identifier value)
    Constructs a geographic description initialized to the given identifier.
    Parameters:
      `value` - the new geographic identifier, or `null` if none.
    Since:
      1.5
    See Also:
      - `setGeographicIdentifier(Identifier)`

  - ### DefaultGeographicDescription

    public DefaultGeographicDescription(Citation authority, String code)
    Creates an inclusive geographic description initialized to the given identifier. This constructor sets the inclusion property to `true`.

    #### Usage note

    If the description is a sentence like “Netherlands offshore”, it may not be suitable for the `code` argument. Callers may consider using the identifier description as an alternative and keep the code for a more compact string (often a primary key).

    #### Example

    `new DefaultGeographicDescription(`Citations​.EPSG`, "1731")` can stand for France – mainland north of 48.15°N.
    Parameters:
      `authority` - the authority of the identifier code, or `null` if none.
      `code` - the identifier code used to represent a geographic area, or `null` if none.

  - ### DefaultGeographicDescription

    public DefaultGeographicDescription(GeographicDescription 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(GeographicDescription)`

- ## Method Details

  - ### castOrCopy

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

  - ### getGeographicIdentifier

    public Identifier getGeographicIdentifier()
    Returns the identifier used to represent a geographic area.

    #### Example

    An identifier with the following properties:
    - the `"EPSG"` code space,
    - the `"1731"` code, and
    - the France – mainland north of 48.15°N description.
    Specified by:
      `getGeographicIdentifier` in interface `GeographicDescription`
    Returns:
      the identifier used to represent a geographic area, or `null`.

  - ### setGeographicIdentifier

    public void setGeographicIdentifier(Identifier newValue)
    Sets the identifier used to represent a geographic area.
    Parameters:
      `newValue` - the new geographic identifier.