36ab3984528d93778cbf0a63b573a724be411db1
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.data.entity;
23
24 import java.util.regex.Matcher;
25 import java.util.regex.Pattern;
26 import javax.annotation.Nonnull;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Fault;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultcurrentEntity;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
30
31 public class FaultEntityManager {
32
33     private static final Pattern pattern = Pattern.compile(".*\\[layerProtocol=(.*)\\]");
34
35     /**
36      * The leading indication for notification or events that are not in the currentProblem data of the ONF Coremodel
37      */
38     private static final String NOCURRENTPROBLEMINDICATION = "#";
39
40     /**
41      * Specific problems are not moving into current problem list
42      * 
43      * @param problemName to be verified
44      * @return true if problem is current
45      */
46     public static boolean isManagedAsCurrentProblem(String problemName) {
47         return !problemName.startsWith(NOCURRENTPROBLEMINDICATION);
48     }
49
50     public static boolean isManagedAsCurrentProblem(Fault problem) {
51         return isManagedAsCurrentProblem(problem.getProblem());
52     }
53
54     /**
55      * Specific problems are not moving into current problem list
56      * 
57      * @param fault to be verified
58      * @return true if cleared indication
59      */
60     public static boolean isNoAlarmIndication(@Nonnull Fault fault) {
61         return SeverityType.NonAlarmed.equals(fault.getSeverity());
62     }
63
64     /**
65      * Create a specific ES id for the current log.
66      * 
67      * @return a string with the generated ES Id
68      */
69     public static String genSpecificEsId(String nodeName, String objectId, String problemName) {
70
71         String uuId;
72
73         Matcher matcher = pattern.matcher(objectId);
74         if (matcher.matches() && matcher.groupCount() == 1) {
75             uuId = matcher.group(1);
76         } else {
77             uuId = objectId;
78         }
79
80         StringBuffer strBuf = new StringBuffer();
81         strBuf.append(nodeName);
82         strBuf.append("/");
83         strBuf.append(uuId);
84         strBuf.append("/");
85         strBuf.append(problemName);
86         return strBuf.toString();
87     }
88
89     /**
90      * Create Es id
91      * 
92      * @param fault used to create uuid for faultcurrent
93      * @return String with Id
94      */
95     public static String genSpecificEsId(FaultcurrentEntity fault) {
96         return genSpecificEsId(fault.getNodeId(), fault.getObjectId(), fault.getProblem());
97     }
98 }