You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sb...@locus.apache.org on 2000/08/11 04:57:21 UTC
cvs commit: xml-xalan/java/src/org/apache/xpath DOMOrder.java DOM2Helper.java
sboag 00/08/10 19:57:21
Modified: java/src/org/apache/xalan/lib/sql Row.java
StreamableNode.java XStatement.java
java/src/org/apache/xalan/stree Child.java
StreeDOMHelper.java
java/src/org/apache/xalan/transformer ResultTreeHandler.java
java/src/org/apache/xpath DOM2Helper.java
Added: java/src/org/apache/xpath DOMOrder.java
Log:
Fixed incremental rendering for the sql extension.
Revision Changes Path
1.2 +11 -1 xml-xalan/java/src/org/apache/xalan/lib/sql/Row.java
Index: Row.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/lib/sql/Row.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Row.java 2000/08/07 02:48:12 1.1
+++ Row.java 2000/08/11 02:57:18 1.2
@@ -87,7 +87,10 @@
public Node getNextSibling()
{
if(DEBUG)
- System.out.println("In Row.getNextSibling");
+ {
+ System.out.print("In Row.getNextSibling");
+ System.out.flush();
+ }
XStatement xstatement = this.getXStatement();
ResultSet resultSet = xstatement.getResultSet();
try
@@ -112,6 +115,13 @@
{
// Diagnostics?
}
+ }
+ if(DEBUG)
+ {
+ System.out.println(": m_next: "+m_next);
+ System.out.flush();
+ // Exception e = new Exception();
+ // e.printStackTrace();
}
return m_next;
}
1.3 +29 -1 xml-xalan/java/src/org/apache/xalan/lib/sql/StreamableNode.java
Index: StreamableNode.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/lib/sql/StreamableNode.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- StreamableNode.java 2000/08/09 18:25:42 1.2
+++ StreamableNode.java 2000/08/11 02:57:18 1.3
@@ -8,12 +8,13 @@
import org.apache.xpath.patterns.NodeTestFilter;
import org.apache.xpath.patterns.NodeTest;
import org.apache.xalan.res.XSLTErrorResources;
+import org.apache.xpath.DOMOrder;
/**
* This is the superclass for all nodes in the Xalan sql package.
*/
public class StreamableNode extends UnImplNode
- implements NodeTestFilter, NamedNodeMap
+ implements NodeTestFilter, NamedNodeMap, DOMOrder
{
private XStatement m_statement;
@@ -32,6 +33,10 @@
public StreamableNode(XStatement statement)
{
m_statement = statement;
+ if(null != statement)
+ {
+ m_orderIndex = m_statement.getAndIncrementNodeCounter();
+ }
}
public void setNodeTest(NodeTest nodeTest)
@@ -128,4 +133,27 @@
error(XSLTErrorResources.ER_FUNCTION_NOT_SUPPORTED);
return null;
}
+
+
+ int m_orderIndex = -1;
+
+ /**
+ * Get the UID (document order index).
+ */
+ public int getUid()
+ {
+ if(-1 == m_orderIndex)
+ {
+ if(null != m_statement)
+ {
+ m_orderIndex = m_statement.getAndIncrementNodeCounter();
+ }
+ else
+ m_orderIndex = 0; // ?
+ }
+ // System.out.println(" Returning UID: "+m_orderIndex);
+ // System.out.flush();
+ return m_orderIndex;
+ }
+
}
1.2 +9 -0 xml-xalan/java/src/org/apache/xalan/lib/sql/XStatement.java
Index: XStatement.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/lib/sql/XStatement.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- XStatement.java 2000/08/07 02:48:12 1.1
+++ XStatement.java 2000/08/11 02:57:18 1.2
@@ -23,6 +23,15 @@
private static final boolean DEBUG = false;
private Statement m_statement;
+ private int m_nodeCounter = 0;
+
+ int getAndIncrementNodeCounter()
+ {
+ int c = m_nodeCounter;
+ m_nodeCounter++;
+ return c;
+ }
+
public Statement getStatement()
{
return m_statement;
1.5 +2 -1 xml-xalan/java/src/org/apache/xalan/stree/Child.java
Index: Child.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/stree/Child.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Child.java 2000/07/30 22:48:06 1.4
+++ Child.java 2000/08/11 02:57:18 1.5
@@ -1,13 +1,14 @@
package org.apache.xalan.stree;
import org.apache.xalan.utils.UnImplNode;
+import org.apache.xpath.DOMOrder;
import org.w3c.dom.Node;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import org.w3c.dom.NamedNodeMap;
-public class Child extends UnImplNode
+public class Child extends UnImplNode implements DOMOrder
{
private Parent m_parent;
private short m_level;
1.5 +0 -27 xml-xalan/java/src/org/apache/xalan/stree/StreeDOMHelper.java
Index: StreeDOMHelper.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/stree/StreeDOMHelper.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- StreeDOMHelper.java 2000/08/07 03:00:02 1.4
+++ StreeDOMHelper.java 2000/08/11 02:57:18 1.5
@@ -26,33 +26,6 @@
return super.getUniqueID(node);
}
}
-
- /**
- * Figure out if node2 should be placed after node1 when
- * placing nodes in a list that is to be sorted in
- * document order.
- * NOTE: Make sure this does the right thing with attribute nodes!!!
- * @return true if node2 should be placed
- * after node1, and false if node2 should be placed
- * before node1.
- */
- public boolean isNodeAfter(Node node1, Node node2)
- {
- // Assume first that the nodes are DTM nodes, since discovering node
- // order is massivly faster for the DTM.
- try
- {
- int index1 = ((Child)node1).getUid();
- int index2 = ((Child)node2).getUid();
- return index1 <= index2;
- }
- catch(ClassCastException cce)
- {
- // isNodeAfter will return true if node is after countedNode
- // in document order. isDOMNodeAfter is sloooow (relativly).
- return super.isNodeAfter(node1, node2);
- }
- }
/**
* <meta name="usage" content="internal"/>
1.5 +10 -5 xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
Index: ResultTreeHandler.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ResultTreeHandler.java 2000/07/23 17:47:51 1.4
+++ ResultTreeHandler.java 2000/08/11 02:57:19 1.5
@@ -366,13 +366,18 @@
GenerateEvent.EVENTTYPE_STARTDOCUMENT));
}
+ // System.out.print("Calling start element: "+m_pendingElementName+"... ");
+ // System.out.print(" on: "+getContentHandler()+"... ");
+ // System.out.flush();
getContentHandler().startElement(m_pendingElementNS,
- m_pendingElementLName,
- m_pendingElementName,
- m_pendingAttributes);
+ m_pendingElementLName,
+ m_pendingElementName,
+ m_pendingAttributes);
+ // System.out.println("Done calling start element: "+m_pendingElementLName);
+ // System.out.flush();
m_transformer.getTraceManager().fireGenerateEvent(new GenerateEvent(m_transformer,
- GenerateEvent.EVENTTYPE_STARTELEMENT,
- m_pendingElementName, m_pendingAttributes));
+ GenerateEvent.EVENTTYPE_STARTELEMENT,
+ m_pendingElementName, m_pendingAttributes));
clearPendingElement();
}
}
1.2 +27 -0 xml-xalan/java/src/org/apache/xpath/DOM2Helper.java
Index: DOM2Helper.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/DOM2Helper.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DOM2Helper.java 2000/07/05 14:44:20 1.1
+++ DOM2Helper.java 2000/08/11 02:57:20 1.2
@@ -195,6 +195,33 @@
{
return doc.getElementById(id);
}
+
+ /**
+ * Figure out if node2 should be placed after node1 when
+ * placing nodes in a list that is to be sorted in
+ * document order.
+ * NOTE: Make sure this does the right thing with attribute nodes!!!
+ * @return true if node2 should be placed
+ * after node1, and false if node2 should be placed
+ * before node1.
+ */
+ public boolean isNodeAfter(Node node1, Node node2)
+ {
+ // Assume first that the nodes are DTM nodes, since discovering node
+ // order is massivly faster for the DTM.
+ try
+ {
+ int index1 = ((DOMOrder)node1).getUid();
+ int index2 = ((DOMOrder)node2).getUid();
+ return index1 <= index2;
+ }
+ catch(ClassCastException cce)
+ {
+ // isNodeAfter will return true if node is after countedNode
+ // in document order. isDOMNodeAfter is sloooow (relativly).
+ return super.isNodeAfter(node1, node2);
+ }
+ }
/**
* Get the parent of a node.
1.1 xml-xalan/java/src/org/apache/xpath/DOMOrder.java
Index: DOMOrder.java
===================================================================
package org.apache.xpath;
/**
* Nodes that implement this index can return a document order index.
* Eventually, this will be replaced by DOM 3 methods.
*/
public interface DOMOrder
{
/**
* Get the UID (document order index).
*/
public int getUid();
}