Class AbstractName
- All Implemented Interfaces:
Serializable
,Comparable<org.opengis.util.GenericName>
,org.opengis.util.GenericName
- Direct Known Subclasses:
DefaultLocalName
,DefaultScopedName
The easiest way to create a name is to use the Names.createLocalName(CharSequence, String, CharSequence)
convenience static method. That method supports the common case where the name is made only of a
(namespace, local part) pair of strings. However, generic names allows finer grain.
For example, the above-cited strings can both be split into smaller name components.
If such finer grain control is desired, DefaultNameFactory
can be used instead of Names
.
Natural ordering
This class has a natural ordering that is inconsistent withequals(Object)
.
See compareTo(GenericName)
for more information.
Note for implementers
Subclasses need only to implement the following methods: Subclasses shall make sure that any overridden methods remain safe to call from multiple threads and do not change any publicGenericName
state.- Since:
- 0.3
- Version:
- 0.5
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
An international string built from a snapshot ofGenericName
. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) CharSequence
The string representation of this name, to be returned bytoString()
ortoInternationalString()
.(package private) org.opengis.util.GenericName
A view of this name as a fully-qualified one.private int
The cached hash code, or0
if not yet computed.private static final long
Serial number for inter-operability with different versions. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) int
Returns the size of the backing array.static AbstractName
castOrCopy
(org.opengis.util.GenericName object) Returns a SIS name implementation with the values of the given arbitrary implementation.int
compareTo
(org.opengis.util.GenericName name) Compares this name with the specified name for order.(package private) int
Invoked byhashCode()
for computing the hash code value when first needed.int
depth()
Indicates the number of levels specified by this name.boolean
Compares this generic name with the specified object for equality.abstract List
<? extends org.opengis.util.LocalName> Returns the sequence of local names making this generic name.int
hashCode()
Returns a hash code value for this generic name.org.opengis.util.LocalName
head()
Returns the first element in the sequence of parsed names.private static String
headSeparator
(org.opengis.util.GenericName name) Returns the separator to write before the given name.org.opengis.util.ScopedName
push
(org.opengis.util.GenericName scope) Returns this name expanded with the specified scope.abstract org.opengis.util.NameSpace
scope()
Returns the scope (name space) in which this name is local.org.opengis.util.LocalName
tip()
Returns the last element in the sequence of parsed names.org.opengis.util.GenericName
Returns a view of this name as a fully-qualified name.org.opengis.util.InternationalString
Returns a local-dependent string representation of this generic name.toString()
Returns a string representation of this generic name.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerial number for inter-operability with different versions.- See Also:
-
fullyQualified
transient org.opengis.util.GenericName fullyQualifiedA view of this name as a fully-qualified one. Will be created only when first needed. -
asString
The string representation of this name, to be returned bytoString()
ortoInternationalString()
. This field will initially references aString
object when first needed, and may be replaced by aInternationalString
object later if such object is asked for. -
hash
private transient int hashThe cached hash code, or0
if not yet computed.
-
-
Constructor Details
-
AbstractName
protected AbstractName()Creates a new instance of generic name.
-
-
Method Details
-
castOrCopy
Returns a SIS 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 returnsnull
. - Otherwise if the given object is an instance of
LocalName
, then this method delegates toDefaultLocalName.castOrCopy(LocalName)
. - Otherwise if the given object is already an instance of
AbstractName
, then it is returned unchanged. - Otherwise a new instance of an
AbstractName
subclass is created using theDefaultNameFactory.createGenericName(NameSpace, CharSequence[])
method.
- Parameters:
object
- the object to get as a SIS implementation, ornull
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.
- If the given object is
-
scope
public abstract org.opengis.util.NameSpace scope()Returns the scope (name space) in which this name is local. For example if a fully qualified name is"org.opengis.util.Record"
and if this instance is the"util.Record"
part, then its scope is named"org.opengis"
.Continuing with the above example, the full
"org.opengis.util.Record"
name has no scope. If this method is invoked on such name, then the SIS implementation returns a global scope instance (i.e. an instance for whichDefaultNameSpace.isGlobal()
returnstrue
) which is unique and named"global"
.- Specified by:
scope
in interfaceorg.opengis.util.GenericName
- Returns:
- the scope of this name.
-
depth
public int depth()Indicates the number of levels specified by this name. The default implementation returns the size of the list returned by thegetParsedNames()
method.- Specified by:
depth
in interfaceorg.opengis.util.GenericName
- Returns:
- the depth of this name.
-
arraySize
int arraySize()Returns the size of the backing array. This is used only has a hint for optimizations in attempts to share internal arrays. TheDefaultScopedName
class is the only one to override this method. For other classes, thedepth()
can be assumed. -
getParsedNames
Returns the sequence of local names making this generic name. The length of this sequence is the depth. It does not include the scope.- Specified by:
getParsedNames
in interfaceorg.opengis.util.GenericName
- Returns:
- the local names making this generic name, without the scope.
Shall never be
null
neither empty.
-
head
public org.opengis.util.LocalName head()Returns the first element in the sequence of parsed names. For anyLocalName
, this is alwaysthis
.Example: Ifthis
name is"org.opengis.util.Record"
(no matter its scope, then this method returns"org"
.- Specified by:
head
in interfaceorg.opengis.util.GenericName
- Returns:
- the first element in the list of parsed names.
-
tip
public org.opengis.util.LocalName tip()Returns the last element in the sequence of parsed names. For anyLocalName
, this is alwaysthis
.Example: Ifthis
name is"org.opengis.util.Record"
(no matter its scope, then this method returns"Record"
.- Specified by:
tip
in interfaceorg.opengis.util.GenericName
- Returns:
- the last element in the list of parsed names.
-
toFullyQualifiedName
public org.opengis.util.GenericName toFullyQualifiedName()Returns a view of this name as a fully-qualified name. The scope of a fully qualified name is global. If the scope of this name is already global, then this method returnsthis
.- Specified by:
toFullyQualifiedName
in interfaceorg.opengis.util.GenericName
- Returns:
- the fully-qualified name (never
null
).
-
push
public org.opengis.util.ScopedName push(org.opengis.util.GenericName scope) Returns this name expanded with the specified scope. One may represent this operation as a concatenation of the specifiedscope
withthis
. For example, ifthis
name is"util.Record"
and the givenscope
argument is"org.opengis"
, thenthis.push(scope)
shall return"org.opengis.util.Record"
.- Specified by:
push
in interfaceorg.opengis.util.GenericName
- Parameters:
scope
- the name to use as prefix.- Returns:
- a concatenation of the given scope with this name.
-
headSeparator
Returns the separator to write before the given name. If the scope of the given name is aDefaultNameSpace
instance, then this method returns its head separator. We really wantDefaultNameSpace.headSeparator
, notDefaultNameSpace.separator
. SeeDefaultNameSpace.child(CharSequence, String)
for details.- Parameters:
name
- the name after which to write a separator.- Returns:
- the separator to write after the given name.
-
toString
Returns a string representation of this generic name. This string representation is local-independent. It contains all elements listed bygetParsedNames()
separated by a namespace-dependent character (usually':'
or'/'
). This rule implies that the result may or may not be fully qualified. Special cases:toFullyQualifiedName().toString()
is guaranteed to contain the scope (if any).tip().toString()
is guaranteed to not contain any scope.
-
toInternationalString
public org.opengis.util.InternationalString toInternationalString()Returns a local-dependent string representation of this generic name. This string is similar to the one returned bytoString()
except that each element has been localized in the specified locale. If no international string is available, then this method returns an implementation mapping totoString()
for all locales.- Specified by:
toInternationalString
in interfaceorg.opengis.util.GenericName
- Returns:
- a localizable string representation of this name.
-
compareTo
public int compareTo(org.opengis.util.GenericName name) Compares this name with the specified name for order. Returns a negative integer, zero, or a positive integer as this name lexicographically precedes, is equal to, or follows the specified name. The comparison is performed in the following way:- For each element of the list of parsed names taken
in iteration order, compare the
LocalName
. If a name lexicographically precedes or follows the corresponding element of the specified name, returns a negative or a positive integer respectively. - If all elements in both names are lexicographically equal, then if this name has less or more elements than the specified name, returns a negative or a positive integer respectively.
- Otherwise, returns 0.
- Specified by:
compareTo
in interfaceComparable<org.opengis.util.GenericName>
- 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.
- For each element of the list of parsed names taken
in iteration order, compare the
-
equals
Compares this generic name with the specified object for equality. The default implementation returnstrue
if the scopes and the lists of parsed names are equal. -
hashCode
public int hashCode()Returns a hash code value for this generic name. -
computeHashCode
int computeHashCode()Invoked byhashCode()
for computing the hash code value when first needed.
-