From 511a29a86e368d4a665de1a23197fcd8f5ee350c Mon Sep 17 00:00:00 2001 From: hsgamer Date: Thu, 30 Jan 2025 20:50:07 +0700 Subject: [PATCH] centralize SqlStorageSupplier constructor --- .../simple/supplier/MySqlStorageSupplier.java | 13 +--------- .../simple/supplier/SqlStorageSupplier.java | 24 +++++++++++++------ .../supplier/SqliteStorageSupplier.java | 13 +--------- 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/MySqlStorageSupplier.java b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/MySqlStorageSupplier.java index b3af975..b46a936 100644 --- a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/MySqlStorageSupplier.java +++ b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/MySqlStorageSupplier.java @@ -1,7 +1,5 @@ package me.hsgamer.topper.storage.simple.supplier; -import me.hsgamer.hscore.database.Setting; -import me.hsgamer.hscore.database.client.sql.java.JavaSqlClient; import me.hsgamer.hscore.database.driver.mysql.MySqlDriver; import me.hsgamer.topper.storage.simple.setting.DatabaseSetting; @@ -9,17 +7,8 @@ import java.util.List; public class MySqlStorageSupplier extends SqlStorageSupplier { - private final JavaSqlClient client; - public MySqlStorageSupplier(DatabaseSetting databaseSetting) { - Setting setting = Setting.create(new MySqlDriver()); - applyDatabaseSetting(databaseSetting, setting); - client = new JavaSqlClient(setting); - } - - @Override - public JavaSqlClient getClient() { - return client; + super(new MySqlDriver(), databaseSetting); } @Override diff --git a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqlStorageSupplier.java b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqlStorageSupplier.java index 7eec150..ea66890 100644 --- a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqlStorageSupplier.java +++ b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqlStorageSupplier.java @@ -1,9 +1,11 @@ package me.hsgamer.topper.storage.simple.supplier; +import me.hsgamer.hscore.database.Driver; import me.hsgamer.hscore.database.Setting; import me.hsgamer.hscore.database.client.sql.BatchBuilder; import me.hsgamer.hscore.database.client.sql.SqlClient; import me.hsgamer.hscore.database.client.sql.StatementBuilder; +import me.hsgamer.hscore.database.client.sql.java.JavaSqlClient; import me.hsgamer.hscore.logger.common.LogLevel; import me.hsgamer.hscore.logger.common.Logger; import me.hsgamer.hscore.logger.provider.LoggerProvider; @@ -20,9 +22,18 @@ public abstract class SqlStorageSupplier implements DataStorageSupplier { protected final Logger logger = LoggerProvider.getLogger(getClass()); + private final SqlClient client; private final Lock lock = new ReentrantLock(); - protected static void applyDatabaseSetting(DatabaseSetting databaseSetting, Setting setting) { + protected SqlStorageSupplier(SqlClient client) { + this.client = client; + } + + protected SqlStorageSupplier(Driver driver, DatabaseSetting databaseSetting) { + this(new JavaSqlClient(applyDatabaseSetting(databaseSetting, Setting.create(driver)))); + } + + protected static Setting applyDatabaseSetting(DatabaseSetting databaseSetting, Setting setting) { setting.setHost(databaseSetting.getHost()); setting.setPort(databaseSetting.getPort()); setting.setDatabaseName(databaseSetting.getDatabase()); @@ -33,10 +44,9 @@ protected static void applyDatabaseSetting(DatabaseSetting databaseSetting, Sett } setting.setDriverProperties(databaseSetting.getDriverProperties()); setting.setClientProperties(databaseSetting.getClientProperties()); + return setting; } - protected abstract SqlClient getClient(); - protected boolean isSingleThread() { return false; } @@ -63,7 +73,7 @@ public DataStorage getStorage(String name, ValueConverter keyCon @Override public Map load() { lock(); - try (Connection connection = getClient().getConnection()) { + try (Connection connection = client.getConnection()) { return StatementBuilder.create(connection) .setStatement("SELECT * FROM `" + name + "`;") .queryList(resultSet -> new AbstractMap.SimpleEntry<>(keyConverter.fromSqlResultSet(resultSet), valueConverter.fromSqlResultSet(resultSet))) @@ -81,7 +91,7 @@ public Map load() { @Override public Optional load(K key) { lock(); - try (Connection connection = getClient().getConnection()) { + try (Connection connection = client.getConnection()) { String[] keyColumns = keyConverter.getSqlColumns(); Object[] keyValues = keyConverter.toSqlValues(key); @@ -115,7 +125,7 @@ public Optional load(K key) { public Optional> modify() { lock(); try { - Connection connection = getClient().getConnection(); + Connection connection = client.getConnection(); connection.setAutoCommit(false); Modifier modifier = new Modifier() { @Override @@ -208,7 +218,7 @@ public void rollback() { @Override public void onRegister() { lock(); - try (Connection connection = getClient().getConnection()) { + try (Connection connection = client.getConnection()) { String[] keyColumns = keyConverter.getSqlColumns(); String[] keyColumnDefinitions = keyConverter.getSqlColumnDefinitions(); String[] valueColumns = valueConverter.getSqlColumns(); diff --git a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqliteStorageSupplier.java b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqliteStorageSupplier.java index 6996afd..19e1f2d 100644 --- a/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqliteStorageSupplier.java +++ b/storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqliteStorageSupplier.java @@ -1,7 +1,5 @@ package me.hsgamer.topper.storage.simple.supplier; -import me.hsgamer.hscore.database.Setting; -import me.hsgamer.hscore.database.client.sql.java.JavaSqlClient; import me.hsgamer.hscore.database.driver.sqlite.SqliteFileDriver; import me.hsgamer.topper.storage.simple.setting.DatabaseSetting; @@ -10,17 +8,8 @@ import java.util.List; public class SqliteStorageSupplier extends SqlStorageSupplier { - private final JavaSqlClient client; - public SqliteStorageSupplier(DatabaseSetting databaseSetting, File baseHolder) { - Setting setting = Setting.create(new SqliteFileDriver(baseHolder)); - applyDatabaseSetting(databaseSetting, setting); - client = new JavaSqlClient(setting); - } - - @Override - public JavaSqlClient getClient() { - return client; + super(new SqliteFileDriver(baseHolder), databaseSetting); } @Override