This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push:
new 20ae33a EMPIREDB-362 Advanced example improvments and new overloads
20ae33a is described below
commit 20ae33a52acae71ba5c19415cbec2bee1d10ae0c
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Feb 28 18:25:36 2022 +0100
EMPIREDB-362 Advanced example improvments and new overloads
---
.../empire/samples/db/advanced/SampleAdvApp.java | 22 +++++++++++-----------
.../empire/samples/db/advanced/db/CarSalesDB.java | 4 ++--
.../samples/db/advanced/records/ModelRecord.java | 2 +-
.../org/apache/empire/data/list/DataListEntry.java | 11 +++++++++++
.../main/java/org/apache/empire/db/DBUtils.java | 16 ++++++++++++++++
5 files changed, 41 insertions(+), 14 deletions(-)
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
index c5803bb..118df1c 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/SampleAdvApp.java
@@ -313,13 +313,13 @@ public class SampleAdvApp
List<Long> dealerIdList =
context.getUtils().querySimpleList(Long.class, cmd);
// get all models
cmd.clear();
- cmd.select(db.MODEL.ID, db.MODEL.CONFIG_NAME, db.MODEL.BASE_PRICE);
// select the ones we need (optional)
+ cmd.select(db.MODEL.ID, db.MODEL.SPECIFICATION, db.MODEL.BASE_PRICE);
// select the ones we need (optional)
// no constraints on model
List<DataListEntry> modelList = context.getUtils().queryDataList(cmd);
for (DataListEntry model : modelList)
{
int count = generateRandomSales(batch, model, dealerIdList);
- log.info("{} Sales added for Model {}", count,
model.getString(db.MODEL.CONFIG_NAME));
+ log.info("{} Sales added for Model {}", count,
model.getString(db.MODEL.SPECIFICATION));
}
// execute the batch
int count = batch.executeBatch();
@@ -436,7 +436,7 @@ public class SampleAdvApp
// create command
DBCommand cmd = context.createCommand()
- .select(MODEL.CONFIG_NAME, q.column(SALES.count()))
+ .select(MODEL.SPECIFICATION, q.column(SALES.count()))
.join(MODEL.ID, q.column(SALES.MODEL_ID));
List<DataListEntry> list = context.getUtils().queryDataList(cmd);
@@ -456,20 +456,20 @@ public class SampleAdvApp
// .selectQualified(BRAND.NAME, MODEL.CONFIG_NAME)
- // create command
+ // create a command
DBCommand cmd = context.createCommand()
- .select (BRAND.NAME, MODEL.CONFIG_NAME, MODEL.BASE_PRICE)
+ .select (BRAND.NAME, MODEL.SPECIFICATION, MODEL.BASE_PRICE)
.select (SALES.MODEL_ID.count(), SALES.PRICE.avg())
.select
(SALES.PRICE.avg().minus(MODEL.BASE_PRICE.avg()).round(2).as("DIFFERENCE"))
.join (MODEL.WMI, BRAND.WMI)
.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
.where (MODEL.BASE_PRICE.isGreaterThan(30000))
- .groupBy (BRAND.NAME, MODEL.CONFIG_NAME, MODEL.BASE_PRICE)
+ .groupBy (BRAND.NAME, MODEL.SPECIFICATION, MODEL.BASE_PRICE)
.having (SALES.MODEL_ID.count().isGreaterThan(5)) // more than 5
sales
- .orderBy (BRAND.NAME.desc(), MODEL.CONFIG_NAME.asc());
+ .orderBy (BRAND.NAME.desc(), MODEL.SPECIFICATION.asc());
- // Returns a list of Java beans (needs matching fields constructor or
setter methods)
+ // Return a list of Java beans (needs matching fields constructor or
setter methods)
// This is just one of several options to obtain an process query
results
List<QueryResult> list = context.getUtils().queryBeanList(cmd,
QueryResult.class, null);
log.info("queryBeanList returnes {} items", list.size());
@@ -501,11 +501,11 @@ public class SampleAdvApp
DBCmdParam engineTypeParam = cmd.addParam();
// create the command
- cmd.select (BRAND.NAME, MODEL.CONFIG_NAME, MODEL.BASE_PRICE,
MODEL.ENGINE_TYPE, MODEL.ENGINE_POWER)
+ cmd.select (BRAND.NAME, MODEL.SPECIFICATION, MODEL.BASE_PRICE,
MODEL.ENGINE_TYPE, MODEL.ENGINE_POWER)
.join (MODEL.WMI, BRAND.WMI)
.where (BRAND.NAME.is(brandParam))
.where (MODEL.ENGINE_TYPE.is(engineTypeParam))
- .orderBy (BRAND.NAME.desc(), MODEL.CONFIG_NAME.asc());
+ .orderBy (BRAND.NAME.desc(), MODEL.SPECIFICATION.asc());
// set the params
brandParam.setValue("Tesla");
@@ -852,7 +852,7 @@ public class SampleAdvApp
model.create()
.set(MODEL.WMI , "WVW") // = Volkswagen
.set(MODEL.NAME , "ID.4")
- .set(MODEL.CONFIG_NAME , "ID.4 Pro Performance 150 kW 77 kWh")
+ .set(MODEL.SPECIFICATION , "ID.4 Pro Performance 150 kW 77
kWh")
.set(MODEL.TRIM , "Pro")
.set(MODEL.ENGINE_TYPE , EngineType.E)
.set(MODEL.ENGINE_POWER , 204);
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/db/CarSalesDB.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/db/CarSalesDB.java
index 75e0eaa..1244e0d 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/db/CarSalesDB.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/db/CarSalesDB.java
@@ -128,7 +128,7 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
{
public final DBTableColumn ID;
public final DBTableColumn NAME;
- public final DBTableColumn CONFIG_NAME;
+ public final DBTableColumn SPECIFICATION;
public final DBTableColumn WMI;
public final DBTableColumn TRIM;
public final DBTableColumn ENGINE_TYPE;
@@ -143,7 +143,7 @@ public class CarSalesDB extends TDatabase<CarSalesDB>
// ID
ID = addIdentity ("ID",
"MODEL_ID_SEQUENCE"); // Optional Sequence name for some DBMS (e.g. Oracle)
NAME = addColumn ("NAME",
DataType.VARCHAR, 20, true);
- CONFIG_NAME = addColumn ("CONFIGURATION",
DataType.VARCHAR, 40, true);
+ SPECIFICATION = addColumn ("SPECIFICATION",
DataType.VARCHAR, 40, true);
WMI = addForeignKey("WMI", db.BRAND,
true);
TRIM = addColumn ("TRIM",
DataType.VARCHAR, 20, true);
ENGINE_TYPE = addColumn ("ENGINE_TYPE", DataType.CHAR,
1, true, EngineType.class);
diff --git
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/records/ModelRecord.java
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/records/ModelRecord.java
index 239fc00..446bb72 100644
---
a/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/records/ModelRecord.java
+++
b/empire-db-examples/empire-db-example-advanced/src/main/java/org/apache/empire/samples/db/advanced/records/ModelRecord.java
@@ -20,7 +20,7 @@ public class ModelRecord extends TRecord<CarSalesDB.Model>
create();
set(T.WMI , brand);
set(T.NAME , modelName);
- set(T.CONFIG_NAME , configName);
+ set(T.SPECIFICATION , configName);
set(T.TRIM , trim);
set(T.ENGINE_TYPE , engineType);
set(T.ENGINE_POWER , enginePower);
diff --git
a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
index 254b66c..20e4f2b 100644
--- a/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
+++ b/empire-db/src/main/java/org/apache/empire/data/list/DataListEntry.java
@@ -266,6 +266,17 @@ public class DataListEntry implements RecordData,
Serializable
return getInt(indexOf(column));
}
+ public long getLong(int index)
+ { // Get Long value
+ Object o = getValue(index);
+ return ObjectUtils.getLong(o);
+ }
+
+ public final long getLong(ColumnExpr column)
+ {
+ return getLong(indexOf(column));
+ }
+
public BigDecimal getDecimal(int index)
{ // Get Integer value
Object o = getValue(index);
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 2e1fda8..84dd12b 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
@@ -772,10 +772,26 @@ public class DBUtils implements DBContextAware
/**
* Queries a list of DataListEntry items
*/
+ public final <T extends DataListEntry> List<T> queryDataList(DBCommandExpr
cmd, Class<T> entryClass, int first, int maxItems)
+ {
+ return queryDataList(cmd, createDefaultDataListFactory(entryClass,
createDefaultDataListHead(cmd, entryClass)), first, maxItems);
+ }
+
+ /**
+ * Queries a list of DataListEntry items
+ */
public final List<DataListEntry> queryDataList(DBCommandExpr cmd)
{
return queryDataList(cmd, DataListEntry.class);
}
+
+ /**
+ * Queries a list of DataListEntry items
+ */
+ public final List<DataListEntry> queryDataList(DBCommandExpr cmd, int
first, int maxItems)
+ {
+ return queryDataList(cmd, DataListEntry.class, first, maxItems);
+ }
/**
* Queries a single DataListEntry item