1
0
mirror of https://e.coding.net/circlecloud/YumCore.git synced 2024-12-25 07:08:52 +00:00

feat: 添加自动化配置保存

Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
502647092 2016-09-25 22:41:34 +08:00
parent 36f79decfa
commit 4b1340b2d2
2 changed files with 53 additions and 2 deletions

View File

@ -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
* 配置路径

View File

@ -44,4 +44,12 @@ public abstract class InjectConfig extends AbstractInjectConfig {
config.reload();
inject(config);
}
/**
* 自动化保存
*/
public void save() {
save(config);
config.save();
}
}