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 efcc6ff EMPIREDB-362 Minor fixes and beauty changes
efcc6ff is described below
commit efcc6ff0b86811779af54b0d95d5d2e3382a23df
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Feb 15 22:27:49 2022 +0100
EMPIREDB-362 Minor fixes and beauty changes
---
.../org/apache/empire/samples/db/SampleApp.java | 8 ++--
.../apache/empire/samples/db/beans/Employee.java | 6 ++-
.../apache/empire/samples/db/beans/Payment.java | 6 +++
.../jsf2/pageelements/BeanListPageElement.java | 2 +-
.../main/java/org/apache/empire/db/DBCommand.java | 17 ++++---
.../main/java/org/apache/empire/db/DBDatabase.java | 4 +-
.../org/apache/empire/db/DBExpressionIndex.java | 5 +-
.../main/java/org/apache/empire/db/DBIndex.java | 4 +-
.../main/java/org/apache/empire/db/DBReader.java | 5 +-
.../main/java/org/apache/empire/db/DBRecord.java | 1 -
.../java/org/apache/empire/db/DBRecordBase.java | 3 +-
.../java/org/apache/empire/db/DBRecordBean.java | 1 -
.../main/java/org/apache/empire/db/DBRowSet.java | 4 +-
.../java/org/apache/empire/db/DBSQLScript.java | 5 +-
.../main/java/org/apache/empire/db/DBUtils.java | 56 ++++++++++++----------
.../apache/empire/db/context/DBContextAware.java | 2 +-
.../java/org/apache/empire/db/generic/TTable.java | 1 -
17 files changed, 73 insertions(+), 57 deletions(-)
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 b70cd47..60e93b9 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
@@ -239,7 +239,7 @@ public class SampleApp
long idSalDep = insertDepartment("Sales", "ITTK");
// Insert Employees
long idEmp1 = insertEmployee(idDevDep, "Peter", "Sharp", Gender.M,
25000);
- long idEmp2 = insertEmployee(idDevDep, "Fred", "Bloggs", Gender.M,
32000);
+ long idEmp2 = insertEmployee(idDevDep, "Fred", "Bloggs", Gender.M, 0);
long idEmp3 = insertEmployee(idSalDep, "Emma", "White", Gender.F,
19500);
long idEmp4 = insertEmployee(idSalDep, "John", "Doe", Gender.M,
18800);
long idEmp5 = insertEmployee(idDevDep, "Sarah", "Smith", Gender.F,
44000);
@@ -311,7 +311,8 @@ public class SampleApp
.set(EMP.SALARY, salary)
.update();
// insert payments
- insertPayments(rec);
+ if (salary>0)
+ insertPayments(rec);
// Return Employee ID
return rec.getId();
}
@@ -333,7 +334,8 @@ public class SampleApp
// Add Payment for each month
SampleDB.Payments PAY = db.PAYMENTS;
DBRecord rec = new DBRecord(context, PAY);
- for (LocalDate month=date.minusMonths(20); !month.isAfter(date);
month=month.plusMonths(1))
+ int months = (int)(Math.random()*6)+17;
+ for (LocalDate month=date.minusMonths(months); !month.isAfter(date);
month=month.plusMonths(1))
{
BigDecimal variation = new BigDecimal((Math.random()*200) - 100.0);
variation = variation.setScale(2, RoundingMode.HALF_UP);
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
index f5c5197..a26d790 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Employee.java
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.Locale;
import org.apache.empire.commons.DateUtils;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.db.DBCommand;
import org.apache.empire.db.DBContext;
import org.apache.empire.db.list.DataBean;
@@ -276,7 +277,9 @@ public class Employee implements DataBean<SampleDB>
if (parent instanceof Department)
department = ((Department)parent);
- // don't!
+ else
+ log.warn("Department Entity has not been provided.");
+ // Don't to that: (because of recursion)
// else department = context.getUtils().queryBean(Department.class,
DBRecord.key(this.departmentId));
DBCommand cmd = db.createCommand();
@@ -284,6 +287,7 @@ public class Employee implements DataBean<SampleDB>
cmd.orderBy(db.PAYMENTS.YEAR.desc());
cmd.orderBy(db.PAYMENTS.MONTH.desc());
payments = context.getUtils().queryBeanList(cmd, Payment.class, this);
+ log.info("{} Payments have been loaded for Employee {}.",
payments.size(), StringUtils.concat(" ", this.firstName, this.lastName));
}
}
diff --git
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
index 79653f4..b43c758 100644
---
a/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
+++
b/empire-db-examples/empire-db-example-basic/src/main/java/org/apache/empire/samples/db/beans/Payment.java
@@ -23,9 +23,13 @@ import java.math.BigDecimal;
import org.apache.empire.db.DBContext;
import org.apache.empire.db.list.DataBean;
import org.apache.empire.samples.db.SampleDB;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class Payment implements DataBean<SampleDB>
{
+ private static final Logger log = LoggerFactory.getLogger(Payment.class);
+
private long employeeId;
private BigDecimal year;
private BigDecimal month;
@@ -72,6 +76,8 @@ public class Payment implements DataBean<SampleDB>
{
if (parent instanceof Employee)
this.employee = (Employee)parent;
+ else
+ log.warn("Employee Entity has not been provided.");
}
}
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
index e1e60b7..344d343 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
@@ -356,7 +356,7 @@ public class BeanListPageElement<T> extends
ListPageElement<T> implements ListIt
skipRows = position;
// constraint
queryCmd.clearLimit();
- DBMSHandler dbms = queryCmd.getDatabase().getDbms();
+ DBMSHandler dbms = r.getContext().getDbms();
if (dbms.isSupported(DBMSFeature.QUERY_LIMIT_ROWS))
{ // let the database limit the rows
if (dbms.isSupported(DBMSFeature.QUERY_SKIP_ROWS))
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
index bb6a4bd..b2811d3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBCommand.java
@@ -209,7 +209,7 @@ public abstract class DBCommand extends DBCommandExpr
if (cmdParams!=null && !cmdParams.isEmpty())
{ // clone params
clone.paramUsageCount = 0;
- clone.cmdParams = new ArrayList<DBCmdParam>();
+ clone.cmdParams = new ArrayList<DBCmdParam>(cmdParams.size());
// clone set
for (int i=0; (clone.set!=null && i<clone.set.size()); i++)
clone.set.set(i, clone.set.get(i).copyCommand(clone));
@@ -230,14 +230,19 @@ public abstract class DBCommand extends DBCommandExpr
@SuppressWarnings("unchecked")
@Override
- public final DBDatabase getDatabase()
+ public final DBDatabase getDatabase()
{
if (hasSelectExpr())
return this.select.get(0).getDatabase();
if (hasSetExpr())
return this.set.get(0).getDatabase();
+ // two more chances (should we?)
+ if (where!=null && !where.isEmpty())
+ return where.get(0).getDatabase();
+ if (orderBy!=null && !orderBy.isEmpty())
+ return orderBy.get(0).getDatabase();
// not valid yet
- return null;
+ throw new ObjectNotValidException(this);
}
/**
@@ -1564,11 +1569,11 @@ public abstract class DBCommand extends DBCommandExpr
// Merge subquery params
Object[] qryParams = join.getSubqueryParams();
if (qryParams!=null && qryParams.length>0)
- {
+ { // Subquery has parameters
+ if (cmdParams==null)
+ cmdParams= new
ArrayList<DBCmdParam>(qryParams.length);
for (int p=0; p<qryParams.length; p++)
- {
cmdParams.add(paramUsageCount++, new DBCmdParam(null,
DataType.UNKNOWN, qryParams[p]));
- }
}
// add CRLF
if( i!=joins.size()-1 )
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index 7e67076..6f5028b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -426,9 +426,9 @@ public abstract class DBDatabase extends DBObject
*/
@SuppressWarnings("unchecked")
@Override
- public <T extends DBDatabase> T getDatabase()
+ public DBDatabase getDatabase()
{
- return (T)(this);
+ return this;
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/db/DBExpressionIndex.java
b/empire-db/src/main/java/org/apache/empire/db/DBExpressionIndex.java
index f3b0955..9574988 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBExpressionIndex.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBExpressionIndex.java
@@ -57,11 +57,10 @@ public class DBExpressionIndex extends DBIndex
this(name, (unique ? DBIndexType.UNIQUE : DBIndexType.STANDARD),
columnExpressions);
}
- @SuppressWarnings("unchecked")
@Override
- public <T extends DBDatabase> T getDatabase()
+ public final DBDatabase getDatabase()
{
- return (T)(columnExpressions[0].getDatabase());
+ return columnExpressions[0].getDatabase();
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
b/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
index 5331922..574ec85 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBIndex.java
@@ -90,9 +90,9 @@ public class DBIndex extends DBObject
@SuppressWarnings("unchecked")
@Override
- public <T extends DBDatabase> T getDatabase()
+ public DBDatabase getDatabase()
{
- return (table!=null) ? (T)table.getDatabase() : null;
+ return (table!=null) ? table.getDatabase() : null;
}
/**
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
index e3edb2a..f33465b 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBReader.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBReader.java
@@ -280,10 +280,9 @@ public class DBReader extends DBRecordData implements
Closeable
* @return
*/
@Override
- @SuppressWarnings("unchecked")
- public <T extends DBContext> T getContext()
+ public DBContext getContext()
{
- return ((T)context);
+ return context;
}
/**
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 ad72b02..e322ab9 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
@@ -165,7 +165,6 @@ public class DBRecord extends DBRecordBase
* @return
*/
@Override
- @SuppressWarnings("unchecked")
public DBContext getContext()
{
if (this.context==null)
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecordBase.java
b/empire-db/src/main/java/org/apache/empire/db/DBRecordBase.java
index a5ca3d3..ced3404 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecordBase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecordBase.java
@@ -326,8 +326,9 @@ public abstract class DBRecordBase extends DBRecordData
implements Record, Clone
*
* @return the current DBDatabase object
*/
+ @SuppressWarnings("unchecked")
@Override
- public <T extends DBDatabase> T getDatabase()
+ public DBDatabase getDatabase()
{
return getRowSet().getDatabase();
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBRecordBean.java
b/empire-db/src/main/java/org/apache/empire/db/DBRecordBean.java
index f0f5bad..2d0b405 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRecordBean.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBRecordBean.java
@@ -87,7 +87,6 @@ public class DBRecordBean extends DBRecordBase
* Returns the current Context
* @return
*/
- @SuppressWarnings("unchecked")
@Override
public DBContext getContext()
{
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 540f0aa..9bc2acf 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
@@ -386,9 +386,9 @@ public abstract class DBRowSet extends DBExpr implements
EntityType
*/
@SuppressWarnings("unchecked")
@Override
- public <T extends DBDatabase> T getDatabase()
+ public DBDatabase getDatabase()
{
- return (T)db;
+ return db;
}
/**
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 0f33c7a..5793b13 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
@@ -134,10 +134,9 @@ public class DBSQLScript implements DBContextAware,
Iterable<String>
* @return
*/
@Override
- @SuppressWarnings("unchecked")
- public <T extends DBContext> T getContext()
+ public DBContext getContext()
{
- return ((T)context);
+ return context;
}
/**
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 3c816bb..8d19fd4 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
@@ -72,10 +72,30 @@ public class DBUtils implements DBContextAware
* @return
*/
@Override
- @SuppressWarnings("unchecked")
- public <T extends DBContext> T getContext()
+ public DBContext getContext()
{
- return ((T)context);
+ return context;
+ }
+
+ /**
+ * Param count checker
+ */
+ protected void checkStatementParamCount(String sqlCmd, Object[] sqlParams)
+ {
+ if (sqlCmd==null || sqlCmd.length()==0)
+ throw new InvalidArgumentException("sqlCmd", sqlCmd);
+ // count params
+ int paramCount = 0;
+ int pos = -1;
+ while ((pos=sqlCmd.indexOf('?', ++pos))>0)
+ paramCount++;
+ // check now
+ if (paramCount!=(sqlParams!=null ? sqlParams.length : 0))
+ { // Wrong number of params
+ String msg = MessageFormat.format("Invalid number of parameters
query: provided={0}, required={1}; query="+sqlCmd, paramCount,
sqlParams.length);
+ log.error(msg);
+ throw new UnspecifiedErrorException(msg);
+ }
}
/**
@@ -90,7 +110,9 @@ public class DBUtils implements DBContextAware
public int executeSQL(String sqlCmd, Object[] sqlParams,
DBMSHandler.DBSetGenKeys setGenKeys)
{
try
- { // Debug
+ { // check
+ checkStatementParamCount(sqlCmd, sqlParams);
+ // Debug
if (log.isInfoEnabled())
log.info("Executing: " + sqlCmd);
// execute SQL
@@ -118,18 +140,6 @@ public class DBUtils implements DBContextAware
}
/**
- * internally used
- */
- private int getSelectParamsCount(String select)
- {
- int count = 0;
- int pos = -1;
- while ((pos=select.indexOf('?', ++pos))>0)
- count++;
- return count;
- }
-
- /**
* Executes a select SQL-Statement and returns a ResultSet containing the
query results.<BR>
* This function returns a JDBC ResultSet.<BR>
* Instead of using this function directly you should use a DBReader
object instead.<BR>
@@ -143,13 +153,7 @@ public class DBUtils implements DBContextAware
{
try
{ // check
- int paramCount = getSelectParamsCount(sqlCmd);
- if (paramCount!=(sqlParams!=null ? sqlParams.length : 0))
- { // Wrong number of params
- String msg = MessageFormat.format("Invalid number of
parameters query: provided={0}, required={1}; query="+sqlCmd, paramCount,
sqlParams.length);
- log.error(msg);
- throw new UnspecifiedErrorException(msg);
- }
+ checkStatementParamCount(sqlCmd, sqlParams);
// Debug
if (log.isDebugEnabled())
log.debug("Executing: " + sqlCmd);
@@ -727,7 +731,7 @@ public class DBUtils implements DBContextAware
pageSize = -1;
}
// set range
- DBMSHandler dbms = cmd.getDatabase().getDbms();
+ DBMSHandler dbms = context.getDbms();
if (pageSize>0 && dbms.isSupported(DBMSFeature.QUERY_LIMIT_ROWS))
{ // let the database limit the rows
if (first>0 && dbms.isSupported(DBMSFeature.QUERY_SKIP_ROWS))
@@ -864,7 +868,7 @@ public class DBUtils implements DBContextAware
pageSize = -1;
}
// set range
- DBMSHandler dbms = cmd.getDatabase().getDbms();
+ DBMSHandler dbms = context.getDbms();
if (pageSize>0 && dbms.isSupported(DBMSFeature.QUERY_LIMIT_ROWS))
{ // let the database limit the rows
if (first>0 && dbms.isSupported(DBMSFeature.QUERY_SKIP_ROWS))
@@ -1016,7 +1020,7 @@ public class DBUtils implements DBContextAware
pageSize = -1;
}
// set range
- DBMSHandler dbms = cmd.getDatabase().getDbms();
+ DBMSHandler dbms = context.getDbms();
if (pageSize>0 && dbms.isSupported(DBMSFeature.QUERY_LIMIT_ROWS))
{ // let the database limit the rows
if (first>0 && dbms.isSupported(DBMSFeature.QUERY_SKIP_ROWS))
diff --git
a/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
b/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
index d338165..adb9613 100644
--- a/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
@@ -22,5 +22,5 @@ import org.apache.empire.db.DBContext;
public interface DBContextAware
{
- <T extends DBContext> T getContext();
+ DBContext getContext();
}
diff --git a/empire-db/src/main/java/org/apache/empire/db/generic/TTable.java
b/empire-db/src/main/java/org/apache/empire/db/generic/TTable.java
index ca447b1..517fbba 100644
--- a/empire-db/src/main/java/org/apache/empire/db/generic/TTable.java
+++ b/empire-db/src/main/java/org/apache/empire/db/generic/TTable.java
@@ -41,7 +41,6 @@ public class TTable<DB extends TDatabase<DB>> extends DBTable
/**
* finally we know the database type
*/
- @SuppressWarnings("unchecked")
@Override
public final DB getDatabase()
{