ca93066394ca6291d00b41789974da0599831319
[holmes/engine-management.git] / engine-d / src / main / java / org / onap / holmes / engine / utils / AlarmUtil.java
1 /**
2  * Copyright 2017 ZTE Corporation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.onap.holmes.engine.utils;
17
18 import java.util.HashMap;
19 import java.util.Map;
20 import org.jvnet.hk2.annotations.Service;
21 import org.onap.holmes.common.api.stat.Alarm;
22 import org.onap.holmes.common.producer.MQProducer;
23
24 @Service
25 public class AlarmUtil {
26
27     private final static AlarmUtil alarmUtil = new AlarmUtil();
28     /**
29      * Map<ruleId, <ProbableCause-EquipType, priority>>
30      */
31     private final Map<String, Map<String, Integer>> rootPriorityMap =
32         new HashMap<String, Map<String, Integer>>();
33     /**
34      * Map<rule, ProbableCause+EquipType+priority>
35      */
36     private final Map<String, String> saveRuleMsg = new HashMap<String, String>();
37
38     private AlarmUtil() {
39     }
40
41     public static AlarmUtil getInstance() {
42         return alarmUtil;
43     }
44
45     public boolean equipTypeFilter(String probableCauseStr, String equipType, Alarm alarm) {
46         if ("null".equals(probableCauseStr)) {
47             return true;
48         }
49         String[] equipTypes = equipType.replace(" ", "").split(",");
50         String[] probableCauseStrs = probableCauseStr.replace(" ", "").split(",");
51         for (int i = 0; i < probableCauseStrs.length; i++) {
52             if (alarm.getProbableCause() == Long.parseLong(probableCauseStrs[i])
53                 && alarm.getEquipType().equals(equipTypes[i])) {
54                 return true;
55             }
56         }
57         return false;
58     }
59
60     public Integer getPriority(String ruleId, String probableCauseStr, String rootAlarmFeatureStr,
61         String equipTypeStr, Alarm alarm) {
62         if (rootPriorityMap.containsKey(ruleId)) {
63             if (!saveRuleMsg.get(ruleId)
64                 .equals(probableCauseStr + equipTypeStr + rootAlarmFeatureStr)) {
65                 setPriority(ruleId, probableCauseStr, rootAlarmFeatureStr, equipTypeStr);
66             }
67         } else {
68             setPriority(ruleId, probableCauseStr, rootAlarmFeatureStr, equipTypeStr);
69         }
70
71         Integer priority =
72             rootPriorityMap.get(ruleId).get(alarm.getProbableCause() + "-" + alarm.getEquipType());
73         if (priority == null) {
74             priority = 0;
75         }
76         return priority;
77     }
78
79     private void setPriority(String ruleId, String probableCauseStr, String rootAlarmFeatureStr,
80         String equipTypeStr) {
81         saveRuleMsg.put(ruleId, probableCauseStr + equipTypeStr + rootAlarmFeatureStr);
82
83         Map<String, Integer> map = new HashMap<String, Integer>();
84         String[] probableCauseStrs = probableCauseStr.replace(" ", "").split(",");
85         String[] rootAlarmFeatureStrs = rootAlarmFeatureStr.replace(" ", "").split(",");
86         String[] equipTypes = equipTypeStr.replace(" ", "").split(",");
87         for (int i = 0; i < rootAlarmFeatureStrs.length; i++) {
88             map.put(probableCauseStrs[i] + "-" + equipTypes[i],
89                 Integer.parseInt(rootAlarmFeatureStrs[i]));
90         }
91
92         rootPriorityMap.put(ruleId, map);
93     }
94
95     public MQProducer getMqProducer() {
96         MQProducer mqProducer = new MQProducer();
97         return mqProducer;
98     }
99 }