@@ -360,16 +360,30 @@ public class SQLExec extends Task {
statement = conn.createStatement();
// Process all transactions
for (Enumeration e = transactions.elements();
e.hasMoreElements();) {
((Transaction) e.nextElement()).runTransaction();
if (!autocommit) {
log("Commiting transaction", Project.MSG_VERBOSE);
conn.commit();
PrintStream out = System.out;
try {
if (output != null) {
log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE);
out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output)));
}
// Process all transactions
for (Enumeration e = transactions.elements();
e.hasMoreElements();) {
((Transaction) e.nextElement()).runTransaction(out);
if (!autocommit) {
log("Commiting transaction", Project.MSG_VERBOSE);
conn.commit();
}
}
}
finally {
if (out != null && out != System.out) {
out.close();
}
}
} catch(IOException e){
if (!autocommit && conn != null && onError.equals("abort")) {
try {
@@ -401,7 +415,7 @@ public class SQLExec extends Task {
" SQL statements executed successfully");
}
protected void runStatements(Reader reader) throws SQLException, IOException {
protected void runStatements(Reader reader, PrintStream out ) throws SQLException, IOException {
String sql = "";
String line = "";
@@ -422,14 +436,14 @@ public class SQLExec extends Task {
if (sql.endsWith(";")){
log("SQL: " + sql, Project.MSG_VERBOSE);
execSQL(sql.substring(0, sql.length()-1));
execSQL(sql.substring(0, sql.length()-1), out );
sql = "";
}
}
// Catch any statements not followed by ;
if(!sql.equals("")){
execSQL(sql);
execSQL(sql, out );
}
}catch(SQLException e){
throw e;
@@ -481,7 +495,7 @@ public class SQLExec extends Task {
/**
* Exec the sql statement.
*/
protected void execSQL(String sql) throws SQLException {
protected void execSQL(String sql, PrintStream out ) throws SQLException {
// Check and ignore empty statements
if ("".equals(sql.trim())) return;
@@ -493,7 +507,7 @@ public class SQLExec extends Task {
}
if (print) {
printResults();
printResults(out );
}
SQLWarning warning = conn.getWarnings();
@@ -514,61 +528,47 @@ public class SQLExec extends Task {
/**
* print any results in the statement.
*/
protected void printResults() throws java.sql.SQLException {
protected void printResults(PrintStream out ) throws java.sql.SQLException {
ResultSet rs = null;
PrintStream out = System.out;
try {
if (output != null) {
log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE);
out = new PrintStream(new BufferedOutputStream(new FileOutputStream(output)));
}
do {
rs = statement.getResultSet();
if (rs != null) {
log("Processing new result set.", Project.MSG_VERBOSE);
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
StringBuffer line = new StringBuffer();
if (showheaders) {
for (int col = 1; col < columnCount; col++) {
line.append(md.getColumnName(col));
line.append(",");
}
line.append(md.getColumnName(columnCount));
out.println(line);
line.setLength(0);
do {
rs = statement.getResultSet();
if (rs != null) {
log("Processing new result set.", Project.MSG_VERBOSE);
ResultSetMetaData md = rs.getMetaData();
int columnCount = md.getColumnCount();
StringBuffer line = new StringBuffer();
if (showheaders) {
for (int col = 1; col < columnCount; col++) {
line.append(md.getColumnName(col));
line.append(",");
}
while (rs.next()) {
boolean first = true;
for (int col = 1; col <= columnCount; col++) {
String columnValue = rs.getString(col);
if (columnValue != null) {
columnValue = columnValue.trim();
}
if (first) {
first = false;
}
else {
line.append(",");
}
line.append(columnValue);
line.append(md.getColumnName(columnCount));
out.println(line);
line.setLength(0);
}
while (rs.next()) {
boolean first = true;
for (int col = 1; col <= columnCount; col++) {
String columnValue = rs.getString(col);
if (columnValue != null) {
columnValue = columnValue.trim();
}
if (first) {
first = false;
}
else {
line.append(",");
}
out.println(line);
line.setLength(0);
line.append(columnValue);
}
out.println(line);
line.setLength(0);
}
}
while (statement.getMoreResults());
}
catch (IOException ioe) {
throw new BuildException("Error writing " + output.getAbsolutePath(), ioe, location);
}
finally {
if (out != null && out != System.out) {
out.close();
}
}
while (statement.getMoreResults());
out.println();
}
/**
@@ -599,16 +599,16 @@ public class SQLExec extends Task {
this.tSqlCommand += sql;
}
private void runTransaction() throws IOException, SQLException {
private void runTransaction(PrintStream out ) throws IOException, SQLException {
if (tSqlCommand.length() != 0) {
log("Executing commands", Project.MSG_INFO);
runStatements(new StringReader(tSqlCommand));
runStatements(new StringReader(tSqlCommand), out );
}
if (tSrcFile != null) {
log("Executing file: " + tSrcFile.getAbsolutePath(),
Project.MSG_INFO);
runStatements(new FileReader(tSrcFile));
runStatements(new FileReader(tSrcFile), out );
}
}
}