# Class AbstractIdentification

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
AbstractIdentification

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

Direct Known Subclasses:
  `DefaultDataIdentification`, `DefaultServiceIdentification`

public class AbstractIdentification extends ISOMetadata implements Identification
Basic information required to uniquely identify a resource or resources. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
`MD_Identification` `├─citation………………………………………` Citation data for the resource(s). `│ ├─title……………………………………` Name by which the cited resource is known. `│ └─date………………………………………` Reference date for the cited resource. `├─abstract………………………………………` Brief narrative summary of the content of the resource(s). `├─extent……………………………………………` Bounding polygon, vertical, and temporal extent of the dataset. `│ ├─description……………………` The spatial and temporal extent for the referring object. `│ ├─geographicElement……` Geographic component of the extent of the referring object. `│ ├─temporalElement…………` Temporal component of the extent of the referring object. `│ └─verticalElement…………` Vertical component of the extent of the referring object. `└─topicCategory…………………………` Main theme(s) of the dataset.

## 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
  `AbstractIdentification()`
  Constructs an initially empty identification.
  `AbstractIdentification(Citation citation, CharSequence abstracts)`
  Creates an identification initialized to the specified values.
  `AbstractIdentification(Citation citation, CharSequence abstracts, TopicCategory topicCategory)`
  Creates an identification initialized to the specified values.
  `AbstractIdentification(Identification object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static AbstractIdentification`
  `castOrCopy(Identification object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `InternationalString`
  `getAbstract()`
  Returns a brief narrative summary of the resource(s).
  `Collection<Citation>`
  `getAdditionalDocumentations()`
  Returns other documentation associated with the resource.
  `Collection<AggregateInformation>`
  `getAggregationInfo()`
  Deprecated.
  As of ISO 19115:2014, replaced by `getAssociatedResources()`.
  `Collection<DefaultAssociatedResource>`
  `getAssociatedResources()`
  Provides associated resource information.
  `Citation`
  `getCitation()`
  Returns the citation for the resource(s).
  `Collection<String>`
  `getCredits()`
  Returns the recognition of those who contributed to the resource(s).
  `Collection<Keywords>`
  `getDescriptiveKeywords()`
  Provides category keywords, their type, and reference source.
  `Collection<Extent>`
  `getExtents()`
  Returns the spatial and temporal extent of the resource.
  `Collection<BrowseGraphic>`
  `getGraphicOverviews()`
  Provides a graphic that illustrates the resource(s) (should include a legend for the graphic).
  `Collection<ResponsibleParty>`
  `getPointOfContacts()`
  Returns the identification of, and means of communication with, person(s) and organizations(s) associated with the resource(s).
  `Identifier`
  `getProcessingLevel()`
  Returns code(s) that identifies the level of processing in the producers coding system of a resource.
  `InternationalString`
  `getPurpose()`
  Returns a summary of the intentions with which the resource(s) was developed.
  `Collection<Constraints>`
  `getResourceConstraints()`
  Provides information about constraints which apply to the resource(s).
  `Collection<Format>`
  `getResourceFormats()`
  Provides a description of the format of the resource(s).
  `Collection<MaintenanceInformation>`
  `getResourceMaintenances()`
  Provides information about the frequency of resource updates, and the scope of those updates.
  `Collection<Usage>`
  `getResourceSpecificUsages()`
  Provides basic information about specific application(s) for which the resource(s) has/have been or is being used by different users.
  `Collection<SpatialRepresentationType>`
  `getSpatialRepresentationTypes()`
  Returns the methods used to spatially represent geographic information.
  `Collection<Resolution>`
  `getSpatialResolutions()`
  Returns the factor which provides a general understanding of the density of spatial data in the resource(s).
  `Collection<Progress>`
  `getStatus()`
  Returns the status of the resource(s).
  `Collection<TemporalAmount>`
  `getTemporalResolutions()`
  Returns the smallest resolvable temporal period in a resource.
  `Collection<TopicCategory>`
  `getTopicCategories()`
  Returns the main theme(s) of the resource.
  `void`
  `setAbstract(InternationalString newValue)`
  Sets a brief narrative summary of the resource(s).
  `void`
  `setAdditionalDocumentations(Collection<? extends Citation> newValues)`
  Sets other documentation associated with the resource.
  `void`
  `setAggregationInfo(Collection<? extends AggregateInformation> newValues)`
  Deprecated.
  As of ISO 19115:2014, replaced by `setAssociatedResources(Collection)`.
  `void`
  `setAssociatedResources(Collection<? extends DefaultAssociatedResource> newValues)`
  Sets associated resource information.
  `void`
  `setCitation(Citation newValue)`
  Sets the citation for the resource(s).
  `void`
  `setCredits(Collection<? extends String> newValues)`
  Sets the recognition of those who contributed to the resource(s).
  `void`
  `setDescriptiveKeywords(Collection<? extends Keywords> newValues)`
  Sets category keywords, their type, and reference source.
  `void`
  `setExtents(Collection<? extends Extent> newValues)`
  Sets the spatial and temporal extent of the resource.
  `void`
  `setGraphicOverviews(Collection<? extends BrowseGraphic> newValues)`
  Sets a graphic that illustrates the resource(s).
  `void`
  `setPointOfContacts(Collection<? extends ResponsibleParty> newValues)`
  Sets the means of communication with persons(s) and organizations(s) associated with the resource(s).
  `void`
  `setProcessingLevel(Identifier newValue)`
  Sets code that identifies the level of processing in the producers coding system of a resource.
  `void`
  `setPurpose(InternationalString newValue)`
  Sets a summary of the intentions with which the resource(s) was developed.
  `void`
  `setResourceConstraints(Collection<? extends Constraints> newValues)`
  Sets information about constraints which apply to the resource(s).
  `void`
  `setResourceFormats(Collection<? extends Format> newValues)`
  Sets a description of the format of the resource(s).
  `void`
  `setResourceMaintenances(Collection<? extends MaintenanceInformation> newValues)`
  Sets information about the frequency of resource updates, and the scope of those updates.
  `void`
  `setResourceSpecificUsages(Collection<? extends Usage> newValues)`
  Sets basic information about specific application(s).
  `void`
  `setSpatialRepresentationTypes(Collection<? extends SpatialRepresentationType> newValues)`
  Sets the method used to spatially represent geographic information.
  `void`
  `setSpatialResolutions(Collection<? extends Resolution> newValues)`
  Sets the factor which provides a general understanding of the density of spatial data in the resource(s).
  `void`
  `setStatus(Collection<? extends Progress> newValues)`
  Sets the status of the resource(s).
  `void`
  `setTemporalResolutions(Collection<? extends TemporalAmount> newValues)`
  Sets the smallest resolvable temporal period in a resource.
  `void`
  `setTopicCategories(Collection<? extends TopicCategory> newValues)`
  Sets the main theme(s) of the resource.

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

  - ### AbstractIdentification

    public AbstractIdentification()
    Constructs an initially empty identification.

  - ### AbstractIdentification

    public AbstractIdentification(Citation citation, CharSequence abstracts)
    Creates an identification initialized to the specified values.
    Parameters:
      `citation` - the citation data for the resource(s), or `null` if none.
      `abstracts` - a brief narrative summary of the content of the resource(s), or `null` if none.

  - ### AbstractIdentification

    public AbstractIdentification(Citation citation, CharSequence abstracts, TopicCategory topicCategory)
    Creates an identification initialized to the specified values.
    Parameters:
      `citation` - the citation data for the resource(s), or `null` if none.
      `abstracts` - a brief narrative summary of the content of the resource(s), or `null` if none.
      `topicCategory` - the main theme of the dataset, or `null` if none.
    Since:
      1.5

  - ### AbstractIdentification

    public AbstractIdentification(Identification 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(Identification)`

