EMPIREDB-362 provide qualified() for DBColumnExpr
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
index 48d7d64..f7254ed 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumn.java
@@ -334,6 +334,7 @@
/**
* returns an expression that renames the column with its alias name
*/
+ @Override
public DBColumnExpr qualified()
{
return this.as(getAlias());
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 34f47b3..53bec52 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -137,6 +137,14 @@
}
/**
+ * returns an expression that renames the column with its alias name
+ */
+ public DBColumnExpr qualified()
+ {
+ return this.as(getName());
+ }
+
+ /**
* Returns the value of a column attribute.
* Column attributes are used to provide metadata for a column.
*
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 d202322..2b44e7d 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
@@ -346,9 +346,9 @@
* @param exprs one or more columns to select
* @return itself (this)
*/
- public DBCommand selectQualified(DBColumn... columns)
+ public DBCommand selectQualified(DBColumnExpr... columns)
{
- for (DBColumn col : columns)
+ for (DBColumnExpr col : columns)
{
select(col.qualified());
}
@@ -361,9 +361,9 @@
* @param columns the column expressions to add
* @return itself (this)
*/
- public final DBCommand selectQualified(Collection<? extends DBColumn> columns)
+ public final DBCommand selectQualified(Collection<? extends DBColumnExpr> columns)
{
- for (DBColumn col : columns)
+ for (DBColumnExpr col : columns)
{
select(col.qualified());
}
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 9e5af54..ca4981c 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
@@ -46,7 +46,7 @@
* <UL>
* <LI>In oder to define subqueries simply define a command object with the subquery and wrap it inside a DBQuery.
* Then in a second command object you can reference this Query to join with your other tables and views.
- * In order to join other columns with your query use findQueryColumn(DBColumnExpr expr) to get the
+ * In order to join other columns with your query use findColumn(DBColumnExpr expr) to get the
* query column object for a given column expression in the original select clause.</LI>
* <LI>With a key supplied you can have an updateable query that will update several records at once.</LI>
* </UL>
@@ -246,7 +246,7 @@
{
for (int i = 0; i < queryColumns.length; i++)
{
- if (queryColumns[i].expr.equals(expr))
+ if (queryColumns[i].exprEquals(expr))
return queryColumns[i];
}
// not found
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java b/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
index 43d4772..2f568a3 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBQueryColumn.java
@@ -46,6 +46,16 @@
{
return expr;
}
+
+ public boolean exprEquals(DBColumnExpr other)
+ {
+ if (other.isWrapper() && !expr.isWrapper())
+ return expr.equals(other.unwrap());
+ else if (!other.isWrapper() && expr.isWrapper())
+ return expr.unwrap().equals(other);
+ // both wrapped or both unwrapped
+ return expr.equals(other);
+ }
@Override
public DataType getDataType()