Formatting Code base with ktlint
[ccsdk/cds.git] / ms / sdclistener / application / src / main / java / org / onap / ccsdk / cds / sdclistener / status / SdcListenerStatus.java
index ff64c0d..a24c0dd 100644 (file)
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.onap.ccsdk.cds.sdclistener.status;
 
-import static org.onap.sdc.utils.DistributionActionResultEnum.SUCCESS;
-import java.util.Objects;
 import org.onap.ccsdk.cds.sdclistener.dto.SdcListenerDto;
 import org.onap.ccsdk.cds.sdclistener.util.BuilderUtil;
 import org.onap.sdc.api.IDistributionClient;
-import org.onap.sdc.api.consumer.IFinalDistrStatusMessage;
+import org.onap.sdc.api.consumer.IComponentDoneStatusMessage;
+import org.onap.sdc.api.consumer.IDistributionStatusMessage;
 import org.onap.sdc.api.results.IDistributionClientResult;
 import org.onap.sdc.utils.DistributionStatusEnum;
 import org.slf4j.Logger;
@@ -31,6 +31,10 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.stereotype.Component;
 
+import java.util.Objects;
+
+import static org.onap.sdc.utils.DistributionActionResultEnum.SUCCESS;
+
 @Component
 @ConfigurationProperties("listenerservice")
 @ComponentScan("org.onap.ccsdk.cds.cdssdclistener.dto")
@@ -45,38 +49,72 @@ public class SdcListenerStatus {
     @Autowired
     private SdcListenerDto sdcListenerDto;
 
+
+    public enum NotificationType {
+        DOWNLOAD,
+        SDC_LISTENER_COMPONENT;
+    }
+
     /**
-     * Send the response back to SDC.
+     * Send the component status back to SDC.
      *
      * @param distributionID SDC Distribution ID
-     * @param status Distribution status
-     * @param errorReason Reason of failure
+     * @param status         Distribution status
+     * @param errorReason    Reason of failure if present
+     * @param url            Artifact URL
+     * @param type           - NotificationType(Download or Component)
      */
-    public void sendResponseStatusBackToSDC(String distributionID, DistributionStatusEnum status, String errorReason) {
-
+    public void sendResponseBackToSdc(String distributionID, DistributionStatusEnum status, String errorReason,
+                                      String url, NotificationType type) {
         final IDistributionClient distributionClient = sdcListenerDto.getDistributionClient();
 
-        IFinalDistrStatusMessage finalDistribution = new BuilderUtil<>(new DistributionStatusMessage())
-            .build(builder -> {
-                builder.distributionID = distributionID;
-                builder.status = status;
-                builder.consumerID = consumerId;
-                builder.componentName = COMPONENT_NAME;
-            }).create();
+        switch (type) {
+            case SDC_LISTENER_COMPONENT:
+                IComponentDoneStatusMessage componentStatusMessage = buildStatusMessage(distributionID, status, url,
+                        COMPONENT_NAME);
 
-        if (errorReason == null) {
-            checkResponseStatusFromSdc(distributionClient.sendFinalDistrStatus(finalDistribution));
-        } else {
-            checkResponseStatusFromSdc(distributionClient.sendFinalDistrStatus(finalDistribution, errorReason));
+                if (errorReason == null) {
+                    checkResponseStatusFromSdc(distributionClient.sendComponentDoneStatus(componentStatusMessage));
+                } else {
+                    checkResponseStatusFromSdc(
+                            distributionClient.sendComponentDoneStatus(componentStatusMessage, errorReason));
+                }
+                break;
+
+            case DOWNLOAD:
+                IDistributionStatusMessage downloadStatusMessage = buildStatusMessage(distributionID, status, url,
+                        null);
+
+                if (errorReason == null) {
+                    checkResponseStatusFromSdc(distributionClient.sendDownloadStatus(downloadStatusMessage));
+                } else {
+                    checkResponseStatusFromSdc(
+                            distributionClient.sendDownloadStatus(downloadStatusMessage, errorReason));
+                }
+            default:
+                break;
         }
     }
 
+    private ComponentStatusMessage buildStatusMessage(String distributionId, DistributionStatusEnum status, String url,
+                                                      String componentName) {
+        return new BuilderUtil<>(new ComponentStatusMessage()).build(builder -> {
+            builder.setDistributionID(distributionId);
+            builder.setStatus(status);
+            builder.setConsumerID(consumerId);
+            builder.setComponentName(componentName);
+            builder.setTimeStamp(System.currentTimeMillis());
+            builder.setArtifactUrl(url);
+        }).create();
+    }
+
     private void checkResponseStatusFromSdc(IDistributionClientResult result) {
         if (!Objects.equals(result.getDistributionActionResult(), SUCCESS)) {
             LOGGER.error("SDC failed to receive the response from cds-sdc listener due to {}",
-                result.getDistributionMessageResult());
+                    result.getDistributionMessageResult());
         } else {
             LOGGER.info("SDC successfully received the response");
         }
     }
+
 }