# Class DefaultSecurityConstraints

Object
AbstractMetadata
ModifiableMetadata
ISOMetadata
DefaultConstraints
DefaultSecurityConstraints

All Implemented Interfaces:
  `Serializable`, `Emptiable`, `LenientComparable`, `IdentifiedObject`, `Constraints`, `SecurityConstraints`

public class DefaultSecurityConstraints extends DefaultConstraints implements SecurityConstraints
Handling restrictions imposed on the resource for national security or similar security concerns. The following property is mandatory in a well-formed metadata according ISO 19115:
`MD_SecurityConstraints` `└─classification…………` Name of the handling restrictions on the resource.

## 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
  `DefaultSecurityConstraints()`
  Creates an initially empty security constraints.
  `DefaultSecurityConstraints(CharSequence useLimitation)`
  Constructs a new constraints with the given use limitation.
  `DefaultSecurityConstraints(Classification classification)`
  Creates a security constraints initialized with the specified classification.
  `DefaultSecurityConstraints(SecurityConstraints object)`
  Constructs a new instance initialized with the values from the specified metadata object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static DefaultSecurityConstraints`
  `castOrCopy(SecurityConstraints object)`
  Returns a SIS metadata implementation with the values of the given arbitrary implementation.
  `Classification`
  `getClassification()`
  Returns the name of the handling restrictions on the resource.
  `InternationalString`
  `getClassificationSystem()`
  Returns the name of the classification system.
  `InternationalString`
  `getHandlingDescription()`
  Returns the additional information about the restrictions on handling the resource.
  `InternationalString`
  `getUserNote()`
  Returns the explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource.
  `void`
  `setClassification(Classification newValue)`
  Sets the name of the handling restrictions on the resource.
  `void`
  `setClassificationSystem(InternationalString newValue)`
  Sets the name of the classification system.
  `void`
  `setHandlingDescription(InternationalString newValue)`
  Sets the additional information about the restrictions on handling the resource.
  `void`
  `setUserNote(InternationalString newValue)`
  Sets the explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource.

  ### Methods inherited from class DefaultConstraints

  `castOrCopy, getConstraintApplicationScope, getGraphics, getReferences, getReleasability, getResponsibleParties, getUseLimitations, setConstraintApplicationScope, setGraphics, setReferences, setReleasability, setResponsibleParties, setUseLimitations`

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

  ### Methods inherited from interface Constraints

  `getUseLimitations`

- ## Constructor Details

  - ### DefaultSecurityConstraints

    public DefaultSecurityConstraints()
    Creates an initially empty security constraints.

  - ### DefaultSecurityConstraints

    public DefaultSecurityConstraints(CharSequence useLimitation)
    Constructs a new constraints with the given use limitation.
    Parameters:
      `useLimitation` - the use limitation, or `null` if none.

  - ### DefaultSecurityConstraints

    public DefaultSecurityConstraints(Classification classification)
    Creates a security constraints initialized with the specified classification.
    Parameters:
      `classification` - the name of the handling restrictions on the resource, or `null`.

  - ### DefaultSecurityConstraints

    public DefaultSecurityConstraints(SecurityConstraints 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(SecurityConstraints)`

- ## Method Details

  - ### castOrCopy

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

  - ### getClassification

    public Classification getClassification()
    Returns the name of the handling restrictions on the resource.
    Specified by:
      `getClassification` in interface `SecurityConstraints`
    Returns:
      name of the handling restrictions on the resource, or `null`.

  - ### setClassification

    public void setClassification(Classification newValue)
    Sets the name of the handling restrictions on the resource.
    Parameters:
      `newValue` - the new classification.

  - ### getUserNote

    public InternationalString getUserNote()
    Returns the explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource.
    Specified by:
      `getUserNote` in interface `SecurityConstraints`
    Returns:
      explanation of the application of the legal constraints, or `null`.

  - ### setUserNote

    public void setUserNote(InternationalString newValue)
    Sets the explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource.
    Parameters:
      `newValue` - the new user note.

  - ### getClassificationSystem

    public InternationalString getClassificationSystem()
    Returns the name of the classification system.
    Specified by:
      `getClassificationSystem` in interface `SecurityConstraints`
    Returns:
      name of the classification system, or `null`.

  - ### setClassificationSystem

    public void setClassificationSystem(InternationalString newValue)
    Sets the name of the classification system.
    Parameters:
      `newValue` - the new classification system.

  - ### getHandlingDescription

    public InternationalString getHandlingDescription()
    Returns the additional information about the restrictions on handling the resource.
    Specified by:
      `getHandlingDescription` in interface `SecurityConstraints`
    Returns:
      additional information about the restrictions, or `null`.

  - ### setHandlingDescription

    public void setHandlingDescription(InternationalString newValue)
    Sets the additional information about the restrictions on handling the resource.
    Parameters:
      `newValue` - the new handling description.