Author: mbenson
Date: Wed Jun 27 14:02:43 2007
New Revision: 551323

URL: http://svn.apache.org/viewvc?view=rev&rev=551323
Log:
"rawblobs" attribute added to SQL task.

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/docs/manual/CoreTasks/sql.html
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/SQLExec.java

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?view=diff&rev=551323&r1=551322&r2=551323
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Wed Jun 27 14:02:43 2007
@@ -160,6 +160,8 @@
 
 * Default text added to macrodef. Bugzilla report 42301.
 
+* "rawblobs" attribute added to SQL task.
+
 
 Changes from Ant 1.6.5 to Ant 1.7.0
 ===================================

Modified: ant/core/trunk/docs/manual/CoreTasks/sql.html
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTasks/sql.html?view=diff&rev=551323&r1=551322&r2=551323
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/sql.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/sql.html Wed Jun 27 14:02:43 2007
@@ -188,6 +188,13 @@
   <td width="10%" valign="top">No (default=true)</td>
 </tr>
 
+<tr>
+  <td width="12%" valign="top">rawblobs</td>
+  <td width="78%" valign="top">If true, will write raw streams rather than hex 
encoding when
+    printing BLOB results. <em>Since Ant 1.7.1</em>.</td>
+  <td width="10%" valign="top">No, default <em>false</em></td>
+</tr>
+
 </table>
 
 <h3>Parameters specified as nested elements</h3>

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/SQLExec.java
URL: 
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/SQLExec.java?view=diff&rev=551323&r1=551322&r2=551323
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/SQLExec.java 
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/SQLExec.java Wed Jun 
27 14:02:43 2007
@@ -49,6 +49,7 @@
 import java.sql.SQLWarning;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
+import java.sql.Types;
 
 /**
  * Executes a series of SQL statements on a database using JDBC.
@@ -192,6 +193,12 @@
     private boolean expandProperties = true;
 
     /**
+     * should we print raw BLOB data?
+     * @since Ant 1.7.1
+     */
+    private boolean rawBlobs;
+
+    /**
      * Set the name of the SQL file to be run.
      * Required unless statements are enclosed in the build file
      * @param srcFile the file containing the SQL command.
@@ -373,6 +380,15 @@
     }
 
     /**
+     * Set whether to print raw BLOBs rather than their string (hex) 
representations.
+     * @param rawBlobs whether to print raw BLOBs.
+     * @since Ant 1.7.1
+     */
+    public void setRawBlobs(boolean rawBlobs) {
+        this.rawBlobs = rawBlobs;
+    }
+
+    /**
      * Load the sql file and then execute it
      * @throws BuildException on error.
      */
@@ -634,16 +650,25 @@
                     out.println();
                 }
                 while (rs.next()) {
-                    out.print(rs.getString(1));
+                    printValue(rs, 1, out);
                     for (int col = 2; col <= columnCount; col++) {
                         out.write(',');
-                        out.print(rs.getString(col));
+                        printValue(rs, col, out);
                     }
                     out.println();
                 }
             }
         }
         out.println();
+    }
+
+    private void printValue(ResultSet rs, int col, PrintStream out)
+            throws SQLException {
+        if (rawBlobs && rs.getMetaData().getColumnType(col) == Types.BLOB) {
+            new StreamPumper(rs.getBlob(col).getBinaryStream(), out).run();
+        } else {
+            out.print(rs.getString(col));
+        }
     }
 
     /*



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to