Merge "CDS-SDC Listener application"
[ccsdk/apps.git] / ms / cds-sdc-listener / application / src / main / java / org / onap / ccsdk / apps / cdssdclistener / CdsSdcListenerNotificationCallback.java
diff --git a/ms/cds-sdc-listener/application/src/main/java/org/onap/ccsdk/apps/cdssdclistener/CdsSdcListenerNotificationCallback.java b/ms/cds-sdc-listener/application/src/main/java/org/onap/ccsdk/apps/cdssdclistener/CdsSdcListenerNotificationCallback.java
new file mode 100644 (file)
index 0000000..3574763
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 Bell Canada. All rights reserved.
+ *
+ * NOTICE:  All the intellectual and technical concepts contained herein are
+ * proprietary to Bell Canada and are protected by trade secret or copyright law.
+ * Unauthorized copying of this file, via any medium is strictly prohibited.
+ */
+
+package org.onap.ccsdk.apps.cdssdclistener;
+
+import static org.onap.sdc.utils.DistributionActionResultEnum.SUCCESS;
+import java.util.List;
+import org.onap.sdc.api.IDistributionClient;
+import org.onap.sdc.api.consumer.INotificationCallback;
+import org.onap.sdc.api.notification.IArtifactInfo;
+import org.onap.sdc.api.notification.INotificationData;
+import org.onap.sdc.api.results.IDistributionClientDownloadResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CdsSdcListenerNotificationCallback implements INotificationCallback {
+
+    @Autowired
+    private CdsSdcListenerDto cdsSdcListenerDto;
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(CdsSdcListenerNotificationCallback.class);
+
+    @Override
+    public void activateCallback(INotificationData notificationData) {
+        LOGGER.info(notificationData.getDistributionID(), "The UUID generated by SDC {}");
+        processNotification(notificationData);
+    }
+
+    private void processNotification(INotificationData notificationData) {
+        downlaodCsarArtifacts(notificationData.getServiceArtifacts());
+    }
+
+    /**
+     * Download the TOSCA CSAR artifact.
+     * @param artifactInfo - An object consists of Artifact information.
+     */
+    private void downlaodCsarArtifacts(List<IArtifactInfo> artifactInfo) {
+        final IDistributionClient distributionClient = cdsSdcListenerDto.getDistributionClient();
+
+        artifactInfo.forEach(info -> {
+            final String url = info.getArtifactURL();
+            final String id = info.getArtifactUUID();
+            if (info.getArtifactType().equals(CdsSdcListenerConfiguration.TOSCA_CSAR)) {
+                LOGGER.info("Trying to download the artifact from : {} and UUID is {} ", url, id);
+
+                IDistributionClientDownloadResult result = distributionClient.download(info);
+
+                if (!result.getDistributionActionResult().equals(SUCCESS)) {
+                    LOGGER.info("Failed to download the artifact from : {} due to {} ", url,
+                        result.getDistributionActionResult());
+                } else {
+                    parseCBAFileFromCsar(result);
+                }
+            }
+        });
+    }
+
+    private void parseCBAFileFromCsar(IDistributionClientDownloadResult result) {
+
+    }
+}