From 9509d3e97d423f4135b8c2fd8714a1a6cf659b06 Mon Sep 17 00:00:00 2001 From: NightMirror Date: Fri, 17 Mar 2023 15:24:08 +0300 Subject: [PATCH] Added HikariCP, 4.2 -> 5 --- pom.xml | 9 ++++++- .../wlbytime/shared/database/Database.java | 25 +++++++++++++------ .../shared/placeholders/PlaceholderHook.java | 2 +- src/main/resources/plugin.yml | 2 +- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index 306ad0b..17c91b4 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ ru.nightmirror WhitelistByTime - 4.1 + 5.0 @@ -57,6 +57,13 @@ 2.11.2 provided + + + com.zaxxer + HikariCP + 3.4.5 + compile + diff --git a/src/main/java/ru/nightmirror/wlbytime/shared/database/Database.java b/src/main/java/ru/nightmirror/wlbytime/shared/database/Database.java index 493bfb1..82f2ee1 100644 --- a/src/main/java/ru/nightmirror/wlbytime/shared/database/Database.java +++ b/src/main/java/ru/nightmirror/wlbytime/shared/database/Database.java @@ -1,5 +1,7 @@ package ru.nightmirror.wlbytime.shared.database; +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import ru.nightmirror.wlbytime.interfaces.database.IDatabase; @@ -9,9 +11,9 @@ import ru.nightmirror.wlbytime.shared.api.events.PlayerAddedToWhitelistEvent; import ru.nightmirror.wlbytime.shared.api.events.PlayerRemovedFromWhitelistEvent; +import javax.annotation.Nullable; import java.io.File; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; @@ -20,8 +22,8 @@ import java.util.logging.Logger; public class Database implements IDatabase { - private Boolean useUserAndPassword; - private String conStr; + private HikariConfig config; + private HikariDataSource source; private final WhitelistByTime plugin; private final static Logger LOG = Logger.getLogger("WhitelistByTime"); @@ -31,8 +33,13 @@ public Database(WhitelistByTime plugin) { } private void enable() { - conStr = getStringSource(); - useUserAndPassword = getConfigBoolean("use-user-and-password", false); + config = new HikariConfig(); + config.setJdbcUrl(getStringURL()); + + if (getConfigBoolean("use-user-and-password", false)) { + config.setUsername(getConfigString("user")); + config.setPassword(getConfigString("password")); + } createTable(); } @@ -59,7 +66,7 @@ private void createTable() { } } - private String getStringSource() { + private String getStringURL() { final String type = getConfigString("type", "sqlite"); if (type.equalsIgnoreCase("sqlite") || type.equalsIgnoreCase("h2")) return "jdbc:" + type + ":" + new File(plugin.getDataFolder(), "database.db").getAbsolutePath(); @@ -67,9 +74,13 @@ private String getStringSource() { return "jdbc:" + type + "://" + getConfigString("address") + File.separator + getConfigString("name"); } + @Nullable private Connection getConnection() { try { - return useUserAndPassword ? DriverManager.getConnection(conStr, getConfigString("user"), getConfigString("password")) : DriverManager.getConnection(conStr); + if (source == null || source.isClosed()) { + source = new HikariDataSource(config); + } + return source.getConnection(); } catch (Exception exception) { LOG.severe("Can't create connection: " + exception.getMessage()); } diff --git a/src/main/java/ru/nightmirror/wlbytime/shared/placeholders/PlaceholderHook.java b/src/main/java/ru/nightmirror/wlbytime/shared/placeholders/PlaceholderHook.java index a6d1ba0..9997fd3 100644 --- a/src/main/java/ru/nightmirror/wlbytime/shared/placeholders/PlaceholderHook.java +++ b/src/main/java/ru/nightmirror/wlbytime/shared/placeholders/PlaceholderHook.java @@ -34,7 +34,7 @@ public PlaceholderHook(IDatabase database, Plugin plugin) { @Override public @NotNull String getVersion() { - return "4.0"; + return "5.0"; } @Override diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ed9d98f..927996c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: WhitelistByTime main: ru.nightmirror.wlbytime.shared.WhitelistByTime -version: 4.1 +version: 5 author: NightMirror description: Adding a player to the whitelist for a time api-version: 1.16