haul        02/02/05 08:59:40

  Modified:    src/java/org/apache/cocoon/components/language/markup/xsp
                        EsqlQuery.java
               src/java/org/apache/cocoon/components/language/markup/xsp/java
                        esql.xsl
               src/documentation/xdocs/userdocs/xsp esql.xml
  Log:
  Unsmarten esql about obtaining result sets from columns.
  
  Revision  Changes    Path
  1.9       +3 -2      
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/EsqlQuery.java
  
  Index: EsqlQuery.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/EsqlQuery.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- EsqlQuery.java    4 Feb 2002 12:22:22 -0000       1.8
  +++ EsqlQuery.java    5 Feb 2002 16:59:40 -0000       1.9
  @@ -70,7 +70,7 @@
    *
    * based on the orginal esql.xsl
    * @author <a href="mailto:[EMAIL PROTECTED]";>Torsten Curdt</a>
  - * @version CVS $Id: EsqlQuery.java,v 1.8 2002/02/04 12:22:22 cziegeler Exp $
  + * @version CVS $Id: EsqlQuery.java,v 1.9 2002/02/05 16:59:40 haul Exp $
    */
   
   public class EsqlQuery {
  @@ -101,6 +101,7 @@
       this.statement = null;
       this.query = null;
       this.resultSetValid = true;
  +    this.resultSet = aResultSet;
       this.hasResultSet = (this.resultSet != null);
     }
   
  @@ -243,7 +244,7 @@
     }
   
     public boolean getMoreResults() throws SQLException {
  -    return(statement.getMoreResults());
  +    return (statement!=null? statement.getMoreResults() : false);
     }
   
     public boolean execute() throws SQLException {
  
  
  
  1.6       +7 -6      
xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/esql.xsl
  
  Index: esql.xsl
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/language/markup/xsp/java/esql.xsl,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- esql.xsl  31 Jan 2002 16:11:33 -0000      1.5
  +++ esql.xsl  5 Feb 2002 16:59:40 -0000       1.6
  @@ -1,5 +1,5 @@
   <?xml version="1.0"?>
  -<!-- $Id: esql.xsl,v 1.5 2002/01/31 16:11:33 haul Exp $-->
  +<!-- $Id: esql.xsl,v 1.6 2002/02/05 16:59:40 haul Exp $-->
   <!--
   
    ============================================================================
  @@ -1051,7 +1051,7 @@
   </xsl:template>
   
   <xspdoc:desc>returns the type of the given column as int. the column must be 
specified by number, not name.</xspdoc:desc>
  -<xsl:template 
match="esql:row-results//esql:get-column-type|esql:call-results//esql:get-column-type">
  +<xsl:template 
match="esql:row-results//esql:get-column-type|esql:call-results//esql:get-column-type" 
name="get-column-type">
     <xsp:expr><xsl:call-template 
name="get-resultset"/>.getMetaData().getColumnType(<xsl:call-template 
name="get-column"/>)</xsp:expr>
   </xsl:template>
   
  @@ -1060,14 +1060,16 @@
     <xsp:expr>((<xsl:call-template name="get-resultset"/>.getObject("<xsl:value-of 
select="@column"/>") == null) || <xsl:call-template 
name="get-resultset"/>.wasNull())</xsp:expr>
   </xsl:template>
   
  +<xsl:template match="esql:result"/>
  +
   <xspdoc:desc>creates a nested query like block that uses the result set obtained 
from a column as current result set. Only row-results and no-results are supported as 
nested elements (i.e. more-results is not supported).</xspdoc:desc>
  -<xsl:template 
match="esql:row-results//esql:results[@from-column]|esql:call-results//esql:results[@from-column]"
 priority="2">
  +<xsl:template 
match="esql:row-results//esql:results[child::esql:result]|esql:call-results//esql:results[child::esql:result]">
   <xsp:logic>
     // nested result set
       if (_esql_query != null) {
         _esql_queries.push(_esql_query);
       }
  -    _esql_query = new EsqlQuery((ResultSet) <xsl:call-template 
name="get-resultset"/>.getObject(<xsl:value-of select="@from-column"/>));
  +  _esql_query = new EsqlQuery((ResultSet) <xsl:apply-templates 
select="esql:result/*"/>);
       {
         if (_esql_query.hasResultSet()) {
           do {
  @@ -1075,8 +1077,7 @@
   
             if (_esql_query.nextRow()) {
               <xsl:apply-templates select="esql:row-results"/>
  -          }
  -          else {
  +          } else {
               <xsl:apply-templates select="esql:no-results"/>
             }
             _esql_query.getResultSet().close();
  
  
  
  1.4       +20 -4     xml-cocoon2/src/documentation/xdocs/userdocs/xsp/esql.xml
  
  Index: esql.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon2/src/documentation/xdocs/userdocs/xsp/esql.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- esql.xml  5 Feb 2002 01:46:45 -0000       1.3
  +++ esql.xml  5 Feb 2002 16:59:40 -0000       1.4
  @@ -161,9 +161,7 @@
          procedure.</p>
   
        <p>Retrieve a ResultSet from any column and use it like the result of a
  -       nested query by e.g. <code>&lt;esql:results
  -         from-column="1"/&gt;</code>. Of course the column needs to return a
  -       result that is castable to ResultSet. Supported child elements are
  +       nested query. Supported child elements are
          <code>&lt;esql:row-results/&gt;</code> and
          <code>&lt;esql:no-results/&gt;</code>. Otherwise it behaves
          exactly like nesting queries. Thus the <code>ancestor</code>
  @@ -176,12 +174,30 @@
     type="Int"><xsp:expr>1</xsp:expr></esql:parameter>)}
   </esql:call>
   <esql:call-results>
  -  <esql:results from-column="1" from-call="true">
  +  <esql:results>
  +    <esql:result><xsp:expr>(ResultSet)<esql:get-object column="1" 
from-call="true"/></xsp:expr></esql:result>
       <esql:row-results>
         <esql:get-string column="1"/>
       </esql:row-results>
     </esql:results>
   </esql:call-results>
  +]]></source>
  +     <p>Example:</p>
  +<source><![CDATA[
  +<esql:query>select name, list_of_aliases from table</esql:query>
  +<esql:results>
  +  <esql:row-results>
  +    <p>
  +      <esql:get-string column="name"/>: 
  +      <esql:results>
  +        <esql:result><xsp:expr><esql:get-array 
column="list_of_aliases"/>.getResultSet()</xsp:expr></esql:result>
  +        <esql:row-results>
  +          <esql:get-string column="1"/>
  +        </esql:row-results>
  +      </esql:results>
  +    </p>
  +  </esql:row-results>
  +</esql:results>
   ]]></source>
         </s2>
   
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to