org.apache.xalan.xsltc.dom
Class KeyIndex

java.lang.Object
  extended by org.apache.xml.dtm.ref.DTMAxisIteratorBase
      extended by org.apache.xalan.xsltc.dom.KeyIndex
All Implemented Interfaces:
java.lang.Cloneable, DTMAxisIterator

public class KeyIndex
extends DTMAxisIteratorBase

Stores mappings of key values or IDs to DTM nodes. Use of an instance of this class as a DTMAxisIterator is deprecated.


Nested Class Summary
 class KeyIndex.KeyIndexIterator
          An iterator representing the result of a reference to either the XSLT key function or the XPath id function.
 
Field Summary
private  int _currentDocumentNode
          The document node currently being processed.
private  DOM _dom
          The XSLTC DOM object if this KeyIndex is being used to implement the id() function.
private  DOMEnhancedForDTM _enhancedDOM
           
private  Hashtable _index
          A mapping between values and nodesets for the current document.
private  int _markedPosition
          Store position after call to setMark()
private  IntegerArray _nodes
          The node set associated to the current value passed to lookupKey();
private  Hashtable _rootToIndexMap
          A mapping from a document node to the mapping between values and nodesets
private static IntegerArray EMPTY_NODES
          Used to represent an empty node set.
 
Fields inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
_includeSelf, _isRestartable, _last, _markedNode, _position, _startNode
 
Fields inherited from interface org.apache.xml.dtm.DTMAxisIterator
END
 
Constructor Summary
KeyIndex(int dummy)
           
 
Method Summary
 void add(java.lang.Object value, int node, int rootNode)
          Adds a node to the node list for a given value.
 DTMAxisIterator cloneIterator()
          Deprecated.  
 int containsID(int node, java.lang.Object value)
          Given a context node and the argument to the XPath id function, checks whether the context node is in the set of nodes that results from that reference to the id function.
 int containsKey(int node, java.lang.Object value)
          Given a context node and the second argument to the XSLT key function, checks whether the context node is in the set of nodes that results from that reference to the key function.
 IntegerArray getDOMNodeById(java.lang.String id)
          Return an IntegerArray for the DOM Node which has the given id.
 KeyIndex.KeyIndexIterator getKeyIndexIterator(DTMAxisIterator keyValue, boolean isKeyCall)
          Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.
 KeyIndex.KeyIndexIterator getKeyIndexIterator(java.lang.Object keyValue, boolean isKeyCall)
          Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.
 KeyIndex.KeyIndexIterator getKeyIndexIterator(java.lang.String keyValue, boolean isKeyCall)
          Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.
 int getLast()
          Deprecated.  
 int getPosition()
          Deprecated.  
 int getStartNode()
          Deprecated.  
 void gotoMark()
          Deprecated.  
 boolean isReverse()
          Deprecated.  
 void lookupId(java.lang.Object value)
          Deprecated.  
 void lookupKey(java.lang.Object value)
          Deprecated.  
 void merge(KeyIndex other)
          Deprecated.  
 int next()
          Deprecated.  
 DTMAxisIterator reset()
          Deprecated.  
 void setDom(DOM dom)
           
 void setMark()
          Deprecated.  
 void setRestartable(boolean flag)
          Set if restartable.
 DTMAxisIterator setStartNode(int start)
          Deprecated.  
 
Methods inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
getAxis, getNodeByPosition, includeSelf, isDocOrdered, resetPosition, returnNode
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_index

private Hashtable _index
A mapping between values and nodesets for the current document. Used only while building keys.


_currentDocumentNode

private int _currentDocumentNode
The document node currently being processed. Used only while building keys.


_rootToIndexMap

private Hashtable _rootToIndexMap
A mapping from a document node to the mapping between values and nodesets


_nodes

private IntegerArray _nodes
The node set associated to the current value passed to lookupKey();


_dom

private DOM _dom
The XSLTC DOM object if this KeyIndex is being used to implement the id() function.


_enhancedDOM

private DOMEnhancedForDTM _enhancedDOM

_markedPosition

private int _markedPosition
Store position after call to setMark()


EMPTY_NODES

private static final IntegerArray EMPTY_NODES
Used to represent an empty node set.

Constructor Detail

KeyIndex

public KeyIndex(int dummy)
Method Detail

setRestartable

public void setRestartable(boolean flag)
Description copied from interface: DTMAxisIterator
Set if restartable.

Specified by:
setRestartable in interface DTMAxisIterator
Overrides:
setRestartable in class DTMAxisIteratorBase

add

public void add(java.lang.Object value,
                int node,
                int rootNode)
Adds a node to the node list for a given value. Nodes will always be added in document order.


merge

public void merge(KeyIndex other)
Deprecated. 

Merge the current value's nodeset set by lookupKey() with _nodes.


lookupId

public void lookupId(java.lang.Object value)
Deprecated. 

