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()
     {

Reply via email to