优化代码: 简化告警规则解析逻辑
优化后的代码:
if (bblength.length() < 168) {
jedis.set("Error", "PassRule");
} else {
List<Map<String, Object>> alarms = (List<Map<String, Object>>) map2.get("alarms");
for (Map<String, Object> alarm : alarms) {
String entityId = (String) alarm.get("id");
Map<String, Object> createRules = (Map<String, Object>) alarm.get("createRules");
for (String severity : Arrays.asList("MAJOR", "MINOR", "CRITICAL")) {
JSONObject severityJson = (JSONObject) createRules.get(severity);
if (severityJson != null) {
JSONObject conditionJson = (JSONObject) severityJson.get("condition");
Map<String, Object> conditionMap = parseJSON2Map(conditionJson.toString());
List<Map<String, Object>> conditions = (List<Map<String, Object>>) conditionMap.get("condition");
int operatorNum = ListNum(conditions);
if (operatorNum == 1) {
GreaterOrLessOrEqual(conditions, 1);
String defaultValueStr = String.valueOf(defaultValue);
jedis.mset("devicename", devicename, "entity_id", entityId, "model", severity, "operation", operation, "defaultValue", defaultValueStr, "i", String.valueOf(1));
MySqlRuleInset(devicename, entityId, severity, operation, defaultValue, 1);
} else if (operatorNum == 2 || operatorNum == 3) {
ForGreaterOrLessOrEqual(conditions, operatorNum, severity);
}
}
}
}
}
优化说明:
- 使用for-each循环遍历alarms列表和severity列表,减少重复代码和代码行数。
- 在循环中直接获取entityId、severityJson和conditionJson,减少重复代码和代码行数。
- 使用Arrays.asList方法创建severity列表,减少重复代码和代码行数。
- 将获取conditionMap和operatorNum的代码移到if语句外部,避免重复计算。
- 删除无用的注释和打印语句。
原文地址: https://www.cveoy.top/t/topic/nbuO 著作权归作者所有。请勿转载和采集!