You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2015/08/05 12:44:08 UTC
empire-db git commit: EMPIREDB-221
Repository: empire-db
Updated Branches:
refs/heads/master fd54d22df -> ba1d8264c
EMPIREDB-221
Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/ba1d8264
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/ba1d8264
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/ba1d8264
Branch: refs/heads/master
Commit: ba1d8264ceb0bd5d8c7c069f8330302c8d1f390f
Parents: fd54d22
Author: Rainer Döbele <do...@apache.org>
Authored: Wed Aug 5 12:44:03 2015 +0200
Committer: Rainer Döbele <do...@apache.org>
Committed: Wed Aug 5 12:44:03 2015 +0200
----------------------------------------------------------------------
.../samples/db/advanced/SampleAdvApp.java | 45 ++-
.../org/apache/empire/db/DBDatabaseDriver.java | 85 ++++-
.../java/org/apache/empire/db/DBSQLScript.java | 357 ++++++++++++++++---
.../db/sqlite/DBDatabaseDriverSQLite.java | 45 ---
4 files changed, 408 insertions(+), 124 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/empire-db/blob/ba1d8264/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
----------------------------------------------------------------------
diff --git a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index b59e74b..1100e23 100644
--- a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++ b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -130,16 +130,19 @@ public class SampleAdvApp
int idEmp2 = insertEmployee(conn, "Fred", "Bloggs", "M");
int idEmp3 = insertEmployee(conn, "Emma", "White", "F");
- insertEmpDepHistory(conn, idEmp1, idDevDep, DateUtils.getDate(2007, 11, 1));
- insertEmpDepHistory(conn, idEmp1, idProdDep, DateUtils.getDate(2008, 8, 1));
- insertEmpDepHistory(conn, idEmp1, idSalDep, DateUtils.getDate(2009, 4, 15));
-
- insertEmpDepHistory(conn, idEmp2, idSalDep, DateUtils.getDate(2006, 2, 1));
- insertEmpDepHistory(conn, idEmp2, idDevDep, DateUtils.getDate(2008, 10, 15));
-
- insertEmpDepHistory(conn, idEmp3, idDevDep, DateUtils.getDate(2006, 8, 15));
- insertEmpDepHistory(conn, idEmp3, idSalDep, DateUtils.getDate(2007, 7, 1));
- insertEmpDepHistory(conn, idEmp3, idProdDep, DateUtils.getDate(2008, 6, 15));
+ // Insert History as batch
+ DBSQLScript batch = new DBSQLScript();
+ insertEmpDepHistory(batch, idEmp1, idDevDep, DateUtils.getDate(2007, 11, 1));
+ insertEmpDepHistory(batch, idEmp1, idProdDep, DateUtils.getDate(2008, 8, 1));
+ insertEmpDepHistory(batch, idEmp1, idSalDep, DateUtils.getDate(2009, 4, 15));
+
+ insertEmpDepHistory(batch, idEmp2, idSalDep, DateUtils.getDate(2006, 2, 1));
+ insertEmpDepHistory(batch, idEmp2, idDevDep, DateUtils.getDate(2008, 10, 15));
+
+ insertEmpDepHistory(batch, idEmp3, idDevDep, DateUtils.getDate(2006, 8, 15));
+ insertEmpDepHistory(batch, idEmp3, idSalDep, DateUtils.getDate(2007, 7, 1));
+ insertEmpDepHistory(batch, idEmp3, idProdDep, DateUtils.getDate(2008, 6, 15));
+ batch.executeBatch(db.getDriver(), conn);
// commit
db.commit(conn);
@@ -183,7 +186,7 @@ public class SampleAdvApp
System.out.println("*** drop EMPLOYEE_INFO_VIEW ***");
DBSQLScript script = new DBSQLScript();
db.getDriver().getDDLScript(DBCmdType.DROP, db.V_EMPLOYEE_INFO, script);
- script.run(db.getDriver(), conn, false);
+ script.executeAll(db.getDriver(), conn);
}
ddlSample(conn, idEmp2);
if (db.getDriver() instanceof DBDatabaseDriverH2) {
@@ -191,7 +194,7 @@ public class SampleAdvApp
System.out.println("*** create EMPLOYEE_INFO_VIEW ***");
DBSQLScript script = new DBSQLScript();
db.getDriver().getDDLScript(DBCmdType.CREATE, db.V_EMPLOYEE_INFO, script);
- script.run(db.getDriver(), conn, false);
+ script.executeAll(db.getDriver(), conn);
}
// STEP 13: delete records
@@ -303,7 +306,7 @@ public class SampleAdvApp
// Show DLL Statement
System.out.println(script.toString());
// Execute Script
- script.run(driver, conn, false);
+ script.executeAll(driver, conn);
// Commit
db.commit(conn);
}
@@ -364,15 +367,23 @@ public class SampleAdvApp
* Inserts an Employee into the Employees table.
* </PRE>
*/
- private static void insertEmpDepHistory(Connection conn, int employeeId, int departmentId, Date dateFrom)
+ private static void insertEmpDepHistory(DBSQLScript script, int employeeId, int departmentId, Date dateFrom)
{
// Insert an Employee
+ /*
DBRecord rec = new DBRecord();
rec.create(T_EDH);
rec.setValue(T_EDH.C_EMPLOYEE_ID, employeeId);
rec.setValue(T_EDH.C_DEPARTMENT_ID, departmentId);
rec.setValue(T_EDH.C_DATE_FROM, dateFrom);
rec.update(conn);
+ */
+ DBCommand cmd = db.createCommand();
+ cmd.set(T_EDH.C_EMPLOYEE_ID.to(employeeId));
+ cmd.set(T_EDH.C_DEPARTMENT_ID.to(departmentId));
+ cmd.set(T_EDH.C_DATE_FROM.to(dateFrom));
+ // Add to script for batch execution
+ script.addInsert(cmd);
}
/* This procedure demonstrates the use of command parameter for prepared statements */
@@ -537,7 +548,7 @@ public class SampleAdvApp
System.out.println("Creating new column named FOO as varchar(20) for the EMPLOYEES table:");
DBSQLScript script = new DBSQLScript();
db.getDriver().getDDLScript(DBCmdType.CREATE, C_FOO, script);
- script.run(db.getDriver(), conn, false);
+ script.executeAll(db.getDriver(), conn);
// Now load a record from that table and set the value for foo
System.out.println("Changing the value for the FOO field of a particular employee:");
@@ -551,7 +562,7 @@ public class SampleAdvApp
C_FOO.setSize(40);
script.clear();
db.getDriver().getDDLScript(DBCmdType.ALTER, C_FOO, script);
- script.run(db.getDriver(), conn, false);
+ script.executeAll(db.getDriver(), conn);
// Now set a longer value for the record
System.out.println("Changing the value for the FOO field for the above employee to a longer string:");
@@ -562,7 +573,7 @@ public class SampleAdvApp
System.out.println("Dropping the FOO column from the employee table:");
script.clear();
db.getDriver().getDDLScript(DBCmdType.DROP, C_FOO, script);
- script.run(db.getDriver(), conn, false);
+ script.executeAll(db.getDriver(), conn);
}
/**
http://git-wip-us.apache.org/repos/asf/empire-db/blob/ba1d8264/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
index 6d5e4d1..0995c55 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabaseDriver.java
@@ -397,14 +397,14 @@ public abstract class DBDatabaseDriver implements Serializable
* @param pstmt the prepared statement
* @param sqlParams list of objects
*/
- protected void prepareStatement(PreparedStatement pstmt, Object[] sqlParams, Connection conn)
+ protected void prepareStatement(PreparedStatement pstmt, Object[] sqlParams)
throws SQLException
{
for (int i=0; i<sqlParams.length; i++)
{
Object value = sqlParams[i];
try {
- addStatementParam(pstmt, i+1, value, conn);
+ addStatementParam(pstmt, i+1, value); // , conn
} catch(SQLException e) {
log.error("SQLException: Unable to set prepared statement parameter {} to '{}'", i+1, StringUtils.toString(value));
throw e;
@@ -418,9 +418,8 @@ public abstract class DBDatabaseDriver implements Serializable
* @param pstmt the prepared statement
* @param paramIndex the parameter index
* @param value the parameter value
- * @param conn the connection
*/
- protected void addStatementParam(PreparedStatement pstmt, int paramIndex, Object value, Connection conn)
+ protected void addStatementParam(PreparedStatement pstmt, int paramIndex, Object value)
throws SQLException
{
if (value instanceof DBBlobData)
@@ -544,7 +543,7 @@ public abstract class DBDatabaseDriver implements Serializable
? conn.prepareStatement(sqlCmd, Statement.RETURN_GENERATED_KEYS)
: conn.prepareStatement(sqlCmd);
stmt = pstmt;
- prepareStatement(pstmt, sqlParams, conn);
+ prepareStatement(pstmt, sqlParams);
count = pstmt.executeUpdate();
}
else
@@ -575,6 +574,80 @@ public abstract class DBDatabaseDriver implements Serializable
}
}
+ /**
+ * Executes a list of sql statements as batch
+ * @param sqlCmd
+ * @param sqlCmdParams
+ * @param conn
+ * @return
+ * @throws SQLException
+ */
+ public int[] executeBatch(String[] sqlCmd, Object[][] sqlCmdParams, Connection conn)
+ throws SQLException
+ { // Execute the Statement
+ if (sqlCmdParams!=null)
+ { // Use a prepared statement
+ PreparedStatement pstmt = null;
+ try
+ {
+ int pos=0;
+ String lastCmd = null;
+ int[] result = new int[sqlCmd.length];
+ for (int i=0; i<=sqlCmd.length; i++)
+ { // get cmd
+ String cmd = (i<sqlCmd.length ? sqlCmd[i] : null);
+ if (StringUtils.compareEqual(cmd, lastCmd, true)==false)
+ { // close last statement
+ if (pstmt!=null)
+ { // execute and close
+ log.debug("Executing batch containing {} statements", i-pos);
+ int[] res = pstmt.executeBatch();
+ for (int j=0; j<res.length; j++)
+ result[pos+j]=res[j];
+ pos+=res.length;
+ close(pstmt);
+ pstmt = null;
+ }
+ // has next?
+ if (cmd==null)
+ break;
+ // new statement
+ log.debug("Creating prepared statement for batch: "+cmd);
+ pstmt = conn.prepareStatement(cmd);
+ lastCmd = cmd;
+ }
+ // add batch
+ if (sqlCmdParams[i]!=null)
+ {
+ prepareStatement(pstmt, sqlCmdParams[i]);
+ }
+ log.debug("Adding batch with {} params.", (sqlCmdParams[i]!=null ? sqlCmdParams[i].length : 0));
+ pstmt.addBatch();
+ }
+ return result;
+ } finally {
+ close(pstmt);
+ }
+ }
+ else
+ { // Execute a simple statement
+ Statement stmt = conn.createStatement();
+ try {
+ for (int i=0; i<sqlCmd.length; i++)
+ {
+ String cmd = sqlCmd[i];
+ log.debug("Adding statement to batch: "+cmd);
+ stmt.addBatch(cmd);
+ }
+ log.debug("Executing batch containing {} statements", sqlCmd.length);
+ int result[] = stmt.executeBatch();
+ return result;
+ } finally {
+ close(stmt);
+ }
+ }
+ }
+
// executeQuery
public ResultSet executeQuery(String sqlCmd, Object[] sqlParams, boolean scrollable, Connection conn)
throws SQLException
@@ -589,7 +662,7 @@ public abstract class DBDatabaseDriver implements Serializable
{ // Use prepared statement
PreparedStatement pstmt = conn.prepareStatement(sqlCmd, type, ResultSet.CONCUR_READ_ONLY);
stmt = pstmt;
- prepareStatement(pstmt, sqlParams, conn);
+ prepareStatement(pstmt, sqlParams);
return pstmt.executeQuery();
} else
{ // Use simple statement
http://git-wip-us.apache.org/repos/asf/empire-db/blob/ba1d8264/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java b/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
index 1083066..2565a6b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBSQLScript.java
@@ -28,12 +28,11 @@ import org.apache.empire.exceptions.InvalidArgumentException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* DBSQLScript<br>
* This class is a collection of sql command strings.<br>
- * The class is used for obtaining and executing DDL commands supplied
- * by the database driver (@see {@link DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)})
+ * The class is used for obtaining and executing DDL commands supplied by the
+ * database driver (@see {@link DBDatabaseDriver#getDDLScript(DBCmdType, DBObject, DBSQLScript)})
*/
public class DBSQLScript implements Iterable<String>
{
@@ -41,33 +40,111 @@ public class DBSQLScript implements Iterable<String>
private static final Logger log = LoggerFactory.getLogger(DBSQLScript.class);
private static final String DEFAULT_COMMAND_SEPARATOR = ";\r\n\r\n";
+ /**
+ * SQLCmd
+ * @author doebele
+ */
+ protected static class SQLStmt
+ {
+ private String cmd;
+ private Object[] params;
+
+ public SQLStmt(String cmd, Object[] params)
+ {
+ this.cmd = cmd;
+ this.params = params;
+ }
+
+ public String getCmd()
+ {
+ return cmd;
+ }
+
+ public void setCmd(String cmd)
+ {
+ this.cmd = cmd;
+ }
+
+ public Object[] getParams()
+ {
+ return params;
+ }
+
+ public void setParams(Object[] params)
+ {
+ this.params = params;
+ }
+ }
+
+ /**
+ * SQLCmdIterator
+ * @author doebele
+ */
+ private static class SQLStmtIterator implements Iterator<String>
+ {
+ private final Iterator<SQLStmt> iterator;
+
+ private SQLStmtIterator(Iterator<SQLStmt> iterator)
+ {
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext()
+ {
+ return iterator.hasNext();
+ }
+
+ public String next()
+ {
+ return iterator.next().getCmd();
+ }
+
+ public void remove()
+ {
+ iterator.remove();
+ }
+ }
+
// Properties
- protected String commandSeparator = DEFAULT_COMMAND_SEPARATOR;
+ protected String commandSeparator = DEFAULT_COMMAND_SEPARATOR;
+
+ protected ArrayList<SQLStmt> sqlStmtList = new ArrayList<SQLStmt>();
- protected ArrayList<String> sqlCmdList = new ArrayList<String>();
-
public DBSQLScript()
{
// nothing
}
-
+
public DBSQLScript(String commandSeparator)
{
this.commandSeparator = commandSeparator;
}
-
+
/**
* Adds a statement to the script.
+ *
* @param sql the statement
*/
public void addStmt(String sql)
{
- sqlCmdList.add(sql);
+ sqlStmtList.add(new SQLStmt(sql, null));
}
-
+
+ /**
+ * Adds a statement to the script.
+ *
+ * @param sql the statement
+ * @param params the statement parameters
+ */
+ public void addStmt(String sql, Object[] params)
+ {
+ sqlStmtList.add(new SQLStmt(sql, params));
+ }
+
/**
* Adds a statement to the script.<br>
* The supplied StringBuilder will be reset to a length of 0
+ *
* @param sql the statement
*/
public final void addStmt(StringBuilder sql)
@@ -76,115 +153,283 @@ public class DBSQLScript implements Iterable<String>
// Clear Builder
sql.setLength(0);
}
-
+
+ /**
+ * Adds an insert statement
+ * @param cmd the insert command
+ */
+ public void addInsert(DBCommand cmd)
+ {
+ if (cmd == null)
+ throw new InvalidArgumentException("cmd", cmd);
+ addStmt(cmd.getInsert(), cmd.getParamValues());
+ }
+
+ /**
+ * Adds an update statement
+ * @param cmd the insert command
+ */
+ public void addUpdate(DBCommand cmd)
+ {
+ if (cmd == null)
+ throw new InvalidArgumentException("cmd", cmd);
+ addStmt(cmd.getUpdate(), cmd.getParamValues());
+ }
+
+ /**
+ * Adds an delete statement
+ * @param cmd the insert command
+ */
+ public void addDelete(DBCommand cmd, DBTable table)
+ {
+ if (cmd == null)
+ throw new InvalidArgumentException("cmd", cmd);
+ addStmt(cmd.getDelete(table), cmd.getParamValues());
+ }
+
/**
* Returns the number of statements in this script
+ *
* @return number of statements in this script
*/
public int getCount()
{
- return sqlCmdList.size();
+ return sqlStmtList.size();
}
-
+
/**
- * Returns the statement at the given index
+ * Returns the statement command at the given index
* @param i index of the statement to retrieve
- * @return the sql statement
+ * @return the sql statement command
*/
public String getStmt(int i)
{
- if (i<0 || i>=sqlCmdList.size())
+ if (i < 0 || i >= sqlStmtList.size())
throw new InvalidArgumentException("index", i);
- // return statement
- return sqlCmdList.get(i);
+ // return statement command
+ return sqlStmtList.get(i).getCmd();
}
-
+
/**
- * Replaces an entry in the list
- * @param i index of the statement to replace
- * @param stmt the new statement for this index, or NULL to remove the statement
+ * Returns the statement command at the given index
+ * @param i index of the statement to retrieve
+ * @return the sql statement params
*/
- public void setStmt(int i, String stmt)
+ public Object[] getStmtParams(int i)
{
- if (i<0 || i>=sqlCmdList.size())
+ if (i < 0 || i >= sqlStmtList.size())
throw new InvalidArgumentException("index", i);
- // replace or remove statement
- if (stmt==null)
- sqlCmdList.remove(i);
- else
- sqlCmdList.set(i, stmt);
+ // return statement params
+ return sqlStmtList.get(i).getParams();
}
-
+
/**
* Inserts an entry in the list
+ *
* @param i index of the statement to replace
* @param stmt the new statement for this index, or NULL to remove the statement
*/
- public void insertStmt(int i, String stmt)
+ public void insertStmt(int i, String stmt, Object[] params)
{
- if (stmt==null)
+ if (stmt == null)
throw new InvalidArgumentException("stmt", stmt);
- if (i<0 || i>sqlCmdList.size())
+ if (i < 0 || i > sqlStmtList.size())
throw new InvalidArgumentException("index", i);
+ // insert statement
+ sqlStmtList.add(i, new SQLStmt(stmt, params));
+ }
+
+ /**
+ * Inserts an entry in the list
+ *
+ * @param i index of the statement to replace
+ * @param stmt the new statement for this index, or NULL to remove the statement
+ */
+ public final void insertStmt(int i, String stmt)
+ {
// replace or remove statement
- sqlCmdList.add(i, stmt);
+ insertStmt(i, stmt, null);
}
-
+
+ /**
+ * Replaces an entry in the list
+ *
+ * @param i index of the statement to replace
+ * @param cmd the new statement for this index, or NULL to remove the statement
+ * @param params the command params (optional)
+ */
+ public void replaceStmt(int i, String cmd, Object[] params)
+ {
+ if (cmd == null)
+ throw new InvalidArgumentException("cmd", cmd);
+ if (i < 0 || i >= sqlStmtList.size())
+ throw new InvalidArgumentException("index", i);
+ // replace statement
+ SQLStmt stmt = sqlStmtList.get(i);
+ stmt.setCmd(cmd);
+ stmt.setParams(params);
+ }
+
+ /**
+ * Replaces an entry in the list
+ *
+ * @param i index of the statement to replace
+ * @param cmd the new statement for this index, or NULL to remove the statement
+ */
+ public final void replaceStmt(int i, String cmd)
+ {
+ // replace
+ replaceStmt(i, cmd, null);
+ }
+
+ /**
+ * Removes a statement from the list
+ * @param i index of the statement to replace
+ */
+ public void removeStmt(int i)
+ {
+ // check index
+ if (i < 0 || i >= sqlStmtList.size())
+ throw new InvalidArgumentException("index", i);
+ // remove statement
+ sqlStmtList.remove(i);
+ }
+
/**
* Clears the script by removing all statements
*/
public void clear()
{
- sqlCmdList.clear();
+ sqlStmtList.clear();
}
-
+
/**
- * Runs all SQL Statements using the supplied driver and connection.
+ * Executes all SQL Statements one by one using the supplied driver and connection.
+ *
* @param driver the driver used for statement execution
* @param conn the connection
* @param ignoreErrors true if errors should be ignored
+ * @return number of records affected
*/
- public void run(DBDatabaseDriver driver, Connection conn, boolean ignoreErrors)
+ public int executeAll(DBDatabaseDriver driver, Connection conn, boolean ignoreErrors)
{
log.debug("Running script containing " + String.valueOf(getCount()) + " statements.");
- for(String stmt : sqlCmdList)
+ int result = 0;
+ for (SQLStmt stmt : sqlStmtList)
{
- try {
+ try
+ {
// Execute Statement
- log.debug("Executing: " + stmt);
- driver.executeSQL(stmt, null, conn, null);
- } catch(SQLException e) {
+ log.debug("Executing: {}", stmt.getCmd());
+ int count = driver.executeSQL(stmt.getCmd(), stmt.getParams(), conn, null);
+ result += (count >= 0 ? count : 0);
+ }
+ catch (SQLException e)
+ {
// SQLException
log.error(e.toString(), e);
- if (ignoreErrors==false)
- { // forward exception
+ if (ignoreErrors == false)
+ { // forward exception
throw new EmpireSQLException(driver, e);
- }
+ }
// continue
log.debug("Ignoring error. Continuing with script...");
}
}
- log.debug("Script completed.");
+ log.debug("Script completed. {} records affected.", result);
+ return result;
+ }
+
+ /**
+ * Executes all SQL Statements one by one using the supplied driver and connection.
+ *
+ * @param driver the driver used for statement execution
+ * @param conn the connection
+ * @return number of records affected
+ */
+ public final int executeAll(DBDatabaseDriver driver, Connection conn)
+ {
+ return executeAll(driver, conn, false);
+ }
+
+ /**
+ * Executes all SQL Statements as a JDBC Batch Job.
+ *
+ * @param driver the driver used for statement execution
+ * @param conn the connection
+ * @param ignoreErrors true if errors should be ignored
+ */
+ public int executeBatch(DBDatabaseDriver driver, Connection conn)
+ {
+ log.debug("Running batch containing " + String.valueOf(getCount()) + " statements.");
+ try
+ {
+ // Execute Statement
+ int count = sqlStmtList.size();
+ String[] cmdList = new String[count];
+ Object[][] paramList = null;
+ int i = 0;
+ for (SQLStmt stmt : sqlStmtList)
+ {
+ cmdList[i] = stmt.getCmd();
+ // set params
+ if (stmt.getParams() != null)
+ {
+ if (paramList == null)
+ paramList = new Object[count][];
+ paramList[i] = stmt.getParams();
+ }
+ i++;
+ }
+ // Execute batch
+ int[] res = driver.executeBatch(cmdList, paramList, conn);
+ for (count = 0, i = 0; i < (res != null ? res.length : 0); i++)
+ count += (res[i] >= 0 ? res[i] : 0);
+ log.debug("Script completed. {} records affected.", count);
+ return count;
+ }
+ catch (SQLException e)
+ {
+ // SQLException
+ log.error(e.toString(), e);
+ throw new EmpireSQLException(driver, e);
+ }
}
-
+
+ /**
+ * Executes all statements one by one. Replaced by executeAll()
+ *
+ * @param driver the driver used for statement execution
+ * @param conn the connection
+ * @param ignoreErrors true if errors should be ignored
+ * @return number of records affected
+ */
+ @Deprecated
+ public final int run(DBDatabaseDriver driver, Connection conn, boolean ignoreErrors)
+ {
+ return executeAll(driver, conn, ignoreErrors);
+ }
+
/**
* Runs all SQL Statements using the supplied driver and connection.
+ *
* @param driver the driver used for statement execution
* @param conn the connection
*/
- public void run(DBDatabaseDriver driver, Connection conn)
+ @Deprecated
+ public final void run(DBDatabaseDriver driver, Connection conn)
{
- run(driver, conn, false);
+ executeAll(driver, conn, false);
}
-
+
/**
* Returns an iterator
*/
public Iterator<String> iterator()
{
- return sqlCmdList.iterator();
+ return new SQLStmtIterator(sqlStmtList.iterator());
}
-
+
/**
* Returns the sql script as a string
*/
@@ -192,9 +437,9 @@ public class DBSQLScript implements Iterable<String>
public String toString()
{
StringBuilder script = new StringBuilder();
- for(String stmt : sqlCmdList)
+ for (SQLStmt stmt : sqlStmtList)
{
- script.append(stmt);
+ script.append(stmt.getCmd());
script.append(commandSeparator);
}
return script.toString();
http://git-wip-us.apache.org/repos/asf/empire-db/blob/ba1d8264/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java b/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
index 066e89d..842942a 100644
--- a/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
+++ b/empire-db/src/main/java/org/apache/empire/db/sqlite/DBDatabaseDriverSQLite.java
@@ -19,10 +19,8 @@
package org.apache.empire.db.sqlite;
import java.sql.Connection;
-import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -122,49 +120,6 @@ public class DBDatabaseDriverSQLite extends DBDatabaseDriver
}
}
- @Override
- public int executeSQL(String sqlCmd, Object[] sqlParams, Connection conn, DBSetGenKeys genKeys) throws SQLException
- {
- Statement stmt = null;
- int count = 0;
- try
- {
- if (sqlParams != null)
- { // Use a prepared statement
- PreparedStatement pstmt = conn.prepareStatement(sqlCmd);
- stmt = pstmt;
- prepareStatement(pstmt, sqlParams, conn);
- count = pstmt.executeUpdate();
- }
- else
- { // Execute a simple statement
- stmt = conn.createStatement();
- count = stmt.executeUpdate(sqlCmd);
- }
- // Retrieve any auto-generated keys
- if (genKeys != null && count > 0)
- { // Return Keys
- ResultSet rs = stmt.getGeneratedKeys();
- try
- {
- while (rs.next())
- {
- genKeys.set(rs.getObject(1));
- }
- }
- finally
- {
- rs.close();
- }
- }
- }
- finally
- {
- close(stmt);
- }
- return count;
- }
-
private void setReservedKeywords()
{
// list of reserved keywords