Package org.apache.sis.util.iso

## Class DefaultLocalName

- Object
- - AbstractName
  - - DefaultLocalName

- All Implemented Interfaces:
    `Serializable`, `Comparable<GenericName>`, `GenericName`, `LocalName`
  Direct Known Subclasses:
    `DefaultMemberName`, `DefaultTypeName`

      public class DefaultLocalName
      extends AbstractName
      implements LocalName

  Identifier within a name space for a local object. Local names are names which are directly accessible to and maintained by a name space. Names are local to one and only one name space. The name space within which they are local is indicated by the scope.

  `DefaultLocalName` can be instantiated by any of the following methods:

  - `DefaultNameFactory​.createLocalName(NameSpace, CharSequence)`.
  - `DefaultNameFactory​.createGenericName(NameSpace, CharSequence[])` with an array of length 1.
  - `DefaultNameFactory​.parseGenericName(NameSpace, CharSequence)` with no occurrence of the separator in the path.
  - Similar static convenience methods in `Names`.
  Immutability and thread safety
  This class is immutable and thus inherently thread-safe if the `NameSpace` and `CharSequence` arguments given to the constructor are also immutable. Subclasses shall make sure that any overridden methods remain safe to call from multiple threads and do not change any public `LocalName` state.
  Since:
    0.3
  See Also:
    `DefaultNameSpace`, `DefaultScopedName`, Serialized Form

  Defined in the `sis-metadata` module

- - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `DefaultLocalName​(NameSpace scope, CharSequence name)` | Constructs a local name from the given character sequence.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static DefaultLocalName` | `castOrCopy​(LocalName object)` | Returns a SIS local name implementation with the values of the given arbitrary implementation.
    `int` | `compareTo​(GenericName name)` | Compares this name with the specified object for order.
    `int` | `depth()` | Returns the depth, which is always 1 for a local name.
    `boolean` | `equals​(Object object)` | Compares this local name with the specified object for equality.
    `List<DefaultLocalName>` | `getParsedNames()` | Returns the sequence of local name for this name.
    `LocalName` | `head()` | Returns `this` since this object is already a local name.
    `NameSpace` | `scope()` | Returns the scope (name space) in which this name is local.
    `LocalName` | `tip()` | Returns `this` since this object is already a local name.
    `InternationalString` | `toInternationalString()` | Returns a local-dependent string representation of this local name.
    `String` | `toString()` | Returns a locale-independent string representation of this local name.

    - ### Methods inherited from class AbstractName

      `castOrCopy, hashCode, push, toFullyQualifiedName`

    - ### Methods inherited from class Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface GenericName

      `push, toFullyQualifiedName`

- - ### Constructor Detail

    - #### DefaultLocalName

          protected DefaultLocalName​(NameSpace scope,
                                     CharSequence name)

      Constructs a local name from the given character sequence. If the character sequence is an instance of `InternationalString`, then its `toString(Locale​.ROOT)` method will be invoked for fetching an unlocalized name. Otherwise the `CharSequence​.toString()` method will be used.
      Parameters:
        `scope` - the scope of this name, or `null` for a global scope.
        `name` - the local name (never `null`).

  - ### Method Detail

    - #### castOrCopy

          public static DefaultLocalName castOrCopy​(LocalName object)

      Returns a SIS local name 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 an instance of `MemberName` or `TypeName`, then this method delegates to `castOrCopy(…)` method of the corresponding subclass.
      - Otherwise if the given object is already an instance of `DefaultLocalName`, then it is returned unchanged.
      - Otherwise a new `DefaultLocalName` instance is created with the same values than the given name.
      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.

    - #### scope

          public NameSpace scope()

      Returns the scope (name space) in which this name is local. This method returns a non-null value in all cases, even when the scope given to the constructor was null.
      Specified by:
        `scope` in interface `GenericName`
      Specified by:
        `scope` in class `AbstractName`
      Returns:
        the scope of this name.

    - #### depth

          public final int depth()

      Returns the depth, which is always 1 for a local name.
      Specified by:
        `depth` in interface `GenericName`
      Specified by:
        `depth` in interface `LocalName`
      Overrides:
        `depth` in class `AbstractName`
      Returns:
        the depth of this name.

    - #### getParsedNames

          public final List<DefaultLocalName> getParsedNames()

      Returns the sequence of local name for this name. Since this object is itself a local name, this method always returns a singleton containing only `this`.
      Specified by:
        `getParsedNames` in interface `GenericName`
      Specified by:
        `getParsedNames` in interface `LocalName`
      Specified by:
        `getParsedNames` in class `AbstractName`
      Returns:
        the local names making this generic name, without the scope. Shall never be `null` neither empty.

    - #### head

          public final LocalName head()

      Returns `this` since this object is already a local name.
      Specified by:
        `head` in interface `GenericName`
      Specified by:
        `head` in interface `LocalName`
      Overrides:
        `head` in class `AbstractName`
      Returns:
        `this`.

    - #### tip

          public final LocalName tip()

      Returns `this` since this object is already a local name.
      Specified by:
        `tip` in interface `GenericName`
      Specified by:
        `tip` in interface `LocalName`
      Overrides:
        `tip` in class `AbstractName`
      Returns:
        `this`.

    - #### toString

          public String toString()

      Returns a locale-independent string representation of this local name. This string does not include the scope, which is consistent with the parsed names definition.
      Specified by:
        `toString` in interface `GenericName`
      Specified by:
        `toString` in interface `LocalName`
      Overrides:
        `toString` in class `AbstractName`
      Returns:
        a local-independent string representation of this name.

    - #### toInternationalString

          public InternationalString toInternationalString()

      Returns a local-dependent string representation of this local name.
      Specified by:
        `toInternationalString` in interface `GenericName`
      Overrides:
        `toInternationalString` in class `AbstractName`
      Returns:
        a localizable string representation of this name.

    - #### compareTo

          public int compareTo​(GenericName name)

      Compares this name with the specified object for order. Returns a negative integer, zero, or a positive integer as this name lexicographically precedes, is equal to, or follows the specified object.
      Specified by:
        `compareTo` in interface `Comparable<GenericName>`
      Overrides:
        `compareTo` in class `AbstractName`
      Parameters:
        `name` - the other name to compare with this name.
      Returns:
        -1 if this name precedes the given one, +1 if it follows, 0 if equals.

    - #### equals

          public boolean equals​(Object object)

      Compares this local name with the specified object for equality.
      Overrides:
        `equals` in class `AbstractName`
      Parameters:
        `object` - the object to compare with this name for equality.
      Returns:
        `true` if the given object is equal to this name.