From 97ad608d563a79da6a63baecae228b4ce06417c7 Mon Sep 17 00:00:00 2001 From: Joo200 Date: Sat, 1 Jul 2023 14:54:30 +0200 Subject: [PATCH] Add mariadb protocol option type (#145) Co-authored-by: William --- .../william278/husksync/BukkitHuskSync.java | 2 +- .../william278/husksync/config/Settings.java | 11 ++++++++ .../husksync/database/Database.java | 26 +++++++++++++++++++ .../husksync/database/MySqlDatabase.java | 8 +++++- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java index 22b3edaf..174041dc 100644 --- a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java +++ b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java @@ -130,7 +130,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync { // Prepare database connection this.database = new MySqlDatabase(this); - log(Level.INFO, "Attempting to establish connection to the database..."); + log(Level.INFO, "Attempting to establish connection to the " + settings.getSqlType().getDisplayName() + " database..."); initialized.set(this.database.initialize()); if (initialized.get()) { log(Level.INFO, "Successfully established a connection to the database"); diff --git a/common/src/main/java/net/william278/husksync/config/Settings.java b/common/src/main/java/net/william278/husksync/config/Settings.java index d983540d..c491a707 100644 --- a/common/src/main/java/net/william278/husksync/config/Settings.java +++ b/common/src/main/java/net/william278/husksync/config/Settings.java @@ -22,6 +22,7 @@ package net.william278.husksync.config; import net.william278.annotaml.YamlComment; import net.william278.annotaml.YamlFile; import net.william278.annotaml.YamlKey; +import net.william278.husksync.database.Database; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -54,6 +55,10 @@ public class Settings { // Database settings + @YamlComment("Type of database to use (MYSQL, SQLITE)") + @YamlKey("database.type") + private Database.Type databaseType = Database.Type.MYSQL; + @YamlComment("Database connection settings") @YamlKey("database.credentials.host") private String mySqlHost = "localhost"; @@ -167,6 +172,12 @@ public class Settings { return debugLogging; } + + @NotNull + public Database.Type getSqlType() { + return databaseType; + } + @NotNull public String getMySqlHost() { return mySqlHost; diff --git a/common/src/main/java/net/william278/husksync/database/Database.java b/common/src/main/java/net/william278/husksync/database/Database.java index 705cf6da..e6522bd0 100644 --- a/common/src/main/java/net/william278/husksync/database/Database.java +++ b/common/src/main/java/net/william278/husksync/database/Database.java @@ -191,4 +191,30 @@ public abstract class Database { */ public abstract void close(); + /** + * Identifies types of databases + */ + public enum Type { + MYSQL("MySQL", "mysql"), + MARIADB("MariaDB", "mariadb"); + + private final String displayName; + private final String protocol; + + Type(@NotNull String displayName, @NotNull String protocol) { + this.displayName = displayName; + this.protocol = protocol; + } + + @NotNull + public String getDisplayName() { + return displayName; + } + + @NotNull + public String getProtocol() { + return protocol; + } + } + } diff --git a/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java b/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java index 716f1de2..12823846 100644 --- a/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java +++ b/common/src/main/java/net/william278/husksync/database/MySqlDatabase.java @@ -40,6 +40,11 @@ import java.util.logging.Level; public class MySqlDatabase extends Database { + /** + * MySQL protocol + */ + private final Database.Type type; + /** * MySQL server hostname */ @@ -74,6 +79,7 @@ public class MySqlDatabase extends Database { public MySqlDatabase(@NotNull HuskSync plugin) { super(plugin); final Settings settings = plugin.getSettings(); + this.type = settings.getSqlType(); this.mySqlHost = settings.getMySqlHost(); this.mySqlPort = settings.getMySqlPort(); this.mySqlDatabaseName = settings.getMySqlDatabase(); @@ -101,7 +107,7 @@ public class MySqlDatabase extends Database { public boolean initialize() { try { // Create jdbc driver connection url - final String jdbcUrl = "jdbc:mysql://" + mySqlHost + ":" + mySqlPort + "/" + mySqlDatabaseName + mySqlConnectionParameters; + final String jdbcUrl = "jdbc:" + type.getProtocol() + "://" + mySqlHost + ":" + mySqlPort + "/" + mySqlDatabaseName + mySqlConnectionParameters; connectionPool = new HikariDataSource(); connectionPool.setJdbcUrl(jdbcUrl);