mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
CE-936 - Add methods getJdbcDriverClassName, getJdbcUrl
This commit is contained in:
@ -41,10 +41,41 @@ public class ConnectionManager
|
||||
public Connection getConnection(RDBMSBackendMetaData backend) throws SQLException
|
||||
{
|
||||
String jdbcURL;
|
||||
String jdbcURL = getJdbcUrl(backend);
|
||||
return DriverManager.getConnection(jdbcURL, backend.getUsername(), backend.getPassword());
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static String getJdbcDriverClassName(RDBMSBackendMetaData backend)
|
||||
{
|
||||
if(StringUtils.hasContent(backend.getJdbcDriverClassName()))
|
||||
{
|
||||
return backend.getJdbcDriverClassName();
|
||||
}
|
||||
|
||||
return switch(backend.getVendor())
|
||||
{
|
||||
case "mysql", "aurora" -> "com.mysql.cj.jdbc.Driver";
|
||||
case "h2" -> "org.h2.Driver";
|
||||
default -> throw (new IllegalStateException("We do not know what jdbc driver to use for vendor name [" + backend.getVendor() + "]. Try setting jdbcDriverClassName in your backend meta data."));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public static String getJdbcUrl(RDBMSBackendMetaData backend)
|
||||
{
|
||||
if(StringUtils.hasContent(backend.getJdbcUrl()))
|
||||
{
|
||||
jdbcURL = backend.getJdbcUrl();
|
||||
return backend.getJdbcUrl();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -60,6 +91,16 @@ public class ConnectionManager
|
||||
}
|
||||
|
||||
return DriverManager.getConnection(jdbcURL, backend.getUsername(), backend.getPassword());
|
||||
|
||||
return switch(backend.getVendor())
|
||||
{
|
||||
// TODO aws-mysql-jdbc driver not working when running on AWS
|
||||
// jdbcURL = "jdbc:mysql:aws://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=CONVERT_TO_NULL";
|
||||
case "aurora" -> "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useSSL=false";
|
||||
case "mysql" -> "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull";
|
||||
case "h2" -> "jdbc:h2:" + backend.getHostName() + ":" + backend.getDatabaseName() + ";MODE=MySQL;DB_CLOSE_DELAY=-1";
|
||||
default -> throw new IllegalArgumentException("Unsupported rdbms backend vendor: " + backend.getVendor());
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ public class RDBMSBackendMetaData extends QBackendMetaData
|
||||
private String password;
|
||||
|
||||
private String jdbcUrl;
|
||||
private String jdbcDriverClassName;
|
||||
|
||||
|
||||
|
||||
@ -314,4 +315,35 @@ public class RDBMSBackendMetaData extends QBackendMetaData
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Getter for jdbcDriverClassName
|
||||
*******************************************************************************/
|
||||
public String getJdbcDriverClassName()
|
||||
{
|
||||
return (this.jdbcDriverClassName);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Setter for jdbcDriverClassName
|
||||
*******************************************************************************/
|
||||
public void setJdbcDriverClassName(String jdbcDriverClassName)
|
||||
{
|
||||
this.jdbcDriverClassName = jdbcDriverClassName;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Fluent setter for jdbcDriverClassName
|
||||
*******************************************************************************/
|
||||
public RDBMSBackendMetaData withJdbcDriverClassName(String jdbcDriverClassName)
|
||||
{
|
||||
this.jdbcDriverClassName = jdbcDriverClassName;
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user