Skip to content

Commit 85111aa

Browse files
committed
make standalone DatabaseSetting for more database types
1 parent 0a340fd commit 85111aa

File tree

9 files changed

+53
-37
lines changed

9 files changed

+53
-37
lines changed

spigot/plugin/src/main/java/me/hsgamer/topper/spigot/plugin/config/DatabaseConfig.java

+2-17
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
import me.hsgamer.hscore.config.annotation.Comment;
44
import me.hsgamer.hscore.config.annotation.ConfigPath;
5-
import me.hsgamer.hscore.database.Setting;
65
import me.hsgamer.topper.spigot.plugin.config.converter.StringObjectMapConverter;
6+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
77

88
import java.util.Collections;
99
import java.util.Map;
10-
import java.util.function.Consumer;
1110

12-
public interface DatabaseConfig extends Consumer<Setting> {
11+
public interface DatabaseConfig extends DatabaseSetting {
1312
@ConfigPath("host")
1413
@Comment("The host of the database")
1514
default String getHost() {
@@ -57,18 +56,4 @@ default Map<String, Object> getDriverProperties() {
5756
default Map<String, Object> getClientProperties() {
5857
return Collections.emptyMap();
5958
}
60-
61-
@Override
62-
default void accept(Setting setting) {
63-
setting.setHost(getHost());
64-
setting.setPort(getPort());
65-
setting.setDatabaseName(getDatabase());
66-
setting.setUsername(getUsername());
67-
setting.setPassword(getPassword());
68-
if (isUseSSL()) {
69-
setting.setDriverProperty("useSSL", "true");
70-
}
71-
setting.setDriverProperties(getDriverProperties());
72-
setting.setClientProperties(getClientProperties());
73-
}
7459
}

spigot/plugin/src/main/java/me/hsgamer/topper/spigot/plugin/manager/TopManager.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import io.github.projectunified.minelib.plugin.base.Loadable;
44
import me.hsgamer.hscore.bukkit.config.BukkitConfig;
55
import me.hsgamer.hscore.config.proxy.ConfigGenerator;
6-
import me.hsgamer.hscore.database.Setting;
76
import me.hsgamer.topper.spigot.plugin.TopperPlugin;
87
import me.hsgamer.topper.spigot.plugin.config.DatabaseConfig;
98
import me.hsgamer.topper.spigot.plugin.config.MainConfig;
@@ -13,11 +12,11 @@
1312
import me.hsgamer.topper.storage.simple.converter.NumberConverter;
1413
import me.hsgamer.topper.storage.simple.converter.UUIDConverter;
1514
import me.hsgamer.topper.storage.simple.setting.DataStorageSetting;
15+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
1616
import me.hsgamer.topper.storage.simple.supplier.DataStorageSupplier;
1717

1818
import java.io.File;
1919
import java.util.*;
20-
import java.util.function.Consumer;
2120

2221
public class TopManager implements Loadable {
2322
private final Map<String, NumberTopHolder> topHolders = new HashMap<>();
@@ -34,7 +33,7 @@ public void enable() {
3433
instance.get(MainConfig.class).getStorageType(),
3534
new DataStorageSetting() {
3635
@Override
37-
public Consumer<Setting> getDatabaseSettingModifier() {
36+
public DatabaseSetting getDatabaseSetting() {
3837
return ConfigGenerator.newInstance(DatabaseConfig.class, new BukkitConfig(instance, "database.yml"));
3938
}
4039

storage/simple/src/main/java/me/hsgamer/topper/storage/simple/builder/DataStorageBuilder.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ public class DataStorageBuilder extends Builder<DataStorageSetting, DataStorageS
1212
public DataStorageBuilder() {
1313
this.defaultSupplier = setting -> new FlatStorageSupplier(setting.getBaseFolder());
1414
register(defaultSupplier, "flat", "properties", "");
15-
register(setting -> new SqliteStorageSupplier(setting.getDatabaseSettingModifier(), setting.getBaseFolder()), "sqlite", "sqlite3");
16-
register(setting -> new NewSqliteStorageSupplier(setting.getDatabaseSettingModifier(), setting.getBaseFolder()), "new-sqlite", "new-sqlite3");
17-
register(setting -> new MySqlStorageSupplier(setting.getDatabaseSettingModifier()), "mysql", "mysql-connector-java", "mysql-connector");
15+
register(setting -> new SqliteStorageSupplier(setting.getDatabaseSetting(), setting.getBaseFolder()), "sqlite", "sqlite3");
16+
register(setting -> new NewSqliteStorageSupplier(setting.getDatabaseSetting(), setting.getBaseFolder()), "new-sqlite", "new-sqlite3");
17+
register(setting -> new MySqlStorageSupplier(setting.getDatabaseSetting()), "mysql", "mysql-connector-java", "mysql-connector");
1818
}
1919

2020
public DataStorageSupplier buildSupplier(String type, DataStorageSetting setting) {
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
package me.hsgamer.topper.storage.simple.setting;
22

3-
import me.hsgamer.hscore.database.Setting;
4-
53
import java.io.File;
6-
import java.util.function.Consumer;
74

85
public interface DataStorageSetting {
9-
Consumer<Setting> getDatabaseSettingModifier();
6+
DatabaseSetting getDatabaseSetting();
107

118
File getBaseFolder();
129
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package me.hsgamer.topper.storage.simple.setting;
2+
3+
import java.util.Map;
4+
5+
public interface DatabaseSetting {
6+
String getHost();
7+
8+
String getPort();
9+
10+
String getDatabase();
11+
12+
String getUsername();
13+
14+
String getPassword();
15+
16+
boolean isUseSSL();
17+
18+
Map<String, Object> getDriverProperties();
19+
20+
Map<String, Object> getClientProperties();
21+
}

storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/MySqlStorageSupplier.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
import me.hsgamer.hscore.database.Setting;
44
import me.hsgamer.hscore.database.client.sql.java.JavaSqlClient;
55
import me.hsgamer.hscore.database.driver.mysql.MySqlDriver;
6+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
67

78
import java.util.Collections;
89
import java.util.List;
9-
import java.util.function.Consumer;
1010

1111
public class MySqlStorageSupplier extends SqlStorageSupplier {
1212
private final JavaSqlClient client;
1313

14-
public MySqlStorageSupplier(Consumer<Setting> databaseSettingConsumer) {
14+
public MySqlStorageSupplier(DatabaseSetting databaseSetting) {
1515
Setting setting = Setting.create(new MySqlDriver());
16-
databaseSettingConsumer.accept(setting);
16+
applyDatabaseSetting(databaseSetting, setting);
1717
client = new JavaSqlClient(setting);
1818
}
1919

storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/NewSqliteStorageSupplier.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package me.hsgamer.topper.storage.simple.supplier;
22

3-
import me.hsgamer.hscore.database.Setting;
3+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
44

55
import java.io.File;
66
import java.util.Collections;
77
import java.util.List;
8-
import java.util.function.Consumer;
98

109
public class NewSqliteStorageSupplier extends SqliteStorageSupplier {
11-
public NewSqliteStorageSupplier(Consumer<Setting> databaseSettingConsumer, File baseFolder) {
12-
super(databaseSettingConsumer, baseFolder);
10+
public NewSqliteStorageSupplier(DatabaseSetting databaseSetting, File baseFolder) {
11+
super(databaseSetting, baseFolder);
1312
}
1413

1514
@Override

storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqlStorageSupplier.java

+15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.hsgamer.topper.storage.simple.supplier;
22

3+
import me.hsgamer.hscore.database.Setting;
34
import me.hsgamer.hscore.database.client.sql.BatchBuilder;
45
import me.hsgamer.hscore.database.client.sql.SqlClient;
56
import me.hsgamer.hscore.database.client.sql.StatementBuilder;
@@ -8,6 +9,7 @@
89
import me.hsgamer.hscore.logger.provider.LoggerProvider;
910
import me.hsgamer.topper.storage.core.DataStorage;
1011
import me.hsgamer.topper.storage.simple.converter.ValueConverter;
12+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
1113

1214
import java.sql.Connection;
1315
import java.sql.SQLException;
@@ -20,6 +22,19 @@ public abstract class SqlStorageSupplier implements DataStorageSupplier {
2022
protected final Logger logger = LoggerProvider.getLogger(getClass());
2123
private final Lock lock = new ReentrantLock();
2224

25+
protected static void applyDatabaseSetting(DatabaseSetting databaseSetting, Setting setting) {
26+
setting.setHost(databaseSetting.getHost());
27+
setting.setPort(databaseSetting.getPort());
28+
setting.setDatabaseName(databaseSetting.getDatabase());
29+
setting.setUsername(databaseSetting.getUsername());
30+
setting.setPassword(databaseSetting.getPassword());
31+
if (databaseSetting.isUseSSL()) {
32+
setting.setDriverProperty("useSSL", "true");
33+
}
34+
setting.setDriverProperties(databaseSetting.getDriverProperties());
35+
setting.setClientProperties(databaseSetting.getClientProperties());
36+
}
37+
2338
protected abstract SqlClient<?> getClient();
2439

2540
protected boolean isSingleThread() {

storage/simple/src/main/java/me/hsgamer/topper/storage/simple/supplier/SqliteStorageSupplier.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
import me.hsgamer.hscore.database.Setting;
44
import me.hsgamer.hscore.database.client.sql.java.JavaSqlClient;
55
import me.hsgamer.hscore.database.driver.sqlite.SqliteFileDriver;
6+
import me.hsgamer.topper.storage.simple.setting.DatabaseSetting;
67

78
import java.io.File;
89
import java.util.Arrays;
910
import java.util.List;
10-
import java.util.function.Consumer;
1111

1212
public class SqliteStorageSupplier extends SqlStorageSupplier {
1313
private final JavaSqlClient client;
1414

15-
public SqliteStorageSupplier(Consumer<Setting> databaseSettingConsumer, File baseHolder) {
15+
public SqliteStorageSupplier(DatabaseSetting databaseSetting, File baseHolder) {
1616
Setting setting = Setting.create(new SqliteFileDriver(baseHolder));
17-
databaseSettingConsumer.accept(setting);
17+
applyDatabaseSetting(databaseSetting, setting);
1818
client = new JavaSqlClient(setting);
1919
}
2020

0 commit comments

Comments
 (0)