org.apache.commons.configuration.tree
Class DefaultConfigurationKey.KeyIterator
public
class
DefaultConfigurationKey.KeyIterator
extends Object
implements Iterator, Cloneable
A specialized iterator class for tokenizing a configuration key. This
class implements the normal iterator interface. In addition it provides
some specific methods for configuration keys.
Field Summary |
boolean | attribute Stores a flag if the actual property is an attribute. |
String | current Stores the current key name. |
int | endIndex Stores the end index of the actual token. |
boolean | hasIndex Stores a flag if the actual property has an index. |
int | indexValue Stores the index of the actual property if there is one. |
int | startIndex Stores the start index of the actual token. |
Method Summary |
boolean | checkAttribute(String key)
Helper method for checking if the passed key is an attribute. |
boolean | checkIndex(String key)
Helper method for checking if the passed key contains an index. |
Object | clone()
Creates a clone of this object.
|
String | currentKey()
Returns the current key of the iteration (without skipping to the
next element). |
String | currentKey(boolean decorated)
Returns the current key of the iteration (without skipping to the
next element). |
int | escapedPosition(String key, int pos)
Checks if a delimiter at the specified position is escaped. |
int | escapeOffset()
Determines the relative offset of an escaped delimiter in relation to
a delimiter. |
String | findNextIndices()
Helper method for determining the next indices.
|
int | getIndex()
Returns the index value of the current key. |
boolean | hasIndex()
Returns a flag if the current key has an associated index. |
boolean | hasNext()
Checks if there is a next element.
|
boolean | isAttribute()
Returns a flag if the current key is an attribute. |
boolean | isAttributeEmulatingMode()
Returns a flag whether attributes are marked the same way as normal
property keys. |
boolean | isPropertyKey()
Returns a flag whether the current key refers to a property (i.e. is
no special attribute key). |
Object | next()
Returns the next object in the iteration.
|
int | nextDelimiterPos(String key, int pos, int endPos)
Searches the next unescaped delimiter from the given position.
|
String | nextKey()
Returns the next key part of this configuration key. |
String | nextKey(boolean decorated)
Returns the next key part of this configuration key. |
String | nextKeyPart()
Helper method for extracting the next key part. |
void | remove()
Removes the current object in the iteration. |
private boolean attribute
Stores a flag if the actual property is an attribute.
private String current
Stores the current key name.
private int endIndex
Stores the end index of the actual token.
private boolean hasIndex
Stores a flag if the actual property has an index.
private int indexValue
Stores the index of the actual property if there is one.
private int startIndex
Stores the start index of the actual token.
private boolean checkAttribute(String key)
Helper method for checking if the passed key is an attribute. If this
is the case, the internal fields will be set.
Parameters: key the key to be checked
Returns: a flag if the key is an attribute
private boolean checkIndex(String key)
Helper method for checking if the passed key contains an index. If
this is the case, internal fields will be set.
Parameters: key the key to be checked
Returns: a flag if an index is defined
public Object clone()
Creates a clone of this object.
Returns: a clone of this object
public String currentKey()
Returns the current key of the iteration (without skipping to the
next element). This is the same key the previous
next()
call had returned. (Short form of
currentKey(false)
.
Returns: the current key
public String currentKey(boolean decorated)
Returns the current key of the iteration (without skipping to the
next element). The boolean parameter indicates wheter a decorated key
should be returned. This affects only attribute keys: if the
parameter is
false, the attribute markers are stripped from
the key; if it is
true, they remain.
Parameters: decorated a flag if the decorated key is to be returned
Returns: the current key
private int escapedPosition(String key, int pos)
Checks if a delimiter at the specified position is escaped. If this
is the case, the next valid search position will be returned.
Otherwise the return value is -1.
Parameters: key the key to check pos the position where a delimiter was found
Returns: information about escaped delimiters
private int escapeOffset()
Determines the relative offset of an escaped delimiter in relation to
a delimiter. Depending on the used delimiter and escaped delimiter
tokens the position where to search for an escaped delimiter is
different. If, for instance, the dot character (".") is
used as delimiter, and a doubled dot ("..") as escaped
delimiter, the escaped delimiter starts at the same position as the
delimiter. If the token "\." was used, it would start one
character before the delimiter because the delimiter character
"." is the second character in the escaped delimiter
string. This relation will be determined by this method. For this to
work the delimiter string must be contained in the escaped delimiter
string.
Returns: the relative offset of the escaped delimiter in relation to a
delimiter
private String findNextIndices()
Helper method for determining the next indices.
Returns: the next key part
public int getIndex()
Returns the index value of the current key. If the current key does
not have an index, return value is -1. This method can be called
after
next()
.
Returns: the index value of the current key
public boolean hasIndex()
Returns a flag if the current key has an associated index. This
method can be called after
next()
.
Returns: a flag if the current key has an index
public boolean hasNext()
Checks if there is a next element.
Returns: a flag if there is a next element
public boolean isAttribute()
Returns a flag if the current key is an attribute. This method can be
called after
next()
.
Returns: a flag if the current key is an attribute
private boolean isAttributeEmulatingMode()
Returns a flag whether attributes are marked the same way as normal
property keys. We call this the "attribute emulating mode".
When navigating through node hierarchies it might be convenient to
treat attributes the same way than other child nodes, so an
expression engine supports to set the attribute markers to the same
value than the property delimiter. If this is the case, some special
checks have to be performed.
Returns: a flag if attributes and normal property keys are treated the
same way
public boolean isPropertyKey()
Returns a flag whether the current key refers to a property (i.e. is
no special attribute key). Usually this method will return the
opposite of
isAttribute()
, but if the delimiters for
normal properties and attributes are set to the same string, it is
possible that both methods return
true.
Returns: a flag if the current key is a property key
See Also: isAttribute
public Object next()
Returns the next object in the iteration.
Returns: the next object
private int nextDelimiterPos(String key, int pos, int endPos)
Searches the next unescaped delimiter from the given position.
Parameters: key the key pos the start position endPos the end position
Returns: the position of the next delimiter or -1 if there is none
public String nextKey()
Returns the next key part of this configuration key. This is a short
form of
nextKey(false)
.
Returns: the next key part
public String nextKey(boolean decorated)
Returns the next key part of this configuration key. The boolean
parameter indicates wheter a decorated key should be returned. This
affects only attribute keys: if the parameter is
false, the
attribute markers are stripped from the key; if it is
true,
they remain.
Parameters: decorated a flag if the decorated key is to be returned
Returns: the next key part
private String nextKeyPart()
Helper method for extracting the next key part. Takes escaping of
delimiter characters into account.
Returns: the next key part
public void remove()
Removes the current object in the iteration. This method is not
supported by this iterator type, so an exception is thrown.