From 703b7cfe76b49338339e8bc4b17144246ab95338 Mon Sep 17 00:00:00 2001 From: Emmanuel Lampe Date: Wed, 27 Mar 2024 22:06:55 +0100 Subject: [PATCH] refactor: use beecp --- build.gradle | 14 +++++++++ .../simplyrank/database/sql/MySqlClient.java | 30 +++++++++---------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/build.gradle b/build.gradle index 19dfab6..fa739e2 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ plugins { id 'java' id 'jacoco' id 'com.github.kt3k.coveralls' version '2.12.2' + id "com.github.johnrengelman.shadow" version "8.1.1" } group 'net.simplyvanilla' @@ -31,6 +32,8 @@ dependencies { compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT' compileOnly 'io.github.miniplaceholders:miniplaceholders-api:2.2.3' + implementation 'com.github.chris2018998:beecp:4.0.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2' testImplementation 'com.github.seeseemelk:MockBukkit-v1.20:3.78.0' @@ -42,6 +45,17 @@ test { useJUnitPlatform() } +tasks { + shadowJar { + archiveClassifier.set('') + relocate('org.stone.beecp', 'net.simplyvanilla.dependencies.beecp') + relocate('org.stone.tools', 'net.simplyvanilla.dependencies.tools') + } + build { + dependsOn shadowJar + } +} + jacoco { toolVersion = '0.8.11' // specify the desired version } diff --git a/src/main/java/net/simplyvanilla/simplyrank/database/sql/MySqlClient.java b/src/main/java/net/simplyvanilla/simplyrank/database/sql/MySqlClient.java index e0c4a47..2edc127 100644 --- a/src/main/java/net/simplyvanilla/simplyrank/database/sql/MySqlClient.java +++ b/src/main/java/net/simplyvanilla/simplyrank/database/sql/MySqlClient.java @@ -1,6 +1,8 @@ package net.simplyvanilla.simplyrank.database.sql; import net.simplyvanilla.simplyrank.SimplyRankPlugin; +import org.stone.beecp.BeeDataSource; +import org.stone.beecp.BeeDataSourceConfig; import java.sql.*; @@ -13,31 +15,27 @@ public class MySqlClient { private final String username; private final String password; - private Connection connection; + private BeeDataSource dataSource; public MySqlClient(String url, String user, String password) { this.url = url; this.username = user; this.password = password; - connect(); - initTables(); + this.connect(); + this.initTables(); } public void connect() { - try { - connection = DriverManager.getConnection(url, username, password); - } catch (SQLException e) { - SimplyRankPlugin.getInstance().getSLF4JLogger().error("Could not connect to MySQL database", e); - } + var config = new BeeDataSourceConfig(); + config.setJdbcUrl(this.url); + config.setUsername(this.username); + config.setPassword(this.password); + this.dataSource = new BeeDataSource(config); } public void close() { - try { - if (connection != null) connection.close(); - } catch (SQLException e) { - SimplyRankPlugin.getInstance().getSLF4JLogger().error("Could not close MySQL connection", e); - } + this.dataSource.close(); } public void update(PreparedStatement statement) throws SQLException { @@ -55,7 +53,7 @@ public ResultSet query(PreparedStatement statement) throws SQLException { } private void executeRawStatement(String cmd) throws SQLException { - try (Statement st = connection.createStatement()) { + try (Connection connection = this.dataSource.getConnection(); Statement st = connection.createStatement()) { st.execute(cmd); } } @@ -127,7 +125,9 @@ PRIMARY KEY (`id`), } public PreparedStatement prepareStatement(String qry) throws SQLException { - return connection.prepareStatement(qry); + try(Connection connection = this.dataSource.getConnection()) { + return connection.prepareStatement(qry); + } } public PreparedStatement prepareStatement(String qry, String... parameters) throws SQLException {