This method must be called by the code generated by the id() function prior to returning the node iterator. The lookup code for key() and id() differ in the way the lookup value can be whitespace separated list of tokens for the id() function, but a single string for the key() function.


getDOMNodeById

public IntegerArray getDOMNodeById(java.lang.String id)
Return an IntegerArray for the DOM Node which has the given id.

Parameters:
id - The id
Returns:
A IntegerArray representing the Node whose id is the given value.

lookupKey

public void lookupKey(java.lang.Object value)
Deprecated. 

This method must be called by the code generated by the key() function prior to returning the node iterator.

Use of an instance of this class as a DTMAxisIterator is deprecated.


next

public int next()
Deprecated. 

Callers should not call next() after it returns END.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Returns:
The next node handle in the iteration, or END.

containsID

public int containsID(int node,
                      java.lang.Object value)
Given a context node and the argument to the XPath id function, checks whether the context node is in the set of nodes that results from that reference to the id function. This is used in the implementation of id patterns.

Parameters:
node - The context node
value - The argument to the id function
Returns:
1 if the context node is in the set of nodes returned by the reference to the id function; 0, otherwise

containsKey

public int containsKey(int node,
                       java.lang.Object value)

Given a context node and the second argument to the XSLT key function, checks whether the context node is in the set of nodes that results from that reference to the key function. This is used in the implementation of key patterns.

This particular KeyIndex object is the result evaluating the first argument to the key function, so it's not taken into any further account.

Parameters:
node - The context node
value - The second argument to the key function
Returns:
1 if and only if the context node is in the set of nodes returned by the reference to the key function; 0, otherwise

reset

public DTMAxisIterator reset()
Deprecated. 

Resets the iterator to the last start node.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
reset in interface DTMAxisIterator
Overrides:
reset in class DTMAxisIteratorBase
Returns:
A DTMAxisIterator which has been reset to the start node, which may or may not be the same as this iterator.

getLast

public int getLast()
Deprecated. 

Returns the number of elements in this iterator.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
getLast in interface DTMAxisIterator
Overrides:
getLast in class DTMAxisIteratorBase
Returns:
The number of nodes in this iterator (forward) or 1 (reverse).

getPosition

public int getPosition()
Deprecated. 

Returns the position of the current node in the set.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
getPosition in interface DTMAxisIterator
Overrides:
getPosition in class DTMAxisIteratorBase
Returns:
The position of the current node within the set, as defined by XPath. Note that this is one-based, not zero-based.

setMark

public void setMark()
Deprecated. 

Remembers the current node for the next call to gotoMark().

Use of an instance of this class as a DTMAxisIterator is deprecated.


gotoMark

public void gotoMark()
Deprecated. 

Restores the current node remembered by setMark().

Use of an instance of this class as a DTMAxisIterator is deprecated.


setStartNode

public DTMAxisIterator setStartNode(int start)
Deprecated. 

Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Parameters:
start - Sets the root of the iteration.
Returns:
A DTMAxisIterator set to the start of the iteration.

getStartNode

public int getStartNode()
Deprecated. 

Get start to END should 'close' the iterator, i.e. subsequent call to next() should return END.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
getStartNode in interface DTMAxisIterator
Overrides:
getStartNode in class DTMAxisIteratorBase
Returns:
The root node of the iteration.

isReverse

public boolean isReverse()
Deprecated. 

True if this iterator has a reversed axis.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
isReverse in interface DTMAxisIterator
Overrides:
isReverse in class DTMAxisIteratorBase
Returns:
true if this iterator has a reversed axis, else false

cloneIterator

public DTMAxisIterator cloneIterator()
Deprecated. 

Returns a deep copy of this iterator.

Use of an instance of this class as a DTMAxisIterator is deprecated.

Specified by:
cloneIterator in interface DTMAxisIterator
Overrides:
cloneIterator in class DTMAxisIteratorBase
Returns:
a deep copy of this iterator.

setDom

public void setDom(DOM dom)

getKeyIndexIterator

public KeyIndex.KeyIndexIterator getKeyIndexIterator(java.lang.Object keyValue,
                                                     boolean isKeyCall)
Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.

Parameters:
keyValue - A string or iterator representing the key values or id references
isKeyCall - A boolean indicating whether the iterator is being created for a reference key or id

getKeyIndexIterator

public KeyIndex.KeyIndexIterator getKeyIndexIterator(java.lang.String keyValue,
                                                     boolean isKeyCall)
Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.

Parameters:
keyValue - A string representing the key values or id references
isKeyCall - A boolean indicating whether the iterator is being created for a reference key or id

getKeyIndexIterator

public KeyIndex.KeyIndexIterator getKeyIndexIterator(DTMAxisIterator keyValue,
                                                     boolean isKeyCall)
Create a KeyIndex.KeyIndexIterator that iterates over the nodes that result from a reference to the XSLT key function or XPath id function.

Parameters:
keyValue - An iterator representing the key values or id references
isKeyCall - A boolean indicating whether the iterator is being created for a reference key or id