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><esql:results - from-column="1"/></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><esql:row-results/></code> and <code><esql:no-results/></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]