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 823a920 EMPIREDB-362 Improved function naming
823a920 is described below
commit 823a920c0d82d67447ec3a2327a3a083b853972b
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 14 09:48:56 2022 +0100
EMPIREDB-362 Improved function naming
---
.../empire/samples/db/advanced/CarSalesDB.java | 40 +++++++++++++++++++---
.../empire/db/expr/column/DBAbstractFuncExpr.java | 4 ++-
.../apache/empire/db/expr/column/DBCalcExpr.java | 9 +++--
.../empire/db/expr/column/DBConcatFuncExpr.java | 14 +++++++-
.../apache/empire/db/expr/column/DBCountExpr.java | 4 ++-
.../apache/empire/db/expr/column/DBFuncExpr.java | 16 +++++----
6 files changed, 71 insertions(+), 16 deletions(-)
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
index 628f350..fab69d4 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/CarSalesDB.java
@@ -22,7 +22,6 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.sql.SQLException;
import java.time.LocalDate;
-import java.util.List;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.data.DataType;
@@ -299,6 +298,27 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
}
}
+ public static class QueryResult
+ {
+ private String brand;
+ private String model;
+ private BigDecimal basePrice;
+ private int salesCount;
+ private BigDecimal avgSalesPrice;
+ private BigDecimal priceDifference;
+
+ public QueryResult(String brand, String model, BigDecimal basePrice
+ , int salesCount, BigDecimal avgSalesPrice,
BigDecimal priceDifference)
+ {
+ this.brand = brand;
+ this.model = model;
+ this.basePrice = basePrice;
+ this.salesCount = salesCount;
+ this.avgSalesPrice = avgSalesPrice;
+ this.priceDifference = priceDifference;
+ }
+ }
+
public void queryDemo(DBContext context)
{
/*
@@ -314,9 +334,10 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
.orderBy(BRAND.NAME.desc(), MODEL.NAME.asc());
*/
DBCommand cmd = createCommand()
- .selectQualified(BRAND.NAME, MODEL.CONFIG_NAME, MODEL.BASE_PRICE)
- .select (SALES.MODEL_ID.count().as("SALES_COUNT"),
SALES.PRICE.avg().as("AVG_SALES_PRICE"))
- .select
(SALES.PRICE.avg().minus(MODEL.BASE_PRICE.avg()).round(2).as("DIFFERENCE"))
+ .selectQualified(BRAND.NAME, MODEL.CONFIG_NAME)
+ .select (MODEL.BASE_PRICE)
+ .select (SALES.MODEL_ID.count(), SALES.PRICE.avg())
+ .select (SALES.PRICE.avg().minus(MODEL.BASE_PRICE.avg()).round(2))
.join (MODEL.BRAND_ID, BRAND.ID)
.joinLeft(MODEL.ID, SALES.MODEL_ID, SALES.YEAR.is(2021)) // only
year 2021
.where (MODEL.ENGINE_TYPE.in(EngineType.P, EngineType.H,
EngineType.E)) // Petrol, Hybrid, Electric
@@ -325,9 +346,18 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
.having (SALES.MODEL_ID.count().isGreaterThan(5))
.orderBy (BRAND.NAME.desc(), MODEL.CONFIG_NAME.asc());
-
+ /*
List<DataListEntry> list = context.getUtils().queryDataList(cmd);
for (DataListEntry dle : list)
+ {
System.out.println(dle.toString());
+ }
+ */
+ DataListEntry entry = context.getUtils().queryDataEntry(cmd);
+ for (int i=0; i<entry.getFieldCount(); i++)
+ log.info("col {} -> {}", entry.getColumn(i).getName(),
entry.getColumn(i).getBeanPropertyName());
+
+ QueryResult res = context.getUtils().queryBean(cmd, QueryResult.class);
+
}
}
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAbstractFuncExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAbstractFuncExpr.java
index d98d0e3..2fb43da 100644
---
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAbstractFuncExpr.java
+++
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBAbstractFuncExpr.java
@@ -120,7 +120,9 @@ public abstract class DBAbstractFuncExpr extends
DBColumnExpr
@Override
public String getName()
{
- return expr.getName();
+ String exprName = expr.getName();
+ String funcName = getFunctionName();
+ return (StringUtils.isNotEmpty(exprName) ? exprName+"_"+funcName :
funcName);
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCalcExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCalcExpr.java
index 9d1a499..47be0aa 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCalcExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCalcExpr.java
@@ -22,6 +22,7 @@ package org.apache.empire.db.expr.column;
import java.util.Date;
import java.util.Set;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.DataType;
import org.apache.empire.db.DBColumn;
import org.apache.empire.db.DBColumnExpr;
@@ -52,7 +53,7 @@ public class DBCalcExpr extends DBColumnExpr
*
* @param expr an DBColumnExpr object, one column
* @param op the mathematical operation ("+", "-", "*" or "/")
- * @param value the multiply, divide, summate or subtract value
+ * @param value the value to multiply, divide, sum or subtract
*/
public DBCalcExpr(DBColumnExpr expr, String op, Object value)
{
@@ -114,7 +115,11 @@ public class DBCalcExpr extends DBColumnExpr
@Override
public String getName()
{ // Get the expression name
- return expr.getName();
+ String exprName = expr.getName();
+ String valName =((value instanceof DBColumnExpr) ?
((DBColumnExpr)value).getName() : null);
+ if (StringUtils.isNotEmpty(exprName))
+ return ((valName!=null) ? exprName+"_"+valName : exprName);
+ else return StringUtils.coalesce(valName, "CALC");
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatFuncExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatFuncExpr.java
index f0afcfd..03cc024 100644
---
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatFuncExpr.java
+++
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBConcatFuncExpr.java
@@ -58,9 +58,21 @@ public class DBConcatFuncExpr extends DBAbstractFuncExpr
}
@Override
+ public String getName()
+ { // Get the expression name
+ String name = first.getName();
+ for (int i=0; i<others.length; i++)
+ { // add other names
+ name += "_";
+ name += others[i].getName();
+ }
+ return name;
+ }
+
+ @Override
protected String getFunctionName()
{
- return "concat";
+ return "CONCAT";
}
@Override
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCountExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCountExpr.java
index 02e6530..96134e5 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCountExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBCountExpr.java
@@ -20,6 +20,7 @@ package org.apache.empire.db.expr.column;
import java.util.Set;
+import org.apache.empire.commons.StringUtils;
import org.apache.empire.data.Column;
// Java
import org.apache.empire.data.DataType;
@@ -115,7 +116,8 @@ public class DBCountExpr extends DBColumnExpr
@Override
public String getName()
{
- return "count";
+ String colName = (column!=null ? column.getName() : rowset.getName());
+ return (StringUtils.isNotEmpty(colName) ? colName+"_COUNT" : "COUNT");
}
/**
diff --git
a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
index b93dacd..efa7a6d 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBFuncExpr.java
@@ -97,12 +97,17 @@ public class DBFuncExpr extends DBAbstractFuncExpr
protected String getFunctionName()
{
// Get the template
- if (template==null && getDbms()!=null)
- template = getDbms().getSQLPhrase(phrase);
+ if (phrase!=null)
+ { // from phrase
+ int end = phrase.name().lastIndexOf('_');
+ if (end>0)
+ return phrase.name().substring(end+1);
+ // the phrase
+ return phrase.name();
+ }
// Get the first word
if (template!=null)
- {
- String s = template.trim();
+ { String s = template.trim();
int i=0;
for (; i<s.length(); i++)
if (s.charAt(i)<'A')
@@ -111,8 +116,7 @@ public class DBFuncExpr extends DBAbstractFuncExpr
if (i>0)
return s.substring(0,i);
}
- // default
- return "func_" + String.valueOf(phrase);
+ return "FUNC";
}
/**