Package org.apache.sis.metadata.iso.quality

## Class DefaultDataQuality

- Object
- - AbstractMetadata
  - - ModifiableMetadata
    - - ISOMetadata
      - - DefaultDataQuality

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

      public class DefaultDataQuality
      extends ISOMetadata
      implements DataQuality

  Quality information for the data specified by a data quality scope. The following properties are mandatory in a well-formed metadata according ISO 19115:
  `DQ_DataQuality` `└─scope………………` The specific data to which the data quality information applies. `└─level……` Hierarchical level of the data specified by the scope.
  In addition, ISO requires that at least one of lineage and reports is provided. Those properties are declared conditional.
  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
    --- | ---
    `DefaultDataQuality()` | Constructs an initially empty data quality.
    `DefaultDataQuality​(ScopeCode level)` | Creates a data quality initialized to the given scope level.
    `DefaultDataQuality​(DataQuality object)` | Constructs a new instance initialized with the values from the specified metadata object.
    `DefaultDataQuality​(Scope scope)` | Creates a data quality initialized to the given scope.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultDataQuality` | `castOrCopy​(DataQuality object)` | Returns a SIS metadata implementation with the values of the given arbitrary implementation.
    `Lineage` | `getLineage()` | Returns non-quantitative quality information about the lineage of the data specified by the scope.
    `Collection<Element>` | `getReports()` | Returns the quantitative quality information for the data specified by the scope.
    `Scope` | `getScope()` | Returns the specific data to which the data quality information applies.
    `void` | `setLineage​(Lineage newValue)` | Sets the non-quantitative quality information about the lineage of the data specified by the scope.
    `void` | `setReports​(Collection<? extends Element> newValues)` | Sets the quantitative quality information for the data specified by the scope.
    `void` | `setScope​(Scope newValue)` | Sets the specific data to which the data quality information applies.

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

    - #### DefaultDataQuality

          public DefaultDataQuality()

      Constructs an initially empty data quality.

    - #### DefaultDataQuality

          public DefaultDataQuality​(ScopeCode level)

      Creates a data quality initialized to the given scope level. The scope level is, indirectly, a mandatory property in well-formed metadata.
      Parameters:
        `level` - the hierarchical level of the data to which the quality information applies, or `null`.
      Since:
        0.5

    - #### DefaultDataQuality

          public DefaultDataQuality​(Scope scope)

      Creates a data quality initialized to the given scope.
      Parameters:
        `scope` - the specific data to which the data quality information applies, or `null`.

    - #### DefaultDataQuality

          public DefaultDataQuality​(DataQuality 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(DataQuality)`

  - ### Method Detail

    - #### castOrCopy

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

    - #### getScope

          public Scope getScope()

      Returns the specific data to which the data quality information applies.
      Specified by:
        `getScope` in interface `DataQuality`
      Returns:
        the specific data to which the data quality information applies, or `null`.

    - #### setScope

          public void setScope​(Scope newValue)

      Sets the specific data to which the data quality information applies.
      Parameters:
        `newValue` - the new scope.

    - #### getReports

          public Collection<Element> getReports()

      Returns the quantitative quality information for the data specified by the scope.
      Specified by:
        `getReports` in interface `DataQuality`
      Returns:
        quantitative quality information for the data.

    - #### setReports

          public void setReports​(Collection<? extends Element> newValues)

      Sets the quantitative quality information for the data specified by the scope.
      Parameters:
        `newValues` - the new reports.

    - #### getLineage

          public Lineage getLineage()

      Returns non-quantitative quality information about the lineage of the data specified by the scope.
      Specified by:
        `getLineage` in interface `DataQuality`
      Returns:
        non-quantitative quality information about the lineage of the data specified, or `null`.
      See Also:
        Issue SIS-394

    - #### setLineage

          public void setLineage​(Lineage newValue)

      Sets the non-quantitative quality information about the lineage of the data specified by the scope.
      Parameters:
        `newValue` - the new lineage.