Skip to content

Commit

Permalink
Added H2 database connection type
Browse files Browse the repository at this point in the history
  • Loading branch information
Mateusz Witkowski committed Nov 22, 2024
1 parent 3fd8816 commit 4bb1b81
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.logchange.hofund.connection.spring.datasource;

import dev.logchange.hofund.connection.HofundDatabaseConnection;
import dev.logchange.hofund.connection.spring.datasource.h2.H2Connection;
import dev.logchange.hofund.connection.spring.datasource.oracle.OracleConnection;
import dev.logchange.hofund.connection.spring.datasource.postgresql.PostgreSQLConnection;
import lombok.extern.slf4j.Slf4j;
Expand All @@ -22,6 +23,7 @@ public static HofundDatabaseConnection of(DataSource dataSource) {
return switch (dbType) {
case POSTGRESQL -> new PostgreSQLConnection(metaData, dataSource).toHofundConnection();
case ORACLE -> new OracleConnection(metaData, dataSource).toHofundConnection();
case H2 -> new H2Connection(metaData, dataSource).toHofundConnection();
default -> {
log.warn("Currently there is no support for DataSource: {} please create issue at: https://github.com/logchange/hofund", productName);
yield null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
public enum DatabaseProductName {
POSTGRESQL("PostgreSQL"),
ORACLE("Oracle"),
H2("H2"),
NOT_RECOGNIZED("Not recognized");

private final String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package dev.logchange.hofund.connection.spring.datasource.h2;

import dev.logchange.hofund.connection.spring.datasource.DatasourceConnection;
import lombok.extern.slf4j.Slf4j;

import javax.sql.DataSource;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Locale;

@Slf4j
public class H2Connection extends DatasourceConnection {

private static final String TEST_QUERY = "SELECT 1";

private String target;
private String url;
private String dbVendor;

public H2Connection(DatabaseMetaData metaData, DataSource dataSource) {
super(dataSource, TEST_QUERY);
try {
this.url = metaData.getURL();
int slashIndex = url.lastIndexOf('/');
int to = url.length();
if (url.lastIndexOf("?") != -1) {
to = url.lastIndexOf("?");
}
this.target = url.substring(slashIndex + 1, to).toLowerCase(Locale.ROOT);
this.dbVendor = metaData.getDatabaseProductName();
log.info("H2 info: target: {}, url: {}, dbVendor: {}", target, url, dbVendor);
} catch (SQLException e) {
log.warn("Error getting db information", e);
this.target = "ERROR";
this.url = "ERROR";
this.dbVendor = "ERROR";
}
}

@Override
protected String getTarget() {
return target;
}

@Override
protected String getUrl() {
return url;
}

@Override
protected String getDbVendor() {
return dbVendor;
}

}

0 comments on commit 4bb1b81

Please sign in to comment.