Class DefaultScopeDescription

All Implemented Interfaces:
Serializable, Emptiable, LenientComparable, IdentifiedObject, org.opengis.metadata.maintenance.ScopeDescription

public class DefaultScopeDescription extends ISOMetadata implements org.opengis.metadata.maintenance.ScopeDescription
Description of the class of information covered by the information. The following properties are mandatory or conditional (i.e. mandatory under some circumstances) in a well-formed metadata according ISO 19115:
MD_ScopeDescription   ├─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.
ISO 19115 defines ScopeDescription as an union (in the C/C++ sense): only one of the properties in this class can be set to a non-empty value. Setting any property to a non-empty value discard all the other ones.

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
Version:
1.0
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serial number for inter-operability with different versions.
      See Also:
    • DATASET

      private static final byte DATASET
      Enumeration of possible values for property.
      See Also:
    • FEATURES

      private static final byte FEATURES
      Enumeration of possible values for property.
      See Also:
    • ATTRIBUTES

      private static final byte ATTRIBUTES
      Enumeration of possible values for property.
      See Also:
    • FEATURE_INSTANCES

      private static final byte FEATURE_INSTANCES
      Enumeration of possible values for property.
      See Also:
    • ATTRIBUTE_INSTANCES

      private static final byte ATTRIBUTE_INSTANCES
      Enumeration of possible values for property.
      See Also:
    • OTHER

      private static final byte OTHER
      Enumeration of possible values for property.
      See Also:
    • NAMES

      private static final String[] NAMES
      The names of the mutually exclusive properties. The index of each name shall be the value of the above byte constants minus one.
    • SETTERS

      private static final String[] SETTERS
      The names of the setter methods, for logging purpose only.
    • property

      private byte property
      Specifies which property is set, or 0 if none.
    • value

      private Object value
      The value, as one of the following types:
      • Set<FeatureType> for the features property
      • Set<AttributeType> for the attributes property
      • Set<FeatureType> for the featureInstances property
      • Set<AttributeType> for the attributeInstances property
      • String for the dataset property
      • String for the other property
  • Constructor Details

    • DefaultScopeDescription

      public DefaultScopeDescription()
      Creates an initially empty scope description.
    • DefaultScopeDescription

      public DefaultScopeDescription(org.opengis.metadata.maintenance.ScopeDescription 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.

      If the given object contains more than one value, then the first non-null element in the following list has precedence (from wider scope to smaller scope): dataset, features, attributes, feature instances, attribute instances and other.

      Parameters:
      object - the metadata to copy values from, or null if none.
      See Also:
  • Method Details

    • castOrCopy

      public static DefaultScopeDescription castOrCopy(org.opengis.metadata.maintenance.ScopeDescription 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 DefaultScopeDescription, then it is returned unchanged.
      • Otherwise a new DefaultScopeDescription 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.
    • cast

      private static <E> Set<E> cast(Object value, Class<E> type)
      Returns the given value casted to a Set of elements of the given type. It is caller responsibility to ensure that the cast is valid, as element type is verified only when assertions are enabled.
    • getProperty

      private <E> Set<E> getProperty(Class<E> type, byte code)
      Returns the set of properties identified by the code argument, or an unmodifiable empty set if another value is defined.
    • setProperty

      private <E> void setProperty(Set<? extends E> newValue, Class<E> type, byte code)
      Sets the properties identified by the code argument, if non-null and non-empty. This discards any other properties.
      Parameters:
      newValue - the value to set.
      code - the property which is going to be set.
    • warningOnOverwrite

      private void warningOnOverwrite(byte code)
      Sends a warning if setting the value for the given property would overwrite an existing property.
      Parameters:
      code - the property which is going to be set.
    • getLevel

      public org.opengis.metadata.maintenance.ScopeCode getLevel()
      Returns an indication of which property is set, or null if unknown. This method returns one of the following values depending which property has been set:
      hierarchical level of the data
      Scope code Getter method
      DATASET getDataset()
      FEATURE_TYPE getFeatures()
      ATTRIBUTE_TYPE getAttributes()
      FEATURE getFeatureInstances()
      ATTRIBUTE getAttributeInstances()
      Returns:
      an identification of the property which is set, or null if unknown.
      Since:
      1.0
      See Also:
    • getDataset

      public String getDataset()
      Returns the dataset to which the information applies.
      Example: If a geographic data provider is generating vector mapping for the administrative areas and if the data were processed in the same way, then the provider could record the bulk of initial data at ScopeCode.DATASET level with a “Administrative area A, B & C” description.
      Specified by:
      getDataset in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      dataset to which the information applies, or null.
    • setDataset

      public void setDataset(String newValue)
      Sets the dataset to which the information applies.

      Effect on other properties

      If and only if the newValue is non-null, then this method automatically discards all other properties.
      Parameters:
      newValue - the new dataset.
    • getFeatures

      public Set<org.opengis.feature.type.FeatureType> getFeatures()
      Returns the feature types to which the information applies.
      Example: if an administrative area performs a complete re-survey of the road network, the change can be recorded at ScopeCode.FEATURE_TYPE level with a “Administrative area A — Road network” description.

      Conditions

      This method returns a modifiable collection only if no other property is set. Otherwise, this method returns an unmodifiable empty collection.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Specified by:
      getFeatures in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      feature types to which the information applies.
    • setFeatures

      public void setFeatures(Set<? extends org.opengis.feature.type.FeatureType> newValues)
      Sets the feature types to which the information applies.

      Effect on other properties

      If and only if the newValue is non-empty, then this method automatically discards all other properties.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Parameters:
      newValues - the new feature types.
    • getAttributes

      public Set<org.opengis.feature.type.AttributeType> getAttributes()
      Returns the attribute types to which the information applies.
      Example: if an administrative area detects an anomaly in all overhead clearance of the road survey, the correction can be recorded at ScopeCode.ATTRIBUTE_TYPE level with a “Administrative area A — Overhead clearance” description.

      Conditions

      This method returns a modifiable collection only if no other property is set. Otherwise, this method returns an unmodifiable empty collection.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Specified by:
      getAttributes in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      attribute types to which the information applies.
    • setAttributes

      public void setAttributes(Set<? extends org.opengis.feature.type.AttributeType> newValues)
      Sets the attribute types to which the information applies.

      Effect on other properties

      If and only if the newValue is non-empty, then this method automatically discards all other properties.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Parameters:
      newValues - the new attribute types.
    • getFeatureInstances

      public Set<org.opengis.feature.type.FeatureType> getFeatureInstances()
      Returns the feature instances to which the information applies.
      Example: If a new bridge is constructed in a road network, the change can be recorded at ScopeCode.FEATURE level with a “Administrative area A — New bridge” description.

      Conditions

      This method returns a modifiable collection only if no other property is set. Otherwise, this method returns an unmodifiable empty collection.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Specified by:
      getFeatureInstances in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      feature instances to which the information applies.
    • setFeatureInstances

      public void setFeatureInstances(Set<? extends org.opengis.feature.type.FeatureType> newValues)
      Sets the feature instances to which the information applies.

      Effect on other properties

      If and only if the newValue is non-empty, then this method automatically discards all other properties.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Parameters:
      newValues - the new feature instances.
    • getAttributeInstances

      public Set<org.opengis.feature.type.AttributeType> getAttributeInstances()
      Returns the attribute instances to which the information applies.
      Example: If the overhead clearance of a new bridge was wrongly recorded, the correction can be recorded at ScopeCode.ATTRIBUTE level with a “Administrative area A — New bridge — Overhead clearance” description.

      Conditions

      This method returns a modifiable collection only if no other property is set. Otherwise, this method returns an unmodifiable empty collection.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Specified by:
      getAttributeInstances in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      attribute instances to which the information applies.
    • setAttributeInstances

      public void setAttributeInstances(Set<? extends org.opengis.feature.type.AttributeType> newValues)
      Sets the attribute instances to which the information applies.

      Effect on other properties

      If and only if the newValue is non-empty, then this method automatically discards all other properties.
      Upcoming API change: The type of this property may be changed to Set<CharSequence> for ISO 19115:2014 conformance. See GEO-238 for more information.
      Parameters:
      newValues - the new attribute instances.
    • getOther

      public String getOther()
      Returns the class of information that does not fall into the other categories to which the information applies.
      Upcoming API change: The type of this property may be changed to InternationalString for ISO 19115:2014 conformance. See GEO-221 for more information.
      Specified by:
      getOther in interface org.opengis.metadata.maintenance.ScopeDescription
      Returns:
      class of information that does not fall into the other categories, or null.
    • setOther

      public void setOther(String newValue)
      Sets the class of information that does not fall into the other categories to which the information applies.

      Effect on other properties

      If and only if the newValue is non-null, then this method automatically discards all other properties.
      Upcoming API change: The type of this property may be changed to InternationalString for ISO 19115:2014 conformance. See GEO-221 for more information.
      Parameters:
      newValue - Other class of information.
    • setLevelDescription

      public void setLevelDescription(org.opengis.metadata.maintenance.ScopeCode level, Set<? extends CharSequence> newValues)
      Dispatches the given values to a setter method determined by the given hierarchical level. The mapping between scope codes and ScopeDescription properties is documented in the getLevel() method. If the given scope code is not one of the listed codes, then the "other" property is used.
      Parameters:
      level - an identification of the property which is set, or null if unknown.
      newValues - the values to set, or null if none.
      Since:
      1.0
      See Also: