Add support to 7.1 VES data-stream in-parallel to 5.4
[holmes/engine-management.git] / engine-d / src / main / java / org / onap / holmes / dsa / dmaappolling / DMaaPResponseUtil.java
index e7d6669..394dc08 100644 (file)
@@ -18,10 +18,14 @@ package org.onap.holmes.dsa.dmaappolling;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParser;
 import org.jvnet.hk2.annotations.Service;
-import org.onap.holmes.common.api.stat.AlarmAdditionalField;
 import org.onap.holmes.common.api.stat.VesAlarm;
+import org.onap.holmes.common.api.stat.AlarmAdditionalField;
+import com.google.gson.Gson;
 
+import java.util.Map;
+import java.util.TimeZone;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 
 import static org.onap.holmes.common.utils.GsonUtil.*;
@@ -52,7 +56,9 @@ public class DMaaPResponseUtil {
         vesAlarm.setEventName(getAsString(commonEventHeaderJson, "eventName"));
         vesAlarm.setAlarmIsCleared(vesAlarm.getEventName().endsWith("Cleared") ? 1 : 0);
         vesAlarm.setEventType(getAsString(commonEventHeaderJson, "eventType"));
-        vesAlarm.setInternalHeaderFields(getAsString(commonEventHeaderJson, "internalHeaderFields"));
+        if (commonEventHeaderJson.has("internalHeaderFields")) {
+            vesAlarm.setInternalHeaderFields(commonEventHeaderJson.getAsJsonObject("internalHeaderFields").toString());
+        }
         vesAlarm.setLastEpochMicrosec(getAsLong(commonEventHeaderJson, "lastEpochMicrosec"));
         vesAlarm.setNfcNamingCode(getAsString(commonEventHeaderJson, "nfcNamingCode"));
         vesAlarm.setNfNamingCode(getAsString(commonEventHeaderJson, "nfNamingCode"));
@@ -63,19 +69,41 @@ public class DMaaPResponseUtil {
         vesAlarm.setSourceId(getAsString(commonEventHeaderJson, "sourceId"));
         vesAlarm.setSourceName(getAsString(commonEventHeaderJson, "sourceName"));
         vesAlarm.setStartEpochMicrosec(getAsLong(commonEventHeaderJson, "startEpochMicrosec"));
-        vesAlarm.setVersion(getAsLong(commonEventHeaderJson, "version"));
+        vesAlarm.setVersion(getAsString(commonEventHeaderJson, "version"));
+        vesAlarm.setNfVendorName(getAsString(commonEventHeaderJson, "nfVendorName"));
+        if (commonEventHeaderJson.has("timeZoneOffset")) {
+            TimeZone timeZone = TimeZone.getTimeZone(getAsString(commonEventHeaderJson, "timeZoneOffset"));
+            vesAlarm.setTimeZoneOffset(timeZone);
+        }
+        if (commonEventHeaderJson.has("vesEventListenerVersion")) {
+            vesAlarm.setVesEventListenerVersion(getAsString(commonEventHeaderJson, "vesEventListenerVersion"));
+        }
     }
 
     private void convertFaultFieldsJsonToEvent(JsonObject faultFieldsJson, VesAlarm vesAlarm) {
-        vesAlarm.setAlarmAdditionalInformation(getListElementByNode(faultFieldsJson, "alarmAdditionalInformation"));
         vesAlarm.setAlarmCondition(getAsString(faultFieldsJson, "alarmCondition"));
         vesAlarm.setAlarmInterfaceA(getAsString(faultFieldsJson, "alarmInterfaceA"));
         vesAlarm.setEventCategory(getAsString(faultFieldsJson, "eventCategory"));
         vesAlarm.setEventSeverity(getAsString(faultFieldsJson, "eventSeverity"));
         vesAlarm.setEventSourceType(getAsString(faultFieldsJson, "eventSourceType"));
-        vesAlarm.setFaultFieldsVersion(getAsLong(faultFieldsJson, "faultFieldsVersion"));
+        vesAlarm.setFaultFieldsVersion(getAsString(faultFieldsJson, "faultFieldsVersion"));
         vesAlarm.setSpecificProblem(getAsString(faultFieldsJson, "specificProblem"));
         vesAlarm.setVfStatus(getAsString(faultFieldsJson, "vfStatus"));
+        //Support VES Specificatin 5.4
+        if ("2.0".equals(vesAlarm.getFaultFieldsVersion())) {
+            List<AlarmAdditionalField> alarmAdditionalFieldList = getListElementByNode(faultFieldsJson, "alarmAdditionalInformation");
+            Map<String, String> alarmAdditionalInformation = new HashMap<String, String>();
+            for (AlarmAdditionalField field : alarmAdditionalFieldList) {
+                alarmAdditionalInformation.put(field.getName(), field.getValue());
+            }
+            vesAlarm.setAlarmAdditionalInformation(alarmAdditionalInformation);
+        } //Support VES Specification 7.1
+        else if (faultFieldsJson.has("alarmAdditionalInformation")) {
+            JsonObject alarmAddInfo = JsonParser.parseString(faultFieldsJson.get("alarmAdditionalInformation").toString()).getAsJsonObject();
+            Gson gson = new Gson();
+            Map map = gson.fromJson(alarmAddInfo, Map.class);
+            vesAlarm.setAlarmAdditionalInformation(map);
+        }
     }
 
     private List<AlarmAdditionalField> getListElementByNode(JsonObject jsonNode, String name) {