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

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

- ## Constructor Details

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

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