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 2022/01/22 01:31:45 UTC
[empire-db] branch version3 updated: EMPIREDB-362 DBContext extension
This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch version3
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/version3 by this push:
new 259115e EMPIREDB-362 DBContext extension
259115e is described below
commit 259115e42028c0ffaa9aa1ba4ee0fa3b7459511f
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Sat Jan 22 02:31:43 2022 +0100
EMPIREDB-362 DBContext extension
---
.../empire/samples/db/advanced/SampleAdvApp.java | 10 ++-
.../org/apache/empire/samples/db/SampleApp.java | 8 +--
.../org/apache/empire/rest/service/Service.java | 2 +-
.../org/apache/empire/jsf2/app/WebDBContext.java | 2 +-
.../main/java/org/apache/empire/db/DBContext.java | 22 +++++-
.../main/java/org/apache/empire/db/DBQuery.java | 4 +-
.../main/java/org/apache/empire/db/DBRecord.java | 2 +-
.../main/java/org/apache/empire/db/DBRowSet.java | 4 +-
.../main/java/org/apache/empire/db/DBTable.java | 2 +-
.../main/java/org/apache/empire/db/DBUtils.java | 63 +---------------
.../apache/empire/db/context/DBContextBase.java | 84 ++++++++++++++++++++--
.../apache/empire/db/context/DBContextStatic.java | 2 +-
.../db/mssql/DBDatabaseDriverMSSqlDateTest.java | 2 +-
.../empire/db/mssql/DBDatabaseDriverMSSqlTest.java | 2 +-
14 files changed, 118 insertions(+), 91 deletions(-)
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 33cff80..fdfa595 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
@@ -38,7 +38,6 @@ import org.apache.empire.db.DBReader;
import org.apache.empire.db.DBRecord;
import org.apache.empire.db.DBSQLScript;
import org.apache.empire.db.DBTableColumn;
-import org.apache.empire.db.DBUtils;
import org.apache.empire.db.context.DBContextStatic;
import org.apache.empire.db.driver.h2.DBDatabaseDriverH2;
import org.apache.empire.db.driver.postgresql.DBDatabaseDriverPostgreSQL;
@@ -325,14 +324,13 @@ public class SampleAdvApp
*/
private static void clearDatabase()
{
- DBUtils utils = context.getUtils();
- DBCommand cmd = db.createCommand();
+ DBCommand cmd = context.createCommand(db);
// Delete all Employee Department History records
- utils.executeDelete(T_EDH, cmd);
+ context.executeDelete(T_EDH, cmd);
// Delete all Employees (no constraints)
- utils.executeDelete(T_EMP, cmd);
+ context.executeDelete(T_EMP, cmd);
// Delete all Departments (no constraints)
- utils.executeDelete(T_DEP, cmd);
+ context.executeDelete(T_DEP, cmd);
}
/**
diff --git a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
index 21d3970..0a66714 100644
--- a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
+++ b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/SampleApp.java
@@ -33,7 +33,6 @@ import org.apache.empire.db.DBReader;
import org.apache.empire.db.DBRecord;
import org.apache.empire.db.DBRowSet.PartialMode;
import org.apache.empire.db.DBSQLScript;
-import org.apache.empire.db.DBUtils;
import org.apache.empire.db.context.DBContextStatic;
import org.apache.empire.db.driver.derby.DBDatabaseDriverDerby;
import org.apache.empire.db.driver.h2.DBDatabaseDriverH2;
@@ -289,12 +288,11 @@ public class SampleApp
*/
private static void clearDatabase()
{
- DBUtils utils = context.getUtils();
- DBCommand cmd = db.createCommand();
+ DBCommand cmd = context.createCommand(db);
// Delete all Employees (no constraints)
- utils.executeDelete(db.EMPLOYEES, cmd);
+ context.executeDelete(db.EMPLOYEES, cmd);
// Delete all Departments (no constraints)
- utils.executeDelete(db.DEPARTMENTS, cmd);
+ context.executeDelete(db.DEPARTMENTS, cmd);
}
/**
diff --git a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
index 1117934..dd8677a 100644
--- a/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
+++ b/empire-db-examples/empire-db-example-vue/src/main/java/org/apache/empire/rest/service/Service.java
@@ -91,7 +91,7 @@ public abstract class Service {
}
@Override
- public boolean isEnableRollbackHandling()
+ public boolean isRollbackHandlingEnabled()
{
return false; /* No Rollbacks allowed */
}
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
index 1dc246f..8f8b8a5 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/WebDBContext.java
@@ -50,7 +50,7 @@ public class WebDBContext<DB extends DBDatabase> extends DBContextBase
}
@Override
- public boolean isEnableRollbackHandling()
+ public boolean isRollbackHandlingEnabled()
{
return true;
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBContext.java b/empire-db/src/main/java/org/apache/empire/db/DBContext.java
index ae1e6fa..7c07844 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBContext.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBContext.java
@@ -7,6 +7,11 @@ import java.sql.Connection;
import org.apache.empire.db.context.DBRollbackHandler;
+/**
+ * DBContext
+ * A context is required for every database operation
+ * @author rainer
+ */
public interface DBContext
{
DBDatabaseDriver getDriver();
@@ -14,17 +19,28 @@ public interface DBContext
Connection getConnection();
<T extends DBUtils> T getUtils();
+
+ DBCommand createCommand(DBDatabase db);
+
+ int executeSQL(String sqlCmd, Object[] sqlParams);
+
+ int executeInsert(DBCommand cmd);
+
+ int executeInsertInto(DBTable table, DBCommand cmd);
+
+ int executeUpdate(DBCommand cmd);
+
+ int executeDelete(DBTable from, DBCommand cmd);
void commit();
void rollback();
- boolean isEnableRollbackHandling();
+ boolean isRollbackHandlingEnabled();
void appendRollbackHandler(DBRollbackHandler handler);
void removeRollbackHandler(DBObject object);
void discard();
-
-}
+}
\ No newline at end of file
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
index e459c2b..ee1dbf7 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQuery.java
@@ -563,8 +563,8 @@ public class DBQuery extends DBRowSet
}
// Execute SQL
- DBUtils utils = rec.getContext().getUtils();
- int affected = utils.executeSQL(upd.getUpdate(), upd.getParamValues());
+ DBUtils utils = context.getUtils();
+ int affected = utils.executeSQL(upd.getUpdate(), upd.getParamValues(), null);
if (affected<= 0)
{ // Error
if (affected == 0)
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
index 644d698..5c5964b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecord.java
@@ -233,7 +233,7 @@ public class DBRecord extends DBRecordData implements DBContextAware, Record, Cl
this.modified = null;
this.rowsetData = null;
// options
- enableRollbackHandling = context.isEnableRollbackHandling();
+ enableRollbackHandling = context.isRollbackHandlingEnabled();
validateFieldValues = true;
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
index 029ca9f..9d3fa1a 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRowSet.java
@@ -961,7 +961,7 @@ public abstract class DBRowSet extends DBExpr
return;
}
// Perform action
- DBUtils utils = rec.getContext().getUtils();
+ DBUtils utils = context.getUtils();
int affected = utils.executeSQL(sql, cmd.getParamValues(), setGenKey);
if (affected < 0)
{ // Update Failed
@@ -1047,7 +1047,7 @@ public abstract class DBRowSet extends DBExpr
DBCommand cmd = db.createCommand();
for (int i=0; i<parentKey.length; i++)
cmd.where(refs[i].getSourceColumn().is(parentKey[i]));
- if (context.getUtils().executeSQL(cmd.getDelete((DBTable)this), cmd.getParamValues())<0)
+ if (context.executeDelete((DBTable)this, cmd)<0)
throw new UnexpectedReturnValueException(-1, "db.executeSQL()");
}
else
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBTable.java b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
index 6c99ffe..f166e05 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBTable.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBTable.java
@@ -694,7 +694,7 @@ public class DBTable extends DBRowSet implements Cloneable
setKeyConstraints(cmd, key);
// Perform delete
String sqlCmd = cmd.getDelete(this);
- int affected = context.getUtils().executeSQL(sqlCmd, cmd.getParamValues());
+ int affected = context.executeSQL(sqlCmd, cmd.getParamValues());
if (affected < 0)
{ // Delete Failed
throw new UnexpectedReturnValueException(affected, "db.executeSQL()");
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
index 4f95d57..1c2c38c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBUtils.java
@@ -54,16 +54,7 @@ public class DBUtils implements DBContextAware
{
return ((T)context);
}
-
- /**
- * Creates a new Command object for the given database
- *
- * @return the command object.
- */
- public final DBCommand createCommand(DBDatabase db)
- {
- return driver.createCommand(db);
- }
+
/**
* Executes an update, insert or delete SQL-Statement.<BR>
* We recommend to use a DBCommand object in order to build the sqlCmd.<BR>
@@ -104,58 +95,6 @@ public class DBUtils implements DBContextAware
}
/**
- * Executes an SQLStatment
- * @param sqlCmd the SQL-Command
- * @param sqlParams a list of objects to replace sql parameters
- */
- public final int executeSQL(String sqlCmd, Object[] sqlParams)
- {
- return executeSQL(sqlCmd, sqlParams, null);
- }
-
- /**
- * Executes an Insert statement from a command object
- * @param cmd the command object containing the insert command
- * @return the number of records that have been inserted with the supplied statement
- */
- public final int executeInsert(DBCommand cmd)
- {
- return executeSQL(cmd.getInsert(), cmd.getParamValues());
- }
-
- /**
- * Executes an InsertInfo statement from a command object
- * @param table the table into which to insert the selected data
- * @param cmd the command object containing the selection command
- * @return the number of records that have been inserted with the supplied statement
- */
- public final int executeInsertInto(DBTable table, DBCommand cmd)
- {
- return executeSQL(cmd.getInsertInto(table), cmd.getParamValues());
- }
-
- /**
- * Executes an Update statement from a command object
- * @param cmd the command object containing the update command
- * @return the number of records that have been updated with the supplied statement
- */
- public final int executeUpdate(DBCommand cmd)
- {
- return executeSQL(cmd.getUpdate(), cmd.getParamValues());
- }
-
- /**
- * Executes a Delete statement from a command object
- * @param from the database table from which to delete records
- * @param cmd the command object containing the delete constraints
- * @return the number of records that have been deleted with the supplied statement
- */
- public final int executeDelete(DBTable from, DBCommand cmd)
- {
- return executeSQL(cmd.getDelete(from), cmd.getParamValues());
- }
-
- /**
* Returns the value of the first row/column of a sql-query as an object.
* If the query does not return a result the value ObjectUtils.NO_VALUE is returned.
*
diff --git a/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java b/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
index aa24b00..529f3f0 100644
--- a/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextBase.java
@@ -6,8 +6,11 @@ package org.apache.empire.db.context;
import java.sql.Connection;
import java.sql.SQLException;
+import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBContext;
+import org.apache.empire.db.DBDatabase;
import org.apache.empire.db.DBObject;
+import org.apache.empire.db.DBTable;
import org.apache.empire.db.DBUtils;
import org.apache.empire.db.context.DBRollbackManager.ReleaseAction;
import org.apache.empire.db.exceptions.EmpireSQLException;
@@ -57,6 +60,79 @@ public abstract class DBContextBase implements DBContext
return getConnection(true);
}
+ /**
+ * Creates a new Command object for the given database
+ *
+ * @return the command object.
+ */
+ @Override
+ public final DBCommand createCommand(DBDatabase db)
+ {
+ return getDriver().createCommand(db);
+ }
+
+ /**
+ * Executes an SQLStatment
+ * @param sqlCmd the SQL-Command
+ * @param sqlParams a list of objects to replace sql parameters
+ */
+ @Override
+ public final int executeSQL(String sqlCmd, Object[] sqlParams)
+ {
+ if (utils==null) getUtils();
+ return utils.executeSQL(sqlCmd, sqlParams, null);
+ }
+
+ /**
+ * Executes an Insert statement from a command object
+ * @param cmd the command object containing the insert command
+ * @return the number of records that have been inserted with the supplied statement
+ */
+ @Override
+ public final int executeInsert(DBCommand cmd)
+ {
+ if (utils==null) getUtils();
+ return utils.executeSQL(cmd.getInsert(), cmd.getParamValues(), null);
+ }
+
+ /**
+ * Executes an InsertInfo statement from a command object
+ * @param table the table into which to insert the selected data
+ * @param cmd the command object containing the selection command
+ * @return the number of records that have been inserted with the supplied statement
+ */
+ @Override
+ public final int executeInsertInto(DBTable table, DBCommand cmd)
+ {
+ if (utils==null) getUtils();
+ return utils.executeSQL(cmd.getInsertInto(table), cmd.getParamValues(), null);
+ }
+
+ /**
+ * Executes an Update statement from a command object
+ * @param cmd the command object containing the update command
+ * @return the number of records that have been updated with the supplied statement
+ */
+ @Override
+ public final int executeUpdate(DBCommand cmd)
+ {
+ if (utils==null) getUtils();
+ return utils.executeSQL(cmd.getUpdate(), cmd.getParamValues(), null);
+ }
+
+ /**
+ * Executes a Delete statement from a command object
+ * @param from the database table from which to delete records
+ * @param cmd the command object containing the delete constraints
+ * @return the number of records that have been deleted with the supplied statement
+ */
+ @Override
+ public final int executeDelete(DBTable from, DBCommand cmd)
+ {
+ if (utils==null) getUtils();
+ return utils.executeSQL(cmd.getDelete(from), cmd.getParamValues(), null);
+ }
+
@Override
public void commit()
{
@@ -71,7 +147,7 @@ public abstract class DBContextBase implements DBContext
if (conn.getAutoCommit()==false)
conn.commit();
// discard rollbacks
- DBRollbackManager dbrm = (isEnableRollbackHandling() ? getRollbackManager(false) : null);
+ DBRollbackManager dbrm = (isRollbackHandlingEnabled() ? getRollbackManager(false) : null);
if (dbrm!=null)
dbrm.releaseConnection(conn, ReleaseAction.Discard);
// Done
@@ -103,7 +179,7 @@ public abstract class DBContextBase implements DBContext
log.info("Database rollback issued!");
conn.rollback();
// perform Rollback
- DBRollbackManager dbrm = (isEnableRollbackHandling() ? getRollbackManager(false) : null);
+ DBRollbackManager dbrm = (isRollbackHandlingEnabled() ? getRollbackManager(false) : null);
if (dbrm!=null)
dbrm.releaseConnection(conn, ReleaseAction.Rollback);
// Done
@@ -120,7 +196,7 @@ public abstract class DBContextBase implements DBContext
if (handler==null || handler.getObject()==null)
throw new InvalidArgumentException("handler", handler);
// Check enabled
- if (!isEnableRollbackHandling())
+ if (!isRollbackHandlingEnabled())
{ log.warn("*** Rollback handling is disabled for this context. AppendRollbackHandler must not be called! ***");
return;
}
@@ -140,7 +216,7 @@ public abstract class DBContextBase implements DBContext
if (object==null)
throw new InvalidArgumentException("object", object);
// Check enabled
- if (!isEnableRollbackHandling())
+ if (!isRollbackHandlingEnabled())
{ log.warn("*** Rollback handling is disabled for this context. RemoveRollbackHandler should not be called! ***");
return;
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java b/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
index 0afe1a1..644fad6 100644
--- a/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextStatic.java
@@ -55,7 +55,7 @@ public class DBContextStatic extends DBContextBase
}
@Override
- public boolean isEnableRollbackHandling()
+ public boolean isRollbackHandlingEnabled()
{
return enableRollbackHandling;
}
diff --git a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
index f15839f..86a88d9 100644
--- a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlDateTest.java
@@ -123,7 +123,7 @@ public class DBDatabaseDriverMSSqlDateTest {
private static void clearDatabase(DBContext context, DateTimeTestDB db) {
DBCommand cmd = db.createCommand();
// Delete all Employees (no constraints)
- context.getUtils().executeDelete(db.USER_INFO, cmd);
+ context.executeDelete(db.USER_INFO, cmd);
}
/**
diff --git a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlTest.java b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlTest.java
index 0972ffb..f84a767 100644
--- a/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlTest.java
+++ b/empire-db/src/test/java/org/apache/empire/db/mssql/DBDatabaseDriverMSSqlTest.java
@@ -91,7 +91,7 @@ public class DBDatabaseDriverMSSqlTest
{
DBCommand cmd = db.createCommand();
// Delete all Employees (no constraints)
- context.getUtils().executeDelete(db.DEPARTMENT, cmd);
+ context.executeDelete(db.DEPARTMENT, cmd);
}
/**