org.apache.xalan.xsltc.dom
Class SortingIterator

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

public final class SortingIterator
extends DTMAxisIteratorBase

Author:
Jacek Ambroziak, Santiago Pericas-Geertsen, Morten Jorgensen

Field Summary
 
Fields inherited from interface org.apache.xml.dtm.DTMAxisIterator
END
 
Constructor Summary
SortingIterator(DTMAxisIterator source, NodeSortRecordFactory factory)
           
 
Method Summary
 DTMAxisIterator cloneIterator()
          Clone a SortingIterator by cloning its source iterator and then sharing the factory and the array of NodeSortRecords.
 int getLast()
          Returns the position of the last node within the iteration, as defined by XPath.
 int getPosition()
           
 void gotoMark()
          Restores the current node remembered by setMark().
 int next()
          Get the next node in the iteration.
 void setMark()
          Remembers the current node for the next call to gotoMark().
 DTMAxisIterator setStartNode(int node)
          Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.
 
Methods inherited from class org.apache.xml.dtm.ref.DTMAxisIteratorBase
getAxis, getNodeByPosition, getStartNode, includeSelf, isDocOrdered, isReverse, reset, setRestartable
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SortingIterator

public SortingIterator(DTMAxisIterator source,
                       NodeSortRecordFactory factory)
Method Detail

next

public int next()
Description copied from interface: DTMAxisIterator
Get the next node in the iteration.

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

setStartNode

public DTMAxisIterator setStartNode(int node)
Description copied from interface: DTMAxisIterator
Set start to END should 'close' the iterator, i.e. subsequent call to next() should return END.

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

getPosition

public int getPosition()
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.

getLast

public int getLast()
Description copied from class: DTMAxisIteratorBase
Returns the position of the last node within the iteration, as defined by XPath. In a forward iterator, I believe this equals the number of nodes which this iterator will yield. In a reverse iterator, I believe it should return 1 (since the "last" is the first produced.) This may be an expensive operation when called the first time, since it may have to iterate through a large part of the document to produce its answer.

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

setMark

public void setMark()
Description copied from interface: DTMAxisIterator
Remembers the current node for the next call to gotoMark().


gotoMark

public void gotoMark()
Description copied from interface: DTMAxisIterator
Restores the current node remembered by setMark().


cloneIterator

public DTMAxisIterator cloneIterator()
Clone a SortingIterator by cloning its source iterator and then sharing the factory and the array of NodeSortRecords.

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


Copyright ? 2005 Apache XML Project. All Rights Reserved.