# Enum Class ModifiableMetadata.State

Object
Enum<ModifiableMetadata.State>
State

All Implemented Interfaces:
  `Serializable`, `Comparable<ModifiableMetadata​.State>`, `Constable`

Enclosing class:
  `ModifiableMetadata`

public static enum ModifiableMetadata.State extends Enum<ModifiableMetadata.State>
Whether the metadata is still editable or has been made final. New `ModifiableMetadata` instances are initially `EDITABLE` and can be made `FINAL` after construction by a call to `ModifiableMetadata​.transitionTo(State)`.

## Future evolution

More states may be added in future Apache SIS versions. On possible candidate is `STAGED`. See SIS-81.

Since:
  1.0
See Also:
  - `ModifiableMetadata​.state()`

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class Enum

  `Enum​.EnumDesc<E extends Enum<E>>`

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `COMPLETABLE`
  The metadata allows missing values to be set, but does not allow existing values to be modified.
  `EDITABLE`
  The metadata is modifiable.
  `FINAL`
  The metadata is unmodifiable.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ModifiableMetadata​.State`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static ModifiableMetadata​.State[]`
  `values()`
  Returns an array containing the constants of this enum class, in the order they are declared.

  ### Methods inherited from class Enum

  `clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

  ### Methods inherited from class Object

  `getClass, notify, notifyAll, wait, wait, wait`

- ## Enum Constant Details

  - ### EDITABLE

    public static final ModifiableMetadata.State EDITABLE
    The metadata is modifiable. This is the default state when new `ModifiableMetadata` instances are created. Note that a modifiable metadata instance does not imply that all properties contained in that instance are also editable.

  - ### COMPLETABLE

    public static final ModifiableMetadata.State COMPLETABLE
    The metadata allows missing values to be set, but does not allow existing values to be modified. This state is not appendable, i.e. it does not allow adding elements in a collection.

  - ### FINAL

    public static final ModifiableMetadata.State FINAL
    The metadata is unmodifiable. When a metadata is final, it cannot be moved back to an editable state (but it is still possible to create a modifiable copy with `MetadataCopier`). Invoking any setter method on an unmodifiable metadata cause an `UnmodifiableMetadataException` to be thrown.

- ## Method Details

  - ### values

    public static ModifiableMetadata.State[] values()
    Returns an array containing the constants of this enum class, in the order they are declared.
    Returns:
      an array containing the constants of this enum class, in the order they are declared

  - ### valueOf

    public static ModifiableMetadata.State valueOf(String name)
    Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
    Parameters:
      `name` - the name of the enum constant to be returned.
    Returns:
      the enum constant with the specified name
    Throws:
      `IllegalArgumentException` - if this enum class has no constant with the specified name
      `NullPointerException` - if the argument is null