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();
  
  }