- ## Method Details

  - ### castOrCopy

    public static AbstractIdentification castOrCopy(Identification 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 an instance of `DataIdentification` or `ServiceIdentification`, then this method delegates to the `castOrCopy(…)` method of the corresponding SIS subclass. Note that if the given object implements more than one of the above-cited interfaces, then the `castOrCopy(…)` method to be used is unspecified.
    - Otherwise if the given object is already an instance of `AbstractIdentification`, then it is returned unchanged.
    - Otherwise a new `AbstractIdentification` 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.

  - ### getCitation

    public Citation getCitation()
    Returns the citation for the resource(s).
    Specified by:
      `getCitation` in interface `Identification`
    Returns:
      citation for the resource(s).

  - ### setCitation

    public void setCitation(Citation newValue)
    Sets the citation for the resource(s).
    Parameters:
      `newValue` - the new citation.

  - ### getAbstract

    public InternationalString getAbstract()
    Returns a brief narrative summary of the resource(s).
    Specified by:
      `getAbstract` in interface `Identification`
    Returns:
      brief narrative summary of the resource(s).

  - ### setAbstract

    public void setAbstract(InternationalString newValue)
    Sets a brief narrative summary of the resource(s).
    Parameters:
      `newValue` - the new summary of resource(s).

  - ### getPurpose

    public InternationalString getPurpose()
    Returns a summary of the intentions with which the resource(s) was developed.
    Specified by:
      `getPurpose` in interface `Identification`
    Returns:
      the intentions with which the resource(s) was developed, or `null`.

  - ### setPurpose

    public void setPurpose(InternationalString newValue)
    Sets a summary of the intentions with which the resource(s) was developed.
    Parameters:
      `newValue` - the new summary of intention.

  - ### getCredits

    public Collection<String> getCredits()
    Returns the recognition of those who contributed to the resource(s).
    Upcoming API change — generalization
    The element type may be changed to the `InternationalString` interface in GeoAPI 4.0.
    Specified by:
      `getCredits` in interface `Identification`
    Returns:
      recognition of those who contributed to the resource(s).

  - ### setCredits

    public void setCredits(Collection<? extends String> newValues)
    Sets the recognition of those who contributed to the resource(s).
    Upcoming API change — generalization
    The element type may be changed to the `InternationalString` interface in GeoAPI 4.0.
    Parameters:
      `newValues` - the new credits.

  - ### getStatus

    public Collection<Progress> getStatus()
    Returns the status of the resource(s).
    Specified by:
      `getStatus` in interface `Identification`
    Returns:
      status of the resource(s), or `null`.

  - ### setStatus

    public void setStatus(Collection<? extends Progress> newValues)
    Sets the status of the resource(s).
    Parameters:
      `newValues` - the new status.

  - ### getPointOfContacts

    public Collection<ResponsibleParty> getPointOfContacts()
    Returns the identification of, and means of communication with, person(s) and organizations(s) associated with the resource(s).
    Upcoming API change — generalization
    As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change may be applied in GeoAPI 4.0.
    Specified by:
      `getPointOfContacts` in interface `Identification`
    Returns:
      means of communication with person(s) and organizations(s) associated with the resource(s).
    See Also:
      - `DefaultMetadata​.getContacts()`

  - ### setPointOfContacts

    public void setPointOfContacts(Collection<? extends ResponsibleParty> newValues)
    Sets the means of communication with persons(s) and organizations(s) associated with the resource(s).
    Upcoming API change — generalization
    As of ISO 19115:2014, `ResponsibleParty` is replaced by the `Responsibility` parent interface. This change may be applied in GeoAPI 4.0.
    Parameters:
      `newValues` - the new points of contacts.

  - ### getSpatialRepresentationTypes

    @UML(identifier="spatialRepresentationType", obligation=OPTIONAL, specification=ISO_19115) public Collection<SpatialRepresentationType> getSpatialRepresentationTypes()
    Returns the methods used to spatially represent geographic information.
    Returns:
      methods used to spatially represent geographic information.
    Since:
      0.5

  - ### setSpatialRepresentationTypes

    public void setSpatialRepresentationTypes(Collection<? extends SpatialRepresentationType> newValues)
    Sets the method used to spatially represent geographic information.
    Parameters:
      `newValues` - the new spatial representation types.
    Since:
      0.5

  - ### getSpatialResolutions

    @UML(identifier="spatialResolution", obligation=OPTIONAL, specification=ISO_19115) public Collection<Resolution> getSpatialResolutions()
    Returns the factor which provides a general understanding of the density of spatial data in the resource(s). This element should be repeated when describing upper and lower range.
    Returns:
      factor which provides a general understanding of the density of spatial data.
    Since:
      0.5

  - ### setSpatialResolutions

    public void setSpatialResolutions(Collection<? extends Resolution> newValues)
    Sets the factor which provides a general understanding of the density of spatial data in the resource(s).
    Parameters:
      `newValues` - the new spatial resolutions.
    Since:
      0.5

  - ### getTemporalResolutions

    @UML(identifier="temporalResolution", obligation=OPTIONAL, specification=ISO_19115) public Collection<TemporalAmount> getTemporalResolutions()
    Returns the smallest resolvable temporal period in a resource.
    Returns:
      smallest resolvable temporal period in a resource.
    Since:
      1.5

  - ### setTemporalResolutions

    public void setTemporalResolutions(Collection<? extends TemporalAmount> newValues)
    Sets the smallest resolvable temporal period in a resource.
    Parameters:
      `newValues` - the new temporal resolutions.
    Since:
      1.5

  - ### getTopicCategories

    @UML(identifier="topicCategory", obligation=CONDITIONAL, specification=ISO_19115) public Collection<TopicCategory> getTopicCategories()
    Returns the main theme(s) of the resource.
    Returns:
      main theme(s).
    Since:
      0.5

  - ### setTopicCategories

    public void setTopicCategories(Collection<? extends TopicCategory> newValues)
    Sets the main theme(s) of the resource.
    Parameters:
      `newValues` - the new topic categories.
    Since:
      0.5

  - ### getExtents

    @UML(identifier="extent", obligation=CONDITIONAL, specification=ISO_19115) public Collection<Extent> getExtents()
    Returns the spatial and temporal extent of the resource.
    Returns:
      spatial and temporal extent of the resource.
    Since:
      0.5

  - ### setExtents

    public void setExtents(Collection<? extends Extent> newValues)
    Sets the spatial and temporal extent of the resource.
    Parameters:
      `newValues` - the new extents
    Since:
      0.5

  - ### getAdditionalDocumentations

    @UML(identifier="additionalDocumentation", obligation=OPTIONAL, specification=ISO_19115) public Collection<Citation> getAdditionalDocumentations()
    Returns other documentation associated with the resource.
    Returns:
      other documentation associated with the resource.
    Since:
      0.5

  - ### setAdditionalDocumentations

    public void setAdditionalDocumentations(Collection<? extends Citation> newValues)
    Sets other documentation associated with the resource.
    Parameters:
      `newValues` - the documentation to associate with the resource.
    Since:
      0.5

  - ### getProcessingLevel

    @UML(identifier="processingLevel", obligation=OPTIONAL, specification=ISO_19115) public Identifier getProcessingLevel()
    Returns code(s) that identifies the level of processing in the producers coding system of a resource.
    Returns:
      code(s) that identifies the level of processing in the producers coding system of a resource.
    Since:
      0.5

  - ### setProcessingLevel

    public void setProcessingLevel(Identifier newValue)
    Sets code that identifies the level of processing in the producers coding system of a resource.
    Parameters:
      `newValue` - New code that identifies the level of processing.
    Since:
      0.5

  - ### getResourceMaintenances

    public Collection<MaintenanceInformation> getResourceMaintenances()
    Provides information about the frequency of resource updates, and the scope of those updates.
    Specified by:
      `getResourceMaintenances` in interface `Identification`
    Returns:
      frequency and scope of resource updates.

  - ### setResourceMaintenances

    public void setResourceMaintenances(Collection<? extends MaintenanceInformation> newValues)
    Sets information about the frequency of resource updates, and the scope of those updates.
    Parameters:
      `newValues` - the new resource maintenance info.

  - ### getGraphicOverviews

    public Collection<BrowseGraphic> getGraphicOverviews()
    Provides a graphic that illustrates the resource(s) (should include a legend for the graphic).
    Specified by:
      `getGraphicOverviews` in interface `Identification`
    Returns:
      a graphic that illustrates the resource(s).

  - ### setGraphicOverviews

    public void setGraphicOverviews(Collection<? extends BrowseGraphic> newValues)
    Sets a graphic that illustrates the resource(s).
    Parameters:
      `newValues` - the new graphics overviews.

  - ### getResourceFormats

    public Collection<Format> getResourceFormats()
    Provides a description of the format of the resource(s).
    Specified by:
      `getResourceFormats` in interface `Identification`
    Returns:
      description of the format.
    See Also:
      - `DefaultDistribution​.getDistributionFormats()`

  - ### setResourceFormats

    public void setResourceFormats(Collection<? extends Format> newValues)
    Sets a description of the format of the resource(s).
    Parameters:
      `newValues` - the new resource format.
    See Also:
      - `DefaultDistribution​.setDistributionFormats(Collection)`

  - ### getDescriptiveKeywords

    public Collection<Keywords> getDescriptiveKeywords()
    Provides category keywords, their type, and reference source.
    Specified by:
      `getDescriptiveKeywords` in interface `Identification`
    Returns:
      category keywords, their type, and reference source.

  - ### setDescriptiveKeywords

    public void setDescriptiveKeywords(Collection<? extends Keywords> newValues)
    Sets category keywords, their type, and reference source.
    Parameters:
      `newValues` - the new descriptive keywords.

  - ### getResourceSpecificUsages

    public Collection<Usage> getResourceSpecificUsages()
    Provides basic information about specific application(s) for which the resource(s) has/have been or is being used by different users.
    Specified by:
      `getResourceSpecificUsages` in interface `Identification`
    Returns:
      information about specific application(s) for which the resource(s) has/have been or is being used.

  - ### setResourceSpecificUsages

    public void setResourceSpecificUsages(Collection<? extends Usage> newValues)
    Sets basic information about specific application(s).
    Parameters:
      `newValues` - the new resource specific usages.

  - ### getResourceConstraints

    public Collection<Constraints> getResourceConstraints()
    Provides information about constraints which apply to the resource(s).
    Specified by:
      `getResourceConstraints` in interface `Identification`
    Returns:
      constraints which apply to the resource(s).

  - ### setResourceConstraints

    public void setResourceConstraints(Collection<? extends Constraints> newValues)
    Sets information about constraints which apply to the resource(s).
    Parameters:
      `newValues` - the new resource constraints.

  - ### getAssociatedResources

    @UML(identifier="associatedResource", obligation=OPTIONAL, specification=ISO_19115) public Collection<DefaultAssociatedResource> getAssociatedResources()
    Provides associated resource information.
    Upcoming API change — generalization
    The element type will be changed to the `AssociatedResource` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Returns:
      associated resource information.
    Since:
      0.5

  - ### setAssociatedResources

    public void setAssociatedResources(Collection<? extends DefaultAssociatedResource> newValues)
    Sets associated resource information.
    Upcoming API change — generalization
    The element type will be changed to the `AssociatedResource` interface when GeoAPI will provide it (tentatively in GeoAPI 3.1).
    Parameters:
      `newValues` - the new associated resources.
    Since:
      0.5

  - ### getAggregationInfo

    @Deprecated(since="1.0") public Collection<AggregateInformation> getAggregationInfo()
    Deprecated.
    As of ISO 19115:2014, replaced by `getAssociatedResources()`.
    Provides aggregate dataset information.
    Specified by:
      `getAggregationInfo` in interface `Identification`
    Returns:
      aggregate dataset information.

  - ### setAggregationInfo

    @Deprecated(since="1.0") public void setAggregationInfo(Collection<? extends AggregateInformation> newValues)
    Deprecated.
    As of ISO 19115:2014, replaced by `setAssociatedResources(Collection)`.
    Sets aggregate dataset information.
    Parameters:
      `newValues` - the new aggregation info.