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;