From 4125e75e906f211c33dcb4ae362b6f95856a011a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sevket=20G=C3=B6kay?= Date: Tue, 26 Mar 2024 12:40:19 +0100 Subject: [PATCH] remove the flag firstArrivingMeterValueIfMultiple and its usage (closes #1209) --- .../repository/TransactionRepository.java | 6 +---- .../impl/TransactionRepositoryImpl.java | 26 ++----------------- .../steve/service/TransactionStopService.java | 2 +- 3 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/main/java/de/rwth/idsg/steve/repository/TransactionRepository.java b/src/main/java/de/rwth/idsg/steve/repository/TransactionRepository.java index 501d111a0..ea40930b9 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/TransactionRepository.java +++ b/src/main/java/de/rwth/idsg/steve/repository/TransactionRepository.java @@ -36,9 +36,5 @@ public interface TransactionRepository { List getActiveTransactionIds(String chargeBoxId); - TransactionDetails getDetails(int transactionPk, boolean firstArrivingMeterValueIfMultiple); - - default TransactionDetails getDetails(int transactionPk) { - return getDetails(transactionPk, true); - } + TransactionDetails getDetails(int transactionPk); } diff --git a/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java b/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java index 6fb46e1fa..0ba4b3b1a 100644 --- a/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java +++ b/src/main/java/de/rwth/idsg/steve/repository/impl/TransactionRepositoryImpl.java @@ -36,7 +36,6 @@ import org.jooq.RecordMapper; import org.jooq.SelectQuery; import org.jooq.Table; -import org.jooq.impl.DSL; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -89,7 +88,7 @@ public List getActiveTransactionIds(String chargeBoxId) { } @Override - public TransactionDetails getDetails(int transactionPk, boolean firstArrivingMeterValueIfMultiple) { + public TransactionDetails getDetails(int transactionPk) { // ------------------------------------------------------------------------- // Step 1: Collect general data about transaction @@ -176,20 +175,7 @@ public TransactionDetails getDetails(int transactionPk, boolean firstArrivingMet // Table t1 = transactionQuery.union(timestampQuery).asTable("t1"); - // ------------------------------------------------------------------------- - // Step 3: Charging station might send meter vales at fixed intervals (e.g. - // every 15 min) regardless of the fact that connector's meter value did not - // change (e.g. vehicle is fully charged, but cable is still connected). This - // yields multiple entries in db with the same value but different timestamp. - // We are only interested in the first (or last) arriving entry. - // ------------------------------------------------------------------------- - - Field dateTimeField; - if (firstArrivingMeterValueIfMultiple) { - dateTimeField = DSL.min(t1.field(2, DateTime.class)).as("min"); - } else { - dateTimeField = DSL.max(t1.field(2, DateTime.class)).as("max"); - } + Field dateTimeField = t1.field(2, DateTime.class); List values = ctx.select( @@ -202,14 +188,6 @@ public TransactionDetails getDetails(int transactionPk, boolean firstArrivingMet t1.field(8, String.class), t1.field(9, String.class)) .from(t1) - .groupBy( - t1.field(3), - t1.field(4), - t1.field(5), - t1.field(6), - t1.field(7), - t1.field(8), - t1.field(9)) .orderBy(dateTimeField) .fetch() .map(r -> TransactionDetails.MeterValues.builder() diff --git a/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java b/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java index c87e32529..b6fc11e93 100644 --- a/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java +++ b/src/main/java/de/rwth/idsg/steve/service/TransactionStopService.java @@ -57,7 +57,7 @@ public void stop(List transactionPkList) { } public void stop(Integer transactionPk) { - TransactionDetails thisTxDetails = transactionRepository.getDetails(transactionPk, false); + TransactionDetails thisTxDetails = transactionRepository.getDetails(transactionPk); Transaction thisTx = thisTxDetails.getTransaction(); // early exit, if transaction is already stopped