Migration to TAPI 2.4 Step2
[transportpce.git] / nbinotifications / src / main / java / org / opendaylight / transportpce / nbinotifications / utils / NbiNotificationsUtils.java
index af097c35b86d1ec0b222a59126c97f77ad95338b..582aaa02d37289838eaf70b668b892abeb41317a 100644 (file)
@@ -9,7 +9,24 @@ package org.opendaylight.transportpce.nbinotifications.utils;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Map;
 import java.util.Properties;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.NotificationTapiServiceBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.PublishTapiNotificationService;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfo;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfoBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.AdditionalInfoKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributes;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributesBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.ChangedAttributesKey;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectName;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectNameBuilder;
+import org.opendaylight.yang.gen.v1.nbi.notifications.rev230728.notification.tapi.service.TargetObjectNameKey;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.Name;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev221121.global._class.NameKey;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,4 +51,40 @@ public final class NbiNotificationsUtils {
         }
         return props;
     }
+
+    public static NotificationTapiService transformTapiNotification(PublishTapiNotificationService notification) {
+        Map<AdditionalInfoKey, AdditionalInfo> addInfoMap = notification.nonnullAdditionalInfo().values().stream()
+            .collect(Collectors.toMap(
+                    e -> new AdditionalInfoKey(e.getValueName()),
+                    e -> new AdditionalInfoBuilder(e).build()));
+        Map<ChangedAttributesKey, ChangedAttributes> changedAttMap = notification.nonnullChangedAttributes().values()
+                .stream().collect(Collectors.toMap(
+                        e -> new ChangedAttributesKey(e.getValueName()),
+                        e -> new ChangedAttributesBuilder(e).build()));
+        Map<NameKey, Name> nameMap = notification.nonnullName().values().stream()
+                .collect(Collectors.toMap(Name::key, Function.identity()));
+        Map<TargetObjectNameKey, TargetObjectName> targetObjNameMap = notification.nonnullTargetObjectName().values()
+                .stream().collect(Collectors.toMap(
+                        e -> new TargetObjectNameKey(e.getValueName()),
+                        e -> new TargetObjectNameBuilder(e).build()));
+        LOG.info("Notification uuid = {}", notification.getUuid());
+
+        return new NotificationTapiServiceBuilder()
+                .setAlarmInfo(notification.getAlarmInfo())
+                .setAdditionalText(notification.getAdditionalText())
+                .setAdditionalInfo(addInfoMap)
+                .setNotificationType(notification.getNotificationType())
+                .setChangedAttributes(changedAttMap)
+                .setEventTimeStamp(notification.getEventTimeStamp())
+                .setLayerProtocolName(notification.getLayerProtocolName())
+                .setName(nameMap)
+                .setSequenceNumber(notification.getSequenceNumber())
+                .setSourceIndicator(notification.getSourceIndicator())
+                .setTargetObjectIdentifier(notification.getTargetObjectIdentifier())
+                .setTargetObjectName(targetObjNameMap)
+                .setTargetObjectType(notification.getTargetObjectType())
+                .setTcaInfo(notification.getTcaInfo())
+                .setUuid(notification.getUuid())
+                .build();
+    }
 }