diff --git a/bundles/org.openhab.persistence.jdbc/README.md b/bundles/org.openhab.persistence.jdbc/README.md
index 76f2adcde9..0a828875f8 100644
--- a/bundles/org.openhab.persistence.jdbc/README.md
+++ b/bundles/org.openhab.persistence.jdbc/README.md
@@ -9,7 +9,7 @@ The following databases are currently supported and tested:
| Database | Tested Driver / Version |
| -------------------------------------------- | ------------------------------------------------------------ |
-| [Apache Derby](https://db.apache.org/derby/) | [derby-10.12.1.1.jar](https://mvnrepository.com/artifact/org.apache.derby/derby) |
+| [Apache Derby](https://db.apache.org/derby/) | [derby-10.14.2.0.jar](https://mvnrepository.com/artifact/org.apache.derby/derby) |
| [H2](https://www.h2database.com/) | [h2-1.4.191.jar](https://mvnrepository.com/artifact/com.h2database/h2) |
| [HSQLDB](http://hsqldb.org/) | [hsqldb-2.3.3.jar](https://mvnrepository.com/artifact/org.hsqldb/hsqldb) |
| [MariaDB](https://mariadb.org/) | [mariadb-java-client-1.4.6.jar](https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client) |
diff --git a/bundles/org.openhab.persistence.jdbc/pom.xml b/bundles/org.openhab.persistence.jdbc/pom.xml
index d9caf9c5bc..84e3b6ae99 100644
--- a/bundles/org.openhab.persistence.jdbc/pom.xml
+++ b/bundles/org.openhab.persistence.jdbc/pom.xml
@@ -15,7 +15,7 @@
openHAB Add-ons :: Bundles :: Persistence Service :: JDBC
- !org.osgi.service.jdbc.*,!sun.security.*,!org.apache.lucene.*,!org.apache.logging.log4j,!waffle.windows.auth.*,!org.hibernate.*,!org.jboss.*,!org.codehaus.groovy.*,!com.codahale.metrics.*,!com.google.protobuf.*,!com.ibm.icu.*,!com.ibm.jvm.*,!com.mchange.*,!com.sun.*,!com.vividsolutions.*,!io.prometheus.*,com.mysql.jdbc;resolution:=optional,org.apache.derby.*;resolution:=optional,org.h2;resolution:=optional,org.h2.jdbcx;resolution:=optional,org.hsqldb;resolution:=optional,org.hsqldb.jdbc;resolution:=optional,org.mariadb.jdbc;resolution:=optional,org.postgresql;resolution:=optional,org.sqlite;resolution:=optional,org.sqlite.jdbc4;resolution:=optional,javassist*;resolution:=optional
+ !org.osgi.service.jdbc.*,!sun.security.*,!org.apache.lucene.*,!org.apache.logging.log4j,!waffle.windows.auth.*,!org.hibernate.*,!org.jboss.*,!org.codehaus.groovy.*,!com.codahale.metrics.*,!com.google.protobuf.*,!com.ibm.icu.*,!com.ibm.jvm.*,!com.mchange.*,!com.sun.*,!com.vividsolutions.*,!io.prometheus.*,com.mysql.*;resolution:=optional,org.apache.derby.*;resolution:=optional,org.h2.*;resolution:=optional,org.hsqldb;resolution:=optional,org.hsqldb.jdbc;resolution:=optional,org.mariadb.*;resolution:=optional,org.postgresql.*;resolution:=optional,org.sqlite;resolution:=optional,org.sqlite.jdbc4;resolution:=optional,javassist*;resolution:=optional
derby,h2,hsqldb,mariadb-java-client,mysql-connector-java,postgresql,sqlite-jdbc
UTF-8
@@ -25,7 +25,7 @@
3.2.0
- 10.12.1.1
+ 10.14.2.0
1.4.191
2.3.3
1.4.6
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml b/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml
index 322a15ab0a..20816900db 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml
+++ b/bundles/org.openhab.persistence.jdbc/src/main/feature/feature.xml
@@ -6,7 +6,7 @@
mvn:org.openhab.addons.features.karaf/org.openhab.addons.features.karaf.openhab-addons-external/${project.version}/cfg/jdbc
openhab-runtime-base
- mvn:org.apache.derby/derbyclient/10.12.1.1
+ mvn:org.apache.derby/derby/10.14.2.0
mvn:org.openhab.addons.bundles/org.openhab.persistence.jdbc/${project.version}
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 6ba364dafb..63ed871727 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
@@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.stream.Collectors;
@@ -245,18 +246,21 @@ public class JdbcBaseDAO {
* ITEMS DAOs *
**************/
public @Nullable Integer doPingDB() {
- return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null);
+ final @Nullable Integer result = Yank.queryScalar(sqlPingDB, Integer.class, null);
+ return result;
}
public @Nullable String doGetDB() {
- return Yank.queryScalar(sqlGetDB, (Class<@Nullable String>) String.class, null);
+ final @Nullable String result = Yank.queryScalar(sqlGetDB, String.class, null);
+ return result;
}
public boolean doIfTableExists(ItemsVO vo) {
String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" },
new String[] { vo.getItemsManageTable() });
logger.debug("JDBC::doIfTableExists sql={}", sql);
- return Yank.queryScalar(sql, (Class<@Nullable String>) String.class, null) != null;
+ final @Nullable String result = Yank.queryScalar(sql, String.class, null);
+ return Objects.nonNull(result);
}
public Long doCreateNewEntryInItemsTable(ItemsVO vo) {
@@ -321,7 +325,7 @@ public class JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName(), sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue(), storedVO.getValue() };
+ Object[] params = { storedVO.getValue(), storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
@@ -331,7 +335,7 @@ public class JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), "?" });
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.toInstant().toEpochMilli());
- Object[] params = new Object[] { timestamp, storedVO.getValue(), storedVO.getValue() };
+ Object[] params = { timestamp, storedVO.getValue(), storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} timestamp={} value='{}'", sql, timestamp, storedVO.getValue());
Yank.execute(sql, params);
}
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java
index 431ee56db6..4ee6c2d4ce 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java
@@ -14,6 +14,7 @@ package org.openhab.persistence.jdbc.db;
import java.time.ZoneId;
import java.util.List;
+import java.util.Objects;
import java.util.stream.Collectors;
import javax.measure.Quantity;
@@ -44,13 +45,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcDerbyDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.apache.derby.jdbc.EmbeddedDriver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.apache.derby.jdbc.EmbeddedDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcDerbyDAO.class);
/********
* INIT *
********/
public JdbcDerbyDAO() {
- super();
initSqlTypes();
initDbProps();
initSqlQueries();
@@ -84,9 +88,9 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
private void initDbProps() {
// Properties for HikariCP
// Use driverClassName
- databaseProps.setProperty("driverClassName", "org.apache.derby.jdbc.EmbeddedDriver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// OR dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "org.apache.derby.jdbc.EmbeddedDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
databaseProps.setProperty("maximumPoolSize", "1");
databaseProps.setProperty("minimumIdle", "1");
}
@@ -103,7 +107,7 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
**************/
@Override
public @Nullable Integer doPingDB() {
- return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null);
+ return Yank.queryScalar(sqlPingDB, Integer.class, null);
}
@Override
@@ -111,7 +115,8 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" },
new String[] { vo.getItemsManageTable().toUpperCase() });
logger.debug("JDBC::doIfTableExists sql={}", sql);
- return Yank.queryScalar(sql, (Class<@Nullable String>) String.class, null) != null;
+ final @Nullable String result = Yank.queryScalar(sql, String.class, null);
+ return Objects.nonNull(result);
}
@Override
@@ -158,7 +163,7 @@ public class JdbcDerbyDAO extends JdbcBaseDAO {
new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName().toUpperCase(), storedVO.getDbType(),
sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue() };
+ Object[] params = { storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java
index 8957f55388..140f536672 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java
@@ -30,13 +30,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcH2DAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.h2.Driver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.h2.jdbcx.JdbcDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcH2DAO.class);
/********
* INIT *
********/
public JdbcH2DAO() {
- super();
initSqlQueries();
initSqlTypes();
initDbProps();
@@ -61,9 +64,9 @@ public class JdbcH2DAO extends JdbcBaseDAO {
*/
private void initDbProps() {
// Properties for HikariCP
- databaseProps.setProperty("driverClassName", "org.h2.Driver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// driverClassName OR BETTER USE dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "org.h2.jdbcx.JdbcDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
}
/**************
@@ -79,7 +82,7 @@ public class JdbcH2DAO extends JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue() };
+ Object[] params = { storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java
index 8f26945e1b..2fd77b4c78 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java
@@ -32,13 +32,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcHsqldbDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.hsqldb.jdbcDriver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.hsqldb.jdbc.JDBCDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcHsqldbDAO.class);
/********
* INIT *
********/
public JdbcHsqldbDAO() {
- super();
initSqlQueries();
initSqlTypes();
initDbProps();
@@ -71,7 +74,9 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO {
*/
private void initDbProps() {
// Properties for HikariCP
- databaseProps.setProperty("driverClassName", "org.hsqldb.jdbcDriver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
+ // driverClassName OR BETTER USE dataSourceClassName
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
}
/**************
@@ -79,7 +84,7 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO {
**************/
@Override
public @Nullable Integer doPingDB() {
- return Yank.queryScalar(sqlPingDB, (Class<@Nullable Integer>) Integer.class, null);
+ return Yank.queryScalar(sqlPingDB, Integer.class, null);
}
@Override
@@ -111,7 +116,7 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO {
new String[] { "#tableName#", "#dbType#", "#tableName#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName(), storedVO.getDbType(), storedVO.getTableName(),
sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue() };
+ Object[] params = { storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java
index 86c8bbb9e6..740cc0f73d 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java
@@ -12,6 +12,8 @@
*/
package org.openhab.persistence.jdbc.db;
+import java.util.Objects;
+
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.knowm.yank.Yank;
@@ -28,13 +30,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcMariadbDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.mariadb.jdbc.Driver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.mariadb.jdbc.MariaDbDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcMariadbDAO.class);
/********
* INIT *
********/
public JdbcMariadbDAO() {
- super();
initSqlTypes();
initDbProps();
initSqlQueries();
@@ -66,9 +71,9 @@ public class JdbcMariadbDAO extends JdbcBaseDAO {
// Properties for HikariCP
// Use driverClassName
- databaseProps.setProperty("driverClassName", "org.mariadb.jdbc.Driver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// driverClassName OR BETTER USE dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "org.mariadb.jdbc.MySQLDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
databaseProps.setProperty("maximumPoolSize", "3");
databaseProps.setProperty("minimumIdle", "2");
}
@@ -91,8 +96,8 @@ public class JdbcMariadbDAO extends JdbcBaseDAO {
**************/
@Override
public @Nullable Integer doPingDB() {
- final @Nullable Long result = Yank.queryScalar(sqlPingDB, (Class<@Nullable Long>) Long.class, null);
- return result != null ? result.intValue() : null;
+ final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null);
+ return Objects.nonNull(result) ? result.intValue() : null;
}
/*************
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java
index 962938b968..b73f216fd9 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java
@@ -12,6 +12,8 @@
*/
package org.openhab.persistence.jdbc.db;
+import java.util.Objects;
+
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.knowm.yank.Yank;
@@ -32,13 +34,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcMysqlDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = com.mysql.jdbc.Driver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = com.mysql.cj.jdbc.MysqlDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcMysqlDAO.class);
/********
* INIT *
********/
public JdbcMysqlDAO() {
- super();
initSqlTypes();
initDbProps();
initSqlQueries();
@@ -69,9 +74,9 @@ public class JdbcMysqlDAO extends JdbcBaseDAO {
// Properties for HikariCP
// Use driverClassName
- databaseProps.setProperty("driverClassName", "com.mysql.jdbc.Driver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// OR dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "com.mysql.jdbc.jdbc2.optional.MysqlDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
databaseProps.setProperty("maximumPoolSize", "3");
databaseProps.setProperty("minimumIdle", "2");
}
@@ -94,8 +99,8 @@ public class JdbcMysqlDAO extends JdbcBaseDAO {
**************/
@Override
public @Nullable Integer doPingDB() {
- final @Nullable Long result = Yank.queryScalar(sqlPingDB, (Class<@Nullable Long>) Long.class, null);
- return result != null ? result.intValue() : null;
+ final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null);
+ return Objects.nonNull(result) ? result.intValue() : null;
}
/*************
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java
index d754b4d02a..9c419af8c2 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java
@@ -36,13 +36,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcPostgresqlDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.postgresql.Driver.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.postgresql.ds.PGSimpleDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcPostgresqlDAO.class);
/********
* INIT *
********/
public JdbcPostgresqlDAO() {
- super();
initSqlQueries();
initSqlTypes();
initDbProps();
@@ -94,9 +97,9 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO {
// databaseProps.setProperty("dataSource.prepStmtCacheSqlLimit", "2048");
// Properties for HikariCP
- databaseProps.setProperty("driverClassName", "org.postgresql.Driver");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// driverClassName OR BETTER USE dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "org.postgresql.ds.PGSimpleDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
// databaseProps.setProperty("maximumPoolSize", "3");
// databaseProps.setProperty("minimumIdle", "2");
}
@@ -141,7 +144,7 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue() };
+ Object[] params = { storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java
index 5096d546c8..4559e1b183 100644
--- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java
@@ -32,13 +32,16 @@ import org.slf4j.LoggerFactory;
*/
@NonNullByDefault
public class JdbcSqliteDAO extends JdbcBaseDAO {
+ private static final String DRIVER_CLASS_NAME = org.sqlite.JDBC.class.getName();
+ @SuppressWarnings("unused")
+ private static final String DATA_SOURCE_CLASS_NAME = org.sqlite.SQLiteDataSource.class.getName();
+
private final Logger logger = LoggerFactory.getLogger(JdbcSqliteDAO.class);
/********
* INIT *
********/
public JdbcSqliteDAO() {
- super();
initSqlQueries();
initSqlTypes();
initDbProps();
@@ -66,9 +69,9 @@ public class JdbcSqliteDAO extends JdbcBaseDAO {
*/
private void initDbProps() {
// Properties for HikariCP
- databaseProps.setProperty("driverClassName", "org.sqlite.JDBC");
+ databaseProps.setProperty("driverClassName", DRIVER_CLASS_NAME);
// driverClassName OR BETTER USE dataSourceClassName
- // databaseProps.setProperty("dataSourceClassName", "org.sqlite.SQLiteDataSource");
+ // databaseProps.setProperty("dataSourceClassName", DATA_SOURCE_CLASS_NAME);
}
/**************
@@ -77,7 +80,7 @@ public class JdbcSqliteDAO extends JdbcBaseDAO {
@Override
public @Nullable String doGetDB() {
- return Yank.queryColumn(sqlGetDB, "file", (Class<@Nullable String>) String.class, null).get(0);
+ return Yank.queryColumn(sqlGetDB, "file", String.class, null).get(0);
}
@Override
@@ -99,7 +102,7 @@ public class JdbcSqliteDAO extends JdbcBaseDAO {
String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue,
new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" },
new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") });
- Object[] params = new Object[] { storedVO.getValue() };
+ Object[] params = { storedVO.getValue() };
logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue());
Yank.execute(sql, params);
}
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 90b4e1cfc0..a2342050c7 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
@@ -272,7 +272,7 @@ public class JdbcConfiguration {
}
matcher.reset();
matcher.find();
- if (!matcher.group(1).equals("sqltype")) {
+ if (!"sqltype".equals(matcher.group(1))) {
continue;
}
String itemType = matcher.group(2);
@@ -304,7 +304,7 @@ public class JdbcConfiguration {
if (serviceName != null) {
switch (serviceName) {
case "derby":
- warn += "\tDerby: version >= 10.11.1.1 from https://mvnrepository.com/artifact/org.apache.derby/derby\n";
+ warn += "\tDerby: version >= 10.14.2.0 from https://mvnrepository.com/artifact/org.apache.derby/derby\n";
break;
case "h2":
warn += "\tH2: version >= 1.4.189 from https://mvnrepository.com/artifact/com.h2database/h2\n";
@@ -313,13 +313,13 @@ public class JdbcConfiguration {
warn += "\tHSQLDB: version >= 2.3.3 from https://mvnrepository.com/artifact/org.hsqldb/hsqldb\n";
break;
case "mariadb":
- warn += "\tMariaDB: version >= 1.2.0 from https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n";
+ warn += "\tMariaDB: version >= 1.4.6 from https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client\n";
break;
case "mysql":
- warn += "\tMySQL: version >= 5.1.36 from https://mvnrepository.com/artifact/mysql/mysql-connector-java\n";
+ warn += "\tMySQL: version >= 8.0.30 from https://mvnrepository.com/artifact/mysql/mysql-connector-java\n";
break;
case "postgresql":
- warn += "\tPostgreSQL:version >= 9.4.1208 from https://mvnrepository.com/artifact/org.postgresql/postgresql\n";
+ warn += "\tPostgreSQL:version >= 42.4.1 from https://mvnrepository.com/artifact/org.postgresql/postgresql\n";
break;
case "sqlite":
warn += "\tSQLite: version >= 3.16.1 from https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc\n";
diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java
new file mode 100644
index 0000000000..6fc8b9f10a
--- /dev/null
+++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/package-info.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2010-2022 Contributors to the openHAB project
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+@org.osgi.annotation.bundle.Header(name = org.osgi.framework.Constants.DYNAMICIMPORT_PACKAGE, value = "*")
+package org.openhab.persistence.jdbc.internal;
+
+/**
+ * This dynamic import is required for loading the JDBC driver class.
+ *
+ * @author Wouter Born - Initial contribution
+ */