diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntry.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntry.java similarity index 96% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntry.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntry.java index e644138ae..707ae0e57 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntry.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntry.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc; +package org.openhab.persistence.jdbc.internal; import org.eclipse.jdt.annotation.NonNullByDefault; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntryStatus.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntryStatus.java similarity index 97% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntryStatus.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntryStatus.java index 3553aee29..ce70ed6c4 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/ItemTableCheckEntryStatus.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/ItemTableCheckEntryStatus.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc; +package org.openhab.persistence.jdbc.internal; import org.eclipse.jdt.annotation.NonNullByDefault; 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 b67fb9a31..5ce07056f 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 @@ -23,9 +23,9 @@ import java.util.regex.Pattern; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.openhab.persistence.jdbc.db.JdbcBaseDAO; -import org.openhab.persistence.jdbc.utils.MovingAverage; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.db.JdbcBaseDAO; +import org.openhab.persistence.jdbc.internal.utils.MovingAverage; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +39,7 @@ public class JdbcConfiguration { private final Logger logger = LoggerFactory.getLogger(JdbcConfiguration.class); private static final Pattern EXTRACT_CONFIG_PATTERN = Pattern.compile("^(.*?)\\.([0-9.a-zA-Z]+)$"); - private static final String DB_DAO_PACKAGE = "org.openhab.persistence.jdbc.db.Jdbc"; + private static final String DB_DAO_PACKAGE = "org.openhab.persistence.jdbc.internal.db.Jdbc"; private Map configuration; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java index cae0a5346..27422eedb 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcMapper.java @@ -25,16 +25,16 @@ import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; -import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.i18n.TimeZoneProvider; import org.openhab.core.items.Item; import org.openhab.core.persistence.FilterCriteria; import org.openhab.core.persistence.HistoricItem; import org.openhab.core.persistence.PersistenceItemInfo; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.dto.JdbcPersistenceItemInfo; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.dto.JdbcPersistenceItemInfo; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,10 +64,10 @@ public class JdbcMapper { this.timeZoneProvider = timeZoneProvider; } - /***************** + /**************** * MAPPER ITEMS * - *****************/ - private boolean pingDB() { + ****************/ + private boolean pingDB() throws JdbcSQLException { logger.debug("JDBC::pingDB"); boolean ret = false; long timerStart = System.currentTimeMillis(); @@ -91,7 +91,7 @@ public class JdbcMapper { return ret; } - private boolean ifItemsTableExists() { + private boolean ifItemsTableExists() throws JdbcSQLException { logger.debug("JDBC::ifItemsTableExists"); long timerStart = System.currentTimeMillis(); boolean res = conf.getDBDAO().doIfTableExists(new ItemsVO()); @@ -99,7 +99,7 @@ public class JdbcMapper { return res; } - protected boolean ifTableExists(String tableName) { + protected boolean ifTableExists(String tableName) throws JdbcSQLException { logger.debug("JDBC::ifTableExists"); long timerStart = System.currentTimeMillis(); boolean res = conf.getDBDAO().doIfTableExists(tableName); @@ -107,7 +107,7 @@ public class JdbcMapper { return res; } - private ItemsVO createNewEntryInItemsTable(ItemsVO vo) { + private ItemsVO createNewEntryInItemsTable(ItemsVO vo) throws JdbcSQLException { logger.debug("JDBC::createNewEntryInItemsTable"); long timerStart = System.currentTimeMillis(); Long i = conf.getDBDAO().doCreateNewEntryInItemsTable(vo); @@ -116,7 +116,7 @@ public class JdbcMapper { return vo; } - private boolean createItemsTableIfNot(ItemsVO vo) { + private boolean createItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { logger.debug("JDBC::createItemsTableIfNot"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doCreateItemsTableIfNot(vo); @@ -124,7 +124,7 @@ public class JdbcMapper { return true; } - private boolean dropItemsTableIfExists(ItemsVO vo) { + private boolean dropItemsTableIfExists(ItemsVO vo) throws JdbcSQLException { logger.debug("JDBC::dropItemsTableIfExists"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doDropItemsTableIfExists(vo); @@ -132,14 +132,14 @@ public class JdbcMapper { return true; } - protected void dropTable(String tableName) { + protected void dropTable(String tableName) throws JdbcSQLException { logger.debug("JDBC::dropTable"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doDropTable(tableName); logTime("doDropTable", timerStart, System.currentTimeMillis()); } - protected ItemsVO deleteItemsEntry(ItemsVO vo) { + protected ItemsVO deleteItemsEntry(ItemsVO vo) throws JdbcSQLException { logger.debug("JDBC::deleteItemsEntry"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doDeleteItemsEntry(vo); @@ -147,7 +147,7 @@ public class JdbcMapper { return vo; } - private List getItemIDTableNames() { + private List getItemIDTableNames() throws JdbcSQLException { logger.debug("JDBC::getItemIDTableNames"); long timerStart = System.currentTimeMillis(); List vo = conf.getDBDAO().doGetItemIDTableNames(new ItemsVO()); @@ -155,7 +155,7 @@ public class JdbcMapper { return vo; } - protected List getItemTables() { + protected List getItemTables() throws JdbcSQLException { logger.debug("JDBC::getItemTables"); long timerStart = System.currentTimeMillis(); ItemsVO vo = new ItemsVO(); @@ -168,14 +168,14 @@ public class JdbcMapper { /**************** * MAPPERS ITEM * ****************/ - private void updateItemTableNames(List vol) { + private void updateItemTableNames(List vol) throws JdbcSQLException { logger.debug("JDBC::updateItemTableNames"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doUpdateItemTableNames(vol); logTime("updateItemTableNames", timerStart, System.currentTimeMillis()); } - private ItemVO createItemTable(ItemVO vo) { + private ItemVO createItemTable(ItemVO vo) throws JdbcSQLException { logger.debug("JDBC::createItemTable"); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doCreateItemTable(vo); @@ -183,7 +183,7 @@ public class JdbcMapper { return vo; } - protected Item storeItemValue(Item item, State itemState, @Nullable ZonedDateTime date) { + protected void storeItemValue(Item item, State itemState, @Nullable ZonedDateTime date) throws JdbcSQLException { logger.debug("JDBC::storeItemValue: item={} state={} date={}", item, itemState, date); String tableName = getTable(item); long timerStart = System.currentTimeMillis(); @@ -194,15 +194,14 @@ public class JdbcMapper { } logTime("storeItemValue", timerStart, System.currentTimeMillis()); errCnt = 0; - return item; } - public long getRowCount(String tableName) { + public long getRowCount(String tableName) throws JdbcSQLException { return conf.getDBDAO().doGetRowCount(tableName); } protected List getHistItemFilterQuery(FilterCriteria filter, int numberDecimalcount, String table, - Item item) { + Item item) throws JdbcSQLException { logger.debug( "JDBC::getHistItemFilterQuery filter='{}' numberDecimalcount='{}' table='{}' item='{}' itemName='{}'", true, numberDecimalcount, table, item, item.getName()); @@ -214,7 +213,7 @@ public class JdbcMapper { return result; } - protected void deleteItemValues(FilterCriteria filter, String table) { + protected void deleteItemValues(FilterCriteria filter, String table) throws JdbcSQLException { logger.debug("JDBC::deleteItemValues filter='{}' table='{}' itemName='{}'", true, table, filter.getItemName()); long timerStart = System.currentTimeMillis(); conf.getDBDAO().doDeleteItemValues(filter, table, timeZoneProvider.getTimeZone()); @@ -276,7 +275,7 @@ public class JdbcMapper { logger.debug("JDBC::checkDBAcessability, second try connection: {}", p); return (p && !(conf.getErrReconnectThreshold() > 0 && errCnt <= conf.getErrReconnectThreshold())); } - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { logger.warn("Unable to ping database", e); return false; } @@ -285,7 +284,7 @@ public class JdbcMapper { /************************** * DATABASE TABLEHANDLING * **************************/ - protected void checkDBSchema() { + protected void checkDBSchema() throws JdbcSQLException { if (!conf.getTableUseRealCaseSensitiveItemNames()) { createItemsTableIfNot(new ItemsVO()); } @@ -303,7 +302,7 @@ public class JdbcMapper { populateItemNameToTableNameMap(); } - private void populateItemNameToTableNameMap() { + private void populateItemNameToTableNameMap() throws JdbcSQLException { itemNameToTableNameMap.clear(); if (conf.getTableUseRealCaseSensitiveItemNames()) { for (String itemName : getItemTables().stream().map(t -> t.getTableName()).collect(Collectors.toList())) { @@ -317,7 +316,7 @@ public class JdbcMapper { } } - protected String getTable(Item item) { + protected String getTable(Item item) throws JdbcSQLException { int itemId = 0; ItemsVO isvo; ItemVO ivo; @@ -360,7 +359,7 @@ public class JdbcMapper { return tableName; } - private void formatTableNames() { + private void formatTableNames() throws JdbcSQLException { boolean tmpinit = initialized; if (tmpinit) { initialized = false; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java index e0fbf1155..3e4783f32 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/JdbcPersistenceService.java @@ -25,7 +25,6 @@ import java.util.stream.Collectors; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.config.core.ConfigurableService; import org.openhab.core.i18n.TimeZoneProvider; import org.openhab.core.items.GroupItem; @@ -41,9 +40,8 @@ import org.openhab.core.persistence.QueryablePersistenceService; import org.openhab.core.persistence.strategy.PersistenceStrategy; import org.openhab.core.types.State; import org.openhab.core.types.UnDefType; -import org.openhab.persistence.jdbc.ItemTableCheckEntry; -import org.openhab.persistence.jdbc.ItemTableCheckEntryStatus; -import org.openhab.persistence.jdbc.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; import org.osgi.service.component.annotations.Activate; @@ -163,7 +161,7 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers logger.debug("JDBC: Stored item '{}' as '{}' in SQL database at {} in {} ms.", item.getName(), state, new Date(), System.currentTimeMillis() - timerStart); } - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { logger.warn("JDBC::store: Unable to store item", e); } } @@ -230,7 +228,7 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers // Success errCnt = 0; return items; - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { logger.warn("JDBC::query: Unable to query item", e); return List.of(); } @@ -246,7 +244,7 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers checkDBSchema(); // connection has been established ... initialization completed! initialized = true; - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { logger.error("Failed to check database schema", e); initialized = false; } @@ -291,7 +289,7 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers System.currentTimeMillis() - timerStart); } return true; - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { logger.debug("JDBC::remove: Unable to remove values for item", e); return false; } @@ -310,7 +308,7 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers * * @return list of {@link ItemTableCheckEntry} */ - public List getCheckedEntries() { + public List getCheckedEntries() throws JdbcSQLException { List entries = new ArrayList<>(); if (!checkDBAccessability()) { @@ -362,8 +360,9 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers * @param itemName Name of item to clean * @param force If true, non-empty tables will be dropped too * @return true if item was cleaned up + * @throws JdbcSQLException */ - public boolean cleanupItem(String itemName, boolean force) { + public boolean cleanupItem(String itemName, boolean force) throws JdbcSQLException { String tableName = itemNameToTableNameMap.get(itemName); if (tableName == null) { return false; @@ -378,12 +377,13 @@ public class JdbcPersistenceService extends JdbcMapper implements ModifiablePers * * @param entry * @return true if item was cleaned up + * @throws JdbcSQLException */ - public boolean cleanupItem(ItemTableCheckEntry entry) { + public boolean cleanupItem(ItemTableCheckEntry entry) throws JdbcSQLException { return cleanupItem(entry, false); } - private boolean cleanupItem(ItemTableCheckEntry entry, boolean force) { + private boolean cleanupItem(ItemTableCheckEntry entry, boolean force) throws JdbcSQLException { if (!checkDBAccessability()) { logger.warn("JDBC::cleanupItem: database not connected"); return false; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/NamingStrategy.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/NamingStrategy.java index 3fcf9f065..8d4e41500 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/NamingStrategy.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/NamingStrategy.java @@ -21,7 +21,7 @@ import java.util.Objects; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.items.ItemUtil; -import org.openhab.persistence.jdbc.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/console/JdbcCommandExtension.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/console/JdbcCommandExtension.java similarity index 93% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/console/JdbcCommandExtension.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/console/JdbcCommandExtension.java index 6923430aa..c4d1f1fcd 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/console/JdbcCommandExtension.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/console/JdbcCommandExtension.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.console; +package org.openhab.persistence.jdbc.internal.console; import java.util.Arrays; import java.util.Comparator; @@ -19,7 +19,6 @@ import java.util.stream.Stream; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.io.console.Console; import org.openhab.core.io.console.ConsoleCommandCompleter; import org.openhab.core.io.console.StringsCompleter; @@ -27,10 +26,11 @@ import org.openhab.core.io.console.extensions.AbstractConsoleCommandExtension; import org.openhab.core.io.console.extensions.ConsoleCommandExtension; import org.openhab.core.persistence.PersistenceService; import org.openhab.core.persistence.PersistenceServiceRegistry; -import org.openhab.persistence.jdbc.ItemTableCheckEntry; -import org.openhab.persistence.jdbc.ItemTableCheckEntryStatus; +import org.openhab.persistence.jdbc.internal.ItemTableCheckEntry; +import org.openhab.persistence.jdbc.internal.ItemTableCheckEntryStatus; import org.openhab.persistence.jdbc.internal.JdbcPersistenceService; import org.openhab.persistence.jdbc.internal.JdbcPersistenceServiceConstants; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; @@ -76,7 +76,7 @@ public class JdbcCommandExtension extends AbstractConsoleCommandExtension implem printUsage(console); return; } - } catch (YankSQLException e) { + } catch (JdbcSQLException e) { console.println(e.toString()); } } @@ -90,7 +90,8 @@ public class JdbcCommandExtension extends AbstractConsoleCommandExtension implem return null; } - private boolean execute(JdbcPersistenceService persistenceService, String[] args, Console console) { + private boolean execute(JdbcPersistenceService persistenceService, String[] args, Console console) + throws JdbcSQLException { if (SUBCMD_TABLES_LIST.equalsIgnoreCase(args[1])) { listTables(persistenceService, console, args.length == 3 && PARAMETER_ALL.equalsIgnoreCase(args[2])); return true; @@ -109,7 +110,8 @@ public class JdbcCommandExtension extends AbstractConsoleCommandExtension implem return false; } - private void listTables(JdbcPersistenceService persistenceService, Console console, Boolean all) { + private void listTables(JdbcPersistenceService persistenceService, Console console, Boolean all) + throws JdbcSQLException { List entries = persistenceService.getCheckedEntries(); if (!all) { entries.removeIf(t -> t.getStatus() == ItemTableCheckEntryStatus.VALID); @@ -138,7 +140,7 @@ public class JdbcCommandExtension extends AbstractConsoleCommandExtension implem } } - private void cleanupTables(JdbcPersistenceService persistenceService, Console console) { + private void cleanupTables(JdbcPersistenceService persistenceService, Console console) throws JdbcSQLException { console.println("Cleaning up all inconsistent items..."); List entries = persistenceService.getCheckedEntries(); entries.removeIf(t -> t.getStatus() == ItemTableCheckEntryStatus.VALID || t.getItemName().isEmpty()); @@ -152,8 +154,8 @@ public class JdbcCommandExtension extends AbstractConsoleCommandExtension implem } } - private void cleanupItem(JdbcPersistenceService persistenceService, Console console, String itemName, - boolean force) { + private void cleanupItem(JdbcPersistenceService persistenceService, Console console, String itemName, boolean force) + throws JdbcSQLException { console.print("Cleaning up item " + itemName + "... "); if (persistenceService.cleanupItem(itemName, force)) { console.println("done."); 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/internal/db/JdbcBaseDAO.java similarity index 86% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcBaseDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAO.java index 393635d96..b8a68a26b 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/internal/db/JdbcBaseDAO.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.math.BigDecimal; import java.time.Instant; @@ -32,6 +32,7 @@ import javax.measure.Unit; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.GroupItem; import org.openhab.core.items.Item; import org.openhab.core.library.items.ColorItem; @@ -55,11 +56,12 @@ import org.openhab.core.persistence.FilterCriteria.Ordering; import org.openhab.core.persistence.HistoricItem; import org.openhab.core.types.State; import org.openhab.core.types.TypeParser; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.dto.JdbcHistoricItem; -import org.openhab.persistence.jdbc.utils.DbMetaData; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.dto.JdbcHistoricItem; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.DbMetaData; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -248,131 +250,196 @@ public class JdbcBaseDAO { /************** * ITEMS DAOs * **************/ - public @Nullable Integer doPingDB() { - final @Nullable Integer result = Yank.queryScalar(sqlPingDB, Integer.class, null); - return result; + public @Nullable Integer doPingDB() throws JdbcSQLException { + try { + final @Nullable Integer result = Yank.queryScalar(sqlPingDB, Integer.class, null); + return result; + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public @Nullable String doGetDB() { - final @Nullable String result = Yank.queryScalar(sqlGetDB, String.class, null); - return result; + public @Nullable String doGetDB() throws JdbcSQLException { + try { + final @Nullable String result = Yank.queryScalar(sqlGetDB, String.class, null); + return result; + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public boolean doIfTableExists(ItemsVO vo) { + public boolean doIfTableExists(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" }, new String[] { vo.getItemsManageTable() }); logger.debug("JDBC::doIfTableExists sql={}", sql); - final @Nullable String result = Yank.queryScalar(sql, String.class, null); - return Objects.nonNull(result); + try { + final @Nullable String result = Yank.queryScalar(sql, String.class, null); + return Objects.nonNull(result); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public boolean doIfTableExists(String tableName) { + public boolean doIfTableExists(String tableName) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" }, new String[] { tableName }); logger.debug("JDBC::doIfTableExists sql={}", sql); - final @Nullable String result = Yank.queryScalar(sql, String.class, null); - return Objects.nonNull(result); + try { + final @Nullable String result = Yank.queryScalar(sql, String.class, null); + return Objects.nonNull(result); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public Long doCreateNewEntryInItemsTable(ItemsVO vo) { + public Long doCreateNewEntryInItemsTable(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateNewEntryInItemsTable, new String[] { "#itemsManageTable#", "#itemname#" }, new String[] { vo.getItemsManageTable(), vo.getItemName() }); logger.debug("JDBC::doCreateNewEntryInItemsTable sql={}", sql); - return Yank.insert(sql, null); + try { + return Yank.insert(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) { + public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemsTableIfNot, new String[] { "#itemsManageTable#", "#colname#", "#coltype#" }, new String[] { vo.getItemsManageTable(), vo.getColname(), vo.getColtype() }); logger.debug("JDBC::doCreateItemsTableIfNot sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } return vo; } - public ItemsVO doDropItemsTableIfExists(ItemsVO vo) { + public ItemsVO doDropItemsTableIfExists(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlDropItemsTableIfExists, new String[] { "#itemsManageTable#" }, new String[] { vo.getItemsManageTable() }); logger.debug("JDBC::doDropItemsTableIfExists sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } return vo; } - public void doDropTable(String tableName) { + public void doDropTable(String tableName) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlDropTable, new String[] { "#tableName#" }, new String[] { tableName }); logger.debug("JDBC::doDropTable sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public void doDeleteItemsEntry(ItemsVO vo) { + public void doDeleteItemsEntry(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlDeleteItemsEntry, new String[] { "#itemsManageTable#", "#itemname#" }, new String[] { vo.getItemsManageTable(), vo.getItemName() }); logger.debug("JDBC::doDeleteItemsEntry sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public List doGetItemIDTableNames(ItemsVO vo) { + public List doGetItemIDTableNames(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlGetItemIDTableNames, new String[] { "#itemsManageTable#" }, new String[] { vo.getItemsManageTable() }); logger.debug("JDBC::doGetItemIDTableNames sql={}", sql); - return Yank.queryBeanList(sql, ItemsVO.class, null); + try { + return Yank.queryBeanList(sql, ItemsVO.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public List doGetItemTables(ItemsVO vo) { + public List doGetItemTables(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlGetItemTables, new String[] { "#jdbcUriDatabaseName#", "#itemsManageTable#" }, new String[] { vo.getJdbcUriDatabaseName(), vo.getItemsManageTable() }); logger.debug("JDBC::doGetItemTables sql={}", sql); - return Yank.queryBeanList(sql, ItemsVO.class, null); + try { + return Yank.queryBeanList(sql, ItemsVO.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* * ITEM DAOs * *************/ - public void doUpdateItemTableNames(List vol) { + public void doUpdateItemTableNames(List vol) throws JdbcSQLException { logger.debug("JDBC::doUpdateItemTableNames vol.size = {}", vol.size()); for (ItemVO itemTable : vol) { String sql = updateItemTableNamesProvider(itemTable); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } } - public void doCreateItemTable(ItemVO vo) { + public void doCreateItemTable(ItemVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemTable, new String[] { "#tableName#", "#dbType#", "#tablePrimaryKey#" }, new String[] { vo.getTableName(), vo.getDbType(), sqlTypes.get("tablePrimaryKey") }); logger.debug("JDBC::doCreateItemTable sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue(), storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public void doStoreItemValue(Item item, State itemState, ItemVO vo, ZonedDateTime date) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo, ZonedDateTime date) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); 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 = { timestamp, storedVO.getValue(), storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} timestamp={} value='{}'", sql, timestamp, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } public List doGetHistItemFilterQuery(Item item, FilterCriteria filter, int numberDecimalcount, - String table, String name, ZoneId timeZone) { + String table, String name, ZoneId timeZone) throws JdbcSQLException { String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone); logger.debug("JDBC::doGetHistItemFilterQuery sql={}", sql); - List m = Yank.queryObjectArrays(sql, null); + List m; + try { + m = Yank.queryObjectArrays(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } if (m == null) { logger.debug("JDBC::doGetHistItemFilterQuery Query failed. Returning an empty list."); return List.of(); @@ -385,18 +452,26 @@ public class JdbcBaseDAO { .collect(Collectors. toList()); } - public void doDeleteItemValues(FilterCriteria filter, String table, ZoneId timeZone) { + public void doDeleteItemValues(FilterCriteria filter, String table, ZoneId timeZone) throws JdbcSQLException { String sql = histItemFilterDeleteProvider(filter, table, timeZone); logger.debug("JDBC::doDeleteItemValues sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } - public long doGetRowCount(String tableName) { + public long doGetRowCount(String tableName) throws JdbcSQLException { final String sql = StringUtilsExt.replaceArrayMerge(sqlGetRowCount, new String[] { "#tableName#" }, new String[] { tableName }); logger.debug("JDBC::doGetRowCount sql={}", sql); - final @Nullable Long result = Yank.queryScalar(sql, Long.class, null); - return Objects.requireNonNullElse(result, 0L); + try { + final @Nullable Long result = Yank.queryScalar(sql, Long.class, null); + return Objects.requireNonNullElse(result, 0L); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* 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/internal/db/JdbcDerbyDAO.java similarity index 83% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcDerbyDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcDerbyDAO.java index f0d12bff0..818fca918 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/internal/db/JdbcDerbyDAO.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.time.ZoneId; import java.util.List; @@ -23,16 +23,18 @@ import javax.measure.Unit; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.Item; import org.openhab.core.library.items.NumberItem; import org.openhab.core.persistence.FilterCriteria; import org.openhab.core.persistence.FilterCriteria.Ordering; import org.openhab.core.persistence.HistoricItem; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.dto.JdbcHistoricItem; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.dto.JdbcHistoricItem; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -106,39 +108,53 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { * ITEMS DAOs * **************/ @Override - public @Nullable Integer doPingDB() { - return Yank.queryScalar(sqlPingDB, Integer.class, null); + public @Nullable Integer doPingDB() throws JdbcSQLException { + try { + return Yank.queryScalar(sqlPingDB, Integer.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public boolean doIfTableExists(ItemsVO vo) { + public boolean doIfTableExists(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlIfTableExists, new String[] { "#searchTable#" }, new String[] { vo.getItemsManageTable().toUpperCase() }); logger.debug("JDBC::doIfTableExists sql={}", sql); - final @Nullable String result = Yank.queryScalar(sql, String.class, null); - return Objects.nonNull(result); + try { + final @Nullable String result = Yank.queryScalar(sql, String.class, null); + return Objects.nonNull(result); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public Long doCreateNewEntryInItemsTable(ItemsVO vo) { + public Long doCreateNewEntryInItemsTable(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateNewEntryInItemsTable, new String[] { "#itemsManageTable#", "#itemname#" }, new String[] { vo.getItemsManageTable().toUpperCase(), vo.getItemName() }); logger.debug("JDBC::doCreateNewEntryInItemsTable sql={}", sql); - return Yank.insert(sql, null); + try { + return Yank.insert(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) { - // boolean tableExists = Yank.queryScalar(SQL_IF_TABLE_EXISTS.replace("#searchTable#", - // vo.getItemsManageTable().toUpperCase()), String.class, null) == null; + public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { boolean tableExists = doIfTableExists(vo); if (!tableExists) { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemsTableIfNot, new String[] { "#itemsManageTable#", "#colname#", "#coltype#" }, new String[] { vo.getItemsManageTable().toUpperCase(), vo.getColname(), vo.getColtype() }); logger.debug("JDBC::doCreateItemsTableIfNot tableExists={} therefore sql={}", tableExists, sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } else { logger.debug("JDBC::doCreateItemsTableIfNot tableExists={}, did not CREATE TABLE", tableExists); } @@ -149,15 +165,19 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { * ITEM DAOs * *************/ @Override - public void doCreateItemTable(ItemVO vo) { + public void doCreateItemTable(ItemVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemTable, new String[] { "#tableName#", "#dbType#", "#tablePrimaryKey#" }, new String[] { vo.getTableName(), vo.getDbType(), sqlTypes.get("tablePrimaryKey") }); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, @@ -165,14 +185,23 @@ public class JdbcDerbyDAO extends JdbcBaseDAO { sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override public List doGetHistItemFilterQuery(Item item, FilterCriteria filter, int numberDecimalcount, - String table, String name, ZoneId timeZone) { + String table, String name, ZoneId timeZone) throws JdbcSQLException { String sql = histItemFilterQueryProvider(filter, numberDecimalcount, table, name, timeZone); - List m = Yank.queryObjectArrays(sql, null); + List m; + try { + m = Yank.queryObjectArrays(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } logger.debug("JDBC::doGetHistItemFilterQuery got Array length={}", m.size()); // we already retrieve the unit here once as it is a very costly operation String itemName = item.getName(); 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/internal/db/JdbcH2DAO.java similarity index 87% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcH2DAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcH2DAO.java index 140f53667..2bbdcf7eb 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/internal/db/JdbcH2DAO.java @@ -10,14 +10,16 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import org.eclipse.jdt.annotation.NonNullByDefault; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.Item; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -77,14 +79,18 @@ public class JdbcH2DAO extends JdbcBaseDAO { * ITEM DAOs * *************/ @Override - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /**************************** 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/internal/db/JdbcHsqldbDAO.java similarity index 80% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcHsqldbDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcHsqldbDAO.java index fe9eb8f78..35160585b 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/internal/db/JdbcHsqldbDAO.java @@ -10,16 +10,18 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.Item; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,34 +85,46 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO { * ITEMS DAOs * **************/ @Override - public @Nullable Integer doPingDB() { - return Yank.queryScalar(sqlPingDB, Integer.class, null); + public @Nullable Integer doPingDB() throws JdbcSQLException { + try { + return Yank.queryScalar(sqlPingDB, Integer.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) { + public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemsTableIfNot, new String[] { "#itemsManageTable#", "#colname#", "#coltype#", "#itemsManageTable#" }, new String[] { vo.getItemsManageTable(), vo.getColname(), vo.getColtype(), vo.getItemsManageTable() }); logger.debug("JDBC::doCreateItemsTableIfNot sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } return vo; } @Override - public Long doCreateNewEntryInItemsTable(ItemsVO vo) { + public Long doCreateNewEntryInItemsTable(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateNewEntryInItemsTable, new String[] { "#itemsManageTable#", "#itemname#" }, new String[] { vo.getItemsManageTable(), vo.getItemName() }); logger.debug("JDBC::doCreateNewEntryInItemsTable sql={}", sql); - return Yank.insert(sql, null); + try { + return Yank.insert(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* * ITEM DAOs * *************/ @Override - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tableName#", "#tablePrimaryValue#" }, @@ -118,7 +132,11 @@ public class JdbcHsqldbDAO extends JdbcBaseDAO { sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /**************************** 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/internal/db/JdbcMariadbDAO.java similarity index 87% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMariadbDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMariadbDAO.java index 740cc0f73..f793270af 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/internal/db/JdbcMariadbDAO.java @@ -10,14 +10,16 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.util.Objects; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; -import org.openhab.persistence.jdbc.utils.DbMetaData; +import org.knowm.yank.exceptions.YankSQLException; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.DbMetaData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -95,9 +97,13 @@ public class JdbcMariadbDAO extends JdbcBaseDAO { * ITEMS DAOs * **************/ @Override - public @Nullable Integer doPingDB() { - final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); - return Objects.nonNull(result) ? result.intValue() : null; + public @Nullable Integer doPingDB() throws JdbcSQLException { + try { + final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); + return Objects.nonNull(result) ? result.intValue() : null; + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* 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/internal/db/JdbcMysqlDAO.java similarity index 87% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcMysqlDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcMysqlDAO.java index 361b17799..dc83b69e5 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/internal/db/JdbcMysqlDAO.java @@ -10,14 +10,16 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.util.Objects; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; -import org.openhab.persistence.jdbc.utils.DbMetaData; +import org.knowm.yank.exceptions.YankSQLException; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.DbMetaData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -98,9 +100,13 @@ public class JdbcMysqlDAO extends JdbcBaseDAO { * ITEMS DAOs * **************/ @Override - public @Nullable Integer doPingDB() { - final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); - return Objects.nonNull(result) ? result.intValue() : null; + public @Nullable Integer doPingDB() throws JdbcSQLException { + try { + final @Nullable Long result = Yank.queryScalar(sqlPingDB, Long.class, null); + return Objects.nonNull(result) ? result.intValue() : null; + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* 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/internal/db/JdbcPostgresqlDAO.java similarity index 87% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcPostgresqlDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcPostgresqlDAO.java index 974fd8fd0..7a8ab72e8 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/internal/db/JdbcPostgresqlDAO.java @@ -10,20 +10,22 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.time.ZoneId; import java.util.List; import org.eclipse.jdt.annotation.NonNullByDefault; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.Item; import org.openhab.core.persistence.FilterCriteria; import org.openhab.core.persistence.FilterCriteria.Ordering; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -108,45 +110,61 @@ public class JdbcPostgresqlDAO extends JdbcBaseDAO { * ITEMS DAOs * **************/ @Override - public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) { + public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemsTableIfNot, new String[] { "#itemsManageTable#", "#colname#", "#coltype#", "#itemsManageTable#" }, new String[] { vo.getItemsManageTable(), vo.getColname(), vo.getColtype(), vo.getItemsManageTable() }); logger.debug("JDBC::doCreateItemsTableIfNot sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } return vo; } @Override - public Long doCreateNewEntryInItemsTable(ItemsVO vo) { + public Long doCreateNewEntryInItemsTable(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateNewEntryInItemsTable, new String[] { "#itemsManageTable#", "#itemname#" }, new String[] { vo.getItemsManageTable(), vo.getItemName() }); logger.debug("JDBC::doCreateNewEntryInItemsTable sql={}", sql); - return Yank.insert(sql, null); + try { + return Yank.insert(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public List doGetItemTables(ItemsVO vo) { + public List doGetItemTables(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(this.sqlGetItemTables, new String[] { "#itemsManageTable#", "#itemsManageTable#" }, new String[] { vo.getItemsManageTable(), vo.getItemsManageTable() }); this.logger.debug("JDBC::doGetItemTables sql={}", sql); - return Yank.queryBeanList(sql, ItemsVO.class, null); + try { + return Yank.queryBeanList(sql, ItemsVO.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /************* * ITEM DAOs * *************/ @Override - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /**************************** 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/internal/db/JdbcSqliteDAO.java similarity index 80% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcSqliteDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcSqliteDAO.java index 4559e1b18..fc2888e79 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/internal/db/JdbcSqliteDAO.java @@ -10,16 +10,18 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.knowm.yank.Yank; +import org.knowm.yank.exceptions.YankSQLException; import org.openhab.core.items.Item; import org.openhab.core.types.State; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.dto.ItemsVO; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemsVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,17 +81,25 @@ public class JdbcSqliteDAO extends JdbcBaseDAO { **************/ @Override - public @Nullable String doGetDB() { - return Yank.queryColumn(sqlGetDB, "file", String.class, null).get(0); + public @Nullable String doGetDB() throws JdbcSQLException { + try { + return Yank.queryColumn(sqlGetDB, "file", String.class, null).get(0); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } @Override - public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) { + public ItemsVO doCreateItemsTableIfNot(ItemsVO vo) throws JdbcSQLException { String sql = StringUtilsExt.replaceArrayMerge(sqlCreateItemsTableIfNot, new String[] { "#itemsManageTable#", "#colname#", "#coltype#" }, new String[] { vo.getItemsManageTable(), vo.getColname(), vo.getColtype() }); logger.debug("JDBC::doCreateItemsTableIfNot sql={}", sql); - Yank.execute(sql, null); + try { + Yank.execute(sql, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } return vo; } @@ -97,14 +107,18 @@ public class JdbcSqliteDAO extends JdbcBaseDAO { * ITEM DAOs * *************/ @Override - public void doStoreItemValue(Item item, State itemState, ItemVO vo) { + public void doStoreItemValue(Item item, State itemState, ItemVO vo) throws JdbcSQLException { ItemVO storedVO = storeItemValueProvider(item, itemState, vo); String sql = StringUtilsExt.replaceArrayMerge(sqlInsertItemValue, new String[] { "#tableName#", "#dbType#", "#tablePrimaryValue#" }, new String[] { storedVO.getTableName(), storedVO.getDbType(), sqlTypes.get("tablePrimaryValue") }); Object[] params = { storedVO.getValue() }; logger.debug("JDBC::doStoreItemValue sql={} value='{}'", sql, storedVO.getValue()); - Yank.execute(sql, params); + try { + Yank.execute(sql, params); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } /**************************** diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcTimescaledbDAO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcTimescaledbDAO.java similarity index 77% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcTimescaledbDAO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcTimescaledbDAO.java index c27503274..f81de85c8 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/db/JdbcTimescaledbDAO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/db/JdbcTimescaledbDAO.java @@ -10,14 +10,16 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import java.util.Properties; import org.eclipse.jdt.annotation.NonNullByDefault; import org.knowm.yank.Yank; -import org.openhab.persistence.jdbc.dto.ItemVO; -import org.openhab.persistence.jdbc.utils.StringUtilsExt; +import org.knowm.yank.exceptions.YankSQLException; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.exceptions.JdbcSQLException; +import org.openhab.persistence.jdbc.internal.utils.StringUtilsExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,11 +47,15 @@ public class JdbcTimescaledbDAO extends JdbcPostgresqlDAO { } @Override - public void doCreateItemTable(ItemVO vo) { + public void doCreateItemTable(ItemVO vo) throws JdbcSQLException { super.doCreateItemTable(vo); String sql = StringUtilsExt.replaceArrayMerge(this.sqlCreateHypertable, new String[] { "#tableName#" }, new String[] { vo.getTableName() }); this.logger.debug("JDBC::doCreateItemTable sql={}", sql); - Yank.queryScalar(sql, Boolean.class, null); + try { + Yank.queryScalar(sql, Boolean.class, null); + } catch (YankSQLException e) { + throw new JdbcSQLException(e); + } } } diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemVO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemVO.java similarity index 98% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemVO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemVO.java index af4a03ba3..2fca6ef69 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemVO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemVO.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.dto; +package org.openhab.persistence.jdbc.internal.dto; import java.io.Serializable; import java.util.Date; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemsVO.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemsVO.java similarity index 98% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemsVO.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemsVO.java index 9f8f7da3c..8bc23e524 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/ItemsVO.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/ItemsVO.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.dto; +package org.openhab.persistence.jdbc.internal.dto; import java.io.Serializable; import java.util.Objects; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcHistoricItem.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcHistoricItem.java similarity index 96% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcHistoricItem.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcHistoricItem.java index be1a2e32c..a9ae3eb74 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcHistoricItem.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcHistoricItem.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.dto; +package org.openhab.persistence.jdbc.internal.dto; import java.time.ZonedDateTime; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcPersistenceItemInfo.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcPersistenceItemInfo.java similarity index 96% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcPersistenceItemInfo.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcPersistenceItemInfo.java index 0e91c66b1..bc71959c4 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/dto/JdbcPersistenceItemInfo.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/dto/JdbcPersistenceItemInfo.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.dto; +package org.openhab.persistence.jdbc.internal.dto; import java.util.Date; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcException.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcException.java new file mode 100644 index 000000000..3647cdbdb --- /dev/null +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcException.java @@ -0,0 +1,34 @@ +/** + * 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 + */ +package org.openhab.persistence.jdbc.internal.exceptions; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Base class for JDBC exceptions. + * + * @author Jacob Laursen - Initial contribution + */ +@NonNullByDefault +public class JdbcException extends Exception { + + private static final long serialVersionUID = 1911437557128995424L; + + public JdbcException(String message) { + super(message); + } + + public JdbcException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcSQLException.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcSQLException.java new file mode 100644 index 000000000..6b8e4a697 --- /dev/null +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/exceptions/JdbcSQLException.java @@ -0,0 +1,33 @@ +/** + * 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 + */ +package org.openhab.persistence.jdbc.internal.exceptions; + +import java.util.Objects; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.knowm.yank.exceptions.YankSQLException; + +/** + * This exception wraps a {@link YankSQLException}. + * + * @author Jacob Laursen - Initial contribution + */ +@NonNullByDefault +public class JdbcSQLException extends JdbcException { + + private static final long serialVersionUID = 4562191548585905000L; + + public JdbcSQLException(YankSQLException sqlException) { + super(Objects.requireNonNull(sqlException.getMessage())); + } +} diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/DbMetaData.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/DbMetaData.java similarity index 97% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/DbMetaData.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/DbMetaData.java index b15e5b724..4ac2a08de 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/DbMetaData.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/DbMetaData.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.utils; +package org.openhab.persistence.jdbc.internal.utils; import java.sql.DatabaseMetaData; import java.sql.SQLException; @@ -42,7 +42,6 @@ public class DbMetaData { public DbMetaData() { HikariDataSource h = Yank.getDefaultConnectionPool(); - // HikariDataSource h = Yank.getDataSource(); DatabaseMetaData meta; try { diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/MovingAverage.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/MovingAverage.java similarity index 97% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/MovingAverage.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/MovingAverage.java index a8d5ae021..41a958931 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/MovingAverage.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/MovingAverage.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.utils; +package org.openhab.persistence.jdbc.internal.utils; import java.math.BigDecimal; import java.math.RoundingMode; diff --git a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/StringUtilsExt.java b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/StringUtilsExt.java similarity index 99% rename from bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/StringUtilsExt.java rename to bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/StringUtilsExt.java index 1894126da..262224a7d 100644 --- a/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/utils/StringUtilsExt.java +++ b/bundles/org.openhab.persistence.jdbc/src/main/java/org/openhab/persistence/jdbc/internal/utils/StringUtilsExt.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.utils; +package org.openhab.persistence.jdbc.internal.utils; import java.net.URI; import java.net.URISyntaxException; diff --git a/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/NamingStrategyTest.java b/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/NamingStrategyTest.java index 257bf97ac..6639459fa 100644 --- a/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/NamingStrategyTest.java +++ b/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/NamingStrategyTest.java @@ -30,7 +30,7 @@ import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; -import org.openhab.persistence.jdbc.dto.ItemVO; +import org.openhab.persistence.jdbc.internal.dto.ItemVO; import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Level; diff --git a/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/db/JdbcBaseDAOTest.java b/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAOTest.java similarity index 99% rename from bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/db/JdbcBaseDAOTest.java rename to bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAOTest.java index dfa4d162a..eb3528e99 100644 --- a/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/db/JdbcBaseDAOTest.java +++ b/bundles/org.openhab.persistence.jdbc/src/test/java/org/openhab/persistence/jdbc/internal/db/JdbcBaseDAOTest.java @@ -10,7 +10,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -package org.openhab.persistence.jdbc.db; +package org.openhab.persistence.jdbc.internal.db; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat;