From 3d62bad0c4c0aefb5618ed53bd3f2d62cde9bec0 Mon Sep 17 00:00:00 2001 From: CarmJos Date: Sun, 6 Mar 2022 20:51:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0log=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cc/carm/plugin/itemcommands/Main.java | 37 +++++-------- .../configuration/PluginConfig.java | 4 +- .../database/DBConfiguration.java | 49 +++++++++++++++++ .../itemcommands/database/DBTables.java | 26 +++++++++ .../itemcommands/database/DataManager.java | 53 +++++++++++++++++++ src/main/resources/config.yml | 5 +- 6 files changed, 147 insertions(+), 27 deletions(-) create mode 100644 src/main/java/cc/carm/plugin/itemcommands/database/DBConfiguration.java create mode 100644 src/main/java/cc/carm/plugin/itemcommands/database/DBTables.java create mode 100644 src/main/java/cc/carm/plugin/itemcommands/database/DataManager.java diff --git a/src/main/java/cc/carm/plugin/itemcommands/Main.java b/src/main/java/cc/carm/plugin/itemcommands/Main.java index 29afabe..36b57c3 100644 --- a/src/main/java/cc/carm/plugin/itemcommands/Main.java +++ b/src/main/java/cc/carm/plugin/itemcommands/Main.java @@ -8,7 +8,6 @@ import cc.carm.plugin.itemcommands.manager.ConfigManager; import cc.carm.plugin.itemcommands.util.JarResourceUtils; import org.bstats.bukkit.Metrics; import org.bukkit.Bukkit; -import org.bukkit.event.Listener; import java.util.Optional; @@ -21,27 +20,6 @@ public class Main extends EasyPlugin { instance = this; } - /** - * 注册监听器 - * - * @param listener 监听器 - */ - public static void regListener(Listener listener) { - Bukkit.getPluginManager().registerEvents(listener, getInstance()); - } - - public static void info(String... messages) { - getInstance().log(messages); - } - - public static void severe(String... messages) { - getInstance().error(messages); - } - - public static void debugging(String... messages) { - getInstance().debug(messages); - } - public static Main getInstance() { return instance; } @@ -75,7 +53,7 @@ public class Main extends EasyPlugin { @Override protected void shutdown() { - info("卸载监听器..."); + log("卸载监听器..."); Bukkit.getServicesManager().unregisterAll(this); } @@ -89,4 +67,17 @@ public class Main extends EasyPlugin { public void outputInfo() { Optional.ofNullable(JarResourceUtils.readResource(this.getResource("PLUGIN_INFO"))).ifPresent(this::log); } + + + public static void info(String... messages) { + getInstance().log(messages); + } + + public static void severe(String... messages) { + getInstance().error(messages); + } + + public static void debugging(String... messages) { + getInstance().debug(messages); + } } diff --git a/src/main/java/cc/carm/plugin/itemcommands/configuration/PluginConfig.java b/src/main/java/cc/carm/plugin/itemcommands/configuration/PluginConfig.java index 1c5d104..5601c41 100644 --- a/src/main/java/cc/carm/plugin/itemcommands/configuration/PluginConfig.java +++ b/src/main/java/cc/carm/plugin/itemcommands/configuration/PluginConfig.java @@ -16,8 +16,8 @@ public class PluginConfig { "check-update", Boolean.class, true ); - public static final ConfigValue STORAGE_METHOD = new ConfigValue<>( - "storage.method", String.class, "YAML" + public static final ConfigValue LOG_STORAGE = new ConfigValue<>( + "log-storage.enable", Boolean.class, true ); } diff --git a/src/main/java/cc/carm/plugin/itemcommands/database/DBConfiguration.java b/src/main/java/cc/carm/plugin/itemcommands/database/DBConfiguration.java new file mode 100644 index 0000000..b5ca86e --- /dev/null +++ b/src/main/java/cc/carm/plugin/itemcommands/database/DBConfiguration.java @@ -0,0 +1,49 @@ +package cc.carm.plugin.itemcommands.database; + +import cc.carm.lib.easyplugin.configuration.values.ConfigValue; + +public class DBConfiguration { + + protected static final ConfigValue DRIVER_NAME = new ConfigValue<>( + "log-storage.database.driver", String.class, + "com.mysql.cj.jdbc.Driver" + ); + + protected static final ConfigValue HOST = new ConfigValue<>( + "log-storage.database.host", String.class, + "127.0.0.1" + ); + + protected static final ConfigValue PORT = new ConfigValue<>( + "log-storage.database.port", Integer.class, + 3306 + ); + + protected static final ConfigValue DATABASE = new ConfigValue<>( + "log-storage.database.database", String.class, + "minecraft" + ); + + protected static final ConfigValue USERNAME = new ConfigValue<>( + "log-storage.database.username", String.class, + "root" + ); + + protected static final ConfigValue PASSWORD = new ConfigValue<>( + "log-storage.database.password", String.class, + "password" + ); + + protected static final ConfigValue EXTRA_SETTINGS = new ConfigValue<>( + "log-storage.database.extra", String.class, + "?useSSL=false" + ); + + protected static String buildJDBC() { + return String.format("jdbc:mysql://%s:%s/%s%s", + HOST.get(), PORT.get(), DATABASE.get(), EXTRA_SETTINGS.get() + ); + } + + +} diff --git a/src/main/java/cc/carm/plugin/itemcommands/database/DBTables.java b/src/main/java/cc/carm/plugin/itemcommands/database/DBTables.java new file mode 100644 index 0000000..099cc68 --- /dev/null +++ b/src/main/java/cc/carm/plugin/itemcommands/database/DBTables.java @@ -0,0 +1,26 @@ +package cc.carm.plugin.itemcommands.database; + +import cc.carm.lib.easyplugin.configuration.values.ConfigValue; + +public class DBTables { + + public static class LogTable { + + protected static final ConfigValue TABLE_NAME = new ConfigValue<>( + "log-storage.database.table-name", String.class, + "log_item_commands" + ); + + protected static final String[] TABLE_COLUMNS = new String[]{ + "`uuid` VARCHAR(36) NOT NULL PRIMARY KEY COMMENT '用户UUID'", // 用户的UUID + "`time` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户在线秒数'",// 用户在线时间(秒) + "`update` DATETIME NOT NULL " + + "DEFAULT CURRENT_TIMESTAMP " + + "ON UPDATE CURRENT_TIMESTAMP " + + " COMMENT '最后更新时间'" + }; + + } + + +} diff --git a/src/main/java/cc/carm/plugin/itemcommands/database/DataManager.java b/src/main/java/cc/carm/plugin/itemcommands/database/DataManager.java new file mode 100644 index 0000000..39eb33c --- /dev/null +++ b/src/main/java/cc/carm/plugin/itemcommands/database/DataManager.java @@ -0,0 +1,53 @@ +package cc.carm.plugin.itemcommands.database; + +import cc.carm.lib.easysql.EasySQL; +import cc.carm.lib.easysql.api.SQLManager; +import cc.carm.plugin.itemcommands.Main; + +import java.sql.SQLException; + +public class DataManager { + private SQLManager sqlManager; + + public boolean initialize() { + try { + Main.info(" 尝试连接到数据库..."); + this.sqlManager = EasySQL.createManager( + DBConfiguration.DRIVER_NAME.get(), DBConfiguration.buildJDBC(), + DBConfiguration.USERNAME.get(), DBConfiguration.PASSWORD.get() + ); + this.sqlManager.setDebugMode(() -> Main.getInstance().isDebugging()); + } catch (Exception exception) { + Main.severe("无法连接到数据库,请检查配置文件。"); + exception.printStackTrace(); + return false; + } + + try { + Main.info(" 创建插件记录所需表..."); + getSQLManager().createTable(DBTables.LogTable.TABLE_NAME.get()) + .setColumns(DBTables.LogTable.TABLE_COLUMNS) + .build().execute(); + + } catch (SQLException exception) { + Main.severe("无法创建插件所需的表,请检查数据库权限。"); + exception.printStackTrace(); + return false; + } + + return true; + } + + public void shutdown() { + Main.info(" 关闭数据库连接..."); + EasySQL.shutdownManager(getSQLManager()); + this.sqlManager = null; + } + + public SQLManager getSQLManager() { + return sqlManager; + } + + +} + diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d2fc665..ea538ee 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -15,7 +15,7 @@ metrics: true # 检查更新为异步操作,绝不会影响性能与使用体验。 check-update: true -log-stroage: +log-storage: # 是否启用日志记录存储 # 可用于追踪物品的发放、领取情况与执行记录。 enable: true @@ -31,4 +31,5 @@ log-stroage: username: "username" password: "password" extra: "?useSSL=false" - # 插件相关表的名称 \ No newline at end of file + # 插件相关表的名称 + table-name: "log_item_commands" \ No newline at end of file