Released Version 1.4.7
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / api / stat / VesAlarm.java
1 /*
2  * Copyright 2017-2023 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
17 package org.onap.holmes.common.api.stat;
18
19 import lombok.Getter;
20 import lombok.Setter;
21
22 import java.io.Serializable;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.TimeZone;
26
27 @Getter
28 @Setter
29 public class VesAlarm implements Cloneable, Serializable{
30     private String domain;
31     private String eventId;
32     private String eventName;
33     private String eventType;
34     //Temporarily make it transient cuz no details of this field is provided and it is not used for now.
35     transient private Object internalHeaderFields;
36     private Long lastEpochMicrosec;
37     private String nfcNamingCode;
38     private String nfNamingCode;
39     private String priority;
40     private String reportingEntityId;
41     private String reportingEntityName;
42     private Integer sequence;
43     private String sourceId;
44     private String sourceName;
45     private Long startEpochMicrosec;
46     private String version;
47
48     private Map<String, String> alarmAdditionalInformation;
49     private String alarmCondition;
50     private String alarmInterfaceA;
51     private String eventCategory;
52     private String eventSeverity;
53     private String eventSourceType;
54     private String faultFieldsVersion;
55     private String specificProblem;
56     private String vfStatus;
57     private String parentId;
58     private int alarmIsCleared = 0;  //mark as 1 when alarm type is cleared, else mark as 0
59     private int rootFlag = 0;        // mark as 1 when alarm is a root alarm , else mark as 0
60     private String nfVendorName;
61     private String vesEventListenerVersion;
62     private TimeZone timeZoneOffset;
63
64     @Override
65     public int hashCode() {
66         return (this.getSourceId() + this.eventName.replace("Cleared", "")).hashCode();
67     }
68
69     @Override
70     public boolean equals(Object object) {
71         if (object == null || !(object instanceof VesAlarm)) {
72             return false;
73         }
74         return this.eventName.replace("Cleared", "")
75                 .equals(((VesAlarm) object).getEventName().replace("Cleared", ""))
76                 && this.getSourceId().equals(((VesAlarm) object).getSourceId());
77     }
78
79     @Override
80     public Object clone() throws CloneNotSupportedException {
81         VesAlarm vesAlarm = new VesAlarm();
82
83         vesAlarm.setDomain(this.domain);
84         vesAlarm.setEventId(this.getEventId());
85         vesAlarm.setEventName(this.getEventName());
86         vesAlarm.setEventType(this.getEventType());
87         vesAlarm.setInternalHeaderFields(this.getInternalHeaderFields());
88         vesAlarm.setLastEpochMicrosec(this.getLastEpochMicrosec());
89         vesAlarm.setNfcNamingCode(this.nfcNamingCode);
90         vesAlarm.setNfNamingCode(this.getNfNamingCode());
91         vesAlarm.setPriority(this.getPriority());
92         vesAlarm.setReportingEntityId(this.getReportingEntityId());
93         vesAlarm.setReportingEntityName(this.reportingEntityName);
94         vesAlarm.setSequence(this.getSequence());
95         vesAlarm.setSourceId(this.getSourceId());
96         vesAlarm.setSourceName(this.getSourceName());
97         vesAlarm.setStartEpochMicrosec(this.getStartEpochMicrosec());
98         vesAlarm.setVersion(this.getVersion());
99         if (alarmAdditionalInformation != null) {
100            Map<String, String> alarmAdditionalFields = new HashMap<String, String>();
101            for(String key: alarmAdditionalInformation.keySet()) {
102               alarmAdditionalFields.put(key, alarmAdditionalInformation.get(key));
103            }
104            vesAlarm.setAlarmAdditionalInformation(alarmAdditionalFields);
105         }
106         vesAlarm.setAlarmCondition(this.getAlarmCondition());
107         vesAlarm.setAlarmInterfaceA(this.getAlarmInterfaceA());
108         vesAlarm.setEventCategory(this.getEventCategory());
109         vesAlarm.setEventSeverity(this.getEventSeverity());
110         vesAlarm.setEventSourceType(this.getEventSourceType());
111         vesAlarm.setFaultFieldsVersion(this.getFaultFieldsVersion());
112         vesAlarm.setSpecificProblem(this.getSpecificProblem());
113         vesAlarm.setVfStatus(this.vfStatus);
114         vesAlarm.setAlarmIsCleared(this.alarmIsCleared);
115         vesAlarm.setRootFlag(this.rootFlag);
116         vesAlarm.setVesEventListenerVersion(this.vesEventListenerVersion);
117         vesAlarm.setNfVendorName(this.nfVendorName);
118         vesAlarm.setTimeZoneOffset(this.timeZoneOffset);
119
120         return vesAlarm;
121     }
122 }