1
mirror of https://github.com/CarmJos/MineSQL.git synced 2024-09-19 12:15:45 +00:00

Revert "feat(support): 恢复Sponge代码"

This reverts commit 58bddd86aa.
This commit is contained in:
Carm Jos 2023-01-14 17:07:57 +08:00
parent 58bddd86aa
commit 6456f0d2fe
3 changed files with 0 additions and 290 deletions

View File

@ -1,184 +0,0 @@
package cc.carm.plugin.minesql;
import cc.carm.lib.easysql.api.SQLManager;
import cc.carm.plugin.minesql.api.DBConfiguration;
import cc.carm.plugin.minesql.configuration.PluginConfiguration;
import cc.carm.plugin.minesql.util.DBPropertiesUtil;
import cc.carm.plugin.minesql.util.JarResourceUtils;
import cn.beecp.BeeDataSource;
import com.google.common.io.MoreFiles;
import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;
import org.bstats.charts.SimplePie;
import org.bstats.sponge.Metrics;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.api.Server;
import org.spongepowered.api.config.ConfigDir;
import org.spongepowered.api.event.Listener;
import org.spongepowered.api.event.lifecycle.StoppingEngineEvent;
import org.spongepowered.configurate.ConfigurateException;
import org.spongepowered.configurate.ConfigurationNode;
import org.spongepowered.configurate.hocon.HoconConfigurationLoader;
import org.spongepowered.plugin.PluginContainer;
import org.spongepowered.plugin.builtin.jvm.Plugin;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
/**
* 2022/6/20<br>
* MineSQL<br>
*
* @author huanmeng_qwq
*/
@Plugin("easysql-plugin")
public class MineSQLSponge implements MineSQLPlatform {
@Inject
@ConfigDir(sharedRoot = false)
private Path configDirectory;
@Inject
private org.apache.logging.log4j.Logger logger;
private static MineSQLSponge instance;
private ConfigurationNode root;
private PluginConfiguration configuration;
private MineSQLRegistry registry;
private PluginContainer pluginContainer;
private final Metrics metrics;
@Inject
public MineSQLSponge(Metrics.Factory factory, PluginContainer pluginContainer) {
this.metrics = factory.make(14075);
instance = this;
HoconConfigurationLoader loader = HoconConfigurationLoader.builder().path(resolveConfig()).build();
try {
this.root = loader.load();
this.configuration = new SpongeConfiguration(root);
this.registry = new MineSQLRegistry(this);
this.pluginContainer = pluginContainer;
enable();
} catch (ConfigurateException ex) {
throw new RuntimeException(ex);
}
}
@Listener
public void disable(StoppingEngineEvent<Server> e) {
getLog().info("终止全部数据库连接...");
for (String dbName : new HashSet<>(getRegistry().list().keySet())) {
getLog().info(" 正在关闭数据库 " + dbName + "...");
SQLManager manager = getRegistry().get(dbName);
getRegistry().shutdown(manager, activeQueries -> {
getLog().info(" 数据库 " + dbName + " 仍有有 " + activeQueries + " 条活动查询,强制关闭中...");
if (manager.getDataSource() instanceof BeeDataSource) {
BeeDataSource dataSource = (BeeDataSource) manager.getDataSource();
dataSource.close(); //Close bee connection pool
}
});
}
getRegistry().getManagers().clear(); // release all managers
}
public void enable() {
/*
//todo acf-commands not support sponge8
getLog().info("初始化指令管理器...");
getLog().info("注册相关指令...");
*/
if (getConfiguration().isMetricsEnabled()) {
getLog().info("启用统计数据...");
metrics.addCustomChart(new SimplePie("update_check",
() -> getConfiguration().isUpdateCheckerEnabled() ? "ENABLED" : "DISABLED")
);
metrics.addCustomChart(new SimplePie("properties_configuration",
() -> getConfiguration().isPropertiesEnabled() ? "ENABLED" : "DISABLED")
);
}
if (getConfiguration().isUpdateCheckerEnabled()) {
getLog().info("开始检查更新...");
getRegistry().checkUpdate(pluginContainer.metadata().version().getQualifier());
} else {
getLog().info("已禁用检查更新,跳过。");
}
}
@Override
public @NotNull Map<String, DBConfiguration> readConfigurations() {
return configuration.getDBConfigurations();
}
@Override
public @NotNull Map<String, Properties> readProperties() {
if (!getConfiguration().isPropertiesEnabled()) return new HashMap<>();
String propertiesFolder = getConfiguration().getPropertiesFolder();
if (propertiesFolder == null || propertiesFolder.length() == 0) return new HashMap<>();
File file = new File(configDirectory.toFile(), propertiesFolder);
if (!file.exists() || !file.isDirectory()) {
try {
JarResourceUtils.copyFolderFromJar(
"db-properties", file,
JarResourceUtils.CopyOption.COPY_IF_NOT_EXIST
);
} catch (Exception ex) {
logger.error("初始化properties示例文件失败" + ex.getMessage());
}
}
return DBPropertiesUtil.readFromFolder(file);
}
private Path resolveConfig() {
Path path = configDirectory.resolve("easysql.conf");
if (!Files.exists(path)) {
try {
//noinspection UnstableApiUsage
MoreFiles.createParentDirectories(configDirectory);
try (InputStream is = getClass().getClassLoader().getResourceAsStream("easysql.conf")) {
Files.copy(is, path);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return path;
}
public ConfigurationNode getRootConfig() {
return root;
}
public PluginConfiguration getConfiguration() {
return configuration;
}
@Override
public @NotNull MineSQLRegistry getRegistry() {
return registry;
}
public java.util.logging.Logger getLogger() {
return java.util.logging.Logger.getLogger("easysql-plugin");
}
public static MineSQLSponge getInstance() {
return instance;
}
public Logger getLog() {
return logger;
}
}

View File

@ -1,89 +0,0 @@
package cc.carm.plugin.minesql;
import cc.carm.plugin.minesql.api.DBConfiguration;
import cc.carm.plugin.minesql.api.SQLDriverType;
import cc.carm.plugin.minesql.configuration.PluginConfiguration;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.configurate.ConfigurationNode;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 2022/6/20<br>
* MineSQL<br>
*
* @author huanmeng_qwq
*/
public class SpongeConfiguration implements PluginConfiguration {
private final ConfigurationNode config;
public SpongeConfiguration(ConfigurationNode config) {
this.config = config;
}
@Override
public boolean isDebugEnabled() {
return config.node("debug").getBoolean(false);
}
@Override
public boolean isMetricsEnabled() {
return config.node("metrics").getBoolean(false);
}
@Override
public boolean isUpdateCheckerEnabled() {
return config.node("check-update").getBoolean(true);
}
@Override
public boolean isPropertiesEnabled() {
return config.node("properties", "enable").getBoolean(true);
}
@Override
public String getPropertiesFolder() {
return config.node("properties", "folder").getString("db-properties/");
}
@Override
public @NotNull Map<String, DBConfiguration> getDBConfigurations() {
Map<String, DBConfiguration> dbConfigurations = new LinkedHashMap<>();
ConfigurationNode dbConfigurationsSection = config.node("databases");
if (dbConfigurationsSection != null) {
for (Map.Entry<Object, ? extends ConfigurationNode> dbEntry : dbConfigurationsSection.childrenMap().entrySet()) {
if (dbEntry.getKey().toString().startsWith("example-")) continue;
ConfigurationNode dbSection = dbEntry.getValue();
if (dbSection == null) continue;
String driverString = dbSection.getString("driver-type");
SQLDriverType driverType = SQLDriverType.parse(driverString);
if (driverType == null) {
MineSQLSponge.getInstance().getLog().error("不存在预设的驱动类型 " + driverString + "," + " 请检查配置文件 databases." + dbEntry + "");
continue;
}
String host = dbSection.getString("host");
if (host == null) {
MineSQLSponge.getInstance().getLog().error("地址配置不得为空," + " 请检查配置文件 databases." + dbEntry + "");
continue;
}
int port = dbSection.node("port").getInt(-1);
if (port < 0) {
MineSQLSponge.getInstance().getLog().error("端口未配置正确," + " 请检查配置文件 databases." + dbEntry + "");
continue;
}
DBConfiguration dbConfiguration = DBConfiguration.create(driverType, host + ":" + port);
String username = dbSection.getString("username");
String password = dbSection.getString("password");
dbConfiguration.setUsername(username);
dbConfiguration.setPassword(password);
dbConfigurations.put(dbEntry.getKey().toString(), dbConfiguration);
}
}
return dbConfigurations;
}
}

View File

@ -1,17 +0,0 @@
debug = false
metrics = false
check-update = true
properties {
enable = true
folder = "db-properties/"
}
databases {
example-test {
driver-type = "MYSQL"
host = "localhost"
port = -1
username = "root"
password = "root"
}
}