新增flags json序列化

This commit is contained in:
zhangyuheng 2024-05-30 18:20:40 +08:00
parent 5c3e0d847b
commit 31ba268f2f
1 changed files with 44 additions and 30 deletions

View File

@ -162,16 +162,50 @@ public enum Flag {
return Arrays.stream(Flag.values()).filter(flag -> flag.getFlagName().equals(flagName)).findFirst().orElse(null); return Arrays.stream(Flag.values()).filter(flag -> flag.getFlagName().equals(flagName)).findFirst().orElse(null);
} }
/* /*
{ {
flag_name: { flag_name: {
display_name: "", display_name: "",
description: "", description: "",
default_value: true, default_value: true,
enable: true enable: true
}
}
*/
public static JSONObject serializeToJson(Flag flag) {
JSONObject json = new JSONObject();
json.put("display_name", flag.getDisplayName());
json.put("description", flag.getDescription());
json.put("default_value", flag.getDefaultValue());
json.put("enable", flag.getEnable());
return json;
}
public static JSONObject serializeToJson() {
JSONObject json = new JSONObject();
for (Flag flag : getAllFlags()) {
JSONObject flagJson = serializeToJson(flag);
json.put(flag.getFlagName(), flagJson);
}
return json;
}
public static void deserializeFromJson(JSONObject jsonObject) {
for (Flag flag : getAllFlags()) {
try {
JSONObject flagJson = (JSONObject) jsonObject.get(flag.getFlagName());
if (flagJson != null) {
flag.setDisplayName((String) flagJson.get("display_name"));
flag.setDescription((String) flagJson.get("description"));
flag.setDefaultValue((Boolean) flagJson.get("default_value"));
flag.setEnable((Boolean) flagJson.get("enable"));
}
} catch (Exception e) {
XLogger.warn("读取权限 %s 配置失败:%s已跳过", flag.getFlagName(), e.getMessage());
} }
} }
*/ }
public static void loadFromJson() { public static void loadFromJson() {
try { try {
@ -184,19 +218,7 @@ public enum Flag {
XLogger.warn("读取权限配置失败,已重置"); XLogger.warn("读取权限配置失败,已重置");
saveToJson(); saveToJson();
} }
for (Flag flag : getAllFlags()) { deserializeFromJson(jsonObject);
try {
JSONObject flagJson = (JSONObject) jsonObject.get(flag.getFlagName());
if (flagJson != null) {
flag.setDisplayName((String) flagJson.get("display_name"));
flag.setDescription((String) flagJson.get("description"));
flag.setDefaultValue((Boolean) flagJson.get("default_value"));
flag.setEnable((Boolean) flagJson.get("enable"));
}
} catch (Exception e) {
XLogger.warn("读取权限 %s 配置失败:%s已跳过", flag.getFlagName(), e.getMessage());
}
}
saveToJson(); // 复写一遍确保文件中包含所有权限 saveToJson(); // 复写一遍确保文件中包含所有权限
} catch (Exception e) { } catch (Exception e) {
XLogger.err("读取权限配置失败:%s", e.getMessage()); XLogger.err("读取权限配置失败:%s", e.getMessage());
@ -205,15 +227,7 @@ public enum Flag {
public static void saveToJson() { public static void saveToJson() {
try { try {
JSONObject json = new JSONObject(); JSONObject json = serializeToJson();
for (Flag f : getAllFlags()) {
JSONObject flagJson = new JSONObject();
flagJson.put("display_name", f.getDisplayName());
flagJson.put("description", f.getDescription());
flagJson.put("default_value", f.getDefaultValue());
flagJson.put("enable", f.enable);
json.put(f.getFlagName(), flagJson);
}
XLogger.debug("保存权限配置:%s", json.toJSONString()); XLogger.debug("保存权限配置:%s", json.toJSONString());
File flagFile = new File(Dominion.instance.getDataFolder(), "flags.json"); File flagFile = new File(Dominion.instance.getDataFolder(), "flags.json");
JsonFile.saveToFile(json, flagFile); JsonFile.saveToFile(json, flagFile);