[jdbc] Upgrade derby from 10.12.1.1 to 10.14.2.0 (#13038)
* Use derby instead of derbyclient, fix bnd optional package imports * Update versions add dynamic package import for custom JDBC drivers * Prevent redundant null check warnings Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
parent
4e69e17f41
commit
97956d30e9
|
@ -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) |
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<name>openHAB Add-ons :: Bundles :: Persistence Service :: JDBC</name>
|
||||
|
||||
<properties>
|
||||
<bnd.importpackage>!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</bnd.importpackage>
|
||||
<bnd.importpackage>!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</bnd.importpackage>
|
||||
<dep.noembedding>derby,h2,hsqldb,mariadb-java-client,mysql-connector-java,postgresql,sqlite-jdbc</dep.noembedding>
|
||||
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
@ -25,7 +25,7 @@
|
|||
<yank.version>3.2.0</yank.version>
|
||||
|
||||
<!-- JDBC database driver versions -->
|
||||
<derby.version>10.12.1.1</derby.version>
|
||||
<derby.version>10.14.2.0</derby.version>
|
||||
<h2.version>1.4.191</h2.version>
|
||||
<hsqldb.version>2.3.3</hsqldb.version>
|
||||
<mariadb.version>1.4.6</mariadb.version>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<feature name="openhab-persistence-jdbc-derby" description="JDBC Persistence Apache Derby" version="${project.version}">
|
||||
<configfile finalname="${openhab.conf}/services/jdbc.cfg" override="false">mvn:org.openhab.addons.features.karaf/org.openhab.addons.features.karaf.openhab-addons-external/${project.version}/cfg/jdbc</configfile>
|
||||
<feature prerequisite="false" dependency="false">openhab-runtime-base</feature>
|
||||
<bundle start-level="80">mvn:org.apache.derby/derbyclient/10.12.1.1</bundle>
|
||||
<bundle start-level="80">mvn:org.apache.derby/derby/10.14.2.0</bundle>
|
||||
<bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.persistence.jdbc/${project.version}</bundle>
|
||||
</feature>
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*************
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/*************
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
*/
|
Loading…
Reference in New Issue