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";
     }
 
     /**

Reply via email to