]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jdbc] Return QuantityTypes for number items with dimension (#9426)
authorChristoph Weitkamp <github@christophweitkamp.de>
Sun, 3 Jan 2021 16:34:53 +0000 (17:34 +0100)
committerGitHub <noreply@github.com>
Sun, 3 Jan 2021 16:34:53 +0000 (17:34 +0100)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java

index eb111101d4f029db9aa1e4a42134802b38bd77d0..208e87fbab6b10f2bec50acca3dd2efdd84d93b2 100644 (file)
@@ -18,12 +18,16 @@ import java.time.Instant;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.stream.Collectors;
 
+import javax.measure.Quantity;
+import javax.measure.Unit;
+
+import org.eclipse.jdt.annotation.Nullable;
 import org.knowm.yank.Yank;
 import org.openhab.core.items.GroupItem;
 import org.openhab.core.items.Item;
@@ -41,7 +45,9 @@ import org.openhab.core.library.types.HSBType;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.library.types.OpenClosedType;
 import org.openhab.core.library.types.PercentType;
+import org.openhab.core.library.types.QuantityType;
 import org.openhab.core.library.types.StringType;
+import org.openhab.core.library.unit.Units;
 import org.openhab.core.persistence.FilterCriteria;
 import org.openhab.core.persistence.FilterCriteria.Ordering;
 import org.openhab.core.persistence.HistoricItem;
@@ -334,12 +340,11 @@ public class JdbcBaseDAO {
         String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone);
         logger.debug("JDBC::doGetHistItemFilterQuery sql={}", sql);
         List<Object[]> m = Yank.queryObjectArrays(sql, null);
-
-        List<HistoricItem> items = new ArrayList<>();
-        for (int i = 0; i < m.size(); i++) {
-            items.add(new JdbcHistoricItem(item.getName(), getState(item, m.get(i)[1]), objectAsDate(m.get(i)[0])));
-        }
-        return items;
+        // we already retrieve the unit here once as it is a very costly operation
+        String itemName = item.getName();
+        Unit<? extends Quantity<?>> unit = item instanceof NumberItem ? ((NumberItem) item).getUnit() : null;
+        return m.stream().map(o -> new JdbcHistoricItem(itemName, getState(item, unit, o[1]), objectAsDate(o[0])))
+                .collect(Collectors.<HistoricItem> toList());
     }
 
     /*************
@@ -347,11 +352,11 @@ public class JdbcBaseDAO {
      *************/
     static final DateTimeFormatter JDBC_DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-    private String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
