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 4335870  EMPIREDB-362 some more
4335870 is described below

commit 433587020cfd575b0773d662452329f40e31271d
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Jan 20 19:36:15 2022 +0100

    EMPIREDB-362
    some more
---
 .../main/java/org/apache/empire/db/DBCommand.java  | 26 ++++++++++++++++
 .../main/java/org/apache/empire/db/DBContext.java  |  2 ++
 .../main/java/org/apache/empire/db/DBReader.java   |  1 +
 .../main/java/org/apache/empire/db/DBRecord.java   |  2 ++
 .../java/org/apache/empire/db/DBSQLScript.java     |  1 +
 .../main/java/org/apache/empire/db/DBUtils.java    | 35 +++++++++++++++++++++-
 .../empire/db/{ => context}/DBContextAware.java    |  4 ++-
 .../apache/empire/db/context/DBContextBase.java    |  1 -
 .../empire/db/{ => context}/DBRollbackHandler.java |  4 ++-
 .../db/driver/sqlserver/MSSqlDDLGenerator.java     |  2 +-
 .../empire/db/expr/compare/DBCompareColExpr.java   |  1 -
 11 files changed, 73 insertions(+), 6 deletions(-)

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 d8a7932..c5a002b 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
@@ -465,6 +465,14 @@ public abstract class DBCommand extends DBCommandExpr
         for (int i=0; i<exprs.length; i++)
             set(exprs[i]);
     }
+    
+    /**
+     * Returns whether or not the command has group by set
+     */
+    public boolean hasSetExpr()
+    {
+        return (this.set!=null ? !this.set.isEmpty() : false);
+    }
 
     /**
      * Checks whether a column is in the list of set expressions
@@ -898,6 +906,24 @@ public abstract class DBCommand extends DBCommandExpr
                return;
         removeConstraintOn(having, col);
     }
+    
+    /**
+     * Returns whether or not the command has group by set
+     */
+    public boolean hasGroupBy()
+    {
+        return (this.groupBy!=null ? !this.groupBy.isEmpty() : false);
+    }
+
+    /**
+     * Returns a copy of the defined where clauses.
+     * 
+     * @return vector of where clauses
+     */
+    public List<DBColumnExpr> getGroupBy()
+    {
+        return (this.groupBy!=null ? 
Collections.unmodifiableList(this.groupBy) : null);
+    }
 
     /**
      * Adds a list of columns to the group by phrase of an sql statement.
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 d7b86aa..14a1bfc 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
@@ -5,6 +5,8 @@ package org.apache.empire.db;
 
 import java.sql.Connection;
 
+import org.apache.empire.db.context.DBRollbackHandler;
+
 public interface DBContext
 {
     DBDatabaseDriver getDriver();
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 19ee3c8..43997eb 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
@@ -35,6 +35,7 @@ import org.apache.commons.beanutils.ConstructorUtils;
 import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.data.ColumnExpr;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.context.DBContextAware;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.db.exceptions.QueryNoResultException;
 import org.apache.empire.db.expr.join.DBJoinExpr;
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 20f5dfa..5dbe56a 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
@@ -33,6 +33,8 @@ import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.Column;
 import org.apache.empire.data.ColumnExpr;
 import org.apache.empire.data.Record;
+import org.apache.empire.db.context.DBContextAware;
+import org.apache.empire.db.context.DBRollbackHandler;
 import org.apache.empire.db.exceptions.FieldIsReadOnlyException;
 import org.apache.empire.db.exceptions.FieldValueNotFetchedException;
 import org.apache.empire.db.expr.compare.DBCompareExpr;
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 9607c36..add4d87 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
@@ -22,6 +22,7 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import org.apache.empire.db.context.DBContextAware;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.slf4j.Logger;
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 912876f..7d2adb8 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
@@ -11,6 +11,7 @@ import org.apache.empire.commons.ObjectUtils;
 import org.apache.empire.commons.Options;
 import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.DataType;
+import org.apache.empire.db.context.DBContextAware;
 import org.apache.empire.db.exceptions.ConstraintViolationException;
 import org.apache.empire.db.exceptions.QueryFailedException;
 import org.apache.empire.db.exceptions.QueryNoResultException;
@@ -161,6 +162,7 @@ public class DBUtils implements DBContextAware
      * @param sqlCmd the SQL-Command
      * @param sqlParams list of query parameter values
      * @param dataType the expected data type
+     * @param forceResult if true a QueryNoResultException result is thrown if 
no record exists otherwise null is returned
      * 
      * @return the value of the first column in the first row of the query 
      */
@@ -173,7 +175,8 @@ public class DBUtils implements DBContextAware
         // Read value
         Object result = driver.querySingleValue(sqlCmd, sqlParams, dataType, 
context.getConnection());
         if (result==ObjectUtils.NO_VALUE)
