diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java index c836e91b9b..15e9a77b15 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java @@ -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); + } } |