Skip to content

Commit 2321ed3

Browse files
committed
refactor(api): 支持独立创建注册池,便于插件内部管理链接
1 parent 38afb05 commit 2321ed3

File tree

13 files changed

+70
-77
lines changed

13 files changed

+70
-77
lines changed

api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>minesql-parent</artifactId>
77
<groupId>cc.carm.plugin</groupId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

api/src/main/java/cc/carm/plugin/minesql/IMineSQL.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ interface IMineSQL {
2727

2828
@NotNull SQLRegistry getRegistry();
2929

30+
@NotNull SQLRegistry createRegistry();
31+
3032
/**
3133
* 创建一个新的 SQLManager 实例
3234
*

api/src/main/java/cc/carm/plugin/minesql/MineSQL.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ public static SQLRegistry getRegistry() {
4343
return instance.getRegistry();
4444
}
4545

46+
/**
47+
* 创建一个独立的管理器注册池。
48+
*
49+
* @return {@link SQLRegistry}
50+
*/
51+
public static @NotNull SQLRegistry createRegistry() {
52+
return instance.createRegistry();
53+
}
54+
4655
/**
4756
* 创建一个新的 SQLManager 实例
4857
*

api/src/main/java/cc/carm/plugin/minesql/api/SQLRegistry.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
* 入口类
1313
*/
1414
public interface SQLRegistry {
15-
16-
15+
1716
/**
1817
* 获取原生注册的指定名称的 SQLManager 实例
1918
*

core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>minesql-parent</artifactId>
77
<groupId>cc.carm.plugin</groupId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<properties>

core/src/main/java/cc/carm/plugin/minesql/MineSQLCore.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
public class MineSQLCore implements IMineSQL {
3131

32+
protected static MineSQLCore instance;
33+
3234
public static final String REPO_OWNER = "CarmJos";
3335
public static final String REPO_NAME = "MineSQL";
3436

@@ -39,6 +41,7 @@ public class MineSQLCore implements IMineSQL {
3941
protected final PluginConfiguration config;
4042

4143
public MineSQLCore(MineSQLPlatform platform) {
44+
instance = this;
4245
this.platform = platform;
4346

4447
getLogger().info("加载配置文件...");
@@ -50,18 +53,59 @@ public MineSQLCore(MineSQLPlatform platform) {
5053
MineSQL.initializeAPI(this);
5154

5255
getLogger().info("初始化注册池...");
53-
this.registry = new MineSQLRegistry(this);
56+
this.registry = createRegistry();
57+
58+
Map<String, Properties> dbProperties = readProperties();
59+
Map<String, SQLSourceConfig> dbConfigurations = readConfigurations();
60+
61+
if (dbProperties.isEmpty() && dbConfigurations.isEmpty()) {
62+
getLogger().warning("未检测到任何数据库配置,将不会预创建任何SQLManager。");
63+
return;
64+
}
65+
66+
dbProperties.forEach((id, properties) -> {
67+
try {
68+
getLogger().info("正在初始化数据库 #" + id + " ...");
69+
SQLManagerImpl sqlManager = create(id, properties);
70+
this.registry.getManagers().put(id, sqlManager);
71+
getLogger().info("完成成初始化数据库 #" + id + " 。");
72+
} catch (Exception ex) {
73+
getLogger().severe("初始化SQLManager(#" + id + ") 出错,请检查配置文件: " + ex.getMessage());
74+
ex.printStackTrace();
75+
}
76+
});
77+
78+
dbConfigurations.forEach((id, configuration) -> {
79+
try {
80+
getLogger().info("正在初始化数据库 #" + id + " ...");
81+
SQLManagerImpl sqlManager = create(id, configuration);
82+
this.registry.getManagers().put(id, sqlManager);
83+
getLogger().info("完成初始化数据库 #" + id + " 。");
84+
} catch (Exception ex) {
85+
getLogger().severe("初始化SQLManager(#" + id + ") 出错,请检查配置文件: " + ex.getMessage());
86+
ex.printStackTrace();
87+
}
88+
});
5489
}
5590

5691
public MineSQLPlatform getPlatform() {
5792
return platform;
5893
}
5994

95+
public static MineSQLCore getInstance() {
96+
return instance;
97+
}
98+
6099
@Override
61100
public @NotNull MineSQLRegistry getRegistry() {
62101
return this.registry;
63102
}
64103

104+
@Override
105+
public @NotNull MineSQLRegistry createRegistry() {
106+
return new MineSQLRegistry();
107+
}
108+
65109
@Override
66110
public @NotNull SQLManagerImpl create(@NotNull String name, @NotNull SQLSourceConfig conf) {
67111
BeeDataSourceConfig config = new BeeDataSourceConfig();
Lines changed: 5 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,24 @@
11
package cc.carm.plugin.minesql;
22

33
import cc.carm.lib.easysql.api.SQLManager;
4-
import cc.carm.lib.easysql.manager.SQLManagerImpl;
54
import cc.carm.plugin.minesql.api.SQLRegistry;
6-
import cc.carm.plugin.minesql.api.source.SQLSourceConfig;
75
import org.jetbrains.annotations.NotNull;
86
import org.jetbrains.annotations.Nullable;
97
import org.jetbrains.annotations.Unmodifiable;
108

11-
import java.util.*;
12-
import java.util.concurrent.ExecutorService;
13-
import java.util.concurrent.Executors;
9+
import java.util.Collections;
10+
import java.util.HashMap;
11+
import java.util.Map;
12+
import java.util.Optional;
1413

1514
public class MineSQLRegistry implements SQLRegistry {
1615

17-
private static MineSQLRegistry instance;
18-
19-
protected ExecutorService executorPool;
20-
protected MineSQLCore core;
2116
private final HashMap<String, SQLManager> managers = new HashMap<>();
2217

23-
protected MineSQLRegistry(@NotNull MineSQLCore core) {
24-
this.core = core;
25-
MineSQLRegistry.instance = this;
26-
this.executorPool = Executors.newFixedThreadPool(2, (r) -> {
27-
Thread thread = new Thread(r, "EasySQLRegistry");
28-
thread.setDaemon(true);
29-
return thread;
30-
});
31-
32-
Map<String, Properties> dbProperties = core.readProperties();
33-
Map<String, SQLSourceConfig> dbConfigurations = core.readConfigurations();
34-
35-
if (dbProperties.isEmpty() && dbConfigurations.isEmpty()) {
36-
core.getLogger().warning("未检测到任何数据库配置,将不会预创建任何SQLManager。");
37-
return;
38-
}
39-
40-
dbProperties.forEach((id, properties) -> {
41-
try {
42-
core.getLogger().info("正在初始化数据库 #" + id + " ...");
43-
SQLManagerImpl sqlManager = this.core.create(id, properties);
44-
this.managers.put(id, sqlManager);
45-
core.getLogger().info("完成成初始化数据库 #" + id + " 。");
46-
} catch (Exception ex) {
47-
core.getLogger().severe("初始化SQLManager(#" + id + ") 出错,请检查配置文件: " + ex.getMessage());
48-
ex.printStackTrace();
49-
}
50-
});
51-
52-
dbConfigurations.forEach((id, configuration) -> {
53-
try {
54-
core.getLogger().info("正在初始化数据库 #" + id + " ...");
55-
SQLManagerImpl sqlManager = this.core.create(id, configuration);
56-
this.managers.put(id, sqlManager);
57-
core.getLogger().info("完成初始化数据库 #" + id + " 。");
58-
} catch (Exception ex) {
59-
core.getLogger().severe("初始化SQLManager(#" + id + ") 出错,请检查配置文件: " + ex.getMessage());
60-
ex.printStackTrace();
61-
}
62-
});
63-
64-
}
65-
6618
protected HashMap<String, SQLManager> getManagers() {
6719
return managers;
6820
}
6921

70-
public ExecutorService getExecutor() {
71-
return executorPool;
72-
}
73-
74-
public static MineSQLRegistry getInstance() {
75-
return instance;
76-
}
77-
78-
public MineSQLCore getCore() {
79-
return core;
80-
}
81-
8222
@Override
8323
public @NotNull Optional<@Nullable SQLManager> getOptional(@Nullable String id) {
8424
return Optional.of(this.managers.get(id));
@@ -104,5 +44,5 @@ public void register(@NotNull String name, @NotNull SQLManager sqlManager) throw
10444
if (manager == null) throw new NullPointerException("不存在ID为 " + name + " 的SQLManager实例。");
10545
return manager;
10646
}
107-
47+
10848
}

core/src/main/java/cc/carm/plugin/minesql/command/MineSQLCommand.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import cc.carm.lib.easysql.api.SQLManager;
44
import cc.carm.lib.easysql.api.SQLQuery;
55
import cc.carm.plugin.minesql.MineSQLCore;
6-
import cc.carm.plugin.minesql.MineSQLRegistry;
76
import cc.carm.plugin.minesql.util.VersionReader;
87
import co.aikar.commands.BaseCommand;
98
import co.aikar.commands.CommandHelp;
@@ -66,7 +65,7 @@ public void list(CommandIssuer issuer) {
6665
issuer.sendMessage("§c只有后台执行才能使用此命令。");
6766
return;
6867
}
69-
Map<String, ? extends SQLManager> runningManagers = MineSQLRegistry.getInstance().list();
68+
Map<String, ? extends SQLManager> runningManagers = MineSQLCore.getInstance().getRegistry().list();
7069
if (runningManagers.isEmpty()) {
7170
issuer.sendMessage("§r当前无正在运行的数据库管理器。");
7271
} else {

platforms/bukkit/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>minesql-parent</artifactId>
77
<groupId>cc.carm.plugin</groupId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
<relativePath>../../pom.xml</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>

platforms/bungee/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>minesql-parent</artifactId>
77
<groupId>cc.carm.plugin</groupId>
8-
<version>1.0.0</version>
8+
<version>1.1.0</version>
99
<relativePath>../../pom.xml</relativePath>
1010
</parent>
1111
<modelVersion>4.0.0</modelVersion>

0 commit comments

Comments
 (0)