in java/src/org/apache/qetest/dtm/TimeDTMIterator.java [30:146]
public static void main(String argv[])
{
System.out.println("\n#### Timing Iterations of DEEP documents. ####");
StringBuffer buf = new StringBuffer();
int lastNode = 0;
String lastNodeName;
int[] rtData = {0,0,0}; // returns Traversal time, last node, number of nodes traversed
// Preload once to prime the JVM.
DTM dtm = QeDtmUtils.createDTM(0, QeDtmUtils.deepFile, buf);
// Time the creation of the dtm
buf.setLength(0);
dtm = QeDtmUtils.createDTM(0, QeDtmUtils.deepFile, buf);
buf.setLength(0);
dtm = QeDtmUtils.createDTM(0, QeDtmUtils.deepFile, buf);
buf.setLength(0);
dtm = QeDtmUtils.createDTM(0, QeDtmUtils.deepFile, buf);
// Get various nodes to use as context nodes.
int dtmRoot = dtm.getDocument(); // #document
String dtmRootName = dtm.getNodeName(dtmRoot); // Used for output
int DNode = dtm.getFirstChild(dtmRoot); // <Doc>
String DNodeName = dtm.getNodeName(DNode);
int ANode = dtm.getFirstChild(DNode); // <A>
String ANodeName = dtm.getNodeName(ANode);
// Get a traverser for Descendant:: axis.
System.out.println("\n* DESCENDANT from "+"<"+DNodeName+">");
QeDtmUtils.timeAxisIterator(dtm, Axis.DESCENDANT, DNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Descendant:: axis.
System.out.println("\n* DESCENDANT-OR-SELF from "+"<"+DNodeName+">");
QeDtmUtils.timeAxisIterator(dtm, Axis.DESCENDANTORSELF, DNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Use last node from Child traverse as Context node for subsequent traversals
lastNode = rtData[1];
lastNodeName = dtm.getNodeName(lastNode);
// Get a traverser for Ancestor:: axis.
System.out.println("\n* ANCESTOR from "+"<"+lastNodeName+">");
QeDtmUtils.timeAxisIterator(dtm, Axis.ANCESTOR, lastNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Ancestor:: axis.
System.out.println("\n* ANCESTOR-OR-SELF from "+"<"+lastNodeName+">");
QeDtmUtils.timeAxisIterator(dtm, Axis.ANCESTORORSELF, lastNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
System.out.println("\n#### Testing Iteration of FLAT documents. ####");
buf.setLength(0);
DTM dtm2 = QeDtmUtils.createDTM(0, QeDtmUtils.flatFile, buf);
buf.setLength(0);
dtm2 = QeDtmUtils.createDTM(0, QeDtmUtils.flatFile, buf);
buf.setLength(0);
dtm2 = QeDtmUtils.createDTM(0, QeDtmUtils.flatFile, buf);
buf.setLength(0);
dtm2 = QeDtmUtils.createDTM(0, QeDtmUtils.flatFile, buf);
buf.setLength(0);
dtm2 = QeDtmUtils.createDTM(0, QeDtmUtils.flatFile, buf);
// Get various nodes to use as context nodes.
dtmRoot = dtm2.getDocument(); // #document
dtmRootName = dtm2.getNodeName(dtmRoot); // Used for output
DNode = dtm2.getFirstChild(dtmRoot); // <Doc>
DNodeName = dtm2.getNodeName(DNode);
int fiNode = dtm2.getFirstChild(DNode); // first <item>
String fiNodeName = dtm2.getNodeName(fiNode);
// Get a traverser for Child:: axis.
System.out.println("\n* CHILD from "+"<"+DNodeName+"> " + DNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.CHILD, DNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Following:: axis.
System.out.println("\n* FOLLOWING from "+"<"+fiNodeName+"> " + fiNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.FOLLOWING, fiNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Following-sibling:: axis.
System.out.println("\n* FOLLOWINGSIBLING from "+"<"+fiNodeName+"> " + fiNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.FOLLOWINGSIBLING, fiNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Descendant:: axis.
System.out.println("\n* DESCENDANT from "+"<"+DNodeName+"> " + DNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.DESCENDANT, DNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Use last node from Descendant traverse as Context node for subsequent traversals
lastNode = rtData[1];
lastNodeName = dtm2.getNodeName(lastNode);
// Get a traverser for Ancestor:: axis.
System.out.println("\n* ANCESTOR from "+"<"+lastNodeName+"> " + lastNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.ANCESTOR, lastNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Preceding:: axis.
System.out.println("\n* PRECEDING-SIBLING from "+"<"+lastNodeName+"> " + lastNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.PRECEDINGSIBLING, lastNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
// Get a traverser for Preceding:: axis.
System.out.println("\n* PRECEDING from "+"<"+lastNodeName+"> " + lastNode);
QeDtmUtils.timeAxisIterator(dtm2, Axis.PRECEDING, lastNode, rtData);
System.out.println("Time="+rtData[0] + " : " + "LastNode="+rtData[1]+" nodes="+rtData[2]);
}