Catalog alignment
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / ArchiveBusinessLogic.java
index c836e91..15e9a77 100644 (file)
@@ -23,12 +23,14 @@ package org.openecomp.sdc.be.components.impl;
 
 import com.google.common.annotations.VisibleForTesting;
 import fj.data.Either;
+import org.openecomp.sdc.be.catalog.enums.ChangeTypeEnum;
 import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
 import org.openecomp.sdc.be.components.validation.AccessValidations;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.jsongraph.JanusGraphDao;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
+import org.openecomp.sdc.be.facade.operations.CatalogOperation;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.ComponentParametersView;
@@ -40,10 +42,18 @@ import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
 import org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode;
 import org.openecomp.sdc.common.log.wrappers.Logger;
+import org.openecomp.sdc.exception.ResponseFormat;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
+import static org.openecomp.sdc.common.datastructure.FunctionalInterfaces.wrapWithTryCatch;
+
+
 @org.springframework.stereotype.Component
 public class ArchiveBusinessLogic {
 
@@ -54,13 +64,16 @@ public class ArchiveBusinessLogic {
     private final ArchiveOperation archiveOperation;
     private final ToscaOperationFacade toscaOperationFacade;
     private final ComponentsUtils componentUtils;
+       private final CatalogOperation catalogOperations;
 
-    public ArchiveBusinessLogic(JanusGraphDao janusGraphDao, AccessValidations accessValidations, ArchiveOperation archiveOperation, ToscaOperationFacade tof, ComponentsUtils componentsUtils) {
+    public ArchiveBusinessLogic(JanusGraphDao janusGraphDao, AccessValidations accessValidations, ArchiveOperation archiveOperation, ToscaOperationFacade tof, ComponentsUtils componentsUtils,
+       CatalogOperation catalogOperations) {
         this.janusGraphDao = janusGraphDao;
         this.accessValidations = accessValidations;
         this.archiveOperation = archiveOperation;
         this.toscaOperationFacade = tof;
         this.componentUtils = componentsUtils;
+               this.catalogOperations = catalogOperations;
     }
 
     public void archiveComponent(String containerComponentType, String userId, String componentId) {
@@ -71,6 +84,8 @@ public class ArchiveBusinessLogic {
             throw new ByActionStatusComponentException(result.right().value(), componentId);
         }
         this.auditAction(ArchiveOperation.Action.ARCHIVE, result.left().value(), user, containerComponentType);
+               // Send Archive Notification To Facade
+               wrapWithTryCatch(() -> sendNotificationToFacade(componentId, ChangeTypeEnum.ARCHIVE));
     }
 
     public void restoreComponent(String containerComponentType, String userId, String componentId) {
@@ -80,6 +95,8 @@ public class ArchiveBusinessLogic {
             throw new ByActionStatusComponentException(result.right().value(), componentId);
         }
         this.auditAction(ArchiveOperation.Action.RESTORE, result.left().value(), user, containerComponentType);
+               // Send Archive Notification To Facade
+               wrapWithTryCatch(() -> sendNotificationToFacade(componentId, ChangeTypeEnum.RESTORE));
     }
 
     public List<String> onVspArchive(String userId, List<String> csarUuids){
@@ -100,7 +117,7 @@ public class ArchiveBusinessLogic {
         for (String csarUuid : csarUuids) {
             try {
 
-                if (action.equals(ArchiveOperation.Action.ARCHIVE)) {
+                if (action == ArchiveOperation.Action.ARCHIVE) {
                     actionStatus = this.archiveOperation.onVspArchived(csarUuid);
                 } else {
                     actionStatus = this.archiveOperation.onVspRestored(csarUuid);
@@ -128,8 +145,6 @@ public class ArchiveBusinessLogic {
     public Map<String, List<CatalogComponent>> getArchiveComponents(String userId, List<OriginTypeEnum> excludeTypes) {
         try {
 
-            accessValidations.validateUserExist(userId, "GET ARCHIVED COMPONENTS");
-
             Either<List<CatalogComponent>, StorageOperationStatus> components = toscaOperationFacade.getCatalogOrArchiveComponents(false, excludeTypes);
             if (components.isLeft()) {
                 List<CatalogComponent> comps = components.left().value();
@@ -174,4 +189,16 @@ public class ArchiveBusinessLogic {
             }
         }
     }
+       protected Either<Component, ResponseFormat> sendNotificationToFacade(String componentId,
+                       ChangeTypeEnum changeStatus) {
+               log.debug("build {} notification for facade start", changeStatus.name());
+               Either<Component, StorageOperationStatus> toscaElement = toscaOperationFacade.getToscaElement(componentId);
+               Component component = toscaElement.left()
+                               .value();
+               ActionStatus status = catalogOperations.updateCatalog(changeStatus, component);
+               if (status != ActionStatus.OK) {
+                       return Either.right(componentUtils.getResponseFormat(status));
+               }
+               return Either.left(component);
+       }
 }