re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / lifecycle / CheckinTransition.java
index 9015ca0..0ea9662 100644 (file)
 
 package org.openecomp.sdc.be.components.lifecycle;
 
-import java.util.Arrays;
-
+import fj.data.Either;
 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
 import org.openecomp.sdc.be.config.BeEcompErrorManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
+import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.Component;
 import org.openecomp.sdc.be.model.LifeCycleTransitionEnum;
 import org.openecomp.sdc.be.model.LifecycleStateEnum;
 import org.openecomp.sdc.be.model.User;
 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
+import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElementTypeEnum;
 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation;
 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
+import org.openecomp.sdc.be.tosca.ToscaUtils;
 import org.openecomp.sdc.be.user.Role;
+import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.openecomp.sdc.exception.ResponseFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
-import fj.data.Either;
+import java.util.Arrays;
 
 public class CheckinTransition extends LifeCycleTransition {
 
-    private static final Logger log = LoggerFactory.getLogger(CheckinTransition.class);
+    private static final Logger log = Logger.getLogger(CheckinTransition.class);
 
     public CheckinTransition(ComponentsUtils componentUtils, ToscaElementLifecycleOperation lifecycleOperation, ToscaOperationFacade toscaOperationFacade, TitanDao titanDao) {
         super(componentUtils, lifecycleOperation, toscaOperationFacade, titanDao);
@@ -92,17 +93,18 @@ public class CheckinTransition extends LifeCycleTransition {
                 result =  Either.right(responseFormat);
             }
             else {
+                updateCalculatedCapabilitiesRequirements(checkinResourceResult.left().value());
                 result =  Either.left(ModelConverter.convertFromToscaElement(checkinResourceResult.left().value()));
             }
         } finally {
             if (result == null || result.isRight()) {
                 BeEcompErrorManager.getInstance().logBeDaoSystemError("Change LifecycleState");
-                if (inTransaction == false) {
+                if (!inTransaction) {
                     log.debug("operation failed. do rollback");
                     titanDao.rollback();
                 }
             } else {
-                if (inTransaction == false) {
+                if (!inTransaction) {
                     log.debug("operation success. do commit");
                     titanDao.commit();
                 }
@@ -133,7 +135,7 @@ public class CheckinTransition extends LifeCycleTransition {
             return Either.right(error);
         }
 
-        if (oldState.equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT) && !modifier.equals(owner) && !modifier.getRole().equals(Role.ADMIN.name())) {
+        if (oldState.equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT) && !modifier.getUserId().equals(owner.getUserId()) && !modifier.getRole().equals(Role.ADMIN.name())) {
             ResponseFormat error = componentUtils.getResponseFormat(ActionStatus.COMPONENT_CHECKOUT_BY_ANOTHER_USER, componentName, componentType.name().toLowerCase(), owner.getFirstName(), owner.getLastName(), owner.getUserId());
             return Either.right(error);
         }
@@ -145,4 +147,10 @@ public class CheckinTransition extends LifeCycleTransition {
 
         return Either.left(true);
     }
+
+    private void updateCalculatedCapabilitiesRequirements(ToscaElement toscaElement) {
+        if(toscaElement.getToscaType() == ToscaElementTypeEnum.TOPOLOGY_TEMPLATE && toscaElement.getResourceType() != ResourceTypeEnum.CVFC){
+            toscaOperationFacade.updateNamesOfCalculatedCapabilitiesRequirements(toscaElement.getUniqueId());
+        }
+    }
 }