-        {   if (forceResult)
+        {   // Query returned no result
+            if (forceResult)
                 throw new QueryNoResultException(sqlCmd);
             else
                 result = null;
@@ -237,6 +240,21 @@ public class DBUtils implements DBContextAware
      *
      * @return the result as a int value
      */
+    public final int querySingleInt(String sqlCmd, Object[] sqlParams, int 
defaultValue)
+    { 
+        Object value = querySingleValue(sqlCmd, sqlParams, DataType.INTEGER, 
false);
+        return ObjectUtils.getInteger(value, defaultValue);
+    }
+
+    /**
+     * Returns the value of the first row/column of a sql-query as an int.
+     * If the query does not return a result or if the query result is NULL, 
then the defaultValue is returned
+     * 
+     * @param cmd the Command object that contains the select statement
+     * @param defaultValue the default value if no value was returned by the 
database
+     *
+     * @return the result as a int value
+     */
     public final int querySingleInt(DBCommand cmd, int defaultValue)
     { 
         Object value = querySingleValue(cmd.getSelect(), cmd.getParamValues(), 
DataType.INTEGER, false);
@@ -256,6 +274,21 @@ public class DBUtils implements DBContextAware
         Object value = querySingleValue(cmd.getSelect(), cmd.getParamValues(), 
DataType.INTEGER, true);
         return ObjectUtils.getInteger(value);
     }
+
+    /**
+     * Returns the value of the first row/column of a sql-query as an int.
+     * If the query does not return a result or if the query result is NULL, 
then the defaultValue is returned
+     * 
+     * @param cmd the Command object that contains the select statement
+     * @param defaultValue the default value if no value was returned by the 
database
+     *
+     * @return the result as a int value
+     */
+    public final long querySingleLong(String sqlCmd, Object[] sqlParams, long 
defaultValue)
+    { 
+        Object value = querySingleValue(sqlCmd, sqlParams, DataType.INTEGER, 
false);
+        return ObjectUtils.getLong(value, defaultValue);
+    }
     
     /**
      * Returns the value of the first row/column of a sql-query as a long.
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBContextAware.java 
b/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
similarity index 61%
rename from empire-db/src/main/java/org/apache/empire/db/DBContextAware.java
rename to 
empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
index 2360af9..70d6332 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBContextAware.java
+++ b/empire-db/src/main/java/org/apache/empire/db/context/DBContextAware.java
@@ -1,7 +1,9 @@
 /*
  * ESTEAM Software GmbH, 19.01.2022
  */
-package org.apache.empire.db;
+package org.apache.empire.db.context;
+
+import org.apache.empire.db.DBContext;
 
 public interface DBContextAware
 {
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 8a142b4..bd15277 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
@@ -10,7 +10,6 @@ import java.util.Map;
 
 import org.apache.empire.db.DBContext;
 import org.apache.empire.db.DBObject;
-import org.apache.empire.db.DBRollbackHandler;
 import org.apache.empire.db.DBUtils;
 import org.apache.empire.db.exceptions.EmpireSQLException;
 import org.apache.empire.exceptions.InvalidArgumentException;
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/DBRollbackHandler.java 
b/empire-db/src/main/java/org/apache/empire/db/context/DBRollbackHandler.java
similarity index 71%
rename from empire-db/src/main/java/org/apache/empire/db/DBRollbackHandler.java
rename to 
empire-db/src/main/java/org/apache/empire/db/context/DBRollbackHandler.java
index 6e79a19..b5029eb 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBRollbackHandler.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/context/DBRollbackHandler.java
@@ -1,7 +1,9 @@
 /*
  * ESTEAM Software GmbH, 19.01.2022
  */
-package org.apache.empire.db;
+package org.apache.empire.db.context;
+
+import org.apache.empire.db.DBObject;
 
 public interface DBRollbackHandler
 {
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/MSSqlDDLGenerator.java
 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/MSSqlDDLGenerator.java
index b751342..3695012 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/MSSqlDDLGenerator.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/driver/sqlserver/MSSqlDDLGenerator.java
@@ -25,8 +25,8 @@ import org.apache.empire.data.DataType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBDDLGenerator;
 import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBDatabaseDriver.DBSeqTable;
 import org.apache.empire.db.DBExpr;
+import org.apache.empire.db.DBDatabaseDriver.DBSeqTable;
 import org.apache.empire.db.DBIndex;
 import org.apache.empire.db.DBIndex.DBIndexType;
 import org.apache.empire.db.DBSQLScript;
diff --git 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
index 1612030..963bfe4 100644
--- 
a/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
+++ 
b/empire-db/src/main/java/org/apache/empire/db/expr/compare/DBCompareColExpr.java
@@ -20,7 +20,6 @@ package org.apache.empire.db.expr.compare;
 
 import java.util.Set;
 
-// java
 import org.apache.empire.db.DBCmpType;
 import org.apache.empire.db.DBColumn;
 import org.apache.empire.db.DBColumnExpr;

Reply via email to