diff --git a/bundles/org.openhab.persistence.jdbc/pom.xml b/bundles/org.openhab.persistence.jdbc/pom.xml
index 0ffd48dfb3c..a0de1f5bdc8 100644
--- a/bundles/org.openhab.persistence.jdbc/pom.xml
+++ b/bundles/org.openhab.persistence.jdbc/pom.xml
@@ -28,7 +28,7 @@
10.12.1.1
1.4.191
2.3.3
- 1.3.5
+ 1.4.6
8.0.13
9.4.1212
3.16.1
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
index 8f97f8bae2d..441b1958208 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java
@@ -62,9 +62,9 @@ import org.slf4j.LoggerFactory;
public class JdbcBaseDAO {
private final Logger logger = LoggerFactory.getLogger(JdbcBaseDAO.class);
- public Properties databaseProps = new Properties();
+ public final Properties databaseProps = new Properties();
protected String urlSuffix = "";
- public Map sqlTypes = new HashMap<>();
+ public final Map sqlTypes = new HashMap<>();
// Get Database Meta data
protected DbMetaData dbMeta;
@@ -318,12 +318,12 @@ public class JdbcBaseDAO {
}
public void doStoreItemValue(Item item, ItemVO vo) {
- vo = storeItemValueProvider(item, vo);
+ ItemVO storedVO = storeItemValueProvider(item, vo);
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#tablePrimaryValue#" },
- new String[] { vo.getTableName(), sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { vo.getValue(), vo.getValue() };
- logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, vo.getValue());
+ new String[] { storedVO.getTableName(), sqlTypes.get("tablePrimaryValue") });
+ Object[] params = new Object[] { storedVO.getValue(), storedVO.getValue() };
+ logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
@@ -402,17 +402,17 @@ public class JdbcBaseDAO {
String it = getSqlTypes().get(itemType);
if (it.toUpperCase().contains("DOUBLE")) {
vo.setValueTypes(it, java.lang.Double.class);
- Number newVal = ((DecimalType) item.getState());
+ 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);
- DecimalType newVal = ((DecimalType) item.getState());
+ DecimalType newVal = (DecimalType) item.getState();
logger.debug("JDBC::storeItemValueProvider: newVal.toBigDecimal: '{}'", newVal.toBigDecimal());
vo.setValue(newVal.toBigDecimal());
} else if (it.toUpperCase().contains("INT")) {
vo.setValueTypes(it, java.lang.Integer.class);
- Number newVal = ((DecimalType) item.getState());
+ Number newVal = (Number) item.getState();
logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", newVal.intValue());
vo.setValue(newVal.intValue());
} else {// fall back to String
@@ -423,7 +423,7 @@ public class JdbcBaseDAO {
}
} else if ("ROLLERSHUTTERITEM".equals(itemType) || "DIMMERITEM".equals(itemType)) {
vo.setValueTypes(getSqlTypes().get(itemType), java.lang.Integer.class);
- Number newVal = ((DecimalType) item.getState());
+ Number newVal = (DecimalType) item.getState();
logger.debug("JDBC::storeItemValueProvider: newVal.intValue: '{}'", newVal.intValue());
vo.setValue(newVal.intValue());
} else if ("DATETIMEITEM".equals(itemType)) {
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java
index 05f3a8975b5..f74db9cd228 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcConfiguration.java
@@ -12,6 +12,7 @@
*/
package org.openhab.persistence.jdbc.internal;
+import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Map;
@@ -243,12 +244,11 @@ public class JdbcConfiguration {
logger.debug("JDBC::updateConfig: Init Data Access Object Class: '{}'", ddp);
try {
- dBDAO = (JdbcBaseDAO) Class.forName(ddp).newInstance();
+ dBDAO = (JdbcBaseDAO) Class.forName(ddp).getConstructor().newInstance();
logger.debug("JDBC::updateConfig: dBDAO ClassName={}", dBDAO.getClass().getName());
- } catch (InstantiationException e) {
- logger.error("JDBC::updateConfig: InstantiationException: {}", e.getMessage());
- } catch (IllegalAccessException e) {
- logger.error("JDBC::updateConfig: IllegalAccessException: {}", e.getMessage());
+ } catch (IllegalAccessException | InstantiationException | InvocationTargetException
+ | NoSuchMethodException e) {
+ logger.error("JDBC::updateConfig: Exception: {}", e.getMessage());
} catch (ClassNotFoundException e) {
logger.warn("JDBC::updateConfig: no Configuration for serviceName '{}' found. ClassNotFoundException: {}",
serviceName, e.getMessage());
@@ -294,21 +294,21 @@ public class JdbcConfiguration {
e.getMessage());
String warn = ""
+ "\n\n\t!!!\n\tTo avoid this error, place an appropriate JDBC driver file for serviceName '{}' in addons directory.\n"
- + "\tCopy missing JDBC-Driver-jar to your OpenHab/addons Folder.\n\t!!!\n" + "\tDOWNLOAD: \n";
+ + "\tCopy missing JDBC-Driver-jar to your openHab/addons Folder.\n\t!!!\n" + "\tDOWNLOAD: \n";
if (serviceName.equals("derby")) {
- warn += "\tDerby: version >= 10.11.1.1 from http://mvnrepository.com/artifact/org.apache.derby/derby\n";
+ warn += "\tDerby: version >= 10.11.1.1 from https://mvnrepository.com/artifact/org.apache.derby/derby\n";
} else if (serviceName.equals("h2")) {
- warn += "\tH2: version >= 1.4.189 from http://mvnrepository.com/artifact/com.h2database/h2\n";
+ warn += "\tH2: version >= 1.4.189 from https://mvnrepository.com/artifact/com.h2database/h2\n";
} else if (serviceName.equals("hsqldb")) {
- warn += "\tHSQLDB: version >= 2.3.3 from http://mvnrepository.com/artifact/org.hsqldb/hsqldb\n";
+ warn += "\tHSQLDB: version >= 2.3.3 from https://mvnrepository.com/artifact/org.hsqldb/hsqldb\n";
} else if (serviceName.equals("mariadb")) {
- warn += "\tMariaDB: version >= 1.2.0 from http://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n";
+ warn += "\tMariaDB: version >= 1.2.0 from https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n";
} else if (serviceName.equals("mysql")) {
- warn += "\tMySQL: version >= 5.1.36 from http://mvnrepository.com/artifact/mysql/mysql-connector-java\n";
+ warn += "\tMySQL: version >= 5.1.36 from https://mvnrepository.com/artifact/mysql/mysql-connector-java\n";
} else if (serviceName.equals("postgresql")) {
- warn += "\tPostgreSQL:version >= 9.4.1208 from http://mvnrepository.com/artifact/org.postgresql/postgresql\n";
+ warn += "\tPostgreSQL:version >= 9.4.1208 from https://mvnrepository.com/artifact/org.postgresql/postgresql\n";
} else if (serviceName.equals("sqlite")) {
- warn += "\tSQLite: version >= 3.16.1 from http://mvnrepository.com/artifact/org.xerial/sqlite-jdbc\n";
+ warn += "\tSQLite: version >= 3.16.1 from https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc\n";
}
logger.warn(warn, serviceName);
}