2 * Copyright (c) 2010-2021 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.persistence.jdbc.utils;
15 import java.sql.DatabaseMetaData;
16 import java.sql.SQLException;
18 import org.knowm.yank.Yank;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 import com.zaxxer.hikari.HikariDataSource;
27 * @author Helmut Lehmeyer - Initial contribution
29 public class DbMetaData {
31 private final Logger logger = LoggerFactory.getLogger(DbMetaData.class);
33 private int dbMajorVersion;
34 private int dbMinorVersion;
35 private int driverMajorVersion;
36 private int driverMinorVersion;
37 private String dbProductName;
38 private String dbProductVersion;
41 HikariDataSource h = Yank.getDefaultConnectionPool();
42 // HikariDataSource h = Yank.getDataSource();
44 DatabaseMetaData meta;
46 meta = h.getConnection().getMetaData();
48 // Oracle (and some other vendors) do not support
49 // some the following methods; therefore, we need
50 // to use try-catch block.
52 dbMajorVersion = meta.getDatabaseMajorVersion();
53 logger.debug("dbMajorVersion = '{}'", dbMajorVersion);
54 } catch (Exception e) {
55 logger.error("Asking for 'dbMajorVersion' is unsupported: '{}'", e.getMessage());
59 dbMinorVersion = meta.getDatabaseMinorVersion();
60 logger.debug("dbMinorVersion = '{}'", dbMinorVersion);
61 } catch (Exception e) {
62 logger.error("Asking for 'dbMinorVersion' is unsupported: '{}'", e.getMessage());
65 driverMajorVersion = meta.getDriverMajorVersion();
66 logger.debug("driverMajorVersion = '{}'", driverMajorVersion);
68 driverMinorVersion = meta.getDriverMinorVersion();
69 logger.debug("driverMinorVersion = '{}'", driverMinorVersion);
71 dbProductName = meta.getDatabaseProductName();
72 logger.debug("dbProductName = '{}'", dbProductName);
74 dbProductVersion = meta.getDatabaseProductVersion();
75 logger.debug("dbProductVersion = '{}'", dbProductVersion);
76 } catch (SQLException e1) {
77 logger.error("Asking for 'dbMajorVersion' seems to be unsupported: '{}'", e1.getMessage());
81 public int getDbMajorVersion() {
82 return dbMajorVersion;
85 public int getDbMinorVersion() {
86 return dbMinorVersion;
89 public boolean isDbVersionGreater(int major, int minor) {
90 if (dbMajorVersion > major) {
92 } else if (dbMajorVersion == major) {
93 if (dbMinorVersion > minor) {
100 public int getDriverMajorVersion() {
101 return driverMajorVersion;
104 public int getDriverMinorVersion() {
105 return driverMinorVersion;
108 public boolean isDriverVersionGreater(int major, int minor) {
109 if (major > driverMajorVersion) {
111 } else if (major == driverMajorVersion) {
112 if (minor > driverMinorVersion) {
119 public String getDbProductName() {
120 return dbProductName;
123 public String getDbProductVersion() {
124 return dbProductVersion;