ConfigMatchUtil.java
2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.sitech.ismp.util;
/**
* 用于模糊匹配告警配置
*
* linxc 2013-05-03 修改模糊匹配算法
*/
public class ConfigMatchUtil {
public static boolean matchUNIT_ID(String cfgUnitId, String collUnitId) {
if (cfgUnitId == null || cfgUnitId.trim().length() == 0
|| cfgUnitId.trim().endsWith("*")
|| cfgUnitId.trim().equals(collUnitId.trim())) {
return true;
}
// 配置了unit_id, 那么进行kbp_class, instance逐项匹配
String[][] configs = splitUnitId(cfgUnitId);
String[][] colls = splitUnitId(collUnitId);
String[] cfgKbpClass = configs[0];
String[] collKbpClass = colls[0];
for (int i = 0; i < collKbpClass.length && i < cfgKbpClass.length; i++) {
if (!cfgKbpClass[i].trim().equals(collKbpClass[i].trim())) {
// KBP_CLASS不匹配
return false;
}
}
String[] configInstance = configs[1];
String[] collInstance = colls[1];
if (collInstance != null && collInstance.length > 0) {
// 采集子实体不为空
if (configInstance == null || configInstance.length == 0) {
// 当配置子实体为空时,匹配
return true;
}
if (configInstance != null
&& configInstance.length > collInstance.length) {
// 当配置子实体不为空并且长度大于采集子实体时,不匹配
return false;
}
for (int i = 0; i < configInstance.length; i++) {
if (!configInstance[i].trim().equals(collInstance[i].trim())) {
// 子实体不匹配
return false;
}
}
} else if (configInstance != null && configInstance.length > 0) {
return false;
}
return true;
}
public static boolean matchKPI_ID(String cfgKpiId, String collKpiId) {
if (cfgKpiId == null || cfgKpiId.trim().length() == 0
|| cfgKpiId.trim().endsWith("*")) {
return true;
} else {
return cfgKpiId.trim().equals(collKpiId.trim());
}
}
public static String[][] splitUnitId(String unitId) {
String[][] result = new String[2][];
String[] tmp = unitId.split(":");
result[0] = tmp[0].split("-");
if (tmp.length == 2) {
result[1] = tmp[1].split("-");
}
return result;
}
}