# Enum Class AttributeRole

Object
Enum<AttributeRole>
AttributeRole

All Implemented Interfaces:
  `Serializable`, `Comparable<AttributeRole>`, `Constable`

public enum AttributeRole extends Enum<AttributeRole>
Roles that can be associated to some attributes for instructing `FeatureTypeBuilder` how to generate predefined operations. Those predefined operations are:

- A compound operation for generating a unique identifier from an arbitrary number of attribute values.
- A link operation for referencing a geometry to be used as the default geometry.
- An operation for computing the bounding box of all geometries found in the feature. This operation is automatically added if the feature contains a default geometry.

This enumeration allows user code to specify which feature attribute to use for creating those operations.

Since:
  0.8
See Also:
  - `AttributeTypeBuilder​.addRole(AttributeRole)`

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class Enum

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

- ## Enum Constant Summary

  Enum Constants
  Enum Constant
  Description
  `DEFAULT_GEOMETRY`
  Attribute value will be flagged as the default geometry.
  `IDENTIFIER_COMPONENT`
  Attribute value will be part of a unique identifier for the feature instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static AttributeRole`
  `valueOf(String name)`
  Returns the enum constant of this class with the specified name.
  `static AttributeRole[]`
  `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

  - ### IDENTIFIER_COMPONENT

    public static final AttributeRole IDENTIFIER_COMPONENT
    Attribute value will be part of a unique identifier for the feature instance. An arbitrary number of attributes can be flagged as identifier components:
    - If no attribute has this role, then no attribute is marked as feature identifier.
    - If exactly one attribute has this role, then a synthetic attribute named `"sis:identifier"` will be created as a link to the flagged attribute.
    - If more than one attribute have this role, then a synthetic attribute named `"sis:identifier"` will be created as a compound key made of all flagged attributes. The separator character can be modified by a call to `FeatureTypeBuilder​.setIdentifierDelimiters(String, String, String)`
    See Also:
      - `FeatureTypeBuilder​.setIdentifierDelimiters(String, String, String)`

  - ### DEFAULT_GEOMETRY

    public static final AttributeRole DEFAULT_GEOMETRY
    Attribute value will be flagged as the default geometry. Feature can have an arbitrary number of geometry attributes, but only one can be flagged as the default geometry.

- ## Method Details

  - ### values

    public static AttributeRole[] 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 AttributeRole 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