1
mirror of https://github.com/CarmJos/MineSQL.git synced 2026-06-05 00:48:16 +08:00

refactor(api): 重新设计API接口

This commit is contained in:
2022-09-26 22:25:28 +08:00
parent 30b1edc753
commit 1557c14116
27 changed files with 146 additions and 155 deletions
@@ -1,10 +1,10 @@
package cc.carm.plugin.easysql;
package cc.carm.plugin.minesql;
import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.plugin.easysql.api.DBConfiguration;
import cc.carm.plugin.easysql.api.EasySQLRegistry;
import cc.carm.plugin.easysql.command.EasySQLCommand;
import cc.carm.plugin.easysql.command.EasySQLHelpFormatter;
import cc.carm.plugin.minesql.api.DBConfiguration;
import cc.carm.plugin.minesql.api.SQLRegistry;
import cc.carm.plugin.minesql.command.EasySQLCommand;
import cc.carm.plugin.minesql.command.EasySQLHelpFormatter;
import co.aikar.commands.CommandManager;
import co.aikar.commands.InvalidCommandArgument;
import co.aikar.commands.Locales;
@@ -15,9 +15,9 @@ import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;
public interface EasySQLPluginPlatform {
public interface MineSQLPlatform {
@NotNull EasySQLRegistry getRegistry();
@NotNull SQLRegistry getRegistry();
@NotNull Map<String, DBConfiguration> readConfigurations();
@@ -25,8 +25,8 @@ public interface EasySQLPluginPlatform {
Logger getLogger();
default void initializeAPI(EasySQLRegistry registry) {
EasySQLAPI.initializeAPI(registry);
default void initializeAPI(SQLRegistry registry) {
MineSQL.initializeAPI(registry);
}
@SuppressWarnings("deprecation")
@@ -1,11 +1,11 @@
package cc.carm.plugin.easysql;
package cc.carm.plugin.minesql;
import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.lib.easysql.api.SQLQuery;
import cc.carm.lib.easysql.manager.SQLManagerImpl;
import cc.carm.lib.githubreleases4j.GithubReleases4J;
import cc.carm.plugin.easysql.api.DBConfiguration;
import cc.carm.plugin.easysql.api.EasySQLRegistry;
import cc.carm.plugin.minesql.api.DBConfiguration;
import cc.carm.plugin.minesql.api.SQLRegistry;
import cn.beecp.BeeDataSource;
import cn.beecp.BeeDataSourceConfig;
import com.google.common.collect.ImmutableMap;
@@ -13,25 +13,26 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.sql.DataSource;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.Consumer;
import java.util.logging.Logger;
public class EasySQLRegistryImpl implements EasySQLRegistry {
public class MineSQLRegistry implements SQLRegistry {
public static final String REPO_OWNER = "CarmJos";
public static final String REPO_NAME = "EasySQL-Plugin";
private static EasySQLRegistryImpl instance;
private static MineSQLRegistry instance;
protected ExecutorService executorPool;
protected EasySQLPluginPlatform platform;
protected MineSQLPlatform platform;
private final HashMap<String, SQLManagerImpl> sqlManagerRegistry = new HashMap<>();
protected EasySQLRegistryImpl(@NotNull EasySQLPluginPlatform platform) {
protected MineSQLRegistry(@NotNull MineSQLPlatform platform) {
this.platform = platform;
EasySQLRegistryImpl.instance = this;
MineSQLRegistry.instance = this;
this.executorPool = Executors.newFixedThreadPool(2, (r) -> {
Thread thread = new Thread(r, "EasySQLRegistry");
thread.setDaemon(true);
@@ -69,19 +70,12 @@ public class EasySQLRegistryImpl implements EasySQLRegistry {
@Override
public @NotNull SQLManagerImpl get(@Nullable String id) throws NullPointerException {
if (!this.sqlManagerRegistry.containsKey(id)) {
throw new NullPointerException("并不存在ID为 #" + id + " 的SQLManager.");
}
return this.sqlManagerRegistry.get(id);
return Objects.requireNonNull(this.sqlManagerRegistry.get(id), "并不存在ID为 #" + id + " 的SQLManager.");
}
@Override
public @NotNull Optional<@Nullable SQLManagerImpl> getOptional(@Nullable String name) {
try {
return Optional.of(get(name));
} catch (Exception exception) {
return Optional.empty();
}
public @NotNull Optional<@Nullable SQLManagerImpl> getOptional(@Nullable String id) {
return Optional.of(this.sqlManagerRegistry.get(id));
}
@Override
@@ -91,7 +85,7 @@ public class EasySQLRegistryImpl implements EasySQLRegistry {
}
@Override
public @NotNull SQLManagerImpl create(@Nullable String name, @NotNull DBConfiguration configuration) {
public @NotNull SQLManagerImpl create(@NotNull String name, @NotNull DBConfiguration configuration) throws Exception {
BeeDataSourceConfig config = new BeeDataSourceConfig();
config.setDriverClassName(configuration.getDriverClassName());
config.setJdbcUrl(configuration.getUrlPrefix() + configuration.getUrl());
@@ -118,17 +112,17 @@ public class EasySQLRegistryImpl implements EasySQLRegistry {
}
@Override
public @NotNull SQLManagerImpl create(@Nullable String name, @NotNull Properties properties) {
public @NotNull SQLManagerImpl create(@NotNull String name, @NotNull Properties properties) {
return create(name, new BeeDataSourceConfig(properties));
}
@Override
public @NotNull SQLManagerImpl create(@Nullable String name, @NotNull String propertyFileName) {
return create(name, new BeeDataSourceConfig(propertyFileName));
public @NotNull SQLManagerImpl create(@NotNull String name, @NotNull DataSource source) {
return new SQLManagerImpl(source, name);
}
public @NotNull SQLManagerImpl create(@Nullable String name, @NotNull BeeDataSourceConfig configuration) {
return new SQLManagerImpl(new BeeDataSource(configuration), name);
public @NotNull SQLManagerImpl create(@NotNull String name, @NotNull BeeDataSourceConfig configuration) {
return create(name, (DataSource) new BeeDataSource(configuration));
}
@Override
@@ -149,11 +143,11 @@ public class EasySQLRegistryImpl implements EasySQLRegistry {
return executorPool;
}
public static EasySQLRegistryImpl getInstance() {
public static MineSQLRegistry getInstance() {
return instance;
}
public EasySQLPluginPlatform getPlatform() {
public MineSQLPlatform getPlatform() {
return platform;
}
@@ -1,9 +1,9 @@
package cc.carm.plugin.easysql.command;
package cc.carm.plugin.minesql.command;
import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.lib.easysql.api.SQLQuery;
import cc.carm.plugin.easysql.EasySQLRegistryImpl;
import cc.carm.plugin.easysql.util.VersionReader;
import cc.carm.plugin.minesql.MineSQLRegistry;
import cc.carm.plugin.minesql.util.VersionReader;
import co.aikar.commands.BaseCommand;
import co.aikar.commands.CommandHelp;
import co.aikar.commands.CommandIssuer;
@@ -49,7 +49,7 @@ public class EasySQLCommand extends BaseCommand {
issuer.sendMessage("§8 - &f数据库驱动 h2-database §9" + reader.get("h2-driver"));
issuer.sendMessage("§r正在检查插件更新,请稍候...");
EasySQLRegistryImpl.getInstance().checkUpdate(pluginVersion);
MineSQLRegistry.getInstance().checkUpdate(pluginVersion);
}
@Subcommand("list")
@@ -59,7 +59,7 @@ public class EasySQLCommand extends BaseCommand {
issuer.sendMessage("§c只有后台执行才能使用此命令。");
return;
}
Map<String, ? extends SQLManager> runningManagers = EasySQLRegistryImpl.getInstance().list();
Map<String, ? extends SQLManager> runningManagers = MineSQLRegistry.getInstance().list();
if (runningManagers.isEmpty()) {
issuer.sendMessage("§r当前无正在运行的数据库管理器。");
} else {
@@ -1,4 +1,4 @@
package cc.carm.plugin.easysql.command;
package cc.carm.plugin.minesql.command;
import co.aikar.commands.*;
@@ -1,6 +1,6 @@
package cc.carm.plugin.easysql.configuration;
package cc.carm.plugin.minesql.configuration;
import cc.carm.plugin.easysql.api.DBConfiguration;
import cc.carm.plugin.minesql.api.DBConfiguration;
import org.jetbrains.annotations.NotNull;
import java.util.Map;
@@ -1,6 +1,5 @@
package cc.carm.plugin.easysql.util;
package cc.carm.plugin.minesql.util;
import cc.carm.plugin.easysql.util.JarResourceUtils;
import org.jetbrains.annotations.NotNull;
import java.io.File;
@@ -1,4 +1,4 @@
package cc.carm.plugin.easysql.util;
package cc.carm.plugin.minesql.util;
import org.jetbrains.annotations.Nullable;
@@ -1,4 +1,4 @@
package cc.carm.plugin.easysql.util;
package cc.carm.plugin.minesql.util;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -1,4 +1,4 @@
package cc.carm.plugin.easysql.util;
package cc.carm.plugin.minesql.util;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;