[jdbc] Fixed ClassCastException (#9296)

Signed-off-by: Christoph Weitkamp <github@christophweitkamp.de>
This commit is contained in:
Christoph Weitkamp
2020-12-09 20:52:04 +01:00
committed by GitHub
parent ade041d5f0
commit 7e9b27ec41

View File

@@ -391,10 +391,10 @@ public class JdbcBaseDAO {
String itemType = getItemType(item); String itemType = getItemType(item);
logger.debug("JDBC::storeItemValueProvider: item '{}' as Type '{}' in '{}' with state '{}'", item.getName(), logger.debug("JDBC::storeItemValueProvider: item '{}' as Type '{}' in '{}' with state '{}'", item.getName(),
itemType, vo.getTableName(), item.getState().toString()); itemType, vo.getTableName(), item.getState());
// insertItemValue // insertItemValue
logger.debug("JDBC::storeItemValueProvider: getState: '{}'", item.getState().toString()); logger.debug("JDBC::storeItemValueProvider: getState: '{}'", item.getState());
if ("COLORITEM".equals(itemType)) { if ("COLORITEM".equals(itemType)) {
vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class); vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
vo.setValue(item.getState().toString()); vo.setValue(item.getState().toString());
@@ -407,9 +407,9 @@ public class JdbcBaseDAO {
vo.setValue(newVal.doubleValue()); vo.setValue(newVal.doubleValue());
} else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) { } else if (it.toUpperCase().contains("DECIMAL") || it.toUpperCase().contains("NUMERIC")) {
vo.setValueTypes(it, java.math.BigDecimal.class); vo.setValueTypes(it, java.math.BigDecimal.class);
DecimalType newVal = (DecimalType) item.getState(); BigDecimal newVal = BigDecimal.valueOf(((Number) item.getState()).doubleValue());
logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", newVal.toBigDecimal()); logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", newVal);
vo.setValue(newVal.toBigDecimal()); vo.setValue(newVal);
} else if (it.toUpperCase().contains("INT")) { } else if (it.toUpperCase().contains("INT")) {
vo.setValueTypes(it, java.lang.Integer.class); vo.setValueTypes(it, java.lang.Integer.class);
Number newVal = (Number) item.getState(); Number newVal = (Number) item.getState();
@@ -417,8 +417,7 @@ public class JdbcBaseDAO {
vo.setValue(newVal.intValue()); vo.setValue(newVal.intValue());
} else {// fall back to String } else {// fall back to String
vo.setValueTypes(it, java.lang.String.class); vo.setValueTypes(it, java.lang.String.class);
logger.warn("JDBC::storeItemValueProvider: item.getState().toString(): '{}'", logger.warn("JDBC::storeItemValueProvider: item.getState().toString(): '{}'", item.getState());
item.getState().toString());
vo.setValue(item.getState().toString()); vo.setValue(item.getState().toString());
} }
} else if ("ROLLERSHUTTERITEM".equals(itemType) || "DIMMERITEM".equals(itemType)) { } 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 // All other items should return the best format by default
vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class); vo.setValueTypes(getSqlTypes().get(itemType), java.lang.String.class);
logger.debug("JDBC::storeItemValueProvider: other: item.getState().toString(): '{}'", logger.debug("JDBC::storeItemValueProvider: other: item.getState().toString(): '{}'", item.getState());
item.getState().toString());
vo.setValue(item.getState().toString()); vo.setValue(item.getState().toString());
} }
return vo; return vo;