Implement 'Update Service by importing Tosca Model'-story
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / lifecycle / LifeCycleTransition.java
index 0057f61..9f1f060 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-
 package org.openecomp.sdc.be.components.lifecycle;
 
 import fj.data.Either;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
 import org.openecomp.sdc.be.components.lifecycle.LifecycleChangeInfoWithAction.LifecycleChanceActionEnum;
 import org.openecomp.sdc.be.config.ConfigurationManager;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
+import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao;
 import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
@@ -34,41 +36,35 @@ 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.operations.ToscaElementLifecycleOperation;
-import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaElementLifecycleOperation;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
 import org.openecomp.sdc.be.user.Role;
 import org.openecomp.sdc.exception.ResponseFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 public abstract class LifeCycleTransition {
 
     protected ConfigurationManager configurationManager;
     @Autowired
     protected ToscaElementLifecycleOperation lifeCycleOperation;
     @Autowired
-    protected TitanDao titanDao;
+    protected JanusGraphDao janusGraphDao;
     protected ComponentsUtils componentUtils;
-
     protected Map<ComponentTypeEnum, List<Role>> authorizedRoles;
     protected Map<ResourceTypeEnum, List<Role>> resourceAuthorizedRoles;
-
     ToscaOperationFacade toscaOperationFacade;
 
-    protected LifeCycleTransition(ComponentsUtils componentUtils, ToscaElementLifecycleOperation lifecycleOperation2, ToscaOperationFacade toscaOperationFacade, TitanDao titanDao) {
-
+    protected LifeCycleTransition(ComponentsUtils componentUtils, ToscaElementLifecycleOperation lifecycleOperation2,
+                                  ToscaOperationFacade toscaOperationFacade, JanusGraphDao janusGraphDao) {
         this.configurationManager = ConfigurationManager.getConfigurationManager();
         this.lifeCycleOperation = lifecycleOperation2;
         this.componentUtils = componentUtils;
         this.authorizedRoles = new HashMap<>();
         this.resourceAuthorizedRoles = new HashMap<>();
         this.toscaOperationFacade = toscaOperationFacade;
-        this.titanDao = titanDao;
+        this.janusGraphDao = janusGraphDao;
     }
 
     public abstract LifeCycleTransitionEnum getName();
@@ -107,53 +103,62 @@ public abstract class LifeCycleTransition {
         this.resourceAuthorizedRoles.put(resourceType, authorizedRoles);
     }
 
-    public abstract Either<? extends Component, ResponseFormat> changeState(ComponentTypeEnum componentType, Component component, ComponentBusinessLogic componentBl, User modifier, User owner, boolean needLock, boolean inTransaction);
-
-    public abstract Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier, User owner, LifecycleStateEnum oldState, LifecycleChangeInfoWithAction lifecycleChangeInfo);
+    public abstract <T extends Component> Either<T, ResponseFormat> changeState(ComponentTypeEnum componentType, Component component,
+                                                                                ComponentBusinessLogic componentBl, User modifier, User owner,
+                                                                                boolean needLock, boolean inTransaction);
 
-    public Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier, User owner, LifecycleStateEnum oldState) {
+    public abstract Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier,
+                                                                             User owner, LifecycleStateEnum oldState,
+                                                                             LifecycleChangeInfoWithAction lifecycleChangeInfo);
 
+    public Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier, User owner,
+                                                                    LifecycleStateEnum oldState) {
         return this.validateBeforeTransition(component, componentType, modifier, owner, oldState, null);
     }
 
     protected Either<User, ResponseFormat> getComponentOwner(Component component, ComponentTypeEnum componentType) {
-
         Either<User, StorageOperationStatus> resourceOwnerResult = getLifeCycleOperation().getToscaElementOwner(component.getUniqueId());
         if (resourceOwnerResult.isRight()) {
-            ResponseFormat responseFormat = componentUtils.getResponseFormatByComponent(componentUtils.convertFromStorageResponse(resourceOwnerResult.right().value()), component, componentType);
+            ResponseFormat responseFormat = componentUtils
+                .getResponseFormatByComponent(componentUtils.convertFromStorageResponse(resourceOwnerResult.right().value()), component,
+                    componentType);
             return Either.right(responseFormat);
         }
         return Either.left(resourceOwnerResult.left().value());
     }
 
-    protected Either<Boolean, ResponseFormat> userRoleValidation(User modifier,Component component, ComponentTypeEnum componentType, LifecycleChangeInfoWithAction lifecycleChangeInfo) {
-
+    protected Either<Boolean, ResponseFormat> userRoleValidation(User modifier, Component component, ComponentTypeEnum componentType,
+                                                                 LifecycleChangeInfoWithAction lifecycleChangeInfo) {
         // validate user
+
         //first check the user for the component and then for the resource
-        if (getAuthorizedRoles(componentType).contains(Role.valueOf(modifier.getRole())) || userResourceRoleValidation(component,componentType,modifier)) {
+        if (getAuthorizedRoles(componentType).contains(Role.valueOf(modifier.getRole())) || userResourceRoleValidation(component, componentType,
+            modifier)) {
             return Either.left(true);
         }
         // this is only used in 2 cases
-        //1. when creating vfc/cp when import vf from csar - when we
-        // create resources from node type, we create need to change the state
-        // to certified
+
+        //1. when creating vfc/cp when import vf from CSAR - when we
+        // create resources from node type, we create need to change the state to certified
+
         //2. certification flow upno upgrade migration
-        if (lifecycleChangeInfo != null && lifecycleChangeInfo.getAction() != null && (lifecycleChangeInfo.getAction() == LifecycleChanceActionEnum.CREATE_FROM_CSAR|| lifecycleChangeInfo.getAction() == LifecycleChanceActionEnum.UPGRADE_MIGRATION)) {
+        if (lifecycleChangeInfo != null && lifecycleChangeInfo.getAction() != null && (
+            lifecycleChangeInfo.getAction() == LifecycleChanceActionEnum.CREATE_FROM_CSAR
+                || lifecycleChangeInfo.getAction() == LifecycleChanceActionEnum.UPGRADE_MIGRATION)) {
             return Either.left(true);
         }
-
-        ResponseFormat responseFormat = componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION);
-        return Either.right(responseFormat);
+        return Either.right(componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION));
     }
 
     protected boolean userResourceRoleValidation(Component component, ComponentTypeEnum componentType, User modifier) {
-        if (componentType.equals(ComponentTypeEnum.RESOURCE)){
-            ResourceTypeEnum resourceType = ((ResourceMetadataDataDefinition)component.getComponentMetadataDefinition().getMetadataDataDefinition()).getResourceType();
-            if (getResourceAuthorizedRoles(resourceType)!=null && getResourceAuthorizedRoles(resourceType).contains(Role.valueOf(modifier.getRole()))) {
+        if (componentType.equals(ComponentTypeEnum.RESOURCE)) {
+            ResourceTypeEnum resourceType = ((ResourceMetadataDataDefinition) component.getComponentMetadataDefinition().getMetadataDataDefinition())
+                .getResourceType();
+            if (getResourceAuthorizedRoles(resourceType) != null && getResourceAuthorizedRoles(resourceType)
+                .contains(Role.valueOf(modifier.getRole()))) {
                 return true;
             }
         }
         return false;
     }
-
 }