Package org.apache.sis.metadata.iso.extent

# 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.
Example: 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

Defined in the `sis-metadata` module

- ## 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(CharSequence description)`
  Creates an inclusive geographic description initialized to the given natural language 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.

- ## 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, transitionTo`

  ### 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, equals, equals, getInterface, hashCode, isEmpty, prune, toString`

  ### Methods inherited from class Object

  `clone, 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(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(CharSequence description)
    Creates an inclusive geographic description initialized to the given natural language description. This constructor sets the inclusion property to `true` and the identifier code to one of the following choices:
    - the given `description` string if it is a valid Unicode identifier,
    - otherwise an acronym of the given `description`.
    Parameters:
      `description` - the natural language description of the meaning of the code value, or `null` if none.
    Since:
      0.6

  - ### DefaultGeographicDescription

    public DefaultGeographicDescription(GeographicDescription object)
    Constructs a new instance initialized with the values from the specified metadata object. This is a shallow copy constructor, since 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, since 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.