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]