Package org.apache.sis.metadata.iso.lineage

## Class DefaultSource

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - DefaultSource

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

      @TitleProperty(name="description")
      public class DefaultSource
      extends ISOMetadata
      implements Source

  Information about the source data used in creating the data specified by the scope. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
  `LI_Source` `├─description……………………………………………` Detailed description of the level of the source data. `└─scope……………………………………………………………` Type and / or extent of the source. `├─level…………………………………………………` Hierarchical level of the data specified by the scope. `└─levelDescription……………………` Detailed description about the level of the data specified by the scope. `├─attributeInstances……` Attribute instances to which the information applies. `├─attributes…………………………` Attributes to which the information applies. `├─dataset…………………………………` Dataset to which the information applies. `├─featureInstances…………` Feature instances to which the information applies. `├─features………………………………` Features to which the information applies. `└─other………………………………………` Class of information that does not fall into the other categories to which the information applies.
  According ISO 19115, at least one of description and source extents shall be provided.
  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
    --- | ---
    `DefaultSource()` | Creates an initially empty source.
    `DefaultSource​(CharSequence description)` | Creates a source initialized with the given description.
    `DefaultSource​(Source object)` | Constructs a new instance initialized with the values from the specified metadata object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultSource` | `castOrCopy​(Source object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `InternationalString` | `getDescription()` | Returns a detailed description of the level of the source data.
    `Identifier` | `getProcessedLevel()` | Returns the processing level of the source data.
    `NominalResolution` | `getResolution()` | Returns the distance between consistent parts (centre, left side, right side) of two adjacent pixels.
    `RepresentativeFraction` | `getScaleDenominator()` | Deprecated. As of ISO 19115:2014, moved to `DefaultResolution​.getEquivalentScale()`.
    `Scope` | `getScope()` | Return the type and / or extent of the source.
    `Citation` | `getSourceCitation()` | Returns the recommended reference to be used for the source data.
    `Collection<Extent>` | `getSourceExtents()` | Deprecated. As of ISO 19115:2014, moved to `DefaultScope​.getExtents()`.
    `Collection<Citation>` | `getSourceMetadata()` | Returns the references to metadata for the source.
    `ReferenceSystem` | `getSourceReferenceSystem()` | Returns the spatial reference system used by the source data.
    `Resolution` | `getSourceSpatialResolution()` | Returns the spatial resolution expressed as a scale factor, an angle or a level of detail.
    `Collection<ProcessStep>` | `getSourceSteps()` | Returns information about process steps in which this source was used.
    `void` | `setDescription​(InternationalString newValue)` | Sets a detailed description of the level of the source data.
    `void` | `setProcessedLevel​(Identifier newValue)` | Sets the processing level of the source data.
    `void` | `setResolution​(NominalResolution newValue)` | Sets the distance between consistent parts (centre, left side, right side) of two adjacent pixels.
    `void` | `setScaleDenominator​(RepresentativeFraction newValue)` | Deprecated. As of ISO 19115:2014, moved to `DefaultResolution​.setEquivalentScale(RepresentativeFraction)`.
    `void` | `setScope​(Scope newValue)` | Sets the type and / or extent of the source.
    `void` | `setSourceCitation​(Citation newValue)` | Sets the recommended reference to be used for the source data.
    `void` | `setSourceExtents​(Collection<? extends Extent> newValues)` | Deprecated. As of ISO 19115:2014, moved to `DefaultScope​.setExtents(Collection)`.
    `void` | `setSourceMetadata​(Collection<? extends Citation> newValues)` | Sets the references to metadata for the source.
    `void` | `setSourceReferenceSystem​(ReferenceSystem newValue)` | Sets the spatial reference system used by the source data.
    `void` | `setSourceSpatialResolution​(Resolution newValue)` | Sets the spatial resolution expressed as a scale factor, an angle or a level of detail.
    `void` | `setSourceSteps​(Collection<? extends ProcessStep> newValues)` | Sets information about process steps in which this source was used.

    - ### Methods inherited from class ISOMetadata

      `getIdentifier, getIdentifierMap, getIdentifiers, getStandard, setIdentifier, transitionTo`

    - ### Methods inherited from class ModifiableMetadata

      `checkWritePermission, checkWritePermission, collectionType, copyCollection, copyList, copyMap, copySet, freeze, isModifiable, nonNullCollection, nonNullList, nonNullMap, nonNullSet, singleton, state, unmodifiable, 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`

- - ### Constructor Detail

    - #### DefaultSource

          public DefaultSource()

      Creates an initially empty source.

    - #### DefaultSource

          public DefaultSource​(CharSequence description)

      Creates a source initialized with the given description.
      Parameters:
        `description` - a detailed description of the level of the source data, or `null`.

    - #### DefaultSource

          public DefaultSource​(Source 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(Source)`

  - ### Method Detail

    - #### castOrCopy

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

    - #### getDescription

          public InternationalString getDescription()

      Returns a detailed description of the level of the source data.
      Specified by:
        `getDescription` in interface `Source`
      Returns:
        description of the level of the source data, or `null`.

    - #### setDescription

          public void setDescription​(InternationalString newValue)

      Sets a detailed description of the level of the source data.
      Parameters:
        `newValue` - the new description.

    - #### getSourceSpatialResolution

          @UML(identifier="sourceSpatialResolution",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Resolution getSourceSpatialResolution()

      Returns the spatial resolution expressed as a scale factor, an angle or a level of detail.
      Returns:
        spatial resolution expressed as a scale factor, an angle or a level of detail, or `null` if none.
      Since:
        0.5

    - #### setSourceSpatialResolution

          public void setSourceSpatialResolution​(Resolution newValue)

      Sets the spatial resolution expressed as a scale factor, an angle or a level of detail.
      Parameters:
        `newValue` - the new spatial resolution.
      Since:
        0.5

    - #### getScaleDenominator

          @Deprecated
          public RepresentativeFraction getScaleDenominator()

      Deprecated.
      As of ISO 19115:2014, moved to `DefaultResolution​.getEquivalentScale()`.
      Returns the denominator of the representative fraction on a source map. This method fetches the value from the source spatial resolution.
      Specified by:
        `getScaleDenominator` in interface `Source`
      Returns:
        representative fraction on a source map, or `null`.

    - #### setScaleDenominator

          @Deprecated
          public void setScaleDenominator​(RepresentativeFraction newValue)

      Deprecated.
      As of ISO 19115:2014, moved to `DefaultResolution​.setEquivalentScale(RepresentativeFraction)`.
      Sets the denominator of the representative fraction on a source map. This method stores the value in the source spatial resolution.
      Parameters:
        `newValue` - the new scale denominator.

    - #### getSourceReferenceSystem

          public ReferenceSystem getSourceReferenceSystem()

      Returns the spatial reference system used by the source data.
      Specified by:
        `getSourceReferenceSystem` in interface `Source`
      Returns:
        spatial reference system used by the source data, or `null`.

    - #### setSourceReferenceSystem

          public void setSourceReferenceSystem​(ReferenceSystem newValue)

      Sets the spatial reference system used by the source data.
      Parameters:
        `newValue` - the new reference system.

    - #### getSourceCitation

          public Citation getSourceCitation()

      Returns the recommended reference to be used for the source data.
      Specified by:
        `getSourceCitation` in interface `Source`
      Returns:
        recommended reference to be used for the source data, or `null`.

    - #### setSourceCitation

          public void setSourceCitation​(Citation newValue)

      Sets the recommended reference to be used for the source data.
      Parameters:
        `newValue` - the new source citation.

    - #### getSourceMetadata

          @UML(identifier="sourceMetadata",
               obligation=OPTIONAL,
               specification=ISO_19115)
          public Collection<Citation> getSourceMetadata()

      Returns the references to metadata for the source.
      Returns:
        references to metadata for the source.
      Since:
        0.5

    - #### setSourceMetadata

          public void setSourceMetadata​(Collection<? extends Citation> newValues)

      Sets the references to metadata for the source.
      Parameters:
        `newValues` - the new references.
      Since:
        0.5

    - #### getScope

          @UML(identifier="scope",
               obligation=CONDITIONAL,
               specification=ISO_19115)
          public Scope getScope()

      Return the type and / or extent of the source. This information should be provided if the description is not provided.
      Returns:
        type and / or extent of the source, or `null` if none.
      Since:
        0.5

    - #### setScope

          public void setScope​(Scope newValue)

      Sets the type and / or extent of the source.
      Parameters:
        `newValue` - the new type and / or extent of the source.
      Since:
        0.5

    - #### getSourceExtents

          @Deprecated
          public Collection<Extent> getSourceExtents()

      Deprecated.
      As of ISO 19115:2014, moved to `DefaultScope​.getExtents()`.
      Returns the information about the spatial, vertical and temporal extent of the source data. This method fetches the values from the scope.
      Specified by:
        `getSourceExtents` in interface `Source`
      Returns:
        information about the extent of the source data.

    - #### setSourceExtents

          @Deprecated
          public void setSourceExtents​(Collection<? extends Extent> newValues)

      Deprecated.
      As of ISO 19115:2014, moved to `DefaultScope​.setExtents(Collection)`.
      Information about the spatial, vertical and temporal extent of the source data. This method stores the values in the scope.
      Parameters:
        `newValues` - the new source extents.

    - #### getSourceSteps

          public Collection<ProcessStep> getSourceSteps()

      Returns information about process steps in which this source was used.
      Specified by:
        `getSourceSteps` in interface `Source`
      Returns:
        information about process steps in which this source was used.

    - #### setSourceSteps

          public void setSourceSteps​(Collection<? extends ProcessStep> newValues)

      Sets information about process steps in which this source was used.
      Parameters:
        `newValues` - the new process steps.

    - #### getProcessedLevel

          public Identifier getProcessedLevel()

      Returns the processing level of the source data. `null` if unspecified.
      Specified by:
        `getProcessedLevel` in interface `Source`
      Returns:
        processing level of the source data, or `null`.

    - #### setProcessedLevel

          public void setProcessedLevel​(Identifier newValue)

      Sets the processing level of the source data.
      Parameters:
        `newValue` - the new processed level value.

    - #### getResolution

          public NominalResolution getResolution()

      Returns the distance between consistent parts (centre, left side, right side) of two adjacent pixels.
      Specified by:
        `getResolution` in interface `Source`
      Returns:
        distance between consistent parts of two adjacent pixels, or `null`.

    - #### setResolution

          public void setResolution​(NominalResolution newValue)

      Sets the distance between consistent parts (centre, left side, right side) of two adjacent pixels.
      Parameters:
        `newValue` - the new nominal resolution value.