]> git.basschouten.com Git - openhab-addons.git/commitdiff
[jdbc] Fixed ClassCastException (#9296)
authorChristoph Weitkamp <github@christophweitkamp.de>
Wed, 9 Dec 2020 19:52:04 +0000 (20:52 +0100)
committerGitHub <noreply@github.com>
Wed, 9 Dec 2020 19:52:04 +0000 (11:52 -0800)
Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java

index 441b19582088523eafab5c80ae77f02d3010ed31..ce1e791e17c06ef8028005d7d96c8a80f001770a 100644 (file)
@@ -391,10 +391,10 @@ public class JdbcBaseDAO {
         String itemType = getItemType(item);
 
         logger.debug("JDBC::storeItemValueProvider: item '{}' as Type '{}' in '{}' with state '{}'", item.getName(),
-                itemType, vo.getTableName(), item.getState().toString());
+                itemType, vo.getTableName(), item.getState());
 
         // insertItemValue
-        logger.debug("JDBC::storeItemValueProvider: getState: '{}'", item.getState().toString());
+        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());
@@ -407,9 +407,9 @@ public class JdbcBaseDAO {
                 vo.setValue(newVal.doubleValue());
             } else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) {
                 vo.setValueTypes(it, java.math.BigDecimal.class);
-                DecimalType newVal = (DecimalType) item.getState();
-                logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", newVal.toBigDecimal());
-                vo.setValue(newVal.toBigDecimal());
+                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();
@@ -417,8 +417,7 @@ public class JdbcBaseDAO {
                 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().toString());
+                logger.warn("JDBC::storeItemValueProvider: item.getState().toString(): '{}'", item.getState());
                 vo.setValue(item.getState().toString());
             }
         } else if ("ROLLERSHUTTERITEM".equals(itemType) || "DIMMERITEM".equals(itemType)) {
@@ -449,8 +448,7 @@ public class JdbcBaseDAO {
              */
             // 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().toString());
+            logger.debug("JDBC::storeItemValueProvider: other: item.getState().toString(): '{}'", item.getState());
             vo.setValue(item.getState().toString());
         }
         return vo;