Author: vgritsenko
Date: Fri May 6 07:51:55 2005
New Revision: 168611
URL: http://svn.apache.org/viewcvs?rev=168611&view=rev
Log:
fix bug #25098
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/samples.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/stylesheets/sql2html.xsl
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sitemap.xmap
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page2.xml
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page3.xml
cocoon/branches/BRANCH_2_1_X/status.xml
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/java/org/apache/cocoon/transformation/SQLTransformer.java
Fri May 6 07:51:55 2005
@@ -132,6 +132,12 @@
* <code>own-connection</code> parameter.
* </p>
*
+ * <p>
+ * TODO: Support inserting of the XML data into the database without need to
escape it.
+ * Can be implemented by introducing new <sql:xml/> tag to
indicate that
+ * startSerializedXMLRecording(...) should be used.
+ * </p>
+ *
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Donald Ball</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
@@ -1158,7 +1164,7 @@
if (success) {
AttributesImpl attr = new AttributesImpl();
- if (this.showNrOfRows) {
+ if (showNrOfRows) {
attr.addAttribute("", this.nrOfRowsAttr,
this.nrOfRowsAttr, "CDATA", String.valueOf(getNrOfRows()));
}
String name = getName();
@@ -1167,7 +1173,9 @@
}
start(this.rowsetElement, attr);
- if (!isStoredProcedure) {
+ if (isStoredProcedure) {
+ serializeStoredProcedure();
+ } else {
while (next()) {
start(this.rowElement, EMPTY_ATTRIBUTES);
serializeRow();
@@ -1176,8 +1184,6 @@
}
end(this.rowElement);
}
- } else {
- serializeStoredProcedure();
}
end(this.rowsetElement);
@@ -1262,6 +1268,7 @@
protected int getNrOfRows() throws SQLException {
int nr = 0;
+
if (rs != null) {
if (oldDriver) {
nr = -1;
@@ -1324,10 +1331,12 @@
// If rv is not -1, then an SQL insert, update, etc, has
// happened (see JDBC docs - return codes for executeUpdate)
if (rv != -1) {
- return false;
+ // Output row with return code. Once.
+ return true;
}
if (rs == null || !rs.next()) {
+ // No more rows.
return false;
}
@@ -1400,18 +1409,20 @@
protected void serializeRow()
throws SQLException, SAXException {
- if (!isUpdate && !isStoredProcedure) {
+ if (rv != -1) {
+ start("returncode", EMPTY_ATTRIBUTES);
+ serializeData(String.valueOf(rv));
+ end("returncode");
+ // We only want the return code shown once.
+ // Reset rv so next() returns false next time.
+ rv = -1;
+ } else {
for (int i = 1; i <= md.getColumnCount(); i++) {
String columnName = getColumnName(md.getColumnName(i));
start(columnName, EMPTY_ATTRIBUTES);
serializeData(getColumnValue(i));
end(columnName);
}
- } else if (isUpdate && !isStoredProcedure) {
- start("returncode", EMPTY_ATTRIBUTES);
- serializeData(String.valueOf(rv));
- end("returncode");
- rv = -1; // we only want the return code shown once.
}
}
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/samples.xml
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/samples.xml?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/samples.xml
(original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/samples.xml Fri
May 6 07:51:55 2005
@@ -41,7 +41,8 @@
Example with two queries nested into the third one.
</sample>
<sample name="XML Test" href="transform/sql-page3" xlink:role="dynamic">
- Example with inserting XML into a database.
+ Example with inserting XML into a database and with a select statement
+ nested into the insert statement.
</sample>
</group>
@@ -68,7 +69,7 @@
modular package which supports auto increments and more.
</sample>
<sample name="File Upload to Blob" href="mod-db/file-upload-blob">
- A simple example demonstrating of populating a binary database column
+ A simple example demonstrating of populating a binary database column
via a multipart form file upload.
</sample>
</group>
@@ -107,5 +108,5 @@
Start the tutorial application.
</sample>
</group>
-
+
</samples>
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/stylesheets/sql2html.xsl
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/stylesheets/sql2html.xsl?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/stylesheets/sql2html.xsl
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/stylesheets/sql2html.xsl
Fri May 6 07:51:55 2005
@@ -60,6 +60,13 @@
<xsl:template match="sql:description"/>
+ <xsl:template match="sql:returncode">
+ <td>
+ <xsl:copy-of select="node()"/>
+ rows updated.
+ </td>
+ </xsl:template>
+
<xsl:template match="sql:id">
<!-- ignore -->
</xsl:template>
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sitemap.xmap
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sitemap.xmap?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sitemap.xmap
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sitemap.xmap
Fri May 6 07:51:55 2005
@@ -36,8 +36,8 @@
<!-- =========================== Pipelines =================================
-->
<map:pipelines>
-
<map:pipeline>
+
<map:match pattern="*">
<map:generate src="{1}.xml"/>
<!--
@@ -55,7 +55,7 @@
<map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="file" value=".xml"/>
</map:transform>
- <map:serialize/>
+ <map:serialize type="html"/>
</map:match>
<map:match pattern="">
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page2.xml
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page2.xml?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page2.xml
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page2.xml
Fri May 6 07:51:55 2005
@@ -24,7 +24,7 @@
</resources>
<content>
- <para>This is my first Cocoon2 page filled with SQL data!</para>
+ <para>This is another page filled with SQL data.</para>
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page3.xml
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page3.xml?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
---
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page3.xml
(original)
+++
cocoon/branches/BRANCH_2_1_X/src/blocks/databases/samples/transform/sql-page3.xml
Fri May 6 07:51:55 2005
@@ -24,18 +24,32 @@
</resources>
<content>
- <para>This is my first Cocoon2 page filled with SQL data!</para>
+ <para>This page inserts a row into the table.</para>
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
- select max(id) as maxid from department
+ select (max(id)+1) as maxid from department
</sql:query>
<sql:execute-query>
+ <!--
+ - Don't do this in real applications: use sequences or auto
increment fields.
+ -->
<sql:query>
- insert into department (id, name, description)
- values(<sql:ancestor-value name="maxid" level="1"/> + 1, 'XML
Test',
- '<span>An XML Test</span>')
+ insert into department (id, name, description)
+ values(<sql:ancestor-value name="maxid" level="1"/>,
+ 'XML Test <sql:ancestor-value name="maxid" level="1"/>',
+ '<span>A <sql:ancestor-value name="maxid" level="1"/>th
attempt to insert <i>XML</i> into the database.</span>')
</sql:query>
+
+ <!--
+ - Output data after update is complete.
+ -->
+ <sql:execute-query>
+ <sql:query>
+ select id, name, description from department
+ </sql:query>
+ </sql:execute-query>
+
</sql:execute-query>
</sql:execute-query>
</content>
Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL:
http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?rev=168611&r1=168610&r2=168611&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Fri May 6 07:51:55 2005
@@ -196,6 +196,11 @@
<changes>
<release version="@version@" date="@date@">
+ <action dev="VG" type="fix" fixes-bug="25098">
+ Databases: SQLTransformer: Support queries nested into
insert/delete/update
+ queries. Return number of rows updated by insert/delete/update queries as
+ <code>returncode</code> element.
+ </action>
<action dev="VG" type="fix">
Databases: SQLTransformer: Each query can now have connection with own
database connection configuration parameters. Queries with same
configuration