From 4b1340b2d2d51d464b9a3fb6a8359857a8cb003d Mon Sep 17 00:00:00 2001 From: 502647092 Date: Sun, 25 Sep 2016 22:41:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E9=85=8D=E7=BD=AE=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 502647092 --- .../YumCore/config/AbstractInjectConfig.java | 47 ++++++++++++++++++- .../pw/yumc/YumCore/config/InjectConfig.java | 8 ++++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java b/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java index 9b47c4c..9656cbc 100644 --- a/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java +++ b/src/main/java/pw/yumc/YumCore/config/AbstractInjectConfig.java @@ -34,6 +34,18 @@ public abstract class AbstractInjectConfig { * 配置区 */ public void inject(final ConfigurationSection config) { + inject(config, false); + } + + /** + * 注入配置数据 + * + * @param config + * 配置区 + * @param save + * 是否为保存 + */ + public void inject(final ConfigurationSection config, final boolean save) { if (config == null) { Log.warning("尝试注入 ConfigurationSection 为 Null 的数据!"); return; @@ -49,10 +61,24 @@ public abstract class AbstractInjectConfig { path = node.value(); } field.setAccessible(true); - setField(path, field); + if (save) { + setConfig(path, field); + } else { + setField(path, field); + } } } + /** + * 自动化保存 + * + * @param config + * 配置文件区 + */ + public void save(final ConfigurationSection config) { + inject(config, true); + } + /** * 添加默认值 * @@ -156,7 +182,24 @@ public abstract class AbstractInjectConfig { } /** - * 通用解析流程 + * 通用保存流程 + * + * @param path + * 配置路径 + * @param field + * 字段 + */ + protected void setConfig(final String path, final Field field) { + try { + config.set(path, field.get(this)); + } catch (IllegalArgumentException | IllegalAccessException e) { + Log.w(INJECT_ERROR, e.getClass().getName(), e.getMessage()); + Log.debug(e); + } + } + + /** + * 通用读取流程 * * @param path * 配置路径 diff --git a/src/main/java/pw/yumc/YumCore/config/InjectConfig.java b/src/main/java/pw/yumc/YumCore/config/InjectConfig.java index 317433a..c2fe347 100644 --- a/src/main/java/pw/yumc/YumCore/config/InjectConfig.java +++ b/src/main/java/pw/yumc/YumCore/config/InjectConfig.java @@ -44,4 +44,12 @@ public abstract class InjectConfig extends AbstractInjectConfig { config.reload(); inject(config); } + + /** + * 自动化保存 + */ + public void save() { + save(config); + config.save(); + } }