+    protected String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
             String simpleName, ZoneId timeZone) {
         logger.debug(
                 "JDBC::getHistItemFilterQueryProvider filter = {}, numberDecimalcount = {}, table = {}, simpleName = {}",
-                filter.toString(), numberDecimalcount, table, simpleName);
+                filter, numberDecimalcount, table, simpleName);
 
         String filterString = "";
         if (filter.getBeginDate() != null) {
@@ -399,61 +404,82 @@ public class JdbcBaseDAO {
 
         // insertItemValue
         logger.debug("JDBC::storeItemValueProvider: getState: '{}'", item.getState());
-        if ("COLORITEM".equals(itemType)) {
-            vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
-            vo.setValue(item.getState().toString());
-        } else if ("NUMBERITEM".equals(itemType)) {
-            String it = getSqlTypes().get(itemType);
-            if (it.toUpperCase().contains("DOUBLE")) {
-                vo.setValueTypes(it, java.lang.Double.class);
-                Number newVal = (Number) item.getState();
-                logger.debug("JDBC::storeItemValueProvider: newVal.doubleValue: '{}'", newVal.doubleValue());
-                vo.setValue(newVal.doubleValue());
-            } else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) {
-                vo.setValueTypes(it, java.math.BigDecimal.class);
-                BigDecimal newVal = BigDecimal.valueOf(((Number) item.getState()).doubleValue());
-                logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", newVal);
-                vo.setValue(newVal);
-            } else if (it.toUpperCase().contains("INT")) {
-                vo.setValueTypes(it, java.lang.Integer.class);
-                Number newVal = (Number) item.getState();
-                logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", newVal.intValue());
-                vo.setValue(newVal.intValue());
-            } else {// fall back to String
-                vo.setValueTypes(it, java.lang.String.class);
-                logger.warn("JDBC::storeItemValueProvider: item.getState().toString(): '{}'", item.getState());
+        /*
+         * !!ATTENTION!!
+         *
+         * 1. DimmerItem.getStateAs(PercentType.class).toString() always
+         * returns 0
+         * RollershutterItem.getStateAs(PercentType.class).toString() works
+         * as expected
+         *
+         * 2. (item instanceof ColorItem) == (item instanceof DimmerItem) =
+         * true Therefore for instance tests ColorItem always has to be
+         * tested before DimmerItem
+         *
+         * !!ATTENTION!!
+         */
+        switch (itemType) {
+            case "COLORITEM":
+                vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
                 vo.setValue(item.getState().toString());
-            }
-        } else if ("ROLLERSHUTTERITEM".equals(itemType) || "DIMMERITEM".equals(itemType)) {
-            vo.setValueTypes(getSqlTypes().get(itemType), java.lang.Integer.class);
-            Number newVal = (DecimalType) item.getState();
-            logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", newVal.intValue());
-            vo.setValue(newVal.intValue());
-        } else if ("DATETIMEITEM".equals(itemType)) {
-            vo.setValueTypes(getSqlTypes().get(itemType), java.sql.Timestamp.class);
-            java.sql.Timestamp d = new java.sql.Timestamp(
-                    ((DateTimeType) item.getState()).getZonedDateTime().toInstant().toEpochMilli());
-            logger.debug("JDBC::storeItemValueProvider: DateTimeItem: '{}'", d);
-            vo.setValue(d);
-        } else {
-            /*
-             * !!ATTENTION!!
-             *
-             * 1. DimmerItem.getStateAs(PercentType.class).toString() always
-             * returns 0
-             * RollershutterItem.getStateAs(PercentType.class).toString() works
-             * as expected
-             *
-             * 2. (item instanceof ColorItem) == (item instanceof DimmerItem) =
-             * true Therefore for instance tests ColorItem always has to be
-             * tested before DimmerItem
-             *
-             * !!ATTENTION!!
-             */
-            // All other items should return the best format by default
-            vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
-            logger.debug("JDBC::storeItemValueProvider: other: item.getState().toString(): '{}'", item.getState());
-            vo.setValue(item.getState().toString());
+                break;
+            case "NUMBERITEM":
+                State state = item.getState();
+                State convertedState = state;
+                if (item instanceof NumberItem && state instanceof QuantityType) {
+                    Unit<? extends Quantity<?>> unit = ((NumberItem) item).getUnit();
+                    if (unit != null && !Units.ONE.equals(unit)) {
+                        convertedState = ((QuantityType<?>) state).toUnit(unit);
+                        if (convertedState == null) {
+                            logger.warn(
+                                    "JDBC::storeItemValueProvider: Failed to convert state '{}' to unit '{}'. Please check your item definition for correctness.",
+                                    state, unit);
+                            convertedState = state;
+                        }
+                    }
+                }
+                String it = getSqlTypes().get(itemType);
+                if (it.toUpperCase().contains("DOUBLE")) {
+                    vo.setValueTypes(it, java.lang.Double.class);
+                    double value = ((Number) convertedState).doubleValue();
+                    logger.debug("JDBC::storeItemValueProvider: newVal.doubleValue: '{}'", value);
+                    vo.setValue(value);
+                } else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) {
+                    vo.setValueTypes(it, java.math.BigDecimal.class);
+                    BigDecimal value = BigDecimal.valueOf(((Number) convertedState).doubleValue());
+                    logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", value);
+                    vo.setValue(value);
+                } else if (it.toUpperCase().contains("INT")) {
+                    vo.setValueTypes(it, java.lang.Integer.class);
+                    int value = ((Number) convertedState).intValue();
+                    logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", value);
+                    vo.setValue(value);
+                } else {// fall back to String
+                    vo.setValueTypes(it, java.lang.String.class);
+                    logger.warn("JDBC::storeItemValueProvider: item.getState().toString(): '{}'", convertedState);
+                    vo.setValue(convertedState.toString());
+                }
+                break;
+            case "ROLLERSHUTTERITEM":
+            case "DIMMERITEM":
+                vo.setValueTypes(getSqlTypes().get(itemType), java.lang.Integer.class);
+                int value = ((DecimalType) item.getState()).intValue();
+                logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", value);
+                vo.setValue(value);
+                break;
+            case "DATETIMEITEM":
+                vo.setValueTypes(getSqlTypes().get(itemType), java.sql.Timestamp.class);
+                java.sql.Timestamp d = new java.sql.Timestamp(
+                        ((DateTimeType) item.getState()).getZonedDateTime().toInstant().toEpochMilli());
+                logger.debug("JDBC::storeItemValueProvider: DateTimeItem: '{}'", d);
+                vo.setValue(d);
+                break;
+            default:
+                // All other items should return the best format by default
+                vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
+                logger.debug("JDBC::storeItemValueProvider: other: item.getState().toString(): '{}'", item.getState());
+                vo.setValue(item.getState().toString());
+                break;
         }
         return vo;
     }
