From e15ea9ce85786761c50c06df3567c3f28f49d50f Mon Sep 17 00:00:00 2001 From: games647 Date: Thu, 12 Oct 2023 10:46:46 +0200 Subject: [PATCH] Restore support for fully qualified storage drivers Related #1100 --- .../fastlogin/core/shared/FastLoginCore.java | 3 +- .../fastlogin/core/storage/MySQLStorage.java | 38 +++++++++++++++++-- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java index bc93c7ea..bc12cf5c 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java @@ -57,7 +57,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collection; import java.util.HashSet; -import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -221,7 +220,7 @@ public class FastLoginCore

> { } public boolean setupDatabase() { - String type = config.getString("driver").toLowerCase(Locale.ENGLISH); + String type = config.getString("driver"); HikariConfig databaseConfig = new HikariConfig(); String database = config.getString("database"); diff --git a/core/src/main/java/com/github/games647/fastlogin/core/storage/MySQLStorage.java b/core/src/main/java/com/github/games647/fastlogin/core/storage/MySQLStorage.java index 3b9a2e85..0c3e4345 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/storage/MySQLStorage.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/storage/MySQLStorage.java @@ -28,6 +28,8 @@ package com.github.games647.fastlogin.core.storage; import com.github.games647.fastlogin.core.shared.PlatformPlugin; import com.zaxxer.hikari.HikariConfig; +import java.util.Locale; + public class MySQLStorage extends SQLStorage { private static final String JDBC_PROTOCOL = "jdbc:"; @@ -68,12 +70,12 @@ public class MySQLStorage extends SQLStorage { } private static String buildJDBCUrl(String driver, String host, int port, String database) { - String protocol = "mysql"; - if (driver.contains("mariadb")) { - protocol = "mariadb"; + MySQLVariant variant = MySQLVariant.fromDriver(driver); + if (variant == null) { + throw new IllegalArgumentException("Unknown storage driver"); } - return protocol + "://" + host + ':' + port + '/' + database; + return variant.getJdbcPrefix() + "://" + host + ':' + port + '/' + database; } private static void addPerformanceProperties(HikariConfig config) { @@ -106,4 +108,32 @@ public class MySQLStorage extends SQLStorage { // In our case it can be useful to see the time in error messages // config.addDataSourceProperty("maintainTimeStats", false); } + + enum MySQLVariant { + + MYSQL("mysql"), + + MARIADB("mariadb"); + + private final String jdbcPrefix; + + public static MySQLVariant fromDriver(String driver) { + String normalizedDriver = driver.toLowerCase(Locale.ENGLISH); + if (normalizedDriver.contains("mysql")) { + return MYSQL; + } else if (normalizedDriver.contains("mariadb")) { + return MARIADB; + } + + return null; + } + + MySQLVariant(String jdbcPrefix) { + this.jdbcPrefix = jdbcPrefix; + } + + public String getJdbcPrefix() { + return jdbcPrefix; + } + } }