@@ -461,20 +487,24 @@ public class JdbcBaseDAO {
     /*****************
      * H E L P E R S *
      *****************/
-    protected State getState(Item item, Object v) {
-        String clazz = v.getClass().getSimpleName();
-        logger.debug("JDBC::ItemResultHandler::handleResult getState value = '{}', getClass = '{}', clazz = '{}'",
-                v.toString(), v.getClass(), clazz);
+    protected State getState(Item item, @Nullable Unit<? extends Quantity<?>> unit, Object v) {
+        logger.debug(
+                "JDBC::ItemResultHandler::handleResult getState value = '{}', unit = '{}', getClass = '{}', clazz = '{}'",
+                v, unit, v.getClass(), v.getClass().getSimpleName());
         if (item instanceof NumberItem) {
             String it = getSqlTypes().get("NUMBERITEM");
             if (it.toUpperCase().contains("DOUBLE")) {
-                return new DecimalType(((Number) v).doubleValue());
+                return unit == null ? new DecimalType(((Number) v).doubleValue())
+                        : QuantityType.valueOf(((Number) v).doubleValue(), unit);
             } else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) {
-                return new DecimalType((BigDecimal) v);
+                return unit == null ? new DecimalType((BigDecimal) v)
+                        : QuantityType.valueOf(((BigDecimal) v).doubleValue(), unit);
             } else if (it.toUpperCase().contains("INT")) {
-                return new DecimalType(((Integer) v).intValue());
+                return unit == null ? new DecimalType(((Integer) v).intValue())
+                        : QuantityType.valueOf(((Integer) v).doubleValue(), unit);
             }
-            return DecimalType.valueOf(((String) v).toString());
+            return unit == null ? DecimalType.valueOf(((String) v).toString())
+                    : QuantityType.valueOf(((String) v).toString());
         } else if (item instanceof ColorItem) {
             return HSBType.valueOf(((String) v).toString());
         } else if (item instanceof DimmerItem) {
@@ -524,11 +554,7 @@ public class JdbcBaseDAO {
         if (i instanceof GroupItem) {
             item = ((GroupItem) i).getBaseItem();
             if (item == null) {
-                // if GroupItem:<ItemType> is not defined in
-                // *.items using StringType
-                // logger.debug("JDBC: BaseItem GroupItem:<ItemType> is not
-                // defined in *.items searching for first Member and try to use
-                // as ItemType");
+                // if GroupItem:<ItemType> is not defined in *.items using StringType
                 logger.debug(
                         "JDBC::getItemType: Cannot detect ItemType for {} because the GroupItems' base type isn't set in *.items File.",
                         i.getName());
index 76b57e9cd6ef3a41c49be150f50c2a0f8a62c881..973cdc125ed358696f30d63b3b692ab61df9bb1f 100644 (file)
 package org.openhab.persistence.jdbc.db;
 
 import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.measure.Quantity;
+import javax.measure.Unit;
 
 import org.knowm.yank.Yank;
 import org.openhab.core.items.Item;
+import org.openhab.core.library.items.NumberItem;
 import org.openhab.core.persistence.FilterCriteria;
 import org.openhab.core.persistence.FilterCriteria.Ordering;
 import org.openhab.core.persistence.HistoricItem;
@@ -160,23 +163,22 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
             String table, String name, ZoneId timeZone) {
         String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone);
         List<Object[]> m = Yank.queryObjectArrays(sql, null);
-
         logger.debug("JDBC::doGetHistItemFilterQuery got Array length={}", m.size());
-
-        List<HistoricItem> items = new ArrayList<>();
-        for (int i = 0; i < m.size(); i++) {
-            logger.debug("JDBC::doGetHistItemFilterQuery 0='{}' 1='{}'", m.get(i)[0], m.get(i)[1]);
-            items.add(new JdbcHistoricItem(item.getName(), getState(item, m.get(i)[1]), objectAsDate(m.get(i)[0])));
-        }
-        return items;
+        // we already retrieve the unit here once as it is a very costly operation
+        String itemName = item.getName();
+        Unit<? extends Quantity<?>> unit = item instanceof NumberItem ? ((NumberItem) item).getUnit() : null;
+        return m.stream().map(o -> {
+            logger.debug("JDBC::doGetHistItemFilterQuery 0='{}' 1='{}'", o[0], o[1]);
+            return new JdbcHistoricItem(itemName, getState(item, unit, o[1]), objectAsDate(o[0]));
+        }).collect(Collectors.<HistoricItem> toList());
     }
 
     /****************************
      * SQL generation Providers *
      ****************************/
-    static final DateTimeFormatter JDBC_DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-    private String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
+    @Override
+    protected String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
             String simpleName, ZoneId timeZone) {
         logger.debug(
                 "JDBC::getHistItemFilterQueryProvider filter = {}, numberDecimalcount = {}, table = {}, simpleName = {}",
index 8e898615f302991d3b93e34299ebc9601fc5928c..f91811704b366ea9ed1f8778a56eb8d9fbfddb60 100644 (file)
@@ -12,6 +12,7 @@
  */
 package org.openhab.persistence.jdbc.db;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.knowm.yank.Yank;
 import org.openhab.persistence.jdbc.utils.DbMetaData;
 import org.slf4j.Logger;
@@ -24,6 +25,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author Helmut Lehmeyer - Initial contribution
  */
+@NonNullByDefault
 public class JdbcMariadbDAO extends JdbcBaseDAO {
     private final Logger logger = LoggerFactory.getLogger(JdbcMariadbDAO.class);
 
index db2b3cabeb670d471f77367c630ed461a212bcd2..af83ae0f60faad0450350f6ea07132e48625653b 100644 (file)
@@ -12,6 +12,7 @@
  */
 package org.openhab.persistence.jdbc.db;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.knowm.yank.Yank;
 import org.openhab.persistence.jdbc.utils.DbMetaData;
 import org.slf4j.Logger;
@@ -28,6 +29,7 @@ import org.slf4j.LoggerFactory;
  *
  * @author Helmut Lehmeyer - Initial contribution
  */
+@NonNullByDefault
 public class JdbcMysqlDAO extends JdbcBaseDAO {
     private final Logger logger = LoggerFactory.getLogger(JdbcMysqlDAO.class);
 
index 55bc207b83a9957019393fb2641b669ceb58d615..8a7ef69cca713114efd27776e330578280baf719 100644 (file)
 package org.openhab.persistence.jdbc.db;
 
 import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.knowm.yank.Yank;
 import org.openhab.core.items.Item;
 import org.openhab.core.persistence.FilterCriteria;
 import org.openhab.core.persistence.FilterCriteria.Ordering;
-import org.openhab.core.persistence.HistoricItem;
 import org.openhab.persistence.jdbc.model.ItemVO;
 import org.openhab.persistence.jdbc.model.ItemsVO;
-import org.openhab.persistence.jdbc.model.JdbcHistoricItem;
 import org.openhab.persistence.jdbc.utils.StringUtilsExt;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -145,26 +141,12 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO {
         Yank.execute(sql, params);
     }
 
-    @Override
-    public List<HistoricItem> doGetHistItemFilterQuery(Item item, FilterCriteria filter, int numberDecimalcount,
-            String table, String name, ZoneId timeZone) {
-        String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone);
-        logger.debug("JDBC::doGetHistItemFilterQuery sql={}", sql);
-        List<Object[]> m = Yank.queryObjectArrays(sql, null);
-
-        List<HistoricItem> items = new ArrayList<>();
-        for (int i = 0; i < m.size(); i++) {
-            items.add(new JdbcHistoricItem(item.getName(), getState(item, m.get(i)[1]), objectAsDate(m.get(i)[0])));
-        }
-        return items;
-    }
-
     /****************************
      * SQL generation Providers *
      ****************************/
-    static final DateTimeFormatter JDBC_DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 
-    private String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
+    @Override
+    protected String histItemFilterQueryProvider(FilterCriteria filter, int numberDecimalcount, String table,
             String simpleName, ZoneId timeZone) {
         logger.debug(
                 "JDBC::getHistItemFilterQueryProvider filter = {}, numberDecimalcount = {}, table = {}, simpleName = {}",
index 93814adfb92f4c43c5c11b1bc761c608c3f73a38..c89389ce61c354f2650a878c308aeac4a377174c 100644 (file)
@@ -146,7 +146,7 @@ public class JdbcMapper {
     }
 
     public Item storeItemValue(Item item) {
-        logger.debug("JDBC::storeItemValue: item={}", item.toString());
+        logger.debug("JDBC::storeItemValue: item={}", item);
         String tableName = getTable(item);
         if (tableName == null) {
             logger.error("JDBC::store: Unable to store item '{}'.", item.getName());
@@ -166,10 +166,11 @@ public class JdbcMapper {
                 (filter != null), numberDecimalcount, table, item, item.getName());
         if (table != null) {
             long timerStart = System.currentTimeMillis();
-            List<HistoricItem> r = conf.getDBDAO().doGetHistItemFilterQuery(item, filter, numberDecimalcount, table,
-                    item.getName(), timeZoneProvider.getTimeZone());
-            logTime("insertItemValue", timerStart, System.currentTimeMillis());
-            return r;
+            List<HistoricItem> result = conf.getDBDAO().doGetHistItemFilterQuery(item, filter, numberDecimalcount,
+                    table, item.getName(), timeZoneProvider.getTimeZone());
+            logTime("getHistItemFilterQuery", timerStart, System.currentTimeMillis());
+            errCnt = 0;
+            return result;
         } else {
             logger.error("JDBC::getHistItemFilterQuery: TABLE is NULL; cannot get data from non-existent table.");
         }
@@ -230,13 +231,10 @@ public class JdbcMapper {
             logger.info(
                     "JDBC::checkDBSchema: Rebuild complete, configure the 'rebuildTableNames' setting to 'false' to stop rebuilds on startup");
         } else {
-            List<ItemsVO> al;
             // Reset the error counter
             errCnt = 0;
-            al = getItemIDTableNames();
-            for (int i = 0; i < al.size(); i++) {
-                String t = getTableName(al.get(i).getItemid(), al.get(i).getItemname());
-                sqlTables.put(al.get(i).getItemname(), t);
+            for (ItemsVO vo : getItemIDTableNames()) {
+                sqlTables.put(vo.getItemname(), getTableName(vo.getItemid(), vo.getItemname()));
             }
         }
     }
@@ -303,19 +301,17 @@ public class JdbcMapper {
             initialized = false;
         }
 
-        List<ItemsVO> al;
         Map<Integer, String> tableIds = new HashMap<>();
 
         //
-        al = getItemIDTableNames();
-        for (int i = 0; i < al.size(); i++) {
-            String t = getTableName(al.get(i).getItemid(), al.get(i).getItemname());
-            sqlTables.put(al.get(i).getItemname(), t);
-            tableIds.put(al.get(i).getItemid(), t);
+        for (ItemsVO vo : getItemIDTableNames()) {
+            String t = getTableName(vo.getItemid(), vo.getItemname());
+            sqlTables.put(vo.getItemname(), t);
+            tableIds.put(vo.getItemid(), t);
         }
 
         //
-        al = getItemTables();
+        List<ItemsVO> al = getItemTables();
 
         String oldName = "";
         String newName = "";
@@ -375,7 +371,7 @@ public class JdbcMapper {
         // TODO: in general it would be possible to query the count, earliest and latest values for each item too but it
         // would be a very costly operation
         return sqlTables.keySet().stream().map(itemName -> new JdbcPersistenceItemInfo(itemName))
-                .collect(Collectors.<PersistenceItemInfo> toUnmodifiableSet());
+                .collect(Collectors.<PersistenceItemInfo> toSet());
     }
 
     private static String formatRight(final Object value, final int len) {
index 40c26df1a35998aa795f7424f1d4002a5e6fdce9..44e584303a7b8ccee40b260b2e0f2e90ba362205 100644 (file)
@@ -128,7 +128,7 @@ public class JdbcPersistenceService extends JdbcMapper implements QueryablePersi
      */
     @Override
     public void store(Item item, @Nullable String alias) {
-        // Don not store undefined/uninitialised data
+        // Do not store undefined/uninitialized data
         if (item.getState() instanceof UnDefType) {
             logger.debug("JDBC::store: ignore Item '{}' because it is UnDefType", item.getName());
             return;
@@ -141,8 +141,8 @@ public class JdbcPersistenceService extends JdbcMapper implements QueryablePersi
         }
         long timerStart = System.currentTimeMillis();
         storeItemValue(item);
-        logger.debug("JDBC: Stored item '{}' as '{}' in SQL database at {} in {} ms.", item.getName(),
-                item.getState().toString(), (new java.util.Date()).toString(), System.currentTimeMillis() - timerStart);
+        logger.debug("JDBC: Stored item '{}' as '{}' in SQL database at {} in {} ms.", item.getName(), item.getState(),
+                new java.util.Date(), System.currentTimeMillis() - timerStart);
     }
 
     @Override
@@ -204,7 +204,7 @@ public class JdbcPersistenceService extends JdbcMapper implements QueryablePersi
         long timerStart = System.currentTimeMillis();
         List<HistoricItem> items = getHistItemFilterQuery(filter, conf.getNumberDecimalcount(), table, item);
 
-        logger.debug("JDBC::query: query for {} returned {} rows in {} ms", item.getName(), items.size(),
+        logger.debug("JDBC::query: query for {} returned {} rows in {} ms", itemName, items.size(),
                 System.currentTimeMillis() - timerStart);
 
         // Success