diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations')
60 files changed, 6034 insertions, 4568 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAdditionalInformationOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAdditionalInformationOperation.java index 71167c395f..eb6492fa84 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAdditionalInformationOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAdditionalInformationOperation.java @@ -23,8 +23,8 @@ package org.openecomp.sdc.be.model.operations.api; import java.util.List; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; +import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; -import org.openecomp.sdc.be.model.AdditionalInfoParameterInfo; import org.openecomp.sdc.be.model.AdditionalInformationDefinition; import org.openecomp.sdc.be.resources.data.AdditionalInfoParameterData; @@ -35,60 +35,42 @@ import fj.data.Either; public interface IAdditionalInformationOperation { - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String key, String value); + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key, String value); - public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String origKey, String key, String value); + public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String origKey, String key, String value); - public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String key); + public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key); - public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, - String resourceUniqueId); + public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String resourceUniqueId); - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode( - NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters); + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters); - public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, - List<AdditionalInformationDefinition> properties); + public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties); - public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, - List<AdditionalInformationDefinition> properties); + public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties); - public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction); + public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction); - public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction); + public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction); - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction); + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction); - public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, - String resourceId, boolean inTransaction); + public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction); public Either<Integer, TitanOperationStatus> getNumberOfParameters(NodeTypeEnum nodeType, String resourceId); - public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id); + public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id); - public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction); + public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction); - public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification); + public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification); - public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction); + public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction); - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String resourceId, boolean inTransaction); + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction); - public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, - String componentId, TitanVertex matadatVertex); + public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, TitanVertex matadatVertex); - public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, - AdditionalInformationDefinition parameters, TitanVertex metadataVertex); + public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters, TitanVertex metadataVertex); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java index 873d05e1ed..5e8a2eb0d5 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java @@ -23,12 +23,12 @@ package org.openecomp.sdc.be.model.operations.api; import java.util.Map; import org.openecomp.sdc.be.dao.titan.TitanGenericDao; +import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.ArtifactDefinition; import org.openecomp.sdc.be.resources.data.ArtifactData; -import com.thinkaurelius.titan.core.TitanTransaction; import com.thinkaurelius.titan.core.TitanVertex; import fj.data.Either; @@ -51,7 +51,7 @@ public interface IArtifactOperation { public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifacts(String parentId, NodeTypeEnum parentType, boolean inTransaction, String groupType); - Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean inTransaction); + Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean failIfExist); public void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion); @@ -61,10 +61,20 @@ public interface IArtifactOperation { public Either<ArtifactData, StorageOperationStatus> updateToscaArtifactNameOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id); + public StorageOperationStatus addArifactToComponent(ArtifactDefinition artifactInfo, String parentId, NodeTypeEnum type, boolean failIfExist, TitanVertex parentVertex); public Either<ArtifactData, StorageOperationStatus> getLatestArtifactDataByArtifactUUID(String artifactUUID, boolean inTransaction); StorageOperationStatus addArifactToComponent(TitanVertex artifactInfo, TitanVertex parentVertex, String label); + public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact); + + public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvPlaceholder(ArtifactDefinition artifactInfo, boolean inTransaction); + + public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvArtifact( String id, ArtifactDefinition artifactEnvInfo, String oldArtifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction); + + public Either<ArtifactDefinition, StorageOperationStatus> getHeatEnvByGeneratedFromId(String generatedFromId); + + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java index e50b658121..f8e8c80f12 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java @@ -37,16 +37,14 @@ import com.thinkaurelius.titan.core.TitanVertex; import fj.data.Either; /** - * public interface ICapabilityInstanceOperation provides methods for CRUD - * operations for CapabilityInstance on component instance level + * public interface ICapabilityInstanceOperation provides methods for CRUD operations for CapabilityInstance on component instance level * * @author ns019t * */ public interface ICapabilityInstanceOperation { /** - * create capability instance of capability with property values for - * resource instance + * create capability instance of capability with property values for resource instance * * @param resourceInstanceId * @param capabilityId @@ -55,8 +53,7 @@ public interface ICapabilityInstanceOperation { * @param capabilityName * @return */ - public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance( - String resourceInstanceId, String capabilityId, String capabilityName, + public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName, List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistance); /** @@ -68,8 +65,7 @@ public interface ICapabilityInstanceOperation { * @param validateCapabilityInstExistence * @return */ - public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance( - TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName, + public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName, List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence); /** @@ -79,8 +75,7 @@ public interface ICapabilityInstanceOperation { * @param capabilityId * @return */ - public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, - String capabilityId); + public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, String capabilityId); /** * delete capability instance from resource instance @@ -89,20 +84,16 @@ public interface ICapabilityInstanceOperation { * @param capabilityInstanceId * @return */ - public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance( - String resourceInstanceId, String capabilityInstanceId); + public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId); /** - * get all capability instances for resource instance returns all Capability - * Instances related to Resource Instance as List<CapabilityInstData> or - * TitanOperationStatus if error occurs or if Resource Instance have no any - * related Capability Instance + * get all capability instances for resource instance returns all Capability Instances related to Resource Instance as List<CapabilityInstData> or TitanOperationStatus if error occurs or if Resource Instance have no any related Capability + * Instance * * @param resourceInstanceId * @return Either<List<CapabilityInstData>, TitanOperationStatus> */ - public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance( - String resourceInstanceId); + public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String resourceInstanceId); /** * get capability instance of capability for resource instance @@ -111,8 +102,7 @@ public interface ICapabilityInstanceOperation { * @param capabilityId * @return */ - public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance( - String resourceInstanceId, String capabilityId); + public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance(String resourceInstanceId, String capabilityId); /** * update capability property values @@ -123,8 +113,7 @@ public interface ICapabilityInstanceOperation { * @param capabilityId * @return */ - public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues( - String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues); + public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues); /** * clone and associate capability instance with property values @@ -134,10 +123,8 @@ public interface ICapabilityInstanceOperation { * @param capabilityInstPair * @return */ - public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues( - ComponentInstanceData createdComponentInstance, CapabilityDefinition capability, + public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(ComponentInstanceData createdComponentInstance, CapabilityDefinition capability, ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair); - Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, - String resourceInstanceId, String capabilityId); + Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java index 3b692b9607..b3be2bd6ee 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java @@ -29,6 +29,7 @@ import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.model.CapabilityDefinition; import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.resources.data.CapabilityData; +import org.openecomp.sdc.be.resources.data.CapabilityTypeData; import org.openecomp.sdc.be.resources.data.PropertyData; import com.thinkaurelius.titan.core.TitanVertex; @@ -37,11 +38,9 @@ import fj.data.Either; public interface ICapabilityOperation { - public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, - CapabilityDefinition capabilityDefinition); + public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition); - public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, - CapabilityDefinition capabilityDefinition, boolean inTransaction); + public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction); /** * @param uniqueId @@ -53,27 +52,22 @@ public interface ICapabilityOperation { public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId); - public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId, - boolean inTransaction); + public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId, boolean inTransaction); - public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getAllCapabilitiesPairs( - String resourceId); + public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getAllCapabilitiesPairs(String resourceId); - public Either<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllCapabilities(String resourceId, - boolean inTransaction); + public Either<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllCapabilities(String resourceId, boolean inTransaction); - public Either<CapabilityDefinition, TitanOperationStatus> getCapabilityByCapabilityData( - CapabilityData capabilityData); + public Either<CapabilityDefinition, TitanOperationStatus> getCapabilityByCapabilityData(CapabilityData capabilityData); public TitanOperationStatus getCapabilitySourcesList(String resourceId, List<String> derivedFromList); - public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, - String capabilityType, List<PropertyDefinition> newProperties); + public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties); - public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, - String capabilityType, List<PropertyDefinition> newProperties, boolean inTransaction); + public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties, boolean inTransaction); - StorageOperationStatus addCapability(TitanVertex metadataVertex, String resourceId, String capabilityName, - CapabilityDefinition capabilityDefinition, boolean inTransaction); + StorageOperationStatus addCapability(TitanVertex metadataVertex, String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction); + + Either<CapabilityTypeData, TitanOperationStatus> getCapabilityTypeOfCapability(String uniqueId); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityTypeOperation.java index 6f0b5b8d13..fa06b468db 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityTypeOperation.java @@ -30,11 +30,9 @@ public interface ICapabilityTypeOperation { * @param capabilityTypeDefinition * @return */ - public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType( - CapabilityTypeDefinition capabilityTypeDefinition); + public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType(CapabilityTypeDefinition capabilityTypeDefinition); - public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType( - CapabilityTypeDefinition capabilityTypeDefinition, boolean inTransaction); + public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType(CapabilityTypeDefinition capabilityTypeDefinition, boolean inTransaction); /** * @param uniqueId @@ -42,6 +40,5 @@ public interface ICapabilityTypeOperation { */ public Either<CapabilityTypeDefinition, StorageOperationStatus> getCapabilityType(String uniqueId); - public Either<CapabilityTypeDefinition, StorageOperationStatus> getCapabilityType(String uniqueId, - boolean inTransaction); + public Either<CapabilityTypeDefinition, StorageOperationStatus> getCapabilityType(String uniqueId, boolean inTransaction); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java index e51e077906..28e70ad127 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang3.tuple.ImmutablePair; +import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; @@ -34,8 +35,12 @@ import org.openecomp.sdc.be.model.ComponentInstanceInput; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.RequirementAndRelationshipPair; import org.openecomp.sdc.be.model.RequirementCapabilityRelDef; +import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.resources.data.AttributeValueData; +import org.openecomp.sdc.be.resources.data.CapabilityData; import org.openecomp.sdc.be.resources.data.ComponentInstanceData; +import org.openecomp.sdc.be.resources.data.RequirementData; +import org.openecomp.sdc.exception.ResponseFormat; import fj.data.Either; @@ -52,9 +57,8 @@ public interface IComponentInstanceOperation { * @param inTransaction * @return */ - public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, - NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, - NodeTypeEnum instNodeType, boolean inTransaction); + public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum instNodeType, + boolean inTransaction); /** * add resource instance to service with internal transaction @@ -64,9 +68,7 @@ public interface IComponentInstanceOperation { * @param componentInstance * @return */ - public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, - NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, - NodeTypeEnum instNodeType); + public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum instNodeType); /** * delete resource instance from component @@ -78,11 +80,9 @@ public interface IComponentInstanceOperation { * @param inTransaction * @return */ - public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, - String containerComponentId, String resourceInstUid, boolean inTransaction); + public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid, boolean inTransaction); - public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, - String containerComponentId, String resourceInstUid); + public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid); /** * associate 2 resource instances for a given requirement @@ -106,16 +106,13 @@ public interface IComponentInstanceOperation { // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid, // String toResInstanceUid, String requirement, String relationship); - public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, - NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction); + public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction, boolean isClone); - public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, - NodeTypeEnum nodeType, RequirementCapabilityRelDef relation); + public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation); /** * - * dissociate the relation between 2 resource instances for a given - * requirement + * dissociate the relation between 2 resource instances for a given requirement * * @param serviceId * @param fromResInstanceUid @@ -124,11 +121,9 @@ public interface IComponentInstanceOperation { * @param inTransaction * @return */ - public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, - NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction); + public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction); - public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, - NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef); + public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef); /** * update the properties of a given resource instance @@ -139,30 +134,31 @@ public interface IComponentInstanceOperation { * @param inTransaction * @return */ - public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, - NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance, - boolean inTransaction); + public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance, boolean inTransaction); - public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, - NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance); + public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance); /** - * get all resource instances of a given service and the relations between - * the resource instances + * get all resource instances of a given service and the relations between the resource instances * * @param serviceId * @param inTransaction * @return */ - public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances( - String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction); - - public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, - NodeTypeEnum nodeType, boolean inTransaction); + public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances(String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction); - public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, - NodeTypeEnum nodeType); + public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, NodeTypeEnum nodeType, boolean inTransaction); + public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, NodeTypeEnum nodeType); + + /** + * get all component instance properties and values from graph + * @param resourceInstance + * @return + */ + public Either<List<ComponentInstanceProperty>, StorageOperationStatus> getComponentInstancesPropertiesAndValuesFromGraph( + ComponentInstance resourceInstance); + /** * get resource instance from id * @@ -171,54 +167,38 @@ public interface IComponentInstanceOperation { */ public Either<ComponentInstance, StorageOperationStatus> getResourceInstanceById(String resourceId); - public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, - NodeTypeEnum nodeType, boolean inTransaction); + public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, NodeTypeEnum nodeType, boolean inTransaction); - public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, - NodeTypeEnum nodeType); + public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, NodeTypeEnum nodeType); - public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter( - String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction); + public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction); public String createComponentInstLogicalName(String instanceNumber, String componentInstanceName); - public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId, - NodeTypeEnum parentNodeType, String compInstId, String componentInstName); + public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName); - public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId, - boolean inTransaction); + public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId, boolean inTransaction); - public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance( - ComponentInstance componentInstance, NodeTypeEnum compInstNodeType); + public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType); - public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance, - RequirementAndRelationshipPair relationPair); + public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance, RequirementAndRelationshipPair relationPair); - public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance, - RequirementAndRelationshipPair relationPair); + public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance, RequirementAndRelationshipPair relationPair); - public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance( - ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, - boolean inTransaction); + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction); - public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance( - ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, - Integer index, boolean inTransaction); + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction); /** * Adds Attribute to resource instance * * @param resourceInstanceAttribute - * * @param resourceInstanceId * @param index * @param - * inTransaction + * * @param resourceInstanceId * @param index * @param inTransaction * @return **/ - public Either<ComponentInstanceAttribute, StorageOperationStatus> addAttributeValueToResourceInstance( - ComponentInstanceAttribute resourceInstanceAttribute, String resourceInstanceId, Integer index, - boolean inTransaction); + public Either<ComponentInstanceAttribute, StorageOperationStatus> addAttributeValueToResourceInstance(ComponentInstanceAttribute resourceInstanceAttribute, String resourceInstanceId, Integer index, boolean inTransaction); - public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance( - ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction); + public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction); /** * Updates Attribute on resource instance @@ -228,19 +208,32 @@ public interface IComponentInstanceOperation { * @param inTransaction * @return */ - public Either<ComponentInstanceAttribute, StorageOperationStatus> updateAttributeValueInResourceInstance( - ComponentInstanceAttribute attribute, String resourceInstanceId, boolean inTransaction); + public Either<ComponentInstanceAttribute, StorageOperationStatus> updateAttributeValueInResourceInstance(ComponentInstanceAttribute attribute, String resourceInstanceId, boolean inTransaction); - public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance( - ComponentInstanceAttribute attributeInstanceProperty, String resourceInstanceId); + public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance(ComponentInstanceAttribute attributeInstanceProperty, String resourceInstanceId); + + public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance(ComponentInstanceInput input, String resourceInstanceId, Integer innerElement, boolean b); + + public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(ComponentInstanceInput input, String resourceInstanceId, boolean b); + + public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId); + + public StorageOperationStatus updateCustomizationUUID(String componentInstanceId); + /** + * updates componentInstance modificationTime on graph node + * @param componentInstance + * @param componentInstanceType + * @param modificationTime + * @param inTransaction + * @return + */ + public Either<ComponentInstanceData, StorageOperationStatus> updateComponentInstanceModificationTimeAndCustomizationUuidOnGraph(ComponentInstance componentInstance, NodeTypeEnum componentInstanceType, Long modificationTime, boolean inTransaction); - public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance( - ComponentInstanceInput input, String resourceInstanceId, Integer innerElement, boolean b); + Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum); - public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance( - ComponentInstanceInput input, String resourceInstanceId, boolean b); + Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum); - public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts( - String componentInstanceId); + Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getFulfilledCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum); + Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getFulfilledRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java index e7eff13a9d..3eef59fa69 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java @@ -28,23 +28,23 @@ import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.ArtifactDefinition; import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.ComponentParametersView; import fj.data.Either; public interface IComponentOperation { public <T extends Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz); - public Either<List<ArtifactDefinition>, StorageOperationStatus> getComponentArtifactsForDelete(String parentId, - NodeTypeEnum parentType, boolean inTransacton); + public Either<List<ArtifactDefinition>, StorageOperationStatus> getComponentArtifactsForDelete(String parentId, NodeTypeEnum parentType, boolean inTransacton); public <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction); public <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction); + + public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction); - public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, - boolean inTranscation); + public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTranscation); - public <T extends GraphNode> Either<T, StorageOperationStatus> getComponentByLabelAndId(String uniqueId, - NodeTypeEnum nodeType, Class<T> clazz); + public <T extends GraphNode> Either<T, StorageOperationStatus> getComponentByLabelAndId(String uniqueId, NodeTypeEnum nodeType, Class<T> clazz); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IConsumerOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IConsumerOperation.java index 290552b382..ed43b7ce1f 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IConsumerOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IConsumerOperation.java @@ -32,9 +32,7 @@ public interface IConsumerOperation { * @param consumerData * the object we want to store * @param inTransaction - * inTransaction is the operation part of a transaction, in case - * the value is false the action will be committed in the end of - * the method + * inTransaction is the operation part of a transaction, in case the value is false the action will be committed in the end of the method * @return the updated object returned from the graph */ Either<ConsumerData, StorageOperationStatus> updateCredentials(ConsumerData consumerData, boolean inTransaction); @@ -52,12 +50,9 @@ public interface IConsumerOperation { * the method deletes the node with the given unique id * * @param consumerName - * the unique id by witch we will look up the credential we want - * to delete + * the unique id by witch we will look up the credential we want to delete * @param inTransaction - * inTransaction is the operation part of a transaction, in case - * the value is false the action will be committed in the end of - * the method + * inTransaction is the operation part of a transaction, in case the value is false the action will be committed in the end of the method * @return the deleted object returned from the graph */ Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName, boolean inTransaction); @@ -66,28 +61,24 @@ public interface IConsumerOperation { * the method deletes the node with the given unique id * * @param consumerName - * the unique id by witch we will look up the credential we want - * to delete + * the unique id by witch we will look up the credential we want to delete * @return the deleted object returned from the graph */ Either<ConsumerData, StorageOperationStatus> deleteCredentials(String consumerName); /** - * the method creates a new nod in the grape representing the supplied - * credential object + * the method creates a new nod in the grape representing the supplied credential object * * @param consumerData * the object we want to store * @param inTransaction - * is the operation part of a transaction, in case the value is - * false the action will be committed in the end of the method + * is the operation part of a transaction, in case the value is false the action will be committed in the end of the method * @return the newly stored object returned from the graph */ Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction); /** - * the method creates a new nod in the grape representing the supplied - * credential object + * the method creates a new nod in the grape representing the supplied credential object * * @param consumerData * the object we want to store diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IDataTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IDataTypeOperation.java index b7f1882b45..9377abbb76 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IDataTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IDataTypeOperation.java @@ -32,8 +32,7 @@ public interface IDataTypeOperation { */ public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition); - public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, - boolean inTransaction); + public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, boolean inTransaction); /** * @param name diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java index a21c194060..0a82be8465 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IElementOperation.java @@ -54,18 +54,15 @@ public interface IElementOperation { public Either<Integer, ActionStatus> getDefaultHeatTimeout(); - public <T extends GraphNode> Either<CategoryData, StorageOperationStatus> getCategoryData(String name, - NodeTypeEnum type, Class<T> clazz); + public <T extends GraphNode> Either<CategoryData, StorageOperationStatus> getCategoryData(String name, NodeTypeEnum type, Class<T> clazz); - public <T extends GraphNode> Either<org.openecomp.sdc.be.resources.data.category.CategoryData, StorageOperationStatus> getNewCategoryData( - String name, NodeTypeEnum type, Class<T> clazz); + public <T extends GraphNode> Either<org.openecomp.sdc.be.resources.data.category.CategoryData, StorageOperationStatus> getNewCategoryData(String name, NodeTypeEnum type, Class<T> clazz); public Either<Map<String, String>, ActionStatus> getResourceTypesMap(); Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType); - Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType, - boolean inTransaction); + Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction); Either<CategoryDefinition, ActionStatus> deleteCategory(NodeTypeEnum nodeType, String categoryId); @@ -73,32 +70,25 @@ public interface IElementOperation { Either<Boolean, ActionStatus> isCategoryUniqueForType(NodeTypeEnum nodeType, String normalizedName); - Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, - NodeTypeEnum nodeType); + Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType); - Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, - NodeTypeEnum nodeType, boolean inTransaction); + Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction); Either<List<CategoryDefinition>, ActionStatus> getAllCategories(NodeTypeEnum nodeType, boolean inTransaction); Either<CategoryDefinition, ActionStatus> getCategory(NodeTypeEnum nodeType, String categoryId); - Either<SubCategoryDefinition, ActionStatus> getSubCategoryUniqueForType(NodeTypeEnum nodeType, - String normalizedName); + Either<SubCategoryDefinition, ActionStatus> getSubCategoryUniqueForType(NodeTypeEnum nodeType, String normalizedName); - Either<Boolean, ActionStatus> isSubCategoryUniqueForCategory(NodeTypeEnum nodeType, String subCategoryNormName, - String parentCategoryId); + Either<Boolean, ActionStatus> isSubCategoryUniqueForCategory(NodeTypeEnum nodeType, String subCategoryNormName, String parentCategoryId); - Either<GroupingDefinition, ActionStatus> createGrouping(String subCategoryId, GroupingDefinition grouping, - NodeTypeEnum nodeType); + Either<GroupingDefinition, ActionStatus> createGrouping(String subCategoryId, GroupingDefinition grouping, NodeTypeEnum nodeType); Either<GroupingDefinition, ActionStatus> deleteGrouping(NodeTypeEnum nodeType, String groupingId); Either<SubCategoryDefinition, ActionStatus> getSubCategory(NodeTypeEnum nodeType, String subCategoryId); - Either<Boolean, ActionStatus> isGroupingUniqueForSubCategory(NodeTypeEnum nodeType, String groupingNormName, - String parentSubCategoryId); + Either<Boolean, ActionStatus> isGroupingUniqueForSubCategory(NodeTypeEnum nodeType, String groupingNormName, String parentSubCategoryId); - Either<GroupingDefinition, ActionStatus> getGroupingUniqueForType(NodeTypeEnum nodeType, - String groupingNormalizedName); + Either<GroupingDefinition, ActionStatus> getGroupingUniqueForType(NodeTypeEnum nodeType, String groupingNormalizedName); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGraphLockOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGraphLockOperation.java index d065ce0b09..29da56205a 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGraphLockOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGraphLockOperation.java @@ -30,7 +30,6 @@ public interface IGraphLockOperation { public abstract StorageOperationStatus lockComponentByName(String name, NodeTypeEnum nodeType); - public abstract StorageOperationStatus unlockComponentByName(String name, String componentId, - NodeTypeEnum nodeType); + public abstract StorageOperationStatus unlockComponentByName(String name, String componentId, NodeTypeEnum nodeType); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java new file mode 100644 index 0000000000..8fd88f704f --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java @@ -0,0 +1,101 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.model.operations.api; + + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; +import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; +import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; +import org.openecomp.sdc.be.model.ArtifactDefinition; + +import org.openecomp.sdc.be.model.ComponentInstance; + +import org.openecomp.sdc.be.model.ComponentInstanceProperty; +import org.openecomp.sdc.be.model.GroupDefinition; +import org.openecomp.sdc.be.model.GroupInstance; +import org.openecomp.sdc.be.model.GroupInstanceProperty; +import org.openecomp.sdc.be.resources.data.ArtifactData; +import org.openecomp.sdc.exception.ResponseFormat; + +import com.thinkaurelius.titan.core.TitanVertex; + +import fj.data.Either; + +public interface IGroupInstanceOperation { + + public Either<GroupInstance, StorageOperationStatus> createGroupInstance(String ComponentInstId, GroupInstance groupInstance, boolean isCreateLogicalName); + + public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName); + + public Either<GroupInstance, StorageOperationStatus> deleteGroupInstanceInstance(NodeTypeEnum containerNodeType, String containerComponentId, String groupInstUid); + + public Either<GroupInstance, StorageOperationStatus> updateGroupInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance); + + public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String componentInstId, NodeTypeEnum compInstNodeType); + + public Either<GroupInstance, TitanOperationStatus> getGroupInstanceById(String groupResourceId); + + public TitanOperationStatus deleteAllGroupInstances(String componentInstId); + + public Either<Integer, StorageOperationStatus> increaseAndGetGroupInstancePropertyCounter(String groupInstanceId); + + public Either<Boolean, StorageOperationStatus> isGroupInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName); + + public Either<ComponentInstance, StorageOperationStatus> getFullGroupInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType); + + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction); + + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction); + + public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInGroupInstance(ComponentInstanceProperty gropuInstanceProperty, String groupInstanceId, boolean inTransaction); + + public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId); + + public StorageOperationStatus updateCustomizationUUID(String componentInstanceId); + + public String createGroupInstLogicalName(String instanceNumber, String groupInstanceName); + + public Either<GroupInstance, StorageOperationStatus> associateArtifactsToGroupInstance(String groupId, List<String> artifactsId); + + StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); + + StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); + /** + * updates group instance property values + * @param value + * @param newProperties + * @return + */ + public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance value, List<GroupInstanceProperty> newProperties); + /** + * updates group instance property values + * @param oldGroupInstance + * @param newProperties + * @param inTransaction + * @return + */ + public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties, Boolean inTransaction); + +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java index 4252ec0622..3295adfe56 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java @@ -26,6 +26,7 @@ import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.GroupDefinition; +import org.openecomp.sdc.be.model.GroupProperty; import org.openecomp.sdc.be.resources.data.ArtifactData; import org.openecomp.sdc.be.resources.data.GroupData; @@ -34,17 +35,13 @@ import fj.data.Either; public interface IGroupOperation { // add full group to component - public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition); + public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition); - public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition); + public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition); - public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition, boolean inTransaction); + public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition, boolean inTransaction); - public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, - String componentId, List<GroupDefinition> groups, boolean inTransaction); + public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, String componentId, List<GroupDefinition> groups, boolean inTransaction); // get group public Either<GroupDefinition, TitanOperationStatus> getGroupFromGraph(String uniqueId); @@ -54,61 +51,55 @@ public interface IGroupOperation { public Either<GroupDefinition, StorageOperationStatus> getGroup(String uniqueId, boolean inTransaction); // get all groups under component - public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, - NodeTypeEnum componentTypeEnum); + public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum); - public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, - NodeTypeEnum compTypeEnum, boolean inTransaction); + public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction); - public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, - NodeTypeEnum compTypeEnum); + public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum); // delete all groups under component - public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, - NodeTypeEnum compTypeEnum); + public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, NodeTypeEnum compTypeEnum); - public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, - NodeTypeEnum compTypeEnum, boolean inTransaction); + public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction); - public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, - NodeTypeEnum compTypeEnum); + public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum); // Association - public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance( - String componentInstanceId, boolean inTransaction); + public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId, boolean inTransaction); - public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance( - String componentInstanceId); + public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId); - public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph( - String componentInstanceId); + public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph(String componentInstanceId); - public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, - String compInstName, boolean inTransaction); + public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName, boolean inTransaction); - public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, - String compInstName); + public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName); - public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph( - List<String> groups, String componentInstanceId, String compInstName); + public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph(List<String> groups, String componentInstanceId, String compInstName); - public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, - NodeTypeEnum componentTypeEnum, String artifactId); + public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String artifactId); - public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, - String artifactId, boolean inTransaction); + public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId, boolean inTransaction); - public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, - String artifactId); + public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId); - public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); + public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); - public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact, boolean inTransaction); + public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact, boolean inTransaction); - public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); + public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact); public boolean isGroupExist(String groupName, boolean inTransaction); + /** + * Updates Group Metadata (name and properties) + * @param groupToUpdateFromUniqueId + * @param newName + * @param groupToUpdateTo + * @param inTransaction + * @return + */ + public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId, + String newName, GroupDefinition groupToUpdateTo, boolean inTransaction); + + public StorageOperationStatus validateAndUpdatePropertyValue(GroupProperty property); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupTypeOperation.java index 2b612579b6..87a0dccfab 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupTypeOperation.java @@ -34,8 +34,7 @@ public interface IGroupTypeOperation { */ public Either<GroupTypeDefinition, StorageOperationStatus> addGroupType(GroupTypeDefinition groupTypeDefinition); - public Either<GroupTypeDefinition, StorageOperationStatus> addGroupType(GroupTypeDefinition groupTypeDefinition, - boolean inTransaction); + public Either<GroupTypeDefinition, StorageOperationStatus> addGroupType(GroupTypeDefinition groupTypeDefinition, boolean inTransaction); /** * @param uniqueId @@ -47,14 +46,11 @@ public interface IGroupTypeOperation { public Either<GroupTypeDefinition, StorageOperationStatus> getLatestGroupTypeByType(String name); - public Either<GroupTypeDefinition, StorageOperationStatus> getLatestGroupTypeByType(String name, - boolean inTransaction); + public Either<GroupTypeDefinition, StorageOperationStatus> getLatestGroupTypeByType(String name, boolean inTransaction); - public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String name, - String version); + public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String name, String version); - public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String name, String version, - boolean inTransaction); + public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String name, String version, boolean inTransaction); public Either<GroupTypeData, TitanOperationStatus> getLatestGroupTypeByNameFromGraph(String name); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java index 2f1f2a70cf..386864a8b0 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java @@ -39,43 +39,33 @@ import fj.data.Either; public interface IInputsOperation { - Either<String, StorageOperationStatus> deleteInput(String inputId); + Either<InputDefinition, StorageOperationStatus> deleteInput(String inputId); - Either<List<InputDefinition>, TitanOperationStatus> addInputsToGraph(String componentId, NodeTypeEnum nodeType, - Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes); + Either<List<InputDefinition>, TitanOperationStatus> addInputsToGraph(String componentId, NodeTypeEnum nodeType, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes); - Either<List<InputDefinition>, StorageOperationStatus> addInputsToComponent(String resourceId, NodeTypeEnum nodeType, - ComponentInstInputsMap componentInsInputs, Map<String, DataTypeDefinition> dataTypes); + Either<List<InputDefinition>, StorageOperationStatus> addInputsToComponent(String resourceId, NodeTypeEnum nodeType, ComponentInstInputsMap componentInsInputs, Map<String, DataTypeDefinition> dataTypes); TitanOperationStatus findNodeNonInheretedInputs(String uniqueId, List<InputDefinition> inputs); - Either<List<InputDefinition>, StorageOperationStatus> getInputsOfComponent(String compId, String fromName, - int amount); + Either<List<InputDefinition>, StorageOperationStatus> getInputsOfComponent(String compId, String fromName, int amount); - Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllInputsOfResourceInstance( - ComponentInstance compInstance); + Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllInputsOfResourceInstance(ComponentInstance compInstance); - Either<Map<String, InputDefinition>, StorageOperationStatus> deleteAllInputsAssociatedToNode(NodeTypeEnum nodeType, - String uniqueId); + Either<Map<String, InputDefinition>, StorageOperationStatus> deleteAllInputsAssociatedToNode(NodeTypeEnum nodeType, String uniqueId); // TitanOperationStatus findNodeNonInheretedAttribues(String uniqueId, // NodeTypeEnum nodeType, List<AttributeDefinition> attributes); - Either<InputsData, StorageOperationStatus> addInput(String inputName, InputDefinition inputDefinition, - String componentId, NodeTypeEnum nodeType); + Either<InputsData, StorageOperationStatus> addInput(String inputName, InputDefinition inputDefinition, String componentId, NodeTypeEnum nodeType); - Either<InputsData, TitanOperationStatus> addInputToGraph(String propertyName, InputDefinition inputDefinition, - String componentId, NodeTypeEnum nodeType); + Either<InputsData, TitanOperationStatus> addInputToGraph(String propertyName, InputDefinition inputDefinition, String componentId, NodeTypeEnum nodeType); - Either<AttributeData, StorageOperationStatus> updateInput(String inputId, InputDefinition newInDef, - Map<String, DataTypeDefinition> dataTypes); + Either<AttributeData, StorageOperationStatus> updateInput(String inputId, InputDefinition newInDef, Map<String, DataTypeDefinition> dataTypes); TitanOperationStatus findAllResourceInputs(String uniqueId, List<InputDefinition> inputs); - Either<InputDefinition, StorageOperationStatus> getInputById(String uniqueId, boolean skipProperties, - boolean skipinputsValue); + Either<InputDefinition, StorageOperationStatus> getInputById(String uniqueId, boolean skipProperties, boolean skipinputsValue); - TitanOperationStatus addInputsToGraph(TitanVertex metadata, String componentId, Map<String, InputDefinition> inputs, - Map<String, DataTypeDefinition> dataTypes); + TitanOperationStatus addInputsToGraph(TitanVertex metadata, String componentId, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java index bbcb61fea8..e46460a502 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java @@ -33,17 +33,13 @@ import fj.data.Either; public interface IInterfaceLifecycleOperation { - public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceOnResource(InterfaceDefinition interf, - String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction); + public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction); - public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, - String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex); + public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex); - public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, - String resourceId, String interfaceName); + public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName); - public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, - String resourceId, String interfaceName, boolean inTransaction); + public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean inTransaction); // public Either<InterfaceDefinition, StorageOperationStatus> // getInterface(String interfaceId); @@ -51,42 +47,31 @@ public interface IInterfaceLifecycleOperation { // public Either<InterfaceDefinition, StorageOperationStatus> // getInterface(String interfaceId, boolean inTransaction); - public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, - String operationName, Operation interf); + public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation interf); - public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, - String operationName, Operation interf, boolean inTransaction); + public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation interf, boolean inTransaction); - public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, - String operationName); + public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationName); - public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, - String operationName, boolean inTransaction); + public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationName, boolean inTransaction); - public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource( - String resourceId, boolean recursively, boolean inTransaction); + public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceId, boolean recursively, boolean inTransaction); - public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource( - String resourceId, boolean recursively); + public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceId, boolean recursively); - public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, - InterfaceDefinition interfaceDef, boolean inTransaction); + public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, InterfaceDefinition interfaceDef, boolean inTransaction); public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf); - public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf, - boolean inTransaction); + public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf, boolean inTransaction); public Either<InterfaceDefinition, StorageOperationStatus> getInterface(String interfaceId); - public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, - TitanVertex metadataVertex); + public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, TitanVertex metadataVertex); - public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, - String operationName); + public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, String operationName); - public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, - InterfaceDefinition interfaceDefinition); + public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, InterfaceDefinition interfaceDefinition); public String getShortInterfaceName(InterfaceDataDefinition interfaceDefinition); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java index 3b82eb692c..ab99f20d4c 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java @@ -33,32 +33,23 @@ public interface ILifecycleOperation { public ResourceOperation getResourceOperation(); - public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, - boolean inTransaction); + public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, - Component component, User modifier, User currentOwner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, - Component component, User modifier, User currentOwner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, - Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean b); + public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean b); - public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, - String componentName, String uuid, boolean inTransaction); + public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, String componentName, String uuid, boolean inTransaction); - public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component resource, - User modifier, User currentOwner, boolean inTransaction); + public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component resource, User modifier, User currentOwner, boolean inTransaction); public ComponentOperation getComponentOperation(NodeTypeEnum componentType); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPolicyTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPolicyTypeOperation.java index fc689c81e2..d25d11331d 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPolicyTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPolicyTypeOperation.java @@ -32,7 +32,6 @@ public interface IPolicyTypeOperation { Either<PolicyTypeDefinition, StorageOperationStatus> getPolicyType(String uniqueId, boolean inTransaction); - Either<PolicyTypeDefinition, StorageOperationStatus> addPolicyType(PolicyTypeDefinition policyType, - boolean inTransaction); + Either<PolicyTypeDefinition, StorageOperationStatus> addPolicyType(PolicyTypeDefinition policyType, boolean inTransaction); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java index bbfea262a7..76f95f3c2b 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java @@ -37,8 +37,7 @@ public interface IProductOperation extends IComponentOperation { public Either<Product, StorageOperationStatus> deleteProduct(String productId, boolean inTransaction); - public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); + public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); public void rollback(); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java index 6309510f6d..f9f960fdbf 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java @@ -41,9 +41,7 @@ public interface IPropertyOperation { * @param id * @return * - * public Either<PropertyDefinition, StorageOperationStatus> - * addPropertyToResource( String propertyName, PropertyDefinition - * propertyDefinition, NodeTypeEnum nodeType, String id); + * public Either<PropertyDefinition, StorageOperationStatus> addPropertyToResource( String propertyName, PropertyDefinition propertyDefinition, NodeTypeEnum nodeType, String id); */ /** @@ -55,8 +53,7 @@ public interface IPropertyOperation { * - resource unique id * @return */ - public Either<PropertyDefinition, StorageOperationStatus> getPropertyOfResource(String propertyName, - String resourceId); + public Either<PropertyDefinition, StorageOperationStatus> getPropertyOfResource(String propertyName, String resourceId); /** * Delete all properties of resource @@ -65,16 +62,13 @@ public interface IPropertyOperation { * @param uniqueId * @return */ - public Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllPropertiesAssociatedToNode( - NodeTypeEnum nodeType, String uniqueId); + public Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllPropertiesAssociatedToNode(NodeTypeEnum nodeType, String uniqueId); - public boolean isPropertyDefaultValueValid(IComplexDefaultValue propertyDefinition, - Map<String, DataTypeDefinition> dataTypes); + public boolean isPropertyDefaultValueValid(IComplexDefaultValue propertyDefinition, Map<String, DataTypeDefinition> dataTypes); public boolean isPropertyTypeValid(IComplexDefaultValue propertyDefinition); - public ImmutablePair<String, Boolean> isPropertyInnerTypeValid(IComplexDefaultValue propertyDefinition, - Map<String, DataTypeDefinition> dataTypes); + public ImmutablePair<String, Boolean> isPropertyInnerTypeValid(IComplexDefaultValue propertyDefinition, Map<String, DataTypeDefinition> dataTypes); /** * @param dataTypeDefinition @@ -82,8 +76,7 @@ public interface IPropertyOperation { */ public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition); - public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, - boolean inTransaction); + public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, boolean inTransaction); /** * @param name @@ -93,18 +86,14 @@ public interface IPropertyOperation { public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByName(String name, boolean inTransaction); - public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name, - boolean inTransaction); + public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name, boolean inTransaction); public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name); - public StorageOperationStatus validateAndUpdateProperty(IComplexDefaultValue propertyDefinition, - Map<String, DataTypeDefinition> dataTypes); + public StorageOperationStatus validateAndUpdateProperty(IComplexDefaultValue propertyDefinition, Map<String, DataTypeDefinition> dataTypes); - public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, - DataTypeDefinition oldDataTypeDefinition, boolean inTransaction); + public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition, boolean inTransaction); - public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, - DataTypeDefinition oldDataTypeDefinition); + public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java index a7a9bf6013..a2af44cf61 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java @@ -42,17 +42,13 @@ public interface IRequirementOperation { * @param uniqueId * @return */ - public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, - RequirementDefinition reqDefinition, String resourceId); + public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId); - public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, - RequirementDefinition reqDefinition, String resourceId, boolean inTransaction); + public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction); - public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, - RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId); + public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId); - public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, - RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction); + public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction); /** * get requirement of resource @@ -61,25 +57,19 @@ public interface IRequirementOperation { * @param resourceId * @return */ - public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, - String resourceId); + public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId); - public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, - String resourceId, boolean inTransaction); + public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId, boolean inTransaction); - public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements( - String resourceId, boolean inTransaction); + public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId, boolean inTransaction); - Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly( - String resourceId, boolean inTransaction); + Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly(String resourceId, boolean inTransaction); public Either<Map<String, RequirementDefinition>, TitanOperationStatus> getResourceRequirements(String resourceId); - public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, - boolean inTransaction); + public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, boolean inTransaction); public Either<RequirementDefinition, TitanOperationStatus> getRequirement(String uniqueId); - StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, - RequirementDefinition reqDefinition, String resourceId, boolean inTransaction); + StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java index 759380c236..01db3a5105 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java @@ -51,21 +51,17 @@ public interface IResourceOperation extends IComponentOperation { public Either<Resource, StorageOperationStatus> getResource(String resourceId, boolean inTransaction); /** - * the method retrieves all the certified resources, the returned values are - * only abstract or only none abstract according to the supplied parameters. + * the method retrieves all the certified resources, the returned values are only abstract or only none abstract according to the supplied parameters. * * @param getAbstract - * the value defines which resources to return only abstract or - * only none abstract + * the value defines which resources to return only abstract or only none abstract * @return */ public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean getAbstract); - public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean getAbstract, - Boolean isHighest); + public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean getAbstract, Boolean isHighest); - public Either<Boolean, StorageOperationStatus> validateResourceNameExists(String resourceName, - ResourceTypeEnum resourceType); + public Either<Boolean, StorageOperationStatus> validateResourceNameExists(String resourceName, ResourceTypeEnum resourceType); public Either<Resource, StorageOperationStatus> deleteResource(String resourceId); @@ -80,39 +76,31 @@ public interface IResourceOperation extends IComponentOperation { // public Either<List<ArtifactDefinition>, StorageOperationStatus> // getResourceArtifactsForDelete(Resource resource); - public Either<List<Resource>, StorageOperationStatus> getFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); + public Either<List<Resource>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); - public Either<Set<Resource>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, - boolean inTransaction); + public Either<Set<Resource>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction); public Either<Resource, StorageOperationStatus> getLatestByName(String resourceName, boolean inTransaction); - public Either<Resource, StorageOperationStatus> overrideResource(Resource resource, Resource resourceSaved, - boolean inTransaction); + public Either<Resource, StorageOperationStatus> overrideResource(Resource resource, Resource resourceSaved, boolean inTransaction); - public Either<List<Resource>, StorageOperationStatus> getTesterFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction); + public Either<List<Resource>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction); public Either<List<Resource>, StorageOperationStatus> getResourceListByUuid(String uuid, boolean inTransaction); public Either<List<Resource>, StorageOperationStatus> getLatestResourceByUuid(String uuid, boolean inTransaction); - public Either<List<Resource>, StorageOperationStatus> getResourceListBySystemName(String systemName, - boolean inTransaction); + public Either<List<Resource>, StorageOperationStatus> getResourceListBySystemName(String systemName, boolean inTransaction); public Either<List<Resource>, StorageOperationStatus> getResourceCatalogData(boolean inTransaction); - public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataVFLatestCertifiedAndNonCertified( - boolean inTransaction); + public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataVFLatestCertifiedAndNonCertified(boolean inTransaction); - public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version, - boolean inTransaction); + public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version, boolean inTransaction); public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version); - public Either<Resource, StorageOperationStatus> getResourceBySystemNameAndVersion(String name, String version, - Map<String, Object> additionalParams, boolean inTransaction); + public Either<Resource, StorageOperationStatus> getResourceBySystemNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction); // public Either<List<Resource>, StorageOperationStatus> // getAllNotCheckoutResources(boolean getAbstract); @@ -124,8 +112,35 @@ public interface IResourceOperation extends IComponentOperation { public Either<Boolean, StorageOperationStatus> isResourceInUse(String resourceToDelete); - public Either<Resource, StorageOperationStatus> getLatestByToscaResourceName(String toscaResourceName, - boolean inTransaction); + public Either<Resource, StorageOperationStatus> getLatestByToscaResourceName(String toscaResourceName, boolean inTransaction); public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExists(String templateName); + + public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExtends(String templateNameCurrent, String templateNameExtends); + + /** + * + * @param resource the resource to look for its derived resources + * @return all resources which derives from the given resource + */ + Either<List<Resource>, StorageOperationStatus> getAllDerivedResources(Resource resource); + + /** + * + * @return all root resources (i.e all normatives with tosca name {@code Resource.ROOT_RESOURCE} + */ + Either<List<Resource>, StorageOperationStatus> getRootResources(); + + /** + * + * @return all resources with type VF + */ + Either<List<Resource>, StorageOperationStatus> getVFResources(); + + /** + * + * @return all resources + */ + Either<List<Resource>, StorageOperationStatus> getAll(); + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java index 05eb7c66f6..f08c52e0fa 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java @@ -40,8 +40,6 @@ public interface IServiceOperation extends IComponentOperation { public Either<Service, StorageOperationStatus> getService(String uniqueId); public Either<Service, StorageOperationStatus> getService(String uniqueId, boolean inTransaction); - // public Either<Service, StorageOperationStatus> getService_tx(String - // uniqueId, boolean inTransaction); public Either<Service, StorageOperationStatus> deleteService(String uniqueId); @@ -49,40 +47,33 @@ public interface IServiceOperation extends IComponentOperation { public Either<Boolean, StorageOperationStatus> validateServiceNameExists(String serviceName); - public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); + public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction); public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction); - public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, - boolean inTransaction); + public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction); - public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction); + public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction); - public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus( - Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction); + public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus(Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction); - public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, - DistributionStatusEnum distributionStatus); + public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, DistributionStatusEnum distributionStatus); public Either<List<Service>, StorageOperationStatus> getServiceCatalogData(boolean inTransaction); - public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified( - boolean inTransaction); + public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified(boolean inTransaction); - public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, - Map<String, Object> additionalParams, boolean inTransaction); + public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction); public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version); - public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, - boolean inTransaction); + public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, boolean inTransaction); public Either<List<Service>, StorageOperationStatus> getServiceListByUuid(String uuid, boolean inTransaction); public Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean inTransaction); - public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, - boolean inTransaction); + public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, boolean inTransaction); + + Either<List<Service> , StorageOperationStatus> getAll(); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java index dd9766fc83..84413f7987 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java @@ -48,11 +48,11 @@ public interface IUserAdminOperation { public Either<List<User>, ActionStatus> getAllUsersWithRole(String role, String status); - public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user, - Map<String, Object> properties); + Either<List<User>, ActionStatus> getAllUsers(); + + public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user, Map<String, Object> properties); public Either<ImmutablePair<User, FunctionalMenuInfo>, ActionStatus> getUserDataWithFunctionalMenu(String userId); - public Either<FunctionalMenuInfo, TitanOperationStatus> createOrUpdateFunctionalMenu(String userId, - String newFunctionalMenu); + public Either<FunctionalMenuInfo, TitanOperationStatus> createOrUpdateFunctionalMenu(String userId, String newFunctionalMenu); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java new file mode 100644 index 0000000000..f64d4c9091 --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java @@ -0,0 +1,12 @@ +package org.openecomp.sdc.be.model.operations.api; + +import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; +import org.openecomp.sdc.be.model.ComponentInstance; + +import java.util.List; + +public interface ToscaDefinitionPathCalculator { + + List<String> calculateToscaDefinitionPath(ComponentInstance componentInstance, GraphEdge edge); + +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AbstractOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AbstractOperation.java index c4bbaf58f6..0f36f09ca8 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AbstractOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AbstractOperation.java @@ -198,7 +198,7 @@ public abstract class AbstractOperation { if (ctResult.isRight()) { TitanOperationStatus status = ctResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to retrieve information on element uniqueId:" + uniqueId + ". status is " + status); + log.error("Failed to retrieve information on element uniqueId: {}. status is {}", uniqueId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value())); return result; @@ -314,13 +314,13 @@ public abstract class AbstractOperation { ImmutablePair<JsonElement, Boolean> validateResult = dataTypeValidatorConverter.validateAndUpdate(value, dataTypeDefinition, dataTypes); if (validateResult.right.booleanValue() == false) { - log.debug("The value {} of property from type {} is invalid", value, propertyType); + log.debug("The value {} of property from type {} is invalid", propertyType, propertyType); return StorageOperationStatus.INVALID_VALUE; } JsonElement jsonElement = validateResult.left; - log.trace("Going to update value in property definition {} {}", propertyDefinition.getName(), (jsonElement != null ? jsonElement.toString() : null)); + log.trace("Going to update value in property definition {} {}" , propertyDefinition.getName() , (jsonElement != null ? jsonElement.toString() : null)); updateValue(propertyDefinition, jsonElement); @@ -360,7 +360,7 @@ public abstract class AbstractOperation { } PropertyDataDefinition propDef = def.getProperty(); if (propDef == null) { - log.debug("Property in Schema Definition inside property of type {} doesn't exists", type); + log.debug("Property in Schema Definition inside property of type {} doesn't exist", type); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } innerType = propDef.getType(); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java index e2c7f369f1..b9a67e5dc6 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java @@ -26,9 +26,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; -import com.thinkaurelius.titan.core.TitanTransaction; -import com.thinkaurelius.titan.core.TitanVertex; - import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.openecomp.sdc.be.config.BeEcompErrorManager; @@ -41,8 +38,8 @@ import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; import org.openecomp.sdc.be.dao.titan.TitanGenericDao; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.AdditionalInfoParameterInfo; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; -import org.openecomp.sdc.be.model.AdditionalInfoParameterInfo; import org.openecomp.sdc.be.model.AdditionalInformationDefinition; import org.openecomp.sdc.be.model.operations.api.IAdditionalInformationOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; @@ -54,7 +51,9 @@ import org.openecomp.sdc.common.config.EcompErrorName; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import org.springframework.util.AutoPopulatingList.ElementFactory; + +import com.thinkaurelius.titan.core.TitanTransaction; +import com.thinkaurelius.titan.core.TitanVertex; import fj.data.Either; @@ -62,7 +61,6 @@ import fj.data.Either; public class AdditionalInformationOperation implements IAdditionalInformationOperation { public static final String EMPTY_VALUE = null; - public static final String PROPERTY = "property"; public AdditionalInformationOperation() { super(); @@ -74,18 +72,15 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe private TitanGenericDao titanGenericDao; @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter( - NodeTypeEnum nodeType, String componentId, String key, String value) { + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String key, String value) { TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { return Either.right(verifyNodeTypeVsComponent); } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); @@ -117,39 +112,31 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe parameters.put(key, value); parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, - AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); if (updateNode.isRight()) { TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, - "UpdateAdditionalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "UpdateAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); return Either.right(status); } - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, - parameters, idToKey, updateNode.left().value()); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); return Either.left(informationDefinition); } @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter( - NodeTypeEnum nodeType, String componentId, String id, String key, String value) { + public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id, String key, String value) { TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { return Either.right(verifyNodeTypeVsComponent); } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); @@ -172,44 +159,36 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe return Either.right(TitanOperationStatus.ALREADY_EXIST); } String removed = parameters.remove(origKey); - log.trace("The key-value " + origKey + "=" + removed + " was removed from additionalInformation"); + log.trace("The key-value {} = {} was removed from additionalInformation", origKey, removed); } parameters.put(key, value); idToKey.put(id, key); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, - AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); if (updateNode.isRight()) { TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, - "UpdateAdditionalInformationParameter", "additional information of resource " + componentId, - String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", - "additional information of resource " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "UpdateAdditionalInformationParameter", "additional information of resource " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", "additional information of resource " + componentId, String.valueOf(status)); return Either.right(status); } - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, - parameters, idToKey, updateNode.left().value()); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); return Either.left(informationDefinition); } @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter( - NodeTypeEnum nodeType, String componentId, String id) { + public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { return Either.right(verifyNodeTypeVsComponent); } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); @@ -228,41 +207,31 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe String key = idToKey.get(id); String removedKey = idToKey.remove(id); String removedValue = parameters.remove(key); - log.trace("The key-value " + removedKey + "=" + removedValue + " was removed from additionalInformation"); + log.trace("The key-value {} = {} was removed from additionalInformation", removedKey, removedValue); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, - AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); if (updateNode.isRight()) { TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, - "DeleteAdditionalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("DeleteAdditionalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "DeleteAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("DeleteAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); return Either.right(status); } - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, - parameters, idToKey, updateNode.left().value()); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); return Either.left(informationDefinition); } - private AdditionalInformationDefinition createInformationDefinitionFromNode(String resourceId, - Map<String, String> parameters, Map<String, String> idToKey, - AdditionalInfoParameterData additionalInfoParameterData) { - AdditionalInfoParameterDataDefinition dataDefinition = additionalInfoParameterData - .getAdditionalInfoParameterDataDefinition(); + private AdditionalInformationDefinition createInformationDefinitionFromNode(String resourceId, Map<String, String> parameters, Map<String, String> idToKey, AdditionalInfoParameterData additionalInfoParameterData) { + AdditionalInfoParameterDataDefinition dataDefinition = additionalInfoParameterData.getAdditionalInfoParameterDataDefinition(); - AdditionalInformationDefinition informationDefinition = new AdditionalInformationDefinition(dataDefinition, - resourceId, convertParameters(parameters, idToKey)); + AdditionalInformationDefinition informationDefinition = new AdditionalInformationDefinition(dataDefinition, resourceId, convertParameters(parameters, idToKey)); return informationDefinition; } - private List<AdditionalInfoParameterInfo> convertParameters(Map<String, String> parameters, - Map<String, String> idToKey) { + private List<AdditionalInfoParameterInfo> convertParameters(Map<String, String> parameters, Map<String, String> idToKey) { List<AdditionalInfoParameterInfo> list = new ArrayList<AdditionalInfoParameterInfo>(); @@ -284,8 +253,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, - String componentId) { + public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId) { UniqueIdData from = new UniqueIdData(nodeType, componentId); @@ -293,25 +261,19 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); additionalInfoParameterDataDefinition.setUniqueId(uniqueId); - AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData( - additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); + AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); - Either<AdditionalInfoParameterData, TitanOperationStatus> createNode = titanGenericDao - .createNode(additionalInfoParameterData, AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData, AdditionalInfoParameterData.class); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedCreateNodeError, - "AddAdditionalInformationNode", - "additional information to " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, - String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedCreateNodeError, "AddAdditionalInformationNode", "additional information to " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); return Either.right(status); } AdditionalInfoParameterData to = createNode.left().value(); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, - GraphEdgeLabels.ADDITIONAL_INFORMATION, null); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); if (createRelation.isRight()) { TitanOperationStatus status = createRelation.right().value(); return Either.right(status); @@ -321,31 +283,25 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, - String componentId, TitanVertex metadataVertex) { + public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, TitanVertex metadataVertex) { String uniqueId = UniqueIdBuilder.buildAdditionalInformationUniqueId(componentId); AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); additionalInfoParameterDataDefinition.setUniqueId(uniqueId); - AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData( - additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); + AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); Either<TitanVertex, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedCreateNodeError, - "AddAdditionalInformationNode", - "additional information to " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, - String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedCreateNodeError, "AddAdditionalInformationNode", "additional information to " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); return Either.right(status); } TitanVertex additionalInfoVertex = createNode.left().value(); - TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, additionalInfoVertex, - GraphEdgeLabels.ADDITIONAL_INFORMATION, null); + TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, additionalInfoVertex, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); if (!createRelation.equals(TitanOperationStatus.OK)) { return Either.right(createRelation); @@ -353,11 +309,9 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe return Either.left(additionalInfoVertex); } - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode( - NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters) { + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters) { - Either<AdditionalInfoParameterData, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, - componentId); + Either<AdditionalInfoParameterData, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId); if (status.isRight()) { return Either.right(status.right().value()); @@ -367,24 +321,20 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe populateParameterNodeWithParameters(parameterData, parameters); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, - AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); if (updateNode.isRight()) { return Either.right(updateNode.right().value()); } - AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition( - updateNode.left().value(), componentId); + AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(updateNode.left().value(), componentId); return Either.left(informationDefinition); } - public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, - AdditionalInformationDefinition parameters, TitanVertex metadataVertex) { + public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters, TitanVertex metadataVertex) { - Either<TitanVertex, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId, - metadataVertex); + Either<TitanVertex, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId, metadataVertex); if (status.isRight()) { return status.right().value(); @@ -392,9 +342,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe TitanVertex additionalInfoVertex = status.left().value(); Map<String, Object> newProp = titanGenericDao.getProperties(additionalInfoVertex); - AdditionalInfoParameterData parameterData = GraphElementFactory.createElement( - NodeTypeEnum.AdditionalInfoParameters.getName(), GraphElementTypeEnum.Node, newProp, - AdditionalInfoParameterData.class); + AdditionalInfoParameterData parameterData = GraphElementFactory.createElement(NodeTypeEnum.AdditionalInfoParameters.getName(), GraphElementTypeEnum.Node, newProp, AdditionalInfoParameterData.class); populateParameterNodeWithParameters(parameterData, parameters); @@ -403,14 +351,13 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe return updateNode; } - private void populateParameterNodeWithParameters(AdditionalInfoParameterData parameterData, - AdditionalInformationDefinition aiDefinition) { + private void populateParameterNodeWithParameters(AdditionalInfoParameterData parameterData, AdditionalInformationDefinition aiDefinition) { if (aiDefinition != null) { Integer lastCreatedCounter = aiDefinition.getLastCreatedCounter(); parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); - log.trace("Set last created counter of additional information to " + lastCreatedCounter); + log.trace("Set last created counter of additional information to {}", lastCreatedCounter); List<AdditionalInfoParameterInfo> parameters = aiDefinition.getParameters(); if (parameters != null) { @@ -435,26 +382,22 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, - List<AdditionalInformationDefinition> properties) { + public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { - log.trace("Going to fetch additional information under resource " + uniqueId); - TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Resource, - uniqueId, properties); + log.trace("Going to fetch additional information under resource {}", uniqueId); + TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Resource, uniqueId, properties); if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { return resourceCapabilitiesStatus; } - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, + ResourceMetadataData.class); if (parentNodes.isRight()) { TitanOperationStatus parentNodesStatus = parentNodes.right().value(); if (false == parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { - log.error("Failed to find parent additional information of resource " + uniqueId + ". status is " - + parentNodesStatus); + log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); return parentNodesStatus; } } @@ -462,11 +405,10 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe if (parentNodes.isLeft()) { ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); - TitanOperationStatus addParentIntStatus = findResourceAllAdditionalInformationRecursively(parentUniqueId, - properties); + TitanOperationStatus addParentIntStatus = findResourceAllAdditionalInformationRecursively(parentUniqueId, properties); if (addParentIntStatus != TitanOperationStatus.OK) { - log.error("Failed to find all resource additional information of resource " + parentUniqueId); + log.error("Failed to find all resource additional information of resource {}", parentUniqueId); return addParentIntStatus; } } @@ -475,26 +417,22 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, - List<AdditionalInformationDefinition> properties) { + public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { - log.trace("Going to fetch additional information under service " + uniqueId); - TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Service, - uniqueId, properties); + log.trace("Going to fetch additional information under service {}", uniqueId); + TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Service, uniqueId, properties); if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { return resourceCapabilitiesStatus; } - Either<ImmutablePair<ServiceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Service, ServiceMetadataData.class); + Either<ImmutablePair<ServiceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Service, + ServiceMetadataData.class); if (parentNodes.isRight()) { TitanOperationStatus parentNodesStatus = parentNodes.right().value(); if (false == parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { - log.error("Failed to find parent additional information of resource " + uniqueId + ". status is " - + parentNodesStatus); + log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); return parentNodesStatus; } } @@ -502,11 +440,10 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe if (parentNodes.isLeft()) { ImmutablePair<ServiceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); - TitanOperationStatus addParentIntStatus = findServiceAllAdditionalInformationRecursively(parentUniqueId, - properties); + TitanOperationStatus addParentIntStatus = findServiceAllAdditionalInformationRecursively(parentUniqueId, properties); if (addParentIntStatus != TitanOperationStatus.OK) { - log.error("Failed to find all resource additional information of resource " + parentUniqueId); + log.error("Failed to find all resource additional information of resource {}", parentUniqueId); return addParentIntStatus; } } @@ -514,12 +451,10 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } - private TitanOperationStatus findAdditionalInformationOfNode(NodeTypeEnum nodeType, String uniqueId, - List<AdditionalInformationDefinition> properties) { + private TitanOperationStatus findAdditionalInformationOfNode(NodeTypeEnum nodeType, String uniqueId, List<AdditionalInformationDefinition> properties) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> childNode = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> childNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (childNode.isRight()) { TitanOperationStatus status = childNode.right().value(); @@ -534,8 +469,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe Map<String, String> parameters = propertyData.getParameters(); if (parameters != null && false == parameters.isEmpty()) { - AdditionalInformationDefinition additionalInfoDef = this - .convertAdditionalInformationDataToDefinition(propertyData, uniqueId); + AdditionalInformationDefinition additionalInfoDef = this.convertAdditionalInformationDataToDefinition(propertyData, uniqueId); properties.add(additionalInfoDef); } @@ -543,36 +477,29 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } - private AdditionalInformationDefinition convertAdditionalInformationDataToDefinition( - AdditionalInfoParameterData additionalInfoData, String uniqueId) { + private AdditionalInformationDefinition convertAdditionalInformationDataToDefinition(AdditionalInfoParameterData additionalInfoData, String uniqueId) { Map<String, String> parameters = additionalInfoData.getParameters(); Map<String, String> idToKey = additionalInfoData.getIdToKey(); - AdditionalInformationDefinition definition = new AdditionalInformationDefinition( - additionalInfoData.getAdditionalInfoParameterDataDefinition(), uniqueId, - convertParameters(parameters, idToKey)); + AdditionalInformationDefinition definition = new AdditionalInformationDefinition(additionalInfoData.getAdditionalInfoParameterDataDefinition(), uniqueId, convertParameters(parameters, idToKey)); return definition; } @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction) { + public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction) { Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this - .addAdditionalInformationParameter(nodeType, resourceId, key, value); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.addAdditionalInformationParameter(nodeType, resourceId, key, value); if (either.isRight()) { TitanOperationStatus status = either.right().value(); log.debug("Failed to add additional information property {} to component {}. Status is {}", key, resourceId, status); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, - "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("CreateAdditionalInformationParameter", - "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("CreateAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } else { AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); @@ -587,18 +514,16 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction) { + public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction) { Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this - .updateAdditionalInformationParameter(nodeType, resourceId, id, key, value); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.updateAdditionalInformationParameter(nodeType, resourceId, id, key, value); if (either.isRight()) { - log.info("Failed to update additional information property " + key + " to component " + resourceId); + log.info("Failed to update additional information property {} to component {}", key, resourceId); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); } else { AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); @@ -614,18 +539,16 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this - .deleteAdditionalInformationParameter(nodeType, resourceId, id); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.deleteAdditionalInformationParameter(nodeType, resourceId, id); if (either.isRight()) { - log.error("Failed to delete additional information id " + id + " to component " + resourceId); + log.error("Failed to delete additional information id {} to component {}", id, resourceId); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); } else { AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); @@ -641,8 +564,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, - String resourceId, boolean inTransaction) { + public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { Either<Integer, StorageOperationStatus> result = null; @@ -651,7 +573,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe Either<Integer, TitanOperationStatus> either = this.getNumberOfParameters(nodeType, resourceId); if (either.isRight()) { - log.error("Failed to get the number of additional information properties in component " + resourceId); + log.error("Failed to get the number of additional information properties in component {}", resourceId); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); } else { Integer counter = either.left().value(); @@ -676,10 +598,8 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe @Override public Either<Integer, TitanOperationStatus> getNumberOfParameters(NodeTypeEnum nodeType, String resourceId) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); @@ -700,18 +620,15 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter( - NodeTypeEnum nodeType, String componentId, String id) { + public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { return Either.right(verifyNodeTypeVsComponent); } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); @@ -730,19 +647,15 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe String key = idToKey.get(id); String value = parameters.get(key); - log.trace("The key-value " + key + "=" + value + " was retrieved for id " + id); + log.trace("The key-value {} = {} was retrieved for id {}", key, value, id); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, - AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); if (updateNode.isRight()) { TitanOperationStatus status = updateNode.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedRetrieveNodeError, - "GetAdditionnalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameter", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedRetrieveNodeError, "GetAdditionnalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); } return Either.right(status); } @@ -754,8 +667,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String componentId, boolean ignoreVerification) { + public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String componentId, boolean ignoreVerification) { if (false == ignoreVerification) { TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); @@ -764,19 +676,14 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedRetrieveNodeError, - "GetAdditionnalInformationParameters", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameters", - "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedRetrieveNodeError, "GetAdditionnalInformationParameters", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameters", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); } return Either.right(status); } @@ -786,23 +693,20 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe Map<String, String> parameters = parameterData.getParameters(); Map<String, String> idToKey = parameterData.getIdToKey(); - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, - parameters, idToKey, parameterData); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, parameterData); return Either.left(informationDefinition); } @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction) { + public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction) { Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this - .getAllAdditionalInformationParameters(nodeType, resourceId, ignoreVerification); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.getAllAdditionalInformationParameters(nodeType, resourceId, ignoreVerification); if (either.isRight()) { TitanOperationStatus status = either.right().value(); @@ -833,8 +737,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } } - private void commitOrRollbackTx(TitanTransaction tx, boolean inTransaction, - Either<? extends Object, StorageOperationStatus> result) { + private void commitOrRollbackTx(TitanTransaction tx, boolean inTransaction, Either<? extends Object, StorageOperationStatus> result) { if (false == inTransaction) { if (result == null || result.isRight()) { @@ -848,19 +751,16 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter( - NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { + public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { Either<AdditionalInfoParameterInfo, StorageOperationStatus> result = null; try { - Either<AdditionalInfoParameterInfo, TitanOperationStatus> either = this - .getAdditionalInformationParameter(nodeType, resourceId, id); + Either<AdditionalInfoParameterInfo, TitanOperationStatus> either = this.getAdditionalInformationParameter(nodeType, resourceId, id); if (either.isRight()) { - log.error("Failed to fetch additional information property with id " + id + " of component " - + resourceId); + log.error("Failed to fetch additional information property with id {} of component {}", id, resourceId); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); } else { AdditionalInfoParameterInfo additionalInformationDefinition = either.left().value(); @@ -875,30 +775,22 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters( - NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; try { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, - GraphEdgeLabels.ADDITIONAL_INFORMATION, NodeTypeEnum.AdditionalInfoParameters, - AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); if (getResult.isRight()) { TitanOperationStatus status = getResult.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { return Either.right(StorageOperationStatus.OK); } else { - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedDeleteNodeError, - "DeleteAdditionalInformationNode", - "additional information of " + nodeType.getName() + " " + resourceId, - String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", - "additional information of " + nodeType.getName() + " " + resourceId, - String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedDeleteNodeError, "DeleteAdditionalInformationNode", "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } return result; @@ -907,21 +799,16 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe ImmutablePair<AdditionalInfoParameterData, GraphEdge> value = getResult.left().value(); AdditionalInfoParameterData parameterData = value.getLeft(); - Either<AdditionalInfoParameterData, TitanOperationStatus> deleteNodeRes = titanGenericDao - .deleteNode(parameterData, AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(parameterData, AdditionalInfoParameterData.class); if (deleteNodeRes.isRight()) { TitanOperationStatus status = getResult.right().value(); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedDeleteNodeError, - "DeleteAdditionalInformationNode", (String) parameterData.getUniqueId(), - String.valueOf(status)); - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", - (String) parameterData.getUniqueId(), String.valueOf(status)); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedDeleteNodeError, "DeleteAdditionalInformationNode", (String) parameterData.getUniqueId(), String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", (String) parameterData.getUniqueId(), String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } - AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition( - deleteNodeRes.left().value(), resourceId); + AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(deleteNodeRes.left().value(), resourceId); result = Either.left(informationDefinition); @@ -933,8 +820,7 @@ public class AdditionalInformationOperation implements IAdditionalInformationOpe } private TitanOperationStatus verifyNodeTypeVsComponent(NodeTypeEnum nodeType, String componentId) { - Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao - .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId); + Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId); if (vertexByProperty.isRight()) { TitanOperationStatus status = vertexByProperty.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java index a4f4bebd5a..1e1c9267e6 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java @@ -28,7 +28,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import com.thinkaurelius.titan.core.TitanTransaction; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -81,6 +80,8 @@ public class ArtifactOperation implements IArtifactOperation { @javax.annotation.Resource private GroupOperation groupOperation; + @javax.annotation.Resource + private GroupInstanceOperation groupInstanceOperation; private static Logger log = LoggerFactory.getLogger(ArtifactOperation.class.getName()); @@ -113,7 +114,7 @@ public class ArtifactOperation implements IArtifactOperation { if (false == inTransaction) { titanGenericDao.rollback(); } - log.debug("Failed to add artifact {} to {} {}", artifactInfo.getArtifactName(), type, parentId); + log.debug("Failed to add artifact {} to {} {}", artifactInfo.getArtifactName(), type , parentId); return Either.right(status.right().value()); } else { if (false == inTransaction) { @@ -191,7 +192,7 @@ public class ArtifactOperation implements IArtifactOperation { // add heat parameters if (artifactInfo.getHeatParameters() != null && !artifactInfo.getHeatParameters().isEmpty() && !artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT_ENV.getType())) { - StorageOperationStatus addPropertiesStatus = heatParametersOperation.addPropertiesToGraph(artifactInfo.getHeatParameters(), artifactData.getUniqueId().toString(), NodeTypeEnum.ArtifactRef); + StorageOperationStatus addPropertiesStatus = heatParametersOperation.addPropertiesToGraph(artifactInfo.getListHeatParameters(), artifactData.getUniqueId().toString(), NodeTypeEnum.ArtifactRef); if (addPropertiesStatus != StorageOperationStatus.OK) { log.debug("Failed to create heat parameters on graph for artifact {}", artifactInfo.getArtifactName()); return addPropertiesStatus; @@ -238,7 +239,7 @@ public class ArtifactOperation implements IArtifactOperation { if (existArtifact.isRight()) { if (existArtifact.right().value().equals(TitanOperationStatus.NOT_FOUND)) { // create new node - log.debug("Before adding artifact to graph {}", artifactData); + log.debug("Before adding artifact to graph {}" , artifactData); if (artifactData.getArtifactDataDefinition().getArtifactUUID() == null || artifactData.getArtifactDataDefinition().getArtifactUUID().isEmpty()) updateUUID(artifactData.getArtifactDataDefinition(), null, artifactData.getArtifactDataDefinition().getArtifactVersion()); Either<ArtifactData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(artifactData, ArtifactData.class); @@ -256,7 +257,7 @@ public class ArtifactOperation implements IArtifactOperation { // add heat parameters if (artifactInfo.getHeatParameters() != null && !artifactInfo.getHeatParameters().isEmpty() && !artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT_ENV.getType())) { - StorageOperationStatus addPropertiesStatus = heatParametersOperation.addPropertiesToGraph(artifactInfo.getHeatParameters(), artifactData.getUniqueId().toString(), NodeTypeEnum.ArtifactRef); + StorageOperationStatus addPropertiesStatus = heatParametersOperation.addPropertiesToGraph(artifactInfo.getListHeatParameters(), artifactData.getUniqueId().toString(), NodeTypeEnum.ArtifactRef); if (addPropertiesStatus != StorageOperationStatus.OK) { log.debug("Failed to create heat parameters on graph for artifact {}", artifactInfo.getArtifactName()); return Either.right(addPropertiesStatus); @@ -283,7 +284,7 @@ public class ArtifactOperation implements IArtifactOperation { properties.put(GraphEdgePropertiesDictionary.GROUP_TYPE.getProperty(), artifactInfo.getArtifactGroupType().getType()); Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.createRelation(parent, artifactData, GraphEdgeLabels.ARTIFACT_REF, properties); if (relation.isRight()) { - log.debug("Failed to create relation in graph for id {} to new artifact", id); + log.debug("Failed to create relation in graph fro id {} to new artifact", id); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(relation.right().value())); } @@ -300,19 +301,20 @@ public class ArtifactOperation implements IArtifactOperation { isValid = true; break; default: - log.debug("Not supported node type for artifact relation : {}", type); + log.debug("Not supported node type for artifact relation : {} ", type); } return isValid; } - + + protected ArtifactDefinition convertArtifactDataToArtifactDefinition(ArtifactData artifactDefResult) { - log.debug("The object returned after create property is {}", artifactDefResult); + log.debug("The object returned after create property is {}" ,artifactDefResult); ArtifactDefinition propertyDefResult = new ArtifactDefinition(artifactDefResult.getArtifactDataDefinition()); List<HeatParameterDefinition> parameters = new ArrayList<HeatParameterDefinition>(); StorageOperationStatus heatParametersOfNode = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDefResult.getUniqueId().toString(), parameters); if ((heatParametersOfNode.equals(StorageOperationStatus.OK)) && !parameters.isEmpty()) { - propertyDefResult.setHeatParameters(parameters); + propertyDefResult.setListHeatParameters(parameters); } return propertyDefResult; } @@ -325,9 +327,35 @@ public class ArtifactOperation implements IArtifactOperation { if (false == inTransaction) { titanGenericDao.rollback(); } - if (log.isDebugEnabled()){ - log.debug("Failed to update artifact {} of {} {}. Status is {}", artifactId, type.getName(), id, status.right().value()); + log.debug("Failed to update artifact {} of {} {}. status is {}", artifactId, type.getName(), id, status.right().value()); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactId + " of " + type.getName() + " " + id + ". status is" + status.right().value(), artifactId, + String.valueOf(status.right().value())); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactId, String.valueOf(status.right().value())); + return Either.right(status.right().value()); + } else { + if (false == inTransaction) { + titanGenericDao.commit(); } + ArtifactData artifactData = status.left().value(); + + ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); + log.debug("The returned ArtifactDefintion is {}", artifactDefResult); + return Either.left(artifactDefResult); + } + } + + @Override + public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvArtifact( String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction){ + + + Either<ArtifactData, StorageOperationStatus> status = dissociateAndAssociateHeatEnvArtifact(id, artifactEnvInfo, artifactId, newArtifactId, type, inTransaction); + + + if (status.isRight()) { + if (false == inTransaction) { + titanGenericDao.rollback(); + } + log.debug("Failed to update artifact {} of {} {}. status is {}", artifactId, type.getName(), id, status.right().value()); BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactId + " of " + type.getName() + " " + id + ". status is" + status.right().value(), artifactId, String.valueOf(status.right().value())); BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactId, String.valueOf(status.right().value())); @@ -342,6 +370,47 @@ public class ArtifactOperation implements IArtifactOperation { log.debug("The returned ArtifactDefintion is {}", artifactDefResult); return Either.left(artifactDefResult); } + + } + + private Either<ArtifactData, StorageOperationStatus> dissociateAndAssociateHeatEnvArtifact(String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction) { + + ArtifactDefinition heatEnvArt = artifactEnvInfo; + if(heatEnvArt == null ){ + Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getHeatEnvByGeneratedFromId(artifactId); + if (heatEnvEither.isRight()) { + log.error("No heat env artifact node for id = {} ", artifactId); + return Either.right(StorageOperationStatus.NOT_FOUND); + } + heatEnvArt = heatEnvEither.left().value(); + } + + Either<ArtifactData, StorageOperationStatus> status = updateArtifactOnGraph(heatEnvArt, heatEnvArt.getUniqueId(), type, id); + if(status.isRight()){ + log.error("Failed to update heat env. status is {}", status.right().value()); + return status; + } + + UniqueIdData generatedFromArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, heatEnvArt.getUniqueId()); + UniqueIdData oldArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId); + + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(generatedFromArtifactNode, oldArtifactNode, GraphEdgeLabels.GENERATED_FROM); + if (deleteRelation.isRight()) { + TitanOperationStatus titanStatus = deleteRelation.right().value(); + if (titanStatus == TitanOperationStatus.NOT_FOUND) { + titanStatus = TitanOperationStatus.INVALID_ID; + } + Either.right(titanStatus); + } + + UniqueIdData newArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, newArtifactId); + + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(generatedFromArtifactNode, newArtifactNode, GraphEdgeLabels.GENERATED_FROM, null); + if (createRelation.isRight()) { + log.error("Failed to create relation from heat_env {} to heat {}", newArtifactId, generatedFromArtifactNode); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value())); + } + return status; } @Override @@ -368,6 +437,45 @@ public class ArtifactOperation implements IArtifactOperation { return Either.left(artifactDefResult); } } + + @Override + public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvPlaceholder(ArtifactDefinition artifactInfo, boolean inTransaction) { + + updateVersionAndDate(artifactInfo, artifactInfo.getArtifactVersion()); + + Either<ArtifactData, TitanOperationStatus> status = updateArifactDataDefinition(artifactInfo); + + if (status.isRight()) { + if (false == inTransaction) { + titanGenericDao.rollback(); + } + log.debug("Failed to update artifact {}", artifactInfo.getUniqueId()); + BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactInfo.getUniqueId() + ". status is" + status.right().value(), artifactInfo.getUniqueId(), + String.valueOf(status.right().value())); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactInfo.getUniqueId(), String.valueOf(status.right().value())); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value())); + } else { + if (false == inTransaction) { + titanGenericDao.commit(); + } + ArtifactData artifactData = status.left().value(); + + ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); + log.debug("The returned ArtifactDefintion is {}" , artifactDefResult); + return Either.left(artifactDefResult); + } + } + + @Override + public Either<ArtifactDefinition, StorageOperationStatus> getHeatEnvByGeneratedFromId(String generatedFromId) { + String heatEnvId = generatedFromId.concat("env"); + Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getArtifactById(heatEnvId, true); + if (heatEnvEither.isRight()) { + log.error("No heat env artifact node for id = {} ", heatEnvId); + return Either.right(StorageOperationStatus.NOT_FOUND); + } + return heatEnvEither; + } private Either<ArtifactData, TitanOperationStatus> updateArifactDataDefinition(ArtifactDefinition artifactInfo) { Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); @@ -388,7 +496,7 @@ public class ArtifactOperation implements IArtifactOperation { @Override public Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact, boolean inTransaction) { - Either<ArtifactData, TitanOperationStatus> status = removeArtifactOnGraph(id, artifactId, type, id, deleteMandatoryArtifact); + Either<ArtifactData, TitanOperationStatus> status = removeArtifactOnGraph(id, artifactId, type, deleteMandatoryArtifact); if (status.isRight()) { if (false == inTransaction) { @@ -406,7 +514,7 @@ public class ArtifactOperation implements IArtifactOperation { ArtifactData artifactData = status.left().value(); ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); - log.debug("The returned ArtifactDefintion is {}", artifactDefResult); + log.debug("The returned ArtifactDefintion is {}" , artifactDefResult); return Either.left(artifactDefResult); } } @@ -447,12 +555,17 @@ public class ArtifactOperation implements IArtifactOperation { } ++edgeCount; } + + if (isNeedUpdateHeatTime(artifactInfo)) { + artifactInfo.setHeatParamsUpdateDate(System.currentTimeMillis()); + } ArtifactData artifactData = new ArtifactData(artifactInfo); if (edgeFromTo == null) { log.debug("No relation between artifact = {} and node with id = {}", artifactId, id); return Either.right(StorageOperationStatus.GENERAL_ERROR); } + Either<Boolean, StorageOperationStatus> setRelevantHeatParamIdRes = null; if (edgeCount > 1) { // need to remove relation, create new node @@ -477,6 +590,13 @@ public class ArtifactOperation implements IArtifactOperation { BeEcompErrorManager.getInstance().logInternalFlowError("UpdateArtifact", "Failed to reassociate groups to the new artifact", ErrorSeverity.ERROR); return Either.right(reassociateGroupsFromArtifact); } + + StorageOperationStatus reassociateGroupInstancesFromArtifact = groupInstanceOperation.dissociateAndAssociateGroupsInstanceFromArtifact(id, type, artifactId, addedArtifactRes.left().value()); + if (reassociateGroupInstancesFromArtifact != StorageOperationStatus.OK) { + BeEcompErrorManager.getInstance().logInternalFlowError("UpdateArtifact", "Failed to reassociate group instances to the new artifact", ErrorSeverity.ERROR); + return Either.right(reassociateGroupsFromArtifact); + } + // If artifact is heat env if (artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT_ENV.getType())) { ArtifactData addedArtifact = addedArtifactRes.left().value(); @@ -485,13 +605,13 @@ public class ArtifactOperation implements IArtifactOperation { setRelevantHeatParamIdRes = setRelevantHeatParamId(artifactV, artifactInfo); if (setRelevantHeatParamIdRes.isRight()) { - log.error("Failed to set relevant id to heat parameters for heat env artifact " + artifactInfo.getUniqueId() + ". Status is " + setRelevantHeatParamIdRes.right().value()); + log.error("Failed to set relevant id to heat parameters for heat env artifact {}. Status is {}", artifactInfo.getUniqueId(), setRelevantHeatParamIdRes.right().value()); return Either.right(setRelevantHeatParamIdRes.right().value()); } - for (HeatParameterDefinition heatEnvParam : artifactInfo.getHeatParameters()) { + for (HeatParameterDefinition heatEnvParam : artifactInfo.getListHeatParameters()) { updateResult = heatParametersOperation.updateHeatParameterValue(heatEnvParam, newArtifactUniqueId, id, artifactInfo.getArtifactLabel()); if (updateResult.isRight()) { - log.error("Failed to update heat parameter " + heatEnvParam.getName() + ". Status is " + updateResult.right().value()); + log.error("Failed to update heat parameter {}. Status is {}", heatEnvParam.getName(), updateResult.right().value()); return Either.right(updateResult.right().value()); } } @@ -499,7 +619,7 @@ public class ArtifactOperation implements IArtifactOperation { Iterator<Edge> iterEdgeGeneratedFrom = artifactV.edges(Direction.OUT, GraphEdgeLabels.GENERATED_FROM.getProperty()); if (!iterEdgeGeneratedFrom.hasNext()) { - log.error("No heat artifact node for id = " + artifactId); + log.error("No heat artifact node for id = {}", artifactId); return Either.right(StorageOperationStatus.NOT_FOUND); } Edge edgeToHeat = iterEdgeGeneratedFrom.next(); @@ -508,7 +628,7 @@ public class ArtifactOperation implements IArtifactOperation { UniqueIdData generatedFromArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, generatedFromArtifactId); Either<GraphRelation, TitanOperationStatus> createRelationToGeneratedFromArtifactRes = titanGenericDao.createRelation(addedArtifact, generatedFromArtifactNode, GraphEdgeLabels.GENERATED_FROM, null); if (createRelationToGeneratedFromArtifactRes.isRight()) { - log.error("Failed to create relation from heat_env " + addedArtifact.getUniqueId() + " to heat " + generatedFromArtifactNode); + log.error("Failed to create relation from heat_env {} to heat {}", addedArtifact.getUniqueId(), generatedFromArtifactNode); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(createRelationToGeneratedFromArtifactRes.right().value())); } } @@ -535,10 +655,10 @@ public class ArtifactOperation implements IArtifactOperation { log.error("Failed to set relevant id to heat parameters for heat env artifact {}. Status is {}", artifactInfo.getUniqueId(), setRelevantHeatParamIdRes.right().value()); return Either.right(setRelevantHeatParamIdRes.right().value()); } - for (HeatParameterDefinition heatEnvParam : artifactInfo.getHeatParameters()) { + for (HeatParameterDefinition heatEnvParam : artifactInfo.getListHeatParameters()) { updateResult = heatParametersOperation.updateHeatParameterValue(heatEnvParam, artifactUniqueId, id, artifactInfo.getArtifactLabel()); if (updateResult.isRight()) { - log.error("Failed to update heat parameter " + heatEnvParam.getName() + ". Status is " + updateResult.right().value()); + log.error("Failed to update heat parameter {}. Status is {}", heatEnvParam.getName(), updateResult.right().value()); return Either.right(updateResult.right().value()); } } @@ -546,7 +666,7 @@ public class ArtifactOperation implements IArtifactOperation { if (artifactData.getArtifactDataDefinition().getArtifactChecksum() == null) { // update heat parameters only if it is not heat env if (artifactInfo.getGeneratedFromId() == null) { - StorageOperationStatus operationStatus = heatParametersOperation.updateHeatParameters(artifactInfo.getHeatParameters()); + StorageOperationStatus operationStatus = heatParametersOperation.updateHeatParameters(artifactInfo.getListHeatParameters()); if (operationStatus != StorageOperationStatus.OK) { return Either.right(operationStatus); } @@ -558,11 +678,12 @@ public class ArtifactOperation implements IArtifactOperation { return Either.right(StorageOperationStatus.GENERAL_ERROR); } - StorageOperationStatus addParameters = heatParametersOperation.addPropertiesToGraph(artifactInfo.getHeatParameters(), artifactId, NodeTypeEnum.ArtifactRef); + StorageOperationStatus addParameters = heatParametersOperation.addPropertiesToGraph(artifactInfo.getListHeatParameters(), artifactId, NodeTypeEnum.ArtifactRef); if (!addParameters.equals(StorageOperationStatus.OK)) { log.debug("failed to update heat parameters for artifact id {}", artifactData.getUniqueId()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } + } } @@ -574,13 +695,20 @@ public class ArtifactOperation implements IArtifactOperation { } } + private boolean isNeedUpdateHeatTime(ArtifactDefinition artifactInfo) { + if (artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT.getType()) || artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT_NET.getType()) || artifactInfo.getArtifactType().equals(ArtifactTypeEnum.HEAT_VOL.getType())) { + return true; + } + return false; + } + private Either<Boolean, StorageOperationStatus> setRelevantHeatParamId(TitanVertex artifactV, ArtifactDefinition artifactInfo) { Map<String, String> heatParametersHM = new HashMap<String, String>(); Iterator<Edge> iterHeat = artifactV.edges(Direction.OUT, GraphEdgeLabels.GENERATED_FROM.getProperty()); if (!iterHeat.hasNext()) { - log.debug("No edges with label GENERATED_FROM for the node {}", artifactInfo.getUniqueId()); + log.debug("No edges with label GENERATED_FROM for the node {}" , artifactInfo.getUniqueId()); return Either.right(StorageOperationStatus.NOT_FOUND); } Edge heat = iterHeat.next(); @@ -603,7 +731,7 @@ public class ArtifactOperation implements IArtifactOperation { heatParametersHM.put(heatParam.getName(), (String) heatParam.getUniqueId()); } String curName = null; - for (HeatParameterDefinition heatEnvParam : artifactInfo.getHeatParameters()) { + for (HeatParameterDefinition heatEnvParam : artifactInfo.getListHeatParameters()) { curName = heatEnvParam.getName(); if (heatParametersHM.containsKey(curName)) { heatEnvParam.setUniqueId(heatParametersHM.get(curName)); @@ -635,7 +763,7 @@ public class ArtifactOperation implements IArtifactOperation { return Either.left(edgeCount); } - public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, String id2, boolean deleteMandatoryArtifact) { + public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact) { Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); if (graph.isRight()) { return Either.right(graph.right().value()); @@ -675,7 +803,7 @@ public class ArtifactOperation implements IArtifactOperation { ++edgeCount; } if (edgeFromTo == null) { - log.debug("No relation between artifact = {} and node with id = {}", artifactId, id); + log.debug("No relation between artifact = {} and node with id = {}", artifactId, id); return Either.right(TitanOperationStatus.GENERAL_ERROR); } @@ -702,13 +830,13 @@ public class ArtifactOperation implements IArtifactOperation { log.debug("Remove artifactRef node from graph"); Either<List<HeatParameterDefinition>, StorageOperationStatus> deleteStatus = heatParametersOperation.deleteAllHeatParametersAssociatedToNode(NodeTypeEnum.ArtifactRef, artifactId); if (deleteStatus.isRight()) { - log.error("failed to delete heat parameters of artifact " + artifactId); + log.error("failed to delete heat parameters of artifact {}", artifactId); return Either.right(TitanOperationStatus.GENERAL_ERROR); } StorageOperationStatus deleteValuesStatus = heatParametersOperation.deleteAllHeatValuesAssociatedToNode(NodeTypeEnum.ArtifactRef, artifactId); if (!deleteValuesStatus.equals(StorageOperationStatus.OK)) { - log.error("failed to delete heat values of artifact " + artifactId); + log.error("failed to delete heat values of artifact {}", artifactId); return Either.right(TitanOperationStatus.GENERAL_ERROR); } if (!isMandatory) { @@ -764,6 +892,12 @@ public class ArtifactOperation implements IArtifactOperation { if (artifact != null) { ArtifactDefinition artifactDefinition = new ArtifactDefinition(artifact.getArtifactDataDefinition()); + Iterator<Edge> edgesGeneratedFrom = artifactV.edges(Direction.OUT, GraphEdgeLabels.GENERATED_FROM.getProperty()); + if (edgesGeneratedFrom != null && edgesGeneratedFrom.hasNext()) { + TitanVertex inVertex = (TitanVertex) edgesGeneratedFrom.next().inVertex(); + String artifactIdGeneratedFrom = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); + artifactDefinition.setGeneratedFromId(artifactIdGeneratedFrom); + } List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>(); StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId(), heatParams); if (!heatParametersStatus.equals(StorageOperationStatus.OK)) { @@ -771,7 +905,7 @@ public class ArtifactOperation implements IArtifactOperation { return Either.right(heatParametersStatus); } if (!heatParams.isEmpty()) { - artifactDefinition.setHeatParameters(heatParams); + artifactDefinition.setListHeatParameters(heatParams); } artifactMap.put(artifactDefinition.getArtifactLabel(), artifactDefinition); log.debug("Artifact was added to list {}", artifact.getUniqueId()); @@ -867,7 +1001,7 @@ public class ArtifactOperation implements IArtifactOperation { return Either.right(heatParametersStatus); } if (!heatParams.isEmpty()) { - artifactDef.setHeatParameters(heatParams); + artifactDef.setListHeatParameters(heatParams); } Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> generatedFromArtifact = titanGenericDao.getChild(artifactData.getUniqueIdKey(), (String) artifactData.getUniqueId(), GraphEdgeLabels.GENERATED_FROM, @@ -882,7 +1016,7 @@ public class ArtifactOperation implements IArtifactOperation { log.debug("failed to get heat parameters values for heat artifact {}", artifactDef.getUniqueId()); return Either.right(heatParamsForEnv.right().value()); } else { - artifactDef.setHeatParameters(heatParamsForEnv.left().value()); + artifactDef.setListHeatParameters(heatParamsForEnv.left().value()); } } @@ -1003,7 +1137,7 @@ public class ArtifactOperation implements IArtifactOperation { return Either.right(heatParametersStatus); } if (!heatParams.isEmpty()) { - artifactDefinition.setHeatParameters(heatParams); + artifactDefinition.setListHeatParameters(heatParams); } Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactDefinition.getUniqueId(), GraphEdgeLabels.GENERATED_FROM, @@ -1039,45 +1173,40 @@ public class ArtifactOperation implements IArtifactOperation { } @Override - public Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean inTransaction) { - - Either<ArtifactDefinition, StorageOperationStatus> result = null; - try { - Either<ArtifactDefinition, StorageOperationStatus> heatArtifactOnGraph = addArifactToComponent(artifactHeatEnv, parentId, parentType, true, true); - - if (heatArtifactOnGraph.isRight()) { - log.debug("failed to create heat env artifact on graph"); - result = heatArtifactOnGraph; - return result; - } - - ArtifactDefinition artifactDefinition = heatArtifactOnGraph.left().value(); + public Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean failIfExist) { - // add relation from heatEnv to heat - UniqueIdData heatData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactHeat.getUniqueId()); - UniqueIdData heatEnvData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId()); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM, null); - - if (createRelation.isRight()) { - TitanOperationStatus status = createRelation.right().value(); - log.debug("failed to add relation from heat_env artifact to heat artifact. error: {}", status); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - return result; - } - artifactDefinition.setGeneratedFromId(artifactHeat.getUniqueId()); - log.trace("heat env artifact added successfuly to resource instance"); - result = Either.left(artifactDefinition); + Either<ArtifactDefinition, StorageOperationStatus> result = null; + Either<ArtifactDefinition, StorageOperationStatus> heatArtifactOnGraph = addArifactToComponent(artifactHeatEnv, parentId, parentType, failIfExist, true); + if (heatArtifactOnGraph.isRight()) { + log.debug("failed to create heat env artifact on graph"); + result = heatArtifactOnGraph; return result; - } finally { - if (inTransaction == false) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - - } } + + ArtifactDefinition artifactDefinition = heatArtifactOnGraph.left().value(); + // add relation from heatEnv to heat + UniqueIdData heatData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactHeat.getUniqueId()); + UniqueIdData heatEnvData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId()); + + Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.getRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM); + if (relation.isRight()) { + // TODO: add error in case of error + TitanOperationStatus status = relation.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM, null); + if (createRelation.isRight()) { + status = createRelation.right().value(); + log.debug("failed to add relation from heat_env artifact to heat artifact. error: {}", status); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + return result; + } + } + } + + artifactDefinition.setGeneratedFromId(artifactHeat.getUniqueId()); + log.trace("heat env artifact added successfuly to resource instance"); + result = Either.left(artifactDefinition); + return result; } public void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion) { @@ -1100,6 +1229,10 @@ public class ArtifactOperation implements IArtifactOperation { UUID uuid = UUID.randomUUID(); artifactData.setArtifactUUID(uuid.toString()); MDC.put("serviceInstanceID", uuid.toString()); + updateVersionAndDate(artifactData, oldVesrion); + } + + private void updateVersionAndDate(ArtifactDataDefinition artifactData, String oldVesrion) { long time = System.currentTimeMillis(); artifactData.setPayloadUpdateDate(time); int newVersion = new Integer(oldVesrion).intValue(); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java index fc81a9affd..f82a2982b0 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java @@ -239,9 +239,9 @@ public class AttributeOperation extends AbstractOperation implements IAttributeO List<ComponentInstanceAttribute> buildAttInstanceFromResource = attributes.stream().map(attDef -> new ComponentInstanceAttribute(attDef, false, null)).collect(Collectors.toList()); // Set Value to be default value in case it is empty - Consumer<ComponentInstanceAttribute> valueSetter = data -> { - if (StringUtils.isEmpty(data.getValue())) { - data.setValue(data.getDefaultValue()); + Consumer<ComponentInstanceAttribute> valueSetter = att -> { + if (StringUtils.isEmpty(att.getValue())) { + att.setValue(att.getDefaultValue()); } }; buildAttInstanceFromResource.stream().forEach(valueSetter); @@ -438,7 +438,7 @@ public class AttributeOperation extends AbstractOperation implements IAttributeO Either<AttributeData, TitanOperationStatus> eitherResult; StorageOperationStatus validateAndUpdateAttribute = propertyOperation.validateAndUpdateProperty(attribute, dataTypes); if (validateAndUpdateAttribute != StorageOperationStatus.OK) { - log.error("Attribute " + attribute + " is invalid. Status is " + validateAndUpdateAttribute); + log.error("Attribute {} is invalid. Status is {}", attribute, validateAndUpdateAttribute); eitherResult = Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } else { eitherResult = addAttributeToNodeType(attribute, NodeTypeEnum.Resource, resourceId); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CacheMangerOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CacheMangerOperation.java index d05255473d..cadcd32926 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CacheMangerOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CacheMangerOperation.java @@ -31,10 +31,8 @@ import org.openecomp.sdc.be.model.cache.jobs.*; import org.openecomp.sdc.be.model.cache.workers.CacheWorker; import org.openecomp.sdc.be.model.cache.workers.IWorker; import org.openecomp.sdc.be.model.cache.workers.SyncWorker; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.ICacheMangerOperation; -import org.openecomp.sdc.be.model.operations.api.IProductOperation; -import org.openecomp.sdc.be.model.operations.api.IResourceOperation; -import org.openecomp.sdc.be.model.operations.api.IServiceOperation; import org.openecomp.sdc.be.workers.Manager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,18 +45,12 @@ import java.util.LinkedList; import java.util.concurrent.*; /** - * Created by mlando on 9/5/2016. the class is responsible for handling all - * cache update operations asynchronously including sync between the graph and - * cache and on demand update requests + * Created by mlando on 9/5/2016. the class is responsible for handling all cache update operations asynchronously including sync between the graph and cache and on demand update requests */ @Component("cacheManger-operation") public class CacheMangerOperation implements ICacheMangerOperation { @Autowired - private IResourceOperation iResourceOperation; - @Autowired - private IServiceOperation iServiceOperation; - @Autowired - private IProductOperation iProductOperation; + private ToscaOperationFacade toscaOperationFacade; @Autowired private TitanGenericDao titanGenericDao; @Autowired @@ -76,21 +68,17 @@ public class CacheMangerOperation implements ICacheMangerOperation { * constructor */ public CacheMangerOperation() { - // daoInfo = new DaoInfo(iResourceOperation, iServiceOperation, - // iProductOperation, componentCache); } /** - * the method checks in the cache is enabled, if it is, it initializes all - * the workers according to the configuration values. + * the method checks in the cache is enabled, if it is, it initializes all the workers according to the configuration values. */ @PostConstruct public void init() { - daoInfo = new DaoInfo(iResourceOperation, iServiceOperation, iProductOperation, componentCache); + daoInfo = new DaoInfo(toscaOperationFacade, componentCache); - Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager() - .getConfiguration().getApplicationL2Cache(); + Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getApplicationL2Cache(); if (applicationL2CacheConfig != null && applicationL2CacheConfig.isEnabled()) { Integer numberOfWorkers = applicationL2CacheConfig.getQueue().getNumberOfCacheWorkers(); this.waitOnShutDownInMinutes = applicationL2CacheConfig.getQueue().getWaitOnShutDownInMinutes(); @@ -122,9 +110,7 @@ public class CacheMangerOperation implements ICacheMangerOperation { } /** - * the method creates a job to check it the given component is in the cach - * and if so is it valid if the value in the cache is not valid it will be - * updated. + * the method creates a job to check it the given component is in the cach and if so is it valid if the value in the cache is not valid it will be updated. * * @param componentId * the uid of the component we want to update @@ -135,24 +121,21 @@ public class CacheMangerOperation implements ICacheMangerOperation { */ @Override public void updateComponentInCache(String componentId, long timestamp, NodeTypeEnum nodeTypeEnum) { - Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager() - .getConfiguration().getApplicationL2Cache(); + Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getApplicationL2Cache(); if (applicationL2CacheConfig != null && applicationL2CacheConfig.isEnabled()) { this.jobQueue.add(new CheckAndUpdateJob(daoInfo, componentId, nodeTypeEnum, timestamp)); } } public void overideComponentInCache(String componentId, long timestamp, NodeTypeEnum nodeTypeEnum) { - Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager() - .getConfiguration().getApplicationL2Cache(); + Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getApplicationL2Cache(); if (applicationL2CacheConfig != null && applicationL2CacheConfig.isEnabled()) { this.jobQueue.add(new OverrideJob(daoInfo, componentId, nodeTypeEnum, timestamp)); } } public void deleteComponentInCache(String componentId, long timestamp, NodeTypeEnum nodeTypeEnum) { - Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager() - .getConfiguration().getApplicationL2Cache(); + Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getApplicationL2Cache(); if (applicationL2CacheConfig != null && applicationL2CacheConfig.isEnabled()) { this.jobQueue.add(new DeleteJob(daoInfo, componentId, nodeTypeEnum, timestamp)); } @@ -168,17 +151,14 @@ public class CacheMangerOperation implements ICacheMangerOperation { */ @Override public void storeComponentInCache(org.openecomp.sdc.be.model.Component component, NodeTypeEnum nodeTypeEnum) { - Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager() - .getConfiguration().getApplicationL2Cache(); + Configuration.ApplicationL2CacheConfig applicationL2CacheConfig = ConfigurationManager.getConfigurationManager().getConfiguration().getApplicationL2Cache(); if (applicationL2CacheConfig != null && applicationL2CacheConfig.isEnabled()) { this.jobQueue.add(new StoreJob(daoInfo, component, nodeTypeEnum)); } } /** - * the method shutdown's all the worker's. the method has a pre set of how - * long it will wait for the workers to shutdown. the pre defined value is - * taken from the configuration. + * the method shutdown's all the worker's. the method has a pre set of how long it will wait for the workers to shutdown. the pre defined value is taken from the configuration. */ @PreDestroy public void shutDown() { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java index 0c4f35fd54..818089feee 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java @@ -74,24 +74,6 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC private CapabilityOperation capabilityOperation; /** - * String constants for logger - */ - private String statusIs = ". status is "; - private String dot = "."; - private String onGraph = " on graph "; - private String ofRI = " of resource instance "; - private String toCapability = " to capability "; - private String toCI = " to capability instance "; - private String toProperty = " to property "; - private String forRI = " for resource instance "; - private String failedCreateCI = "Failed to create capability instance of capability "; - private String failedAddProperties = "Failed to add properties to capability instance "; - private String ofCI = " of component instance "; - private String failedDeletePropertyValues = "Failed to delete property values of capability instance "; - private String toValue = " to property value "; - private String fromRI = " from resource instance "; - - /** * create capability instance of capability with property values for resource instance * * @param resourceInstanceId @@ -184,13 +166,13 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC private Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValueToCapabilityInstance(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper, Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) { Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes; - log.debug("Before adding property values to capability instance {} dot", createdCapabilityInstanceIdWrapper.getInnerElement()); + log.debug("Before adding property values to capability instance {}.",createdCapabilityInstanceIdWrapper.getInnerElement()); addPropertyValuesRes = addPropertyValuesToCapabilityInstance(createCapabilityRes.left().value(), propertyValues, defaultPropertiesWrapper.getInnerElement()); if (addPropertyValuesRes.isRight()) { errorWrapper.setInnerElement(addPropertyValuesRes.right().value()); - log.debug("failedAddProperties {} ofRI {} statusIs {} dot", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After adding property values to capability instance {} status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); + log.debug("After adding property values to capability instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); return addPropertyValuesRes; } @@ -200,9 +182,9 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC TitanOperationStatus addPropertyValuesRes = addPropertyValuesToCapabilityInstance(createCapabilityRes.left().value(), propertyValues, defaultPropertiesWrapper.getInnerElement()); if (!addPropertyValuesRes.equals(TitanOperationStatus.OK)) { errorWrapper.setInnerElement(addPropertyValuesRes); - log.debug("Failed to add properties to capability instance {} {} {} {} {}", createdCapabilityInstanceIdWrapper.getInnerElement(), ofRI, resourceInstanceId, statusIs, errorWrapper.getInnerElement()); + log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); } - log.trace("After adding property values to capability instance {} {} {}", createdCapabilityInstanceIdWrapper.getInnerElement(), statusIs, errorWrapper.getInnerElement()); + log.trace("After adding property values to capability instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); return addPropertyValuesRes; } @@ -214,18 +196,19 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC createdCapabilityInstanceIdWrapper.setInnerElement(createdCapabilityInstance.getUniqueId()); Map<String, PropertyDefinition> defaultProperties = overrideCapabilityDefinitionWrapper.getInnerElement().getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity())); defaultPropertiesWrapper.setInnerElement(defaultProperties); - log.debug("Before validating property values of capability instance {}.", createdCapabilityInstanceIdWrapper.getInnerElement()); + log.debug("Before validating property values of capability instance {}",createdCapabilityInstanceIdWrapper.getInnerElement()); Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues); if (result.isRight()) { errorWrapper.setInnerElement(result.right().value()); - log.debug("failedAddProperties {} ofRI {} statusIs {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After validating property values of capability instance {} status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); + log.debug("After validating property values of capability instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); return createdCapabilityInstance; } private TitanVertex validateCapabilityInstancePropertiesByVertex(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, TitanVertex createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) { + String id = (String) titanGenericDao.getProperty(createCapabilityRes, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); createdCapabilityInstanceIdWrapper.setInnerElement(id); Map<String, PropertyDefinition> defaultProperties = overrideCapabilityDefinitionWrapper.getInnerElement().getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity())); @@ -234,9 +217,9 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues); if (result.isRight()) { errorWrapper.setInnerElement(result.right().value()); - log.debug("Failed to add properties to capability instance {} {} {} {} {}", createdCapabilityInstanceIdWrapper.getInnerElement(), ofRI, resourceInstanceId, statusIs, errorWrapper.getInnerElement()); + log.debug("Failed to add properties to capability instance {} of resource instance {}, status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement()); } - log.trace("After validating property values of capability instance {} {} {}", createdCapabilityInstanceIdWrapper.getInnerElement(), statusIs, errorWrapper.getInnerElement()); + log.trace("After validating property values of capability instance {}, status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement()); return createCapabilityRes; } @@ -249,46 +232,46 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC createCapabilityRes = createCapabilityInstanceOnGraph(resourceInstanceId, overrideCapabilityDataWrapper.getInnerElement(), capabilityInstance); if (createCapabilityRes.isRight()) { errorWrapper.setInnerElement(createCapabilityRes.right().value()); - log.debug("failedCreateCI {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to create capability instance of capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After creating capability instance of capability {} on graph. Status is {}", capabilityId, errorWrapper.getInnerElement()); + log.debug("After creating capability instance of capability {} on graph, status is {}", capabilityId, errorWrapper.getInnerElement()); return createCapabilityRes; } private Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceOnGraphByVertex(TitanVertex riVertex, String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<TitanVertex> overrideCapabilityDataWrapper, Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes) { Either<TitanVertex, TitanOperationStatus> createCapabilityRes; - log.trace("Before creating capability instance of capability {} {}", capabilityId, onGraph); + log.trace("Before creating capability instance of capability {} on graph", capabilityId); overrideCapabilityDefinitionWrapper.setInnerElement(getCapabilityDefinitionRes.left().value()); CapabilityInstData capabilityInstance = buildCapabilityInstanceData(resourceInstanceId, overrideCapabilityDefinitionWrapper.getInnerElement()); createCapabilityRes = createCapabilityInstanceOnGraph(riVertex, resourceInstanceId, overrideCapabilityDataWrapper.getInnerElement(), capabilityInstance); if (createCapabilityRes.isRight()) { errorWrapper.setInnerElement(createCapabilityRes.right().value()); - log.debug("Failed to create capability instance of capability {} {} {} {} {} ", capabilityId, ofRI, resourceInstanceId, statusIs, errorWrapper.getInnerElement()); + log.debug("Failed to create capability instance of capability {} of resource instance {}, status is {} ", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After creating capability instance of capability {} {} {} {} {}", capabilityId, onGraph, statusIs, errorWrapper.getInnerElement()); + log.debug("After creating capability instance of capability {} on graph, status is {}", capabilityId, errorWrapper.getInnerElement()); return createCapabilityRes; } private Either<CapabilityDefinition, TitanOperationStatus> getCapabiityDefinition(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<CapabilityData> overrideCapabilityDataWrapper, Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes) { Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes; - log.debug("Before getting capability definition {} forRI {}.", capabilityId, resourceInstanceId); + log.debug("Before getting capability definition {} for resource instance {}", capabilityId, resourceInstanceId); CapabilityData overrideCapabilityData = getCapabilityRes.left().value().getLeft(); overrideCapabilityDataWrapper.setInnerElement(overrideCapabilityData); getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData); if (getCapabilityDefinitionRes.isRight()) { errorWrapper.setInnerElement(getCapabilityDefinitionRes.right().value()); - log.debug("Failed to retrieve capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to retrieve capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After getting capability definition for {} forRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("After getting capability definition for {} for resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); return getCapabilityDefinitionRes; } private Either<CapabilityDefinition, TitanOperationStatus> getCapabiityDefinitionByVertex(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<TitanVertex> overrideCapabilityDataWrapper, Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes) { Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes; - log.trace("Before getting capability definition {} {} {}", capabilityId, forRI, resourceInstanceId); + log.trace("Before getting capability definition {} for resource instance {}", capabilityId, resourceInstanceId); TitanVertex overrideCapabilityData = getCapabilityRes.left().value().getLeft(); @@ -296,90 +279,90 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData); if (getCapabilityDefinitionRes.isRight()) { errorWrapper.setInnerElement(getCapabilityDefinitionRes.right().value()); - log.debug("Failed to retrieve capability {} ofRI {} statusIs {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to retrieve capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After getting capability definition for {} forRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("After getting capability definition for {} for resource instance {} status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); return getCapabilityDefinitionRes; } private Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilitiesOfResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName, Wrapper<TitanOperationStatus> errorWrapper) { Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes; - log.debug("Before getting capability {} forRI {}.", capabilityId, resourceInstanceId); + log.debug("Before getting capability {} for resource instance {}", capabilityId, resourceInstanceId); Map<String, Object> props = new HashMap<>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName); getCapabilityRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class, props); if (getCapabilityRes.isRight()) { errorWrapper.setInnerElement(getCapabilityRes.right().value()); - log.debug("Failed to get capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to get capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.debug("After getting capability for {} forRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("After getting capability for {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); return getCapabilityRes; } private Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilitiesOfResourceInstance(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId, String capabilityName, Wrapper<TitanOperationStatus> errorWrapper) { Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes; - log.trace("Before getting capability {} {} {}", capabilityId, forRI, resourceInstanceId); + log.trace("Before getting capability {} {} {}", capabilityId, " for resource instance ", resourceInstanceId); Map<String, Object> props = new HashMap<>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName); getCapabilityRes = titanGenericDao.getChildByEdgeCriteria(instanceVertex, GraphEdgeLabels.CALCULATED_CAPABILITY, props); if (getCapabilityRes.isRight()) { errorWrapper.setInnerElement(getCapabilityRes.right().value()); - log.debug("Failed to get capability {} {} {} {} {}", capabilityId, ofRI, resourceInstanceId, statusIs, errorWrapper.getInnerElement()); + log.debug("Failed to get capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } - log.trace("After getting capability for {} {} {} {} {}", capabilityId, forRI, resourceInstanceId, statusIs, errorWrapper.getInnerElement()); + log.trace("After getting capability for {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); return getCapabilityRes; } private void validateCapabilityInstanceExistence(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper) { - log.debug("Before validation of existence of capability instance of capability {} forRI {}.", capabilityId, resourceInstanceId); + log.debug("Before validation of existence of capability instance of capability {} for resource instance {}", capabilityId, resourceInstanceId); boolean capabilityInstOfCapabilityAlreadyExists; Either<Boolean, TitanOperationStatus> validateCapabilityInstExistenceRes = validateCapabilityInstExistence(resourceInstanceId, capabilityId); if (validateCapabilityInstExistenceRes.isRight()) { errorWrapper.setInnerElement(validateCapabilityInstExistenceRes.right().value()); - log.debug("Failed to validate uniqueness of capability instance of capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to validate uniqueness of capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } else { capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value(); if (capabilityInstOfCapabilityAlreadyExists) { errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST); - log.debug("failedCreateCI {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to create capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } } - log.debug("After validation of existence of capability instance of capability {} forRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("After validation of existence of capability instance of capability {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } private void validateCapabilityInstanceExistence(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper) { - log.trace("Before validation of existence of capability instance of capability {} {} {}", capabilityId, forRI, resourceInstanceId); + log.trace("Before validation of existence of capability instance of capability {} for resource instance {}", capabilityId, resourceInstanceId); boolean capabilityInstOfCapabilityAlreadyExists; Either<Boolean, TitanOperationStatus> validateCapabilityInstExistenceRes = validateCapabilityInstExistence(resourceInstanceId, capabilityId); if (validateCapabilityInstExistenceRes.isRight()) { errorWrapper.setInnerElement(validateCapabilityInstExistenceRes.right().value()); - log.debug("Failed to validate uniqueness of capability instance of capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to validate uniqueness of capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } else { capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value(); if (capabilityInstOfCapabilityAlreadyExists) { errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST); - log.debug("failedCreateCI {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("Failed to create capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } } - log.debug("After validation of existence of capability instance of capability {} forRI {} statusIs {}.", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); + log.debug("After validation of existence of capability instance of capability {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement()); } private Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesToCapabilityInstance(CapabilityInstData createdCapabilityInstance, List<ComponentInstanceProperty> propertyValues, Map<String, PropertyDefinition> defaultProperties) { TitanOperationStatus error = null; List<PropertyValueData> createdPropertyValues = new ArrayList<>(); for (ComponentInstanceProperty property : propertyValues) { - log.debug("Before adding property value {} toCI {}.", property.getName(), createdCapabilityInstance.getUniqueId()); + log.debug("Before adding property value {} to capability instance {}", property.getName(), createdCapabilityInstance.getUniqueId()); PropertyValueData propertyData = buildPropertyValueData(property.getName(), property.getType(), property.getValue(), createdCapabilityInstance.getUniqueId()); Either<PropertyValueData, TitanOperationStatus> addPropertyValueRes = addPropertyValueToCapabilityInstance(createdCapabilityInstance, propertyData, defaultProperties.get(property.getName())); if (addPropertyValueRes.isRight()) { error = addPropertyValueRes.right().value(); - log.debug("Failed to add property to capability instance {} ofRI. StatusIs {}.", createdCapabilityInstance.getUniqueId(), error); + log.debug("Failed to add property to capability instance {} of resource instance, status is {}", createdCapabilityInstance.getUniqueId(), error); break; } else { createdPropertyValues.add(addPropertyValueRes.left().value()); } - log.debug("After adding property value {} toCI {} statusIs {}", property.getName(), createdCapabilityInstance.getUniqueId(), error); + log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), createdCapabilityInstance.getUniqueId(), error); } if (error == null) { return Either.left(createdPropertyValues); @@ -391,15 +374,15 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC TitanOperationStatus error = null; String id = (String) titanGenericDao.getProperty(createdCapabilityInstancevertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); for (ComponentInstanceProperty property : propertyValues) { - log.trace("Before adding property value {} {} {}", property.getName(), toCI, id); + log.trace("Before adding property value {} to capability instance {}", property.getName(), id); PropertyValueData propertyData = buildPropertyValueData(property.getName(), property.getType(), property.getValue(), id); TitanOperationStatus addPropertyValueRes = addPropertyValueToCapabilityInstance(createdCapabilityInstancevertex, propertyData, defaultProperties.get(property.getName()), id); if (!addPropertyValueRes.equals(TitanOperationStatus.OK)) { error = addPropertyValueRes; - log.debug("Failed to add property to capability instance {} {} {} {}", id, ofRI, statusIs, error); + log.debug("Failed to add property to capability instance {} of resource instance. status is {}", id, error); break; } - log.debug("After adding property value {} {} {} {} {}", property.getName(), toCI, id, statusIs, error); + log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), id, error); } if (error == null) { return TitanOperationStatus.OK; @@ -424,15 +407,15 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Map<String, Object> props = null; Either<GraphRelation, TitanOperationStatus> createRelationRes; PropertyValueData createdValue = null; - log.debug("Before creating property value node {} onGraph.", propertyValue.getUniqueId()); + log.debug("Before creating property value node {} on graph", propertyValue.getUniqueId()); Either<PropertyValueData, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue, PropertyValueData.class); if (createValueRes.isRight()) { error = createValueRes.right().value(); - log.debug("Failed to create property value for capability instance {} ofRI statusIs {}.", createdCapabilityInstance.getUniqueId(), error); + log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", createdCapabilityInstance.getUniqueId(), error); } - log.debug("After creating property value node {} onGraph statusIs {}.", propertyValue.getUniqueId(), error); + log.debug("After creating property value node {} on graph. status is {}", propertyValue.getUniqueId(), error); if (error == null) { - log.debug("Before creating relation from property value node {} toCI {}.", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId()); + log.debug("Before creating relation from property value node {} to capability instance {}", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId()); createdValue = createValueRes.left().value(); props = new HashMap<>(); props.put(GraphPropertiesDictionary.PROPERTY_NAME.name(), propertyDefinition.getName()); @@ -440,18 +423,18 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC createRelationRes = titanGenericDao.createRelation(createdCapabilityInstance, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to create relation from capability instance {} toValue {} statusIs {}.", createdCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error); + log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", createdCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error); } - log.debug("After creating relation from property value node {} toCI {} statusIs {}.", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId(), error); + log.debug("After creating relation from property value node {} to capability instance {}. status is {}", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId(), error); } if (error == null) { - log.debug("Before creating relation from property value node {} toProperty {}.", propertyValue.getUniqueId(), propertyDefinition.getUniqueId()); + log.debug("Before creating relation from property value node {} to property {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId()); createRelationRes = titanGenericDao.createRelation(propertyValue, new PropertyData(propertyDefinition, null), GraphEdgeLabels.PROPERTY_IMPL, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to create relation from property value {} toProperty {} statusIs {}.", createdValue.getUniqueId(), propertyDefinition.getUniqueId(), error); + log.debug("Failed to create relation from property value {} to property {}. status is {}", createdValue.getUniqueId(), propertyDefinition.getUniqueId(), error); } - log.debug("After creating relation from property value node {} toProperty statusIs {}.", propertyValue.getUniqueId(), propertyDefinition.getUniqueId(), error); + log.debug("After creating relation from property value node {} to property {}. status is {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId(), error); } if (error == null) { return Either.left(createdValue); @@ -467,15 +450,13 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<TitanVertex, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue); if (createValueRes.isRight()) { error = createValueRes.right().value(); - if (log.isDebugEnabled()){ - log.debug("Failed to create property value for capability instance {} {} {} {}", id, ofRI, statusIs, error); - } + log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", id, error); } log.trace("After creating property value node {} on graph status is {}", propertyValue.getUniqueId(), error); TitanVertex createdPropVertex = null; String createdId = null; if (error == null) { - log.trace("Before creating relation from property value node {} {} {} ", propertyValue.getUniqueId(), toCI, id); + log.trace("Before creating relation from property value node {} to capability instance {} ", propertyValue.getUniqueId() , id); props = new HashMap<>(); props.put(GraphPropertiesDictionary.PROPERTY_NAME.name(), propertyDefinition.getName()); props.put(GraphPropertiesDictionary.PROPERTY_ID.name(), propertyDefinition.getUniqueId()); @@ -484,22 +465,18 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; createdId = (String) titanGenericDao.getProperty(createdPropVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); - if (log.isDebugEnabled()) { - log.debug("Failed to create relation from capability instance {} {} {} {} {}", id, toValue, createdId, statusIs, error); - } - } - if (log.isTraceEnabled()){ - log.trace("After creating relation from property value node {} {} {} {} {}", propertyValue.getUniqueId(), toCI, id, statusIs, error); + log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", id, createdId, error); } + log.trace("After creating relation from property value node {} to capability instance {}. status is {}", propertyValue.getUniqueId(), id, error); } if (error == null) { - log.trace("Before creating relation from property value node {} {} {}", propertyValue.getUniqueId(), toProperty, propertyDefinition.getUniqueId()); + log.trace("Before creating relation from property value node {} to property {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId()); createRelationRes = titanGenericDao.createEdge(createdPropVertex, new PropertyData(propertyDefinition, null), GraphEdgeLabels.PROPERTY_IMPL, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - log.debug("Failed to create relation from property value {} {} {} {} {}", createdId, toProperty, propertyDefinition.getUniqueId(), statusIs, error); + log.debug("Failed to create relation from property value {} to property {}. status is {}", createdId, propertyDefinition.getUniqueId(), error); } - log.debug("After creating relation from property value node {} {} {} {} {}", propertyValue.getUniqueId(), toProperty, propertyDefinition.getUniqueId(), statusIs, error); + log.debug("After creating relation from property value node {} to property {}. status is {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId(), error); } if (error == null) { return TitanOperationStatus.OK; @@ -537,7 +514,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll(); if (allDataTypes.isRight()) { TitanOperationStatus status = allDataTypes.right().value(); - log.debug("Failed to update property value statusIs {}.", status); + log.debug("Failed to update property value. status is {}", status); result = Either.right(status); } if (result == null) { @@ -582,7 +559,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC if (error.equals(TitanOperationStatus.NOT_FOUND)) { result = Either.left(false); } else { - log.debug("Failed to get outgoing edge for resource instance {} statusIs {}.", resourceInstanceId, error); + log.debug("Failed to get outgoing edge for resource instance {}. status is {}.", resourceInstanceId, error); result = Either.right(error); } } @@ -604,7 +581,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC if (error.equals(TitanOperationStatus.NOT_FOUND)) { result = Either.left(false); } else { - log.debug("Failed to get outgoing edge for resource instance {} {} {}", resourceInstanceId, statusIs, error); + log.debug("Failed to get outgoing edge for resource instance {} status is {}", resourceInstanceId, error); result = Either.right(error); } } @@ -615,7 +592,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC } private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceOnGraph(String resourceInstanceId, CapabilityData overrideCapabilityData, CapabilityInstData capabilityInstance) { - log.debug("Before creation of capability instance of capability {} forRI {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId); + log.debug("Before creation of capability instance of capability {} for resource instance {}", overrideCapabilityData.getUniqueId(), resourceInstanceId); Either<GraphRelation, TitanOperationStatus> createRelationRes; CapabilityInstData createdCapabilityInstance = null; @@ -624,9 +601,9 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance, CapabilityInstData.class); if (createCapabilityInstanceRes.isRight()) { error = createCapabilityInstanceRes.right().value(); - log.debug("failedCreateCI {} forRI {} statusIs {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error); + log.debug("Failed to create capability instance of capability {} for resource instance {}. status is {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error); } - log.debug("After creation of capability instance of capability {} forRI {} statusIs {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error); + log.debug("After creation of capability instance of capability {} for resource instance {}. status is {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error); if (error == null) { createdCapabilityInstance = createCapabilityInstanceRes.left().value(); capabilityInstanceId = createdCapabilityInstance.getUniqueId(); @@ -637,20 +614,20 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC createRelationRes = titanGenericDao.createRelation(resourceInstanceIdData, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to assotiate resource instance {} toCI {} statusIs {}.", resourceInstanceId, capabilityInstanceId, error); + log.debug("Failed to assotiate resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error); } - log.debug("After associating resource instance {} to CI {} statusIs {}.", resourceInstanceId, capabilityInstanceId, error); + log.debug("After associating resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error); } if (error == null) { - log.debug("Before associating capability instance {} toCapability {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId()); + log.debug("Before associating capability instance {} to capability {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId()); Map<String, Object> props = new HashMap<>(); props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityData.getUniqueId()); createRelationRes = titanGenericDao.createRelation(createdCapabilityInstance, overrideCapabilityData, GraphEdgeLabels.INSTANCE_OF, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to associate capability instance {} toCapability statusIs {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error); + log.debug("Failed to associate capability instance {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error); } - log.debug("After associating capability instance {} toCapability statusIs {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error); + log.debug("After associating capability instance {} to capability {}. status is {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error); } if (error == null) { return createCapabilityInstanceRes; @@ -660,7 +637,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC private Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceOnGraph(TitanVertex riVertex, String resourceInstanceId, TitanVertex overrideCapabilityDataVertex, CapabilityInstData capabilityInstance) { String overrideCapabilityDataId = (String) titanGenericDao.getProperty(overrideCapabilityDataVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); - log.trace("Before creation of capability instance of capability {} {} {}", overrideCapabilityDataVertex, forRI, resourceInstanceId); + log.trace("Before creation of capability instance of capability {} for resource instance {}", overrideCapabilityDataVertex, resourceInstanceId); TitanOperationStatus createRelationRes; TitanVertex createdCapabilityInstance = null; @@ -669,9 +646,9 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance); if (createCapabilityInstanceRes.isRight()) { error = createCapabilityInstanceRes.right().value(); - log.debug("Failed to create capability instance of capability {} {} {} {} {}", overrideCapabilityDataId, forRI, resourceInstanceId, statusIs, error); + log.debug("Failed to create capability instance of capability {} for resource instance {} status is {}", overrideCapabilityDataId, resourceInstanceId, error); } - log.trace("After creation of capability instance of capability {} {} {} {} {}", overrideCapabilityDataId, forRI, resourceInstanceId, statusIs, error); + log.trace("After creation of capability instance of capability {} for resource instance {} status is {}", overrideCapabilityDataId, resourceInstanceId, error); if (error == null) { createdCapabilityInstance = createCapabilityInstanceRes.left().value(); capabilityInstanceId = (String) titanGenericDao.getProperty(createdCapabilityInstance, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); @@ -682,22 +659,22 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC createRelationRes = titanGenericDao.createEdge(riVertex, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - log.debug("Failed to assotiate resource instance {} {} {} {} {}", resourceInstanceId, toCI, capabilityInstanceId, statusIs, error); + log.debug("Failed to assotiate resource instance {} to capability instance {} status is {}", resourceInstanceId, capabilityInstanceId, error); } if (log.isTraceEnabled()) { - log.trace("After associating resource instance {} {} {} {} {}", resourceInstanceId, toCI, capabilityInstanceId, statusIs, error); + log.trace("After associating resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error); } } if (error == null) { - log.trace("Before associating capability instance {} {} {}", capabilityInstanceId, toCapability, overrideCapabilityDataId); + log.trace("Before associating capability instance {} to capability {}", capabilityInstanceId, overrideCapabilityDataId); Map<String, Object> props = new HashMap<>(); props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityDataId); createRelationRes = titanGenericDao.createEdge(createdCapabilityInstance, overrideCapabilityDataVertex, GraphEdgeLabels.INSTANCE_OF, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - log.debug("Failed to associate capability instance {} {} {} {} {}", capabilityInstanceId, toCapability, overrideCapabilityDataId, statusIs, error); + log.debug("Failed to associate capability instance {} to capability {} status is {}", capabilityInstanceId, overrideCapabilityDataId, error); } - log.debug("After associating capability instance {} {} {} {} {}", capabilityInstanceId, toCapability, overrideCapabilityDataId, statusIs, error); + log.debug("After associating capability instance {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityDataId, error); } if (error == null) { return createCapabilityInstanceRes; @@ -726,23 +703,23 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC */ @Override public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId) { - log.debug("Before deleting of capability instance {} fromRI {}.", capabilityInstanceId, resourceInstanceId); + log.debug("Before deleting of capability instance {} from resource instance {}.", capabilityInstanceId, resourceInstanceId); Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstRes = null; TitanOperationStatus error = null; Either<Boolean, TitanOperationStatus> deleteProperyValuesRes = deleteAllPropertyValuesOfCapabilityInstance(resourceInstanceId, capabilityInstanceId); if (deleteProperyValuesRes.isRight()) { error = deleteProperyValuesRes.right().value(); - log.debug("failedDeletePropertyValues {} for RI {} statusIs {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); } if (error == null) { deleteCapabilityInstRes = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstanceId, CapabilityInstData.class); if (deleteCapabilityInstRes.isRight()) { error = deleteCapabilityInstRes.right().value(); - log.debug("Failed to delete capability instance {} forRI {} statusIs {}", capabilityInstanceId, resourceInstanceId, error); + log.debug("Failed to delete capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); } } - log.debug("After deleting of capability instance {} fromRI {} statusIs {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("After deleting of capability instance {} from resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); if (error == null) { return Either.left(deleteCapabilityInstRes.left().value()); } @@ -750,14 +727,14 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC } private Either<Boolean, TitanOperationStatus> deleteAllPropertyValuesOfCapabilityInstance(String resourceInstanceId, String capabilityInstanceId) { - log.debug("Before deleting all property values of capability instance {} fromRI {}.", capabilityInstanceId, resourceInstanceId); + log.debug("Before deleting all property values of capability instance {} from resource instance {}", capabilityInstanceId, resourceInstanceId); TitanOperationStatus error = null; List<ImmutablePair<PropertyValueData, GraphEdge>> deletePropertiesPairs; Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstanceId, GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class); if (getPropertyValuesRes.isRight()) { error = getPropertyValuesRes.right().value(); - log.debug("Failed to retrieve property values of capability instance {} forRI {} status {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("Failed to retrieve property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); } if (error == null) { deletePropertiesPairs = getPropertyValuesRes.left().value(); @@ -765,12 +742,12 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<PropertyValueData, TitanOperationStatus> deletePropertyRes = titanGenericDao.deleteNode(propertyPair.getLeft(), PropertyValueData.class); if (deletePropertyRes.isRight()) { error = deletePropertyRes.right().value(); - log.debug("failedDeletePropertyValues {} forRI {} statusIs {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); break; } } } - log.debug("After deleting all property values of capability instance {} fromRI {} statusIs {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("After deleting all property values of capability instance from resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); if (error == null) { return Either.left(true); } @@ -786,15 +763,15 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC */ @Override public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String resourceInstanceId) { - log.debug("Before deleting all capability instances of resource instance {}.", resourceInstanceId); + log.debug("Before deleting all capability instances of resource instance {}", resourceInstanceId); TitanOperationStatus error = null; Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class); if (getCapabilityInstancesRes.isRight()) { error = getCapabilityInstancesRes.right().value(); - log.debug("Failed to retrieve capability Instances of resource instance {} statusIs {}.", resourceInstanceId, error); + log.debug("Failed to retrieve capability Instances of resource instance {}. status is {}", resourceInstanceId, error); } - log.debug("After deleting all capability instances of resource instance {} statusIs {}", resourceInstanceId, error); + log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error); if (error == null) { return getCapabilityInstancesRes; } @@ -817,7 +794,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class, props); if (getCapabilityInstanceRes.isRight()) { error = getCapabilityInstanceRes.right().value(); - log.debug("Failed to retrieve capability Instance of capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("Failed to retrieve capability Instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } if (error == null) { return Either.left(getCapabilityInstanceRes.left().value().getLeft()); @@ -835,7 +812,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC */ @Override public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues) { - log.debug("Before updating property values of capability {} ofRI {}.", capabilityId, resourceInstanceId); + log.debug("Before updating property values of capability {} of resource instance {}.", capabilityId, resourceInstanceId); TitanOperationStatus error = null; Map<String, Object> props = new HashMap<>(); CapabilityInstData capabilityInstance = null; @@ -849,47 +826,47 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes = null; Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null; - log.debug("Before getting all capability instances of RI {}.", resourceInstanceId); + log.debug("Before getting all capability instances of resource instance {}.", resourceInstanceId); props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId); Either<ImmutablePair<CapabilityInstData, GraphEdge>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class, props); if (getCapabilityInstancesRes.isRight()) { error = getCapabilityInstancesRes.right().value(); - log.debug("Failed to retrieve capability Instances of capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("Failed to retrieve capability Instances of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } - log.debug("After getting all capability instances ofRI {} statusIs {}.", resourceInstanceId, error); + log.debug("After getting all capability instances of resource instance {}. status is {}.", resourceInstanceId, error); if (error == null) { - log.debug("Before deleting all capability instances ofRI {}.", resourceInstanceId); + log.debug("Before deleting all capability instances of resource instance {}.", resourceInstanceId); capabilityInstance = getCapabilityInstancesRes.left().value().getLeft(); capabilityInstanceId = capabilityInstance.getUniqueId(); deleteProperyValuesRes = deleteAllPropertyValuesOfCapabilityInstance(resourceInstanceId, capabilityInstanceId); if (deleteProperyValuesRes.isRight()) { error = deleteProperyValuesRes.right().value(); - log.debug("failedDeletePropertyValues {} forRI {} statusIs {}", capabilityInstanceId, resourceInstanceId, statusIs, error); + log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); } - log.debug("After deleting all capability instances ofRI {} statusIs {}.", resourceInstanceId, error); + log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error); } if (error == null) { - log.debug("Before getting capability {} ofRI {}.", capabilityId, resourceInstanceId); + log.debug("Before getting capability {} of resource instance {}", capabilityId, resourceInstanceId); getCapabilityDataRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class); if (getCapabilityDataRes.isRight()) { error = getCapabilityDataRes.right().value(); - log.debug("Failed to get capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("Failed to get capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } - log.debug("After getting capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("After getting capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error); } if (error == null) { - log.debug("Before getting capability definition for capability {} ofRI {}.", capabilityId, resourceInstanceId); + log.debug("Before getting capability definition for capability {} of resource instance {}.", capabilityId, resourceInstanceId); overrideCapabilityData = getCapabilityDataRes.left().value().getLeft(); getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData); if (getCapabilityDefinitionRes.isRight()) { error = getCapabilityDefinitionRes.right().value(); - log.debug("Failed to retrieve capability {} ofRI {} statusIs {}", capabilityId, resourceInstanceId, error); + log.debug("Failed to retrieve capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } - log.debug("After getting capability definition for capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("After getting capability definition for capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error); } if (error == null) { - log.debug("Before validating capability properties of capability instance {} ofRI {}.", capabilityInstanceId, resourceInstanceId); + log.debug("Before validating capability properties of capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId); overrideCapabilityDefinition = getCapabilityDefinitionRes.left().value(); if (overrideCapabilityDefinition.getProperties() != null) { defaultProperties = overrideCapabilityDefinition.getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity())); @@ -897,20 +874,20 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues); if (result.isRight()) { error = result.right().value(); - log.debug("failedAddProperties {} ofRI {} statusIs {}.", capabilityInstance.getUniqueId(), resourceInstanceId, error); + log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", capabilityInstance.getUniqueId(), resourceInstanceId, error); } - log.debug("After validating capability properties of capability instance {} of RI {} statusIs {}.", capabilityInstanceId, resourceInstanceId, error); + log.debug("After validating capability properties of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, resourceInstanceId, error); } if (error == null) { - log.debug("Before adding property values toCI {} ofRI {}.", capabilityInstanceId, resourceInstanceId); + log.debug("Before adding property values to capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId); addPropertyValuesRes = addPropertyValuesToCapabilityInstance(capabilityInstance, propertyValues, defaultProperties); if (addPropertyValuesRes.isRight()) { error = addPropertyValuesRes.right().value(); - log.debug("failedAddProperties {} ofRI {} statusIs {}.", capabilityInstance.getUniqueId(), resourceInstanceId, error); + log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", capabilityInstance.getUniqueId(), resourceInstanceId, error); } - log.debug("Before adding property values toCI {} ofRI {}.", capabilityInstanceId, resourceInstanceId); + log.debug("Before adding property values to capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId); } - log.debug("After updating property values of capability {} ofRI {} statusIs {}.", capabilityId, resourceInstanceId, error); + log.debug("After updating property values of capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error); if (error == null) { return addPropertyValuesRes; } @@ -933,33 +910,33 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC String componentInstanceId = createdComponentInstance.getUniqueId(); String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId(); - log.debug("Before cloning capability instance with property values of capability instance {} ofRI {}.", capabilityInstanceId, componentInstanceId); + log.debug("Before cloning capability instance with property values of capability instance {} of resource instance {}.", capabilityInstanceId, componentInstanceId); List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValuePairs; List<PropertyValueData> newPropertyValues = new ArrayList<>(); CapabilityInstData cloneCapabilityInstance = null; Either<CapabilityInstData, TitanOperationStatus> cloneCapabilityInstanceNodeRes = null; - log.debug("Before getting all property values ofCI {} ofRI {}.", capabilityInstanceId, componentInstanceId); + log.debug("Before getting all property values of component instance {} of resource instance {}.", capabilityInstanceId, componentInstanceId); Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstPair.getLeft().getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class); if (getPropertyValuesRes.isRight()) { error = getPropertyValuesRes.right().value(); - log.debug("Failed to retrieve property values of capability instance {} ofCI {} statusIs {}.", capabilityInstPair.getLeft().getUniqueId(), componentInstanceId ,error); + log.debug("Failed to retrieve property values of capability instance {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), componentInstanceId, error); } - log.debug("After getting all property values ofCI {} ofRI {} statusIs {}.", capabilityInstanceId, componentInstanceId, error); + log.debug("After getting all property values of component instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error); if (error == null) { CapabilityInstData cloneCapabilityInst = buildCapabilityInstanceData(componentInstanceId, capability); - log.debug("Before creating capability instance node {} onGraph.", cloneCapabilityInst.getUniqueId()); + log.debug("Before creating capability instance node {} on graph.", cloneCapabilityInst.getUniqueId()); cloneCapabilityInstanceNodeRes = titanGenericDao.createNode(cloneCapabilityInst, CapabilityInstData.class); if (cloneCapabilityInstanceNodeRes.isRight()) { error = cloneCapabilityInstanceNodeRes.right().value(); - log.debug("Failed to create capability instance of capability {} ofCI {} statusIs {}.", capability.getUniqueId(), componentInstanceId, error); + log.debug("Failed to create capability instance of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error); } - log.debug("After creating capability instance node {} onGraph. statusIs {}", cloneCapabilityInst.getUniqueId(), error); + log.debug("After creating capability instance node {} on graph. status is {}.", cloneCapabilityInst.getUniqueId(), error); } if (error == null) { - log.debug("Before creating relation from capability instance {} toCapability {} onGraph.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId()); + log.debug("Before creating relation from capability instance {} to capability {} on graph.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId()); cloneCapabilityInstance = cloneCapabilityInstanceNodeRes.left().value(); CapabilityData capabilityData = buildCapabilityData(capability); Map<String, Object> props = new HashMap<>(); @@ -967,29 +944,27 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC Either<GraphRelation, TitanOperationStatus> createRelationRes = titanGenericDao.createRelation(cloneCapabilityInstance, capabilityData, GraphEdgeLabels.INSTANCE_OF, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to associate capability instance {} toCapability {} statusIs {}.", cloneCapabilityInstance.getUniqueId(), capability.getUniqueId(), error); + log.debug("Failed to associate capability instance {} to capability {}. status is {}", cloneCapabilityInstance.getUniqueId(), capability.getUniqueId(), error); } - log.debug("After creating relation from capability instance {} toCapability {} onGraph. statusIs {}.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId(), error); + log.debug("After creating relation from capability instance {} to capability {} on graph. status is.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId(), error); } if (error == null) { - log.debug("Before cloning property values ofCI {}.", capabilityInstanceId); + log.debug("Before cloning property values of component instance {}.", capabilityInstanceId); propertyValuePairs = getPropertyValuesRes.left().value(); for (ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair : propertyValuePairs) { Either<PropertyValueData, TitanOperationStatus> clonePropertyValueRes = cloneAssociatePropertyValue(cloneCapabilityInstance, propertyValuePair); if (clonePropertyValueRes.isRight()) { error = clonePropertyValueRes.right().value(); - if (log.isDebugEnabled()) { - log.debug("Failed to clone property value {} ofCapability {} ofCI {}. statusIs {}.", propertyValuePair.getLeft().getUniqueId(), capability.getUniqueId(), componentInstanceId, error); - } + log.debug("Failed to clone property value {} of capability {} of component instance {}. status is {}", propertyValuePair.getLeft().getUniqueId(), capability.getUniqueId(), componentInstanceId, error); break; } else { newPropertyValues.add(clonePropertyValueRes.left().value()); } } - log.debug("After cloning property values of CI {} statusIs {}.", capabilityInstanceId, error); + log.debug("After cloning property values of component instance {}. status is {}.", capabilityInstanceId, error); } - log.debug("After cloning capability instance with property values of capability instance {} ofRI {} statusIs {}.", capabilityInstanceId, componentInstanceId, error); + log.debug("After cloning capability instance with property values of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error); if (error == null) { return Either.left(new ImmutablePair<CapabilityInstData, List<PropertyValueData>>(cloneCapabilityInstance, newPropertyValues)); } @@ -1003,44 +978,40 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId(); if (log.isTraceEnabled()) { - log.trace("Before cloning capability instance with property values of capability instance {} {} {}", capabilityInstanceId, ofRI, componentInstanceId); + log.trace("Before cloning capability instance with property values of capability instance {} of resource instance {}", capabilityInstanceId, componentInstanceId); } List<ImmutablePair<TitanVertex, Edge>> propertyValuePairs; Either<TitanVertex, TitanOperationStatus> cloneCapabilityInstanceNodeRes = null; if (log.isTraceEnabled()) { - log.trace("Before getting all property values {} {} {} {}", ofCI, capabilityInstanceId, ofRI, componentInstanceId); + log.trace("Before getting all property values of component instance {} of resource instance {}", capabilityInstanceId, componentInstanceId); } Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstPair.getLeft().getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE); if (getPropertyValuesRes.isRight()) { error = getPropertyValuesRes.right().value(); - if (log.isDebugEnabled()) { - log.debug("Failed to retrieve property values of capability instance {} {} {} {} {}", capabilityInstPair.getLeft().getUniqueId(), ofCI, componentInstanceId, statusIs, error); - } + log.debug("Failed to retrieve property values of capability instance {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), componentInstanceId, error); } if (log.isTraceEnabled()) { - log.trace("After getting all property values {} {} {} {} {} {}", ofCI, capabilityInstanceId, ofRI, componentInstanceId, statusIs, error); + log.trace("After getting all property values of component instance {} of resource instance {}. status is {}", capabilityInstanceId, componentInstanceId, error); } if (error == null) { CapabilityInstData cloneCapabilityInst = buildCapabilityInstanceData(componentInstanceId, capability); - log.trace("Before creating capability instance node {} {} ", cloneCapabilityInst.getUniqueId(), onGraph); + log.trace("Before creating capability instance node {} on graph", cloneCapabilityInst.getUniqueId()); cloneCapabilityInstanceNodeRes = titanGenericDao.createNode(cloneCapabilityInst); if (cloneCapabilityInstanceNodeRes.isRight()) { error = cloneCapabilityInstanceNodeRes.right().value(); - if (log.isDebugEnabled()) { - log.debug("Failed to create capability instance of capability {} {} {} {} {}", capability.getUniqueId(), ofCI, componentInstanceId, statusIs, error); - } + log.debug("Failed to create capability instance of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error); } if (log.isTraceEnabled()) { - log.trace("After creating capability instance node {} {} {} {}", cloneCapabilityInst.getUniqueId(), onGraph, statusIs, error); + log.trace("After creating capability instance node {} on graph. status is {}", cloneCapabilityInst.getUniqueId(), error); } } CapabilityData capabilityData; TitanVertex cloneCapabilityInstance = null; if (error == null) { if (log.isTraceEnabled()) { - log.trace("Before creating relation from capability instance {} {} {} {}", capability.getUniqueId(), toCapability, capability.getUniqueId(), onGraph); + log.trace("Before creating relation from capability instance {} to capability {} on graph", capability.getUniqueId(), capability.getUniqueId()); } capabilityData = buildCapabilityData(capability); Map<String, Object> props = new HashMap<>(); @@ -1049,33 +1020,25 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC TitanOperationStatus createRelationRes = titanGenericDao.createEdge(cloneCapabilityInstance, capabilityData, GraphEdgeLabels.INSTANCE_OF, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - if (log.isDebugEnabled()) { - log.debug("Failed to associate capability instance {} {} {} {} {}", capabilityData.getUniqueId(), toCapability, capability.getUniqueId(), statusIs, createRelationRes); - } - } - if (log.isTraceEnabled()) { - log.trace("After creating relation from capability instance {} {} {} {} {} {}", capabilityData.getUniqueId(), toCapability, capability.getUniqueId(), onGraph, statusIs, error); + log.debug("Failed to associate capability instance {} to capability {}. status is {}", capabilityData.getUniqueId(), capability.getUniqueId(), createRelationRes); } + log.trace("After creating relation from capability instance {} to capability {} on graph. status is {}", capabilityData.getUniqueId(), capability.getUniqueId(), error); } if (error == null) { - log.trace("Before cloning property values {} {} ", ofCI, capabilityInstanceId); + log.trace("Before cloning property values of component instance {} ", capabilityInstanceId); propertyValuePairs = getPropertyValuesRes.left().value(); for (ImmutablePair<TitanVertex, Edge> propertyValuePair : propertyValuePairs) { TitanOperationStatus clonePropertyValueRes = cloneAssociatePropertyValue(cloneCapabilityInstance, propertyValuePair); if (!clonePropertyValueRes.equals(TitanOperationStatus.OK)) { error = clonePropertyValueRes; - if (log.isDebugEnabled()) { - log.debug("Failed to clone property value of capability {} {} {} {} {}", capability.getUniqueId(), ofCI, componentInstanceId, statusIs, error); - } + log.debug("Failed to clone property value of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error); break; } } - if (log.isDebugEnabled()) { - log.debug("After cloning property values {} {} {} {}", ofCI, capabilityInstanceId, statusIs, error); - } + log.debug("After cloning property values of component instance {}. status is {}", capabilityInstanceId, error); } - log.debug("After cloning capability instance with property values of capability instance {} ofRI {} statusIs {}.", capabilityInstanceId, componentInstanceId, error); + log.debug("After cloning capability instance with property values of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error); if (error == null) { return Either.left(cloneCapabilityInstance); } @@ -1100,7 +1063,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC TitanOperationStatus error = null; String propertyValueID = propertyValuePair.getLeft().getUniqueId(); String capabilityInstanceId = cloneCapabilityInstance.getUniqueId(); - log.debug("Before cloning property values {} ofCI {}.", propertyValueID, capabilityInstanceId); + log.debug("Before cloning property values {} of component instance {}.", propertyValueID, capabilityInstanceId); Map<String, Object> props = propertyValuePair.getRight().getProperties(); PropertyData propertyData = new PropertyData(); @@ -1111,33 +1074,33 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC PropertyValueData createdValue = null; Either<GraphRelation, TitanOperationStatus> createRelationRes; - log.debug("Before creating property values node {} onGraph.", propertyValue.getUniqueId()); + log.debug("Before creating property values node {} on graph.", propertyValue.getUniqueId()); Either<PropertyValueData, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue, PropertyValueData.class); if (createValueRes.isRight()) { error = createValueRes.right().value(); - log.debug("Failed to create property value for capability instance {} ofRI. statusIs {}.", cloneCapabilityInstance.getUniqueId(), error); + log.debug("Failed to create property value for capability instance {} of resource instance. status is {}.", cloneCapabilityInstance.getUniqueId(), error); } - log.debug("After creating property values node {} onGraph. statusIs {}.", propertyValue.getUniqueId(), error); + log.debug("After creating property values node {} on graph. status is {}.", propertyValue.getUniqueId(), error); if (error == null) { createdValue = createValueRes.left().value(); - log.debug("Before creating relation from capability instance {} toValue {}.", capabilityInstanceId, createdValue.getUniqueId()); + log.debug("Before creating relation from capability instance {} to property value {}.", capabilityInstanceId, createdValue.getUniqueId()); createRelationRes = titanGenericDao.createRelation(cloneCapabilityInstance, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to create relation from capability instance {} toValue {} statusIs {}.", cloneCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error); + log.debug("Failed to create relation from capability instance {} to property value {}. status is {}.", cloneCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error); } - log.debug("After creating relation from capability instance {} toValue {} statusIs {}", capabilityInstanceId, createdValue.getUniqueId(), error); + log.debug("After creating relation from capability instance {} to property value {}. status is {}.", capabilityInstanceId, createdValue.getUniqueId(), error); } if (error == null) { - log.debug("Before creating relation from property value {} toProperty {}.", createdValue, propertyData.getUniqueId()); + log.debug("Before creating relation from property value {} to property {}.", createdValue, propertyData.getUniqueId()); createRelationRes = titanGenericDao.createRelation(createdValue, propertyData, GraphEdgeLabels.PROPERTY_IMPL, props); if (createRelationRes.isRight()) { error = createRelationRes.right().value(); - log.debug("Failed to create relation from property value {} toProperty {} statusIs {}.", createdValue.getUniqueId(), propertyId, error); + log.debug("Failed to create relation from property value {} to property {}. status is {}.", createdValue.getUniqueId(), propertyId, error); } - log.debug("Before creating relation from property value {} toProperty {} statusIs {}.", createdValue, propertyData.getUniqueId(), error); + log.debug("Before creating relation from property value {} to property {}. status is {}.", createdValue, propertyData.getUniqueId(), error); } - log.debug("After cloning property values {} ofCI {} statusIs {}.", propertyValueID, capabilityInstanceId, error); + log.debug("After cloning property values {} of component instance {}. status is {}.", propertyValueID, capabilityInstanceId, error); if (error == null) { return Either.left(createdValue); } @@ -1150,7 +1113,7 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC String propertyValueID = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); String capabilityInstanceId = (String) titanGenericDao.getProperty(capabilityInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); if (log.isTraceEnabled()) { - log.trace("Before cloning property values {} {} {}", propertyValueID, ofCI, capabilityInstanceId); + log.trace("Before cloning property values {} of component instance {}", propertyValueID, capabilityInstanceId); } Map<String, Object> props = titanGenericDao.getProperties(propertyValuePair.getRight()); @@ -1165,48 +1128,40 @@ public class CapabilityInstanceOperation extends AbstractOperation implements IC TitanVertex createdValue = null; TitanOperationStatus createRelationRes; - log.trace("Before creating property values node {} {} ", propertyValue.getUniqueId(), onGraph); + log.trace("Before creating property values node {} on graph.", propertyValue.getUniqueId()); Either<TitanVertex, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue); String capabiltyInstId = (String) titanGenericDao.getProperty(capabilityInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); if (createValueRes.isRight()) { error = createValueRes.right().value(); - if (log.isDebugEnabled()) { - log.debug("Failed to create property value for capability instance {} {} {} {}", capabiltyInstId, ofRI, statusIs, error); - } + log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", capabiltyInstId, error); } if (log.isTraceEnabled()) { - log.trace("After creating property values node {} {} {} {} ", propertyValue.getUniqueId(), onGraph, statusIs, error); + log.trace("After creating property values node {} on graph. status is {} ", propertyValue.getUniqueId(), error); } if (error == null) { createdValue = createValueRes.left().value(); - log.trace("Before creating relation from capability instance {} {} {}", capabilityInstanceId, toValue, propertyValue.getUniqueId()); + log.trace("Before creating relation from capability instance {} to property value {}", capabilityInstanceId, propertyValue.getUniqueId()); createRelationRes = titanGenericDao.createEdge(capabilityInstanceVertex, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - if (log.isDebugEnabled()) { - log.debug("Failed to create relation from capability instance {} {} {} {} {}", capabiltyInstId, toValue, propertyValue.getUniqueId(), statusIs, error); - } + log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", capabiltyInstId, propertyValue.getUniqueId(), error); } if (log.isTraceEnabled()) { - log.trace("After creating relation from capability instance {} {} {} {} {} ", capabilityInstanceId, toValue, propertyValue.getUniqueId(), statusIs, error); + log.trace("After creating relation from capability instance {} to property value {}. status is {} ", capabilityInstanceId, propertyValue.getUniqueId(), error); } } if (error == null) { - log.trace("Before creating relation from property value {} {} {} ", createdValue, toProperty, propertyData.getUniqueId()); + log.trace("Before creating relation from property value {} to property {} ", createdValue, propertyData.getUniqueId()); createRelationRes = titanGenericDao.createEdge(createdValue, propertyData, GraphEdgeLabels.PROPERTY_IMPL, props); if (!createRelationRes.equals(TitanOperationStatus.OK)) { error = createRelationRes; - if (log.isDebugEnabled()) { - log.debug("Failed to create relation from property value {} {} {} {} {}", propertyValue.getUniqueId(), toProperty, propertyId, statusIs, error); - } + log.debug("Failed to create relation from property value {} to property {}. status is {}", propertyValue.getUniqueId(), propertyId, error); } if (log.isTraceEnabled()) { - log.trace("Before creating relation from property value c", createdValue, toProperty, propertyData.getUniqueId(), statusIs, error); + log.trace("Before creating relation from property value {} to property {}. status is {}", createdValue, propertyData.getUniqueId(), error); } } - if (log.isTraceEnabled()) { - log.trace("After cloning property values {} {} {} {} {}", propertyValueID, ofCI, capabilityInstanceId, statusIs, error); - } + log.trace("After cloning property values {} of component instance {}. status is {}", propertyValueID, capabilityInstanceId, error); if (error == null) { return TitanOperationStatus.OK; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java index 9f00674780..ad43c60b0f 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java @@ -99,7 +99,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<CapabilityData, TitanOperationStatus> addCapStatus = addCapabilityToResource(resourceId, capabilityName, capabilityDefinition); if (addCapStatus.isRight()) { - log.debug("Failed to add capability {} [ {} ] to graph", capabilityName, capabilityDefinition); + log.debug("Failed to add capability {} [{}] to Graph", capabilityName, capabilityDefinition); BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("Add Capability", capabilityName, String.valueOf(addCapStatus.right().value())); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addCapStatus.right().value())); return result; @@ -108,11 +108,11 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit String capabilityUid = capabilityData.getUniqueId(); Either<CapabilityDefinition, StorageOperationStatus> capabilityRes = getCapability(capabilityUid, true); - log.debug("After fetching capability {} with uid {}. Status is {}", capabilityName, capabilityUid, capabilityRes); + log.debug("After fetching capability {} with uid {}. status is {}" ,capabilityName, capabilityUid,capabilityRes); if (capabilityRes.isRight()) { StorageOperationStatus status = capabilityRes.right().value(); - log.debug("Failed to fetch capability {] with uid {}. Status is {}", capabilityName, capabilityUid, status); + log.debug("Failed to fetch capability {} with uid {}. status is {}", capabilityName, capabilityUid, status); result = Either.right(status); return result; } @@ -147,7 +147,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit TitanOperationStatus addCapStatus = addCapabilityToResource(metadataVertex, resourceId, capabilityName, capabilityDefinition); if (!addCapStatus.equals(TitanOperationStatus.OK)) { - log.debug("Failed to add capability {} [ {} ]", capabilityName, capabilityDefinition); + log.debug("Failed to add capability {} [{}] to Graph", capabilityName, capabilityDefinition); BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("Add Capability", capabilityName, String.valueOf(addCapStatus)); result = DaoStatusConverter.convertTitanStatusToStorageStatus(addCapStatus); } @@ -171,8 +171,6 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit CapabilityDefinition capabilityDefinition = new CapabilityDefinition(); capabilityDefinition.setType(capabilityData.getType()); - // TODO esofer do something - return capabilityDefinition; } @@ -326,7 +324,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<CapabilityData, TitanOperationStatus> capabiltyRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, CapabilityData.class); if (capabiltyRes.isRight()) { TitanOperationStatus status = capabiltyRes.right().value(); - log.debug("Failed to retrieve capability {} from graph. Status is {}", uniqueId, status); + log.debug("Failed to retrieve capability {} from graph. status is {}", uniqueId, status); BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", uniqueId, String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); @@ -343,7 +341,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeRes = getCapabilityTypeOfCapability(uniqueId); if (capabilityTypeRes.isRight()) { TitanOperationStatus status = capabilityTypeRes.right().value(); - log.debug("Failed to retrieve capability type of capability {}. Status is {}", uniqueId, status); + log.debug("Failed to retrieve capability type of capability {}. status is {}", uniqueId, status); BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", uniqueId, String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); @@ -361,7 +359,6 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit ImmutablePair<ResourceMetadataData, GraphEdge> pair = parentNode.left().value(); capabilityDefinition.setOwnerId(pair.left.getMetadataDataDefinition().getUniqueId()); List<String> derivedFromList = new ArrayList<>(); - // derivedFromList.add(pair.left.getMetadataDataDefinition().getName()); TitanOperationStatus fillResourceDerivedListFromGraph = fillResourceDerivedListFromGraph(pair.left.getMetadataDataDefinition().getUniqueId(), derivedFromList); if (fillResourceDerivedListFromGraph.equals(TitanOperationStatus.OK)) { capabilityDefinition.setCapabilitySources(derivedFromList); @@ -371,7 +368,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<List<PropertyDefinition>, TitanOperationStatus> getPropertiesRes = getPropertiesOfCapability(uniqueId, capabilityTypeData.getCapabilityTypeDataDefinition().getType()); if (getPropertiesRes.isRight() && !getPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { TitanOperationStatus status = getPropertiesRes.right().value(); - log.debug("Failed to retrieve properties of capability {}. Status is {}", uniqueId, status); + log.debug("Failed to retrieve properties of capability {}. status is {}", uniqueId, status); BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Properties of Capability", uniqueId, String.valueOf(status)); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); @@ -522,7 +519,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit } public Either<List<PropertyDefinition>, TitanOperationStatus> getPropertiesOfCapability(String capabilityUid, String capabilityType) { - log.debug("Before getting properties of capability {} from graph ", capabilityUid); + log.debug("Before getting properties of capability {} from graph " , capabilityUid); List<PropertyDefinition> properties; Either<List<PropertyDefinition>, TitanOperationStatus> result = null; @@ -539,7 +536,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit getPropertiesOfCapabilityTypeRes = getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeUid); if (getPropertiesOfCapabilityTypeRes.isRight() && !getPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { TitanOperationStatus status = getPropertiesOfCapabilityTypeRes.right().value(); - log.error("Failed to retrieve properties for capability type {} from graph. Status is {}", capabilityType, status); + log.error("Failed to retrieve properties for capability type {} from graph. status is {}", capabilityType, status); result = Either.right(status); } } @@ -560,14 +557,15 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit return result; } - protected Either<CapabilityTypeData, TitanOperationStatus> getCapabilityTypeOfCapability(String uniqueId) { + @Override + public Either<CapabilityTypeData, TitanOperationStatus> getCapabilityTypeOfCapability(String uniqueId) { Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> capabilityTypeRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, GraphEdgeLabels.TYPE_OF, NodeTypeEnum.CapabilityType, CapabilityTypeData.class); if (capabilityTypeRes.isRight()) { TitanOperationStatus status = capabilityTypeRes.right().value();// - log.debug("Cannot find capability type associated with capability {}. Status is {}", uniqueId, status); + log.debug("Cannot find capability type associated with capability {}. status is {}", uniqueId, status); BeEcompErrorManager.getInstance().logBeFailedFindAssociationError("Fetch Capability type", NodeTypeEnum.CapabilityType.getName(), uniqueId, String.valueOf(status)); return Either.right(capabilityTypeRes.right().value()); } @@ -594,7 +592,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> capabilitiesNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class); - log.debug("After looking for all capabilities under resource {}. Status is {}", resourceId, capabilitiesNodes); + log.debug("After looking for all capabilities under resource {}. status is {}" , resourceId , capabilitiesNodes); if (capabilitiesNodes.isRight()) { TitanOperationStatus status = capabilitiesNodes.right().value(); return Either.right(status); @@ -610,7 +608,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit private Either<CapabilityData, TitanOperationStatus> addCapabilityToResource(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) { - log.debug("Going to add capability {} [ {} ] to resource uid {}", capabilityName, capabilityDefinition, resourceId); + log.debug("Going to add capability {} [ {} ] to resource uid {}" , capabilityName, capabilityDefinition, resourceId); Either<CapabilityData, TitanOperationStatus> createCapRes = createCapability(resourceId, capabilityName, capabilityDefinition); @@ -647,7 +645,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<GraphRelation, TitanOperationStatus> associateResourceRes = associateResourceToCapability(resourceId, capabilityName, capabilityData); if (associateResourceRes.isRight()) { TitanOperationStatus status = associateResourceRes.right().value(); - log.error("Failed to associate resource " + resourceId + " to capability " + capabilityData + ". status is " + status); + log.error("Failed to associate resource {} to capability {}. status is {}", resourceId, capabilityData, status); return Either.right(status); } @@ -702,10 +700,10 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit UniqueIdData capabilityTypeIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, UniqueIdBuilder.buildCapabilityTypeUid(capabilityType)); log.debug("Before associating {} to capability type {}.", capabilityData, capabilityType); Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(capabilityData, capabilityTypeIdData, GraphEdgeLabels.TYPE_OF, null); - log.debug("After associating {} to capability type {}. status is {}", capabilityData, capabilityType, createRelResult); + log.debug("After associating {} to capability type {}. status is {}" , capabilityData, capabilityType, createRelResult); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate capability {} to capability type {} in graph. Status is {}",capabilityData, capabilityTypeIdData, operationStatus); + log.error("Failed to associate capability {} to capability type {} in graph. status is {}", capabilityData, capabilityTypeIdData, operationStatus); return Either.right(operationStatus); } return Either.left(createRelResult.left().value()); @@ -733,10 +731,10 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Map<String, Object> props = new HashMap<>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName); Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceIdData, capabilityData, GraphEdgeLabels.CAPABILITY, props); - log.debug("After associating resource {} to capability {}. Status is {}", resourceId, capabilityData, createRelResult); + log.debug("After associating resource {} to capability {}. status is {}" , resourceId, capabilityData, createRelResult); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate resource {} to capability {} in graph. Status is {}", resourceId, capabilityData, operationStatus); + log.error("Failed to associate resource {} to capability {} in graph. status is {}", resourceId, capabilityData, operationStatus); return Either.right(operationStatus); } @@ -825,7 +823,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit resultStatus = deletePropertiesStatus.right().value(); } if (resultStatus == null) { - log.debug("Before deleting capability from graph {}", capabilityUid); + log.debug("Before deleting capability from graph {}" , capabilityUid); Either<CapabilityData, TitanOperationStatus> deleteNodeStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, CapabilityData.class); if (deleteNodeStatus.isRight()) { resultStatus = deleteNodeStatus.right().value(); @@ -848,7 +846,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit if (deleteAllRes.isRight()) { TitanOperationStatus status = deleteAllRes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to delete capabilities of resource {}. Status is {}", resourceId, status); + log.debug("Failed to delete capabilities of resource {}. status is {}", resourceId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -895,7 +893,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit CapabilityDefinition capabilityDefinition = entry.getValue(); String capabilityUid = capabilityDefinition.getUniqueId(); - log.debug("Before deleting properties of capability {} from graph", capabilityUid); + log.debug("Before deleting properties of capability {} from graph " , capabilityUid); Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesStatus = deletePropertiesOfCapability(capabilityUid); if (deletePropertiesStatus.isRight() && !deletePropertiesStatus.right().value().equals(TitanOperationStatus.NOT_FOUND)) { @@ -964,7 +962,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesOfCapabilityTypeRes = getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeUid); if (allPropertiesOfCapabilityTypeRes.isRight() && !allPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { TitanOperationStatus operationStatus = allPropertiesOfCapabilityTypeRes.right().value(); - log.error("Failed to retrieve properties for capability type " + capabilityType + " from graph. status is " + operationStatus); + log.error("Failed to retrieve properties for capability type {} from graph. status is {}", capabilityType, operationStatus); return Either.right(operationStatus); } @@ -976,7 +974,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<List<PropertyDefinition>, TitanOperationStatus> validateAndReducePropertiesRes = validatePropertyUniqueness(propertiesOfCapabilityType, properties); if (validateAndReducePropertiesRes.isRight()) { TitanOperationStatus operationStatus = validateAndReducePropertiesRes.right().value(); - log.error("Failed to add properties to capability {} in graph. Status is {}", capabilityData.getUniqueId(), operationStatus); + log.error("Failed to add properties to capability {} in graph. status is {}", capabilityData.getUniqueId(), operationStatus); return Either.right(operationStatus); } } @@ -984,7 +982,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapabilityRes = propertyOperation.addPropertiesToElementType(capabilityData.getUniqueId(), NodeTypeEnum.Capability, properties); if (addPropertiesToCapabilityRes.isRight()) { TitanOperationStatus operationStatus = addPropertiesToCapabilityRes.right().value(); - log.error("Failed to add properties to capability {} in graph. Status is {}", capabilityData.getUniqueId(), operationStatus); + log.error("Failed to add properties to capability {} in graph. status is {}", capabilityData.getUniqueId(), operationStatus); return Either.right(operationStatus); } return Either.left(addPropertiesToCapabilityRes.left().value()); @@ -1066,7 +1064,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit } public Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesOfCapability(String capabilityUid) { - log.debug("Before deleting properties of capability {} from graph ", capabilityUid); + log.debug("Before deleting properties of capability {} from graph " , capabilityUid); Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesStatus = titanGenericDao.deleteChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property, PropertyData.class); @@ -1118,7 +1116,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit } } if (result.isRight()) { - log.debug("Failed to update properties of capability {}. Status is {}", uniqueId, result); + log.debug("Failed to update properties of capability {}. status is {}", uniqueId, result); } return result; } finally { @@ -1141,13 +1139,13 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class); if (getCapabilitiesRes.isRight()) { error = getCapabilitiesRes.right().value(); - log.debug("Failed to retrieve capabilities for resource instance {}. Status is {}", resourceInstanceId, error); + log.debug("Failed to retrieve capabilities for resource instance {}. status is {}", resourceInstanceId, error); } else { List<ImmutablePair<CapabilityData, GraphEdge>> capabilityPairsList = getCapabilitiesRes.left().value(); List<CapabilityData> capabilityPair = capabilityPairsList.stream().filter(pair -> pair.getLeft().getUniqueId().equals(capabilityUid)).map(pair -> pair.getLeft()).collect(Collectors.toList()); if (capabilityPair.isEmpty()) { error = TitanOperationStatus.NOT_FOUND; - log.debug("Failed to retrieve capability {} for resource instance {}. Status is {}", capabilityUid, resourceInstanceId, error); + log.debug("Failed to retrieve capability {} for resource instance {}. status is {}", capabilityUid, resourceInstanceId, error); } else { capability = capabilityPair.get(0); } @@ -1181,7 +1179,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesOfCapabilityTypeRes = propertyOperation.findPropertiesOfNode(NodeTypeEnum.CapabilityType, nextParentType); if (allPropertiesOfCapabilityTypeRes.isRight() && !allPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { error = allPropertiesOfCapabilityTypeRes.right().value(); - log.error("Failed to retrieve properties for capability type {} from graph. Status is {}", nextParentType, error); + log.error("Failed to retrieve properties for capability type {} from graph. status is {}", nextParentType, error); return Either.right(error); } else if (allPropertiesOfCapabilityTypeRes.isLeft()) { if (allProperies.isEmpty()) { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java index 985399cb65..ddd6017620 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java @@ -72,29 +72,22 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } @Override - public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType( - CapabilityTypeDefinition capabilityTypeDefinition, boolean inTransaction) { + public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType(CapabilityTypeDefinition capabilityTypeDefinition, boolean inTransaction) { Either<CapabilityTypeDefinition, StorageOperationStatus> result = null; try { - Either<CapabilityTypeDefinition, TitanOperationStatus> validationRes = validateUpdateProperties( - capabilityTypeDefinition); + Either<CapabilityTypeDefinition, TitanOperationStatus> validationRes = validateUpdateProperties(capabilityTypeDefinition); if (validationRes.isRight()) { - log.error("One or all properties of capability type {} not valid. status is {}", - capabilityTypeDefinition, validationRes.right().value().name()); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(validationRes.right().value())); + log.error("One or all properties of capability type {} not valid. status is {}", capabilityTypeDefinition, validationRes.right().value().name()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(validationRes.right().value())); return result; } - Either<CapabilityTypeData, TitanOperationStatus> eitherStatus = addCapabilityTypeToGraph( - capabilityTypeDefinition); + Either<CapabilityTypeData, TitanOperationStatus> eitherStatus = addCapabilityTypeToGraph(capabilityTypeDefinition); if (eitherStatus.isRight()) { - log.error("Failed to add capability {} to Graph. status is {}", capabilityTypeDefinition, - eitherStatus.right().value().name()); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + log.error("Failed to add capability {} to Graph. status is {}", capabilityTypeDefinition, eitherStatus.right().value().name()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); return result; } else { CapabilityTypeData capabilityTypeData = eitherStatus.left().value(); @@ -120,28 +113,21 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } - private Either<CapabilityTypeDefinition, TitanOperationStatus> validateUpdateProperties( - CapabilityTypeDefinition capabilityTypeDefinition) { + private Either<CapabilityTypeDefinition, TitanOperationStatus> validateUpdateProperties(CapabilityTypeDefinition capabilityTypeDefinition) { TitanOperationStatus error = null; - if (capabilityTypeDefinition.getProperties() != null && !capabilityTypeDefinition.getProperties().isEmpty() - && capabilityTypeDefinition.getDerivedFrom() != null) { - Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesRes = capabilityOperation - .getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeDefinition.getDerivedFrom()); - if (allPropertiesRes.isRight() - && !allPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { + if (capabilityTypeDefinition.getProperties() != null && !capabilityTypeDefinition.getProperties().isEmpty() && capabilityTypeDefinition.getDerivedFrom() != null) { + Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesRes = capabilityOperation.getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeDefinition.getDerivedFrom()); + if (allPropertiesRes.isRight() && !allPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { error = allPropertiesRes.right().value(); - log.debug("Couldn't fetch derived from property nodes for capability type {}, error: {}", - capabilityTypeDefinition.getType(), error); + log.debug("Couldn't fetch derived from property nodes for capability type {}, error: {}", capabilityTypeDefinition.getType(), error); } if (error == null && !allPropertiesRes.left().value().isEmpty()) { Map<String, PropertyDefinition> derivedFromProperties = allPropertiesRes.left().value(); - capabilityTypeDefinition.getProperties().entrySet().stream() - .filter(e -> derivedFromProperties.containsKey(e.getKey()) && e.getValue().getType() == null) + capabilityTypeDefinition.getProperties().entrySet().stream().filter(e -> derivedFromProperties.containsKey(e.getKey()) && e.getValue().getType() == null) .forEach(e -> e.getValue().setType(derivedFromProperties.get(e.getKey()).getType())); - Either<List<PropertyDefinition>, TitanOperationStatus> validatePropertiesRes = capabilityOperation - .validatePropertyUniqueness(allPropertiesRes.left().value(), capabilityTypeDefinition - .getProperties().values().stream().collect(Collectors.toList())); + Either<List<PropertyDefinition>, TitanOperationStatus> validatePropertiesRes = capabilityOperation.validatePropertyUniqueness(allPropertiesRes.left().value(), + capabilityTypeDefinition.getProperties().values().stream().collect(Collectors.toList())); if (validatePropertiesRes.isRight()) { error = validatePropertiesRes.right().value(); } @@ -163,8 +149,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab protected CapabilityTypeDefinition convertCTDataToCTDefinition(CapabilityTypeData capabilityTypeData) { log.debug("The object returned after create capability is {}", capabilityTypeData); - CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition( - capabilityTypeData.getCapabilityTypeDataDefinition()); + CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition(capabilityTypeData.getCapabilityTypeDataDefinition()); return capabilityTypeDefResult; } @@ -177,14 +162,12 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab * * 2. Add edge between the former node to its parent(if exists) * - * 3. Add property node and associate it to the node created at #1. (per - * property & if exists) + * 3. Add property node and associate it to the node created at #1. (per property & if exists) * * @param capabilityTypeDefinition * @return */ - private Either<CapabilityTypeData, TitanOperationStatus> addCapabilityTypeToGraph( - CapabilityTypeDefinition capabilityTypeDefinition) { + private Either<CapabilityTypeData, TitanOperationStatus> addCapabilityTypeToGraph(CapabilityTypeDefinition capabilityTypeDefinition) { log.debug("Got capability type {}", capabilityTypeDefinition); @@ -194,37 +177,31 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab CapabilityTypeData capabilityTypeData = buildCapabilityTypeData(capabilityTypeDefinition, ctUniqueId); log.debug("Before adding capability type to graph. capabilityTypeData = {}", capabilityTypeData); - Either<CapabilityTypeData, TitanOperationStatus> createCTResult = titanGenericDao.createNode(capabilityTypeData, - CapabilityTypeData.class); + Either<CapabilityTypeData, TitanOperationStatus> createCTResult = titanGenericDao.createNode(capabilityTypeData, CapabilityTypeData.class); log.debug("After adding capability type to graph. status is = {}", createCTResult); if (createCTResult.isRight()) { TitanOperationStatus operationStatus = createCTResult.right().value(); - log.error("Failed to capability type " + capabilityTypeDefinition.getType() + " to graph. status is " - + operationStatus); + log.error("Failed to capability type {} to graph. status is {}", capabilityTypeDefinition.getType(), operationStatus); return Either.right(operationStatus); } CapabilityTypeData resultCTD = createCTResult.left().value(); Map<String, PropertyDefinition> propertiesMap = capabilityTypeDefinition.getProperties(); Collection<PropertyDefinition> properties = propertiesMap != null ? propertiesMap.values() : null; - Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapablityType = propertyOperation - .addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.CapabilityType, propertiesMap); + Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapablityType = propertyOperation.addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.CapabilityType, propertiesMap); if (addPropertiesToCapablityType.isRight()) { - log.error( - "Failed add properties " + propertiesMap + " to capability " + capabilityTypeDefinition.getType()); + log.error("Failed add properties {} to capability {}", propertiesMap, capabilityTypeDefinition.getType()); return Either.right(addPropertiesToCapablityType.right().value()); } String derivedFrom = capabilityTypeDefinition.getDerivedFrom(); if (derivedFrom != null) { - log.debug( - "Before creating relation between capability type " + ctUniqueId + " to its parent " + derivedFrom); + log.debug("Before creating relation between capability type {} to its parent {}", ctUniqueId, derivedFrom); UniqueIdData from = new UniqueIdData(NodeTypeEnum.CapabilityType, ctUniqueId); UniqueIdData to = new UniqueIdData(NodeTypeEnum.CapabilityType, derivedFrom); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, - GraphEdgeLabels.DERIVED_FROM, null); - log.debug("After create relation between capability type {} to its parent {}. Status is {}", ctUniqueId, derivedFrom, createRelation); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.DERIVED_FROM, null); + log.debug("After create relation between capability type {} to its parent {}. status is {}", ctUniqueId, derivedFrom, createRelation); if (createRelation.isRight()) { return Either.right(createRelation.right().value()); } @@ -234,8 +211,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } - private CapabilityTypeData buildCapabilityTypeData(CapabilityTypeDefinition capabilityTypeDefinition, - String ctUniqueId) { + private CapabilityTypeData buildCapabilityTypeData(CapabilityTypeDefinition capabilityTypeDefinition, String ctUniqueId) { CapabilityTypeData capabilityTypeData = new CapabilityTypeData(capabilityTypeDefinition); @@ -250,8 +226,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } @Override - public Either<CapabilityTypeDefinition, StorageOperationStatus> getCapabilityType(String uniqueId, - boolean inTransaction) { + public Either<CapabilityTypeDefinition, StorageOperationStatus> getCapabilityType(String uniqueId, boolean inTransaction) { Either<CapabilityTypeDefinition, StorageOperationStatus> result = null; try { @@ -261,7 +236,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab if (ctResult.isRight()) { TitanOperationStatus status = ctResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to retrieve information on capability type {}. Status is {}", uniqueId, status); + log.error("Failed to retrieve information on capability type {}. status is {}", uniqueId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value())); return result; @@ -288,33 +263,30 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab Either<CapabilityTypeDefinition, TitanOperationStatus> result = null; - Either<CapabilityTypeData, TitanOperationStatus> capabilityTypesRes = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), uniqueId, CapabilityTypeData.class); + Either<CapabilityTypeData, TitanOperationStatus> capabilityTypesRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), uniqueId, CapabilityTypeData.class); if (capabilityTypesRes.isRight()) { TitanOperationStatus status = capabilityTypesRes.right().value(); - log.debug("Capability type {} cannot be found in graph. Status is {}", uniqueId, status); + log.debug("Capability type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } CapabilityTypeData ctData = capabilityTypesRes.left().value(); - CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition( - ctData.getCapabilityTypeDataDefinition()); + CapabilityTypeDefinition capabilityTypeDefinition = new CapabilityTypeDefinition(ctData.getCapabilityTypeDataDefinition()); TitanOperationStatus propertiesStatus = fillProperties(uniqueId, capabilityTypeDefinition); if (propertiesStatus != TitanOperationStatus.OK) { - log.error("Failed to fetch properties of capability type " + uniqueId); + log.error("Failed to fetch properties of capability type {}", uniqueId); return Either.right(propertiesStatus); } - Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), uniqueId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.CapabilityType, CapabilityTypeData.class); - log.debug("After retrieving DERIVED_FROM node of {}. Status is {}", uniqueId, parentNode); + Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), uniqueId, GraphEdgeLabels.DERIVED_FROM, + NodeTypeEnum.CapabilityType, CapabilityTypeData.class); + log.debug("After retrieving DERIVED_FROM node of {}. status is {}", uniqueId, parentNode); if (parentNode.isRight()) { TitanOperationStatus titanOperationStatus = parentNode.right().value(); if (titanOperationStatus != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the parent capability of capability type {}. Status is {}", uniqueId, titanOperationStatus); + log.error("Failed to find the parent capability of capability type {}. status is {}", uniqueId, titanOperationStatus); result = Either.right(titanOperationStatus); return result; } @@ -331,11 +303,10 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab private TitanOperationStatus fillProperties(String uniqueId, CapabilityTypeDefinition capabilityTypeDefinition) { - Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = propertyOperation - .findPropertiesOfNode(NodeTypeEnum.CapabilityType, uniqueId); + Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = propertyOperation.findPropertiesOfNode(NodeTypeEnum.CapabilityType, uniqueId); if (findPropertiesOfNode.isRight()) { TitanOperationStatus titanOperationStatus = findPropertiesOfNode.right().value(); - log.debug("After looking for properties of vertex {}. Status is {}", uniqueId, titanOperationStatus); + log.debug("After looking for properties of vertex {}. status is {}", uniqueId, titanOperationStatus); if (TitanOperationStatus.NOT_FOUND.equals(titanOperationStatus)) { return TitanOperationStatus.OK; } else { @@ -348,12 +319,10 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } } - public Either<Boolean, StorageOperationStatus> isCapabilityTypeDerivedFrom(String childCandidateType, - String parentCandidateType) { + public Either<Boolean, StorageOperationStatus> isCapabilityTypeDerivedFrom(String childCandidateType, String parentCandidateType) { Map<String, Object> propertiesToMatch = new HashMap<String, Object>(); propertiesToMatch.put(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childCandidateType); - Either<List<CapabilityTypeData>, TitanOperationStatus> getResponse = titanGenericDao - .getByCriteria(NodeTypeEnum.CapabilityType, propertiesToMatch, CapabilityTypeData.class); + Either<List<CapabilityTypeData>, TitanOperationStatus> getResponse = titanGenericDao.getByCriteria(NodeTypeEnum.CapabilityType, propertiesToMatch, CapabilityTypeData.class); if (getResponse.isRight()) { TitanOperationStatus titanOperationStatus = getResponse.right().value(); log.debug("Couldn't fetch capability type {}, error: {}", childCandidateType, titanOperationStatus); @@ -363,14 +332,12 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab Set<String> travelledTypes = new HashSet<>(); do { travelledTypes.add(childUniqueId); - Either<List<ImmutablePair<CapabilityTypeData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childUniqueId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.CapabilityType, CapabilityTypeData.class); + Either<List<ImmutablePair<CapabilityTypeData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childUniqueId, GraphEdgeLabels.DERIVED_FROM, + NodeTypeEnum.CapabilityType, CapabilityTypeData.class); if (childrenNodes.isRight()) { if (childrenNodes.right().value() != TitanOperationStatus.NOT_FOUND) { TitanOperationStatus titanOperationStatus = getResponse.right().value(); - log.debug("Couldn't fetch derived from node for capability type {}, error: {}", childCandidateType, - titanOperationStatus); + log.debug("Couldn't fetch derived from node for capability type {}, error: {}", childCandidateType, titanOperationStatus); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanOperationStatus)); } else { log.debug("Derived from node is not found for type {} - this is OK for root capability."); @@ -379,8 +346,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } String derivedFromUniqueId = childrenNodes.left().value().get(0).getLeft().getUniqueId(); if (derivedFromUniqueId.equals(parentCandidateType)) { - log.debug("Verified that capability type {} derives from capability type {}", childCandidateType, - parentCandidateType); + log.debug("Verified that capability type {} derives from capability type {}", childCandidateType, parentCandidateType); return Either.left(true); } childUniqueId = derivedFromUniqueId; @@ -402,8 +368,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab } @Override - public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType( - CapabilityTypeDefinition capabilityTypeDefinition) { + public Either<CapabilityTypeDefinition, StorageOperationStatus> addCapabilityType(CapabilityTypeDefinition capabilityTypeDefinition) { return addCapabilityType(capabilityTypeDefinition, false); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java index cb85888780..c487b0ce71 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java @@ -29,6 +29,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import java.util.Set; +import java.util.UUID; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -50,10 +51,12 @@ import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary; import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; import org.openecomp.sdc.be.dao.titan.TitanGenericDao; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; -import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PropertyRule; +import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition; import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; @@ -67,7 +70,8 @@ import org.openecomp.sdc.be.model.ComponentInstanceAttribute; import org.openecomp.sdc.be.model.ComponentInstanceInput; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.DataTypeDefinition; -import org.openecomp.sdc.be.model.GetInputValueInfo; +import org.openecomp.sdc.be.model.GroupDefinition; +import org.openecomp.sdc.be.model.GroupInstance; import org.openecomp.sdc.be.model.HeatParameterDefinition; import org.openecomp.sdc.be.model.IComponentInstanceConnectedElement; import org.openecomp.sdc.be.model.InputDefinition; @@ -78,6 +82,7 @@ import org.openecomp.sdc.be.model.RequirementAndRelationshipPair; import org.openecomp.sdc.be.model.RequirementCapabilityRelDef; import org.openecomp.sdc.be.model.RequirementDefinition; import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; import org.openecomp.sdc.be.model.operations.api.IAttributeOperation; import org.openecomp.sdc.be.model.operations.api.IComponentInstanceOperation; @@ -99,6 +104,7 @@ import org.openecomp.sdc.be.resources.data.RelationshipTypeData; import org.openecomp.sdc.be.resources.data.RequirementData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.openecomp.sdc.be.resources.data.UniqueIdData; +import org.openecomp.sdc.be.resources.data.UserData; import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum; import org.openecomp.sdc.common.api.ArtifactTypeEnum; import org.openecomp.sdc.common.config.EcompErrorName; @@ -137,9 +143,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo private CapabilityInstanceOperation capabilityInstanceOperation; @Autowired - private CapabilityTypeOperation capabilityTypeOperation; - - @Autowired private RequirementOperation requirementOperation; @Autowired @@ -160,6 +163,12 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo @Autowired private ApplicationDataTypeCache dataTypeCache; + @Autowired + protected GroupOperation groupOperation; + + @Autowired + protected GroupInstanceOperation groupInstanceOperation; + /** * FOR TEST ONLY * @@ -180,12 +189,15 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo NodeTypeEnum compInstNodeType, boolean allowDeleted, boolean inTransaction) { Either<ComponentInstance, StorageOperationStatus> result = null; + if (!ValidationUtils.validateStringNotEmpty(componentInstance.getCustomizationUUID())) { + generateCustomizationUUID(componentInstance); + } try { Either<ComponentInstance, TitanOperationStatus> addRes = addComponentInstanceToContainerComponent(containerComponentId, containerNodeType, instanceNumber, isCreateLocgicalName, componentInstance, compInstNodeType, allowDeleted); if (addRes.isRight()) { TitanOperationStatus status = addRes.right().value(); - log.error("Failed to add resource instance {} to service {}. Status is {}", componentInstance, containerComponentId, status); + log.error("Failed to add resource instance {} to service {}. status is {}", componentInstance, containerComponentId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -246,7 +258,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (deleteRes.isRight()) { TitanOperationStatus status = deleteRes.right().value(); - log.error("Failed to remove resource instance {} from component {}. Status is {}", resourceInstUid, containerComponentId, status); + log.error("Failed to remove resource instance {} from component {}. status is {}", resourceInstUid, containerComponentId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -288,7 +300,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (updateRes.isRight()) { TitanOperationStatus status = updateRes.right().value(); - log.error("Failed to find resource instance name {}. Status is {}", uniqId, status); + log.error("Failed to find resource instance name {}. status is {}", uniqId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -366,10 +378,48 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Map<String, Object> properties = titanGenericDao.getProperties(ciVertex); ComponentInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.ResourceInstance.getName(), GraphElementTypeEnum.Node, properties, ComponentInstanceData.class); + Either<ComponentInstance, TitanOperationStatus> createdResourceInstanceRes = createGroupInstancesOnComponentInstance(componentInstance, ciVertex, createdComponentInstance); + return createdResourceInstanceRes; + } + + + public Either<ComponentInstance, TitanOperationStatus> createGroupInstancesOnComponentInstance(ComponentInstance componentInstance, TitanVertex ciVertex, ComponentInstanceData createdComponentInstance) { ComponentInstance createdResourceInstance = new ComponentInstance(createdComponentInstance.getComponentInstDataDefinition()); + createdResourceInstance.setGroupInstances(componentInstance.getGroupInstances()); + List<GroupInstance> groupInstancesList = new ArrayList<GroupInstance>(); + List<GroupDefinition> group = null; + Either<List<GroupDefinition>, TitanOperationStatus> groupEither = groupOperation.getAllGroupsFromGraph(createdResourceInstance.getComponentUid(), NodeTypeEnum.Resource); + if (groupEither.isRight() && groupEither.right().value() != TitanOperationStatus.OK && groupEither.right().value() != TitanOperationStatus.NOT_FOUND) { + TitanOperationStatus status = groupEither.right().value(); + log.debug("Failed to associate group instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status); + return Either.right(status); + } else { + if (groupEither.isLeft()) { + group = groupEither.left().value(); + if (group != null && !group.isEmpty()) { + List<GroupDefinition> vfGroupsList = group.stream().filter(p -> p.getType().equals("org.openecomp.groups.VfModule")).collect(Collectors.toList()); + for (GroupDefinition groupDefinition : vfGroupsList) { + Either<GroupInstance, StorageOperationStatus> status = createGroupInstance(ciVertex, groupDefinition, createdResourceInstance); + if (status.isRight()) { + log.debug("Failed to associate group instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status); + + } else { + GroupInstance groupInstance = status.left().value(); + groupInstancesList.add(groupInstance); + } + + } + createdResourceInstance.setGroupInstances(groupInstancesList); + } + } + } return Either.left(createdResourceInstance); + } + public void generateCustomizationUUID(ComponentInstance componentInstance) { + UUID uuid = UUID.randomUUID(); + componentInstance.setCustomizationUUID(uuid.toString()); } /** @@ -409,7 +459,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty()); String resourceType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty()); - detectOriginType(originType, componentInstanceData, resourceType); log.trace("Before adding component instance to graph. componentInstanceData = {}", componentInstanceData); @@ -427,7 +476,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo TitanOperationStatus associateContainerRes = associateContainerCompToComponentInstance(metadataVertex, createdComponentInstanceVertex, logicalName); String componentInstanceUniqueId = componentInstanceData.getUniqueId(); - if (!associateContainerRes.equals(TitanOperationStatus.OK)) { + if (associateContainerRes != TitanOperationStatus.OK) { BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); log.debug("Failed to associate container component {} to component instance {}. Status is {}", containerComponentId, componentInstanceUniqueId, associateContainerRes); return Either.right(associateContainerRes); @@ -435,20 +484,20 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String originId = (String) titanGenericDao.getProperty(createdComponentInstanceVertex, GraphPropertiesDictionary.TYPE.getProperty()); TitanOperationStatus associateToInstOriginComponent = associateToInstOriginComponent(createdComponentInstanceVertex, originVertex, originId); - if (!associateToInstOriginComponent.equals(TitanOperationStatus.OK)) { + if (associateToInstOriginComponent != TitanOperationStatus.OK) { BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); log.debug("Failed to associate component instance {} to its origin component {}. Status is {}", componentInstanceUniqueId, componentInstanceData.getComponentInstDataDefinition().getComponentUid(), associateToInstOriginComponent); return Either.right(associateToInstOriginComponent); } TitanOperationStatus associateCompInstToRequirements = associateCompInstToRequirements(createdComponentInstanceVertex, containerNodeType, compInstNodeType, originId); - if (!associateCompInstToRequirements.equals(TitanOperationStatus.OK)) { + if (associateCompInstToRequirements != TitanOperationStatus.OK) { BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); log.debug("Failed to associate component instance {} to its origin requirements. Status is {}", componentInstanceUniqueId, associateCompInstToRequirements); return Either.right(associateCompInstToRequirements); } TitanOperationStatus associateCompInstToCapabilities = associateCompInstToCapabilities(createdComponentInstanceVertex, containerNodeType, compInstNodeType, originId); - if (!associateCompInstToCapabilities.equals(TitanOperationStatus.OK)) { + if (associateCompInstToCapabilities != TitanOperationStatus.OK) { BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); log.debug("Failed to associate component instance {} to its origin capabilities. Status is {}", componentInstanceUniqueId, associateCompInstToCapabilities); return Either.right(associateCompInstToCapabilities); @@ -469,7 +518,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } else if (containerNodeType.equals(NodeTypeEnum.Resource) && componentInstance.getCapabilities() != null && !componentInstance.getCapabilities().isEmpty()) { // in case of creation from scar TitanOperationStatus addPropertiesRes = createCapabilityInstancesWithPropertyValues(createdComponentInstanceVertex, componentInstanceUniqueId, componentInstance.getCapabilities(), true); - if (!addPropertiesRes.equals(TitanOperationStatus.OK)) { + if (addPropertiesRes != TitanOperationStatus.OK) { status = addPropertiesRes; log.debug("Failed to create capability instances with property values for component instance {}. Status is {}", componentInstance.getUniqueId(), status); } @@ -490,13 +539,14 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo // in case of cloning of service log.trace("Before associating created component instance {} to cloned capability instances.", componentInstanceUniqueId); TitanOperationStatus associationStatus = associateCreatedComponentInstanceToClonedCapabilityInstances(createdComponentInstanceVertex, componentInstanceUniqueId, cloneCapabilityInstancesRes.left().value()); - if (!associationStatus.equals(TitanOperationStatus.OK) && !associationStatus.equals(TitanOperationStatus.NOT_FOUND)) { + if (associationStatus != TitanOperationStatus.OK && associationStatus != TitanOperationStatus.NOT_FOUND) { status = associationStatus; log.debug("Failed to associate capability instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status); } log.trace("After associating created component instance {} to cloned capability instances. Status is {}", componentInstanceUniqueId, status); } } + if (status == null) { // ComponentInstance createdResourceInstance = new // ComponentInstance(createdComponentInstance.getComponentInstDataDefinition()); @@ -536,7 +586,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo CapabilityDefinition capability = capailityEntry.getValue().get(0); if (capability.getProperties() != null && !capability.getProperties().isEmpty()) { TitanOperationStatus addPropertiesRes = addCapabilityPropertyValuesToResourceInstance(resourceInstanceVertex, resourceInstanceId, capability, isNewlyCreatedResourceInstance); - if (!addPropertiesRes.equals(TitanOperationStatus.OK)) { + if (addPropertiesRes != TitanOperationStatus.OK) { result = addPropertiesRes; log.debug("Failed to add property values to capabilities of component instance {}. Status is {}", resourceInstanceId, result); return result; @@ -555,7 +605,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo capInstPair.getRight().getProperties()); if (associateComponentInstanceToCapabilityinstanceRes.isRight()) { error = associateComponentInstanceToCapabilityinstanceRes.right().value(); - log.debug("Failed to associate capability instance {} to resource instance {}. Status is {}.", capInstPair.getLeft().getUniqueId(), newComponentResourceId, error); + log.debug("Failed to associate capability instance {} to resource instance {} status is {}.", capInstPair.getLeft().getUniqueId(), newComponentResourceId, error); break; } else { relationsToCapabilityInstances.add(associateComponentInstanceToCapabilityinstanceRes.left().value()); @@ -571,7 +621,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo TitanOperationStatus error = null; for (ImmutablePair<TitanVertex, GraphEdge> capInstPair : capabilityInstances) { TitanOperationStatus associateComponentInstanceToCapabilityinstanceRes = titanGenericDao.createEdge(riVertex, capInstPair.getLeft(), GraphEdgeLabels.CAPABILITY_INST, capInstPair.getRight().getProperties()); - if (!associateComponentInstanceToCapabilityinstanceRes.equals(TitanOperationStatus.OK)) { + if (associateComponentInstanceToCapabilityinstanceRes != TitanOperationStatus.OK) { error = associateComponentInstanceToCapabilityinstanceRes; log.debug("Failed to associate capability instance {} to resource instance {} status is {} .", capInstPair.getLeft(), newComponentResourceId, error); break; @@ -595,7 +645,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo GraphEdgeLabels.RESOURCE_INST, NodeTypeEnum.ResourceInstance, ComponentInstanceData.class); if (getAllResourceInstanceRes.isRight() && !getAllResourceInstanceRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { error = getAllResourceInstanceRes.right().value(); - log.debug("Failed to retrieve resource instances from resource {}. Status is {}.", resourceId, error); + log.debug("Failed to retrieve resource instances from resource {} status is {}.", resourceId, error); } if (getAllResourceInstanceRes.isLeft()) { resourceInstancesPair = getAllResourceInstanceRes.left().value(); @@ -606,7 +656,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class); if (getCapabilityInstancesRes.isRight() && !getCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { error = getCapabilityInstancesRes.right().value(); - log.debug("Failed to retrieve capability instances of resource instance {}. Status is {}", ri.getUniqueId(), error); + log.debug("Failed to retrieve capability instances of resource instance {} status is {}.", ri.getUniqueId(), error); break; } if (getCapabilityInstancesRes.isLeft()) { @@ -620,7 +670,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo capInstPair.getRight().getProperties()); if (associateComponentInstanceToCapabilityinstanceRes.isRight()) { error = associateComponentInstanceToCapabilityinstanceRes.right().value(); - log.debug("Failed to associate capability instance {} to resource instance {}. Status is {}", capInstPair.getLeft().getUniqueId(), componentResourceId, error); + log.debug("Failed to associate capability instance {} to resource instance {} status is {}.", capInstPair.getLeft().getUniqueId(), componentResourceId, error); break; } else { relationsToCapabilityInstances.add(associateComponentInstanceToCapabilityinstanceRes.left().value()); @@ -633,8 +683,10 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return Either.right(error); } - private void detectOriginType(String label, ComponentInstanceData componentInstanceData, String resourceTypeStr) { - switch (NodeTypeEnum.getByName(label)) { + private NodeTypeEnum detectOriginType(String label, ComponentInstanceData componentInstanceData, String resourceTypeStr) { + NodeTypeEnum res = null; + res = NodeTypeEnum.getByName(label); + switch (res) { case Service: componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.SERVICE); break; @@ -650,6 +702,9 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo case VFC: componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VFC); break; + case VFCMT: + componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VFCMT); + break; case CP: componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.CP); break; @@ -661,6 +716,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo default: break; } + return res; } private Either<GraphRelation, TitanOperationStatus> associateToInstOriginComponent(ComponentInstanceData componentInstanceData, NodeTypeEnum compInstNodeType) { @@ -669,10 +725,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentInstanceData, resourceIdData, GraphEdgeLabels.INSTANCE_OF, null); - log.debug("After associating resource instance {} to resource {}. Status is {}", - componentInstanceData.getUniqueId(), - componentInstanceData.getComponentInstDataDefinition().getUniqueId(), - createRelation); + log.debug("After associating resource instance {} to resource {}. status is {}", componentInstanceData.getUniqueId(), componentInstanceData.getComponentInstDataDefinition().getUniqueId(), createRelation); return createRelation; } @@ -742,12 +795,12 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), componentInstanceData.getUniqueId()); if (requirementDef.getMinOccurrences() == null) { - props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementData.MIN_OCCURRENCES); + props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementDataDefinition.MIN_OCCURRENCES); } else { props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requirementDef.getMinOccurrences()); } if (requirementDef.getMaxOccurrences() == null) { - props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementData.MAX_DEFAULT_OCCURRENCES); + props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES); } else { props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), requirementDef.getMaxOccurrences()); } @@ -784,12 +837,12 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), compoInstId); if (requirementDef.getMinOccurrences() == null) { - props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementData.MIN_OCCURRENCES); + props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementDataDefinition.MIN_OCCURRENCES); } else { props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requirementDef.getMinOccurrences()); } if (requirementDef.getMaxOccurrences() == null) { - props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementData.MAX_DEFAULT_OCCURRENCES); + props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES); } else { props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), requirementDef.getMaxOccurrences()); } @@ -857,8 +910,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo GraphEdge edge = calculatedReq.right; Map<String, Object> properties = edge.getProperties(); String source = null; - String occurrences = RequirementData.MAX_DEFAULT_OCCURRENCES; - String minOccurrences = RequirementData.MIN_OCCURRENCES; + String occurrences = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES; + String minOccurrences = RequirementDataDefinition.MIN_OCCURRENCES; if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) { source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty()); @@ -898,8 +951,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Edge edge = calculatedReq.right; Map<String, Object> properties = titanGenericDao.getProperties(edge); String source = null; - String occurrences = RequirementData.MAX_DEFAULT_OCCURRENCES; - String minOccurrences = RequirementData.MIN_OCCURRENCES; + String occurrences = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES; + String minOccurrences = RequirementDataDefinition.MIN_OCCURRENCES; if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) { source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty()); @@ -943,8 +996,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) { source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty()); } - String minOccurrences = CapabilityData.MIN_OCCURRENCES; - String occurrences = CapabilityData.MAX_OCCURRENCES; + String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES; + String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES; if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) { minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty()); } @@ -982,8 +1035,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) { source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty()); } - String minOccurrences = CapabilityData.MIN_OCCURRENCES; - String occurrences = CapabilityData.MAX_OCCURRENCES; + String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES; + String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES; if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) { minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty()); } @@ -1021,8 +1074,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.trace("Creating calculated capability relation from component instance {} to capability {}", componentInstanceData.getUniqueId(), capabilityData.getUniqueId()); CapabilityData capabilityDataNode = new CapabilityData(); capabilityDataNode.setUniqueId(capabilityData.getUniqueId()); - String minOccurrences = CapabilityData.MIN_OCCURRENCES; - String occurrences = CapabilityData.MAX_OCCURRENCES; + String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES; + String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES; if (capabilityData.getMinOccurrences() != null) { minOccurrences = capabilityData.getMinOccurrences(); } @@ -1054,8 +1107,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.trace("Creating calculated capability relation from component instance {} to capability {}", compoInstId, capabilityData.getUniqueId()); CapabilityData capabilityDataNode = new CapabilityData(); capabilityDataNode.setUniqueId(capabilityData.getUniqueId()); - String minOccurrences = CapabilityData.MIN_OCCURRENCES; - String occurrences = CapabilityData.MAX_OCCURRENCES; + String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES; + String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES; if (capabilityData.getMinOccurrences() != null) { minOccurrences = capabilityData.getMinOccurrences(); } @@ -1220,7 +1273,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo // "_").toLowerCase(); dataDefinition.setName(logicalName); if (dataDefinition.getNormalizedName() == null) - dataDefinition.setNormalizedName(ValidationUtils.normaliseComponentInstanceName(logicalName)); + dataDefinition.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(logicalName)); dataDefinition.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentId, ciOriginComponentUid, dataDefinition.getNormalizedName())); ComponentInstanceData resourceInstanceData = new ComponentInstanceData(dataDefinition); @@ -1238,7 +1291,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo TitanOperationStatus status = node.right().value(); BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "Remove Component Instance"); BeEcompErrorManager.getInstance().logBeDaoSystemError("Remove Component Instance"); - log.debug("Failed to delete component instance {}. Status is {}", componentInstanceUid, status); + log.debug("Failed to delete component instance {}. status is {}", componentInstanceUid, status); return Either.right(status); } @@ -1280,11 +1333,18 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return Either.right(status); } } + + // delete associated properties + status = deleteAssociatedGroupInstances(componentInstanceUid); + if (status != TitanOperationStatus.OK) { + return Either.right(status); + } + Either<ComponentInstanceData, TitanOperationStatus> deleteRI = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), componentInstanceUid, ComponentInstanceData.class); if (deleteRI.isRight()) { TitanOperationStatus deleteRiStatus = deleteRI.right().value(); - log.error("Failed to delete resource instance {}. Status is {}", componentInstanceUid, deleteRiStatus); + log.error("Failed to delete resource instance {}. status is {}", componentInstanceUid, deleteRiStatus); return Either.right(deleteRiStatus); } @@ -1295,6 +1355,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return Either.left(resourceInstance); } + private TitanOperationStatus deleteAssociatedGroupInstances(String componentInstanceUid) { + + return this.groupInstanceOperation.deleteAllGroupInstances(componentInstanceUid); + } + private TitanOperationStatus deleteAssociatedCapabilityInstances(String resourceInstanceId) { TitanOperationStatus status = TitanOperationStatus.OK; @@ -1326,7 +1391,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (artifactRes.isRight()) { TitanOperationStatus status = artifactRes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find artifacts of resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to find artifacts of resource instance {}. status is {}", resourceInstanceUid, status); return status; } } else { @@ -1334,10 +1399,10 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo List<ImmutablePair<ArtifactData, GraphEdge>> artifactPairs = artifactRes.left().value(); for (ImmutablePair<ArtifactData, GraphEdge> pair : artifactPairs) { String uniqueId = (String) pair.left.getUniqueId(); - Either<ArtifactData, TitanOperationStatus> removeArifactFromGraph = artifactOperation.removeArtifactOnGraph(resourceInstanceUid, uniqueId, NodeTypeEnum.ResourceInstance, resourceInstanceUid, true); + Either<ArtifactData, TitanOperationStatus> removeArifactFromGraph = artifactOperation.removeArtifactOnGraph(resourceInstanceUid, uniqueId, NodeTypeEnum.ResourceInstance, true); if (removeArifactFromGraph.isRight()) { TitanOperationStatus status = removeArifactFromGraph.right().value(); - log.error("Failed to delete artifact of resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to delete artifact of resource instance {}. status is {}", resourceInstanceUid, status); return status; } @@ -1404,7 +1469,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (relationsForTarget.isRight()) { TitanOperationStatus status = relationsForTarget.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the relationships of resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to find the relationships of resource instance {}. status is {}", resourceInstanceUid, status); return status; } } else { @@ -1432,7 +1497,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (relationsForSource.isRight()) { TitanOperationStatus status = relationsForSource.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the relationships of resource instance " + resourceInstanceUid + ". status is " + status); + log.error("Failed to find the relationships of resource instance {}. status is {}", resourceInstanceUid, status); return status; } } else { @@ -1462,7 +1527,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<RelationshipInstData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(relationshipTypeImplData, RelationshipInstData.class); if (deleteNode.isRight()) { TitanOperationStatus status = deleteNode.right().value(); - log.error("Failed to delete relationship node {}. Status is {}", relationshipTypeImplData, status); + log.error("Failed to delete relationship node {}. status is {}", relationshipTypeImplData, status); return status; } } @@ -1495,7 +1560,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<TitanVertex, TitanOperationStatus> riFrom = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstanceUid); if (riFrom.isRight()) { - log.debug("Failed to fetch component instance {}. Error: {}", fromResInstanceUid, riFrom.right().value()); + log.debug("Failed to fetch component instance {}. error {}", fromResInstanceUid, riFrom.right().value()); return Either.right(riFrom.right().value()); } Iterator<Edge> edgeIter = riFrom.left().value().edges(Direction.OUT, GraphEdgeLabels.RELATIONSHIP_INST.getProperty()); @@ -1504,7 +1569,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return Either.right(TitanOperationStatus.NOT_FOUND); } List<RelationshipInstData> deletedRelations = new ArrayList<>(); - List<String> vertexToDelete = new ArrayList<>(); + Set<String> vertexToDelete = new HashSet<String>(); while (edgeIter.hasNext()) { TitanEdge edge = (TitanEdge) edgeIter.next(); String name = (String) edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value(); @@ -1531,7 +1596,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo // remove relation vertex Either<RelationshipInstData, TitanOperationStatus> relationNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RelationshipInst), relationVertexId, RelationshipInstData.class); if (relationNode.isRight()) { - log.debug("Failed to delete relation node with id {}. Error: {}", relationVertexId, relationNode.right().value()); + log.debug("Failed to delete relation node with id {}. error {}", relationVertexId, relationNode.right().value()); return Either.right(relationNode.right().value()); } RelationshipInstData deletedRelation = relationNode.left().value(); @@ -1555,7 +1620,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<List<RelationshipInstData>, TitanOperationStatus> dissociateRes = disconnectResourcesInService(componentId, nodeType, requirementDef); if (dissociateRes.isRight()) { TitanOperationStatus status = dissociateRes.right().value(); - log.error("Failed to dissociate resource instance " + fromResInstanceUid + " from resource instance " + toResInstanceUid + " in service " + componentId + ". status is " + status); + log.error("Failed to dissociate resource instance {} from resource instance {} in service {}. status is {}", fromResInstanceUid, toResInstanceUid, componentId, status); BeEcompErrorManager.getInstance().logBeDaoSystemError("dissociateComponentInstances"); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -1564,13 +1629,23 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (!updateCalculatedCapReqResult.equals(StorageOperationStatus.OK)) { BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "dissociateComponentInstances"); BeEcompErrorManager.getInstance().logBeDaoSystemError("dissociateComponentInstances"); - log.debug("Failed to dissociate component instances {}. Status is {}", requirementDef, updateCalculatedCapReqResult); + log.debug("Failed to dissociate component instances. {}. status is {}", requirementDef, updateCalculatedCapReqResult); result = Either.right(updateCalculatedCapReqResult); return result; } - // RelationshipInstData relationshipInstData = - // dissociateRes.left().value(); + StorageOperationStatus status; + status = updateCustomizationUUID(requirementDef.getFromNode()); + if (status != StorageOperationStatus.OK) { + result = Either.right(status); + return result; + } + status = updateCustomizationUUID(requirementDef.getToNode()); + if (status != StorageOperationStatus.OK) { + result = Either.right(status); + return result; + } + List<RelationshipInstData> relationshipInstData = dissociateRes.left().value(); RequirementCapabilityRelDef capabilityRelDef = buildCapabilityResult(fromResInstanceUid, toResInstanceUid, requirement, relationshipInstData); @@ -1612,12 +1687,12 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo private StorageOperationStatus updateRequirementEdges(GraphEdgeLabels requirmentNewLabel, GraphEdgeLabels requirmentCurrentLabel, RequirementAndRelationshipPair pair, String requirementOwnerId) { Either<TitanVertex, TitanOperationStatus> reqOwnerRI = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), requirementOwnerId); if (reqOwnerRI.isRight()) { - log.debug("Failed to fetch requirment Owner by Id {}. Error: {}", requirementOwnerId, reqOwnerRI.right().value()); + log.debug("Failed to fetch requirment Owner by Id {} error {}", requirementOwnerId, reqOwnerRI.right().value()); return DaoStatusConverter.convertTitanStatusToStorageStatus(reqOwnerRI.right().value()); } Iterator<Edge> edgeIter = reqOwnerRI.left().value().edges(Direction.OUT, requirmentCurrentLabel.name(), requirmentNewLabel.name()); if (edgeIter == null) { - log.debug("No edges with label {} for woner RI {}", requirmentCurrentLabel, requirementOwnerId); + log.debug("No edges with label {} for owner RI {}", requirmentCurrentLabel, requirementOwnerId); return StorageOperationStatus.GENERAL_ERROR; } boolean associate = requirmentNewLabel.equals(GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED) ? true : false; @@ -1635,7 +1710,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); String requiredOccurrencesNew = "0"; - String leftOccurrencesNew = RequirementData.MAX_DEFAULT_OCCURRENCES; + String leftOccurrencesNew = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES; if (requiredOccurrences != null) { Integer iOccurrences = Integer.parseInt(requiredOccurrences); if (associate) { @@ -1646,7 +1721,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } else { String reqMinOccurrences = (String) titanGenericDao.getProperty(reqVertex, GraphPropertiesDictionary.MIN_OCCURRENCES.getProperty()); if (reqMinOccurrences == null) { - reqMinOccurrences = RequirementData.MIN_OCCURRENCES; + reqMinOccurrences = RequirementDataDefinition.MIN_OCCURRENCES; } if (Integer.parseInt(reqMinOccurrences) > iOccurrences) { iOccurrences++; @@ -1657,7 +1732,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Map<String, Object> properties = titanGenericDao.getProperties(edge); properties.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requiredOccurrencesNew); - if (leftOccurrences != null && !leftOccurrences.equals(RequirementData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) { Integer iOccurrences = Integer.parseInt(leftOccurrences); if (associate) { if (iOccurrences > 0) { @@ -1694,7 +1769,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo private StorageOperationStatus updateCapabiltyEdges(GraphEdgeLabels capabiltyNewLabel, GraphEdgeLabels capabiltyCurrentLabel, RequirementAndRelationshipPair pair, String capabiltyOwnerId) { Either<TitanVertex, TitanOperationStatus> capOwnerRI = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), capabiltyOwnerId); if (capOwnerRI.isRight()) { - log.debug("Failed to fetch requirment Owner by Id {}. Error: {}", capabiltyOwnerId, capOwnerRI.right().value()); + log.debug("Failed to fetch requirment Owner by Id {}. error {}", capabiltyOwnerId, capOwnerRI.right().value()); return DaoStatusConverter.convertTitanStatusToStorageStatus(capOwnerRI.right().value()); } Iterator<Edge> edgeIter = capOwnerRI.left().value().edges(Direction.OUT, capabiltyCurrentLabel.name(), capabiltyNewLabel.name()); @@ -1719,7 +1794,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); String requiredOccurrencesNew = "0"; - String leftOccurrencesNew = CapabilityData.MAX_OCCURRENCES; + String leftOccurrencesNew = CapabilityDataDefinition.MAX_OCCURRENCES; if (requiredOccurrences != null) { Integer iOccurrences = Integer.parseInt(requiredOccurrences); if (associate) { @@ -1730,7 +1805,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } else { String reqMinOccurrences = (String) titanGenericDao.getProperty(capVertex, GraphPropertiesDictionary.MIN_OCCURRENCES.getProperty()); if (reqMinOccurrences == null) { - reqMinOccurrences = CapabilityData.MIN_OCCURRENCES; + reqMinOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES; } if (Integer.parseInt(reqMinOccurrences) > iOccurrences) { iOccurrences++; @@ -1741,7 +1816,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Map<String, Object> properties = titanGenericDao.getProperties(edge); properties.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requiredOccurrencesNew); - if (leftOccurrences != null && !leftOccurrences.equals(CapabilityData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) { Integer iOccurrences = Integer.parseInt(leftOccurrences); if (associate) { if (iOccurrences > 0) { @@ -1806,24 +1881,24 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo relationship = relationPair.getRelationship().getType(); } - if (log.isDebugEnabled()) { - log.debug("Going to associate resource instance {} to resource instance {} under component {}. Requirement is {}.", fromResInstanceUid, toResInstanceUid, componentId, requirement); - } + log.debug("Going to associate resource instance {} to resource instance {} under component {}. Requirement is {}.", fromResInstanceUid, toResInstanceUid, componentId, requirement); Either<ComponentInstanceData, TitanOperationStatus> fromResourceInstDataRes = findMandatoryResourceInstData(fromResInstanceUid); if (fromResourceInstDataRes.isRight()) { TitanOperationStatus status = fromResourceInstDataRes.right().value(); - log.error("Failed to find resource instance {}. Status is {}", fromResInstanceUid, status); + log.error("Failed to find resource instance {}. status is {}", fromResInstanceUid, status); return Either.right(status); } - ComponentInstanceData fromResourceInstanceData = fromResourceInstDataRes.left().value(); + ComponentInstanceData fromCI = fromResourceInstDataRes.left().value(); + ComponentInstanceData fromResourceInstanceData = fromCI; Either<ComponentInstanceData, TitanOperationStatus> toResourceInstDataRes = findMandatoryResourceInstData(toResInstanceUid); if (toResourceInstDataRes.isRight()) { TitanOperationStatus status = toResourceInstDataRes.right().value(); - log.error("Failed to find resource instance " + toResInstanceUid + ". status is " + status); + log.error("Failed to find resource instance {}. status is {}", toResInstanceUid, status); return Either.right(status); } - ComponentInstanceData toResourceInstanceData = toResourceInstDataRes.left().value(); + ComponentInstanceData toCI = toResourceInstDataRes.left().value(); + ComponentInstanceData toResourceInstanceData = toCI; // THE component NodeTypeEnum should be sent TitanOperationStatus isResourceInstOfService = verifyResourceInstanceUnderComponent(nodeType, componentId, fromResInstanceUid); if (isResourceInstOfService != TitanOperationStatus.OK) { @@ -1837,24 +1912,24 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<ImmutablePair<RelationshipTypeData, String>, TitanOperationStatus> isValidRes = validateRequirementVsCapability(fromResourceInstanceData, toResourceInstanceData, requirement, relationship, relationPair); if (isValidRes.isRight()) { TitanOperationStatus status = isValidRes.right().value(); - log.error("Failed to validate requirement {} between resource instance {} to resource instance {}. Status is {}", requirement, fromResInstanceUid, toResInstanceUid, status); + log.error("Failed to validate requirement {} between resource instance {} to resource instance {}. status is {}", requirement, fromResInstanceUid, toResInstanceUid, status); return Either.right(status); } RelationshipTypeData relationshipTypeData = isValidRes.left().value().getKey(); String capabilityName = isValidRes.left().value().getValue(); RelationshipInstData relationshipInstData = buildRelationshipInstData(fromResInstanceUid, requirement, relationshipTypeData, relationPair); - Either<RelationshipInstData, TitanOperationStatus> createNode = createRelationshipInstData(fromResourceInstDataRes.left().value(), relationshipInstData, relationshipTypeData, requirement); + Either<RelationshipInstData, TitanOperationStatus> createNode = createRelationshipInstData(fromCI, relationshipInstData, relationshipTypeData, requirement); if (createNode.isRight()) { return Either.right(createNode.right().value()); } RelationshipInstData createdRelInstData = createNode.left().value(); - Either<GraphRelation, TitanOperationStatus> associateResInst = associateRelationshipInstToTarget(toResourceInstDataRes.left().value(), requirement, capabilityName, createdRelInstData); + Either<GraphRelation, TitanOperationStatus> associateResInst = associateRelationshipInstToTarget(toCI, requirement, capabilityName, createdRelInstData); if (associateResInst.isRight()) { TitanOperationStatus status = associateResInst.right().value(); - log.error("Failed to associate relationship instance {} to target node {}. Status is {}", createdRelInstData.getUniqueId(), toResInstanceUid, status); + log.error("Failed to associate relationship instance {} to target node {}. status is {}", createdRelInstData.getUniqueId(), toResInstanceUid, status); return Either.right(status); } @@ -1868,7 +1943,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (parentNode.isRight()) { TitanOperationStatus status = parentNode.right().value(); - log.error("Failed to find the service associated to the resource instance {}. Status is {}", resInstanceUid, status); + log.error("Failed to find the service associated to the resource instance {}. status is {}", resInstanceUid, status); return status; } @@ -1881,7 +1956,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } else { BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeIncorrectServiceError, "Resource Instance - verifyResourceInstanceUnderComponent", containerComponentId); BeEcompErrorManager.getInstance().logBeIncorrectComponentError("Resource Instance - verifyResourceInstanceUnderComponent", containerNodeType.getName(), containerComponentId); - log.debug("The provided component id {} is not equal to the component ({}) which associated to resource instance {}.", containerComponentId, uniqueId, resInstanceUid); + log.debug("The provided component id {} is not equal to the component ({}) which associated to resource instance {}", containerComponentId, uniqueId, resInstanceUid); return TitanOperationStatus.INVALID_ID; } @@ -1919,7 +1994,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName); Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(relInstData, toResInstance, GraphEdgeLabels.CAPABILITY_NODE, props); - log.debug("After creating relation between relationship instance {} to target node {}", relInstData.getUniqueId(), toResInstance.getUniqueId()); + log.debug("After creatingrelation between relationship instance {} to target node {}", relInstData.getUniqueId(), toResInstance.getUniqueId()); return createRelation; @@ -1950,7 +2025,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(resInstance, createdRelationshipInst, GraphEdgeLabels.RELATIONSHIP_INST, properties); if (createRelation.isRight()) { TitanOperationStatus status = createRelation.right().value(); - log.error("Failed to associate resource instance " + resInstance.getUniqueIdKey() + " to relationship instance " + createdRelationshipInst.getUniqueId() + ". status is " + status); + log.error("Failed to associate resource instance {} to relationship instance {}. status is {}", resInstance.getUniqueIdKey(), createdRelationshipInst.getUniqueId(), status); return Either.right(status); } @@ -1984,15 +2059,13 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } Either<RequirementDefinition, TitanOperationStatus> requirementDefinitionE = requirementOperation.getRequirement(relationPair.getRequirementUid()); if (requirementDefinitionE.isRight()) { - log.error("The requirement cannot be found {}" , relationPair.getRequirementUid()); + log.error("The requirement cannot be found {}", relationPair.getRequirementUid()); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } RequirementDefinition requirementDefinition = requirementDefinitionE.left().value(); String fetchedRequirementRelationship = requirementDefinition.getRelationship(); String fetchedRequirementCapability = requirementDefinition.getCapability(); - // TODO temporary remove of capability sources validation - uncomment - // after alignment // String fetchedRequirementNodeName = requirementDefinition.getNode(); TitanOperationStatus status = validateAvailableRequirement(fromResInstance, relationPair); @@ -2010,8 +2083,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.error("Failed to fetch the origin resource for capabilty resource instance with id {}, error {}", relationPair.getCapabilityOwnerId(), originCapabilty.right().value()); return Either.right(originCapabilty.right().value()); } - // TODO temporary remove of capability sources validation - uncomment - // after alignment // String originCapabId = // originCapabilty.left().value().getComponentInstDataDefinition().getComponentUid(); @@ -2027,13 +2098,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo CapabilityDefinition capabilityDefinition = capabilityDefinitionE.left().value(); String capabilityName = requirement; - if (log.isDebugEnabled()) { - log.debug("The capability {} of resource {} appropriates to requiremt {} on resource {}", capabilityDefinition, toResourceUid, requirement, fromResourceUid); - } + log.debug("The capability {} of resource {} appropriates to requirement {} on resource {}", capabilityDefinition, toResourceUid, requirement, fromResourceUid); String capabilityType = capabilityDefinition.getType(); if (false == fetchedRequirementCapability.equals(capabilityType)) { - log.error("The capability type in the requirement ({}) does not equal to the capability on the resource {}({})", fetchedRequirementCapability, toResourceUid, capabilityType); + log.error("The capability type in the requirement ({}) does not equal to the capability on the resource {} ({})", fetchedRequirementCapability, toResourceUid, capabilityType); return Either.right(TitanOperationStatus.MATCH_NOT_FOUND); } @@ -2054,7 +2123,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo private TitanOperationStatus validateAvailableRequirement(ComponentInstanceData fromResInstance, RequirementAndRelationshipPair relationPair) { Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstance.getUniqueId()); if (fromRi.isRight()) { - log.debug("Failed to fetch component instance {}. Error: {}", fromResInstance.getUniqueId(), fromRi.right().value()); + log.debug("Failed to fetch component instance {} error {}", fromResInstance.getUniqueId(), fromRi.right().value()); return fromRi.right().value(); } Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_REQUIREMENT.name()); @@ -2071,7 +2140,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty()); if (ownerIdOnEdge.equals(relationPair.getRequirementOwnerId())) { String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); - if (leftOccurrences != null && !leftOccurrences.equals(RequirementData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) { Integer leftIntValue = Integer.parseInt(leftOccurrences); if (leftIntValue > 0) { exist = true; @@ -2106,7 +2175,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty()); if (ownerIdOnEdge.equals(relationPair.getCapabilityOwnerId())) { String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); - if (leftOccurrences != null && !leftOccurrences.equals(CapabilityData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) { Integer leftIntValue = Integer.parseInt(leftOccurrences); if (leftIntValue > 0) { exist = true; @@ -2150,7 +2219,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo List<ResourceMetadataData> resourcesPathList = new ArrayList<ResourceMetadataData>(); TitanOperationStatus status = resourceOperation.findResourcesPathRecursively(resourceUid, resourcesPathList); if (status != TitanOperationStatus.OK) { - log.error("Failed to find the parent list of resource {}. Status is {}", resourceUid, status); + log.error("Failed to find the parent list of resource {}. status is {}", resourceUid, status); return status; } @@ -2213,7 +2282,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (updateRes.isRight()) { TitanOperationStatus status = updateRes.right().value(); - log.error("Failed to update resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to update resource instance {}. status is {}", resourceInstanceUid, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -2256,13 +2325,24 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo instance.setPropertyValueCounter(resourceInstance.getPropertyValueCounter()); instance.setAttributeValueCounter(resourceInstance.getAttributeValueCounter()); instance.setInputValueCounter(resourceInstance.getInputValueCounter()); + + boolean isNeedGenerate = isNeedGenerateCustomizationUUID(resourceInstance, currentInst); + if (isNeedGenerate) { + generateCustomizationUUID(instance); + } else { + instance.setCustomizationUUID(resourceInstance.getCustomizationUUID()); + } return instance; } + private boolean isNeedGenerateCustomizationUUID(ComponentInstance resourceInstance, ComponentInstanceData currentInst) { + return !currentInst.getComponentInstDataDefinition().getName().equals(resourceInstance.getName()); + } + private void printDiff(ComponentInstanceData currentInst, ComponentInstance resourceInstance) { log.debug("The current Resource Instance details are : {}", currentInst); - log.debug("The received Resource Instance details for update are : {}", resourceInstance); + log.debug("The received Resource Instance details for update are :{}", resourceInstance); } @@ -2274,11 +2354,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo public Either<ComponentInstance, TitanOperationStatus> updateResourceInstanceInService(String serviceId, String resourceInstanceUid, ComponentInstance resourceInstance) { - log.debug("Going to update resource instance {}. Properties are {}", resourceInstanceUid, resourceInstance); + log.trace("Going to update resource instance {}. Properies are {}", resourceInstanceUid, resourceInstance); Either<ComponentInstanceData, TitanOperationStatus> findInstRes = findResourceInstance(resourceInstanceUid); if (findInstRes.isRight()) { TitanOperationStatus status = findInstRes.right().value(); - log.error("Failed to find resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to find resource instance {}. status is {}", resourceInstanceUid, status); return Either.right(status); } @@ -2294,7 +2374,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<ComponentInstanceData, TitanOperationStatus> updateNodeRes = titanGenericDao.updateNode(resourceInstanceData, ComponentInstanceData.class); if (updateNodeRes.isRight()) { TitanOperationStatus status = updateNodeRes.right().value(); - log.error("Failed to update resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to update resource instance {}. status is {}", resourceInstanceUid, status); return Either.right(status); } @@ -2319,7 +2399,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (resInstancesOfService.isRight()) { TitanOperationStatus status = resInstancesOfService.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find resource instances of service {}. Status is {}", componentId, status); + log.error("Failed to find resource instances of service {}. status is {}", componentId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -2348,7 +2428,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (updateRes.isRight()) { TitanOperationStatus status = updateRes.right().value(); - log.error("Failed to find component instance name {}. Status is {}", componentInstName, status); + log.error("Failed to find component instance name {}. status is {}", componentInstName, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -2422,7 +2502,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<ComponentMetadataData, TitanOperationStatus> componentRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(containerNodeType), componentId, ComponentMetadataData.class); if (componentRes.isRight()) { TitanOperationStatus status = componentRes.right().value(); - log.error("Failed to find component {}. Status is {}", componentId, status); + log.error("Failed to find component {}. status is {}", componentId, status); return Either.right(status); } @@ -2440,7 +2520,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (resourceInstances != null && false == resourceInstances.isEmpty()) { Map<String, Map<String, CapabilityDefinition>> compInstCapabilities = new HashMap<String, Map<String, CapabilityDefinition>>(); Map<String, Map<String, RequirementDefinition>> compInstReq = new HashMap<String, Map<String, RequirementDefinition>>(); - Map<String, Map<String, ArtifactDefinition>> compInstArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); + Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); + Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); Map<String, Component> compInstOriginsMap = new HashMap<String, Component>(); for (ImmutablePair<ComponentInstanceData, GraphEdge> immutablePair : resourceInstances) { @@ -2451,7 +2532,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo ComponentInstance resourceInstance = new ComponentInstance(resourceInstanceData.getComponentInstDataDefinition()); - TitanOperationStatus status = getFullComponentInstance(compInstCapabilities, compInstReq, compInstArtifacts, compInstOriginsMap, resourceInstance, compInstNodeType); + TitanOperationStatus status = getFullComponentInstance(compInstCapabilities, compInstReq, compInstDeploymentArtifacts, compInstOriginsMap, resourceInstance, compInstNodeType, compInstInformationalArtifacts); if (status != TitanOperationStatus.OK) { return Either.right(status); } @@ -2507,11 +2588,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (relationshipsRes.isRight()) { status = relationshipsRes.right().value(); - log.debug("After fetching all reslationships of resource instance {}. Status is {}", resourceInstanceUid, status); + log.debug("After fetching all reslationships of resource instance {}. status is {}", resourceInstanceUid, status); if (status == TitanOperationStatus.NOT_FOUND) { return Either.left(requirementsResult); } else { - log.error("Failed to find relationhips of resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to find relationhips of resource instance {}. status is {}", resourceInstanceUid, status); return Either.right(status); } } @@ -2545,11 +2626,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (relationshipsRes.isRight()) { status = relationshipsRes.right().value(); - log.debug("After fetching all reslationships of resource instance {}. Status is {}", resourceInstanceUid, status); + log.debug("After fetching all reslationships of resource instance {}. status is {}", resourceInstanceUid, status); if (status == TitanOperationStatus.NOT_FOUND) { return Either.left(requirementsResult); } else { - log.error("Failed to find relationhips of resource instance {}. Status is {}", resourceInstanceUid, status); + log.error("Failed to find relationhips of resource instance {}. status is {}", resourceInstanceUid, status); return Either.right(status); } } @@ -2576,10 +2657,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType) { Map<String, Map<String, CapabilityDefinition>> compInstCapabilities = new HashMap<String, Map<String, CapabilityDefinition>>(); Map<String, Map<String, RequirementDefinition>> compInstReq = new HashMap<String, Map<String, RequirementDefinition>>(); - Map<String, Map<String, ArtifactDefinition>> compInstArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); + Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); + Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>(); Map<String, Component> compInstOrigins = new HashMap<String, Component>(); - TitanOperationStatus fullResourceInstance = getFullComponentInstance(compInstCapabilities, compInstReq, compInstArtifacts, compInstOrigins, componentInstance, compInstNodeType); + TitanOperationStatus fullResourceInstance = getFullComponentInstance(compInstCapabilities, compInstReq, compInstDeploymentArtifacts, compInstOrigins, componentInstance, compInstNodeType, compInstInformationalArtifacts); if (!fullResourceInstance.equals(TitanOperationStatus.OK)) { log.debug("failed to get full data of resource instance. error: {}", fullResourceInstance); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(fullResourceInstance)); @@ -2588,7 +2670,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } private TitanOperationStatus getFullComponentInstance(Map<String, Map<String, CapabilityDefinition>> compInstCapabilities, Map<String, Map<String, RequirementDefinition>> compInstReq, - Map<String, Map<String, ArtifactDefinition>> compInstArtifacts, Map<String, Component> compInstOrigins, ComponentInstance compInst, NodeTypeEnum compInstNodeType) { + Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts, Map<String, Component> compInstOrigins, ComponentInstance compInst, NodeTypeEnum compInstNodeType, + Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts) { Component component = null; ComponentOperation componentOperation = getComponentOperation(compInstNodeType); String componentUid = compInst.getComponentUid(); @@ -2649,20 +2732,110 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } - capStatus = setCompInstDeploymentArtifactsFromGraph(compInstArtifacts, componentUid, compInst); + capStatus = setCompInstDeploymentArtifactsFromGraph(compInstDeploymentArtifacts, componentUid, compInst); + if (capStatus != StorageOperationStatus.OK) { + log.debug("Failed to find resource deployment artifacts of resource {}. status is {}", componentName, capStatus); + + } + + capStatus = setCompInstInformationalArtifactsResourceFromGraph(compInstInformationalArtifacts, componentUid, compInst); if (capStatus != StorageOperationStatus.OK) { log.debug("Failed to find resource deployment artifacts of resource {}. status is {}", componentName, capStatus); } - capStatus = setCompInstArtifactsFromGraph(compInst); + capStatus = setCompInstDeploymentArtifactsFromGraph(compInst); if (capStatus != StorageOperationStatus.OK) { log.debug("Failed to find resource deployment artifacts of resource instance {} . status is {}", compInst.getName(), capStatus); } + + capStatus = setCompInstInformationaltArtifactsFromGraph(compInst); + if (capStatus != StorageOperationStatus.OK) { + log.debug("Failed to find resource informational artifacts of resource instance {} . status is {}", compInst.getName(), capStatus); + } + + capStatus = setGroupInstFromGraph(compInst); + if (capStatus != StorageOperationStatus.OK) { + log.debug("Failed to find resource groups of resource instance {} . status is {}", compInst.getName(), capStatus); + } return TitanOperationStatus.OK; } - protected StorageOperationStatus setCompInstArtifactsFromGraph(ComponentInstance resourceInstance) { + private StorageOperationStatus setCompInstInformationaltArtifactsFromGraph(ComponentInstance resourceInstance) { + Map<String, ArtifactDefinition> informationalArtifacts = null; + if (resourceInstance.getArtifacts() == null) { + informationalArtifacts = new HashMap<String, ArtifactDefinition>(); + } else { + informationalArtifacts = new HashMap<String, ArtifactDefinition>(resourceInstance.getArtifacts()); + } + + Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(resourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, true, ArtifactGroupTypeEnum.INFORMATIONAL.getType()); + if (result.isRight()) { + StorageOperationStatus status = result.right().value(); + if (status != StorageOperationStatus.NOT_FOUND) { + return status; + } + } else { + informationalArtifacts.putAll(result.left().value()); + } + + resourceInstance.setArtifacts(informationalArtifacts); + return StorageOperationStatus.OK; + } + + private StorageOperationStatus setGroupInstFromGraph(ComponentInstance compInst) { + List<GroupInstance> groupInstances = null; + + Either<List<GroupInstance>, StorageOperationStatus> result = groupInstanceOperation.getAllGroupInstances(compInst.getUniqueId(), NodeTypeEnum.ResourceInstance); + if (result.isRight()) { + StorageOperationStatus status = result.right().value(); + if (status != StorageOperationStatus.NOT_FOUND) { + return status; + } else { + + return StorageOperationStatus.OK; + } + } + + groupInstances = result.left().value(); + compInst.setGroupInstances(groupInstances); + + return StorageOperationStatus.OK; + } + + private StorageOperationStatus setCompInstInformationalArtifactsResourceFromGraph(Map<String, Map<String, ArtifactDefinition>> resourcesInformationalArtifacts, String componentUid, ComponentInstance resourceInstance) { + + if (resourcesInformationalArtifacts.containsKey(componentUid)) { + resourceInstance.setArtifacts(resourcesInformationalArtifacts.get(componentUid)); + return StorageOperationStatus.OK; + } + + Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(componentUid, NodeTypeEnum.Resource, true, ArtifactGroupTypeEnum.INFORMATIONAL.getType()); + if (result.isRight()) { + StorageOperationStatus status = result.right().value(); + if (status != StorageOperationStatus.NOT_FOUND) { + return status; + } else { + return StorageOperationStatus.OK; + } + } + Map<String, ArtifactDefinition> artifacts = result.left().value(); + if (!artifacts.isEmpty()) { + Map<String, ArtifactDefinition> tempArtifacts = new HashMap<>(artifacts); + for (Entry<String, ArtifactDefinition> artifact : artifacts.entrySet()) { + if (!artifact.getValue().checkEsIdExist()) { + tempArtifacts.remove(artifact.getKey()); + } + } + resourceInstance.setArtifacts(tempArtifacts); + resourcesInformationalArtifacts.put(componentUid, tempArtifacts); + } + + return StorageOperationStatus.OK; + + } + + protected StorageOperationStatus setCompInstDeploymentArtifactsFromGraph(ComponentInstance resourceInstance) { Map<String, ArtifactDefinition> deploymentArtifacts = null; if (resourceInstance.getDeploymentArtifacts() == null) { @@ -2691,7 +2864,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.debug("failed to get heat parameters values for heat artifact {}", artifact.getUniqueId()); return heatParamsForEnv.right().value(); } else { - artifact.setHeatParameters(heatParamsForEnv.left().value()); + artifact.setListHeatParameters(heatParamsForEnv.left().value()); } } } @@ -2706,17 +2879,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } - // resourceInstance) { - // ArrayList<HeatParameterDefinition>(); - // heatEnvArtifact.getGeneratedFromId()); - // Either<List<ImmutablePair<HeatParameterValueData, GraphEdge>>, - // TitanOperationStatus> heatEnvValuesWithEdges = titanGenericDao - // !heatEnvValuesWithEdges.right().value().equals(TitanOperationStatus.NOT_FOUND)) - // { - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // heatEnvValuesWithEdges.left().value()){ - // pair.right.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty()); - // heatValuesMap.get(parameter.getName()); private Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> getAllComponentInstanceFromGraph(String componentId, NodeTypeEnum containerNodeType, boolean withEdges) { if (log.isDebugEnabled()) log.debug("Going to fetch all resource instances nodes in graph associate to component {}", componentId); @@ -2757,7 +2919,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (targetNodeRes.isRight()) { TitanOperationStatus status = targetNodeRes.right().value(); - log.error("Failed to find the target node of relationship inst {}. Status is {}", relationshipInstData, status); + log.error("Failed to find the target node of relationship inst {}. status is {}", relationshipInstData, status); return status; } @@ -2782,7 +2944,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (sourceNodeRes.isRight()) { TitanOperationStatus status = sourceNodeRes.right().value(); - log.error("Failed to find the source node of relationship inst {}. Status is {}", relationshipInstData, status); + log.error("Failed to find the source node of relationship inst {}. status is {}", relationshipInstData, status); return status; } @@ -2816,7 +2978,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo requirementCapabilityRelDef.setToNode(targetResourceUid); String sourceUid = sourceToRel.getKey(); requirementCapabilityRelDef.setFromNode(sourceUid); - List<RequirementAndRelationshipPair> relationships = new ArrayList<RequirementAndRelationshipPair>(); populateRelationships(sourceToRel, relationships); @@ -2860,6 +3021,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo pair.setCapabilityUid(relationshipInstData.getCapabiltyId()); pair.setRequirementOwnerId(relationshipInstData.getRequirementOwnerId()); pair.setRequirementUid(relationshipInstData.getRequirementId()); + pair.setId(relationshipInstData.getUniqueId()); relationships.add(pair); } } @@ -2874,16 +3036,16 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } @Override - public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction) { + public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction, boolean isClone) { Either<RequirementCapabilityRelDef, StorageOperationStatus> result = null; try { - Either<RequirementCapabilityRelDef, TitanOperationStatus> multiRequirements = associateResourceInstancesMultiRequirements(componentId, nodeType, relation); + Either<RequirementCapabilityRelDef, TitanOperationStatus> multiRequirements = associateResourceInstancesMultiRequirements(componentId, nodeType, relation, isClone); if (multiRequirements.isRight()) { TitanOperationStatus status = multiRequirements.right().value(); BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "associateComponentInstances"); BeEcompErrorManager.getInstance().logBeDaoSystemError("associateComponentInstances"); - log.debug("Failed to associate component instances. {}. Status is {}", relation, status); + log.debug("Failed to associate component instances {}. status is {}", relation, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -2891,7 +3053,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (!updateCalculatedCapReqResult.equals(StorageOperationStatus.OK)) { BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "associateComponentInstances"); BeEcompErrorManager.getInstance().logBeDaoSystemError("associateComponentInstances"); - log.debug("Failed to associate component instances. {}. Status is {}", relation, updateCalculatedCapReqResult); + log.debug("Failed to associate component instances. {}. status is {}", relation, updateCalculatedCapReqResult); result = Either.right(updateCalculatedCapReqResult); return result; } @@ -2906,7 +3068,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } } - private Either<RequirementCapabilityRelDef, TitanOperationStatus> associateResourceInstancesMultiRequirements(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation) { + private Either<RequirementCapabilityRelDef, TitanOperationStatus> associateResourceInstancesMultiRequirements(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean isClone) { String fromNode = relation.getFromNode(); String toNode = relation.getToNode(); @@ -2928,7 +3090,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo TitanOperationStatus status = associateRes.right().value(); BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedAddingResourceInstanceError, "AssociateResourceInstances", fromNode, componentId); BeEcompErrorManager.getInstance().logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId); - log.debug("Failed to associate resource instance {} to resource instnace {}. Status is {}", fromNode, toNode, status); + log.debug("Failed to associate resource instance {} to resource instance {}. status is {}", fromNode, toNode, status); return Either.right(status); } @@ -2942,6 +3104,18 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo requirementAndRelationshipPair.setCapabilityUid(immutablePair.getCapabilityUid()); requirementAndRelationshipPair.setRequirementUid(immutablePair.getRequirementUid()); relationshipsResult.add(requirementAndRelationshipPair); + if (!isClone) { + log.trace("update customization UUID for from CI {} and to CI {}", relation.getFromNode(), relation.getToNode()); + StorageOperationStatus status; + status = updateCustomizationUUID(relation.getFromNode()); + if (status != StorageOperationStatus.OK) { + return Either.right(TitanOperationStatus.GENERAL_ERROR); + } + status = updateCustomizationUUID(relation.getToNode()); + if (status != StorageOperationStatus.OK) { + return Either.right(TitanOperationStatus.GENERAL_ERROR); + } + } } @@ -2955,7 +3129,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo @Override public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation) { - return associateResourceInstances(componentId, nodeType, relation, false); + return associateResourceInstances(componentId, nodeType, relation, false, false); } @Override @@ -2970,7 +3144,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeSystemError, "deleteAllResourceInstances - missing relationship"); BeEcompErrorManager.getInstance().logBeSystemError("deleteAllResourceInstances - missing relationship"); } - log.debug("Failed to delete resource instances of service {}. Status is {}", containerComponentId, status); + log.debug("Failed to delete resource instances of service {}. status is {}", containerComponentId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -3002,7 +3176,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (resourceInstancesRes.isRight()) { TitanOperationStatus status = resourceInstancesRes.right().value(); - log.debug("After fetching all resource instances of service {}. Status is {}", componentId, status); + log.debug("After fetching all resource instances of service {}. status is {}", componentId, status); return Either.right(status); } @@ -3015,14 +3189,14 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.debug("After removing resource instance {}. Result is {}", resourceInstUid, removeResourceInstanceRes); if (removeResourceInstanceRes.isRight()) { TitanOperationStatus status = removeResourceInstanceRes.right().value(); - log.error("After removing resource instance {}. Status is {}", resourceInstUid, status); + log.error("After removing resource instance {}. status is {}", resourceInstUid, status); return Either.right(status); } ComponentInstance resourceInstance = removeResourceInstanceRes.left().value(); result.add(resourceInstance); } - log.debug("The following resource instances was deleted from service {}:{}", componentId, result); + log.debug("The following resource instances was deleted from service {} : {}", componentId, result); return Either.left(result); } @@ -3112,7 +3286,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo pair.setCapabilityOwnerId(capOwnerId); } - Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(component.getUniqueId(), containerNodeType, relation, true); + Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(component.getUniqueId(), containerNodeType, relation, true, true); if (associateInstances.isRight()) { StorageOperationStatus status = associateInstances.right().value(); log.error("failed to assosiate resource instance {} and resource instance {}. status ={}", relation.getFromNode(), relation.getToNode(), status); @@ -3131,33 +3305,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo ImmutablePair<List<ComponentInstance>, Map<String, String>> result = new ImmutablePair<List<ComponentInstance>, Map<String, String>>(list, oldCompInstToNew); - // Either<ImmutablePair<List<ComponentInstance>, - // List<RequirementCapabilityRelDef>>, StorageOperationStatus> - // allResourceInstances = getAllComponentInstances(componentIdFrom, - // containerNodeType, compInstNodeType, true); - // - // - // if (allResourceInstances.isRight()) { - // StorageOperationStatus status = allResourceInstances.right().value(); - // if (status.equals(StorageOperationStatus.NOT_FOUND)) { - // - // return Either.left(result); - // } else { - // log.error("failed to get all resource instances for service {}. - // status={}", componentIdFrom, status); - // return Either.right(status); - // } - // } - - // ImmutablePair<List<ComponentInstance>, - // List<RequirementCapabilityRelDef>> instanceRelationPair = - // allResourceInstances.left().value(); - - // ImmutablePair<List<ComponentInstance>, - // List<RequirementCapabilityRelDef>> instanceRelationPair = new - // ImmutablePair<List<ComponentInstance>, - // List<RequirementCapabilityRelDef>>(prevResource.getComponentInstances(), - // prevResource.getComponentInstancesRelations()); List<ComponentInstance> riList = prevResource.getComponentInstances(); Map<String, ComponentInstance> riMapper = new HashMap<>(); int instanceNumber = 0; @@ -3238,7 +3385,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo pair.setCapabilityOwnerId(capOwnerId); } - Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(componentIdTo, containerNodeType, relation, true); + Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(componentIdTo, containerNodeType, relation, true, true); if (associateInstances.isRight()) { StorageOperationStatus status = associateInstances.right().value(); log.error("failed to assosiate resource instance {} and resource instance {}. status ={}", relation.getFromNode(), relation.getToNode(), status); @@ -3251,7 +3398,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo private boolean isAtomicComponentInstance(ComponentInstance componentInstance) { OriginTypeEnum originType = componentInstance.getOriginType(); - if (originType.equals(OriginTypeEnum.VFC) || originType.equals(OriginTypeEnum.VL) || originType.equals(OriginTypeEnum.CP)) { + if (originType == OriginTypeEnum.VFC || originType == OriginTypeEnum.VFCMT || originType == OriginTypeEnum.VL || originType == OriginTypeEnum.CP) { return true; } return false; @@ -3269,9 +3416,14 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } Map<String, ArtifactDefinition> artifacts = getArtifactsOfRI.left().value(); + List<GroupInstance> groupInstancesFrom = fromResourceInstance.getGroupInstances(); + List<GroupInstance> groupInstancesTo = toResourceInstance.getGroupInstances(); + Map<String, List<String>> groupsInstanceArtifact = new HashMap<String, List<String>>(); for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) { ArtifactDefinition artifactDefinition = entry.getValue(); + String generatedFromIdArtifactUid = artifactDefinition.getGeneratedFromId(); + // US687135 Do not Add VF_MODULES_METADATA when checking out if (ArtifactTypeEnum.VF_MODULES_METADATA.getType().equals(artifactDefinition.getArtifactType())) { // The artifact of type VF_MODULES_METADATA should not be cloned @@ -3287,7 +3439,37 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (addArifactToResource.isRight()) { return addArifactToResource.right().value(); } + + if (groupInstancesTo != null) { + for (GroupInstance groupInstanceTo : groupInstancesTo) { + Optional<String> op = groupInstanceTo.getArtifacts().stream().filter(p -> p.equals(generatedFromIdArtifactUid)).findAny(); + if (op.isPresent()) { + + List<String> artifactsUid = null; + if (groupsInstanceArtifact.containsKey(groupInstanceTo.getUniqueId())) { + artifactsUid = groupsInstanceArtifact.get(groupInstanceTo.getUniqueId()); + } else { + artifactsUid = new ArrayList<String>(); + } + artifactsUid.add(addArifactToResource.left().value().getUniqueId()); + groupsInstanceArtifact.put(groupInstanceTo.getUniqueId(), artifactsUid); + break; + } + } + + } + } + if (groupsInstanceArtifact != null && !groupsInstanceArtifact.isEmpty()) { + for (Map.Entry<String, List<String>> groupArtifact : groupsInstanceArtifact.entrySet()) { + groupInstanceOperation.associateArtifactsToGroupInstance(groupArtifact.getKey(), groupArtifact.getValue()); + } } + Either<List<GroupInstance>, StorageOperationStatus> groupInstanceStatus = groupInstanceOperation.getAllGroupInstances(toResourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance); + if (groupInstanceStatus.isRight()) { + log.debug("failed to get groupinstance for component inatance {}", toResourceInstance.getUniqueId()); + return groupInstanceStatus.right().value(); + } + toResourceInstance.setGroupInstances(groupInstanceStatus.left().value()); toResourceInstance.setDeploymentArtifacts(artifacts); return StorageOperationStatus.OK; } @@ -3406,11 +3588,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<List<String>, TitanOperationStatus> resInstancesOfService = getComponentInstancesNameOfService(serviceId, nodeType); - log.debug("After fetching resource instances of service {}. Result is {}", serviceId, resInstancesOfService); + log.debug("After fetching resource instances of service {}. result is {}", serviceId, resInstancesOfService); if (resInstancesOfService.isRight()) { TitanOperationStatus status = resInstancesOfService.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find resource instances of service {}. Status is {}", serviceId, status); + log.error("Failed to find resource instances of service {}. status is {}", serviceId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -3438,7 +3620,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = getAllComponentInstanceFromGraph(serviceId, nodeType, false); if (resourceInstancesRes.isRight()) { TitanOperationStatus status = resourceInstancesRes.right().value(); - log.debug("Resource instance was found under service {}. Status is {}", serviceId, status); + log.debug("Resource instance was found under service {}. status is {}", serviceId, status); return Either.right(status); } @@ -3570,15 +3752,15 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return status; } + @Override public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) { - DataNodeCollector<CapabilityData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class); return getDataFromGraph(collector); - } + @Override public Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) { DataNodeCollector<RequirementData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_REQUIREMENT, NodeTypeEnum.Requirement, @@ -3588,6 +3770,24 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } + @Override + public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getFulfilledCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) { + DataNodeCollector<CapabilityData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_CAPABILITY_FULLFILLED, NodeTypeEnum.Capability, + CapabilityData.class); + + return getDataFromGraph(collector); + } + + @Override + public Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getFulfilledRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) { + + DataNodeCollector<RequirementData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED, NodeTypeEnum.Requirement, + RequirementData.class); + + return getDataFromGraph(collector); + + } + public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance, RequirementAndRelationshipPair relationPair) { Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstance.getUniqueId()); if (fromRi.isRight()) { @@ -3608,7 +3808,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty()); if (ownerIdOnEdge.equals(relationPair.getRequirementOwnerId())) { String leftOccurrences = (String) edge.value(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); - if (leftOccurrences != null && !leftOccurrences.equals(RequirementData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) { Integer leftIntValue = Integer.parseInt(leftOccurrences); if (leftIntValue > 0) { exist = true; @@ -3626,7 +3826,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance, RequirementAndRelationshipPair relationPair) { Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), toResInstance.getUniqueId()); if (fromRi.isRight()) { - log.debug("Failed to fetch component instance {}. Error: {}", toResInstance.getUniqueId(), fromRi.right().value()); + log.debug("Failed to fetch component instance {} error {}", toResInstance.getUniqueId(), fromRi.right().value()); return Either.right(StorageOperationStatus.NOT_FOUND); } Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_CAPABILITY.name()); @@ -3643,7 +3843,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty()); if (ownerIdOnEdge.equals(relationPair.getCapabilityOwnerId())) { String leftOccurrences = (String) edge.value(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); - if (leftOccurrences != null && !leftOccurrences.equals(CapabilityData.MAX_OCCURRENCES)) { + if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) { Integer leftIntValue = Integer.parseInt(leftOccurrences); if (leftIntValue > 0) { exist = true; @@ -3727,7 +3927,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo List<ComponentInstanceAttribute> attributesOnInstance = compInstanceAttList.getInnerElement(); for (int i = 0; i < attributesOnInstance.size() && storageStatusWrapper.isEmpty(); i++) { StorageOperationStatus result = cloneSingleAttributeOnResourceInstance(createdInstanceVertex, attributesOnInstance.get(i), instanceId); - if (!result.equals(StorageOperationStatus.OK)) { + if (result != StorageOperationStatus.OK) { log.trace("Failed to clone attribute for instance {} error {}", instanceId, result); return result; } @@ -4024,7 +4224,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<ComponentInstanceProperty, TitanOperationStatus> addPropertyToResourceInstance = this.addPropertyToResourceInstance(property, toResourceInstance, false, index, resourceInstanceId); - if (addPropertyToResourceInstance.isRight() && !addPropertyToResourceInstance.right().value().equals(TitanOperationStatus.OK)) { + if (addPropertyToResourceInstance.isRight() && addPropertyToResourceInstance.right().value() != TitanOperationStatus.OK) { StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToResourceInstance.right().value()); return storageStatus; } @@ -4032,13 +4232,13 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo ComponentInstanceProperty newProp = addPropertyToResourceInstance.left().value(); Set<String> inputsKey = inputsPropMap.keySet(); String inputToAssName = null; - GetInputValueInfo getInputInfo = null; + GetInputValueDataDefinition getInputInfo = null; for (String inputName : inputsKey) { List<ComponentInstanceProperty> propsList = inputsPropMap.get(inputName); Optional<ComponentInstanceProperty> op = propsList.stream().filter(p -> p.getUniqueId().equals(property.getUniqueId())).findAny(); if (op.isPresent()) { ComponentInstanceProperty inpProp = op.get(); - getInputInfo = new GetInputValueInfo(); + getInputInfo = new GetInputValueDataDefinition(); getInputInfo.setPropName(inpProp.getName()); getInputInfo.setInputName(inputName); inputToAssName = inputName; @@ -4536,7 +4736,8 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo * Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); * * String newValue = value; if (isValid.isRight()) { Boolean res = isValid.right().value(); if (res == false) { return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } } else { Object object = isValid.left().value(); if (object != - * null) { newValue = object.toString(); } } InputValueData propertyValueData = updateDataContainer.getValueDataWrapper().getInnerElement(); log.debug("Going to update property value from {} to {}", propertyValueData.getValue(), newValue); propertyValueData.setValue(newValue); + * null) { newValue = object.toString(); } } InputValueData propertyValueData = updateDataContainer.getValueDataWrapper().getInnerElement(); log.debug("Going to update property value from " + propertyValueData.getValue() + " to " + + * newValue); propertyValueData.setValue(newValue); * * ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProerty.getRules(), innerType, allDataTypes.left().value()); if (pair.getRight() != null && pair.getRight() == false) { * BeEcompErrorManager.getInstance(). logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProerty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } @@ -4695,7 +4896,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { - log.debug("After finding property value of {} on component instance {}", propertyId, resourceInstanceId); + log.debug("After finding property value of {} on componenet instance {}", propertyId, resourceInstanceId); return Either.right(isPropertyValueExists.getLeft()); } @@ -4771,8 +4972,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - // TODO: change logger - log.error("Failed to associate property value " + uniqueId + " to property " + propertyId + " in graph. status is " + operationStatus); + log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus); return Either.right(operationStatus); } @@ -4780,8 +4980,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - // TODO: change logger - log.error("Failed to associate resource instance " + resourceInstanceId + " property value " + uniqueId + " in graph. status is " + operationStatus); + log.error("Failed to associate resource instance {} property value {} in graph. status is {}", resourceInstanceId, uniqueId, operationStatus); return Either.right(operationStatus); } @@ -4879,7 +5078,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.trace("Before validateAndUpdateRules"); ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules(), innerType, allDataTypes.left().value(), isValidate); - log.debug("After validateAndUpdateRules. pair = {}", pair); + log.debug("After validateAndUpdateRules. pair = {} ", pair); if (pair.getRight() != null && pair.getRight() == false) { BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); @@ -4900,20 +5099,19 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - // TODO: change logger - log.error("Failed to associate property value " + uniqueId + " to property " + propertyId + " in graph. status is " + operationStatus); + log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus); return Either.right(operationStatus); } TitanOperationStatus edgeResult = titanGenericDao.createEdge(resourceInstanceVertex, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null); - if (!edgeResult.equals(TitanOperationStatus.OK)) { - log.error("Failed to associate resource instance " + resourceInstanceId + " property value " + uniqueId + " in graph. status is " + edgeResult); + if (edgeResult != TitanOperationStatus.OK) { + log.error("Failed to associate resource instance {} property value {} in graph. status is {}", resourceInstanceId, uniqueId, edgeResult); return Either.right(edgeResult); } ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, resourceInstanceProperty); - log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); + log.debug("The returned ResourceInstanceProperty is {} ", propertyValueResult); return Either.left(propertyValueResult); } else { @@ -4963,7 +5161,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo ImmutablePair<TitanOperationStatus, String> isInputValueExists = inputOperation.findInputValue(resourceInstanceId, propertyId); if (isInputValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) { - log.debug("The property {} already added to the resource insance {}", propertyId, resourceInstanceId); + log.debug("The property {} already added to the resource instance {}", propertyId, resourceInstanceId); resourceInstanceInput.setValueUniqueUid(isInputValueExists.getRight()); /* * Either<InputValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfResourceInstance(resourceInstanceInput, resourceInstanceId); if (updatePropertyOfResourceInstance.isRight()) { @@ -4973,7 +5171,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } if (isInputValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { - log.debug("After finding input value of {} on compnent instance {}", propertyId, resourceInstanceId); + log.debug("After finding input value of {} on componenet instance {}", propertyId, resourceInstanceId); return Either.right(isInputValueExists.getLeft()); } @@ -4992,7 +5190,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } PropertyDataDefinition propDef = def.getProperty(); if (propDef == null) { - log.debug("Property in Schema Definition inside property of type {} doesn't exists", type); + log.debug("Property in Schema Definition inside property of type {} doesn't exist", type); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } innerType = propDef.getType(); @@ -5005,21 +5203,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR); return Either.right(status); } - // Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); - // log.debug("After validateAndUpdatePropertyValue. isValid = {}", isValid); - - /*String newValue = value; - if (isValid.isRight()) { - Boolean res = isValid.right().value(); - if (res == false) { - return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); - } - } else { - Object object = isValid.left().value(); - if (object != null) { - newValue = object.toString(); - } - }*/ String uniqueId = UniqueIdBuilder.buildResourceInstanceInputValueUid(resourceInstanceData.getUniqueId(), index); InputValueData propertyValueData = new InputValueData(); @@ -5028,7 +5211,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo log.debug("Before validateAndUpdateRules"); ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceInput.getRules(), innerType, allDataTypes.left().value(), true); - log.debug("After validateAndUpdateRules. pair = {}", pair); + log.debug("After validateAndUpdateRules. pair = {} ", pair); if (pair.getRight() != null && pair.getRight() == false) { BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceInput.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); @@ -5049,8 +5232,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - // TODO: change logger - log.error("Failed to associate property value {} to property {} in graph. Status is {}", uniqueId, propertyId, operationStatus); + log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus); return Either.right(operationStatus); } @@ -5063,8 +5245,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - // TODO: change logger - log.error("Failed to associate resource instance {} property value {} in graph. Status is {}", resourceInstanceId, uniqueId, operationStatus); + log.error("Failed to associate resource instance {} property value {} in graph. status is {}", resourceInstanceId, uniqueId, operationStatus); return Either.right(operationStatus); } @@ -5282,6 +5463,40 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return Either.left(result); } + // TODO Tal G US831698 + public Either<List<ComponentInstanceProperty>, StorageOperationStatus> getComponentInstancesPropertiesAndValuesFromGraph(ComponentInstance resourceInstance) { + + Map<String, List<PropertyDefinition>> alreadyProcessedResources = new HashMap<>(); + Map<String, List<ComponentInstanceProperty>> alreadyProcessedInstances = new HashMap<>(); + Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances = new HashMap<>(); + Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties = new HashMap<>(); + + List<String> path = new ArrayList<>(); + path.add(resourceInstance.getUniqueId()); + Either<List<ComponentInstanceProperty>, TitanOperationStatus> componentInstanceProperties = getComponentInstanceProperties(resourceInstance, alreadyProcessedResources, alreadyProcessedInstances, processedInstances, path); + + if (componentInstanceProperties.isRight()) { + StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(componentInstanceProperties.right().value()); + return Either.right(convertTitanStatusToStorageStatus); + } + + List<ComponentInstanceProperty> listOfProps = componentInstanceProperties.left().value(); + resourceInstancesProperties.put(resourceInstance.getUniqueId(), listOfProps); + + processedInstances.put(resourceInstance.getUniqueId(), new ImmutablePair<ComponentInstance, Integer>(resourceInstance, path.size())); + path.remove(path.size() - 1); + + Either<Map<String, Map<String, ComponentInstanceProperty>>, TitanOperationStatus> findAllPropertiesValuesOnInstances = findAllPropertyValueOnInstances(processedInstances); + // 1. check status + if (findAllPropertiesValuesOnInstances.isRight()) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findAllPropertiesValuesOnInstances.right().value())); + } + + propertyOperation.updatePropertiesByPropertyValues(resourceInstancesProperties, findAllPropertiesValuesOnInstances.left().value()); + + return Either.left(resourceInstancesProperties.get(resourceInstance.getUniqueId())); + } + public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getComponentInstanceProperties(ComponentInstance resourceInstance, Map<String, List<PropertyDefinition>> alreadyProcessedResources, Map<String, List<ComponentInstanceProperty>> alreadyProcessedInstances, Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances, List<String> path) { @@ -5333,7 +5548,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo resourceInstancePropertyList.add(resourceInstanceProperty); } - } OriginTypeEnum originType = resourceInstance.getOriginType(); @@ -5381,7 +5595,9 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo case PRODUCT: containerNodeType = NodeTypeEnum.Product; compInstNodeType = NodeTypeEnum.Service; + break; case VFC: + case VFCMT: case VL: case CP: break; @@ -5418,7 +5634,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return null; } - List<String> clonedList = new ArrayList(); + List<String> clonedList = new ArrayList<String>(); clonedList.addAll(list); return clonedList; @@ -5441,7 +5657,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo ImmutablePair<ComponentInstance, Integer> pair = entry.getValue(); ComponentInstance componentInstance = pair.getLeft(); - Integer level = pair.getRight(); Either<List<ComponentInstanceProperty>, TitanOperationStatus> propeprtyValueOnCIResult = findPropertyValueOnComponentInstance(componentInstance); @@ -5454,10 +5669,10 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo } List<ComponentInstanceProperty> propertyValuesOnCI = propeprtyValueOnCIResult.left().value(); - if (propeprtyValueOnCIResult != null) { + if (propertyValuesOnCI != null) { for (ComponentInstanceProperty instanceProperty : propertyValuesOnCI) { boolean result = addPropertyValue(compInstUniqueId, instanceProperty, propertyToInstanceValue); - if (result == false) { + if (!result) { return Either.right(TitanOperationStatus.ALREADY_EXIST); } } @@ -5558,7 +5773,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo capability.getUniqueId(), capability.getName(), capability.getProperties(), !isNewlyCreatedResourceInstance); if (addCapInstWithPropertiesRes.isRight()) { error = addCapInstWithPropertiesRes.right().value(); - log.debug("Failed to assotiate capability instance to resource instance {}. Status is {}", resourceInstanceId, error); + log.debug("Failed to assotiate capability instance to resource instance {}. status is {}", resourceInstanceId, error); } log.debug("After adding capability property values to resource instance {}. Status is {}", resourceInstanceId, error); if (error == null) { @@ -5573,7 +5788,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo TitanOperationStatus addCapInstWithPropertiesRes = capabilityInstanceOperation.createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(resourceInstanceVertex, resourceInstanceId, capability.getUniqueId(), capability.getName(), capability.getProperties(), !isNewlyCreatedResourceInstance); - if (!addCapInstWithPropertiesRes.equals(TitanOperationStatus.OK)) { + if (addCapInstWithPropertiesRes != TitanOperationStatus.OK) { error = addCapInstWithPropertiesRes; log.debug("Failed to assotiate capability instance to resource instance {} . status is {}", resourceInstanceId, error); } @@ -5596,7 +5811,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValuesRes = capabilityInstanceOperation.updateCapabilityPropertyValues(resourceInstanceId, capabilityId, propertyValues); if (updateCapabilityPropertyValuesRes.isRight()) { error = updateCapabilityPropertyValuesRes.right().value(); - log.debug("Failed to update property values of capability {} of resource instance {}. Status is {}", capabilityId, resourceInstanceId, error); + log.debug("Failed to update property values of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } log.debug("After updating property values of capability {} of resource instance {}. Status is {}", capabilityId, resourceInstanceId, error); if (error == null) { @@ -5619,14 +5834,14 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<CapabilityInstData, TitanOperationStatus> getCapInstByCapabilityRes = capabilityInstanceOperation.getCapabilityInstanceOfCapabilityOfResourceInstance(resourceInstanceId, capabilityId); if (getCapInstByCapabilityRes.isRight()) { error = getCapInstByCapabilityRes.right().value(); - log.debug("Failed to retrieve capability instance of capability {} of resource instance {}. Status is {}", capabilityId, resourceInstanceId, error); + log.debug("Failed to retrieve capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error); } if (error == null) { String capabilityInstanceId = getCapInstByCapabilityRes.left().value().getUniqueId(); deleteCapInstWithPropertiesRes = capabilityInstanceOperation.deleteCapabilityInstanceFromResourceInstance(resourceInstanceId, capabilityInstanceId); if (deleteCapInstWithPropertiesRes.isRight()) { error = deleteCapInstWithPropertiesRes.right().value(); - log.debug("Failed to delete capability instance {} to resource instance {}. Status is {}", capabilityInstanceId, resourceInstanceId, error); + log.debug("Failed to delete capability instance {} to resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error); } } log.debug("After deleting property values of capability {} from resource instance {}. Status is {}", capabilityId, resourceInstanceId, error); @@ -5653,7 +5868,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesRes = capabilityInstanceOperation.getAllCapabilityInstancesOfResourceInstance(resourceInstanceId); if (getAllCapabilityInstancesRes.isRight() && !getAllCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { error = getAllCapabilityInstancesRes.right().value(); - log.debug("Failed to get capability instances of component instance {}. Status is {}", resourceInstanceId, error); + log.debug("Failed to get capability instances of component instance {}. status is {}", resourceInstanceId, error); } if (getAllCapabilityInstancesRes.isLeft()) { List<ImmutablePair<CapabilityInstData, GraphEdge>> capabilityInstances = getAllCapabilityInstancesRes.left().value(); @@ -5670,7 +5885,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo cloneAssociateCIWithPropertyValuesRes = capabilityInstanceOperation.cloneAssociateCapabilityInstanceWithPropertyValues(createdComponentInstance, relatedCapability, capabilityInstPair); if (cloneAssociateCIWithPropertyValuesRes.isRight()) { error = cloneAssociateCIWithPropertyValuesRes.right().value(); - log.debug("Failed to clone capability instances {} of component instance {}. Status is {}", capabilityInstPair.getLeft().getUniqueId(), resourceInstanceId, error); + log.debug("Failed to clone capability instances {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), resourceInstanceId, error); break; } else { result.put(new ImmutablePair<CapabilityInstData, GraphEdge>(cloneAssociateCIWithPropertyValuesRes.left().value().getLeft(), capabilityInstPair.getRight()), cloneAssociateCIWithPropertyValuesRes.left().value().getRight()); @@ -5691,7 +5906,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo Either<TitanVertex, TitanOperationStatus> cloneAssociateCIWithPropertyValuesRes = null; Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesRes = capabilityInstanceOperation.getAllCapabilityInstancesOfResourceInstance(resourceInstanceId); - if (getAllCapabilityInstancesRes.isRight() && !getAllCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { + if (getAllCapabilityInstancesRes.isRight() && getAllCapabilityInstancesRes.right().value() != TitanOperationStatus.NOT_FOUND) { error = getAllCapabilityInstancesRes.right().value(); log.debug("Failed to get capability instances of component instance {}. status is {}", resourceInstanceId, error); } @@ -5784,29 +5999,26 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo if (getOverridedPropertyValuesRes.isRight()) { error = getOverridedPropertyValuesRes.right().value(); log.debug("Failed to retrieve property values of capability instance {}. Status is {}", curCapInstUid, error); - } - - log.debug("After getting all property values of capability instance {} of component istance {}. Status is {}", curCapInstUid, componentInstanceId, error); - Map<String, PropertyValueData> overridedPropertyValuesHM = new HashMap<>(); - List<ImmutablePair<PropertyValueData, GraphEdge>> overridedPropertyValues = getOverridedPropertyValuesRes.left().value(); - for (ImmutablePair<PropertyValueData, GraphEdge> curPropertyValuePair : overridedPropertyValues) { - PropertyValueData curPropertyValue = curPropertyValuePair.getLeft(); - String propertyValueUid = curPropertyValue.getUniqueId(); - log.debug("Before getting property related to property value {} of capability instance {} of component istance {}.", propertyValueUid, curCapInstUid, componentInstanceId); - Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> getPropertyDataRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.getByName(curPropertyValue.getLabel())), propertyValueUid, - GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class); - if (getPropertyDataRes.isRight()) { - error = getOverridedPropertyValuesRes.right().value(); - log.debug("Failed to retrieve property of property value {} Status is {}", propertyValueUid, error); - } - - if (log.isDebugEnabled()) { + } else { + log.debug("After getting all property values of capability instance {} of component istance {}. Status is {}", curCapInstUid, componentInstanceId, error); + Map<String, PropertyValueData> overridedPropertyValuesHM = new HashMap<>(); + List<ImmutablePair<PropertyValueData, GraphEdge>> overridedPropertyValues = getOverridedPropertyValuesRes.left().value(); + for (ImmutablePair<PropertyValueData, GraphEdge> curPropertyValuePair : overridedPropertyValues) { + PropertyValueData curPropertyValue = curPropertyValuePair.getLeft(); + String propertyValueUid = curPropertyValue.getUniqueId(); + log.debug("Before getting property related to property value {} of capability instance {} of component istance {}.", propertyValueUid, curCapInstUid, componentInstanceId); + Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> getPropertyDataRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.getByName(curPropertyValue.getLabel())), propertyValueUid, + GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class); + if (getPropertyDataRes.isRight()) { + error = getOverridedPropertyValuesRes.right().value(); + log.debug("Failed to retrieve property of property value {} Status is {}", propertyValueUid, error); + } log.debug("After getting property related to property value {} of capability instance {} of component istance {}. Status is {}", propertyValueUid, curCapInstUid, componentInstanceId, error); + PropertyData propertyData = getPropertyDataRes.left().value().getLeft(); + overridedPropertyValuesHM.put((String) propertyData.getUniqueId(), curPropertyValue); } - PropertyData propertyData = getPropertyDataRes.left().value().getLeft(); - overridedPropertyValuesHM.put((String) propertyData.getUniqueId(), curPropertyValue); + overridedCapabilitiesHM.put((String) curCapabilityPair.getRight().getProperties().get(GraphPropertiesDictionary.CAPABILITY_ID.getProperty()), overridedPropertyValuesHM); } - overridedCapabilitiesHM.put((String) curCapabilityPair.getRight().getProperties().get(GraphPropertiesDictionary.CAPABILITY_ID.getProperty()), overridedPropertyValuesHM); } } if (error == null && !overridedCapabilitiesHM.isEmpty()) { @@ -5838,7 +6050,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo @Override public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(ComponentInstanceInput input, String resourceInstanceId, boolean b) { - // TODO Auto-generated method stub return null; } @@ -5849,4 +6060,119 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo return result; } + @Override + public StorageOperationStatus updateCustomizationUUID(String componentInstanceId) { + Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), componentInstanceId); + if (vertexByProperty.isRight()) { + log.debug("Failed to fetch component instance by id {} error {}", componentInstanceId, vertexByProperty.right().value()); + return DaoStatusConverter.convertTitanStatusToStorageStatus(vertexByProperty.right().value()); + } + UUID uuid = UUID.randomUUID(); + TitanVertex ciVertex = vertexByProperty.left().value(); + ciVertex.property(GraphPropertiesDictionary.CUSTOMIZATION_UUID.getProperty(), uuid.toString()); + + return StorageOperationStatus.OK; + } + + private Either<String, Boolean> handleGroupInstanceNameLogic(TitanVertex ciVertex, GroupInstance groupInstance, String componentInstanceId, String componentInstanceName, String groupName) { + + groupInstance.setGroupName(groupName); + + String logicalName = groupInstanceOperation.createGroupInstLogicalName(componentInstanceName, groupName); + + Boolean eitherValidation = validateGroupInstanceName(logicalName, groupInstance, true); + if (!eitherValidation) { + return Either.right(false); + } + // groupInstance.setName(logicalName); + return Either.left(logicalName); + } + + private Boolean validateGroupInstanceName(String groupInstanceName, GroupInstance groupInstance, boolean isCreate) { + + if (!ValidationUtils.validateStringNotEmpty(groupInstanceName)) { + return false; + } + groupInstance.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(groupInstanceName)); + if (!isCreate) { + if (!ValidationUtils.validateResourceInstanceNameLength(groupInstanceName)) { + return false; + } + if (!ValidationUtils.validateResourceInstanceName(groupInstanceName)) { + return false; + } + } + + return true; + + } + // Evg: need to be public for reuse code in migration + public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, GroupDefinition groupDefinition, ComponentInstance componentInstance) { + // create VFC instance on VF + GroupInstance groupInstance = null; + + boolean isCreateName = false; + List<GroupInstance> groupInstances = componentInstance.getGroupInstances(); + if (groupInstances != null && !groupInstances.isEmpty()) { + Optional<GroupInstance> op = groupInstances.stream().filter(p -> p.getGroupUid().equals(groupDefinition.getUniqueId())).findAny(); + if (op.isPresent()) { + groupInstance = op.get(); + + } + } + if (groupInstance == null) { + groupInstance = new GroupInstance(); + groupInstance.setGroupUid(groupDefinition.getUniqueId()); + + groupInstance.setArtifacts(groupDefinition.getArtifacts()); + Either<String, Boolean> handleNameLogic = handleGroupInstanceNameLogic(ciVertex, groupInstance, componentInstance.getUniqueId(), componentInstance.getNormalizedName(), groupDefinition.getName()); + if (handleNameLogic.isRight() && !handleNameLogic.right().value()) { + + if (handleNameLogic.isRight()) { + log.debug("failed to create logical name gor group instance {}", groupInstance.getName()); + return Either.right(StorageOperationStatus.INVALID_ID); + + } + } + isCreateName = true; + // groupInstance.setName(handleNameLogic.left().value()); + + } + + return groupInstanceOperation.createGroupInstance(ciVertex, componentInstance.getUniqueId(), groupInstance, isCreateName); + + } + + @Override + public Either<ComponentInstanceData, StorageOperationStatus> updateComponentInstanceModificationTimeAndCustomizationUuidOnGraph(ComponentInstance componentInstance, NodeTypeEnum componentInstanceType, Long modificationTime, boolean inTransaction) { + + log.debug("Going to update modification time of component instance {}. ", componentInstance.getName()); + Either<ComponentInstanceData, StorageOperationStatus> result = null; + try{ + ComponentInstanceData componentData = new ComponentInstanceData(componentInstance, componentInstance.getGroupInstances().size()); + componentData.getComponentInstDataDefinition().setModificationTime(modificationTime); + componentData.getComponentInstDataDefinition().setCustomizationUUID(UUID.randomUUID().toString()); + Either<ComponentInstanceData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, ComponentInstanceData.class); + if (updateNode.isRight()) { + log.error("Failed to update resource {}. status is {}", componentInstance.getUniqueId(), updateNode.right().value()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); + }else{ + result = Either.left(updateNode.left().value()); + } + }catch(Exception e){ + log.error("Exception occured during update modification date of compomemt instance{}. The message is {}. ", componentInstance.getName(), e.getMessage(), e); + result = Either.right(StorageOperationStatus.GENERAL_ERROR); + }finally { + if(!inTransaction){ + if (result == null || result.isRight()) { + log.error("Going to execute rollback on graph."); + titanGenericDao.rollback(); + } else { + log.debug("Going to execute commit on graph."); + titanGenericDao.commit(); + } + } + } + return result; + } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java index b243c6ea4d..e06649bf77 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java @@ -22,23 +22,15 @@ package org.openecomp.sdc.be.model.operations.impl; import java.time.Duration; import java.time.Instant; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; import java.util.concurrent.LinkedBlockingQueue; import java.util.function.Function; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutableTriple; import org.apache.commons.lang3.tuple.Pair; @@ -66,6 +58,7 @@ import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; +import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; import org.openecomp.sdc.be.model.AdditionalInformationDefinition; import org.openecomp.sdc.be.model.ArtifactDefinition; @@ -80,8 +73,10 @@ import org.openecomp.sdc.be.model.GroupDefinition; import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.LifecycleStateEnum; import org.openecomp.sdc.be.model.PropertyDefinition; +import org.openecomp.sdc.be.model.PropertyDefinition.PropertyNames; import org.openecomp.sdc.be.model.RequirementCapabilityRelDef; import org.openecomp.sdc.be.model.RequirementDefinition; +import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; import org.openecomp.sdc.be.model.cache.ComponentCache; import org.openecomp.sdc.be.model.category.CategoryDefinition; @@ -93,6 +88,7 @@ import org.openecomp.sdc.be.model.operations.api.ICapabilityOperation; import org.openecomp.sdc.be.model.operations.api.IElementOperation; import org.openecomp.sdc.be.model.operations.api.IRequirementOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; +import org.openecomp.sdc.be.model.operations.api.ToscaDefinitionPathCalculator; import org.openecomp.sdc.be.resources.data.ArtifactData; import org.openecomp.sdc.be.resources.data.CapabilityData; import org.openecomp.sdc.be.resources.data.ComponentMetadataData; @@ -168,6 +164,9 @@ public abstract class ComponentOperation { @Autowired private ComponentCache componentCache; + @Autowired + private ToscaDefinitionPathCalculator toscaDefinitionPathCalculator; + private static Pattern uuidNewVersion = Pattern.compile("^\\d{1,}.1"); protected Gson prettyJson = new GsonBuilder().setPrettyPrinting().create(); @@ -193,18 +192,18 @@ public abstract class ComponentOperation { return Either.left(tagsToCreate); } - + protected StorageOperationStatus createTagNodesOnGraph(List<TagData> tagsToCreate) { StorageOperationStatus result = StorageOperationStatus.OK; // In order to avoid duplicate tags tagsToCreate = ImmutableSet.copyOf(tagsToCreate).asList(); if (tagsToCreate != null && false == tagsToCreate.isEmpty()) { for (TagData tagData : tagsToCreate) { - log.debug("Before creating tag {}", tagData); + log.debug("Before creating tag {}" , tagData); Either<TagData, TitanOperationStatus> createTagResult = titanGenericDao.createNode(tagData, TagData.class); if (createTagResult.isRight()) { TitanOperationStatus status = createTagResult.right().value(); - log.error("Cannot create {} in the graph. Status is {}", tagData, status); + log.error("Cannot create {} in the graph. status is {}", tagData, status); result = DaoStatusConverter.convertTitanStatusToStorageStatus(status); } @@ -216,7 +215,7 @@ public abstract class ComponentOperation { public Either<Component, StorageOperationStatus> getLatestComponentByUuid(NodeTypeEnum nodeType, String uuid) { Either<Component, StorageOperationStatus> getComponentResult = null; - Either<ComponentMetadataData, StorageOperationStatus> latestComponentMetadataRes = getLatestComponentMetadataByUuid(nodeType, uuid); + Either<ComponentMetadataData, StorageOperationStatus> latestComponentMetadataRes = getLatestComponentMetadataByUuid(nodeType, uuid, false); if (latestComponentMetadataRes.isRight()) { getComponentResult = Either.right(latestComponentMetadataRes.right().value()); } @@ -234,7 +233,7 @@ public abstract class ComponentOperation { return getComponentResult; } - public Either<ComponentMetadataData, StorageOperationStatus> getLatestComponentMetadataByUuid(NodeTypeEnum nodeType, String uuid) { + public Either<ComponentMetadataData, StorageOperationStatus> getLatestComponentMetadataByUuid(NodeTypeEnum nodeType, String uuid, boolean inTransaction) { Either<ComponentMetadataData, StorageOperationStatus> getComponentResult = null; List<ComponentMetadataData> latestVersionList = null; @@ -243,24 +242,31 @@ public abstract class ComponentOperation { Map<String, Object> propertiesToMatch = new HashMap<String, Object>(); propertiesToMatch.put(GraphPropertiesDictionary.UUID.getProperty(), uuid); propertiesToMatch.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); - - Either<List<ComponentMetadataData>, TitanOperationStatus> getComponentEither = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, ComponentMetadataData.class); - if (getComponentEither.isRight()) { - log.debug("Couldn't fetch metadata for component with type {} and uuid {}, error: {}", nodeType, uuid, getComponentEither.right().value()); - getComponentResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getComponentEither.right().value())); - - } - if (getComponentResult == null) { - latestVersionList = getComponentEither.left().value(); - if (latestVersionList.isEmpty()) { - log.debug("Component with type {} and uuid {} was not found", nodeType, uuid); - getComponentResult = Either.right(StorageOperationStatus.NOT_FOUND); + try{ + Either<List<ComponentMetadataData>, TitanOperationStatus> getComponentEither = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, ComponentMetadataData.class); + if (getComponentEither.isRight()) { + log.debug("Couldn't fetch metadata for component with type {} and uuid {}, error: {}", nodeType, uuid, getComponentEither.right().value()); + getComponentResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getComponentEither.right().value())); + + } + if (getComponentResult == null) { + latestVersionList = getComponentEither.left().value(); + if (latestVersionList.isEmpty()) { + log.debug("Component with type {} and uuid {} was not found", nodeType, uuid); + getComponentResult = Either.right(StorageOperationStatus.NOT_FOUND); + } + } + if (getComponentResult == null) { + latestVersion = latestVersionList.size() == 1 ? latestVersionList.get(0) + : latestVersionList.stream().max((c1, c2) -> Double.compare(Double.parseDouble(c1.getMetadataDataDefinition().getVersion()), Double.parseDouble(c2.getMetadataDataDefinition().getVersion()))).get(); + getComponentResult = Either.left(latestVersion); + } + } catch (Exception e){ + log.debug("Failed to get latest component metadata with type {} by uuid {}. ", nodeType.getName(), uuid, e); + }finally { + if (!inTransaction) { + titanGenericDao.commit(); } - } - if (getComponentResult == null) { - latestVersion = latestVersionList.size() == 1 ? latestVersionList.get(0) - : latestVersionList.stream().max((c1, c2) -> Double.compare(Double.parseDouble(c1.getMetadataDataDefinition().getVersion()), Double.parseDouble(c2.getMetadataDataDefinition().getVersion()))).get(); - getComponentResult = Either.left(latestVersion); } return getComponentResult; } @@ -284,32 +290,6 @@ public abstract class ComponentOperation { return Either.left(serviceData); } - // protected <T extends GraphNode> Either<T, StorageOperationStatus> - // getComponentByLabelAndId_tx(String uniqueId, NodeTypeEnum nodeType, - // Class<T> clazz) { - // - // Map<String, Object> propertiesToMatch = new HashMap<String, Object>(); - // propertiesToMatch.put(UniqueIdBuilder.getKeyByNodeType(nodeType), - // uniqueId); - // Either<List<T>, TitanOperationStatus> getResponse = - // titanGenericDao.getByCriteria_tx(nodeType, propertiesToMatch, clazz); - // if (getResponse.isRight()) { - // log.debug("Couldn't fetch component with type {} and unique id {}, error: - // {}", nodeType, uniqueId, getResponse.right().value()); - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getResponse.right().value())); - // - // } - // List<T> serviceDataList = getResponse.left().value(); - // if (serviceDataList.isEmpty()) { - // log.debug("Component with type {} and unique id {} was not found", - // nodeType, uniqueId); - // return Either.right(StorageOperationStatus.NOT_FOUND); - // } - // T serviceData = serviceDataList.get(0); - // return Either.left(serviceData); - // } - /** * * @param component @@ -415,28 +395,28 @@ public abstract class ComponentOperation { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), componentData.getMetadataDataDefinition().getState()); Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(updater, componentData, GraphEdgeLabels.STATE, props); - log.debug("After associating user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.STATE); + log.debug("After associating user {} to component {}. Edge type is {}" , updater, componentData.getUniqueId(), GraphEdgeLabels.STATE); if (result.isRight()) { return result.right().value(); } result = titanGenericDao.createRelation(updater, componentData, GraphEdgeLabels.LAST_MODIFIER, null); - log.debug("After associating user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER); + log.debug("After associating user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER); if (result.isRight()) { - log.error("Failed to associate user " + updater + " to component " + componentData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.LAST_MODIFIER); + log.error("Failed to associate user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER); return result.right().value(); } result = titanGenericDao.createRelation(userData, componentData, GraphEdgeLabels.CREATOR, null); - log.debug("After associating user {} to component {}. Edge type is {}", userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR); + log.debug("After associating user {} to component {}. Edge type is {}" , userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR); if (result.isRight()) { - log.error("Failed to associate user " + userData + " to component " + componentData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.CREATOR); + log.error("Failed to associate user {} to component {}. Edge type is {}", userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR); return result.right().value(); } if (derivedResources != null) { for (ResourceMetadataData derivedResource : derivedResources) { - log.debug("After associating component {} to parent component {}. Egde type is {}", componentData.getUniqueId(), derivedResource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM); + log.debug("After associating component {} to parent component {}. Edge type is {}" ,componentData.getUniqueId(), derivedResource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM); result = titanGenericDao.createRelation(componentData, derivedResource, GraphEdgeLabels.DERIVED_FROM, null); if (result.isRight()) { log.error("Failed to associate user {} to component {}. Edge type is {}", userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR); @@ -464,11 +444,7 @@ public abstract class ComponentOperation { ArtifactDefinition artifactDefinition = entry.getValue(); Either<ArtifactDefinition, StorageOperationStatus> addArifactToResource = Either.left(artifactDefinition); - // if ((artifactDefinition.getUniqueId() != null) && - // !artifactDefinition.getUniqueId().isEmpty()) { addArifactToResource = artifactOperation.addArifactToComponent(artifactDefinition, (String) componentData.getUniqueId(), nodeType, false, true); - // } - if (addArifactToResource.isRight()) { return addArifactToResource.right().value(); } @@ -497,68 +473,68 @@ public abstract class ComponentOperation { for (ResourceMetadataData resourceData : resourceList) { builder.append(resourceData.getUniqueId() + "|"); } - log.debug("resources with property name: {} exists in graph. Found {}", name, builder.toString()); + log.debug("resources with property name:{} exists in graph. found {}",name, builder.toString()); } return Either.left(false); } else { - log.debug("resources with property name:" + name + " does not exists in graph"); + log.debug("resources with property name:{} does not exists in graph", name); return Either.left(true); } } - - protected Either<Boolean, StorageOperationStatus> validateToscaResourceNameUniqueness(String name, TitanGenericDao titanGenericDao) { + + protected Either<Boolean, StorageOperationStatus> validateServiceNameUniqueness(String name, TitanGenericDao titanGenericDao) { Map<String, Object> properties = new HashMap<>(); + String normalizedName = ValidationUtils.normaliseComponentName(name); + properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName); - properties.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), name); - - Either<List<ResourceMetadataData>, TitanOperationStatus> resources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, properties, ResourceMetadataData.class); - if (resources.isRight() && resources.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("failed to get resources from graph with property name:" + name); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resources.right().value())); + Either<List<ServiceMetadataData>, TitanOperationStatus> services = titanGenericDao.getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class); + if (services.isRight() && services.right().value() != TitanOperationStatus.NOT_FOUND) { + log.debug("failed to get services from graph with property name: {}" , name); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(services.right().value())); } - List<ResourceMetadataData> resourceList = (resources.isLeft() ? resources.left().value() : null); - if (resourceList != null && resourceList.size() > 0) { + List<ServiceMetadataData> serviceList = (services.isLeft() ? services.left().value() : null); + if (serviceList != null && serviceList.size() > 0) { if (log.isDebugEnabled()) { StringBuilder builder = new StringBuilder(); - for (ResourceMetadataData resourceData : resourceList) { - builder.append(resourceData.getUniqueId() + "|"); + for (ServiceMetadataData serviceData : serviceList) { + builder.append(serviceData.getUniqueId() + "|"); } - log.debug("resources with property name:" + name + " exists in graph. found " + builder.toString()); + log.debug("Service with property name:{} exists in graph. found {}" , name, builder.toString()); } + return Either.left(false); } else { - log.debug("resources with property name: {} dows not exists in the graph", name); + log.debug("Service with property name:{} does not exists in graph", name); return Either.left(true); } - } - - protected Either<Boolean, StorageOperationStatus> validateServiceNameUniqueness(String name, TitanGenericDao titanGenericDao) { + + protected Either<Boolean, StorageOperationStatus> validateToscaResourceNameUniqueness(String name, TitanGenericDao titanGenericDao) { Map<String, Object> properties = new HashMap<>(); - String normalizedName = ValidationUtils.normaliseComponentName(name); - properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName); - Either<List<ServiceMetadataData>, TitanOperationStatus> services = titanGenericDao.getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class); - if (services.isRight() && services.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("failed to get services from graph with property name: {}", name); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(services.right().value())); + properties.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), name); + + Either<List<ResourceMetadataData>, TitanOperationStatus> resources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, properties, ResourceMetadataData.class); + if (resources.isRight() && resources.right().value() != TitanOperationStatus.NOT_FOUND) { + log.debug("failed to get resources from graph with property name: {}" , name); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resources.right().value())); } - List<ServiceMetadataData> serviceList = (services.isLeft() ? services.left().value() : null); - if (serviceList != null && serviceList.size() > 0) { + List<ResourceMetadataData> resourceList = (resources.isLeft() ? resources.left().value() : null); + if (resourceList != null && resourceList.size() > 0) { if (log.isDebugEnabled()) { StringBuilder builder = new StringBuilder(); - for (ServiceMetadataData serviceData : serviceList) { - builder.append(serviceData.getUniqueId() + "|"); + for (ResourceMetadataData resourceData : resourceList) { + builder.append(resourceData.getUniqueId() + "|"); } - log.debug("Service with property name: {} exists in graph. Found {}", name, builder.toString()); + log.debug("resources with property name:{} exists in graph. found {}" , name, builder.toString()); } - return Either.left(false); } else { - log.debug("Service with property name: {} dows not exists in graph", name); + log.debug("resources with property name:{} does not exists in graph", name); return Either.left(true); } + } protected Either<Boolean, StorageOperationStatus> validateComponentNameUniqueness(String name, TitanGenericDao titanGenericDao, NodeTypeEnum type) { @@ -568,7 +544,7 @@ public abstract class ComponentOperation { Either<List<ComponentMetadataData>, TitanOperationStatus> components = titanGenericDao.getByCriteria(type, properties, ComponentMetadataData.class); if (components.isRight() && components.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("failed to get components from graph with property name: {}", name); + log.debug("failed to get components from graph with property name: {}" , name); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(components.right().value())); } List<ComponentMetadataData> componentList = (components.isLeft() ? components.left().value() : null); @@ -578,58 +554,16 @@ public abstract class ComponentOperation { for (ComponentMetadataData componentData : componentList) { builder.append(componentData.getUniqueId() + "|"); } - log.debug("Component with property name: {} exists in graph. Found {}", name, builder.toString()); + log.debug("Component with property name:{} exists in graph. found {}" , name, builder.toString()); } return Either.left(false); } else { - log.debug("Component with property name: {} does not exists in graph", name); + log.debug("Component with property name:{} does not exists in graph", name); return Either.left(true); } } - // protected TitanOperationStatus setComponentCategoryFromGraph(String - // uniqueId, Component component, TitanGenericDao titanGenericDao, - // NodeTypeEnum categoryType) { - // - // Either<List<ImmutablePair<CategoryData, GraphEdge>>, - // TitanOperationStatus> parentNode = - // titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), - // uniqueId, GraphEdgeLabels.CATEGORY, categoryType, - // CategoryData.class); - // if (parentNode.isRight()) { - // return parentNode.right().value(); - // } - // - // List<ImmutablePair<CategoryData, GraphEdge>> listValue = - // parentNode.left().value(); - // log.debug("Result after looking for category nodes pointed by resource " - // + uniqueId + ". status is " + listValue); - // if (listValue.size() > 1) { - // log.error("Multiple edges foud between resource " + uniqueId + " to - // category nodes."); - // } - // ImmutablePair<CategoryData, GraphEdge> value = listValue.get(0); - // log.debug("Found parent node {}", value); - // - // CategoryData categoryData = value.getKey(); - // String categoryStr = null; - // if - // (NodeTypeEnum.ResourceCategory.name().equalsIgnoreCase(categoryData.getLabel())) - // { - // StringBuilder sb = new StringBuilder(); - // sb.append(((ResourceCategoryData) categoryData).getCategoryName()); - // sb.append("/"); - // sb.append(categoryData.getName()); - // categoryStr = sb.toString(); - // } else { - // categoryStr = categoryData.getName(); - // } - // - // component.setCategory(categoryStr); - // return TitanOperationStatus.OK; - // } - protected StorageOperationStatus setArtifactFromGraph(String uniqueId, Component component, NodeTypeEnum type, IArtifactOperation artifactOperation) { StorageOperationStatus result = StorageOperationStatus.OK; Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = artifactOperation.getArtifacts(uniqueId, type, true); @@ -686,15 +620,16 @@ public abstract class ComponentOperation { return component; } - private <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> collectComponents(TitanGraph graph, NodeTypeEnum neededType, String categoryUid, NodeTypeEnum categoryType, Class<S> clazz) { + private <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> collectComponents(TitanGraph graph, NodeTypeEnum neededType, String categoryUid, NodeTypeEnum categoryType, Class<S> clazz, ResourceTypeEnum resourceType) { List<T> components = new ArrayList<>(); Either<List<ImmutablePair<S, GraphEdge>>, TitanOperationStatus> parentNodes = titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(categoryType), categoryUid, GraphEdgeLabels.CATEGORY, neededType, clazz); if (parentNodes.isLeft()) { for (ImmutablePair<S, GraphEdge> component : parentNodes.left().value()) { ComponentMetadataDataDefinition componentData = component.getLeft().getMetadataDataDefinition(); Boolean isHighest = componentData.isHighestVersion(); - Boolean isComplex = neededType == NodeTypeEnum.Resource ? ResourceTypeEnum.VF.equals(((ResourceMetadataDataDefinition) componentData).getResourceType()) : true; - if (isHighest && isComplex) { + boolean isMatchingResourceType = isMatchingByResourceType(neededType, resourceType, componentData); + + if (isHighest && isMatchingResourceType) { Either<T, StorageOperationStatus> result = getLightComponent(componentData.getUniqueId(), true); if (result.isRight()) { return Either.right(result.right().value()); @@ -706,15 +641,31 @@ public abstract class ComponentOperation { return Either.left(components); } + private boolean isMatchingByResourceType(NodeTypeEnum componentType, ResourceTypeEnum resourceType, + ComponentMetadataDataDefinition componentData) { + + boolean isMatching; + if (componentType == NodeTypeEnum.Resource) { + if (resourceType == null) { + isMatching = true; + } else { + isMatching = resourceType == ((ResourceMetadataDataDefinition)componentData).getResourceType(); + } + } else { + isMatching = true; + } + return isMatching; + } + protected <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByCategoryOrSubCategoryUid(String categoryUid, NodeTypeEnum categoryType, String categoryLabel, NodeTypeEnum neededType, boolean inTransaction, - Class<S> clazz) { + Class<S> clazz, ResourceTypeEnum resourceType) { try { Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); if (graph.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); } - return collectComponents(graph.left().value(), neededType, categoryUid, categoryType, clazz); + return collectComponents(graph.left().value(), neededType, categoryUid, categoryType, clazz, resourceType); } finally { if (false == inTransaction) { @@ -724,12 +675,12 @@ public abstract class ComponentOperation { } protected <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByCategoryOrSubCategoryName(String categoryName, NodeTypeEnum categoryType, String categoryLabel, NodeTypeEnum neededType, boolean inTransaction, - Class<S> clazz) { + Class<S> clazz, ResourceTypeEnum resourceType) { List<T> components = new ArrayList<>(); try { Class categoryClazz = categoryType == NodeTypeEnum.ServiceNewCategory ? CategoryData.class : SubCategoryData.class; Map<String, Object> props = new HashMap<String, Object>(); - props.put(GraphPropertiesDictionary.NAME.getProperty(), categoryName); + props.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normalizeCategoryName4Uniqueness(categoryName)); Either<List<GraphNode>, TitanOperationStatus> getCategory = titanGenericDao.getByCriteria(categoryType, props, categoryClazz); if (getCategory.isRight()) { return Either.right(StorageOperationStatus.CATEGORY_NOT_FOUND); @@ -740,7 +691,7 @@ public abstract class ComponentOperation { } for (GraphNode category : getCategory.left().value()) { - Either<List<T>, StorageOperationStatus> result = collectComponents(graph.left().value(), neededType, (String) category.getUniqueId(), categoryType, clazz); + Either<List<T>, StorageOperationStatus> result = collectComponents(graph.left().value(), neededType, (String) category.getUniqueId(), categoryType, clazz, resourceType); if (result.isRight()) { return result; } @@ -784,7 +735,6 @@ public abstract class ComponentOperation { } else { // for Designer retrieve specific user String key = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User); - // users = graph.left().value().getVertices(key, userId); users = graph.left().value().query().has(key, userId).vertices(); } Iterator<TitanVertex> userIterator = users.iterator(); @@ -852,7 +802,7 @@ public abstract class ComponentOperation { String stateStr = edge.value(GraphEdgePropertiesDictionary.STATE.getProperty()); LifecycleStateEnum state = LifecycleStateEnum.findState(stateStr); if (state == null) { - log.debug("not supported STATE for element {}", stateStr); + log.debug("not supported STATE for element {}" , stateStr); continue; } if (lifecycleStates != null && lifecycleStates.contains(state)) { @@ -902,7 +852,7 @@ public abstract class ComponentOperation { if (id != null) { Either<T, StorageOperationStatus> component = getLightComponent(id, inTransaction); if (component.isRight()) { - log.debug("Failed to get component for id = {} error: {} skip resource", id, component.right().value()); + log.debug("Failed to get component for id = {} error : {} skip resource", id, component.right().value()); } else { components.add(component.left().value()); } @@ -929,8 +879,11 @@ public abstract class ComponentOperation { } private Either<ArtifactData, StorageOperationStatus> generateAndUpdateToscaFileName(String componentType, String componentName, String componentId, NodeTypeEnum type, ArtifactDefinition artifactInfo) { - Map<String, Object> getConfig = (Map<String, Object>) ConfigurationManager.getConfigurationManager().getConfiguration().getToscaArtifacts().entrySet().stream().filter(p -> p.getKey().equalsIgnoreCase(artifactInfo.getArtifactLabel())) - .findAny().get().getValue(); + Map<String, Object> getConfig = (Map<String, Object>) ConfigurationManager.getConfigurationManager().getConfiguration().getToscaArtifacts().entrySet().stream() + .filter(p -> p.getKey().equalsIgnoreCase(artifactInfo.getArtifactLabel())) + .findAny() + .get() + .getValue(); artifactInfo.setArtifactName(componentType + "-" + componentName + getConfig.get("artifactName")); return artifactOperation.updateToscaArtifactNameOnGraph(artifactInfo, artifactInfo.getUniqueId(), type, componentId); } @@ -961,7 +914,7 @@ public abstract class ComponentOperation { Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(newCategory.getName(), NodeTypeEnum.ServiceNewCategory, CategoryData.class); if (categoryResult.isRight()) { StorageOperationStatus status = categoryResult.right().value(); - log.error("Cannot find category " + newCategory.getName() + " in the graph. status is " + status); + log.error("Cannot find category {} in the graph. status is {}", newCategory.getName(), status); return status; } @@ -1008,9 +961,6 @@ public abstract class ComponentOperation { public abstract <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTrasnaction); - // public abstract <T> Either<T, StorageOperationStatus> - // getComponent_tx(String id, boolean inTransaction); - protected abstract <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction); public abstract <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction); @@ -1129,7 +1079,7 @@ public abstract class ComponentOperation { log.debug("No nodes in graph for criteria : from type = {} and properties = {}", type, props); return Either.left(result); } catch (Exception e) { - log.debug("Failed get by criteria for type = {} and properties = {}. {}", type, props, e); + log.debug("Failed get by criteria for type = {} and properties = {}", type, props, e); return Either.right(TitanGraphClient.handleTitanException(e)); } } @@ -1190,7 +1140,7 @@ public abstract class ComponentOperation { // inTransaction); Either<T, StorageOperationStatus> component = getLightComponent((String) componentData.getUniqueId(), inTransaction); if (component.isRight()) { - log.debug("Failed to get component for id = {} error : {} skip resource", componentData.getUniqueId(), component.right().value()); + log.debug("Failed to get component for id = {} error : {} skip resource", componentData.getUniqueId(), component.right().value()); // return Either.right(service.right().value()); } else { result.add(component.left().value()); @@ -1304,6 +1254,7 @@ public abstract class ComponentOperation { for (ProductMetadataData data : componentsP) { versionMap.put(data.getMetadataDataDefinition().getVersion(), (String) data.getUniqueId()); } + break; default: break; } @@ -1334,7 +1285,7 @@ public abstract class ComponentOperation { return DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); } - log.trace("After adding additional information to component {}. Result is {}", componentId, status.left().value()); + log.trace("After adding additional information to component {}. Result is {}" , componentId ,status.left().value()); return StorageOperationStatus.OK; @@ -1619,7 +1570,7 @@ public abstract class ComponentOperation { // } valueUid = valuedProperty.getValueUniqueUid(); - log.trace("Found value {} under resource instance whice override the default value {}", value, defaultValue); + log.trace("Found value {} under resource instance which override the default value {}" , value, defaultValue); } ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty(propertyDefinition, value, valueUid); @@ -1681,7 +1632,7 @@ public abstract class ComponentOperation { StorageOperationStatus updateComponent; if (updateNode.isRight()) { - log.debug("Failed to update component {}. Status is {}", componentMetaData.getUniqueId(), updateNode.right().value()); + log.debug("Failed to update component {}. status is {}", componentMetaData.getUniqueId(), updateNode.right().value()); updateComponent = DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()); result = Either.right(updateComponent); return result; @@ -1706,14 +1657,13 @@ public abstract class ComponentOperation { } private Either<List<RequirementDefinition>, TitanOperationStatus> convertReqDataListToReqDefList(ComponentInstance componentInstance, List<ImmutablePair<RequirementData, GraphEdge>> requirementData) { - ConvertDataToDef<RequirementDefinition, RequirementData> convertor = (data, edge) -> convertReqDataToReqDef(data, edge); + ConvertDataToDef<RequirementDefinition, RequirementData> convertor = (instance, data, edge) -> convertReqDataToReqDef(instance, data, edge); AddOwnerData<RequirementDefinition> dataAdder = (reqDef, compInstance) -> addOwnerDataReq(reqDef, compInstance); - return convertDataToDefinition(componentInstance, requirementData, convertor, dataAdder); } private Either<List<CapabilityDefinition>, TitanOperationStatus> convertCapDataListToCapDefList(ComponentInstance componentInstance, List<ImmutablePair<CapabilityData, GraphEdge>> capabilityData) { - ConvertDataToDef<CapabilityDefinition, CapabilityData> convertor = (data, edge) -> convertCapDataToCapDef(data, edge); + ConvertDataToDef<CapabilityDefinition, CapabilityData> convertor = (instance, data, edge) -> convertCapDataToCapDef(instance, data, edge); AddOwnerData<CapabilityDefinition> dataAdder = (capDef, compInstance) -> addOwnerDataCap(capDef, compInstance); Either<List<CapabilityDefinition>, TitanOperationStatus> convertationResult = convertDataToDefinition(componentInstance, capabilityData, convertor, dataAdder); if (convertationResult.isLeft()) { @@ -1722,7 +1672,7 @@ public abstract class ComponentOperation { return convertationResult; } - private Either<CapabilityDefinition, TitanOperationStatus> convertCapDataToCapDef(CapabilityData data, GraphEdge edge) { + private Either<CapabilityDefinition, TitanOperationStatus> convertCapDataToCapDef(ComponentInstance componentInstance, CapabilityData data, GraphEdge edge) { Either<CapabilityDefinition, TitanOperationStatus> eitherDef = capabilityOperation.getCapabilityByCapabilityData(data); if (eitherDef.isLeft()) { @@ -1735,6 +1685,7 @@ public abstract class ComponentOperation { capabilityOperation.getCapabilitySourcesList(source, sourcesList); capDef.setName(name); capDef.setCapabilitySources(sourcesList); + capDef.setPath(toscaDefinitionPathCalculator.calculateToscaDefinitionPath(componentInstance, edge)); String requiredOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty()); if (requiredOccurrences != null) { @@ -1751,7 +1702,7 @@ public abstract class ComponentOperation { return eitherDef; } - private Either<RequirementDefinition, TitanOperationStatus> convertReqDataToReqDef(RequirementData data, GraphEdge edge) { + private Either<RequirementDefinition, TitanOperationStatus> convertReqDataToReqDef(ComponentInstance componentInstance, RequirementData data, GraphEdge edge) { Either<RequirementDefinition, TitanOperationStatus> eitherDef = requirementOperation.getRequirement(data.getUniqueId()); if (eitherDef.isLeft()) { @@ -1764,6 +1715,7 @@ public abstract class ComponentOperation { if (requiredOccurrences != null) { requirementDef.setMinOccurrences(requiredOccurrences); } + requirementDef.setPath(toscaDefinitionPathCalculator.calculateToscaDefinitionPath(componentInstance, edge)); String leftOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty()); if (leftOccurrences != null) { requirementDef.setMaxOccurrences(leftOccurrences); @@ -1777,7 +1729,7 @@ public abstract class ComponentOperation { private <Def, Data> Either<List<Def>, TitanOperationStatus> convertDataToDefinition(ComponentInstance componentInstance, List<ImmutablePair<Data, GraphEdge>> requirementData, ConvertDataToDef<Def, Data> convertor, AddOwnerData<Def> dataAdder) { Either<List<Def>, TitanOperationStatus> eitherResult; // Convert Data To Definition - Stream<Either<Def, TitanOperationStatus>> reqDefStream = requirementData.stream().map(e -> convertor.convert(e.left, e.right)); + Stream<Either<Def, TitanOperationStatus>> reqDefStream = requirementData.stream().map(e -> convertor.convert(componentInstance, e.left, e.right)); // Collect But Stop After First Error List<Either<Def, TitanOperationStatus>> filteredReqDefList = StreamUtils.takeWhilePlusOne(reqDefStream, p -> p.isLeft()).collect(Collectors.toList()); @@ -1796,7 +1748,7 @@ public abstract class ComponentOperation { } interface ConvertDataToDef<Def, Data> { - Either<Def, TitanOperationStatus> convert(Data d, GraphEdge edge); + Either<Def, TitanOperationStatus> convert(ComponentInstance compInstance, Data d, GraphEdge edge); } interface AddOwnerData<Def> { @@ -1979,7 +1931,7 @@ public abstract class ComponentOperation { NodeTypeEnum label = NodeTypeEnum.getByName(metadataData.getLabel()); switch (label) { case Resource: - pair = new ImmutablePair<String, String>(metadataData.getMetadataDataDefinition().getName(), ((ResourceMetadataDataDefinition) metadataData.getMetadataDataDefinition()).getResourceType().getValue()); + pair = new ImmutablePair<String, String>(metadataData.getMetadataDataDefinition().getName(), ((ResourceMetadataDataDefinition) metadataData.getMetadataDataDefinition()).getResourceType().name()); break; default: pair = new ImmutablePair<String, String>(metadataData.getMetadataDataDefinition().getName(), metadataData.getLabel()); @@ -2004,13 +1956,14 @@ public abstract class ComponentOperation { switch (internalComponentType.toLowerCase()) { case "vf": properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF.name())); - properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name())); +// properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name())); // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), // ResourceTypeEnum.VF.name()); break; case "service": properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VFC.name())); - properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name())); + properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VFCMT.name())); +// properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name())); // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), // ResourceTypeEnum.VFC.name()); break; @@ -2104,11 +2057,7 @@ public abstract class ComponentOperation { manager.addJob(new Job() { @Override public Either<Component, StorageOperationStatus> doWork() { - // long start = System.currentTimeMillis(); Either<Component, StorageOperationStatus> component = getComponent(componentUid, componentParametersView, false); - // long stop = System.currentTimeMillis(); - // log.info("********** Time calculation in ms: - // getComponent single {}", (stop-start)); return component; } }); @@ -2205,10 +2154,7 @@ public abstract class ComponentOperation { } <T> Either<T, StorageOperationStatus> getLightComponent(String id, NodeTypeEnum nodeType, boolean inTransaction) { - Either<Component, StorageOperationStatus> metadataComponent = getMetadataComponent(id, nodeType, inTransaction); - if (metadataComponent.isRight()) { - } T component = null; try { log.debug("Starting to build light component of type {}, id {}", nodeType, id); @@ -2333,7 +2279,7 @@ public abstract class ComponentOperation { return Either.left(instanceCounter); } - protected TitanOperationStatus setComponentInstancesPropertiesFromGraph(String uniqueId, Component component) { + protected TitanOperationStatus setComponentInstancesPropertiesFromGraph(Component component) { List<ComponentInstance> resourceInstances = component.getComponentInstances(); @@ -2390,7 +2336,7 @@ public abstract class ComponentOperation { return TitanOperationStatus.OK; } - + protected TitanOperationStatus setComponentInstancesInputsFromGraph(String uniqueId, Component component) { Map<String, List<ComponentInstanceInput>> resourceInstancesInputs = new HashMap<>(); @@ -2546,8 +2492,7 @@ public abstract class ComponentOperation { Instant start = Instant.now(); Either<List<ComponentInstance>, StorageOperationStatus> resourceInstancesOfService = componentInstanceOperation.getAllComponentInstancesMetadataOnly(componentId, nodeType); Instant end = Instant.now(); - log.debug("TOTAL TIME BL GET INSTANCES: {}", Duration.between(start, end)); // prints - // PT1M3.553S + log.debug("TOTAL TIME BL GET INSTANCES: {}", Duration.between(start, end)); return resourceInstancesOfService; } @@ -2648,12 +2593,7 @@ public abstract class ComponentOperation { break; } if (clazz1 != null) { - // long startGetAllVersions = - // System.currentTimeMillis(); Either<Map<String, String>, TitanOperationStatus> versionList = getVersionList(componentTypeEnum.getNodeType(), cachedComponent.getVersion(), cachedComponent.getUUID(), cachedComponent.getSystemName(), clazz1); - // log.debug("Fetch all versions for component {} took - // {} ms", cachedComponent.getUniqueId(), - // System.currentTimeMillis() - startGetAllVersions); if (versionList.isRight()) { return Either.right(ActionStatus.GENERAL_ERROR); } @@ -2732,7 +2672,7 @@ public abstract class ComponentOperation { if (counterStatus.isRight()) { - log.error("Cannot find componentInstanceCounter for component {} in the graph. Status is {}", componentData.getUniqueId(), counterStatus); + log.error("Cannot find componentInstanceCounter for component {} in the graph. status is {}", componentData.getUniqueId(), counterStatus); // result = sendError(status, // StorageOperationStatus.USER_NOT_FOUND); return result; @@ -2742,7 +2682,7 @@ public abstract class ComponentOperation { String modifierUserId = component.getLastUpdaterUserId(); if (modifierUserId == null || modifierUserId.isEmpty()) { - log.error("userId is missing in the request."); + log.error("UserId is missing in the request."); result = Either.right(StorageOperationStatus.BAD_REQUEST); return result; } @@ -2750,7 +2690,7 @@ public abstract class ComponentOperation { if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user {} in the graph. Status is {}", modifierUserId, status); + log.error("Cannot find user {} in the graph. status is {}", modifierUserId, status); // result = sendError(status, // StorageOperationStatus.USER_NOT_FOUND); return result; @@ -2780,7 +2720,7 @@ public abstract class ComponentOperation { } else { log.debug("Going to update the last modifier user of the resource from {} to {}", currentModifier, modifierUserId); StorageOperationStatus status = moveLastModifierEdge(component, componentData, modifierUserData, type); - log.debug("Finish to update the last modifier user of the resource from {} to {}. Status is {}", currentModifier, modifierUserId, status); + log.debug("Finish to update the last modifier user of the resource from {} to {}. status is {}", currentModifier, modifierUserId, status); if (status != StorageOperationStatus.OK) { result = Either.right(status); return result; @@ -2811,7 +2751,7 @@ public abstract class ComponentOperation { Either<TagData, TitanOperationStatus> createTagResult = titanGenericDao.createNode(tagData, TagData.class); if (createTagResult.isRight()) { TitanOperationStatus status = createTagResult.right().value(); - log.error("Cannot find tag {} in the graph. Status is {}", tagData, status); + log.error("Cannot find tag {} in the graph. status is {}", tagData, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -2823,7 +2763,7 @@ public abstract class ComponentOperation { Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class); if (updateNode.isRight()) { - log.error("Failed to update resource {}. Status is {}", component.getUniqueId(), updateNode.right().value()); + log.error("Failed to update resource {}. status is {}", component.getUniqueId(), updateNode.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); return result; } @@ -2834,7 +2774,8 @@ public abstract class ComponentOperation { // DE230195 in case resource name changed update TOSCA artifacts // file names accordingly String newSystemName = updatedResourceData.getMetadataDataDefinition().getSystemName(); - if (newSystemName != null && !newSystemName.equals(currentComponent.getSystemName())) { + String prevSystemName = currentComponent.getSystemName(); + if (newSystemName != null && !newSystemName.equals(prevSystemName)) { Map<String, ArtifactDefinition> toscaArtifacts = component.getToscaArtifacts(); if (toscaArtifacts != null) { for (Entry<String, ArtifactDefinition> artifact : toscaArtifacts.entrySet()) { @@ -2846,8 +2787,15 @@ public abstract class ComponentOperation { } } } - + //TODO call to new Artifact operation in order to update list of artifacts + + //US833308 VLI in service - specific network_role property value logic + if (ComponentTypeEnum.SERVICE == component.getComponentType()) { + //update method logs success/error and returns boolean (true if nothing fails) + updateServiceNameInVLIsNetworkRolePropertyValues(component, prevSystemName, newSystemName); + } } + if (component.getComponentType().equals(ComponentTypeEnum.RESOURCE)) { updateDerived(component, currentComponent, componentData, component.getClass()); @@ -2863,13 +2811,7 @@ public abstract class ComponentOperation { T updatedResourceValue = updatedResource.left().value(); result = Either.left(updatedResourceValue); - if (log.isDebugEnabled()) { - // String json = prettyJson.toJson(result.left().value()); - // log.debug("Resource retrieved after update is {}", json); - } - return result; - } finally { if (false == inTransaction) { @@ -2883,4 +2825,139 @@ public abstract class ComponentOperation { } } } + + private boolean updateServiceNameInVLIsNetworkRolePropertyValues (Component component, String prevSystemName, String newSystemName) { + // find VLIs in service + boolean res = true; + if(null == component.getComponentInstances() || component.getComponentInstances().isEmpty()){ + return res; + } + + List <ComponentInstance> vlInstances = + component.getComponentInstances().stream() + .filter(p -> OriginTypeEnum.VL == p.getOriginType()) + .collect(Collectors.toList()); + if (!vlInstances.isEmpty()) { + for (ComponentInstance vlInstance : vlInstances){ + // find network_role property + Optional <ComponentInstanceProperty> networkRoleProperty = component.getComponentInstancesProperties().get(vlInstance.getUniqueId()).stream() + .filter(p -> PropertyNames.NETWORK_ROLE.getPropertyName().equalsIgnoreCase(p.getName())) + .findAny(); + res = res && updateNetworkRolePropertyValue(prevSystemName, newSystemName, vlInstance, networkRoleProperty); + } + } + return res; + } + + private boolean updateNetworkRolePropertyValue(String prevSystemName, String newSystemName, ComponentInstance vlInstance, Optional<ComponentInstanceProperty> networkRoleProperty) { + if (networkRoleProperty.isPresent() && !StringUtils.isEmpty(networkRoleProperty.get().getValue()) ) { + ComponentInstanceProperty property = networkRoleProperty.get(); + String updatedValue = property.getValue().replaceFirst(prevSystemName, newSystemName); + property.setValue(updatedValue); + StorageOperationStatus updateCustomizationUUID; + //disregard property value rule + property.setRules(null); + Either<ComponentInstanceProperty, StorageOperationStatus> result = componentInstanceOperation.updatePropertyValueInResourceInstance(property, vlInstance.getUniqueId(), true); + if (result.isLeft()) { + log.debug("Property value {} was updated on graph.", property.getValueUniqueUid()); + updateCustomizationUUID = componentInstanceOperation.updateCustomizationUUID(vlInstance.getUniqueId()); + } else { + updateCustomizationUUID = StorageOperationStatus.EXEUCTION_FAILED; + log.debug("Failed to update property value: {} in resource instance {}", updatedValue, vlInstance.getUniqueId()); + } + return result.isLeft() && StorageOperationStatus.OK == updateCustomizationUUID; + } + return true; + } + + public Either<ComponentMetadataData, StorageOperationStatus> updateComponentLastUpdateDateAndLastModifierOnGraph( Component component, User modifier, NodeTypeEnum componentType, boolean inTransaction) { + + log.debug("Going to update last update date and last modifier info of component {}. ", component.getName()); + Either<ComponentMetadataData, StorageOperationStatus> result = null; + try{ + String modifierUserId = modifier.getUserId(); + ComponentMetadataData componentData = getMetaDataFromComponent(component); + String currentUser = component.getLastUpdaterUserId(); + UserData modifierUserData = new UserData(); + modifierUserData.setUserId(modifierUserId); + if (currentUser.equals(modifierUserId)) { + log.debug("Graph last modifier edge should not be changed since the modifier is the same as the last modifier."); + } else { + log.debug("Going to update the last modifier user of the component from {} to {}", currentUser, modifierUserId); + StorageOperationStatus status = moveLastModifierEdge(component, componentData, modifierUserData, componentType); + log.debug("Finish to update the last modifier user of the resource from {} to {}. status is {}", currentUser, modifierUserId, status); + if (status != StorageOperationStatus.OK) { + result = Either.right(status); + } + } + Either<ComponentMetadataData, TitanOperationStatus> updateNode = null; + if(result == null){ + log.debug("Going to update the component {} with new last update date. ", component.getName()); + componentData.getMetadataDataDefinition().setLastUpdateDate(System.currentTimeMillis()); + updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class); + if (updateNode.isRight()) { + log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); + } + } + if(result == null){ + result = Either.left(updateNode.left().value()); + } + }catch(Exception e){ + log.error("Exception occured during update last update date and last modifier info of component {}. The message is {}. ", component.getName(), e.getMessage()); + }finally { + if(!inTransaction){ + if (result == null || result.isRight()) { + log.error("Going to execute rollback on graph."); + titanGenericDao.rollback(); + } else { + log.debug("Going to execute commit on graph."); + titanGenericDao.commit(); + } + } + } + return result; + } + /** + * updates component lastUpdateDate on graph node + * @param component + * @param componentType + * @param lastUpdateDate + * @param inTransaction + * @return + */ + public Either<ComponentMetadataData, StorageOperationStatus> updateComponentLastUpdateDateOnGraph( Component component, NodeTypeEnum componentType, Long lastUpdateDate, boolean inTransaction) { + + log.debug("Going to update last update date of component {}. ", component.getName()); + Either<ComponentMetadataData, StorageOperationStatus> result = null; + try{ + ComponentMetadataData componentData = getMetaDataFromComponent(component); + Either<ComponentMetadataData, TitanOperationStatus> updateNode = null; + if(result == null){ + log.debug("Going to update the component {} with new last update date. ", component.getName()); + componentData.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate); + updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class); + if (updateNode.isRight()) { + log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); + } + } + if(result == null){ + result = Either.left(updateNode.left().value()); + } + }catch(Exception e){ + log.error("Exception occured during update last update date of component {}. The message is {}. ", component.getName(), e.getMessage()); + }finally { + if(!inTransaction){ + if (result == null || result.isRight()) { + log.error("Going to execute rollback on graph."); + titanGenericDao.rollback(); + } else { + log.debug("Going to execute commit on graph."); + titanGenericDao.commit(); + } + } + } + return result; + } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ConsumerOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ConsumerOperation.java index aafa4ba444..215a1464a6 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ConsumerOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ConsumerOperation.java @@ -46,11 +46,11 @@ public class ConsumerOperation implements IConsumerOperation { @Override public Either<ConsumerData, StorageOperationStatus> getCredentials(String consumerName) { Either<ConsumerData, StorageOperationStatus> result = null; - log.debug("retriving Credentials for: {}.", consumerName); + log.debug("retriving Credentials for: {}", consumerName); Either<ConsumerData, TitanOperationStatus> getNode = titanGenericDao.getNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class); if (getNode.isRight()) { TitanOperationStatus status = getNode.right().value(); - log.error("Error returned after get Consumer Data node " + consumerName + ". status returned is " + status); + log.error("Error returned after get Consumer Data node {}. status returned is {}", consumerName, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -67,11 +67,11 @@ public class ConsumerOperation implements IConsumerOperation { public Either<ConsumerData, StorageOperationStatus> createCredentials(ConsumerData consumerData, boolean inTransaction) { Either<ConsumerData, StorageOperationStatus> result = null; try { - log.debug("creating Credentials for: {}.", consumerData.getUniqueId()); + log.debug("creating Credentials for: {}", consumerData.getUniqueId()); Either<ConsumerData, TitanOperationStatus> createNode = titanGenericDao.createNode(consumerData, ConsumerData.class); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - log.error("Error returned after creating Consumer Data node " + consumerData.getUniqueId() + ". status returned is " + status); + log.error("Error returned after creating Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -96,7 +96,7 @@ public class ConsumerOperation implements IConsumerOperation { Either<ConsumerData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(GraphPropertiesDictionary.CONSUMER_NAME.getProperty(), consumerName, ConsumerData.class); if (deleteNode.isRight()) { TitanOperationStatus status = deleteNode.right().value(); - log.error("Error returned after delete Consumer Data node {}. Status returned is {}", consumerName, status); + log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerName, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -120,11 +120,11 @@ public class ConsumerOperation implements IConsumerOperation { Either<ConsumerData, StorageOperationStatus> result = null; try { - log.debug("update Credentials for: {}.", consumerData.getUniqueId()); + log.debug("update Credentials for: {}", consumerData.getUniqueId()); Either<ConsumerData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(consumerData, ConsumerData.class); if (updateNode.isRight()) { TitanOperationStatus status = updateNode.right().value(); - log.error("Error returned after delete Consumer Data node {}. Status returned is {}", consumerData.getUniqueId(), status); + log.error("Error returned after delete Consumer Data node {}. status returned is {}", consumerData.getUniqueId(), status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CsarOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CsarOperation.java index 1420ce08d8..815eb5be0e 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CsarOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CsarOperation.java @@ -61,7 +61,6 @@ public class CsarOperation { } - // Mock returning a file from the file system until we have API from onboarding public Either<Map<String, byte[]>, StorageOperationStatus> getMockCsar(String csarUuid) { File dir = new File("/var/tmp/mockCsar"); FileFilter fileFilter = new WildcardFileFilter("*.csar"); @@ -93,11 +92,10 @@ public class CsarOperation { */ public Either<Map<String, byte[]>, StorageOperationStatus> getCsar(String csarUuid, User user) { - Either<Map<String, byte[]>, StorageOperationStatus> result = onboardingClient.getCsar(csarUuid, - user.getUserId()); + Either<Map<String, byte[]>, StorageOperationStatus> result = onboardingClient.getCsar(csarUuid, user.getUserId()); if (result.isRight()) { - log.debug("Cannot find csar {}. Status returned is {}", csarUuid, result.right().value()); + log.debug("Cannot find csar {}. Staus returned is {}", csarUuid, result.right().value()); } else { Map<String, byte[]> values = result.left().value(); if (values != null) { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DaoStatusConverter.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DaoStatusConverter.java index b887c5b212..260763cced 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DaoStatusConverter.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/DaoStatusConverter.java @@ -100,8 +100,7 @@ public class DaoStatusConverter { } - public static StorageOperationStatus convertRsrcUploadStatusToStorageStatus( - ResourceUploadStatus resourceUploadStatus) { + public static StorageOperationStatus convertRsrcUploadStatusToStorageStatus(ResourceUploadStatus resourceUploadStatus) { if (resourceUploadStatus == null) { return StorageOperationStatus.GENERAL_ERROR; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java index 248a1d0460..ea42c6d76b 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ElementOperation.java @@ -29,7 +29,7 @@ import java.util.Map; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.openecomp.sdc.be.config.ConfigurationManager; -import org.openecomp.sdc.be.config.Configuration.DeploymentArtifactTypeConfig; +import org.openecomp.sdc.be.config.Configuration.ArtifactTypeConfig; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; import org.openecomp.sdc.be.dao.graph.datatype.GraphNode; @@ -55,8 +55,10 @@ import org.openecomp.sdc.be.resources.data.TagData; import org.openecomp.sdc.be.resources.data.category.CategoryData; import org.openecomp.sdc.be.resources.data.category.GroupingData; import org.openecomp.sdc.be.resources.data.category.SubCategoryData; +import org.openecomp.sdc.common.util.ValidationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.thinkaurelius.titan.core.TitanGraph; @@ -68,11 +70,11 @@ import fj.data.Either; @Component("element-operation") public class ElementOperation implements IElementOperation { - @javax.annotation.Resource private TitanGenericDao titanGenericDao; - public ElementOperation() { + public ElementOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) { super(); + this.titanGenericDao = titanGenericDao; } private static Logger log = LoggerFactory.getLogger(ElementOperation.class.getName()); @@ -107,15 +109,13 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType, - boolean inTransaction) { + public Either<CategoryDefinition, ActionStatus> createCategory(CategoryDefinition category, NodeTypeEnum nodeType, boolean inTransaction) { Either<CategoryDefinition, ActionStatus> result = null; category.setUniqueId(UniqueIdBuilder.buildCategoryUid(category.getNormalizedName(), nodeType)); CategoryData categoryData = new CategoryData(nodeType, category); try { - Either<CategoryData, TitanOperationStatus> createNode = titanGenericDao.createNode(categoryData, - CategoryData.class); + Either<CategoryData, TitanOperationStatus> createNode = titanGenericDao.createNode(categoryData, CategoryData.class); if (createNode.isRight()) { TitanOperationStatus value = createNode.right().value(); ActionStatus actionStatus = ActionStatus.GENERAL_ERROR; @@ -141,21 +141,18 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, - SubCategoryDefinition subCategory, NodeTypeEnum nodeType) { + public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType) { return createSubCategory(categoryId, subCategory, nodeType, false); } @Override - public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, - SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction) { + public Either<SubCategoryDefinition, ActionStatus> createSubCategory(String categoryId, SubCategoryDefinition subCategory, NodeTypeEnum nodeType, boolean inTransaction) { Either<SubCategoryDefinition, ActionStatus> result = null; try { // create edge from category to sub-category - Either<CategoryData, TitanOperationStatus> categoryNode = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); + Either<CategoryData, TitanOperationStatus> categoryNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); ActionStatus actionStatus = ActionStatus.GENERAL_ERROR; if (categoryNode.isRight()) { TitanOperationStatus titanOperationStatus = categoryNode.right().value(); @@ -168,12 +165,10 @@ public class ElementOperation implements IElementOperation { } CategoryDataDefinition categoryDataDefinition = categoryNode.left().value().getCategoryDataDefinition(); - subCategory.setUniqueId(UniqueIdBuilder.buildSubCategoryUid(categoryDataDefinition.getUniqueId(), - subCategory.getNormalizedName())); + subCategory.setUniqueId(UniqueIdBuilder.buildSubCategoryUid(categoryDataDefinition.getUniqueId(), subCategory.getNormalizedName())); SubCategoryData subCategoryData = new SubCategoryData(nodeType, subCategory); - Either<SubCategoryData, TitanOperationStatus> subCategoryNode = titanGenericDao.createNode(subCategoryData, - SubCategoryData.class); + Either<SubCategoryData, TitanOperationStatus> subCategoryNode = titanGenericDao.createNode(subCategoryData, SubCategoryData.class); if (subCategoryNode.isRight()) { TitanOperationStatus titanOperationStatus = subCategoryNode.right().value(); log.debug("Problem while creating category, reason {}", titanOperationStatus); @@ -184,15 +179,13 @@ public class ElementOperation implements IElementOperation { return result; } - Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.createRelation( - categoryNode.left().value(), subCategoryNode.left().value(), GraphEdgeLabels.SUB_CATEGORY, null); + Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.createRelation(categoryNode.left().value(), subCategoryNode.left().value(), GraphEdgeLabels.SUB_CATEGORY, null); if (relation.isRight()) { log.debug("Problem while create relation between category and sub-category ", relation.right().value()); result = Either.right(actionStatus); return result; } - SubCategoryDefinition subCategoryCreated = new SubCategoryDefinition( - subCategoryNode.left().value().getSubCategoryDataDefinition()); + SubCategoryDefinition subCategoryCreated = new SubCategoryDefinition(subCategoryNode.left().value().getSubCategoryDataDefinition()); result = Either.left(subCategoryCreated); return result; } finally { @@ -207,15 +200,13 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<GroupingDefinition, ActionStatus> createGrouping(String subCategoryId, GroupingDefinition grouping, - NodeTypeEnum nodeType) { + public Either<GroupingDefinition, ActionStatus> createGrouping(String subCategoryId, GroupingDefinition grouping, NodeTypeEnum nodeType) { Either<GroupingDefinition, ActionStatus> result = null; try { // create edge from sub-category to grouping - Either<SubCategoryData, TitanOperationStatus> subCategoryNode = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); + Either<SubCategoryData, TitanOperationStatus> subCategoryNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); ActionStatus actionStatus = ActionStatus.GENERAL_ERROR; if (subCategoryNode.isRight()) { TitanOperationStatus titanOperationStatus = subCategoryNode.right().value(); @@ -228,12 +219,10 @@ public class ElementOperation implements IElementOperation { } SubCategoryDataDefinition subCatData = subCategoryNode.left().value().getSubCategoryDataDefinition(); - grouping.setUniqueId( - UniqueIdBuilder.buildGroupingUid(subCatData.getUniqueId(), grouping.getNormalizedName())); + grouping.setUniqueId(UniqueIdBuilder.buildGroupingUid(subCatData.getUniqueId(), grouping.getNormalizedName())); GroupingData groupingData = new GroupingData(nodeType, grouping); - Either<GroupingData, TitanOperationStatus> groupingNode = titanGenericDao.createNode(groupingData, - GroupingData.class); + Either<GroupingData, TitanOperationStatus> groupingNode = titanGenericDao.createNode(groupingData, GroupingData.class); if (groupingNode.isRight()) { TitanOperationStatus titanOperationStatus = groupingNode.right().value(); log.debug("Problem while creating grouping, reason {}", titanOperationStatus); @@ -244,15 +233,13 @@ public class ElementOperation implements IElementOperation { return result; } - Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.createRelation( - subCategoryNode.left().value(), groupingNode.left().value(), GraphEdgeLabels.GROUPING, null); + Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.createRelation(subCategoryNode.left().value(), groupingNode.left().value(), GraphEdgeLabels.GROUPING, null); if (relation.isRight()) { log.debug("Problem while create relation between sub-category and grouping", relation.right().value()); result = Either.right(actionStatus); return result; } - GroupingDefinition groupingCreated = new GroupingDefinition( - groupingNode.left().value().getGroupingDataDefinition()); + GroupingDefinition groupingCreated = new GroupingDefinition(groupingNode.left().value().getGroupingDataDefinition()); result = Either.left(groupingCreated); return result; } finally { @@ -265,17 +252,14 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<List<CategoryDefinition>, ActionStatus> getAllCategories(NodeTypeEnum nodeType, - boolean inTransaction) { + public Either<List<CategoryDefinition>, ActionStatus> getAllCategories(NodeTypeEnum nodeType, boolean inTransaction) { try { - if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory - && nodeType != NodeTypeEnum.ProductCategory) { + if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory && nodeType != NodeTypeEnum.ProductCategory) { log.debug("Unknown category type {}", nodeType.name()); return Either.right(ActionStatus.GENERAL_ERROR); } - Either<List<org.openecomp.sdc.be.resources.data.category.CategoryData>, TitanOperationStatus> either = titanGenericDao - .getAll(nodeType, org.openecomp.sdc.be.resources.data.category.CategoryData.class); + Either<List<org.openecomp.sdc.be.resources.data.category.CategoryData>, TitanOperationStatus> either = titanGenericDao.getAll(nodeType, org.openecomp.sdc.be.resources.data.category.CategoryData.class); if (either.isRight() && (either.right().value() != TitanOperationStatus.NOT_FOUND)) { log.debug("Problem while get all categories. reason - {}", either.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); @@ -291,8 +275,7 @@ public class ElementOperation implements IElementOperation { log.trace("Found category {}, category type {}", categoryName, nodeType); TitanOperationStatus setSubCategories = setSubCategories(nodeType, categoryDefinition); if (setSubCategories != TitanOperationStatus.OK) { - log.debug("Failed to set sub-categories for category {}, category type {}, error {}", - categoryName, nodeType, setSubCategories); + log.debug("Failed to set sub-categories for category {}, category type {}, error {}", categoryName, nodeType, setSubCategories); return Either.right(ActionStatus.GENERAL_ERROR); } categoryList.add(categoryDefinition); @@ -311,14 +294,12 @@ public class ElementOperation implements IElementOperation { if (childNodeType != null) { String categoryName = parentCategory.getName(); log.trace("Getting sub-categories for category {}, category type {}", categoryName, parentNodeType); - Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentCategory.getUniqueId(), - GraphEdgeLabels.SUB_CATEGORY, childNodeType, SubCategoryData.class); + Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentCategory.getUniqueId(), GraphEdgeLabels.SUB_CATEGORY, + childNodeType, SubCategoryData.class); if (parentNode.isRight()) { TitanOperationStatus titanOperationStatus = parentNode.right().value(); if (titanOperationStatus == TitanOperationStatus.NOT_FOUND) { - log.trace("Didn't find subcategories for category {}, category type {}", categoryName, - parentNodeType); + log.trace("Didn't find subcategories for category {}, category type {}", categoryName, parentNodeType); titanOperationStatus = TitanOperationStatus.OK; } return titanOperationStatus; @@ -326,16 +307,13 @@ public class ElementOperation implements IElementOperation { List<ImmutablePair<SubCategoryData, GraphEdge>> subsCategoriesData = parentNode.left().value(); List<SubCategoryDefinition> subCategoriesDefinitions = new ArrayList<>(); for (ImmutablePair<SubCategoryData, GraphEdge> subCatPair : subsCategoriesData) { - SubCategoryDataDefinition subCategoryDataDefinition = subCatPair.getLeft() - .getSubCategoryDataDefinition(); + SubCategoryDataDefinition subCategoryDataDefinition = subCatPair.getLeft().getSubCategoryDataDefinition(); SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition(subCategoryDataDefinition); - log.trace("Found sub-category {} for category {}, category type {}", - subCategoryDataDefinition.getName(), categoryName, parentNodeType); + log.trace("Found sub-category {} for category {}, category type {}", subCategoryDataDefinition.getName(), categoryName, parentNodeType); TitanOperationStatus setGroupings = setGroupings(childNodeType, subCategoryDefinition); if (setGroupings != TitanOperationStatus.OK) { - log.debug("Failed to set groupings for sub-category {}, sub-category type {}, error {}", - subCategoryDataDefinition.getName(), childNodeType, setGroupings); + log.debug("Failed to set groupings for sub-category {}, sub-category type {}, error {}", subCategoryDataDefinition.getName(), childNodeType, setGroupings); return TitanOperationStatus.GENERAL_ERROR; } subCategoriesDefinitions.add(subCategoryDefinition); @@ -350,14 +328,12 @@ public class ElementOperation implements IElementOperation { if (childNodeType != null) { String subCategoryName = parentSubCategory.getName(); log.trace("Getting groupings for subcategory {}, subcategory type {}", subCategoryName, parentNodeType); - Either<List<ImmutablePair<GroupingData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentSubCategory.getUniqueId(), - GraphEdgeLabels.GROUPING, childNodeType, GroupingData.class); + Either<List<ImmutablePair<GroupingData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentSubCategory.getUniqueId(), GraphEdgeLabels.GROUPING, + childNodeType, GroupingData.class); if (parentNode.isRight()) { TitanOperationStatus titanOperationStatus = parentNode.right().value(); if (titanOperationStatus == TitanOperationStatus.NOT_FOUND) { - log.trace("Didn't find groupings for subcategory {}, subcategory type {}", subCategoryName, - parentNodeType); + log.trace("Didn't find groupings for subcategory {}, subcategory type {}", subCategoryName, parentNodeType); titanOperationStatus = TitanOperationStatus.OK; } return titanOperationStatus; @@ -366,8 +342,7 @@ public class ElementOperation implements IElementOperation { List<GroupingDefinition> groupingDefinitions = new ArrayList<>(); for (ImmutablePair<GroupingData, GraphEdge> groupPair : groupingData) { GroupingDataDefinition groupingDataDefinition = groupPair.getLeft().getGroupingDataDefinition(); - log.trace("Found grouping {} for sub-category {}, sub-category type {}", - groupingDataDefinition.getName(), subCategoryName, parentNodeType); + log.trace("Found grouping {} for sub-category {}, sub-category type {}", groupingDataDefinition.getName(), subCategoryName, parentNodeType); groupingDefinitions.add(new GroupingDefinition(groupingDataDefinition)); } parentSubCategory.setGroupings(groupingDefinitions); @@ -396,14 +371,12 @@ public class ElementOperation implements IElementOperation { @Override public Either<CategoryDefinition, ActionStatus> getCategory(NodeTypeEnum nodeType, String categoryId) { try { - if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory - && nodeType != NodeTypeEnum.ProductCategory) { + if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory && nodeType != NodeTypeEnum.ProductCategory) { log.debug("Unknown category type {}", nodeType.name()); return Either.right(ActionStatus.GENERAL_ERROR); } - Either<CategoryData, TitanOperationStatus> categoryDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); + Either<CategoryData, TitanOperationStatus> categoryDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); if (categoryDataEither.isRight()) { TitanOperationStatus titanOperationStatus = categoryDataEither.right().value(); log.debug("Problem while get category by id {}. reason {}", categoryId, titanOperationStatus); @@ -412,8 +385,7 @@ public class ElementOperation implements IElementOperation { } return Either.right(ActionStatus.GENERAL_ERROR); } - CategoryDataDefinition categoryDataDefinition = categoryDataEither.left().value() - .getCategoryDataDefinition(); + CategoryDataDefinition categoryDataDefinition = categoryDataEither.left().value().getCategoryDataDefinition(); return Either.left(new CategoryDefinition(categoryDataDefinition)); } finally { titanGenericDao.commit(); @@ -428,8 +400,7 @@ public class ElementOperation implements IElementOperation { return Either.right(ActionStatus.GENERAL_ERROR); } - Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); + Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); if (subCategoryDataEither.isRight()) { TitanOperationStatus titanOperationStatus = subCategoryDataEither.right().value(); log.debug("Problem while get sub-category by id {}. reason {}", subCategoryId, titanOperationStatus); @@ -438,8 +409,7 @@ public class ElementOperation implements IElementOperation { } return Either.right(ActionStatus.GENERAL_ERROR); } - SubCategoryDataDefinition subCategoryDataDefinition = subCategoryDataEither.left().value() - .getSubCategoryDataDefinition(); + SubCategoryDataDefinition subCategoryDataDefinition = subCategoryDataEither.left().value().getSubCategoryDataDefinition(); return Either.left(new SubCategoryDefinition(subCategoryDataDefinition)); } finally { titanGenericDao.commit(); @@ -450,14 +420,12 @@ public class ElementOperation implements IElementOperation { public Either<CategoryDefinition, ActionStatus> deleteCategory(NodeTypeEnum nodeType, String categoryId) { Either<CategoryDefinition, ActionStatus> result = null; try { - if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory - && nodeType != NodeTypeEnum.ProductCategory) { + if (nodeType != NodeTypeEnum.ResourceNewCategory && nodeType != NodeTypeEnum.ServiceNewCategory && nodeType != NodeTypeEnum.ProductCategory) { log.debug("Unknown category type {}", nodeType.name()); result = Either.right(ActionStatus.GENERAL_ERROR); return result; } - Either<CategoryData, TitanOperationStatus> categoryDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); + Either<CategoryData, TitanOperationStatus> categoryDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId, CategoryData.class); if (categoryDataEither.isRight()) { log.debug("Failed to retrieve category for id {} ", categoryId); result = Either.right(ActionStatus.GENERAL_ERROR); @@ -473,8 +441,7 @@ public class ElementOperation implements IElementOperation { TitanGraph tGraph = graph.left().value(); - Iterable<TitanVertex> verticesArtifact = tGraph.query() - .has(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId).vertices(); + Iterable<TitanVertex> verticesArtifact = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(nodeType), categoryId).vertices(); Iterator<TitanVertex> iterator = verticesArtifact.iterator(); if (!iterator.hasNext()) { log.debug("No category node for id = {}", categoryId); @@ -483,8 +450,7 @@ public class ElementOperation implements IElementOperation { } Vertex artifactV = iterator.next(); artifactV.remove(); - CategoryDefinition deleted = new CategoryDefinition( - categoryDataEither.left().value().getCategoryDataDefinition()); + CategoryDefinition deleted = new CategoryDefinition(categoryDataEither.left().value().getCategoryDataDefinition()); result = Either.left(deleted); return result; } finally { @@ -505,8 +471,7 @@ public class ElementOperation implements IElementOperation { result = Either.right(ActionStatus.GENERAL_ERROR); return result; } - Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); + Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); if (subCategoryDataEither.isRight()) { log.debug("Failed to retrieve sub-category for id {}", subCategoryId); result = Either.right(ActionStatus.GENERAL_ERROR); @@ -522,8 +487,7 @@ public class ElementOperation implements IElementOperation { TitanGraph tGraph = graph.left().value(); - Iterable<TitanVertex> verticesArtifact = tGraph.query() - .has(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId).vertices(); + Iterable<TitanVertex> verticesArtifact = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId).vertices(); Iterator<TitanVertex> iterator = verticesArtifact.iterator(); if (!iterator.hasNext()) { log.debug("No sub-category node for id {}", subCategoryId); @@ -533,8 +497,7 @@ public class ElementOperation implements IElementOperation { Vertex artifactV = iterator.next(); artifactV.remove(); ; - SubCategoryDefinition deleted = new SubCategoryDefinition( - subCategoryDataEither.left().value().getSubCategoryDataDefinition()); + SubCategoryDefinition deleted = new SubCategoryDefinition(subCategoryDataEither.left().value().getSubCategoryDataDefinition()); result = Either.left(deleted); return result; } finally { @@ -556,8 +519,7 @@ public class ElementOperation implements IElementOperation { result = Either.right(ActionStatus.GENERAL_ERROR); return result; } - Either<GroupingData, TitanOperationStatus> groupingDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId, GroupingData.class); + Either<GroupingData, TitanOperationStatus> groupingDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId, GroupingData.class); if (groupingDataEither.isRight()) { log.debug("Failed to retrieve grouping for id {}", groupingId); result = Either.right(ActionStatus.GENERAL_ERROR); @@ -573,8 +535,7 @@ public class ElementOperation implements IElementOperation { TitanGraph tGraph = graph.left().value(); - Iterable<TitanVertex> verticesArtifact = tGraph.query() - .has(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId).vertices(); + Iterable<TitanVertex> verticesArtifact = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId).vertices(); Iterator<TitanVertex> iterator = verticesArtifact.iterator(); if (!iterator.hasNext()) { log.debug("No grouping node for id {}", groupingId); @@ -584,8 +545,7 @@ public class ElementOperation implements IElementOperation { Vertex artifactV = iterator.next(); artifactV.remove(); ; - GroupingDefinition deleted = new GroupingDefinition( - groupingDataEither.left().value().getGroupingDataDefinition()); + GroupingDefinition deleted = new GroupingDefinition(groupingDataEither.left().value().getGroupingDataDefinition()); result = Either.left(deleted); return result; } finally { @@ -603,25 +563,21 @@ public class ElementOperation implements IElementOperation { Map<String, Object> properties = new HashMap<>(); properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName); try { - Either<List<CategoryData>, TitanOperationStatus> categoryEither = titanGenericDao.getByCriteria(nodeType, - properties, CategoryData.class); + Either<List<CategoryData>, TitanOperationStatus> categoryEither = titanGenericDao.getByCriteria(nodeType, properties, CategoryData.class); if (categoryEither.isRight() && categoryEither.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to get categories, nodeType {}, normalizedName {}, error {}", nodeType, - normalizedName, categoryEither.right().value()); + log.debug("Failed to get categories, nodeType {}, normalizedName {}, error {}", nodeType, normalizedName, categoryEither.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); } List<CategoryData> categoryList = (categoryEither.isLeft() ? categoryEither.left().value() : null); if (categoryList != null && categoryList.size() > 0) { log.debug("Found category for nodeType {} with normalizedName {}", nodeType, normalizedName); if (categoryList.size() > 1) { - log.debug("Found more than 1 unique categories for nodeType {} with normalizedName", nodeType, - normalizedName); + log.debug("Found more than 1 unique categories for nodeType {} with normalizedName", nodeType, normalizedName); return Either.right(ActionStatus.GENERAL_ERROR); } return Either.left(false); } else { - log.debug("Category for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, - normalizedName); + log.debug("Category for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, normalizedName); return Either.left(true); } } finally { @@ -630,21 +586,16 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<Boolean, ActionStatus> isSubCategoryUniqueForCategory(NodeTypeEnum nodeType, - String subCategoryNormName, String parentCategoryId) { + public Either<Boolean, ActionStatus> isSubCategoryUniqueForCategory(NodeTypeEnum nodeType, String subCategoryNormName, String parentCategoryId) { String subCategoryId = UniqueIdBuilder.buildSubCategoryUid(parentCategoryId, subCategoryNormName); try { - Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); - if (subCategoryDataEither.isRight() - && subCategoryDataEither.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to get sub-category with id {}, error {}", subCategoryId, - subCategoryDataEither.right().value()); + Either<SubCategoryData, TitanOperationStatus> subCategoryDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), subCategoryId, SubCategoryData.class); + if (subCategoryDataEither.isRight() && subCategoryDataEither.right().value() != TitanOperationStatus.NOT_FOUND) { + log.debug("Failed to get sub-category with id {}, error {}", subCategoryId, subCategoryDataEither.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); } - SubCategoryData subCategoryData = (subCategoryDataEither.isLeft() ? subCategoryDataEither.left().value() - : null); + SubCategoryData subCategoryData = (subCategoryDataEither.isLeft() ? subCategoryDataEither.left().value() : null); if (subCategoryData != null) { log.debug("Found sub-category with id {}", subCategoryId); return Either.left(false); @@ -658,16 +609,13 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<Boolean, ActionStatus> isGroupingUniqueForSubCategory(NodeTypeEnum nodeType, String groupingNormName, - String parentSubCategoryId) { + public Either<Boolean, ActionStatus> isGroupingUniqueForSubCategory(NodeTypeEnum nodeType, String groupingNormName, String parentSubCategoryId) { String groupingId = UniqueIdBuilder.buildGroupingUid(parentSubCategoryId, groupingNormName); try { - Either<GroupingData, TitanOperationStatus> groupingDataEither = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId, GroupingData.class); + Either<GroupingData, TitanOperationStatus> groupingDataEither = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), groupingId, GroupingData.class); if (groupingDataEither.isRight() && groupingDataEither.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to get grouping with id {}, error {}", groupingId, - groupingDataEither.right().value()); + log.debug("Failed to get grouping with id {}, error {}", groupingId, groupingDataEither.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); } GroupingData groupingData = (groupingDataEither.isLeft() ? groupingDataEither.left().value() : null); @@ -684,29 +632,23 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<SubCategoryDefinition, ActionStatus> getSubCategoryUniqueForType(NodeTypeEnum nodeType, - String normalizedName) { + public Either<SubCategoryDefinition, ActionStatus> getSubCategoryUniqueForType(NodeTypeEnum nodeType, String normalizedName) { Map<String, Object> properties = new HashMap<>(); properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName); try { - Either<List<SubCategoryData>, TitanOperationStatus> subCategoryEither = titanGenericDao - .getByCriteria(nodeType, properties, SubCategoryData.class); + Either<List<SubCategoryData>, TitanOperationStatus> subCategoryEither = titanGenericDao.getByCriteria(nodeType, properties, SubCategoryData.class); if (subCategoryEither.isRight() && subCategoryEither.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to get sub-categories, nodeType {}, normalizedName {}, error {}", nodeType, - normalizedName, subCategoryEither.right().value()); + log.debug("Failed to get sub-categories, nodeType {}, normalizedName {}, error {}", nodeType, normalizedName, subCategoryEither.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); } - List<SubCategoryData> subCategoryList = (subCategoryEither.isLeft() ? subCategoryEither.left().value() - : null); + List<SubCategoryData> subCategoryList = (subCategoryEither.isLeft() ? subCategoryEither.left().value() : null); if (subCategoryList != null && subCategoryList.size() > 0) { log.debug("Found sub-category for nodeType {} with normalizedName {}", nodeType, normalizedName); SubCategoryData subCategoryData = subCategoryList.get(0); - SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition( - subCategoryData.getSubCategoryDataDefinition()); + SubCategoryDefinition subCategoryDefinition = new SubCategoryDefinition(subCategoryData.getSubCategoryDataDefinition()); return Either.left(subCategoryDefinition); } else { - log.debug("Sub-category for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, - normalizedName); + log.debug("Sub-category for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, normalizedName); return Either.left(null); } } finally { @@ -715,28 +657,23 @@ public class ElementOperation implements IElementOperation { } @Override - public Either<GroupingDefinition, ActionStatus> getGroupingUniqueForType(NodeTypeEnum nodeType, - String groupingNormalizedName) { + public Either<GroupingDefinition, ActionStatus> getGroupingUniqueForType(NodeTypeEnum nodeType, String groupingNormalizedName) { Map<String, Object> properties = new HashMap<>(); properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), groupingNormalizedName); try { - Either<List<GroupingData>, TitanOperationStatus> groupingEither = titanGenericDao.getByCriteria(nodeType, - properties, GroupingData.class); + Either<List<GroupingData>, TitanOperationStatus> groupingEither = titanGenericDao.getByCriteria(nodeType, properties, GroupingData.class); if (groupingEither.isRight() && groupingEither.right().value() != TitanOperationStatus.NOT_FOUND) { - log.debug("Failed to get grouping, nodeType {}, normalizedName {}, error {}", nodeType, - groupingNormalizedName, groupingEither.right().value()); + log.debug("Failed to get grouping, nodeType {}, normalizedName {}, error {}", nodeType, groupingNormalizedName, groupingEither.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); } List<GroupingData> groupingList = (groupingEither.isLeft() ? groupingEither.left().value() : null); if (groupingList != null && groupingList.size() > 0) { log.debug("Found grouping for nodeType {} with normalizedName {}", nodeType, groupingNormalizedName); GroupingData groupingData = groupingList.get(0); - GroupingDefinition groupingDefinition = new GroupingDefinition( - groupingData.getGroupingDataDefinition()); + GroupingDefinition groupingDefinition = new GroupingDefinition(groupingData.getGroupingDataDefinition()); return Either.left(groupingDefinition); } else { - log.debug("Grouping for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, - groupingNormalizedName); + log.debug("Grouping for nodeType {} with normalizedName {} doesn't exist in graph", nodeType, groupingNormalizedName); return Either.left(null); } } finally { @@ -751,8 +688,7 @@ public class ElementOperation implements IElementOperation { @Override public Either<List<Tag>, ActionStatus> getAllTags() { try { - Either<List<TagData>, TitanOperationStatus> either = titanGenericDao.getAll(NodeTypeEnum.Tag, - TagData.class); + Either<List<TagData>, TitanOperationStatus> either = titanGenericDao.getAll(NodeTypeEnum.Tag, TagData.class); if (either.isRight()) { log.debug("Problem while get all tags. reason - {}", either.right().value()); return Either.right(ActionStatus.GENERAL_ERROR); @@ -766,8 +702,7 @@ public class ElementOperation implements IElementOperation { } @Override - public <T extends GraphNode> Either<org.openecomp.sdc.be.resources.data.CategoryData, StorageOperationStatus> getCategoryData( - String name, NodeTypeEnum type, Class<T> clazz) { + public <T extends GraphNode> Either<org.openecomp.sdc.be.resources.data.CategoryData, StorageOperationStatus> getCategoryData(String name, NodeTypeEnum type, Class<T> clazz) { if (name != null) { String categoryUid = null; if (type == NodeTypeEnum.ResourceCategory) { @@ -779,8 +714,7 @@ public class ElementOperation implements IElementOperation { } else { categoryUid = UniqueIdBuilder.buildServiceCategoryUid(name, type); } - Either<T, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(type), - categoryUid, clazz); + Either<T, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(type), categoryUid, clazz); if (either.isRight()) { TitanOperationStatus titanOperationStatus = either.right().value(); @@ -827,8 +761,7 @@ public class ElementOperation implements IElementOperation { public Either<List<ArtifactType>, ActionStatus> getAllArtifactTypes() { List<ArtifactType> artifactTypes = new ArrayList<ArtifactType>(); - List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration() - .getArtifactTypes(); + List<String> artifactTypesList = ConfigurationManager.getConfigurationManager().getConfiguration().getArtifactTypes(); for (String artifactType : artifactTypesList) { ArtifactType artifactT = new ArtifactType(); artifactT.setName(artifactType); @@ -841,12 +774,9 @@ public class ElementOperation implements IElementOperation { public Either<Map<String, Object>, ActionStatus> getAllDeploymentArtifactTypes() { Map<String, Object> artifactTypes = new HashMap<String, Object>(); - Map<String, DeploymentArtifactTypeConfig> artifactResourceTypes = ConfigurationManager.getConfigurationManager() - .getConfiguration().getResourceDeploymentArtifacts(); - Map<String, DeploymentArtifactTypeConfig> artifactServiceTypes = ConfigurationManager.getConfigurationManager() - .getConfiguration().getServiceDeploymentArtifacts(); - Map<String, DeploymentArtifactTypeConfig> artifactResourceInstanceTypes = ConfigurationManager - .getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts(); + Map<String, ArtifactTypeConfig> artifactResourceTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getResourceDeploymentArtifacts(); + Map<String, ArtifactTypeConfig> artifactServiceTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getServiceDeploymentArtifacts(); + Map<String, ArtifactTypeConfig> artifactResourceInstanceTypes = ConfigurationManager.getConfigurationManager().getConfiguration().getResourceInstanceDeploymentArtifacts(); artifactTypes.put("resourceDeploymentArtifacts", artifactResourceTypes); artifactTypes.put("serviceDeploymentArtifacts", artifactServiceTypes); @@ -858,8 +788,7 @@ public class ElementOperation implements IElementOperation { @Override public Either<Integer, ActionStatus> getDefaultHeatTimeout() { - return Either.left(ConfigurationManager.getConfigurationManager().getConfiguration() - .getDefaultHeatArtifactTimeoutMinutes()); + return Either.left(ConfigurationManager.getConfigurationManager().getConfiguration().getDefaultHeatArtifactTimeoutMinutes()); } @Override @@ -876,12 +805,11 @@ public class ElementOperation implements IElementOperation { } @Override - public <T extends GraphNode> Either<CategoryData, StorageOperationStatus> getNewCategoryData(String name, - NodeTypeEnum type, Class<T> clazz) { + public <T extends GraphNode> Either<CategoryData, StorageOperationStatus> getNewCategoryData(String name, NodeTypeEnum type, Class<T> clazz) { if (name != null) { String categoryUid = UniqueIdBuilder.buildServiceCategoryUid(name, type); Map props = new HashMap<>(); - props.put(GraphPropertiesDictionary.NAME.getProperty(), name); + props.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normalizeCategoryName4Uniqueness(name)); Either<List<T>, TitanOperationStatus> either = titanGenericDao.getByCriteria(type, props, clazz); if (either.isRight()) { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java index 35541e6d46..89f8f71e2a 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java @@ -25,6 +25,7 @@ import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.ICacheMangerOperation; import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; @@ -32,6 +33,7 @@ import org.openecomp.sdc.be.resources.data.ComponentMetadataData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import fj.data.Either; @@ -42,9 +44,9 @@ public class GraphLockOperation implements IGraphLockOperation { @javax.annotation.Resource private TitanGenericDao titanGenericDao; - - @javax.annotation.Resource - private ResourceOperation resourceOperation; + + @Autowired + ToscaOperationFacade toscaOperationFacade; @javax.annotation.Resource private ICacheMangerOperation cacheManagerOperation; @@ -56,9 +58,7 @@ public class GraphLockOperation implements IGraphLockOperation { /* * (non-Javadoc) * - * @see org.openecomp.sdc.be.model.operations.impl.IGraphLockOperation# - * lockResource(java.lang.String, - * org.openecomp.sdc.be.model.operations.api.IResourceOperation) + * @see org.openecomp.sdc.be.model.operations.impl.IGraphLockOperation# lockResource(java.lang.String, org.openecomp.sdc.be.model.operations.api.IResourceOperation) */ @Override public StorageOperationStatus lockComponent(String componentId, NodeTypeEnum nodeType) { @@ -70,14 +70,13 @@ public class GraphLockOperation implements IGraphLockOperation { // In this way we mark the component as updated one (and component // won't be fetched from cache since the component in cache has // different timestamp) - Either<ComponentMetadataData, TitanOperationStatus> updateTime = updateModificationTimeOfComponent( - componentId, nodeType); - if (updateTime.isRight()) { - TitanOperationStatus operationStatus = updateTime.right().value(); - if (operationStatus != TitanOperationStatus.OK) { - return DaoStatusConverter.convertTitanStatusToStorageStatus(operationStatus); - } - } +// Either<ComponentMetadataData, TitanOperationStatus> updateTime = updateModificationTimeOfComponent(componentId, nodeType); +// if (updateTime.isRight()) { +// TitanOperationStatus operationStatus = updateTime.right().value(); +// if (operationStatus != TitanOperationStatus.OK) { +// return DaoStatusConverter.convertTitanStatusToStorageStatus(operationStatus); +// } +// } lockElementStatus = titanGenericDao.lockElement(componentId, nodeType); @@ -97,24 +96,21 @@ public class GraphLockOperation implements IGraphLockOperation { * @param nodeType * @return */ - private Either<ComponentMetadataData, TitanOperationStatus> updateModificationTimeOfComponent(String componentId, - NodeTypeEnum nodeType) { + private Either<ComponentMetadataData, TitanOperationStatus> updateModificationTimeOfComponent(String componentId, NodeTypeEnum nodeType) { if (nodeType == NodeTypeEnum.Resource || nodeType == NodeTypeEnum.Service || nodeType == NodeTypeEnum.Product) { // We fetch all node since update only timestamp make problems since // there is default resource type (VFC) which changes component // resource type when we update only timestamp(ResourceMetadataData // contains default value VFC on resourceType field). - Either<ComponentMetadataData, TitanOperationStatus> findComp = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, ComponentMetadataData.class); + Either<ComponentMetadataData, TitanOperationStatus> findComp = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, ComponentMetadataData.class); if (findComp.isRight()) { return Either.right(findComp.right().value()); } ComponentMetadataData componentMetadataData = findComp.left().value(); componentMetadataData.getMetadataDataDefinition().setLastUpdateDate(System.currentTimeMillis()); - Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao - .updateNode(componentMetadataData, ComponentMetadataData.class); + Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentMetadataData, ComponentMetadataData.class); return updateNode; } return Either.right(TitanOperationStatus.OK); @@ -123,23 +119,20 @@ public class GraphLockOperation implements IGraphLockOperation { /* * (non-Javadoc) * - * @see org.openecomp.sdc.be.model.operations.impl.IGraphLockOperation# - * unlockResource(java.lang.String, - * org.openecomp.sdc.be.model.operations.api.IResourceOperation) + * @see org.openecomp.sdc.be.model.operations.impl.IGraphLockOperation# unlockResource(java.lang.String, org.openecomp.sdc.be.model.operations.api.IResourceOperation) */ @Override public StorageOperationStatus unlockComponent(String componentId, NodeTypeEnum nodeType) { - Either<Long, StorageOperationStatus> addComponentToCachePart1 = addComponentToCachePart1WithoutCommit( - componentId, nodeType); +// Either<Long, StorageOperationStatus> addComponentToCachePart1 = addComponentToCachePart1WithoutCommit(componentId, nodeType); TitanOperationStatus lockElementStatus = titanGenericDao.releaseElement(componentId, nodeType); - if (addComponentToCachePart1.isLeft()) { - Long lastUpdateDate = addComponentToCachePart1.left().value(); - addComponentToCachePart2(componentId, lastUpdateDate, nodeType); - } - +// if (addComponentToCachePart1.isLeft()) { +// Long lastUpdateDate = addComponentToCachePart1.left().value(); +// addComponentToCachePart2(componentId, lastUpdateDate, nodeType); +// } +// return DaoStatusConverter.convertTitanStatusToStorageStatus(lockElementStatus); } @@ -151,15 +144,14 @@ public class GraphLockOperation implements IGraphLockOperation { @Override public StorageOperationStatus unlockComponentByName(String name, String componentId, NodeTypeEnum nodeType) { - Either<Long, StorageOperationStatus> addComponentToCachePart1 = addComponentToCachePart1WithoutCommit( - componentId, nodeType); +// Either<Long, StorageOperationStatus> addComponentToCachePart1 = addComponentToCachePart1WithoutCommit(componentId, nodeType); TitanOperationStatus lockElementStatus = titanGenericDao.releaseElement(name, nodeType); - - if (addComponentToCachePart1.isLeft()) { - Long lastUpdateDate = addComponentToCachePart1.left().value(); - addComponentToCachePart2(componentId, lastUpdateDate, nodeType); - } +// +// if (addComponentToCachePart1.isLeft()) { +// Long lastUpdateDate = addComponentToCachePart1.left().value(); +// addComponentToCachePart2(componentId, lastUpdateDate, nodeType); +// } return DaoStatusConverter.convertTitanStatusToStorageStatus(lockElementStatus); } @@ -171,15 +163,12 @@ public class GraphLockOperation implements IGraphLockOperation { * @param nodeType * @return */ - private Either<Long, StorageOperationStatus> addComponentToCachePart1WithoutCommit(String componentId, - NodeTypeEnum nodeType) { + private Either<Long, StorageOperationStatus> addComponentToCachePart1WithoutCommit(String componentId, NodeTypeEnum nodeType) { if (componentId != null) { // In case of error, the componentId might be // empty. - if (nodeType == NodeTypeEnum.Resource || nodeType == NodeTypeEnum.Service - || nodeType == NodeTypeEnum.Product) { + if (nodeType == NodeTypeEnum.Resource || nodeType == NodeTypeEnum.Service || nodeType == NodeTypeEnum.Product) { Long lastUpdateDate = null; - Either<ComponentMetadataData, StorageOperationStatus> resResult = resourceOperation - .getComponentByLabelAndId(componentId, nodeType, ComponentMetadataData.class); + Either<ComponentMetadataData, StorageOperationStatus> resResult = toscaOperationFacade.getComponentMetadata(componentId); if (resResult.isLeft()) { ComponentMetadataData resourceMetadataData = resResult.left().value(); lastUpdateDate = resourceMetadataData.getMetadataDataDefinition().getLastUpdateDate(); @@ -201,12 +190,10 @@ public class GraphLockOperation implements IGraphLockOperation { * @param nodeType * @return */ - private Either<Long, StorageOperationStatus> addComponentToCachePart2(String componentId, Long lastUpdateDate, - NodeTypeEnum nodeType) { + private Either<Long, StorageOperationStatus> addComponentToCachePart2(String componentId, Long lastUpdateDate, NodeTypeEnum nodeType) { if (componentId != null) { // In case of error, the componentId might be // empty. - if (nodeType == NodeTypeEnum.Resource || nodeType == NodeTypeEnum.Service - || nodeType == NodeTypeEnum.Product) { + if (nodeType == NodeTypeEnum.Resource || nodeType == NodeTypeEnum.Service || nodeType == NodeTypeEnum.Product) { // add task to Q log.debug("Going to add component {} of type {} to cache", componentId, nodeType.name().toLowerCase()); cacheManagerOperation.updateComponentInCache(componentId, lastUpdateDate, nodeType); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java new file mode 100644 index 0000000000..bd57689700 --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java @@ -0,0 +1,1701 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.model.operations.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.tinkerpop.gremlin.structure.Direction; +import org.apache.tinkerpop.gremlin.structure.Edge; +import org.apache.tinkerpop.gremlin.structure.Vertex; +import org.apache.tinkerpop.gremlin.structure.VertexProperty; +import org.openecomp.sdc.be.config.BeEcompErrorManager; +import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity; +import org.openecomp.sdc.be.dao.graph.GraphElementFactory; +import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; +import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum; +import org.openecomp.sdc.be.dao.graph.datatype.GraphNode; +import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation; +import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels; + +import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; +import org.openecomp.sdc.be.dao.titan.TitanGenericDao; +import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; +import org.openecomp.sdc.be.dao.utils.Constants; +import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition; +import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; + +import org.openecomp.sdc.be.model.ArtifactDefinition; + +import org.openecomp.sdc.be.model.ComponentInstance; + +import org.openecomp.sdc.be.model.ComponentInstanceProperty; +import org.openecomp.sdc.be.model.DataTypeDefinition; +import org.openecomp.sdc.be.model.GroupDefinition; +import org.openecomp.sdc.be.model.GroupInstance; +import org.openecomp.sdc.be.model.GroupInstanceProperty; +import org.openecomp.sdc.be.model.GroupProperty; +import org.openecomp.sdc.be.model.GroupTypeDefinition; +import org.openecomp.sdc.be.model.IComponentInstanceConnectedElement; +import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; +import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation; +import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; + +import org.openecomp.sdc.be.model.tosca.ToscaPropertyType; +import org.openecomp.sdc.be.resources.data.ArtifactData; +import org.openecomp.sdc.be.resources.data.AttributeValueData; +import org.openecomp.sdc.be.resources.data.ComponentInstanceData; +import org.openecomp.sdc.be.resources.data.GroupData; +import org.openecomp.sdc.be.resources.data.GroupInstanceData; +import org.openecomp.sdc.be.resources.data.PropertyData; +import org.openecomp.sdc.be.resources.data.PropertyValueData; +import org.openecomp.sdc.be.resources.data.UniqueIdData; +import org.openecomp.sdc.common.datastructure.Wrapper; +import org.openecomp.sdc.common.util.ValidationUtils; +import org.openecomp.sdc.exception.ResponseFormat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import com.thinkaurelius.titan.core.TitanGraph; +import com.thinkaurelius.titan.core.TitanVertex; + +import fj.data.Either; + +@org.springframework.stereotype.Component("group-instance-operation") +public class GroupInstanceOperation extends AbstractOperation implements IGroupInstanceOperation { + + private static String ADDING_GROUP = "AddingGroupInstance"; + + private static Logger log = LoggerFactory.getLogger(GroupInstanceOperation.class.getName()); + + @Autowired + TitanGenericDao titanGenericDao; + @Autowired + GroupOperation groupOperation; + + @Autowired + PropertyOperation propertyOperation; + + @javax.annotation.Resource + private ApplicationDataTypeCache dataTypeCache; + + @Override + public Either<GroupInstance, StorageOperationStatus> createGroupInstance(String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName) { + Either<GroupInstance, StorageOperationStatus> result = null; + + if (!ValidationUtils.validateStringNotEmpty(groupInstance.getCustomizationUUID())) { + generateCustomizationUUID(groupInstance); + } + + Either<GroupInstance, TitanOperationStatus> addRes = addGroupInstanceToComponentInstance(componentInstId, isCreateLogicalName, groupInstance); + if (addRes.isRight()) { + TitanOperationStatus status = addRes.right().value(); + log.error("Failed to add resource instance {} to service {}. status is {}", groupInstance, componentInstId, status); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + return result; + } + + GroupInstance value = addRes.left().value(); + result = Either.left(value); + + return result; + + } + + @Override + public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName) { + Either<GroupInstance, StorageOperationStatus> result = null; + + if (!ValidationUtils.validateStringNotEmpty(groupInstance.getCustomizationUUID())) { + generateCustomizationUUID(groupInstance); + } + + Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent = addGroupInstanceToContainerComponent(ciVertex, componentInstId, isCreateLogicalName, groupInstance); + + if (addComponentInstanceToContainerComponent.isRight()) { + TitanOperationStatus status = addComponentInstanceToContainerComponent.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + } + TitanVertex giVertex = addComponentInstanceToContainerComponent.left().value(); + Map<String, Object> properties = titanGenericDao.getProperties(giVertex); + GroupInstanceData createdGroupInstanceData = GraphElementFactory.createElement(NodeTypeEnum.GroupInstance.getName(), GraphElementTypeEnum.Node, properties, GroupInstanceData.class); + + GroupInstance createdGroupInstance = new GroupInstance(createdGroupInstanceData.getGroupDataDefinition()); + createdGroupInstance.setGroupName(groupInstance.getGroupName()); + + createdGroupInstance.setArtifacts(groupInstance.getArtifacts()); + + result = Either.left(createdGroupInstance); + + return result; + + } + + @Override + public Either<GroupInstance, StorageOperationStatus> deleteGroupInstanceInstance(NodeTypeEnum containerNodeType, String containerComponentId, String groupInstUid) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Either<GroupInstance, StorageOperationStatus> updateGroupInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String parentId, NodeTypeEnum parentType) { + Either<List<GroupInstance>, StorageOperationStatus> result = null; + List<GroupInstance> groupInstanceRes = new ArrayList<>(); + + Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); + if (graph.isRight()) { + log.debug("Failed to work with graph {}", graph.right().value()); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); + } + TitanGraph tGraph = graph.left().value(); + @SuppressWarnings("unchecked") + Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentType), parentId).vertices(); + if (vertices == null || vertices.iterator() == null || false == vertices.iterator().hasNext()) { + log.debug("No nodes for type {} for id = {}", parentType, parentId); + result = Either.right(StorageOperationStatus.NOT_FOUND); + return result; + } + + Iterator<TitanVertex> iterator = vertices.iterator(); + Vertex vertex = iterator.next(); + + Map<String, Object> edgeProperties = null; + + Either<List<ImmutablePair<GroupInstanceData, GraphEdge>>, TitanOperationStatus> childrenByEdgeCriteria = titanGenericDao.getChildrenByEdgeCriteria(vertex, parentId, GraphEdgeLabels.GROUP_INST, NodeTypeEnum.GroupInstance, + GroupInstanceData.class, edgeProperties); + + if (childrenByEdgeCriteria.isRight()) { + TitanOperationStatus status = childrenByEdgeCriteria.right().value(); + log.debug("Failed to find group instance {} on graph", childrenByEdgeCriteria.right().value()); + + if (status == TitanOperationStatus.NOT_FOUND) { + result = Either.left(groupInstanceRes); + return result; + } + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + + } + + List<ImmutablePair<GroupInstanceData, GraphEdge>> list = childrenByEdgeCriteria.left().value(); + + for (ImmutablePair<GroupInstanceData, GraphEdge> pair : list) { + GroupInstanceData groupInstData = pair.getLeft(); + GroupInstance groupInstance = new GroupInstance(groupInstData.getGroupDataDefinition()); + String instOriginGroupId = groupInstance.getGroupUid(); + Either<GroupDefinition, TitanOperationStatus> groupRes = groupOperation.getGroupFromGraph(instOriginGroupId, false, true, false); + + if (groupRes.isRight()) { + TitanOperationStatus status = groupRes.right().value(); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + + } + GroupDefinition groupDefinition = groupRes.left().value(); + Either<Map<String, PropertyValueData>, TitanOperationStatus> groupInstancePropertyValuesRes = getAllGroupInstancePropertyValuesData(groupInstData); + if(groupInstancePropertyValuesRes.isRight()){ + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(groupInstancePropertyValuesRes.right().value())); + } + buildGroupInstanceFromGroup(groupInstance, groupDefinition, groupInstancePropertyValuesRes.left().value()); + /* + * Either<List<GroupProperty>, TitanOperationStatus> groupInsPropStatus = getGroupInstanceProperties(groupInstance, groupDefinition); if (groupInsPropStatus.isRight()) { + * + * return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(groupInsPropStatus.right().value())); } + */ + + Either<List<ImmutablePair<String, String>>, TitanOperationStatus> artifactsRes = getGroupArtifactsPairs(groupInstance.getUniqueId()); + if (artifactsRes.isRight()) { + TitanOperationStatus status = artifactsRes.right().value(); + if (status != TitanOperationStatus.OK) { + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + return result; + } + } else { + List<String> artifactsUid = new ArrayList<>(); + List<String> artifactsUUID = new ArrayList<>(); + + List<ImmutablePair<String, String>> list1 = artifactsRes.left().value(); + if (list != null) { + for (ImmutablePair<String, String> pair1 : list1) { + String uid = pair1.left; + String UUID = pair1.right; + artifactsUid.add(uid); + artifactsUUID.add(UUID); + } + groupInstance.setGroupInstanceArtifacts(artifactsUid); + groupInstance.setGroupInstanceArtifactsUuid(artifactsUUID); + } + } + + groupInstanceRes.add(groupInstance); + log.debug("GroupInstance {} was added to list ", groupInstance.getUniqueId()); + } + + result = Either.left(groupInstanceRes); + return result; + + } + + @Override + public Either<GroupInstance, TitanOperationStatus> getGroupInstanceById(String groupResourceId) { + // TODO Auto-generated method stub + return getGroupInstanceFromGraph(groupResourceId, false, false); + } + + @Override + public TitanOperationStatus deleteAllGroupInstances(String componentInstId) { + + return deleteAssociatedGroupInstances(componentInstId); + } + + private TitanOperationStatus deleteAssociatedGroupInstances(String resourceInstanceUid) { + final GraphEdgeLabels edgeConectingToRI = GraphEdgeLabels.GROUP_INST; + final NodeTypeEnum elementTypeToDelete = NodeTypeEnum.GroupInstance; + return deleteAssociatedRIElements(elementTypeToDelete, edgeConectingToRI, resourceInstanceUid, () -> GroupInstanceData.class); + } + + private <T extends GraphNode> TitanOperationStatus deleteAssociatedRIElements(NodeTypeEnum elementTypeToDelete, GraphEdgeLabels edgeConectingToRI, String resourceInstanceUid, Supplier<Class<T>> classGen) { + + Either<List<ImmutablePair<T, GraphEdge>>, TitanOperationStatus> elementsNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid, edgeConectingToRI, elementTypeToDelete, + classGen.get()); + + if (elementsNodesRes.isRight()) { + TitanOperationStatus status = elementsNodesRes.right().value(); + if (status != TitanOperationStatus.NOT_FOUND) { + BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to find the elements of resource instance " + resourceInstanceUid + ". status is " + status, ErrorSeverity.ERROR); + return status; + } + } else { + + List<ImmutablePair<T, GraphEdge>> relationshipNodes = elementsNodesRes.left().value(); + if (relationshipNodes != null) { + for (ImmutablePair<T, GraphEdge> immutablePair : relationshipNodes) { + T elementValueDataData = immutablePair.getKey(); + Either<T, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(elementValueDataData, classGen.get()); + if (deleteNode.isRight()) { + TitanOperationStatus status = deleteNode.right().value(); + BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to delete element value node " + elementValueDataData + ". status is " + status, ErrorSeverity.ERROR); + return status; + } + } + } + + } + + return TitanOperationStatus.OK; + } + + @Override + public Either<Integer, StorageOperationStatus> increaseAndGetGroupInstancePropertyCounter(String groupInstanceId) { + Either<Integer, StorageOperationStatus> result = null; + + Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph(); + if (graphResult.isRight()) { + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value())); + return result; + } + Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupInstance), groupInstanceId); + if (vertexService.isRight()) { + log.debug("failed to fetch vertex of resource instance for id = {}", groupInstanceId); + TitanOperationStatus status = vertexService.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(vertexService.right().value())); + return result; + } + Vertex vertex = vertexService.left().value(); + + VertexProperty<Object> vertexProperty = vertex.property(GraphPropertiesDictionary.PROPERTY_COUNTER.getProperty()); + Integer counter = 0; + if (vertexProperty.isPresent()) { + if (vertexProperty.value() != null) { + counter = (Integer) vertexProperty.value(); + } + } + + counter++; + vertex.property(GraphPropertiesDictionary.PROPERTY_COUNTER.getProperty(), counter); + + result = Either.left(counter); + return result; + + } + + @Override + public Either<Boolean, StorageOperationStatus> isGroupInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Either<ComponentInstance, StorageOperationStatus> getFullGroupInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty groupInstanceProperty, String groupInstanceId, Integer index, boolean inTransaction) { + /// #RULES SUPPORT + /// Ignore rules received from client till support + groupInstanceProperty.setRules(null); + /// + /// + + Either<ComponentInstanceProperty, StorageOperationStatus> result = null; + + try { + + Either<PropertyValueData, TitanOperationStatus> eitherStatus = addPropertyToGroupInstance(groupInstanceProperty, groupInstanceId, index); + + if (eitherStatus.isRight()) { + log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", groupInstanceProperty, groupInstanceId, eitherStatus.right().value().name()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + return result; + } else { + PropertyValueData propertyValueData = eitherStatus.left().value(); + + ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, groupInstanceProperty); + log.debug("The returned GroupInstanceProperty is {}", propertyValueResult); + + Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(groupInstanceProperty.getPath(), groupInstanceProperty.getUniqueId(), groupInstanceProperty.getDefaultValue()); + if (findDefaultValue.isRight()) { + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value())); + return result; + } + String defaultValue = findDefaultValue.left().value(); + propertyValueResult.setDefaultValue(defaultValue); + log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue); + + result = Either.left(propertyValueResult); + return result; + } + } + + finally { + if (false == inTransaction) { + if (result == null || result.isRight()) { + log.error("Going to execute rollback on graph."); + titanGenericDao.rollback(); + } else { + log.debug("Going to execute commit on graph."); + titanGenericDao.commit(); + } + } + } + + } + + @Override + public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInGroupInstance(ComponentInstanceProperty gropuInstanceProperty, String groupInstanceId, boolean inTransaction) { + // TODO Auto-generated method stub + // change Propety class + return null; + } + + @Override + public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId) { + // TODO Auto-generated method stub + return null; + } + + @Override + public StorageOperationStatus updateCustomizationUUID(String groupInstanceId) { + Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), groupInstanceId); + if (vertexByProperty.isRight()) { + log.debug("Failed to fetch component instance by id {} error {}", groupInstanceId, vertexByProperty.right().value()); + return DaoStatusConverter.convertTitanStatusToStorageStatus(vertexByProperty.right().value()); + } + UUID uuid = UUID.randomUUID(); + TitanVertex ciVertex = vertexByProperty.left().value(); + ciVertex.property(GraphPropertiesDictionary.CUSTOMIZATION_UUID.getProperty(), uuid.toString()); + + return StorageOperationStatus.OK; + } + + public void generateCustomizationUUID(GroupInstance groupInstance) { + UUID uuid = UUID.randomUUID(); + groupInstance.setCustomizationUUID(uuid.toString()); + } + + /** + * add property to resource instance + * + * @param resourceInstanceProperty + * @param resourceInstanceId + * @param index + * @return + */ + public Either<PropertyValueData, TitanOperationStatus> addPropertyToGroupInstance(ComponentInstanceProperty groupInstanceProperty, String groupInstanceId, Integer index) { + + Either<GroupInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupInstance), groupInstanceId, GroupInstanceData.class); + + if (findResInstanceRes.isRight()) { + TitanOperationStatus status = findResInstanceRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(status); + } + + String propertyId = groupInstanceProperty.getUniqueId(); + Either<PropertyData, TitanOperationStatus> findPropertyDefRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class); + + if (findPropertyDefRes.isRight()) { + TitanOperationStatus status = findPropertyDefRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(status); + } + + String valueUniqueUid = groupInstanceProperty.getValueUniqueUid(); + if (valueUniqueUid == null) { + + PropertyData propertyData = findPropertyDefRes.left().value(); + GroupInstanceData resourceInstanceData = findResInstanceRes.left().value(); + + ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = propertyOperation.findPropertyValue(groupInstanceId, propertyId); + if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) { + log.debug("The property {} already added to the resource instance {}", propertyId, groupInstanceId); + groupInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight()); + Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfGroupInstance(groupInstanceProperty, groupInstanceId); + if (updatePropertyOfResourceInstance.isRight()) { + BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR); + return Either.right(updatePropertyOfResourceInstance.right().value()); + } + return Either.left(updatePropertyOfResourceInstance.left().value()); + } + + if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { + log.debug("After finding property value of {} on componenet instance {}", propertyId, groupInstanceId); + return Either.right(isPropertyValueExists.getLeft()); + } + + String innerType = null; + + PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition(); + String propertyType = propDataDef.getType(); + String value = groupInstanceProperty.getValue(); + ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType); + + if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) { + SchemaDefinition def = propDataDef.getSchema(); + if (def == null) { + log.debug("Schema doesn't exists for property of type {}", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + PropertyDataDefinition propDef = def.getProperty(); + if (propDef == null) { + log.debug("Property in Schema Definition inside property of type {} doesn't exist", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + innerType = propDef.getType(); + } + + log.debug("Before validateAndUpdatePropertyValue"); + Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll(); + if (allDataTypes.isRight()) { + TitanOperationStatus status = allDataTypes.right().value(); + BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR); + return Either.right(status); + } + Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); + log.debug("After validateAndUpdatePropertyValue. isValid = {}", isValid); + + String newValue = value; + if (isValid.isRight()) { + Boolean res = isValid.right().value(); + if (res == false) { + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + } else { + Object object = isValid.left().value(); + if (object != null) { + newValue = object.toString(); + } + } + + String uniqueId = UniqueIdBuilder.buildResourceInstancePropertyValueUid(resourceInstanceData.getUniqueId(), index); + PropertyValueData propertyValueData = new PropertyValueData(); + propertyValueData.setUniqueId(uniqueId); + propertyValueData.setValue(newValue); + + log.debug("Before validateAndUpdateRules"); + ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, groupInstanceProperty.getRules(), innerType, allDataTypes.left().value(), false); + log.debug("After validateAndUpdateRules. pair = {}", pair); + if (pair.getRight() != null && pair.getRight() == false) { + BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), groupInstanceProperty.getName(), propertyType); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + propertyOperation.addRulesToNewPropertyValue(propertyValueData, groupInstanceProperty, groupInstanceId); + + log.debug("Before adding property value to graph {}", propertyValueData); + Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class); + log.debug("After adding property value to graph {}", propertyValueData); + + if (createNodeResult.isRight()) { + TitanOperationStatus operationStatus = createNodeResult.right().value(); + return Either.right(operationStatus); + } + propertyValueData = createNodeResult.left().value(); + + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null); + + if (createRelResult.isRight()) { + TitanOperationStatus operationStatus = createRelResult.right().value(); + log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus); + return Either.right(operationStatus); + } + + createRelResult = titanGenericDao.createRelation(resourceInstanceData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null); + + if (createRelResult.isRight()) { + TitanOperationStatus operationStatus = createRelResult.right().value(); + log.error("Failed to associate resource instance {} property value {} in graph. status is {}", groupInstanceId, uniqueId, operationStatus); + return Either.right(operationStatus); + } + + return Either.left(propertyValueData); + } else { + log.error("property value already exists."); + return Either.right(TitanOperationStatus.ALREADY_EXIST); + } + + } + + public Either<ComponentInstanceProperty, TitanOperationStatus> addPropertyToResourceInstance(ComponentInstanceProperty groupInstanceProperty, TitanVertex groupInstanceVertex, Integer index, String groupInstanceId) { + + String propertyId = groupInstanceProperty.getUniqueId(); + Either<PropertyData, TitanOperationStatus> findPropertyDefRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class); + + if (findPropertyDefRes.isRight()) { + TitanOperationStatus status = findPropertyDefRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(status); + } + + String valueUniqueUid = groupInstanceProperty.getValueUniqueUid(); + if (valueUniqueUid == null) { + + PropertyData propertyData = findPropertyDefRes.left().value(); + + ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = propertyOperation.findPropertyValue(groupInstanceId, propertyId); + if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) { + log.trace("The property {} already added to the resource instance {}", propertyId, groupInstanceId); + groupInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight()); + Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfGroupInstance(groupInstanceProperty, groupInstanceId); + if (updatePropertyOfResourceInstance.isRight()) { + BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR); + return Either.right(updatePropertyOfResourceInstance.right().value()); + } + return Either.right(TitanOperationStatus.OK); + } + + if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { + log.trace("After finding property value of {} on componenet instance {}", propertyId, groupInstanceId); + return Either.right(isPropertyValueExists.getLeft()); + } + + String innerType = null; + + PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition(); + String propertyType = propDataDef.getType(); + String value = groupInstanceProperty.getValue(); + ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType); + + if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) { + SchemaDefinition def = propDataDef.getSchema(); + if (def == null) { + log.debug("Schema doesn't exists for property of type {}", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + PropertyDataDefinition propDef = def.getProperty(); + if (propDef == null) { + log.debug("Property in Schema Definition inside property of type {} doesn't exist", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + innerType = propDef.getType(); + } + + log.trace("Before validateAndUpdatePropertyValue"); + Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll(); + if (allDataTypes.isRight()) { + TitanOperationStatus status = allDataTypes.right().value(); + BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR); + return Either.right(status); + } + Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); + log.trace("After validateAndUpdatePropertyValue. isValid = {}", isValid); + + String newValue = value; + if (isValid.isRight()) { + Boolean res = isValid.right().value(); + if (res == false) { + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + } else { + Object object = isValid.left().value(); + if (object != null) { + newValue = object.toString(); + } + } + + String uniqueId = UniqueIdBuilder.buildResourceInstancePropertyValueUid(groupInstanceId, index); + PropertyValueData propertyValueData = new PropertyValueData(); + propertyValueData.setUniqueId(uniqueId); + propertyValueData.setValue(newValue); + + log.trace("Before validateAndUpdateRules"); + ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, groupInstanceProperty.getRules(), innerType, allDataTypes.left().value(), false); + log.debug("After validateAndUpdateRules. pair = {} ", pair); + if (pair.getRight() != null && pair.getRight() == false) { + BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), groupInstanceProperty.getName(), propertyType); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + propertyOperation.addRulesToNewPropertyValue(propertyValueData, groupInstanceProperty, groupInstanceId); + + log.trace("Before adding property value to graph {}", propertyValueData); + Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class); + log.trace("After adding property value to graph {}", propertyValueData); + + if (createNodeResult.isRight()) { + TitanOperationStatus operationStatus = createNodeResult.right().value(); + return Either.right(operationStatus); + } + propertyValueData = createNodeResult.left().value(); + + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null); + + if (createRelResult.isRight()) { + TitanOperationStatus operationStatus = createRelResult.right().value(); + log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus); + return Either.right(operationStatus); + } + + TitanOperationStatus edgeResult = titanGenericDao.createEdge(groupInstanceVertex, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null); + + if (edgeResult != TitanOperationStatus.OK) { + log.error("Failed to associate resource instance {} property value {} in graph. status is {}", groupInstanceId, uniqueId, edgeResult); + return Either.right(edgeResult); + } + + ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, groupInstanceProperty); + log.debug("The returned ResourceInstanceProperty is {} ", propertyValueResult); + + return Either.left(propertyValueResult); + } else { + log.debug("property value already exists."); + return Either.right(TitanOperationStatus.ALREADY_EXIST); + } + + } + + public Either<GroupInstance, TitanOperationStatus> addGroupInstanceToComponentInstance(String componentInstanceId, boolean isCreateLogicaName, GroupInstance groupInstance) { + log.debug("Going to create group instance {} in componentInstance {}", groupInstance, componentInstanceId); + + Either<TitanVertex, TitanOperationStatus> metadataVertex = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), componentInstanceId); + if (metadataVertex.isRight()) { + TitanOperationStatus status = metadataVertex.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(status); + } + Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent = addGroupInstanceToContainerComponent(metadataVertex.left().value(), componentInstanceId, isCreateLogicaName, groupInstance); + + if (addComponentInstanceToContainerComponent.isRight()) { + TitanOperationStatus status = addComponentInstanceToContainerComponent.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return Either.right(status); + } + TitanVertex ciVertex = addComponentInstanceToContainerComponent.left().value(); + Map<String, Object> properties = titanGenericDao.getProperties(ciVertex); + GroupInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.GroupInstance.getName(), GraphElementTypeEnum.Node, properties, GroupInstanceData.class); + + GroupInstance createdResourceInstance = new GroupInstance(createdComponentInstance.getGroupDataDefinition()); + + return Either.left(createdResourceInstance); + + } + + /** + * + * @param containerComponentId + * @param containerNodeType + * @param instanceNumber + * @param isCreateLogicaName + * @param componentInstance + * @param compInstNodeType + * @param metadataVertex + * @return + */ + public Either<TitanVertex, TitanOperationStatus> addGroupInstanceToContainerComponent(TitanVertex ciVertex, String componentInstanceId, boolean isCreateLogicaName, GroupInstance groupInstance) { + TitanOperationStatus status = null; + log.debug("Going to create group instance {} in component instance {}", groupInstance, componentInstanceId); + String instOriginGroupId = groupInstance.getGroupUid(); + String logicalName = groupInstance.getName(); + if (isCreateLogicaName){ + String instanceName = (String) titanGenericDao.getProperty(ciVertex, GraphPropertiesDictionary.NORMALIZED_NAME.getProperty()); + logicalName = createGroupInstLogicalName(instanceName, groupInstance.getGroupName()); + } + + GroupInstanceData groupInstanceData = buildGroupInstanceData(groupInstance, componentInstanceId, logicalName); + Either<TitanVertex, TitanOperationStatus> originVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), instOriginGroupId); + if (originVertexEither.isRight()) { + log.debug("Failed to fetch vertex of origin resource for id {} error {}", instOriginGroupId, originVertexEither.right().value()); + return Either.right(originVertexEither.right().value()); + } + TitanVertex originVertex = originVertexEither.left().value(); + + // String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty()); + String groupType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.TYPE.getProperty()); + // detectOriginType(originType, groupInstanceData, resourceType); + + log.trace("Before adding component instance to graph. componentInstanceData = {}", groupInstanceData); + // groupInstanceData.getGroupDataDefinition().setGroupUid(groupType); + + Either<TitanVertex, TitanOperationStatus> createGIResult = titanGenericDao.createNode(groupInstanceData); + + log.debug("After adding component instance to graph. status is = {}", createGIResult); + + if (createGIResult.isRight()) { + status = createGIResult.right().value(); + BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); + log.debug("Failed to create group instance node in graph. status is {}", status); + return Either.right(status); + } + TitanVertex createdGroupInstanceVertex = createGIResult.left().value(); + TitanOperationStatus associateContainerRes = associateComponentInstanceToGroupInstance(ciVertex, createdGroupInstanceVertex, logicalName); + + String componentInstanceUniqueId = groupInstanceData.getUniqueId(); + if (associateContainerRes != TitanOperationStatus.OK) { + BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); + log.debug("Failed to associate container component {} to component instance {}. Status is {}", componentInstanceId, componentInstanceUniqueId, associateContainerRes); + return Either.right(associateContainerRes); + } + // String originId = (String) titanGenericDao.getProperty(createdGroupInstanceVertex, GraphPropertiesDictionary.TYPE.getProperty()); + + TitanOperationStatus associateToInstOriginComponent = associateToInstOriginGroup(createdGroupInstanceVertex, originVertex, instOriginGroupId); + if (associateToInstOriginComponent != TitanOperationStatus.OK) { + BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance"); + log.debug("Failed to associate component instance {} to its origin component {}. Status is {}", componentInstanceUniqueId, groupInstanceData.getGroupDataDefinition().getGroupUid(), associateToInstOriginComponent); + return Either.right(associateToInstOriginComponent); + } + + // Capability instance with property values implementation + + if (status == null) { + // ComponentInstance createdResourceInstance = new + // ComponentInstance(createdComponentInstance.getComponentInstDataDefinition()); + // + // String icon = (String) titanGenericDao.getProperty(originVertex, + // GraphPropertiesDictionary.ICON.getProperty()); + // createdResourceInstance.setIcon(icon); + return Either.left(createdGroupInstanceVertex); + } + return Either.right(status); + } + + private GroupInstanceData buildGroupInstanceData(GroupInstance groupInstance, String componentInstanceId, String logicalName) { + String ciOriginComponentUid = groupInstance.getGroupUid(); + + GroupInstanceDataDefinition dataDefinition = new GroupInstanceDataDefinition(groupInstance); + + Long creationDate = groupInstance.getCreationTime(); + if (creationDate == null) { + creationDate = System.currentTimeMillis(); + } + dataDefinition.setCreationTime(creationDate); + dataDefinition.setModificationTime(creationDate); + // dataDefinition.setResourceUid(resourceUid); + // String replacmentlogicalName = logicalName.replaceAll(" ", + // "_").toLowerCase(); + dataDefinition.setName(logicalName); + if (dataDefinition.getNormalizedName() == null) + dataDefinition.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(logicalName)); + dataDefinition.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentInstanceId, ciOriginComponentUid, dataDefinition.getNormalizedName())); + + GroupInstanceData resourceInstanceData = new GroupInstanceData(dataDefinition); + + return resourceInstanceData; + } + + @Override + public String createGroupInstLogicalName(String instanceName, String groupName) { + + String logicalName = buildGroupInstanceLogicalName(instanceName, groupName); + + return logicalName; + } + + private String buildGroupInstanceLogicalName(String instanceName, String groupName) { + return instanceName + ".." + groupName; + } + + /** + * Make a relation between service to resource instance. + * + * @param containerCompIdData + * @param componentInstanceData + * @param logicalName + * @return + */ + private Either<GraphRelation, TitanOperationStatus> associateComponentInstanceToGroupInstance(UniqueIdData compInstIdData, GroupInstanceData groupInstanceData, String logicalName) { + Map<String, Object> properties = new HashMap<String, Object>(); + + properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(compInstIdData, groupInstanceData, GraphEdgeLabels.GROUP_INST, properties); + + log.debug("After associating container component {} to resource instance {} with logical name {}. Status is {}", compInstIdData.getUniqueId(), groupInstanceData.getUniqueId(), logicalName, createRelation); + + return createRelation; + } + + private TitanOperationStatus associateComponentInstanceToGroupInstance(TitanVertex componentInstVertex, TitanVertex groupInstanceVertex, String logicalName) { + Map<String, Object> properties = new HashMap<String, Object>(); + + properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName); + TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstVertex, groupInstanceVertex, GraphEdgeLabels.GROUP_INST, properties); + + return createRelation; + } + + private Either<GraphRelation, TitanOperationStatus> associateToInstOriginGroup(GroupInstanceData groupInstanceData, NodeTypeEnum compInstNodeType) { + + UniqueIdData groupIdData = new UniqueIdData(compInstNodeType, groupInstanceData.getGroupDataDefinition().getGroupUid()); + + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupInstanceData, groupIdData, GraphEdgeLabels.INSTANCE_OF, null); + + log.debug("After associating group instance {} to group {}. status is {}", groupInstanceData.getUniqueId(), groupInstanceData.getGroupDataDefinition().getGroupUid(), createRelation); + + return createRelation; + } + + private TitanOperationStatus associateToInstOriginGroup(TitanVertex groupInstanceVertex, TitanVertex originVertex, String originId) { + + TitanOperationStatus createRelation = titanGenericDao.createEdge(groupInstanceVertex, originVertex, GraphEdgeLabels.INSTANCE_OF, null); + + log.debug("After associating group instance {} to group {}. status is {}", groupInstanceVertex, originId, createRelation); + + return createRelation; + } + + public Either<List<GroupProperty>, TitanOperationStatus> getGroupInstanceProperties(GroupInstance groupInstance, GroupDefinition groupDefinition) { + + // 1. Go over each instance + // 1.1 get all properties of from the parents of the instance + // 1.2 get all updated properties + // 1.3 find all instances included in the parent of this instance and + // run this method on them. + String groupInstanceId = groupInstance.getUniqueId(); + if (log.isDebugEnabled()) + log.debug("Going to update properties of group instance {}", groupInstanceId); + String groupUid = groupInstance.getGroupUid(); + List<GroupProperty> properties = groupDefinition.convertToGroupProperties(); + + if (log.isDebugEnabled()) + log.debug("After getting properties of group {} . Number of properties is {}", groupUid, (properties == null ? 0 : properties.size())); + List<GroupProperty> resourceInstancePropertyList = new ArrayList<>(); + if (properties != null && false == properties.isEmpty()) { + + // TODO: WE MAY HAVE INDIRECT PROPERTY VALUE ALSO IN CASE NO + // PROPERTY ON THIS COMPONENT + + // String resourceInstanceUid = resourceInstance.getUniqueId(); + + for (GroupProperty propertyDefinition : properties) { + + String defaultValue = propertyDefinition.getDefaultValue(); + String value = defaultValue; + String valueUid = null; + + // String propertyId = propertyDefinition.getUniqueId(); + + GroupProperty resourceInstanceProperty = new GroupProperty(propertyDefinition, value, valueUid); + + // resourceInstanceProperty.setPath(cloneList(path)); + + // TODO: currently ignore constraints since they are not inuse + // and cause to error in convertion to object. + resourceInstanceProperty.setConstraints(null); + + resourceInstancePropertyList.add(resourceInstanceProperty); + + } + + } + + return Either.left(resourceInstancePropertyList); + } + + /** + * update value of attribute on resource instance + * + * @param resourceInstanceProerty + * @param resourceInstanceId + * @return + */ + public Either<PropertyValueData, TitanOperationStatus> updatePropertyOfGroupInstance(ComponentInstanceProperty groupInstanceProerty, String groupInstanceId) { + + Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>(); + UpdateDataContainer<PropertyData, PropertyValueData> updateDataContainer = new UpdateDataContainer<>(GraphEdgeLabels.PROPERTY_IMPL, (() -> PropertyData.class), (() -> PropertyValueData.class), NodeTypeEnum.Property, + NodeTypeEnum.PropertyValue); + + preUpdateElementOfResourceInstanceValidations(updateDataContainer, groupInstanceProerty, groupInstanceId, errorWrapper); + if (!errorWrapper.isEmpty()) { + return Either.right(errorWrapper.getInnerElement()); + } + + else { + String value = groupInstanceProerty.getValue(); + // Specific Validation Logic + PropertyData propertyData = updateDataContainer.getDataWrapper().getInnerElement(); + + String innerType = null; + + PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition(); + String propertyType = propDataDef.getType(); + ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType); + log.debug("The type of the property {} is {}", propertyData.getUniqueId(), propertyType); + + if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) { + SchemaDefinition def = propDataDef.getSchema(); + if (def == null) { + log.debug("Schema doesn't exists for property of type {}", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + PropertyDataDefinition propDef = def.getProperty(); + if (propDef == null) { + log.debug("Property in Schema Definition inside property of type {} doesn't exist", type); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + innerType = propDef.getType(); + } + // Specific Update Logic + Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll(); + if (allDataTypes.isRight()) { + TitanOperationStatus status = allDataTypes.right().value(); + BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR); + return Either.right(status); + } + Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); + + String newValue = value; + if (isValid.isRight()) { + Boolean res = isValid.right().value(); + if (res == false) { + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + } else { + Object object = isValid.left().value(); + if (object != null) { + newValue = object.toString(); + } + } + PropertyValueData propertyValueData = updateDataContainer.getValueDataWrapper().getInnerElement(); + log.debug("Going to update property value from {} to {}", propertyValueData.getValue(), newValue); + propertyValueData.setValue(newValue); + + ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, groupInstanceProerty.getRules(), innerType, allDataTypes.left().value(), true); + if (pair.getRight() != null && pair.getRight() == false) { + BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), groupInstanceProerty.getName(), propertyType); + return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); + } + propertyOperation.updateRulesInPropertyValue(propertyValueData, groupInstanceProerty, groupInstanceId); + + Either<PropertyValueData, TitanOperationStatus> updateRes = titanGenericDao.updateNode(propertyValueData, PropertyValueData.class); + if (updateRes.isRight()) { + TitanOperationStatus status = updateRes.right().value(); + return Either.right(status); + } else { + return Either.left(updateRes.left().value()); + } + } + + } + + private static final class UpdateDataContainer<SomeData, SomeValueData> { + final Wrapper<SomeValueData> valueDataWrapper; + final Wrapper<SomeData> dataWrapper; + final GraphEdgeLabels graphEdge; + final Supplier<Class<SomeData>> someDataClassGen; + final Supplier<Class<SomeValueData>> someValueDataClassGen; + final NodeTypeEnum nodeType; + final NodeTypeEnum nodeTypeValue; + + private UpdateDataContainer(GraphEdgeLabels graphEdge, Supplier<Class<SomeData>> someDataClassGen, Supplier<Class<SomeValueData>> someValueDataClassGen, NodeTypeEnum nodeType, NodeTypeEnum nodeTypeValue) { + super(); + this.valueDataWrapper = new Wrapper<>(); + this.dataWrapper = new Wrapper<>(); + this.graphEdge = graphEdge; + this.someDataClassGen = someDataClassGen; + this.someValueDataClassGen = someValueDataClassGen; + this.nodeType = nodeType; + this.nodeTypeValue = nodeTypeValue; + } + + public Wrapper<SomeValueData> getValueDataWrapper() { + return valueDataWrapper; + } + + public Wrapper<SomeData> getDataWrapper() { + return dataWrapper; + } + + public GraphEdgeLabels getGraphEdge() { + return graphEdge; + } + + public Supplier<Class<SomeData>> getSomeDataClassGen() { + return someDataClassGen; + } + + public Supplier<Class<SomeValueData>> getSomeValueDataClassGen() { + return someValueDataClassGen; + } + + public NodeTypeEnum getNodeType() { + return nodeType; + } + + public NodeTypeEnum getNodeTypeValue() { + return nodeTypeValue; + } + } + + private <SomeData extends GraphNode, SomeValueData extends GraphNode> void preUpdateElementOfResourceInstanceValidations(UpdateDataContainer<SomeData, SomeValueData> updateDataContainer, IComponentInstanceConnectedElement resourceInstanceProerty, + String resourceInstanceId, Wrapper<TitanOperationStatus> errorWrapper) { + + if (errorWrapper.isEmpty()) { + // Verify VFC instance Exist + validateGIExist(resourceInstanceId, errorWrapper); + } + + if (errorWrapper.isEmpty()) { + // Example: Verify Property connected to VFC exist + validateElementConnectedToComponentExist(updateDataContainer, resourceInstanceProerty, errorWrapper); + } + + if (errorWrapper.isEmpty()) { + // Example: Verify PropertyValue connected to VFC Instance exist + validateElementConnectedToComponentInstanceExist(updateDataContainer, resourceInstanceProerty, errorWrapper); + } + + if (errorWrapper.isEmpty()) { + // Example: Verify PropertyValue connected Property + validateElementConnectedToInstance(updateDataContainer, resourceInstanceProerty, errorWrapper); + } + } + + private <SomeData extends GraphNode, SomeValueData extends GraphNode> void validateElementConnectedToInstance(UpdateDataContainer<SomeData, SomeValueData> updateDataContainer, IComponentInstanceConnectedElement resourceInstanceProerty, + Wrapper<TitanOperationStatus> errorWrapper) { + Either<ImmutablePair<SomeData, GraphEdge>, TitanOperationStatus> child = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(updateDataContainer.getNodeTypeValue()), resourceInstanceProerty.getValueUniqueUid(), + updateDataContainer.getGraphEdge(), updateDataContainer.getNodeType(), updateDataContainer.getSomeDataClassGen().get()); + + if (child.isRight()) { + TitanOperationStatus status = child.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + errorWrapper.setInnerElement(status); + + } else { + updateDataContainer.getDataWrapper().setInnerElement(child.left().value().left); + } + } + + private <SomeValueData extends GraphNode, SomeData extends GraphNode> void validateElementConnectedToComponentInstanceExist(UpdateDataContainer<SomeData, SomeValueData> updateDataContainer, + IComponentInstanceConnectedElement resourceInstanceProerty, Wrapper<TitanOperationStatus> errorWrapper) { + String valueUniqueUid = resourceInstanceProerty.getValueUniqueUid(); + if (valueUniqueUid == null) { + errorWrapper.setInnerElement(TitanOperationStatus.INVALID_ID); + } else { + Either<SomeValueData, TitanOperationStatus> findPropertyValueRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(updateDataContainer.getNodeTypeValue()), valueUniqueUid, updateDataContainer.getSomeValueDataClassGen().get()); + if (findPropertyValueRes.isRight()) { + TitanOperationStatus status = findPropertyValueRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + errorWrapper.setInnerElement(status); + } else { + updateDataContainer.getValueDataWrapper().setInnerElement(findPropertyValueRes.left().value()); + } + } + } + + private <SomeData extends GraphNode, SomeValueData extends GraphNode> void validateElementConnectedToComponentExist(UpdateDataContainer<SomeData, SomeValueData> updateDataContainer, + IComponentInstanceConnectedElement resourceInstanceElementConnected, Wrapper<TitanOperationStatus> errorWrapper) { + String uniqueId = resourceInstanceElementConnected.getUniqueId(); + Either<SomeData, TitanOperationStatus> findPropertyDefRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(updateDataContainer.getNodeType()), uniqueId, updateDataContainer.getSomeDataClassGen().get()); + + if (findPropertyDefRes.isRight()) { + TitanOperationStatus status = findPropertyDefRes.right().value(); + errorWrapper.setInnerElement(status); + } + } + + private void validateGIExist(String resourceInstanceId, Wrapper<TitanOperationStatus> errorWrapper) { + validateGIExist(resourceInstanceId, null, errorWrapper); + } + + private void validateGIExist(String resourceInstanceId, Wrapper<GroupInstanceData> compInsDataWrapper, Wrapper<TitanOperationStatus> errorWrapper) { + validateElementExistInGraph(resourceInstanceId, NodeTypeEnum.GroupInstance, () -> GroupInstanceData.class, compInsDataWrapper, errorWrapper); + } + + public <ElementData extends GraphNode> void validateElementExistInGraph(String elementUniqueId, NodeTypeEnum elementNodeType, Supplier<Class<ElementData>> elementClassGen, Wrapper<ElementData> elementDataWrapper, + Wrapper<TitanOperationStatus> errorWrapper) { + Either<ElementData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(elementNodeType), elementUniqueId, elementClassGen.get()); + if (findResInstanceRes.isRight()) { + TitanOperationStatus status = findResInstanceRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + errorWrapper.setInnerElement(status); + } else { + if (elementDataWrapper != null) { + elementDataWrapper.setInnerElement(findResInstanceRes.left().value()); + } + } + } + + /** + * Associate artifacts to a given group + * + * @param groupId + * @param artifactsId + * @param inTransaction + * @return + */ + public Either<GroupInstance, StorageOperationStatus> associateArtifactsToGroupInstance(String groupId, List<String> artifactsId) { + + Either<GroupInstance, StorageOperationStatus> result = null; + + Either<GroupInstance, TitanOperationStatus> titanRes = this.associateArtifactsToGroupInstanceOnGraph(groupId, artifactsId); + + if (titanRes.isRight()) { + StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value()); + result = Either.right(status); + } + + result = Either.left(titanRes.left().value()); + return result; + + } + + public Either<GroupInstance, TitanOperationStatus> associateArtifactsToGroupInstanceOnGraph(String groupInstanceId, List<String> artifactsId) { + + if (artifactsId == null || artifactsId.isEmpty()) { + return Either.right(TitanOperationStatus.OK); + } + + for (String artifactId : artifactsId) { + Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class); + if (findArtifactRes.isRight()) { + TitanOperationStatus status = findArtifactRes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + String description = "Failed to associate group " + groupInstanceId + " to artifact " + artifactId + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); + return Either.right(status); + } + + Map<String, Object> props = new HashMap<String, Object>(); + props.put(GraphPropertiesDictionary.NAME.getProperty(), findArtifactRes.left().value().getLabel()); + + GraphNode groupData = new UniqueIdData(NodeTypeEnum.GroupInstance, groupInstanceId); + Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = titanGenericDao.createRelation(groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props); + + if (addArtifactsRefResult.isRight()) { + TitanOperationStatus status = addArtifactsRefResult.right().value(); + String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); + return Either.right(status); + } + } + + Either<GroupInstance, TitanOperationStatus> groupFromGraph = this.getGroupInstanceFromGraph(groupInstanceId, true, false); + + return groupFromGraph; + } + + public Either<GroupInstance, TitanOperationStatus> getGroupInstanceFromGraph(String uniqueId, boolean skipProperties, boolean skipArtifacts) { + + Either<GroupInstance, TitanOperationStatus> result = null; + + Either<GroupInstanceData, TitanOperationStatus> groupInstRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupInstance), uniqueId, GroupInstanceData.class); + if (groupInstRes.isRight()) { + TitanOperationStatus status = groupInstRes.right().value(); + log.debug("Failed to retrieve group {} from graph. Status is {}", uniqueId, status); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Group", uniqueId, String.valueOf(status)); + result = Either.right(status); + return result; + } + + GroupInstanceData groupInstData = groupInstRes.left().value(); + + GroupInstance groupInstance = new GroupInstance(groupInstData.getGroupDataDefinition()); + String instOriginGroupId = groupInstance.getGroupUid(); + Either<GroupDefinition, TitanOperationStatus> groupRes = groupOperation.getGroupFromGraph(instOriginGroupId, false, true, false); + + if (groupRes.isRight()) { + TitanOperationStatus status = groupRes.right().value(); + result = Either.right(status); + + } + GroupDefinition groupDefinition = groupRes.left().value(); + Either<Map<String, PropertyValueData>, TitanOperationStatus> groupInstancePropertyValuesRes = getAllGroupInstancePropertyValuesData(groupInstData); + if(groupInstancePropertyValuesRes.isRight()){ + result = Either.right(groupInstancePropertyValuesRes.right().value()); + } + buildGroupInstanceFromGroup(groupInstance, groupDefinition, groupInstancePropertyValuesRes.left().value()); + + /* + * if (false == skipProperties) { Either<List<GroupProperty>, TitanOperationStatus> propertiesRes = getGroupProperties(uniqueId); if (propertiesRes.isRight()) { TitanOperationStatus status = propertiesRes.right().value(); if (status != + * TitanOperationStatus.OK) { result = Either.right(status); return result; } } else { List<GroupProperty> properties = propertiesRes.left().value(); groupDefinition.setProperties(properties); } } + */ + + if (false == skipArtifacts) { + Either<List<ImmutablePair<String, String>>, TitanOperationStatus> artifactsRes = getGroupArtifactsPairs(uniqueId); + if (artifactsRes.isRight()) { + TitanOperationStatus status = artifactsRes.right().value(); + if (status != TitanOperationStatus.OK) { + result = Either.right(status); + return result; + } + } else { + List<String> artifactsUid = new ArrayList<>(); + List<String> artifactsUUID = new ArrayList<>(); + + List<ImmutablePair<String, String>> list = artifactsRes.left().value(); + if (list != null) { + for (ImmutablePair<String, String> pair : list) { + String uid = pair.left; + String UUID = pair.right; + artifactsUid.add(uid); + artifactsUUID.add(UUID); + } + groupInstance.setGroupInstanceArtifacts(artifactsUid); + groupInstance.setGroupInstanceArtifactsUuid(artifactsUUID); + } + } + } + result = Either.left(groupInstance); + + return result; + + } + + private void buildGroupInstanceFromGroup(GroupInstance groupInstance, GroupDefinition groupDefinition, Map<String, PropertyValueData> groupInstancePropertyValues) { + + groupInstance.setGroupName(groupDefinition.getName()); + groupInstance.setInvariantUUID(groupDefinition.getInvariantUUID()); + groupInstance.setDescription(groupDefinition.getDescription()); + groupInstance.setVersion(groupDefinition.getVersion()); + groupInstance.setArtifacts(groupDefinition.getArtifacts()); + groupInstance.setArtifactsUuid(groupDefinition.getArtifactsUuid()); + groupInstance.setType(groupDefinition.getType()); + groupInstance.setGroupUUID(groupDefinition.getGroupUUID()); + + List<GroupInstanceProperty> groupInstanceProperties = groupDefinition.convertToGroupProperties() + //converts List of GroupProperties to List of GroupInstanceProperties and updates it with group instance property data + .stream().map(p->getUpdatedConvertedProperty(p, groupInstancePropertyValues)).collect(Collectors.toList()); + groupInstance.convertFromGroupInstancesProperties(groupInstanceProperties); +} + + private GroupInstanceProperty getUpdatedConvertedProperty(GroupProperty groupProperty, Map<String, PropertyValueData> groupInstancePropertyValues){ + + GroupInstanceProperty updatedProperty = new GroupInstanceProperty(groupProperty, groupProperty.getValue()); + if(!MapUtils.isEmpty(groupInstancePropertyValues) && groupInstancePropertyValues.containsKey(groupProperty.getName())){ + PropertyValueData groupInstancePropertyValue = groupInstancePropertyValues.get(groupProperty.getName()); + updatedProperty.setValue(groupInstancePropertyValue.getValue()); + updatedProperty.setValueUniqueUid(groupInstancePropertyValue.getUniqueId()); + } + return updatedProperty; + } + + private Either<List<ImmutablePair<String, String>>, TitanOperationStatus> getGroupArtifactsPairs(String groupUniqueId) { + + Either<List<ImmutablePair<String, String>>, TitanOperationStatus> result = null; + + Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupInstance), groupUniqueId, GraphEdgeLabels.GROUP_ARTIFACT_REF, + NodeTypeEnum.ArtifactRef, ArtifactData.class); + if (childrenNodes.isRight()) { + TitanOperationStatus status = childrenNodes.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.OK; + } + result = Either.right(status); + + } else { + + List<ImmutablePair<String, String>> artifactsList = new ArrayList<>(); + List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenNodes.left().value(); + if (list != null) { + for (ImmutablePair<ArtifactData, GraphEdge> pair : list) { + ArtifactData artifactData = pair.getKey(); + String uniqueId = artifactData.getArtifactDataDefinition().getUniqueId(); + String UUID = artifactData.getArtifactDataDefinition().getArtifactUUID(); + ImmutablePair<String, String> artifact = new ImmutablePair<String, String>(uniqueId, UUID); + artifactsList.add(artifact); + } + } + + log.debug("The artifacts list related to group {} is {}",groupUniqueId,artifactsList); + result = Either.left(artifactsList); + } + + return result; + + } + + @Override + public StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { + + StorageOperationStatus result = null; + + return this.dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(componentId, componentTypeEnum, oldArtifactId, newArtifact); + + } + + @Override + public StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { + + Either<List<GroupInstance>, StorageOperationStatus> allGroupsFromGraph = getAllGroupInstances(componentId, componentTypeEnum); + if (allGroupsFromGraph.isRight()) { + StorageOperationStatus status = allGroupsFromGraph.right().value(); + return status; + } + + List<GroupInstance> allGroups = allGroupsFromGraph.left().value(); + if (allGroups == null || allGroups.isEmpty()) { + return StorageOperationStatus.OK; + } + + // Find all groups which contains this artifact id + List<GroupInstance> associatedGroups = allGroups.stream().filter(p -> p.getGroupInstanceArtifacts() != null && p.getGroupInstanceArtifacts().contains(oldArtifactId)).collect(Collectors.toList()); + + if (associatedGroups != null && false == associatedGroups.isEmpty()) { + + log.debug("The groups {} contains the artifact {}",associatedGroups.stream().map(p -> p.getName()).collect(Collectors.toList()),oldArtifactId); + + UniqueIdData oldArtifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, oldArtifactId); + UniqueIdData newArtifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, newArtifact.getArtifactDataDefinition().getUniqueId()); + Map<String, Object> props = new HashMap<String, Object>(); + props.put(GraphPropertiesDictionary.NAME.getProperty(), newArtifactData.getLabel()); + + for (GroupInstance groupDefinition : associatedGroups) { + UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.GroupInstance, groupDefinition.getUniqueId()); + + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, oldArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); + log.trace("After dissociate group {} from artifact {}", groupDefinition.getName(), oldArtifactId); + if (deleteRelation.isRight()) { + TitanOperationStatus status = deleteRelation.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return DaoStatusConverter.convertTitanStatusToStorageStatus(status); + } + + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, newArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF, props); + log.trace("After associate group {} to artifact {}", groupDefinition.getName(), newArtifact.getUniqueIdKey()); + if (createRelation.isRight()) { + TitanOperationStatus status = createRelation.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return DaoStatusConverter.convertTitanStatusToStorageStatus(status); + } + } + + } + return StorageOperationStatus.OK; + } + + @Override + public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties, Boolean inTransaction) { + + Either<GroupInstance, StorageOperationStatus> updateRes = Either.left(oldGroupInstance); + try{ + if(!CollectionUtils.isEmpty(newProperties)){ + updateRes = updateGroupInstancePropertyValuesOnGraph(oldGroupInstance, newProperties); + } + }catch(Exception e){ + log.debug("The Exception occured during update of group instance {} property values. The message is {}. ", oldGroupInstance.getName(), e.getMessage(), e); + updateRes = Either.right(StorageOperationStatus.GENERAL_ERROR); + }finally { + handleTransactionCommitRollback(inTransaction, updateRes); + } + return updateRes; + } + + private Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValuesOnGraph( GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties ) { + Either<GroupInstance, StorageOperationStatus> updateRes = null; + Either<Integer, StorageOperationStatus> nodeUpdateRes = null; + Vertex groupInstanceVertex = null; + Either<Vertex, StorageOperationStatus> groupInstanceVertexRes; + Map<String, Vertex> existingPropertyValueVertices = new HashMap<>(); + Map<String, Vertex> existingPropertyVertices = new HashMap<>(); + groupInstanceVertexRes = getVertexFromGraph(GraphPropertiesDictionary.UNIQUE_ID.getProperty(),oldGroupInstance.getUniqueId()); + try{ + if (groupInstanceVertexRes.isRight()) { + log.debug("Failed to fetch group instance vertex {} from graph. ", oldGroupInstance.getName()); + updateRes = Either.right(groupInstanceVertexRes.right().value()); + } else { + groupInstanceVertex = groupInstanceVertexRes.left().value(); + findExistingPropertyValueVertices(groupInstanceVertex, existingPropertyValueVertices); + nodeUpdateRes = handlePropertyValues(oldGroupInstance, oldGroupInstance.getPropertyValueCounter(), newProperties, groupInstanceVertex, existingPropertyValueVertices, existingPropertyVertices); + if(nodeUpdateRes.isRight()){ + log.debug("Failed to handle property values of group instance {}. ", oldGroupInstance.getName()); + updateRes = Either.right(nodeUpdateRes.right().value()); + } else { + updateRes = updateGroupInstanceVertexAndGetUpdatedGroupInstance(groupInstanceVertex, nodeUpdateRes.left().value(), oldGroupInstance); + } + } + } catch(Exception e){ + log.debug("The Exception occured during update group instance {} property values on graph. The message is {}. ", oldGroupInstance.getName(), e.getMessage(), e); + updateRes = Either.right(StorageOperationStatus.GENERAL_ERROR); + } + return updateRes; + } + + private Either<Integer, StorageOperationStatus> handlePropertyValues(GroupInstance oldGroupInstance, Integer propertyValueCounter, List<GroupInstanceProperty> newProperties, Vertex groupInstanceVertex, + Map<String, Vertex> existingPropertyValueVertices, Map<String, Vertex> existingPropertyVertices) { + + Either<Integer, StorageOperationStatus> nodeHandleRes = null; + int currCounter = propertyValueCounter; + for(GroupInstanceProperty currProperty : newProperties){ + nodeHandleRes = handlePropertyValueNode(oldGroupInstance, currCounter, currProperty, groupInstanceVertex, existingPropertyValueVertices, existingPropertyVertices); + if(nodeHandleRes.isRight()){ + break; + } + currCounter = nodeHandleRes.left().value(); + } + return nodeHandleRes; + } + + private Either<GroupInstance, StorageOperationStatus> updateGroupInstanceVertexAndGetUpdatedGroupInstance( Vertex groupInstanceVertex, Integer propertyValueCounter, GroupInstance oldGroupInstance) { + + TitanOperationStatus status; + Either<GroupInstance, StorageOperationStatus> actionResult; + status = updateGroupInstanceVertex(groupInstanceVertex, propertyValueCounter); + if(status != TitanOperationStatus.OK){ + log.debug("Failed to update group instance {}. ", oldGroupInstance.getName()); + actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + }else{ + Either<GroupInstance, TitanOperationStatus> updatedGroupInstanceRes = getGroupInstanceFromGraph(oldGroupInstance.getUniqueId(), false, false); + if(updatedGroupInstanceRes.isRight()){ + status = updatedGroupInstanceRes.right().value(); + log.debug("Failed to get updated group instance {}. Status is {}. ", oldGroupInstance.getName(), status); + actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + }else{ + actionResult = Either.left(updatedGroupInstanceRes.left().value()); + } + } + return actionResult; + } + + private Either<Integer, StorageOperationStatus> handlePropertyValueNode(GroupInstance oldGroupInstance, Integer propertyValueCounter, GroupInstanceProperty currProperty, Vertex groupInstanceVertex, Map<String, Vertex> existingPropertyValueVertices, Map<String, Vertex> existingPropertyVertices) { + + String groupInstanceName = oldGroupInstance.getName(); + TitanOperationStatus updateStatus; + TitanOperationStatus addStatus; + Vertex propertyValueVertex; + String propertyValueId; + propertyValueId = currProperty.getValueUniqueUid(); + Either<Integer, StorageOperationStatus> actionResult = null; + if(existingPropertyValueVertices.containsKey(propertyValueId)){ + updateStatus = updatePropertyValueVertex(existingPropertyValueVertices.get(propertyValueId), currProperty); + if(updateStatus != TitanOperationStatus.OK){ + log.debug("Failed to update property value {} of group instance {}. ", currProperty.getName(), groupInstanceName); + actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateStatus)); + } + } + else{ + if(MapUtils.isEmpty(existingPropertyVertices)){ + findExistingPropertyVertices(existingPropertyVertices, groupInstanceVertex); + } + propertyValueVertex = existingPropertyVertices.get(currProperty.getUniqueId()); + addStatus = addPropertyValueNodeToGroupInstance(currProperty, groupInstanceVertex, propertyValueVertex, oldGroupInstance.getUniqueId(), ++propertyValueCounter); + if(addStatus != TitanOperationStatus.OK){ + log.debug("Failed to add property value {} to group instance {}. ", currProperty.getName(), groupInstanceName); + actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addStatus)); + } + } + if(actionResult == null){ + actionResult = Either.left(propertyValueCounter); + } + return actionResult; + } + + @SuppressWarnings("unchecked") + private Either<Vertex, StorageOperationStatus> getVertexFromGraph(String uniqueKeyName, String uniqueId) { + + Either<Vertex, StorageOperationStatus> actionResult = null; + try{ + Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); + Iterable<TitanVertex> vertices = null; + if (graph.isRight()) { + log.debug("Failed to get graph. Status is {}", graph.right().value()); + actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); + } + if(actionResult == null){ + TitanGraph tGraph = graph.left().value(); + vertices = tGraph.query().has(uniqueKeyName, uniqueId).vertices(); + if (vertices == null || vertices.iterator() == null || !vertices.iterator().hasNext()) { + log.debug("Failed to get nodes from graph for type {} for id = {}", NodeTypeEnum.GroupInstance, uniqueId); + actionResult = Either.right(StorageOperationStatus.NOT_FOUND); + } + } + if(actionResult == null && vertices != null){ + actionResult = Either.left(vertices.iterator().next()); + } + } catch(Exception e){ + log.debug("The Exception occured during get vertex {} from graph. The message is {}. ", uniqueId, e.getMessage(), e); + } + return actionResult; + } + + private void findExistingPropertyValueVertices(Vertex groupInstanceVertex, Map<String, Vertex> existingPropertyValueVertices) { + Iterator<Edge> propertyValueEdges = groupInstanceVertex.edges(Direction.OUT, GraphEdgeLabels.PROPERTY_VALUE.getProperty()); + Vertex propertyValueVertex; + while(propertyValueEdges.hasNext()){ + propertyValueVertex = propertyValueEdges.next().inVertex(); + existingPropertyValueVertices.put((String) propertyValueVertex.property(GraphPropertiesDictionary.UNIQUE_ID.getProperty()).value(), propertyValueVertex); + } + } + + private void findExistingPropertyVertices(Map<String, Vertex> existingPropertyVertices, Vertex groupInstanceVertex) { + Vertex groupVertex = groupInstanceVertex.edges(Direction.OUT, GraphEdgeLabels.INSTANCE_OF.getProperty()).next().inVertex(); + Vertex groupTypeVertex = groupVertex.edges(Direction.OUT, GraphEdgeLabels.TYPE_OF.getProperty()).next().inVertex(); + Iterator<Edge> groupTypePropertiesIterator = groupTypeVertex.edges(Direction.OUT, GraphEdgeLabels.PROPERTY.getProperty()); + while(groupTypePropertiesIterator.hasNext()){ + Vertex propertyValueVertex = groupTypePropertiesIterator.next().inVertex(); + existingPropertyVertices.put((String) propertyValueVertex.property(GraphPropertiesDictionary.UNIQUE_ID.getProperty()).value(), propertyValueVertex); + } + } + + private TitanOperationStatus addPropertyValueNodeToGroupInstance(GroupInstanceProperty currProperty, Vertex groupInstanceVertex, Vertex propertyVertex, String groupInstanceId, int index) { + TitanOperationStatus status = null; + TitanVertex propertyValueVertex = null; + PropertyValueData newPropertyValue = new PropertyValueData(); + Long creationTime = System.currentTimeMillis(); + newPropertyValue.setModificationTime(creationTime); + newPropertyValue.setCreationTime(creationTime); + newPropertyValue.setUniqueId(UniqueIdBuilder.buildGroupPropertyValueUid(groupInstanceId, index)); + newPropertyValue.setValue(currProperty.getValue()); + newPropertyValue.setType(currProperty.getType()); + Either<TitanVertex, TitanOperationStatus> propertyValueNodeRes = titanGenericDao.createNode(newPropertyValue); + if(propertyValueNodeRes.isRight()){ + status = propertyValueNodeRes.right().value(); + } + if(status == null){ + propertyValueVertex = propertyValueNodeRes.left().value(); + Map<String, Object> props = new HashMap<>(); + props.put(GraphPropertiesDictionary.PROPERTY_NAME.getProperty(), currProperty.getName()); + status = titanGenericDao.createEdge(groupInstanceVertex, propertyValueVertex, GraphEdgeLabels.PROPERTY_VALUE, props); + } + if(status == TitanOperationStatus.OK){ + status = titanGenericDao.createEdge(propertyValueVertex, propertyVertex, GraphEdgeLabels.PROPERTY_IMPL, null); + } + return status; + } + + private TitanOperationStatus updatePropertyValueVertex(Vertex propertyValueVertex, GroupInstanceProperty property) { + PropertyValueData propertyValue = new PropertyValueData(); + propertyValue.setUniqueId(property.getValue()); + propertyValue.setModificationTime(System.currentTimeMillis()); + propertyValue.setType(property.getType()); + propertyValue.setValue(property.getValue()); + return titanGenericDao.updateVertex(propertyValue, propertyValueVertex); + } + + private TitanOperationStatus updateGroupInstanceVertex(Vertex groupInstanceVertex, int propertyValueCounter) { + GroupInstanceData groupInstanceData = new GroupInstanceData(); + groupInstanceData.getGroupDataDefinition().setModificationTime(System.currentTimeMillis()); + groupInstanceData.getGroupDataDefinition().setCustomizationUUID(UUID.randomUUID().toString()); + groupInstanceData.getGroupDataDefinition().setPropertyValueCounter(propertyValueCounter); + return titanGenericDao.updateVertex(groupInstanceData, groupInstanceVertex); + } + + private Either<Map<String, PropertyValueData>, TitanOperationStatus> getAllGroupInstancePropertyValuesData(GroupInstanceData groupInstData) { + + Either<Map<String, PropertyValueData>, TitanOperationStatus> result = null; + try{ + Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getPropertyValueChildrenRes = + titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), groupInstData.getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE, + NodeTypeEnum.PropertyValue, PropertyValueData.class, true); + if(getPropertyValueChildrenRes.isRight()){ + TitanOperationStatus status = getPropertyValueChildrenRes.right().value(); + log.debug("Failed to fetch property value nodes for group instance {}. Status is {}. ", groupInstData.getName(), status); + if(status == TitanOperationStatus.NOT_FOUND){ + result = Either.left(null); + }else{ + result = Either.right(status); + } + }else{ + result = Either.left(getPropertyValueChildrenRes.left().value().stream() + .collect(Collectors.toMap(pair->(String)(pair.getRight().getProperties().get(GraphPropertiesDictionary.PROPERTY_NAME.getProperty())), pair->pair.getLeft()))); + } + } catch(Exception e){ + log.debug("The Exception occured during fetch group instance () property values. The message is {}. ", groupInstData.getName(), e.getMessage(), e); + if(result == null){ + result = Either.right(TitanOperationStatus.GENERAL_ERROR); + } + } + return result; + } + @Override + public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance groupInstance, List<GroupInstanceProperty> newProperties) { + return updateGroupInstancePropertyValues(groupInstance, newProperties, false); + } +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java index 9312be45c1..52bcae36db 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java @@ -25,8 +25,11 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.stream.Collectors; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity; @@ -44,6 +47,7 @@ import org.openecomp.sdc.be.model.GroupDefinition; import org.openecomp.sdc.be.model.GroupProperty; import org.openecomp.sdc.be.model.GroupTypeDefinition; import org.openecomp.sdc.be.model.PropertyDefinition; +import org.openecomp.sdc.be.model.Resource; import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache; import org.openecomp.sdc.be.model.operations.api.IGroupOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; @@ -57,6 +61,7 @@ import org.openecomp.sdc.be.resources.data.PropertyValueData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.openecomp.sdc.be.resources.data.ServiceMetadataData; import org.openecomp.sdc.be.resources.data.UniqueIdData; +import org.openecomp.sdc.common.datastructure.Wrapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @@ -82,15 +87,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation @javax.annotation.Resource private ApplicationDataTypeCache dataTypeCache; + @javax.annotation.Resource + protected ResourceOperation resourceOperation; + @Override - public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition) { + public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition) { String groupTypeUid = groupDefinition.getTypeUid(); if (groupTypeUid == null) { - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, "Group type id is empty", - ErrorSeverity.ERROR); + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, "Group type id is empty", ErrorSeverity.ERROR); return Either.right(TitanOperationStatus.INVALID_ID); } @@ -112,41 +118,35 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation TitanOperationStatus status = null; // Adding group data node to graph log.debug("Before adding group to graph {}", groupData.toString()); - Either<GroupData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(groupData, - GroupData.class); + Either<GroupData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(groupData, GroupData.class); log.debug("After adding group to graph {}", groupData.toString()); if (createNodeResult.isRight()) { status = createNodeResult.right().value(); - log.error("Failed to add group {} to graph. Status is {}", groupDefinition.getName(), status); + log.error("Failed to add group {} to graph. status is {}", groupDefinition.getName(), status); return Either.right(status); } // Associate group to group type log.debug("Going to associate group {} to its groupType {}", groupDefinition.getName(), groupDefinition.getType()); - Either<GraphRelation, TitanOperationStatus> associateGroupTypeRes = associateGroupToGroupType(groupData, - groupTypeUid); - log.debug("After associating group {} to its groupType {}. Status is {}", groupDefinition.getName(), groupDefinition.getType(), associateGroupTypeRes); + Either<GraphRelation, TitanOperationStatus> associateGroupTypeRes = associateGroupToGroupType(groupData, groupTypeUid); + log.debug("After associating group {} to its groupType {}. status is {}", groupDefinition.getName(), groupDefinition.getType(), associateGroupTypeRes); if (associateGroupTypeRes.isRight()) { status = associateGroupTypeRes.right().value(); - String description = "Failed to associate group " + groupDefinition.getName() + " to its groupType " - + groupDefinition.getType() + " in graph."; + String description = "Failed to associate group " + groupDefinition.getName() + " to its groupType " + groupDefinition.getType() + " in graph."; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } // Associate group to component RESOURCE/SERVICE/PRODUCT - Either<GraphRelation, TitanOperationStatus> associateComponentRes = associateGroupToComponent(groupData, - nodeTypeEnum, componentId); + Either<GraphRelation, TitanOperationStatus> associateComponentRes = associateGroupToComponent(groupData, nodeTypeEnum, componentId); if (associateComponentRes.isRight()) { status = associateComponentRes.right().value(); - String description = "Failed to associate group " + groupDefinition.getName() + " to " - + nodeTypeEnum.getName() + " " + componentId + ". status is " + status; + String description = "Failed to associate group " + groupDefinition.getName() + " to " + nodeTypeEnum.getName() + " " + componentId + ". status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } - Either<GroupTypeDefinition, TitanOperationStatus> groupTypeRes = groupTypeOperation - .getGroupTypeByUid(groupDefinition.getTypeUid()); + Either<GroupTypeDefinition, TitanOperationStatus> groupTypeRes = groupTypeOperation.getGroupTypeByUid(groupDefinition.getTypeUid()); if (groupTypeRes.isRight()) { TitanOperationStatus operationStatus = groupTypeRes.right().value(); log.debug("Failed to find group type {}", groupDefinition.getTypeUid()); @@ -164,18 +164,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation // points to the parent unique id // Adding properties to group - List<GroupProperty> properties = groupDefinition.getProperties(); + List<GroupProperty> properties = groupDefinition.convertToGroupProperties(); if (properties != null && false == properties.isEmpty()) { if (groupTypeProperties == null || true == groupTypeProperties.isEmpty()) { - BeEcompErrorManager.getInstance().logInvalidInputError(ADDING_GROUP, - "group type does not have properties", ErrorSeverity.INFO); + BeEcompErrorManager.getInstance().logInvalidInputError(ADDING_GROUP, "group type does not have properties", ErrorSeverity.INFO); return Either.right(TitanOperationStatus.MATCH_NOT_FOUND); } - Map<String, PropertyDefinition> groupTypePropertiesMap = groupTypeProperties.stream() - .collect(Collectors.toMap(p -> p.getName(), p -> p)); + Map<String, PropertyDefinition> groupTypePropertiesMap = groupTypeProperties.stream().collect(Collectors.toMap(p -> p.getName(), p -> p)); Either<PropertyValueData, TitanOperationStatus> addPropertyResult = null; int i = 1; @@ -183,10 +181,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation addPropertyResult = addPropertyToGroup(groupData, prop, groupTypePropertiesMap.get(prop.getName()), i); if (addPropertyResult.isRight()) { status = addPropertyResult.right().value(); - String description = "Failed to associate group " + groupData.getUniqueId() + " to property " - + prop.getName() + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, - ErrorSeverity.ERROR); + String description = "Failed to associate group " + groupData.getUniqueId() + " to property " + prop.getName() + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } i++; @@ -196,41 +192,22 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation // Associate artifacts to group List<String> artifacts = groupDefinition.getArtifacts(); - Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph = associateArtifactsToGroupOnGraph( - groupData.getGroupDataDefinition().getUniqueId(), artifacts); - if (associateArtifactsToGroupOnGraph.isRight() - && associateArtifactsToGroupOnGraph.right().value() != TitanOperationStatus.OK) { + Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph = associateArtifactsToGroupOnGraph(groupData.getGroupDataDefinition().getUniqueId(), artifacts); + if (associateArtifactsToGroupOnGraph.isRight() && associateArtifactsToGroupOnGraph.right().value() != TitanOperationStatus.OK) { return Either.right(status); } /* - * Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = - * null; if (artifacts != null) { for (String artifactId : artifacts) { - * Either<ArtifactData, TitanOperationStatus> findArtifactRes = - * titanGenericDao .getNode(UniqueIdBuilder - * .getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, - * ArtifactData.class); if (findArtifactRes.isRight()) { status = - * findArtifactRes.right().value(); if (status == - * TitanOperationStatus.NOT_FOUND) { status = - * TitanOperationStatus.INVALID_ID; } String description = - * "Failed to associate group " + groupData.getUniqueId() + - * " to artifact " + artifactId + " in graph. Status is " + status; - * BeEcompErrorManager.getInstance().logInternalFlowError( ADDING_GROUP, - * description, ErrorSeverity.ERROR); return Either.right(status); } + * Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = null; if (artifacts != null) { for (String artifactId : artifacts) { Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao .getNode(UniqueIdBuilder + * .getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class); if (findArtifactRes.isRight()) { status = findArtifactRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = + * TitanOperationStatus.INVALID_ID; } String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError( + * ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } * - * Map<String, Object> props = new HashMap<String, Object>(); - * props.put(GraphPropertiesDictionary.NAME.getProperty(), - * findArtifactRes.left().value().getLabel()); + * Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), findArtifactRes.left().value().getLabel()); * - * addArtifactsRefResult = titanGenericDao.createRelation( groupData, - * findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, - * props); + * addArtifactsRefResult = titanGenericDao.createRelation( groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props); * - * if (addArtifactsRefResult.isRight()) { status = - * addArtifactsRefResult.right().value(); String description = - * "Failed to associate group " + groupData.getUniqueId() + - * " to artifact " + artifactId + " in graph. Status is " + status; - * BeEcompErrorManager.getInstance().logInternalFlowError( ADDING_GROUP, - * description, ErrorSeverity.ERROR); return Either.right(status); } } } + * if (addArtifactsRefResult.isRight()) { status = addArtifactsRefResult.right().value(); String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status; + * BeEcompErrorManager.getInstance().logInternalFlowError( ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } } */ // Associate group to members @@ -243,31 +220,24 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation if (member.getValue() == null || member.getValue().isEmpty()) { continue; } - Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), - ComponentInstanceData.class); + Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), ComponentInstanceData.class); if (findComponentInstanceRes.isRight()) { status = findComponentInstanceRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } - String description = "Failed to find to find member of group " + member.getValue() - + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, - ErrorSeverity.ERROR); + String description = "Failed to find to find member of group " + member.getValue() + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), member.getKey()); - addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), - GraphEdgeLabels.GROUP_MEMBER, props); + addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), GraphEdgeLabels.GROUP_MEMBER, props); if (addMembersRefResult.isRight()) { status = addMembersRefResult.right().value(); - String description = "Failed to associate group " + groupData.getUniqueId() - + " to component instance " + member.getValue() + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, - ErrorSeverity.ERROR); + String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + member.getValue() + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } @@ -275,8 +245,221 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.left(groupData); } + + private Either<PropertyDefinition, TitanOperationStatus> getPropertyDefFromGroupType(GroupProperty groupProperty) { + Either<PropertyDefinition, TitanOperationStatus> ret; + Either<GroupTypeDefinition, TitanOperationStatus> groupTypeRes = groupTypeOperation + .getGroupTypeByUid(groupProperty.getParentUniqueId()); + if (groupTypeRes.isRight()) { + TitanOperationStatus operationStatus = groupTypeRes.right().value(); + log.debug("Failed to find group type {}", groupProperty.getParentUniqueId()); + if (operationStatus == TitanOperationStatus.NOT_FOUND) { + ret = Either.right(TitanOperationStatus.INVALID_ID); + } else { + ret = Either.right(operationStatus); + } + } else { + GroupTypeDefinition groupTypeDefinition = groupTypeRes.left().value(); + List<PropertyDefinition> groupTypeProperties = groupTypeDefinition.getProperties(); + + Map<String, PropertyDefinition> groupTypePropertiesMap = groupTypeProperties.stream() + .collect(Collectors.toMap(p -> p.getName(), p -> p)); + if (groupTypeProperties == null || true == groupTypeProperties.isEmpty()) { + BeEcompErrorManager.getInstance().logInvalidInputError(ADDING_GROUP, + "group type does not have properties", ErrorSeverity.INFO); + ret = Either.right(TitanOperationStatus.MATCH_NOT_FOUND); + } else { + PropertyDefinition propertyDefinition = groupTypePropertiesMap.get(groupProperty.getName()); + ret = Either.left(propertyDefinition); + } + } + return ret; + } + + /** + * Updates GroupProperty Value + * @param componentId TODO + * @param groupId TODO + * @param groupProperties + * @param inTransaction TODO + * + * @return + */ + public Either<List<GroupProperty>, StorageOperationStatus> updateGroupProperties(String componentId, + String groupId, List<GroupProperty> groupProperties, boolean inTransaction) { + + Wrapper<Long> lastUpdateTimeWrapper = new Wrapper<>(); + TitanOperationStatus titanStatus = TitanOperationStatus.OK; + Either<List<GroupProperty>, StorageOperationStatus> result = null; + //Get Group Data + final GroupData groupData; + Either<GroupData, TitanOperationStatus> eitherGroupData = titanGenericDao + .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupId, GroupData.class); + if( eitherGroupData.isRight() ){ + log.debug("Error: Could not fetch group with groupId = {}", groupId); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherGroupData.right().value())); + } + else{ + groupData = eitherGroupData.left().value(); + } + + try { + Optional<TitanOperationStatus> optionalError = + //Stream of group properties to be updated + groupProperties.stream(). + //updating each property and mapping to the TitanOperationStatus + map(e -> updateGroupProperty(e, groupData, lastUpdateTimeWrapper)). + //filtering in errors if there are such + filter( e -> e != TitanOperationStatus.OK). + //collect + findFirst(); + if( optionalError.isPresent() ){ + titanStatus = optionalError.get(); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus)); + } + else{ + result = updateLastModificationTimeOnVf(componentId, groupId, groupProperties, lastUpdateTimeWrapper); + } + + } + finally { + handleTransactionCommitRollback(inTransaction, result); + } + + return result; + } + + private Either<List<GroupProperty>, StorageOperationStatus> updateLastModificationTimeOnVf(String componentId, + String groupId, List<GroupProperty> groupProperties, Wrapper<Long> lastUpdateTimeWrapper) { + Either<List<GroupProperty>, StorageOperationStatus> result; + Either<Resource, StorageOperationStatus> eitherResource = resourceOperation.getResource(componentId); + if( eitherResource.isRight() ){ + result = Either.right(eitherResource.right().value()); + } + else{ + Either<ComponentMetadataData, StorageOperationStatus> eitherLastUpdateDateUpdatedOnResource = resourceOperation + .updateComponentLastUpdateDateOnGraph(eitherResource.left().value(), NodeTypeEnum.Resource, + lastUpdateTimeWrapper.getInnerElement(), true); + if (eitherLastUpdateDateUpdatedOnResource.isLeft()) { + + groupProperties = + //Group Stream From VF + eitherResource.left().value().getGroups().stream(). + //Filter in Only the relevant group + filter( e -> e.getUniqueId().equals(groupId)). + //Get it + findAny().get(). + //Get Group Properties from it + convertToGroupProperties(); + + result = Either.left(groupProperties); + } + else{ + result = Either.right(eitherLastUpdateDateUpdatedOnResource.right().value()); + } + } + return result; + } + + + private TitanOperationStatus updateGroupProperty(GroupProperty groupProperty, GroupData groupData, + Wrapper<Long> lastUpdateTimeWrapper) { + TitanOperationStatus titanStatus = TitanOperationStatus.OK; + // PropertyValueData node does not exist + if (StringUtils.isEmpty(groupProperty.getValueUniqueUid())) { + // create new node + if (!StringUtils.isEmpty(groupProperty.getValue())) { + // Value does not exit and was not updated as well. no need + // to do anything + } else { + titanStatus = addGroupPropertyToGraph(groupProperty, groupData, lastUpdateTimeWrapper); - private Either<PropertyValueData, TitanOperationStatus> addPropertyToGroup(GroupData groupData, + } + } + + else { + titanStatus = updateGroupPropertyInGraph(groupProperty, lastUpdateTimeWrapper); + } + return titanStatus; + } + + private TitanOperationStatus updateGroupPropertyInGraph(GroupProperty groupProperty, + Wrapper<Long> lastUpdateTimeWrapper) { + TitanOperationStatus titanStatus; + Either<PropertyValueData, TitanOperationStatus> eitherGroupPropertyValue = titanGenericDao.getNode( + UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), groupProperty.getValueUniqueUid(), + PropertyValueData.class); + if (eitherGroupPropertyValue.isRight()) { + + titanStatus = eitherGroupPropertyValue.right().value(); + + } else { + PropertyValueData groupPropertyValue = eitherGroupPropertyValue.left().value(); + // Actual Update only if value changed + if (!StringUtils.equals(groupPropertyValue.getValue(), groupProperty.getValue())) { + long modificationTime = lastUpdateTimeWrapper.isEmpty() ? System.currentTimeMillis() + : lastUpdateTimeWrapper.getInnerElement(); + groupPropertyValue.setValue(groupProperty.getValue()); + groupPropertyValue.setModificationTime(modificationTime); + Either<PropertyValueData, TitanOperationStatus> eitherUpdateNode = titanGenericDao + .updateNode(groupPropertyValue, PropertyValueData.class); + if( eitherUpdateNode.isLeft() ){ + titanStatus = TitanOperationStatus.OK; + lastUpdateTimeWrapper.setInnerElement(modificationTime); + } + else{ + titanStatus = eitherUpdateNode.right().value(); + } + + } else { + titanStatus = TitanOperationStatus.OK; + } + } + return titanStatus; + } + + private TitanOperationStatus addGroupPropertyToGraph(GroupProperty groupProperty, GroupData groupData, + Wrapper<Long> lastUpdateTimeWrapper) { + PropertyDefinition propertyDefinition = null; + TitanOperationStatus ret = TitanOperationStatus.OK; + if (ret == TitanOperationStatus.OK) { + Either<PropertyDefinition, TitanOperationStatus> eitherPropertyDefFromGroupType = getPropertyDefFromGroupType( + groupProperty); + if (eitherPropertyDefFromGroupType.isRight()) { + log.debug("Error: Could not fetch group property from group Type with groupTypeId = {}", + groupProperty.getParentUniqueId()); + ret = eitherPropertyDefFromGroupType.right().value(); + } else { + propertyDefinition = eitherPropertyDefFromGroupType.left().value(); + } + } + if (ret == TitanOperationStatus.OK){ + final int groupPropCounter = groupData.getGroupDataDefinition().getPropertyValueCounter() + NumberUtils.INTEGER_ONE; + Either<PropertyValueData, TitanOperationStatus> eitherAddPropertyToGroup = addPropertyToGroup(groupData, + groupProperty, propertyDefinition, groupPropCounter); + + if( eitherAddPropertyToGroup.isLeft() ){ + ret = TitanOperationStatus.OK; + if( lastUpdateTimeWrapper.isEmpty() ){ + lastUpdateTimeWrapper.setInnerElement(eitherAddPropertyToGroup.left().value().getCreationTime()); + } + } + else{ + ret = eitherAddPropertyToGroup.right().value(); + } + if( ret == TitanOperationStatus.OK){ + groupData.getGroupDataDefinition().setPropertyValueCounter(groupPropCounter); + Either<GroupData, TitanOperationStatus> updateNode = titanGenericDao .updateNode(groupData, GroupData.class); + if( updateNode.isRight() ){ + ret = updateNode.right().value(); + } + } + + } + return ret; + } + + public Either<PropertyValueData, TitanOperationStatus> addPropertyToGroup(GroupData groupData, GroupProperty groupProperty, PropertyDefinition prop, Integer index) { if (prop == null) { @@ -312,15 +495,13 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll(); if (allDataTypes.isRight()) { TitanOperationStatus status = allDataTypes.right().value(); - BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToGroup", - "Failed to add property to group. Status is " + status, ErrorSeverity.ERROR); + BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToGroup", "Failed to add property to group. Status is " + status, ErrorSeverity.ERROR); return Either.right(status); } log.debug("Before validateAndUpdatePropertyValue"); - Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, - innerType, allDataTypes.left().value()); + Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value()); log.debug("After validateAndUpdatePropertyValue. isValid = {}", isValid); String newValue = value; @@ -341,9 +522,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation propertyValueData.setUniqueId(uniqueId); propertyValueData.setValue(newValue); - log.debug("Before adding property value to graph {}",propertyValueData); - Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, - PropertyValueData.class); + log.debug("Before adding property value to graph {}", propertyValueData); + Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class); log.debug("After adding property value to graph {}", propertyValueData); if (createNodeResult.isRight()) { @@ -351,24 +531,20 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.right(operationStatus); } - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, - propertyData, GraphEdgeLabels.PROPERTY_IMPL, null); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - String description = "Failed to associate property value " + uniqueId + " to property " + propertyId - + " in graph. status is " + operationStatus; + String description = "Failed to associate property value " + uniqueId + " to property " + propertyId + " in graph. status is " + operationStatus; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(operationStatus); } - createRelResult = titanGenericDao.createRelation(groupData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, - null); + createRelResult = titanGenericDao.createRelation(groupData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - String description = "Failed to associate group " + groupData.getGroupDataDefinition().getName() - + " to property value " + uniqueId + " in graph. Status is " + operationStatus; + String description = "Failed to associate group " + groupData.getGroupDataDefinition().getName() + " to property value " + uniqueId + " in graph. Status is " + operationStatus; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(operationStatus); } @@ -376,16 +552,14 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.left(createNodeResult.left().value()); } - private Either<GraphRelation, TitanOperationStatus> associateGroupToComponent(GroupData groupData, - NodeTypeEnum nodeTypeEnum, String componentId) { + private Either<GraphRelation, TitanOperationStatus> associateGroupToComponent(GroupData groupData, NodeTypeEnum nodeTypeEnum, String componentId) { UniqueIdData componentIdData = new UniqueIdData(nodeTypeEnum, componentId); - log.debug("Before associating component {} to group {}.", componentId, groupData); + log.debug("Before associating component {} to group {}", componentId, groupData); Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), groupData.getGroupDataDefinition().getName()); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(componentIdData, - groupData, GraphEdgeLabels.GROUP, props); - log.debug("After associating component {} to group {}. Status is {}", componentId, groupData, createRelResult); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(componentIdData, groupData, GraphEdgeLabels.GROUP, props); + log.debug("After associating component {} to group {}. status is {}", componentId, groupData, createRelResult); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); log.debug("Failed to associate component {} to group {} in graph. Status is {}", componentId, groupData, operationStatus); @@ -395,18 +569,13 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.left(createRelResult.left().value()); } - private Either<GraphRelation, TitanOperationStatus> associateGroupToGroupType(GroupData groupData, - String groupTypeUid) { + private Either<GraphRelation, TitanOperationStatus> associateGroupToGroupType(GroupData groupData, String groupTypeUid) { UniqueIdData groupTypeIdData = new UniqueIdData(NodeTypeEnum.GroupType, groupTypeUid); - log.debug("Before associating {} to group type {} (uid = {}).", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(groupData, - groupTypeIdData, GraphEdgeLabels.TYPE_OF, null); - - if (log.isDebugEnabled()) { - log.debug("After associating {} to group type {} (uid = {}). Result is {}", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid, createRelResult); - } + log.debug("Before associating {} to group type {} (uid = {})", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(groupData, groupTypeIdData, GraphEdgeLabels.TYPE_OF, null); + log.debug("After associating {} to group type {} (uid = {}). Result is {}", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid, createRelResult); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); return Either.right(operationStatus); @@ -415,19 +584,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition) { + public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition) { return addGroup(nodeTypeEnum, componentId, groupDefinition, false); } @Override - public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, - GroupDefinition groupDefinition, boolean inTransaction) { + public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupData, TitanOperationStatus> addGroupRes = addGroupToGraph(nodeTypeEnum, componentId, - groupDefinition); + Either<GroupData, TitanOperationStatus> addGroupRes = addGroupToGraph(nodeTypeEnum, componentId, groupDefinition); if (addGroupRes.isRight()) { TitanOperationStatus status = addGroupRes.right().value(); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); @@ -506,52 +672,6 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } /** - * get the list of artifacts related to a given group - * - * @param groupUniqueId - * @return - */ - // private Either<List<String>, TitanOperationStatus> getGroupArtifacts( - // String groupUniqueId) { - // - // Either<List<String>, TitanOperationStatus> result = null; - // - // Either<List<ImmutablePair<ArtifactData, GraphEdge>>, - // TitanOperationStatus> childrenNodes = titanGenericDao - // .getChildrenNodes( - // UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), - // groupUniqueId, GraphEdgeLabels.GROUP_ARTIFACT_REF, - // NodeTypeEnum.ArtifactRef, ArtifactData.class); - // if (childrenNodes.isRight()) { - // TitanOperationStatus status = childrenNodes.right().value(); - // if (status == TitanOperationStatus.NOT_FOUND) { - // status = TitanOperationStatus.OK; - // } - // result = Either.right(status); - // - // } else { - // - // List<String> artifactsList = new ArrayList<>(); - // List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenNodes - // .left().value(); - // if (list != null) { - // for (ImmutablePair<ArtifactData, GraphEdge> pair : list) { - // ArtifactData artifactData = pair.getKey(); - // String uniqueId = artifactData.getArtifactDataDefinition() - // .getUniqueId(); - // artifactsList.add(uniqueId); - // } - // } - // - // log.debug("The artifacts list related to group {} is {}", groupUniqueId, artifactsList); - // result = Either.left(artifactsList); - // } - // - // return result; - // - // } - - /** * get members of group * * @param groupUniqueId @@ -561,9 +681,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Either<Map<String, String>, TitanOperationStatus> result = null; - Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, - GraphEdgeLabels.GROUP_MEMBER, NodeTypeEnum.ResourceInstance, ComponentInstanceData.class); + Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, GraphEdgeLabels.GROUP_MEMBER, + NodeTypeEnum.ResourceInstance, ComponentInstanceData.class); if (childrenNodes.isRight()) { TitanOperationStatus status = childrenNodes.right().value(); @@ -594,23 +713,20 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation public Either<GroupTypeDefinition, TitanOperationStatus> getGroupTypeOfGroup(String groupUniqueId) { - Either<ImmutablePair<GroupTypeData, GraphEdge>, TitanOperationStatus> groupTypeRes = titanGenericDao.getChild( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, GraphEdgeLabels.TYPE_OF, - NodeTypeEnum.GroupType, GroupTypeData.class); + Either<ImmutablePair<GroupTypeData, GraphEdge>, TitanOperationStatus> groupTypeRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, GraphEdgeLabels.TYPE_OF, NodeTypeEnum.GroupType, + GroupTypeData.class); if (groupTypeRes.isRight()) { TitanOperationStatus status = groupTypeRes.right().value(); log.debug("Cannot find group type associated with capability {}. Status is {}", groupUniqueId, status); - BeEcompErrorManager.getInstance().logBeFailedFindAssociationError("Fetch Group type", - NodeTypeEnum.GroupType.getName(), groupUniqueId, String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedFindAssociationError("Fetch Group type", NodeTypeEnum.GroupType.getName(), groupUniqueId, String.valueOf(status)); return Either.right(groupTypeRes.right().value()); } GroupTypeData groupTypeData = groupTypeRes.left().value().getKey(); - Either<GroupTypeDefinition, TitanOperationStatus> groupTypeByUid = groupTypeOperation - .getGroupTypeByUid(groupTypeData.getGroupTypeDataDefinition().getUniqueId()); + Either<GroupTypeDefinition, TitanOperationStatus> groupTypeByUid = groupTypeOperation.getGroupTypeByUid(groupTypeData.getGroupTypeDataDefinition().getUniqueId()); return groupTypeByUid; @@ -644,19 +760,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.right(TitanOperationStatus.OK); } - Map<String, PropertyDefinition> uidToPropDefMap = groupTypeProperties.stream() - .collect(Collectors.toMap(p -> p.getUniqueId(), p -> p)); + Map<String, PropertyDefinition> uidToPropDefMap = groupTypeProperties.stream().collect(Collectors.toMap(p -> p.getUniqueId(), p -> p)); // Find all properties values on the group - Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUid, - GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class); + Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUid, GraphEdgeLabels.PROPERTY_VALUE, + NodeTypeEnum.PropertyValue, PropertyValueData.class); if (propertyImplNodes.isRight()) { TitanOperationStatus status = propertyImplNodes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { - groupPropertiesList = groupTypeProperties.stream() - .map(p -> new GroupProperty(p, p.getDefaultValue(), null)).collect(Collectors.toList()); + groupPropertiesList = groupTypeProperties.stream().map(p -> new GroupProperty(p, p.getDefaultValue(), null)).collect(Collectors.toList()); return Either.left(groupPropertiesList); } else { return Either.right(status); @@ -676,9 +789,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation String propertyValueUid = propertyValueData.getUniqueId(); String value = propertyValueData.getValue(); - Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, - GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class); + Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, GraphEdgeLabels.PROPERTY_IMPL, + NodeTypeEnum.Property, PropertyData.class); if (propertyDefRes.isRight()) { TitanOperationStatus status = propertyDefRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { @@ -704,8 +816,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation // Find all properties which does not have property value on the group. List<GroupProperty> leftProps = groupTypeProperties.stream() // filter out the group type properties which already processed - .filter(p -> false == processedProps.contains(p.getUniqueId())) - .map(p -> new GroupProperty(p, p.getDefaultValue(), null)).collect(Collectors.toList()); + .filter(p -> false == processedProps.contains(p.getUniqueId())).map(p -> new GroupProperty(p, p.getDefaultValue(), null)).collect(Collectors.toList()); if (leftProps != null) { groupPropertiesList.addAll(leftProps); } @@ -713,28 +824,24 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return Either.left(groupPropertiesList); } - public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, - NodeTypeEnum componentTypeEnum) { + public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum) { return getAllGroupsFromGraph(componentId, componentTypeEnum, false, false, false); } @Override - public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, - NodeTypeEnum compTypeEnum, boolean inTransaction) { + public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction) { Either<List<GroupDefinition>, StorageOperationStatus> result = null; try { - Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.getAllGroupsFromGraph(componentId, - compTypeEnum); + Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.getAllGroupsFromGraph(componentId, compTypeEnum); if (allGroups.isRight()) { TitanOperationStatus status = allGroups.right().value(); - log.debug("Failed to retrieve all groups of component {} from graph. Status is {}", componentId, - status); + log.debug("Failed to retrieve all groups of component {} from graph. Status is {}", componentId, status); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.OK; } @@ -762,8 +869,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, - NodeTypeEnum compTypeEnum) { + public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum) { return getAllGroups(componentId, compTypeEnum, false); } @@ -778,27 +884,21 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation GroupDefinition groupDefinition = groupFromGraph.left().value(); // 1. delete all properties values nodes - List<GroupProperty> properties = groupDefinition.getProperties(); + List<GroupProperty> properties = groupDefinition.convertToGroupProperties(); if (properties != null) { for (GroupProperty groupProperty : properties) { String propValueUniqueId = groupProperty.getValueUniqueUid(); if (propValueUniqueId != null) { UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.PropertyValue, propValueUniqueId); - Either<PropertyValueData, TitanOperationStatus> deleteNode = titanGenericDao - .deleteNode(uniqueIdData, PropertyValueData.class); + Either<PropertyValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(uniqueIdData, PropertyValueData.class); if (deleteNode.isRight()) { TitanOperationStatus status = groupFromGraph.right().value(); - String description = String.format( - "Failed to delete property {} under group {}" + groupUniqueId - + " on graph. Status is {}", - propValueUniqueId, groupDefinition.getName(), status.name()); - log.debug(description); - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_GROUP, propValueUniqueId, - status.name()); + log.debug("Failed to delete property {} under group {} {} on graph. Status is {}", propValueUniqueId, groupDefinition.getName(), groupUniqueId, status.name()); + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_GROUP, propValueUniqueId, status.name()); return Either.right(status); } else { - log.trace("Property {} was deleted from geoup {}", propValueUniqueId, groupDefinition.getName()); + log.trace("Property {} was deleted from group {}" ,propValueUniqueId, groupDefinition.getName()); } } } @@ -809,10 +909,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Either<GroupData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(uniqueIdData, GroupData.class); if (deleteNode.isRight()) { TitanOperationStatus status = groupFromGraph.right().value(); - String description = String.format( - "Failed to delete group {} with uid " + groupUniqueId + " on graph. Status is {}", - groupDefinition.getName(), groupUniqueId, status.name()); - log.debug(description); + log.debug("Failed to delete group {} with uid {} on graph. Status is {}", groupDefinition.getName(), groupUniqueId, status.name()); BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_GROUP, groupUniqueId, status.name()); return Either.right(status); } else { @@ -863,18 +960,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, - NodeTypeEnum componentTypeEnum) { + public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum) { - Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(componentTypeEnum), componentId, - GraphEdgeLabels.GROUP, NodeTypeEnum.Group, GroupData.class); + Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(componentTypeEnum), componentId, GraphEdgeLabels.GROUP, NodeTypeEnum.Group, + GroupData.class); if (childrenNodes.isRight()) { TitanOperationStatus status = childrenNodes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().logBeFailedFindAllNodesError(DELETING_ALL_GROUPS, - NodeTypeEnum.Group.name(), componentId, status.name()); + BeEcompErrorManager.getInstance().logBeFailedFindAllNodesError(DELETING_ALL_GROUPS, NodeTypeEnum.Group.name(), componentId, status.name()); } return Either.right(status); } @@ -888,8 +982,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Either<GroupData, TitanOperationStatus> deleteGroupFromGraph = deleteGroupFromGraph(uniqueId); if (deleteGroupFromGraph.isRight()) { TitanOperationStatus status = deleteGroupFromGraph.right().value(); - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_ALL_GROUPS, uniqueId, - status.name()); + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_ALL_GROUPS, uniqueId, status.name()); return Either.right(status); } GroupData groupData = deleteGroupFromGraph.left().value(); @@ -902,15 +995,13 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, - NodeTypeEnum compTypeEnum, boolean inTransaction) { + public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction) { Either<List<GroupDefinition>, StorageOperationStatus> result = null; try { - Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.deleteAllGroupsFromGraph(componentId, - compTypeEnum); + Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.deleteAllGroupsFromGraph(componentId, compTypeEnum); if (allGroups.isRight()) { TitanOperationStatus status = allGroups.right().value(); @@ -942,14 +1033,11 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, - NodeTypeEnum compTypeEnum) { + public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum) { return deleteAllGroups(componentId, compTypeEnum, false); } - public Either<List<GroupDefinition>, StorageOperationStatus> prepareGroupsForCloning( - org.openecomp.sdc.be.model.Component origResource, - ImmutablePair<List<ComponentInstance>, Map<String, String>> cloneInstances) { + public Either<List<GroupDefinition>, StorageOperationStatus> prepareGroupsForCloning(org.openecomp.sdc.be.model.Component origResource, ImmutablePair<List<ComponentInstance>, Map<String, String>> cloneInstances) { List<GroupDefinition> groupsToCreate = new ArrayList<>(); Either<List<GroupDefinition>, StorageOperationStatus> result = Either.left(groupsToCreate); @@ -966,19 +1054,18 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation gdToCreate.setUniqueId(null); gdToCreate.setMembers(null); - List<GroupProperty> properties = groupDefinition.getProperties(); + List<GroupProperty> properties = groupDefinition.convertToGroupProperties(); if (properties != null) { // Take properties which was updated in the // group(getValueUniqueUid != null), // Then set null instead of the value(prepare for the // creation). - List<GroupProperty> propertiesToUpdate = properties.stream() - .filter(p -> p.getValueUniqueUid() != null).map(p -> { - p.setValueUniqueUid(null); - return p; - }).collect(Collectors.toList()); + List<GroupProperty> propertiesToUpdate = properties.stream().filter(p -> p.getValueUniqueUid() != null).map(p -> { + p.setValueUniqueUid(null); + return p; + }).collect(Collectors.toList()); - gdToCreate.setProperties(propertiesToUpdate); + gdToCreate.convertFromGroupProperties(propertiesToUpdate); } @@ -988,8 +1075,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Map<String, String> oldCompUidToNew = cloneInstances.right; if (members != null && createdInstances != null) { - Map<String, String> compInstIdToName = createdInstances.stream() - .collect(Collectors.toMap(p -> p.getUniqueId(), p -> p.getName())); + Map<String, String> compInstIdToName = createdInstances.stream().collect(Collectors.toMap(p -> p.getUniqueId(), p -> p.getName())); Map<String, String> membersToCreate = new HashMap<>(); @@ -1018,8 +1104,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, - String componentId, List<GroupDefinition> groups, boolean inTransaction) { + public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, String componentId, List<GroupDefinition> groups, boolean inTransaction) { List<GroupDefinition> createdGroups = new ArrayList<>(); @@ -1029,8 +1114,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation if (groups != null) { for (GroupDefinition groupDefinition : groups) { - Either<GroupDefinition, StorageOperationStatus> addGroup = this.addGroup(nodeTypeEnum, componentId, - groupDefinition, true); + Either<GroupDefinition, StorageOperationStatus> addGroup = this.addGroup(nodeTypeEnum, componentId, groupDefinition, true); if (addGroup.isRight()) { StorageOperationStatus status = addGroup.right().value(); result = Either.right(status); @@ -1059,29 +1143,25 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph( - String componentInstanceId) { + public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph(String componentInstanceId) { List<String> groups = new ArrayList<>(); Either<List<String>, TitanOperationStatus> result = Either.left(groups); - Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> parentNodes = titanGenericDao - .getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), componentInstanceId, - GraphEdgeLabels.GROUP_MEMBER, NodeTypeEnum.Group, GroupData.class); + Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> parentNodes = titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), componentInstanceId, GraphEdgeLabels.GROUP_MEMBER, + NodeTypeEnum.Group, GroupData.class); if (parentNodes.isRight()) { TitanOperationStatus status = parentNodes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().logBeFailedFindParentError("FetchGroupMembers", componentInstanceId, - status.name()); + BeEcompErrorManager.getInstance().logBeFailedFindParentError("FetchGroupMembers", componentInstanceId, status.name()); } return Either.right(status); } List<ImmutablePair<GroupData, GraphEdge>> fetchedGroups = parentNodes.left().value(); if (fetchedGroups != null) { - List<String> list = fetchedGroups.stream().map(p -> p.left.getGroupDataDefinition().getUniqueId()) - .collect(Collectors.toList()); + List<String> list = fetchedGroups.stream().map(p -> p.left.getGroupDataDefinition().getUniqueId()).collect(Collectors.toList()); groups.addAll(list); } @@ -1090,15 +1170,13 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance( - String componentInstanceId, boolean inTransaction) { + public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId, boolean inTransaction) { Either<List<String>, StorageOperationStatus> result = null; try { - Either<List<String>, TitanOperationStatus> groups = this - .getAssociatedGroupsToComponentInstanceFromGraph(componentInstanceId); + Either<List<String>, TitanOperationStatus> groups = this.getAssociatedGroupsToComponentInstanceFromGraph(componentInstanceId); if (groups.isRight()) { TitanOperationStatus status = groups.right().value(); @@ -1129,14 +1207,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance( - String componentInstanceId) { + public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId) { return getAssociatedGroupsToComponentInstance(componentInstanceId, false); } @Override - public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph( - List<String> groups, String componentInstanceId, String compInstName) { + public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph(List<String> groups, String componentInstanceId, String compInstName) { List<GraphRelation> relations = new ArrayList<>(); Either<List<GraphRelation>, TitanOperationStatus> result = Either.left(relations); @@ -1150,14 +1226,11 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), compInstName); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, - compInstData, GraphEdgeLabels.GROUP_MEMBER, props); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, compInstData, GraphEdgeLabels.GROUP_MEMBER, props); if (createRelation.isRight()) { TitanOperationStatus status = createRelation.right().value(); - String description = "Failed to associate group " + groupData.getUniqueId() - + " to component instance " + compInstName + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ASSOCIATING_GROUP_TO_COMP_INST, description, - ErrorSeverity.ERROR); + String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + compInstName + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ASSOCIATING_GROUP_TO_COMP_INST, description, ErrorSeverity.ERROR); result = Either.right(status); break; } @@ -1171,21 +1244,18 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return result; } - public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, - String compInstName) { + public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName) { return associateGroupsToComponentInstance(groups, componentInstanceId, compInstName, false); } @Override - public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, - String compInstName, boolean inTransaction) { + public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName, boolean inTransaction) { StorageOperationStatus result = null; try { - Either<List<GraphRelation>, TitanOperationStatus> either = this - .associateGroupsToComponentInstanceOnGraph(groups, componentInstanceId, compInstName); + Either<List<GraphRelation>, TitanOperationStatus> either = this.associateGroupsToComponentInstanceOnGraph(groups, componentInstanceId, compInstName); if (either.isRight()) { TitanOperationStatus status = either.right().value(); @@ -1215,14 +1285,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, - NodeTypeEnum componentTypeEnum, String artifactId) { + public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String artifactId) { List<GraphRelation> relations = new ArrayList<>(); Either<List<GraphRelation>, TitanOperationStatus> result = Either.left(relations); - Either<List<GroupDefinition>, TitanOperationStatus> allGroupsFromGraph = getAllGroupsFromGraph(componentId, - componentTypeEnum, true, true, false); + Either<List<GroupDefinition>, TitanOperationStatus> allGroupsFromGraph = getAllGroupsFromGraph(componentId, componentTypeEnum, true, true, false); if (allGroupsFromGraph.isRight()) { TitanOperationStatus status = allGroupsFromGraph.right().value(); return Either.right(status); @@ -1234,9 +1302,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } // Find all groups which contains this artifact id - List<GroupDefinition> associatedGroups = allGroups.stream() - .filter(p -> p.getArtifacts() != null && p.getArtifacts().contains(artifactId)) - .collect(Collectors.toList()); + List<GroupDefinition> associatedGroups = allGroups.stream().filter(p -> p.getArtifacts() != null && p.getArtifacts().contains(artifactId)).collect(Collectors.toList()); if (associatedGroups != null && false == associatedGroups.isEmpty()) { log.debug("The groups {} contains the artifact {}", associatedGroups.stream().map(p -> p.getName()).collect(Collectors.toList()), artifactId); @@ -1244,8 +1310,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation UniqueIdData artifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId); for (GroupDefinition groupDefinition : associatedGroups) { UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.Group, groupDefinition.getUniqueId()); - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, - artifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, artifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); if (deleteRelation.isRight()) { TitanOperationStatus status = deleteRelation.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { @@ -1266,18 +1331,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } - public Either<GroupDefinition, TitanOperationStatus> getGroupFromGraph(String uniqueId, boolean skipProperties, - boolean skipMembers, boolean skipArtifacts) { + public Either<GroupDefinition, TitanOperationStatus> getGroupFromGraph(String uniqueId, boolean skipProperties, boolean skipMembers, boolean skipArtifacts) { Either<GroupDefinition, TitanOperationStatus> result = null; - Either<GroupData, TitanOperationStatus> groupRes = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), uniqueId, GroupData.class); + Either<GroupData, TitanOperationStatus> groupRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), uniqueId, GroupData.class); if (groupRes.isRight()) { TitanOperationStatus status = groupRes.right().value(); log.debug("Failed to retrieve group {} from graph. Status is {}", uniqueId, status); - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Group", uniqueId, - String.valueOf(status)); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Group", uniqueId, String.valueOf(status)); result = Either.right(status); return result; } @@ -1324,13 +1386,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } } else { List<GroupProperty> properties = propertiesRes.left().value(); - groupDefinition.setProperties(properties); + groupDefinition.convertFromGroupProperties(properties); } } if (false == skipArtifacts) { - Either<List<ImmutablePair<String, String>>, TitanOperationStatus> artifactsRes = getGroupArtifactsPairs( - uniqueId); + Either<List<ImmutablePair<String, String>>, TitanOperationStatus> artifactsRes = getGroupArtifactsPairs(uniqueId); if (artifactsRes.isRight()) { TitanOperationStatus status = artifactsRes.right().value(); if (status != TitanOperationStatus.OK) { @@ -1376,14 +1437,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } } - protected Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, - NodeTypeEnum componentTypeEnum, boolean skipProperties, boolean skipMembers, boolean skipArtifacts) { + protected Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum, boolean skipProperties, boolean skipMembers, boolean skipArtifacts) { List<GroupDefinition> groups = new ArrayList<GroupDefinition>(); - Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(componentTypeEnum), componentId, - GraphEdgeLabels.GROUP, NodeTypeEnum.Group, GroupData.class); + Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(componentTypeEnum), componentId, GraphEdgeLabels.GROUP, NodeTypeEnum.Group, + GroupData.class); if (childrenNodes.isRight()) { TitanOperationStatus status = childrenNodes.right().value(); @@ -1403,8 +1462,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation for (ImmutablePair<GroupData, GraphEdge> pair : graphGroups) { String groupUniqueId = pair.left.getGroupDataDefinition().getUniqueId(); - Either<GroupDefinition, TitanOperationStatus> groupRes = this.getGroupFromGraph(groupUniqueId, - skipProperties, skipMembers, skipArtifacts); + Either<GroupDefinition, TitanOperationStatus> groupRes = this.getGroupFromGraph(groupUniqueId, skipProperties, skipMembers, skipArtifacts); if (groupRes.isRight()) { TitanOperationStatus status = groupRes.right().value(); @@ -1422,14 +1480,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, - String artifactId, boolean inTransaction) { + public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId, boolean inTransaction) { StorageOperationStatus result = null; try { - Either<List<GraphRelation>, TitanOperationStatus> either = this - .dissociateAllGroupsFromArtifactOnGraph(componentId, componentTypeEnum, artifactId); + Either<List<GraphRelation>, TitanOperationStatus> either = this.dissociateAllGroupsFromArtifactOnGraph(componentId, componentTypeEnum, artifactId); if (either.isRight()) { TitanOperationStatus status = either.right().value(); @@ -1459,18 +1515,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, - String artifactId) { + public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId) { return dissociateAllGroupsFromArtifact(componentId, componentTypeEnum, artifactId, false); } @Override - public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { + public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { - Either<List<GroupDefinition>, TitanOperationStatus> allGroupsFromGraph = getAllGroupsFromGraph(componentId, - componentTypeEnum, true, true, false); + Either<List<GroupDefinition>, TitanOperationStatus> allGroupsFromGraph = getAllGroupsFromGraph(componentId, componentTypeEnum, true, true, false); if (allGroupsFromGraph.isRight()) { TitanOperationStatus status = allGroupsFromGraph.right().value(); return status; @@ -1482,26 +1535,22 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } // Find all groups which contains this artifact id - List<GroupDefinition> associatedGroups = allGroups.stream() - .filter(p -> p.getArtifacts() != null && p.getArtifacts().contains(oldArtifactId)) - .collect(Collectors.toList()); + List<GroupDefinition> associatedGroups = allGroups.stream().filter(p -> p.getArtifacts() != null && p.getArtifacts().contains(oldArtifactId)).collect(Collectors.toList()); if (associatedGroups != null && false == associatedGroups.isEmpty()) { log.debug("The groups {} contains the artifact {}", associatedGroups.stream().map(p -> p.getName()).collect(Collectors.toList()), oldArtifactId); UniqueIdData oldArtifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, oldArtifactId); - UniqueIdData newArtifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, - newArtifact.getArtifactDataDefinition().getUniqueId()); + UniqueIdData newArtifactData = new UniqueIdData(NodeTypeEnum.ArtifactRef, newArtifact.getArtifactDataDefinition().getUniqueId()); Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), newArtifactData.getLabel()); for (GroupDefinition groupDefinition : associatedGroups) { UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.Group, groupDefinition.getUniqueId()); - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, - oldArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); - log.trace("After dissociate group {} from artifac {}", groupDefinition.getName(), oldArtifactId); + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, oldArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); + log.trace("After dissociate group {} from artifact {}" , groupDefinition.getName(), oldArtifactId); if (deleteRelation.isRight()) { TitanOperationStatus status = deleteRelation.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { @@ -1510,9 +1559,8 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation return status; } - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, - newArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF, props); - log.trace("After associate group {} to artifact {}", groupDefinition.getName(), newArtifact.getUniqueIdKey()); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, newArtifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF, props); + log.trace("After associate group {} to artifact {}" , groupDefinition.getName(), newArtifact.getUniqueIdKey()); if (createRelation.isRight()) { TitanOperationStatus status = createRelation.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { @@ -1527,14 +1575,12 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact, boolean inTransaction) { + public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact, boolean inTransaction) { StorageOperationStatus result = null; try { - TitanOperationStatus status = this.dissociateAndAssociateGroupsFromArtifactOnGraph(componentId, - componentTypeEnum, oldArtifactId, newArtifact); + TitanOperationStatus status = this.dissociateAndAssociateGroupsFromArtifactOnGraph(componentId, componentTypeEnum, oldArtifactId, newArtifact); if (status != TitanOperationStatus.OK && status != TitanOperationStatus.NOT_FOUND) { result = DaoStatusConverter.convertTitanStatusToStorageStatus(status); @@ -1560,20 +1606,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } @Override - public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, - NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { - return dissociateAndAssociateGroupsFromArtifact(componentId, componentTypeEnum, oldArtifactId, newArtifact, - false); + public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) { + return dissociateAndAssociateGroupsFromArtifact(componentId, componentTypeEnum, oldArtifactId, newArtifact, false); } - private Either<List<ImmutablePair<String, String>>, TitanOperationStatus> getGroupArtifactsPairs( - String groupUniqueId) { + private Either<List<ImmutablePair<String, String>>, TitanOperationStatus> getGroupArtifactsPairs(String groupUniqueId) { Either<List<ImmutablePair<String, String>>, TitanOperationStatus> result = null; - Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, - GraphEdgeLabels.GROUP_ARTIFACT_REF, NodeTypeEnum.ArtifactRef, ArtifactData.class); + Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, GraphEdgeLabels.GROUP_ARTIFACT_REF, + NodeTypeEnum.ArtifactRef, ArtifactData.class); if (childrenNodes.isRight()) { TitanOperationStatus status = childrenNodes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { @@ -1631,8 +1673,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation */ public Either<GroupDefinition, TitanOperationStatus> updateGroupVersionOnGraph(String groupUniqueId) { - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupUniqueId, false, - false, false); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupUniqueId, false, false, false); if (groupFromGraph.isRight()) { TitanOperationStatus status = groupFromGraph.right().value(); @@ -1661,10 +1702,11 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } } + + /** - * The version of the group is an integer. In order to support BC, we might - * get a version in a float format. + * The version of the group is an integer. In order to support BC, we might get a version in a float format. * * @param version * @return @@ -1680,23 +1722,20 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } - public Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph(String groupId, - List<String> artifactsId) { + public Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph(String groupId, List<String> artifactsId) { if (artifactsId == null || artifactsId.isEmpty()) { return Either.right(TitanOperationStatus.OK); } for (String artifactId : artifactsId) { - Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class); + Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class); if (findArtifactRes.isRight()) { TitanOperationStatus status = findArtifactRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } - String description = "Failed to associate group " + groupId + " to artifact " + artifactId - + " in graph. Status is " + status; + String description = "Failed to associate group " + groupId + " to artifact " + artifactId + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } @@ -1705,69 +1744,56 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation props.put(GraphPropertiesDictionary.NAME.getProperty(), findArtifactRes.left().value().getLabel()); GraphNode groupData = new UniqueIdData(NodeTypeEnum.Group, groupId); - Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = titanGenericDao.createRelation( - groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props); + Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = titanGenericDao.createRelation(groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props); if (addArtifactsRefResult.isRight()) { TitanOperationStatus status = addArtifactsRefResult.right().value(); - String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " - + artifactId + " in graph. Status is " + status; + String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, - false); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false); return groupFromGraph; } - public Either<GroupDefinition, TitanOperationStatus> associateMembersToGroupOnGraph(String groupId, - Map<String, String> members) { + public Either<GroupDefinition, TitanOperationStatus> associateMembersToGroupOnGraph(String groupId, Map<String, String> members) { if (members != null && false == members.isEmpty()) { Either<GraphRelation, TitanOperationStatus> addMembersRefResult = null; for (Entry<String, String> member : members.entrySet()) { - Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), - ComponentInstanceData.class); + Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), ComponentInstanceData.class); if (findComponentInstanceRes.isRight()) { TitanOperationStatus status = findComponentInstanceRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } - String description = "Failed to find to find component instance group " + member.getValue() - + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, - ErrorSeverity.ERROR); + String description = "Failed to find to find component instance group " + member.getValue() + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), member.getKey()); GraphNode groupData = new UniqueIdData(NodeTypeEnum.Group, groupId); - addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), - GraphEdgeLabels.GROUP_MEMBER, props); + addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), GraphEdgeLabels.GROUP_MEMBER, props); if (addMembersRefResult.isRight()) { TitanOperationStatus status = addMembersRefResult.right().value(); - String description = "Failed to associate group " + groupData.getUniqueId() - + " to component instance " + member.getValue() + " in graph. Status is " + status; - BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, - ErrorSeverity.ERROR); + String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + member.getValue() + " in graph. Status is " + status; + BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } } - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, false, - true); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, false, true); return groupFromGraph; } - public Either<GroupDefinition, TitanOperationStatus> dissociateArtifactsFromGroupOnGraph(String groupId, - List<String> artifactsId) { + public Either<GroupDefinition, TitanOperationStatus> dissociateArtifactsFromGroupOnGraph(String groupId, List<String> artifactsId) { if (artifactsId == null || artifactsId.isEmpty()) { return Either.right(TitanOperationStatus.OK); @@ -1777,32 +1803,28 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation for (String artifactId : artifactsId) { UniqueIdData artifactData = new UniqueIdData(NodeTypeEnum.Group, artifactId); - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, - artifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); - log.trace("After dissociate group {} from artifact {}", groupId, artifactId); + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, artifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF); + log.trace("After dissociate group {} from artifact {}" ,groupId, artifactId); if (deleteRelation.isRight()) { TitanOperationStatus status = deleteRelation.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } - String description = "Failed to diassociate group " + groupId + " from artifact " + artifactId - + " in graph. Status is " + status; + String description = "Failed to diassociate group " + groupId + " from artifact " + artifactId + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, - false); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false); return groupFromGraph; } - public Either<GroupDefinition, TitanOperationStatus> dissociateMembersFromGroupOnGraph(String groupId, - Map<String, String> members) { + public Either<GroupDefinition, TitanOperationStatus> dissociateMembersFromGroupOnGraph(String groupId, Map<String, String> members) { if (members == null || members.isEmpty()) { return Either.right(TitanOperationStatus.OK); @@ -1812,25 +1834,22 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation for (Entry<String, String> member : members.entrySet()) { UniqueIdData artifactData = new UniqueIdData(NodeTypeEnum.Group, member.getValue()); - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, - artifactData, GraphEdgeLabels.GROUP_MEMBER); - log.trace("After dissociate group {} from members", groupId, member.getValue()); + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, artifactData, GraphEdgeLabels.GROUP_MEMBER); + log.trace("After dissociate group {} from members {}" ,groupId, member.getValue()); if (deleteRelation.isRight()) { TitanOperationStatus status = deleteRelation.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; } - String description = "Failed to diassociate group " + groupId + " from member " + member.getValue() - + " in graph. Status is " + status; + String description = "Failed to diassociate group " + groupId + " from member " + member.getValue() + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, - false); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false); return groupFromGraph; @@ -1844,18 +1863,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation * @param inTransaction * @return */ - public Either<GroupDefinition, StorageOperationStatus> dissociateArtifactsFromGroup(String groupId, - List<String> artifactsId, boolean inTransaction) { + public Either<GroupDefinition, StorageOperationStatus> dissociateArtifactsFromGroup(String groupId, List<String> artifactsId, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateArtifactsFromGroupOnGraph(groupId, - artifactsId); + Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateArtifactsFromGroupOnGraph(groupId, artifactsId); if (titanRes.isRight()) { - StorageOperationStatus storageOperationStatus = DaoStatusConverter - .convertTitanStatusToStorageStatus(titanRes.right().value()); + StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value()); result = Either.right(storageOperationStatus); return result; } @@ -1878,18 +1894,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } - public Either<GroupDefinition, StorageOperationStatus> dissociateMembersFromGroup(String groupId, - Map<String, String> members, boolean inTransaction) { + public Either<GroupDefinition, StorageOperationStatus> dissociateMembersFromGroup(String groupId, Map<String, String> members, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateMembersFromGroupOnGraph(groupId, - members); + Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateMembersFromGroupOnGraph(groupId, members); if (titanRes.isRight()) { - StorageOperationStatus storageOperationStatus = DaoStatusConverter - .convertTitanStatusToStorageStatus(titanRes.right().value()); + StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value()); result = Either.right(storageOperationStatus); return result; } @@ -1920,19 +1933,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation * @param inTransaction * @return */ - public Either<GroupDefinition, StorageOperationStatus> associateArtifactsToGroup(String groupId, - List<String> artifactsId, boolean inTransaction) { + public Either<GroupDefinition, StorageOperationStatus> associateArtifactsToGroup(String groupId, List<String> artifactsId, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateArtifactsToGroupOnGraph(groupId, - artifactsId); + Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateArtifactsToGroupOnGraph(groupId, artifactsId); if (titanRes.isRight()) { - StorageOperationStatus status = DaoStatusConverter - .convertTitanStatusToStorageStatus(titanRes.right().value()); + StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value()); result = Either.right(status); } @@ -1962,19 +1972,16 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation * @param inTransaction * @return */ - public Either<GroupDefinition, StorageOperationStatus> associateMembersToGroup(String groupId, - Map<String, String> members, boolean inTransaction) { + public Either<GroupDefinition, StorageOperationStatus> associateMembersToGroup(String groupId, Map<String, String> members, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateMembersToGroupOnGraph(groupId, - members); + Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateMembersToGroupOnGraph(groupId, members); if (titanRes.isRight()) { - StorageOperationStatus status = DaoStatusConverter - .convertTitanStatusToStorageStatus(titanRes.right().value()); + StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value()); result = Either.right(status); return result; } @@ -1997,18 +2004,15 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } - public Either<List<GroupDefinition>, StorageOperationStatus> updateGroupVersion(List<String> groupsId, - boolean inTransaction) { + public Either<List<GroupDefinition>, StorageOperationStatus> updateGroupVersion(List<String> groupsId, boolean inTransaction) { Either<List<GroupDefinition>, StorageOperationStatus> result = null; try { - Either<List<GroupDefinition>, TitanOperationStatus> updateGroupVersionOnGraph = this - .updateGroupVersionOnGraph(groupsId); + Either<List<GroupDefinition>, TitanOperationStatus> updateGroupVersionOnGraph = this.updateGroupVersionOnGraph(groupsId); if (updateGroupVersionOnGraph.isRight()) { - result = Either.right(DaoStatusConverter - .convertTitanStatusToStorageStatus(updateGroupVersionOnGraph.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateGroupVersionOnGraph.right().value())); return result; } @@ -2029,42 +2033,53 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } } - - public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String uniqueId, String newName, - boolean inTransaction) { + /** + * This method updates group name + * @param groupToUpdateFromUniqueId + * @param newName + * @param inTransaction + * @return + */ + public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId, + String newName, boolean inTransaction) { Either<GroupDefinition, StorageOperationStatus> result = null; try { - Either<GroupDefinition, TitanOperationStatus> updateGroupNameOnGraph = this.updateGroupNameOnGraph(uniqueId, - newName); + //Update Name + Either<GroupDefinition, TitanOperationStatus> updateGroupNameOnGraph = updateGroupNameOnGraph( + groupToUpdateFromUniqueId, newName); if (updateGroupNameOnGraph.isRight()) { result = Either.right( DaoStatusConverter.convertTitanStatusToStorageStatus(updateGroupNameOnGraph.right().value())); - return result; + } + else{ + result = Either.left(updateGroupNameOnGraph.left().value()); } + return result; - result = Either.left(updateGroupNameOnGraph.left().value()); + } finally { + handleTransactionCommitRollback(inTransaction, result); + } + } + @Override + public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId, + String newName, GroupDefinition groupToUpdateTo, boolean inTransaction) { + Either<GroupDefinition, StorageOperationStatus> result = null; + + try { + //Update Name + result = updateGroupName(groupToUpdateFromUniqueId, newName, true); return result; } finally { - if (false == inTransaction) { - if (result == null || result.isRight()) { - log.debug("Going to execute rollback on graph."); - BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph"); - titanGenericDao.rollback(); - } else { - log.debug("Going to execute commit on graph."); - titanGenericDao.commit(); - } - } + handleTransactionCommitRollback(inTransaction, result); } } private Either<GroupDefinition, TitanOperationStatus> updateGroupNameOnGraph(String uniqueId, String newName) { - Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(uniqueId, false, false, - false); + Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(uniqueId, false, false, false); if (groupFromGraph.isRight()) { TitanOperationStatus status = groupFromGraph.right().value(); @@ -2090,4 +2105,32 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation } } } + + + @Override + public StorageOperationStatus validateAndUpdatePropertyValue(GroupProperty property) { + + StorageOperationStatus result = null; + String innerType = property.getSchema() == null ? null : property.getSchema().getProperty() == null ? null : property.getSchema().getProperty().getType(); + Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll(); + Either<Object, Boolean> isValid = null; + if (allDataTypes.isRight()) { + TitanOperationStatus status = allDataTypes.right().value(); + log.debug("Failed to fetch data types from cache. Status is {}. ", status); + result = DaoStatusConverter.convertTitanStatusToStorageStatus(status); + } + if(result == null){ + isValid = propertyOperation.validateAndUpdatePropertyValue(property.getType(), property.getValue(), innerType, allDataTypes.left().value()); + if(isValid.isRight()){ + log.debug("Failed to validate property value {}. Status is {}. ", property.getValue(), StorageOperationStatus.INVALID_PROPERTY); + result = StorageOperationStatus.INVALID_PROPERTY; + } + } + if(result == null){ + String validValue = String.valueOf(isValid.left().value()); + property.setValue(validValue); + result = StorageOperationStatus.OK; + } + return result; + } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperation.java index 4251e503e6..2fcdf695be 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupTypeOperation.java @@ -27,8 +27,6 @@ import java.util.Map; import java.util.Set; import java.util.function.Function; -import javax.annotation.Resource; - import org.apache.commons.lang3.tuple.ImmutablePair; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; @@ -48,6 +46,7 @@ import org.openecomp.sdc.be.resources.data.GroupTypeData; import org.openecomp.sdc.be.resources.data.PropertyData; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import fj.data.Either; @@ -58,11 +57,14 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO String CREATE_FLOW_CONTEXT = "CreateGroupType"; String GET_FLOW_CONTEXT = "GetGroupType"; - @Resource private PropertyOperation propertyOperation; + + private TitanGenericDao titanGenericDao; - public GroupTypeOperation() { + public GroupTypeOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao, @Qualifier("property-operation")PropertyOperation propertyOperation) { super(); + this.propertyOperation = propertyOperation; + this.titanGenericDao = titanGenericDao; } private static Logger log = LoggerFactory.getLogger(GroupTypeOperation.class.getName()); @@ -83,8 +85,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO } @Override - public Either<GroupTypeDefinition, StorageOperationStatus> addGroupType(GroupTypeDefinition groupTypeDefinition, - boolean inTransaction) { + public Either<GroupTypeDefinition, StorageOperationStatus> addGroupType(GroupTypeDefinition groupTypeDefinition, boolean inTransaction) { Either<GroupTypeDefinition, StorageOperationStatus> result = null; @@ -93,10 +94,8 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO Either<GroupTypeData, TitanOperationStatus> eitherStatus = addGroupTypeToGraph(groupTypeDefinition); if (eitherStatus.isRight()) { - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError(CREATE_FLOW_CONTEXT, - groupTypeDefinition.getType(), eitherStatus.right().value().name()); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError(CREATE_FLOW_CONTEXT, groupTypeDefinition.getType(), eitherStatus.right().value().name()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); } else { GroupTypeData groupTypeData = eitherStatus.left().value(); @@ -105,8 +104,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO Either<GroupTypeDefinition, StorageOperationStatus> groupTypeRes = this.getGroupType(uniqueId, true); if (groupTypeRes.isRight()) { - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError(GET_FLOW_CONTEXT, - groupTypeDefinition.getType(), eitherStatus.right().value().name()); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError(GET_FLOW_CONTEXT, groupTypeDefinition.getType(), eitherStatus.right().value().name()); } result = groupTypeRes; @@ -125,20 +123,18 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO Either<GroupTypeDefinition, TitanOperationStatus> result = null; - Either<GroupTypeData, TitanOperationStatus> groupTypesRes = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupType), uniqueId, GroupTypeData.class); + Either<GroupTypeData, TitanOperationStatus> groupTypesRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.GroupType), uniqueId, GroupTypeData.class); if (groupTypesRes.isRight()) { TitanOperationStatus status = groupTypesRes.right().value(); - log.debug("Group type {} cannot be found in graph. Status is {}", uniqueId, status); + log.debug("Group type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } GroupTypeData gtData = groupTypesRes.left().value(); GroupTypeDefinition groupTypeDefinition = new GroupTypeDefinition(gtData.getGroupTypeDataDefinition()); - TitanOperationStatus propertiesStatus = propertyOperation.fillProperties(uniqueId, - properList -> groupTypeDefinition.setProperties(properList)); + TitanOperationStatus propertiesStatus = propertyOperation.fillProperties(uniqueId, properList -> groupTypeDefinition.setProperties(properList)); if (propertiesStatus != TitanOperationStatus.OK) { log.error("Failed to fetch properties of capability type {}", uniqueId); @@ -159,8 +155,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO @Override public Either<GroupTypeDefinition, StorageOperationStatus> getGroupType(String uniqueId, boolean inTransaction) { - Function<String, Either<GroupTypeDefinition, TitanOperationStatus>> groupTypeGetter = uId -> getGroupTypeByUid( - uId); + Function<String, Either<GroupTypeDefinition, TitanOperationStatus>> groupTypeGetter = uId -> getGroupTypeByUid(uId); return getElementType(groupTypeGetter, uniqueId, inTransaction); } @@ -171,8 +166,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO } @Override - public Either<GroupTypeDefinition, StorageOperationStatus> getLatestGroupTypeByType(String type, - boolean inTransaction) { + public Either<GroupTypeDefinition, StorageOperationStatus> getLatestGroupTypeByType(String type, boolean inTransaction) { Map<String, Object> mapCriteria = new HashMap<>(); mapCriteria.put(GraphPropertiesDictionary.TYPE.getProperty(), type); mapCriteria.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); @@ -181,8 +175,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO } - public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByCriteria(String type, - Map<String, Object> properties, boolean inTransaction) { + public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByCriteria(String type, Map<String, Object> properties, boolean inTransaction) { Either<GroupTypeDefinition, StorageOperationStatus> result = null; try { if (type == null || type.isEmpty()) { @@ -191,14 +184,11 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO return result; } - Either<List<GroupTypeData>, TitanOperationStatus> groupTypeEither = titanGenericDao - .getByCriteria(NodeTypeEnum.GroupType, properties, GroupTypeData.class); + Either<List<GroupTypeData>, TitanOperationStatus> groupTypeEither = titanGenericDao.getByCriteria(NodeTypeEnum.GroupType, properties, GroupTypeData.class); if (groupTypeEither.isRight()) { - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(groupTypeEither.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(groupTypeEither.right().value())); } else { - GroupTypeDataDefinition dataDefinition = groupTypeEither.left().value().stream() - .map(e -> e.getGroupTypeDataDefinition()).findFirst().get(); + GroupTypeDataDefinition dataDefinition = groupTypeEither.left().value().stream().map(e -> e.getGroupTypeDataDefinition()).findFirst().get(); result = getGroupType(dataDefinition.getUniqueId(), inTransaction); } @@ -210,14 +200,12 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO } @Override - public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String type, - String version) { + public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String type, String version) { return getGroupTypeByTypeAndVersion(type, version, false); } @Override - public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String type, String version, - boolean inTransaction) { + public Either<GroupTypeDefinition, StorageOperationStatus> getGroupTypeByTypeAndVersion(String type, String version, boolean inTransaction) { Map<String, Object> mapCriteria = new HashMap<>(); mapCriteria.put(GraphPropertiesDictionary.TYPE.getProperty(), type); mapCriteria.put(GraphPropertiesDictionary.VERSION.getProperty(), version); @@ -233,8 +221,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO * * 2. Add edge between the former node to its parent(if exists) * - * 3. Add property node and associate it to the node created at #1. (per - * property & if exists) + * 3. Add property node and associate it to the node created at #1. (per property & if exists) * * @param groupTypeDefinition * @return @@ -243,28 +230,25 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO log.debug("Got group type {}", groupTypeDefinition); - String ctUniqueId = UniqueIdBuilder.buildGroupTypeUid(groupTypeDefinition.getType(), - groupTypeDefinition.getVersion()); + String ctUniqueId = UniqueIdBuilder.buildGroupTypeUid(groupTypeDefinition.getType(), groupTypeDefinition.getVersion()); // capabilityTypeDefinition.setUniqueId(ctUniqueId); GroupTypeData groupTypeData = buildGroupTypeData(groupTypeDefinition, ctUniqueId); log.debug("Before adding group type to graph. groupTypeData = {}", groupTypeData); - Either<GroupTypeData, TitanOperationStatus> createGTResult = titanGenericDao.createNode(groupTypeData, - GroupTypeData.class); + Either<GroupTypeData, TitanOperationStatus> createGTResult = titanGenericDao.createNode(groupTypeData, GroupTypeData.class); log.debug("After adding group type to graph. status is = {}", createGTResult); if (createGTResult.isRight()) { TitanOperationStatus operationStatus = createGTResult.right().value(); - log.error("Failed to add group type {} to graph. Status is {}", groupTypeDefinition.getType(), operationStatus); + log.error("Failed to add group type {} to graph. status is {}", groupTypeDefinition.getType(), operationStatus); return Either.right(operationStatus); } GroupTypeData resultCTD = createGTResult.left().value(); List<PropertyDefinition> properties = groupTypeDefinition.getProperties(); - Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapablityType = propertyOperation - .addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.GroupType, properties); + Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapablityType = propertyOperation.addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.GroupType, properties); if (addPropertiesToCapablityType.isRight()) { log.error("Failed add properties {} to capability {}", properties, groupTypeDefinition.getType()); return Either.right(addPropertiesToCapablityType.right().value()); @@ -276,14 +260,9 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO // TODO: Need to find the parent. need to take the latest one since // we may have many versions of the same type /* - * log.debug("Before creating relation between group type {} to its parent {}", ctUniqueId, derivedFrom); UniqueIdData from - * = new UniqueIdData(NodeTypeEnum.CapabilityType, ctUniqueId); - * UniqueIdData to = new UniqueIdData(NodeTypeEnum.CapabilityType, - * derivedFrom); Either<GraphRelation, TitanOperationStatus> - * createRelation = titanGenericDao .createRelation(from, to, - * GraphEdgeLabels.DERIVED_FROM, null); - * log.debug("After create relation between capability type {} to its parent {}. Status is {}", ctUniqueId, derivedFrom, if (createRelation.isRight()) { return - * Either.right(createRelation.right().value()); } + * log.debug("Before creating relation between group type {} to its parent {}", ctUniqueId, derivedFrom); UniqueIdData from = new UniqueIdData(NodeTypeEnum.CapabilityType, ctUniqueId); UniqueIdData to = new + * UniqueIdData(NodeTypeEnum.CapabilityType, derivedFrom); Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao .createRelation(from, to, GraphEdgeLabels.DERIVED_FROM, null); + * log.debug("After create relation between capability type {} to its parent {}. status is {}", ctUniqueId, derivedFrom, createRelation); if (createRelation.isRight()) { return Either.right(createRelation.right().value()); } * */ } @@ -302,8 +281,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO protected CapabilityTypeDefinition convertCTDataToCTDefinition(CapabilityTypeData capabilityTypeData) { log.debug("The object returned after create capability is {}", capabilityTypeData); - CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition( - capabilityTypeData.getCapabilityTypeDataDefinition()); + CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition(capabilityTypeData.getCapabilityTypeDataDefinition()); return capabilityTypeDefResult; } @@ -323,12 +301,10 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO return groupTypeData; } - public Either<Boolean, StorageOperationStatus> isCapabilityTypeDerivedFrom(String childCandidateType, - String parentCandidateType) { + public Either<Boolean, StorageOperationStatus> isCapabilityTypeDerivedFrom(String childCandidateType, String parentCandidateType) { Map<String, Object> propertiesToMatch = new HashMap<String, Object>(); propertiesToMatch.put(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childCandidateType); - Either<List<CapabilityTypeData>, TitanOperationStatus> getResponse = titanGenericDao - .getByCriteria(NodeTypeEnum.CapabilityType, propertiesToMatch, CapabilityTypeData.class); + Either<List<CapabilityTypeData>, TitanOperationStatus> getResponse = titanGenericDao.getByCriteria(NodeTypeEnum.CapabilityType, propertiesToMatch, CapabilityTypeData.class); if (getResponse.isRight()) { TitanOperationStatus titanOperationStatus = getResponse.right().value(); log.debug("Couldn't fetch capability type {}, error: {}", childCandidateType, titanOperationStatus); @@ -338,14 +314,12 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO Set<String> travelledTypes = new HashSet<>(); do { travelledTypes.add(childUniqueId); - Either<List<ImmutablePair<CapabilityTypeData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childUniqueId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.CapabilityType, CapabilityTypeData.class); + Either<List<ImmutablePair<CapabilityTypeData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityType), childUniqueId, GraphEdgeLabels.DERIVED_FROM, + NodeTypeEnum.CapabilityType, CapabilityTypeData.class); if (childrenNodes.isRight()) { if (childrenNodes.right().value() != TitanOperationStatus.NOT_FOUND) { TitanOperationStatus titanOperationStatus = getResponse.right().value(); - log.debug("Couldn't fetch derived from node for capability type {}, error: {}", childCandidateType, - titanOperationStatus); + log.debug("Couldn't fetch derived from node for capability type {}, error: {}", childCandidateType, titanOperationStatus); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanOperationStatus)); } else { log.debug("Derived from node is not found for type {} - this is OK for root capability."); @@ -354,8 +328,7 @@ public class GroupTypeOperation extends AbstractOperation implements IGroupTypeO } String derivedFromUniqueId = childrenNodes.left().value().get(0).getLeft().getUniqueId(); if (derivedFromUniqueId.equals(parentCandidateType)) { - log.debug("Verified that capability type {} derives from capability type {}", childCandidateType, - parentCandidateType); + log.debug("Verified that capability type {} derives from capability type {}", childCandidateType, parentCandidateType); return Either.left(true); } childUniqueId = derivedFromUniqueId; diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/HeatParametersOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/HeatParametersOperation.java index 5d7b8c5991..ad56779a94 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/HeatParametersOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/HeatParametersOperation.java @@ -128,7 +128,7 @@ public class HeatParametersOperation implements IHeatParametersOperation { for (ImmutablePair<HeatParameterValueData, GraphEdge> immutablePair : values) { GraphEdge edge = immutablePair.getValue(); String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty()); - log.trace("Heat value " + propertyName + " is associated to node " + parentUniqueId); + log.trace("Heat value {} is associated to node {}", propertyName,parentUniqueId); HeatParameterValueData propertyData = immutablePair.getKey(); heatValues.add(propertyData); @@ -193,17 +193,17 @@ public class HeatParametersOperation implements IHeatParametersOperation { } - log.debug("The heat values deleted from node {} are {}", parentUniqueId, heatValues); + log.debug("The heat values deleted from node {} are {}" , parentUniqueId, heatValues); return StorageOperationStatus.OK; } private Either<HeatParameterData, TitanOperationStatus> deleteHeatParameterFromGraph(String propertyId) { - log.debug("Before deleting heat parameter from graph {}", propertyId); + log.debug("Before deleting heat parameter from graph {}" , propertyId); return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameter), propertyId, HeatParameterData.class); } private Either<HeatParameterValueData, TitanOperationStatus> deleteHeatParameterValueFromGraph(String propertyId) { - log.debug("Before deleting heat parameter from graph {}", propertyId); + log.debug("Before deleting heat parameter from graph {}" , propertyId); return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameterValue), propertyId, HeatParameterValueData.class); } @@ -215,17 +215,6 @@ public class HeatParametersOperation implements IHeatParametersOperation { String propertyName = propertyDefinition.getName(); - // type and value should be validated in business logic: - // ArtifactsBusinessLogic.validateAndConvertHeatParamers(ArtifactDefinition) - - // StorageOperationStatus validateAndUpdateProperty = - // validateAndUpdateProperty(propertyDefinition); - // if (validateAndUpdateProperty != StorageOperationStatus.OK) { - // log.error("Property " + propertyDefinition + " is invalid. - // Status is " + validateAndUpdateProperty); - // return StorageOperationStatus.BAD_REQUEST; - // } - Either<HeatParameterData, TitanOperationStatus> addPropertyToGraph = addPropertyToGraph(propertyName, propertyDefinition, parentId, nodeType); if (addPropertyToGraph.isRight()) { @@ -264,12 +253,12 @@ public class HeatParametersOperation implements IHeatParametersOperation { propertyDefinition.setUniqueId(UniqueIdBuilder.buildHeatParameterUniqueId(parentId, propertyName)); HeatParameterData propertyData = new HeatParameterData(propertyDefinition); - log.debug("Before adding property to graph {}", propertyData); + log.debug("Before adding property to graph {}" , propertyData); Either<HeatParameterData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData, HeatParameterData.class); - log.debug("After adding property to graph {}", propertyData); + log.debug("After adding property to graph {}" , propertyData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add property {} to graph. Status is {}", propertyName, operationStatus); + log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus); return Either.right(operationStatus); } @@ -278,10 +267,7 @@ public class HeatParametersOperation implements IHeatParametersOperation { Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(parentNode, propertyData, GraphEdgeLabels.HEAT_PARAMETER, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - - if (log.isDebugEnabled()) { - log.error("Failed to associate {} {} to heat parameter {} in graph. Status is {}", nodeType.getName(), parentId, propertyName, operationStatus); - } + log.error("Failed to associate {} {} to heat parameter {} in graph. status is {}", nodeType.getName(), parentId, propertyName, operationStatus); return Either.right(operationStatus); } @@ -291,13 +277,13 @@ public class HeatParametersOperation implements IHeatParametersOperation { public StorageOperationStatus validateAndUpdateProperty(HeatParameterDefinition propertyDefinition) { - log.trace("Going to validate property type and value. {}", propertyDefinition); + log.trace("Going to validate property type and value. {}" , propertyDefinition); String propertyType = propertyDefinition.getType(); HeatParameterType type = getType(propertyType); if (type == null) { - log.info("The type {} of heat is invalid", type); + log.info("The type {} of heat parameter is invalid", type); return StorageOperationStatus.INVALID_TYPE; } @@ -316,7 +302,8 @@ public class HeatParametersOperation implements IHeatParametersOperation { PropertyValueConverter converter = type.getConverter(); if (isEmptyValue(defaultValue)) { - log.debug("Default value was not sent for property {}. Set default value to {}", propertyDefinition.getName(), EMPTY_VALUE); + log.debug("Default value was not sent for property {}. Set default value to {}", propertyDefinition.getName() , EMPTY_VALUE); + propertyDefinition.setDefaultValue(EMPTY_VALUE); } else if (false == isEmptyValue(defaultValue)) { String convertedValue = converter.convert(defaultValue, null, null); @@ -333,6 +320,7 @@ public class HeatParametersOperation implements IHeatParametersOperation { if (isEmptyValue(value)) { log.debug("Value was not sent for property {}. Set value to {}", propertyDefinition.getName(), EMPTY_VALUE); + propertyDefinition.setCurrentValue(EMPTY_VALUE); } else if (!value.equals("")) { String convertedValue = converter.convert(value, null, null); @@ -465,7 +453,7 @@ public class HeatParametersOperation implements IHeatParametersOperation { log.debug("After adding property to graph {}", heatValueData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add heat value {} to graph. Status is {}", heatValueData.getUniqueId(), operationStatus); + log.error("Failed to add heat value {} to graph. status is {}", heatValueData.getUniqueId(), operationStatus); return Either.right(operationStatus); } @@ -474,14 +462,14 @@ public class HeatParametersOperation implements IHeatParametersOperation { Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(heatEnvNode, heatValueData, GraphEdgeLabels.PARAMETER_VALUE, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate heat value {} to heat env artifact {} in graph. Status is {}", heatValueData.getUniqueId(), artifactId, operationStatus); + log.error("Failed to associate heat value {} to heat env artifact {} in graph. status is {}", heatValueData.getUniqueId(), artifactId, operationStatus); return Either.right(operationStatus); } UniqueIdData heatParameterNode = new UniqueIdData(NodeTypeEnum.HeatParameter, heatParameter.getUniqueId()); Either<GraphRelation, TitanOperationStatus> createRel2Result = titanGenericDao.createRelation(heatValueData, heatParameterNode, GraphEdgeLabels.PARAMETER_IMPL, null); if (createRel2Result.isRight()) { TitanOperationStatus operationStatus = createRel2Result.right().value(); - log.error("Failed to associate heat value {} to heat parameter {} in graph. Status is {}", heatValueData.getUniqueId(), heatParameter.getName(), operationStatus); + log.error("Failed to associate heat value {} to heat parameter {} in graph. status is {}", heatValueData.getUniqueId(), heatParameter.getName(), operationStatus); return Either.right(operationStatus); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java index e2d13a9cff..dba4ff9b75 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java @@ -28,12 +28,15 @@ import java.util.Map; import java.util.Map.Entry; import java.util.stream.Collectors; +import javax.json.Json; + import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.process.traversal.Order; import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.Edge; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.json.simple.JSONObject; +import org.json.simple.parser.ParseException; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity; import org.openecomp.sdc.be.dao.graph.GraphElementFactory; @@ -45,15 +48,18 @@ import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels; import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary; import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; import org.openecomp.sdc.be.dao.titan.TitanOperationStatus; +import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition; + import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.ComponentInstInputsMap; import org.openecomp.sdc.be.model.ComponentInstance; import org.openecomp.sdc.be.model.ComponentInstanceInput; +import org.openecomp.sdc.be.model.ComponentInstancePropInput; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.DataTypeDefinition; -import org.openecomp.sdc.be.model.GetInputValueInfo; import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.PropertyConstraint; +import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.operations.api.IInputsOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.resources.data.AttributeData; @@ -70,6 +76,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.yaml.snakeyaml.Yaml; import com.google.gson.Gson; import com.thinkaurelius.titan.core.TitanEdge; @@ -83,9 +90,13 @@ import fj.data.Either; @Component("input-operation") public class InputsOperation extends AbstractOperation implements IInputsOperation { + private static final String GET_INPUT = "get_input"; + private static String ASSOCIATING_INPUT_TO_PROP = "AssociatingInputToComponentInstanceProperty"; private static Logger log = LoggerFactory.getLogger(InputsOperation.class.getName()); + @Autowired + PropertyOperation propertyOperation; @Autowired private ComponentInstanceOperation componentInstanceOperation; @@ -95,18 +106,103 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati * Delete specific input from component Although inputId is unique, pass also componentId as all other methods, and also check that the inputId is inside that componentId. */ @Override - public Either<String, StorageOperationStatus> deleteInput(String inputId) { + public Either<InputDefinition, StorageOperationStatus> deleteInput(String inputId) { log.debug(String.format("Before deleting input: %s from graph", inputId)); + List<ComponentInstanceInput> inputsValueList = null; + List<ComponentInstanceProperty> propertyList = new ArrayList<>(); + + Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId); + + if (vertexService.isRight()) { + log.debug("failed to fetch vertex of resource input for id = {}", inputId); + TitanOperationStatus status = vertexService.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + + StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status); + return Either.right(convertTitanStatusToStorageStatus); + } + TitanVertex vertex = vertexService.left().value(); + Iterator<Edge> edgeIter = vertex.edges(Direction.IN, GraphEdgeLabels.INPUT.getProperty()); + + if (edgeIter == null) { + log.debug("No edges in graph for criteria"); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND)); + } + String inputName = ""; + if (edgeIter != null) { + while (edgeIter.hasNext()) { + Edge edge = edgeIter.next(); + GraphEdge graphEdge = null; + + Map<String, Object> edgeProps = titanGenericDao.getProperties(edge); + GraphEdgeLabels edgeTypeFromGraph = GraphEdgeLabels.getByName(edge.label()); + graphEdge = new GraphEdge(edgeTypeFromGraph, edgeProps); + + inputName = (String) graphEdge.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty()); + + } + } + + Either<List<ComponentInstanceInput>, TitanOperationStatus> inputsValueStatus = this.getComponentInstanceInputsByInputId(inputId); if(inputsValueStatus.isLeft()){ - List<ComponentInstanceInput> inputsValueLis = inputsValueStatus.left().value(); - if(!inputsValueLis.isEmpty()){ - for(ComponentInstanceInput inputValue: inputsValueLis){ + inputsValueList = inputsValueStatus.left().value(); + if(!inputsValueList.isEmpty()){ + for(ComponentInstanceInput inputValue: inputsValueList){ Either<InputValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InputValue), inputValue.getValueUniqueUid(), InputValueData.class); if (deleteNode.isRight()) { StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value()); return Either.right(convertTitanStatusToStorageStatus); - } + } + } + } + // US848813 delete service input that relates to VL / CP property + } else { + Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValueStatus = getComponentInstancePropertiesByInputId(inputId); + if(propertyValueStatus.isLeft() && !propertyValueStatus.left().value().isEmpty()){ + //propertyList = propertyValueStatus.left().value(); + for(ComponentInstanceProperty propertyValue: propertyValueStatus.left().value()){ + + String value = propertyValue.getValue(); + Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(value); + + resetInputName(mappedToscaTemplate, inputName); + + value = gson.toJson(mappedToscaTemplate); + propertyValue.setValue(value); + String compInstId = propertyValue.getComponentInstanceId(); + propertyValue.setRules(null); + + Either<PropertyValueData, TitanOperationStatus> eitherStatus = componentInstanceOperation.updatePropertyOfResourceInstance(propertyValue, compInstId, false); + + if (eitherStatus.isRight()) { + log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", propertyValue, compInstId, eitherStatus.right().value().name()); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + + } else { + PropertyValueData propertyValueData = eitherStatus.left().value(); + + ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, propertyValue); + + log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); + + Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(propertyValue.getPath(), propertyValueData.getUniqueId(), propertyValue.getDefaultValue()); + if (findDefaultValue.isRight()) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value())); + + } + String defaultValue = findDefaultValue.left().value(); + propertyValueResult.setDefaultValue(defaultValue); + log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue); + + propertyValueResult.setComponentInstanceId(compInstId); + propertyList.add(propertyValueResult); + + + } + } } } @@ -115,7 +211,11 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value()); return Either.right(convertTitanStatusToStorageStatus); } else { - return Either.left(inputId); + InputDefinition inputDefinition = this.convertInputDataToInputDefinition(deleteNode.left().value()); + inputDefinition.setInputs(inputsValueList); + inputDefinition.setProperties(propertyList); + inputDefinition.setName(inputName); + return Either.left(inputDefinition); } } @@ -131,7 +231,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(propertyDefinition, dataTypes); if (validateAndUpdateProperty != StorageOperationStatus.OK) { - log.error("Property " + propertyDefinition + " is invalid. Status is " + validateAndUpdateProperty); + log.error("Property {} is invalid. Status is {}", propertyDefinition, validateAndUpdateProperty); return Either.right(TitanOperationStatus.INVALID_PROPERTY); } @@ -312,6 +412,8 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); log.error("Failed to add input {} to graph. status is {}", propertyName, operationStatus); + if(operationStatus == TitanOperationStatus.TITAN_SCHEMA_VIOLATION ) + return Either.right(TitanOperationStatus.ALREADY_EXIST); return Either.right(operationStatus); } @@ -447,7 +549,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati public <ElementDefinition> TitanOperationStatus findAllResourceElementsDefinitionRecursively(String resourceId, List<ElementDefinition> elements, NodeElementFetcher<ElementDefinition> singleNodeFetcher) { - log.trace("Going to fetch elements under resource {}", resourceId); + log.trace("Going to fetch elements under resource {}" , resourceId); TitanOperationStatus resourceAttributesStatus = singleNodeFetcher.findAllNodeElements(resourceId, elements); if (resourceAttributesStatus != TitanOperationStatus.OK) { @@ -514,7 +616,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati } - public TitanOperationStatus associatePropertyToInput(String riId, String inputId, ComponentInstanceProperty property, GetInputValueInfo getInput) { + public TitanOperationStatus associatePropertyToInput(String riId, String inputId, ComponentInstanceProperty property, GetInputValueDataDefinition getInput) { TitanOperationStatus status = TitanOperationStatus.OK; Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph(); if (graphRes.isRight()) { @@ -536,10 +638,14 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati if(getInput!=null){ props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), getInput.getPropName()); if (getInput.isList()) { - String index = getInput.getIndexValue().toString(); - if (getInput.getGetInputIndex() != null) { - index = getInput.getGetInputIndex().getInputName(); - + String index = ""; + if(getInput.getIndexValue()!= null ){ + index = getInput.getIndexValue().toString(); + }else{ + if (getInput.getGetInputIndex() != null) { + index = getInput.getGetInputIndex().getInputName(); + + } } props.put(GraphEdgePropertiesDictionary.GET_INPUT_INDEX.getProperty(), index); } @@ -627,7 +733,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati } - groupDefinition.setInputsValue(propsList); + groupDefinition.setInputs(propsList); } } @@ -704,7 +810,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllRes = getAllInputsOfResourceInstanceOnlyInputDefId(resourceInstanceId); if (getAllRes.isRight()) { TitanOperationStatus status = getAllRes.right().value(); - log.trace("After fetching all properties of resource instance {}. Status is {}", resourceInstanceId, status); + log.trace("After fetching all properties of resource instance {}. Status is {}" ,resourceInstanceId, status); return new ImmutablePair<TitanOperationStatus, String>(status, null); } @@ -713,7 +819,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati for (ComponentInstanceInput instanceProperty : list) { String propertyUniqueId = instanceProperty.getUniqueId(); String valueUniqueUid = instanceProperty.getValueUniqueUid(); - log.trace("Go over property {} under resource instance {}. valueUniqueId = {}", propertyUniqueId, resourceInstanceId, valueUniqueUid); + log.trace("Go over property {} under resource instance {}. valueUniqueId = {}" ,propertyUniqueId, resourceInstanceId, valueUniqueUid); if (propertyId.equals(propertyUniqueId) && valueUniqueUid != null) { log.debug("The property {} already created under resource instance {}", propertyId, resourceInstanceId); return new ImmutablePair<TitanOperationStatus, String>(TitanOperationStatus.ALREADY_EXIST, valueUniqueUid); @@ -1031,19 +1137,36 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati PropertyValueData propertyValueData = propertyValueDataPair.left; String propertyValueUid = propertyValueData.getUniqueId(); String value = propertyValueData.getValue(); + + String componentInstanceId = (String) propertyValueDataPair.right.getProperties().get(GraphEdgePropertiesDictionary.OWNER_ID.getProperty()); Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class); if (propertyDefRes.isRight()) { TitanOperationStatus status = propertyDefRes.right().value(); - if (status == TitanOperationStatus.NOT_FOUND) { - status = TitanOperationStatus.INVALID_ID; - } return Either.right(status); } ImmutablePair<PropertyData, GraphEdge> propertyDefPair = propertyDefRes.left().value(); PropertyData propertyData = propertyDefPair.left; String propertyUniqueId = (String) propertyData.getPropertyDataDefinition().getUniqueId(); + + Either<TitanVertex, TitanOperationStatus> originVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), propertyUniqueId); + if (originVertexEither.isRight()) { + log.debug("Failed to fetch vertex of property for id {} error {}", propertyUniqueId, originVertexEither.right().value()); + return Either.right(originVertexEither.right().value()); + } + TitanVertex originVertex = originVertexEither.left().value(); + Iterator<Edge> edgeIter = originVertex.edges(Direction.IN, GraphEdgeLabels.PROPERTY.getProperty()); + if (edgeIter == null) { + return Either.right(TitanOperationStatus.NOT_FOUND); + } + + String propertyName = ""; + + while (edgeIter.hasNext()) { + TitanEdge edge = (TitanEdge) edgeIter.next(); + propertyName = (String) edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value(); + } ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty(); // set property original unique id @@ -1059,7 +1182,9 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati resourceInstanceProperty.setRules(propertyValueData.getRules()); resourceInstanceProperty.setType(propertyData.getPropertyDataDefinition().getType()); resourceInstanceProperty.setSchema(propertyData.getPropertyDataDefinition().getSchema()); - resourceInstanceProperty.setName((String) propertyValueDataPair.right.getProperties().get(GraphPropertiesDictionary.NAME.getProperty())); + resourceInstanceProperty.setName(propertyName); + resourceInstanceProperty.setComponentInstanceId(componentInstanceId); + result.add(resourceInstanceProperty); } @@ -1091,10 +1216,22 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati if (newInputsMap != null && !newInputsMap.isEmpty()) { for (Entry<String, List<InputDefinition>> entry : newInputsMap.entrySet()) { String compInstId = entry.getKey(); + Either<TitanVertex, TitanOperationStatus> ciVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), compInstId); + if (ciVertexEither.isRight()) { + log.debug("Failed to fetch vertex of resource instance for id {} error {}", compInstId, ciVertexEither.right().value()); + return Either.right( DaoStatusConverter.convertTitanStatusToStorageStatus(ciVertexEither.right().value())); + } + TitanVertex ciVertex = ciVertexEither.left().value(); + + + //String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty()); + String compInstname = (String) titanGenericDao.getProperty(ciVertex, GraphPropertiesDictionary.NORMALIZED_NAME.getProperty()); + List<InputDefinition> inputs = entry.getValue(); if (inputs != null && !inputs.isEmpty()) { for (InputDefinition input : inputs) { + Either<Integer, StorageOperationStatus> counterRes = componentInstanceOperation.increaseAndGetResourceInstanceSpecificCounter(compInstId, GraphPropertiesDictionary.INPUT_COUNTER, true); if (counterRes.isRight()) { @@ -1109,9 +1246,13 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(oldInputEither.right().value())); } - JSONObject jobject = new JSONObject(); - jobject.put("get_input", input.getName()); + InputDefinition oldInput = oldInputEither.left().value(); + String serviceInputName = compInstname + "_" + input.getName(); + input.setName(serviceInputName); + + JSONObject jobject = new JSONObject(); + jobject.put(GET_INPUT, input.getName()); ComponentInstanceInput inputValue = new ComponentInstanceInput(oldInput, jobject.toJSONString(), null); Integer index = counterRes.left().value(); @@ -1125,13 +1266,6 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati } ComponentInstanceInput inputValueData = eitherStatus.left().value(); - // ComponentInstanceInput propertyValueResult = - // buildResourceInstanceInput(propertyValueData, - // inputValue); - // log.debug("The returned ResourceInstanceProperty is " - // + propertyValueResult); - - String inputName = input.getName(); input.setSchema(oldInputEither.left().value().getSchema()); input.setDefaultValue(oldInput.getDefaultValue()); input.setConstraints(oldInput.getConstraints()); @@ -1147,13 +1281,13 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati return Either.right(validateAndUpdateProperty); } - Either<InputsData, TitanOperationStatus> addPropertyToGraph = addInputToGraph(inputName, input, resourceId, nodeType); + Either<InputsData, TitanOperationStatus> addPropertyToGraph = addInputToGraph(serviceInputName, input, resourceId, nodeType); if (addPropertyToGraph.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToGraph.right().value())); } InputDefinition createdInputyDefinition = convertInputDataToInputDefinition(addPropertyToGraph.left().value()); - createdInputyDefinition.setName(inputName); + createdInputyDefinition.setName(serviceInputName); createdInputyDefinition.setParentUniqueId(resourceId); Map<String, Object> props = new HashMap<String, Object>(); @@ -1178,7 +1312,275 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati } } + Map<String, List<ComponentInstancePropInput>> newInputsPropsMap = componentInsInputs.getComponentInstanceProperties(); + if (newInputsPropsMap != null && !newInputsPropsMap.isEmpty()) { + Either<List<InputDefinition>, StorageOperationStatus> result = createInputsFromProperty(resourceId, nodeType, dataTypes, resList, newInputsPropsMap); + + if (result.isRight()) { + log.debug("Failed to create inputs of resource for id {} error {}", resourceId, result.right().value()); + return result; + } + resList = result.left().value(); + + } return Either.left(resList); } + private Either<List<InputDefinition>, StorageOperationStatus> createInputsFromProperty(String resourceId, NodeTypeEnum nodeType, Map<String, DataTypeDefinition> dataTypes, List<InputDefinition> resList, Map<String, List<ComponentInstancePropInput>> newInputsPropsMap) { + for (Entry<String, List<ComponentInstancePropInput>> entry : newInputsPropsMap.entrySet()) { + String compInstId = entry.getKey(); + List<ComponentInstancePropInput> properties = entry.getValue(); + + Either<TitanVertex, TitanOperationStatus> ciVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), compInstId); + if (ciVertexEither.isRight()) { + log.debug("Failed to fetch vertex of resource instance for id {} error {}", compInstId, ciVertexEither.right().value()); + return Either.right( DaoStatusConverter.convertTitanStatusToStorageStatus(ciVertexEither.right().value())); + } + TitanVertex ciVertex = ciVertexEither.left().value(); + + + //String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty()); + String compInstname = (String) titanGenericDao.getProperty(ciVertex, GraphPropertiesDictionary.NORMALIZED_NAME.getProperty()); + String inputName = compInstname; + + if (properties != null && !properties.isEmpty()) { + for (ComponentInstancePropInput propInput : properties) { + Either<InputDefinition, StorageOperationStatus> createInputRes = createInputForComponentInstance(resourceId, nodeType, dataTypes, compInstId, inputName, propInput); + + if (createInputRes.isRight()) { + log.debug("Failed to create input of resource instance for id {} error {}", compInstId, createInputRes.right().value()); + return Either.right(createInputRes.right().value()); + } + + resList.add(createInputRes.left().value()); + + } + } + + } + return Either.left(resList); + } + + private Either<InputDefinition, StorageOperationStatus> createInputForComponentInstance(String resourceId, NodeTypeEnum nodeType, Map<String, DataTypeDefinition> dataTypes, String compInstId, String inputName, ComponentInstancePropInput propInput) { + String propertiesName = propInput.getPropertiesName() ; + PropertyDefinition selectedProp = propInput.getInput(); + String[] parsedPropNames = propInput.getParsedPropNames(); + if(parsedPropNames != null){ + for(String str: parsedPropNames){ + inputName += "_" + str; + } + } else { + inputName += "_" + propInput.getName(); + } + + InputDefinition input = null; + ComponentInstanceProperty prop = propInput; + + if(propertiesName != null && !propertiesName.isEmpty() && selectedProp != null){ + input = new InputDefinition(selectedProp); + }else{ + input = new InputDefinition(prop); + input.setName(inputName + "_" + prop.getName()); + + } + input.setName(inputName); + + JSONObject jobject = new JSONObject(); + + + if(prop.getValueUniqueUid() == null || prop.getValueUniqueUid().isEmpty()){ + if(propertiesName != null && !propertiesName.isEmpty() && selectedProp != null){ + + jobject = createJSONValueForProperty(parsedPropNames.length -1, parsedPropNames, jobject, inputName); + prop.setValue(jobject.toJSONString()); + + }else{ + + jobject.put(GET_INPUT, input.getName()); + prop.setValue(jobject.toJSONString()); + + + } + Either<Integer, StorageOperationStatus> increaseCounterRes = componentInstanceOperation.increaseAndGetResourceInstanceSpecificCounter(compInstId, GraphPropertiesDictionary.PROPERTY_COUNTER, true); + if (increaseCounterRes.isRight()) { + log.debug("Failed to increase resource property counter {} to resource instance {}", prop, compInstId); + + return Either.right( increaseCounterRes.right().value()); + } + Integer index = increaseCounterRes.left().value(); + Either<ComponentInstanceProperty, StorageOperationStatus> result = componentInstanceOperation.addPropertyValueToResourceInstance(prop, compInstId, false, index, true); + if (result.isRight()) { + log.debug("Failed to add property value {} to resource instance {}", prop, compInstId); + return Either.right( result.right().value()); + } + prop = result.left().value(); + + }else{ + + String value = prop.getValue(); + if(value != null){ + Object objValue = new Yaml().load(value); + if( objValue instanceof Map || objValue instanceof List ){ + if(propertiesName == null ||propertiesName.isEmpty()){ + jobject.put(GET_INPUT, input.getName()); + prop.setValue(jobject.toJSONString()); + prop.setRules(null); + + }else{ + Map<String, Object> mappedToscaTemplate = (Map<String, Object>) objValue; + createInputValue(mappedToscaTemplate, 1, parsedPropNames, inputName); + Gson gson = new Gson(); + String json = gson.toJson(mappedToscaTemplate); + prop.setValue(json); + prop.setRules(null); + } + + }else{ + jobject.put(GET_INPUT, input.getName()); + prop.setValue(jobject.toJSONString()); + prop.setRules(null); + } + }else{ + jobject.put(GET_INPUT, input.getName()); + prop.setValue(jobject.toJSONString()); + prop.setRules(null); + } + + Either<PropertyValueData, TitanOperationStatus> eitherStatus = componentInstanceOperation.updatePropertyOfResourceInstance(prop, compInstId, false); + + if (eitherStatus.isRight()) { + log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", prop, compInstId, eitherStatus.right().value().name()); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + + } else { + PropertyValueData propertyValueData = eitherStatus.left().value(); + + prop = propertyOperation.buildResourceInstanceProperty(propertyValueData, prop); + + log.debug("The returned ResourceInstanceProperty is {}", prop); + + Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(prop.getPath(), propertyValueData.getUniqueId(), prop.getDefaultValue()); + if (findDefaultValue.isRight()) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value())); + + } + String defaultValue = findDefaultValue.left().value(); + prop.setDefaultValue(defaultValue); + log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue); + + prop.setComponentInstanceId(compInstId); + + + + } + + + } + + StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(input, dataTypes); + if (validateAndUpdateProperty != StorageOperationStatus.OK) { + log.error("Property {} is invalid. Status is {}", input, validateAndUpdateProperty); + return Either.right(validateAndUpdateProperty); + } + + Either<InputsData, TitanOperationStatus> addPropertyToGraph = addInputToGraph(input.getName(), input, resourceId, nodeType); + + if (addPropertyToGraph.isRight()) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToGraph.right().value())); + } + InputDefinition createdInputyDefinition = convertInputDataToInputDefinition(addPropertyToGraph.left().value()); + createdInputyDefinition.setName(input.getName()); + createdInputyDefinition.setParentUniqueId(resourceId); + + TitanOperationStatus status = associatePropertyToInput(compInstId, createdInputyDefinition.getUniqueId(), prop, null); + if (status != TitanOperationStatus.OK) { + log.debug("Failed to associate input {} tp property value{} ", createdInputyDefinition.getName(), prop.getValueUniqueUid()); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + } + + return Either.left(createdInputyDefinition); + + } + + private JSONObject createJSONValueForProperty (int i, String [] parsedPropNames, JSONObject ooj, String inputName){ + + while(i >= 1){ + if( i == parsedPropNames.length -1){ + JSONObject jobProp = new JSONObject(); + jobProp.put(GET_INPUT, inputName); + ooj.put(parsedPropNames[i], jobProp); + i--; + return createJSONValueForProperty (i, parsedPropNames, ooj, inputName); + }else{ + JSONObject res = new JSONObject(); + res.put(parsedPropNames[i], ooj); + i --; + res = createJSONValueForProperty (i, parsedPropNames, res, inputName); + return res; + } + } + + return ooj; + } + + public void resetInputName(Map<String, Object> lhm1, String inputName){ + for (Map.Entry<String, Object> entry : lhm1.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof String && ((String) value).equalsIgnoreCase(inputName) && key.equals(GET_INPUT)) { + value = ""; + lhm1.remove(key); + } else if (value instanceof Map) { + Map<String, Object> subMap = (Map<String, Object>)value; + resetInputName(subMap, inputName); + } else { + continue; + } + + } + } + + private Map<String, Object> createInputValue(Map<String, Object> lhm1, int index, String[] inputNames, String inputName){ + while(index < inputNames.length){ + if(lhm1.containsKey(inputNames[index])){ + Object value = lhm1.get(inputNames[index]); + if (value instanceof Map){ + if(index == inputNames.length -1){ + ((Map) value).put(GET_INPUT, inputName); + return ((Map) value); + + }else{ + index++; + return createInputValue((Map)value, index, inputNames, inputName); + } + }else{ + Map<String, Object> jobProp = new HashMap<>(); + if(index == inputNames.length -1){ + jobProp.put(GET_INPUT, inputName); + lhm1.put(inputNames[index], jobProp); + return lhm1; + }else{ + lhm1.put(inputNames[index], jobProp); + index++; + return createInputValue(jobProp, index, inputNames, inputName); + } + } + }else{ + Map<String, Object> jobProp = new HashMap<>(); + lhm1.put(inputNames[index], jobProp); + if(index == inputNames.length -1){ + jobProp.put(GET_INPUT, inputName); + return jobProp; + }else{ + index++; + return createInputValue(jobProp, index, inputNames, inputName); + } + } + } + return lhm1; + } + + + + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java index 0d29c18a95..a7c883b14e 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java @@ -27,12 +27,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import com.thinkaurelius.titan.core.TitanTransaction; -import com.thinkaurelius.titan.core.TitanVertex; - -import org.apache.cassandra.transport.Event.StatusChange; import org.apache.commons.lang3.tuple.ImmutablePair; -import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; import org.openecomp.sdc.be.dao.graph.datatype.GraphNode; import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation; @@ -56,6 +51,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import com.thinkaurelius.titan.core.TitanVertex; + import fj.data.Either; @Component("interface-operation") @@ -74,45 +71,40 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation private TitanGenericDao titanGenericDao; @Override - public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, - String resourceId, String interfaceName) { + public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName) { return addInterfaceToResource(interf, resourceId, interfaceName, false); } @Override - public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, - String resourceId, String interfaceName, boolean inTransaction) { + public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean inTransaction) { return createInterfaceOnResource(interf, resourceId, interfaceName, true, inTransaction); } - private Either<OperationData, TitanOperationStatus> addOperationToGraph(InterfaceDefinition interf, String opName, - Operation op, InterfaceData interfaceData) { + private Either<OperationData, TitanOperationStatus> addOperationToGraph(InterfaceDefinition interf, String opName, Operation op, InterfaceData interfaceData) { op.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId((String) interfaceData.getUniqueId(), opName)); OperationData operationData = new OperationData(op); log.debug("Before adding operation to graph {}", operationData); - Either<OperationData, TitanOperationStatus> createOpNodeResult = titanGenericDao.createNode(operationData, - OperationData.class); + Either<OperationData, TitanOperationStatus> createOpNodeResult = titanGenericDao.createNode(operationData, OperationData.class); log.debug("After adding operation to graph {}", operationData); if (createOpNodeResult.isRight()) { TitanOperationStatus opStatus = createOpNodeResult.right().value(); - log.error("Failed to add operation {} to graph. Status is {}", opName, opStatus); + log.error("Failed to add operation {} to graph. status is {}", opName, opStatus); return Either.right(opStatus); } Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), opName); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(interfaceData, - operationData, GraphEdgeLabels.INTERFACE_OPERATION, props); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(interfaceData, operationData, GraphEdgeLabels.INTERFACE_OPERATION, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createOpNodeResult.right().value(); - log.error("Failed to associate operation {} to property {} in graph. Status is {}", interfaceData.getUniqueId(), opName, operationStatus); + log.error("Failed to associate operation {} to property {} in graph. status is {}", interfaceData.getUniqueId(), opName, operationStatus); return Either.right(operationStatus); } @@ -121,11 +113,9 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } - private Either<TitanVertex, TitanOperationStatus> addOperationToGraph(InterfaceDefinition interf, String opName, - Operation op, TitanVertex interfaceVertex) { + private Either<TitanVertex, TitanOperationStatus> addOperationToGraph(InterfaceDefinition interf, String opName, Operation op, TitanVertex interfaceVertex) { - String interfaceId = (String) titanGenericDao.getProperty(interfaceVertex, - GraphPropertiesDictionary.UNIQUE_ID.getProperty()); + String interfaceId = (String) titanGenericDao.getProperty(interfaceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); op.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(interfaceId, opName)); OperationData operationData = new OperationData(op); @@ -141,12 +131,10 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), opName); TitanVertex operationVertex = createOpNodeResult.left().value(); - TitanOperationStatus createRelResult = titanGenericDao.createEdge(interfaceVertex, operationVertex, - GraphEdgeLabels.INTERFACE_OPERATION, props); + TitanOperationStatus createRelResult = titanGenericDao.createEdge(interfaceVertex, operationVertex, GraphEdgeLabels.INTERFACE_OPERATION, props); if (!createRelResult.equals(TitanOperationStatus.OK)) { - log.error("Failed to associate operation {} to property {} in graph. status is {}", interfaceId, opName, - createRelResult); + log.error("Failed to associate operation {} to property {} in graph. status is {}", interfaceId, opName, createRelResult); return Either.right(createRelResult); } @@ -173,8 +161,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } - private Either<InterfaceData, TitanOperationStatus> addInterfaceToGraph(InterfaceDefinition interfaceInfo, - String interfaceName, String resourceId) { + private Either<InterfaceData, TitanOperationStatus> addInterfaceToGraph(InterfaceDefinition interfaceInfo, String interfaceName, String resourceId) { InterfaceData interfaceData = new InterfaceData(interfaceInfo); @@ -185,8 +172,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation interfaceInfo.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, interfaceNameSplitted)); - Either<InterfaceData, TitanOperationStatus> existInterface = titanGenericDao - .getNode(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId(), InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> existInterface = titanGenericDao.getNode(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId(), InterfaceData.class); if (existInterface.isRight()) { @@ -197,8 +183,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } } - private Either<TitanVertex, TitanOperationStatus> addInterfaceToGraph(InterfaceDefinition interfaceInfo, - String interfaceName, String resourceId, TitanVertex metadataVertex) { + private Either<TitanVertex, TitanOperationStatus> addInterfaceToGraph(InterfaceDefinition interfaceInfo, String interfaceName, String resourceId, TitanVertex metadataVertex) { InterfaceData interfaceData = new InterfaceData(interfaceInfo); @@ -206,8 +191,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation interfaceInfo.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, interfaceNameSplitted)); - Either<TitanVertex, TitanOperationStatus> existInterface = titanGenericDao - .getVertexByProperty(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId()); + Either<TitanVertex, TitanOperationStatus> existInterface = titanGenericDao.getVertexByProperty(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId()); if (existInterface.isRight()) { @@ -218,26 +202,23 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } } - private Either<InterfaceData, TitanOperationStatus> createInterfaceNodeAndRelation(String interfaceName, - String resourceId, InterfaceData interfaceData, ResourceMetadataData resourceData) { + private Either<InterfaceData, TitanOperationStatus> createInterfaceNodeAndRelation(String interfaceName, String resourceId, InterfaceData interfaceData, ResourceMetadataData resourceData) { log.debug("Before adding interface to graph {}", interfaceData); - Either<InterfaceData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData, - InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData, InterfaceData.class); log.debug("After adding property to graph {}", interfaceData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add interface {} to graph. Status is {}", interfaceName, operationStatus); + log.error("Failed to add interface {} to graph. status is {}", interfaceName, operationStatus); return Either.right(operationStatus); } Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), interfaceName); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, - interfaceData, GraphEdgeLabels.INTERFACE, props); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, interfaceData, GraphEdgeLabels.INTERFACE, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to associate resource {} to property {} in graph. Status is {}", resourceId, interfaceName, operationStatus); + log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, interfaceName, operationStatus); return Either.right(operationStatus); } @@ -245,8 +226,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return Either.left(createNodeResult.left().value()); } - private Either<TitanVertex, TitanOperationStatus> createInterfaceNodeAndRelation(String interfaceName, - String resourceId, InterfaceData interfaceData, TitanVertex metadataVertex) { + private Either<TitanVertex, TitanOperationStatus> createInterfaceNodeAndRelation(String interfaceName, String resourceId, InterfaceData interfaceData, TitanVertex metadataVertex) { log.debug("Before adding interface to graph {}", interfaceData); Either<TitanVertex, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData); @@ -259,35 +239,30 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), interfaceName); TitanVertex interfaceVertex = createNodeResult.left().value(); - TitanOperationStatus createRelResult = titanGenericDao.createEdge(metadataVertex, interfaceVertex, - GraphEdgeLabels.INTERFACE, props); + TitanOperationStatus createRelResult = titanGenericDao.createEdge(metadataVertex, interfaceVertex, GraphEdgeLabels.INTERFACE, props); if (!createRelResult.equals(TitanOperationStatus.OK)) { - log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, - interfaceName, createRelResult); + log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, interfaceName, createRelResult); } return Either.left(interfaceVertex); } - private Either<OperationData, TitanOperationStatus> createOperationNodeAndRelation(String operationName, - OperationData operationData, InterfaceData interfaceData) { + private Either<OperationData, TitanOperationStatus> createOperationNodeAndRelation(String operationName, OperationData operationData, InterfaceData interfaceData) { log.debug("Before adding operation to graph {}", operationData); - Either<OperationData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(operationData, - OperationData.class); + Either<OperationData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(operationData, OperationData.class); log.debug("After adding operation to graph {}", interfaceData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add interfoperationce {} to graph. Status is {}", operationName, operationStatus); + log.error("Failed to add interfoperationce {} to graph. status is {}", operationName, operationStatus); return Either.right(operationStatus); } Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), operationName); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(interfaceData, - operationData, GraphEdgeLabels.INTERFACE_OPERATION, props); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(interfaceData, operationData, GraphEdgeLabels.INTERFACE_OPERATION, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to associate operation {} to interface {} in graph. Status is {}", operationName, interfaceData.getUniqueId(), operationStatus); + log.error("Failed to associate operation {} to interface {} in graph. status is {}", operationName, interfaceData.getUniqueId(), operationStatus); return Either.right(operationStatus); } @@ -307,7 +282,8 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation // * InterfaceData propertyData = getResult.left().value(); return // * Either.left(convertPropertyDataToPropertyDefinition(propertyData)); } // * else { TitanOperationStatus titanStatus = getResult.right().value(); - // * log.debug("Node with id {} was not found in the graph. Status: {}", propertyId, titanStatus); + // * log.debug("Node with id " + propertyId + + // * " was not found in the graph. status: " + titanStatus); // * StorageOperationStatus storageOperationStatus = // * DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); // * return Either.right(storageOperationStatus); } @@ -323,14 +299,12 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation // } @Override - public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource( - String resourceIdn, boolean recursively) { + public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceIdn, boolean recursively) { return getAllInterfacesOfResource(resourceIdn, recursively, false); } @Override - public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource( - String resourceId, boolean recursively, boolean inTransaction) { + public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceId, boolean recursively, boolean inTransaction) { Either<Map<String, InterfaceDefinition>, StorageOperationStatus> result = null; Map<String, InterfaceDefinition> interfaces = new HashMap<String, InterfaceDefinition>(); @@ -348,7 +322,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation findInterfacesRes = findAllInterfacesNotRecursively(resourceId, interfaces); } if (!findInterfacesRes.equals(TitanOperationStatus.OK)) { - log.error("Failed to get all interfaces of resource {}. Status is {}", resourceId, findInterfacesRes); + log.error("Failed to get all interfaces of resource {}. status is {}", resourceId, findInterfacesRes); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findInterfacesRes)); return result; } @@ -367,12 +341,10 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } } - private TitanOperationStatus findAllInterfacesNotRecursively(String resourceId, - Map<String, InterfaceDefinition> interfaces) { + private TitanOperationStatus findAllInterfacesNotRecursively(String resourceId, Map<String, InterfaceDefinition> interfaces) { - Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> interfaceNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, - GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, InterfaceData.class); + Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> interfaceNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.INTERFACE, + NodeTypeEnum.Interface, InterfaceData.class); if (interfaceNodes.isRight()) { TitanOperationStatus status = interfaceNodes.right().value(); @@ -384,15 +356,13 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation if (interfaceList != null) { for (ImmutablePair<InterfaceData, GraphEdge> interfacePair : interfaceList) { String interfaceUniqueId = (String) interfacePair.getKey().getUniqueId(); - Either<String, TitanOperationStatus> interfaceNameRes = getPropertyValueFromEdge( - interfacePair.getValue(), GraphPropertiesDictionary.NAME); + Either<String, TitanOperationStatus> interfaceNameRes = getPropertyValueFromEdge(interfacePair.getValue(), GraphPropertiesDictionary.NAME); if (interfaceNameRes.isRight()) { log.error("The requirement name is missing on the edge of requirement {}", interfaceUniqueId); return interfaceNameRes.right().value(); } String interfaceName = interfaceNameRes.left().value(); - Either<InterfaceDefinition, TitanOperationStatus> interfaceDefRes = getNonRecursiveInterface( - interfacePair.getKey()); + Either<InterfaceDefinition, TitanOperationStatus> interfaceDefRes = getNonRecursiveInterface(interfacePair.getKey()); if (interfaceDefRes.isRight()) { TitanOperationStatus status = interfaceDefRes.right().value(); log.error("Failed to get interface actions of interface {}", interfaceUniqueId); @@ -401,7 +371,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation InterfaceDefinition interfaceDefinition = interfaceDefRes.left().value(); if (true == interfaces.containsKey(interfaceName)) { - log.debug("The interface {} was already defined in derived resource. add not overriden operations", interfaceName); + log.debug("The interface {} was already defined in dervied resource. add not overriden operations", interfaceName); InterfaceDefinition existInterface = interfaces.get(interfaceName); addMissingOperationsToInterface(interfaceDefinition, existInterface); } else { @@ -414,17 +384,15 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return TitanOperationStatus.OK; } - public TitanOperationStatus findAllInterfacesRecursively(String resourceId, - Map<String, InterfaceDefinition> interfaces) { + public TitanOperationStatus findAllInterfacesRecursively(String resourceId, Map<String, InterfaceDefinition> interfaces) { TitanOperationStatus findAllInterfacesNotRecursively = findAllInterfacesNotRecursively(resourceId, interfaces); if (!findAllInterfacesNotRecursively.equals(TitanOperationStatus.OK)) { - log.error("failed to get interfaces for resource {}. Status is {}", resourceId, findAllInterfacesNotRecursively); + log.error("failed to get interfaces for resource {}. status is {}", resourceId, findAllInterfacesNotRecursively); } - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, + ResourceMetadataData.class); if (parentNodes.isRight()) { TitanOperationStatus parentNodesStatus = parentNodes.right().value(); @@ -432,7 +400,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation log.debug("Finish to lookup for parnet interfaces"); return TitanOperationStatus.OK; } else { - log.error("Failed to find parent interfaces of resource {}. Status is {}", resourceId, parentNodesStatus); + log.error("Failed to find parent interfaces of resource {}. status is {}", resourceId, parentNodesStatus); return parentNodesStatus; } } @@ -448,8 +416,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return TitanOperationStatus.OK; } - private Either<String, TitanOperationStatus> getPropertyValueFromEdge(GraphEdge edge, - GraphPropertiesDictionary property) { + private Either<String, TitanOperationStatus> getPropertyValueFromEdge(GraphEdge edge, GraphPropertiesDictionary property) { Map<String, Object> edgeProps = edge.getProperties(); String interfaceName = null; if (edgeProps != null) { @@ -469,9 +436,8 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation InterfaceDefinition interfaceDefinition = new InterfaceDefinition(interfaceData.getInterfaceDataDefinition()); String interfaceId = interfaceData.getUniqueId(); - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationsRes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), interfaceId, - GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class); + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationsRes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), interfaceId, GraphEdgeLabels.INTERFACE_OPERATION, + NodeTypeEnum.InterfaceOperation, OperationData.class); if (operationsRes.isRight()) { TitanOperationStatus status = operationsRes.right().value(); @@ -486,8 +452,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation if (operationList != null && !operationList.isEmpty()) { for (ImmutablePair<OperationData, GraphEdge> operationPair : operationList) { Operation operation = new Operation(operationPair.getKey().getOperationDataDefinition()); - Either<String, TitanOperationStatus> operationNameRes = getPropertyValueFromEdge( - operationPair.getValue(), GraphPropertiesDictionary.NAME); + Either<String, TitanOperationStatus> operationNameRes = getPropertyValueFromEdge(operationPair.getValue(), GraphPropertiesDictionary.NAME); if (operationNameRes.isRight()) { log.error("The operation name is missing on the edge of operation {}", operationPair.getKey().getUniqueId()); return Either.right(operationNameRes.right().value()); @@ -504,11 +469,9 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation private StorageOperationStatus findOperationImplementation(Operation operation) { String operationId = operation.getUniqueId(); - Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifactsRes = artifactOperation - .getArtifacts(operationId, NodeTypeEnum.InterfaceOperation, true); + Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifactsRes = artifactOperation.getArtifacts(operationId, NodeTypeEnum.InterfaceOperation, true); if (artifactsRes.isRight() || artifactsRes.left().value() == null) { - log.error("failed to get artifact from graph for operation id {}. status is {}", operationId, - artifactsRes.right().value()); + log.error("failed to get artifact from graph for operation id {}. status is {}", operationId, artifactsRes.right().value()); return artifactsRes.right().value(); } else { Map<String, ArtifactDefinition> artifacts = artifactsRes.left().value(); @@ -521,10 +484,9 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return StorageOperationStatus.OK; } - private StorageOperationStatus addMissingOperationsToInterface(InterfaceDefinition interfaceDefinition, - InterfaceDefinition existInterface) { - Map<String, Operation> existOperations = existInterface.getOperations(); - Map<String, Operation> operations = interfaceDefinition.getOperations(); + private StorageOperationStatus addMissingOperationsToInterface(InterfaceDefinition interfaceDefinition, InterfaceDefinition existInterface) { + Map<String, Operation> existOperations = existInterface.getOperationsMap(); + Map<String, Operation> operations = interfaceDefinition.getOperationsMap(); if (operations != null && !operations.isEmpty()) { Set<Entry<String, Operation>> operationsSet = operations.entrySet(); for (Entry<String, Operation> operation : operationsSet) { @@ -537,29 +499,22 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, - String operationName, Operation interf) { + public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation interf) { return updateInterfaceOperation(resourceId, interfaceName, operationName, interf, false); } @Override - public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, - String operationName, Operation operation, boolean inTransaction) { - Either<Operation, StorageOperationStatus> status = updateOperationOnGraph(operation, resourceId, interfaceName, - operationName); + public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation operation, boolean inTransaction) { + Either<Operation, StorageOperationStatus> status = updateOperationOnGraph(operation, resourceId, interfaceName, operationName); /* - * if (status.isRight()) { if (false == inTransaction) { - * titanGenericDao.rollback(); } log.error("Failed to update operation " - * + operationName + " of interfaceName " + interfaceName + - * " of resource" + resourceId); return Either.right(DaoStatusConverter - * .convertTitanStatusToStorageStatus(status.right().value())); } else { - * if (false == inTransaction) { titanGenericDao.commit(); } - * OperationData operationData = status.left().value(); + * if (status.isRight()) { if (false == inTransaction) { titanGenericDao.rollback(); } + * log.error("Failed to update operation {} of interfaceName {} of resource {}", operationName, interfaceName, resourceId); + * return + * Either.right(DaoStatusConverter .convertTitanStatusToStorageStatus(status.right().value())); } else { if (false == inTransaction) { titanGenericDao.commit(); } OperationData operationData = status.left().value(); * - * Operation operationDefResult = - * convertOperationDataToOperation(operationData); + * Operation operationDefResult = convertOperationDataToOperation(operationData); * * * log.debug("The returned OperationDefintion is {}", operationDefResult); return Either.left(operationDefResult); } @@ -567,26 +522,16 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return status; } - private Either<Operation, StorageOperationStatus> updateOperationOnGraph(Operation operation, String resourceId, - String interfaceName, String operationName) { + private Either<Operation, StorageOperationStatus> updateOperationOnGraph(Operation operation, String resourceId, String interfaceName, String operationName) { - Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, - GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, InterfaceData.class); + Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, + InterfaceData.class); if (childrenNodes.isRight()) { /* - * InterfaceDefinition intDef = new InterfaceDefinition(); - * intDef.setType(interfaceName); Map<String, Operation> opMap = new - * HashMap<String, Operation>(); opMap.put(operationName, - * operation); intDef.setOperations(opMap); - * Either<InterfaceDefinition, StorageOperationStatus> statusRes = - * this .createInterfaceOnResource(intDef, resourceId, - * interfaceName, true); if (statusRes.isRight()) return - * Either.right(statusRes.right().value()); else { - * InterfaceDefinition newDef = statusRes.left().value(); Operation - * res = newDef.getOperations().get(operationName); return - * Either.left(res); } + * InterfaceDefinition intDef = new InterfaceDefinition(); intDef.setType(interfaceName); Map<String, Operation> opMap = new HashMap<String, Operation>(); opMap.put(operationName, operation); intDef.setOperations(opMap); + * Either<InterfaceDefinition, StorageOperationStatus> statusRes = this .createInterfaceOnResource(intDef, resourceId, interfaceName, true); if (statusRes.isRight()) return Either.right(statusRes.right().value()); else { + * InterfaceDefinition newDef = statusRes.left().value(); Operation res = newDef.getOperations().get(operationName); return Either.left(res); } */ return updateOperationFromParentNode(operation, resourceId, interfaceName, operationName); @@ -597,8 +542,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } - private Either<Operation, StorageOperationStatus> updateExistingOperation(String resourceId, Operation operation, - String interfaceName, String operationName, + private Either<Operation, StorageOperationStatus> updateExistingOperation(String resourceId, Operation operation, String interfaceName, String operationName, Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes) { Operation newOperation = null; StorageOperationStatus storageOperationStatus = StorageOperationStatus.GENERAL_ERROR; @@ -610,14 +554,11 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation InterfaceData interfaceData = interfaceDataNode.getKey(); if (interfaceEdgeProp.get(GraphPropertiesDictionary.NAME.getProperty()).equals(interfaceName)) { - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) interfaceDataNode.getLeft().getUniqueId(), GraphEdgeLabels.INTERFACE_OPERATION, - NodeTypeEnum.InterfaceOperation, OperationData.class); + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) interfaceDataNode.getLeft().getUniqueId(), + GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class); if (operationRes.isRight()) { - log.error("Failed to find operation {} on interface {}", operationName, interfaceName); - return Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); + log.error("Failed to find operation {} on interface {}", operationName, interfaceName); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); } else { List<ImmutablePair<OperationData, GraphEdge>> operations = operationRes.left().value(); for (ImmutablePair<OperationData, GraphEdge> operationPairEdge : operations) { @@ -625,25 +566,18 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation OperationData opData = operationPairEdge.getLeft(); Map<String, Object> opEdgeProp = opEdge.getProperties(); if (opEdgeProp.get(GraphPropertiesDictionary.NAME.getProperty()).equals(operationName)) { - ArtifactDefinition artifact = operation.getImplementation(); - Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> artifactRes = titanGenericDao - .getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) opData.getUniqueId(), GraphEdgeLabels.ARTIFACT_REF, - NodeTypeEnum.ArtifactRef, ArtifactData.class); + ArtifactDefinition artifact = operation.getImplementationArtifact(); + Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> artifactRes = titanGenericDao.getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) opData.getUniqueId(), GraphEdgeLabels.ARTIFACT_REF, + NodeTypeEnum.ArtifactRef, ArtifactData.class); Either<ArtifactDefinition, StorageOperationStatus> artStatus; if (artifactRes.isRight()) { - artStatus = artifactOperation.addArifactToComponent(artifact, - (String) operationPairEdge.getLeft().getUniqueId(), - NodeTypeEnum.InterfaceOperation, true, true); + artStatus = artifactOperation.addArifactToComponent(artifact, (String) operationPairEdge.getLeft().getUniqueId(), NodeTypeEnum.InterfaceOperation, true, true); } else { - artStatus = artifactOperation.updateArifactOnResource(artifact, - (String) operationPairEdge.getLeft().getUniqueId(), - (String) artifactRes.left().value().getLeft().getUniqueId(), - NodeTypeEnum.InterfaceOperation, true); + artStatus = artifactOperation.updateArifactOnResource(artifact, (String) operationPairEdge.getLeft().getUniqueId(), (String) artifactRes.left().value().getLeft().getUniqueId(), NodeTypeEnum.InterfaceOperation, true); } if (artStatus.isRight()) { titanGenericDao.rollback(); - log.error("Failed to add artifact {}", operationName, interfaceName); + log.error("Failed to add artifact {} to interface {}", operationName, interfaceName); return Either.right(artStatus.right().value()); } else { newOperation = this.convertOperationDataToOperation(opData); @@ -655,23 +589,18 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } if (newOperation == null) { - Either<InterfaceData, TitanOperationStatus> parentInterfaceStatus = findInterfaceOnParentNode( - resourceId, interfaceName); + Either<InterfaceData, TitanOperationStatus> parentInterfaceStatus = findInterfaceOnParentNode(resourceId, interfaceName); if (parentInterfaceStatus.isRight()) { log.debug("Interface {} not exist", interfaceName); - return Either.right(DaoStatusConverter - .convertTitanStatusToStorageStatus(parentInterfaceStatus.right().value())); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentInterfaceStatus.right().value())); } InterfaceData parentInterfaceData = parentInterfaceStatus.left().value(); - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> opRes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) parentInterfaceData.getUniqueId(), GraphEdgeLabels.INTERFACE_OPERATION, - NodeTypeEnum.InterfaceOperation, OperationData.class); + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> opRes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) parentInterfaceData.getUniqueId(), + GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class); if (opRes.isRight()) { - log.error("Failed to find operation {} on interface", operationName, interfaceName); - return Either.right( - DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); + log.error("Failed to find operation {} on interface {}", operationName, interfaceName); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); } else { List<ImmutablePair<OperationData, GraphEdge>> parentOperations = opRes.left().value(); @@ -679,10 +608,8 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation GraphEdge opEdge = operationPairEdge.getRight(); OperationData opData = operationPairEdge.getLeft(); Map<String, Object> opEdgeProp = opEdge.getProperties(); - if (opEdgeProp.get(GraphPropertiesDictionary.NAME.getProperty()) - .equals(operationName)) { - return copyAndCreateNewOperation(operation, interfaceName, operationName, null, - interfaceData, operationRes, opData); + if (opEdgeProp.get(GraphPropertiesDictionary.NAME.getProperty()).equals(operationName)) { + return copyAndCreateNewOperation(operation, interfaceName, operationName, null, interfaceData, operationRes, opData); } } } @@ -703,26 +630,20 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return Either.left(newOperation); } - private Either<Operation, StorageOperationStatus> copyAndCreateNewOperation(Operation operation, - String interfaceName, String operationName, Operation newOperation, InterfaceData interfaceData, - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes, - OperationData opData) { + private Either<Operation, StorageOperationStatus> copyAndCreateNewOperation(Operation operation, String interfaceName, String operationName, Operation newOperation, InterfaceData interfaceData, + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes, OperationData opData) { OperationDataDefinition opDataInfo = opData.getOperationDataDefinition(); OperationDataDefinition newOperationInfo = new OperationDataDefinition(opDataInfo); - newOperationInfo.setUniqueId( - UniqueIdBuilder.buildPropertyUniqueId(interfaceData.getUniqueId(), operationName.toLowerCase())); + newOperationInfo.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(interfaceData.getUniqueId(), operationName.toLowerCase())); OperationData newopData = new OperationData(newOperationInfo); - Either<OperationData, TitanOperationStatus> operationStatus = createOperationNodeAndRelation(operationName, - newopData, interfaceData); + Either<OperationData, TitanOperationStatus> operationStatus = createOperationNodeAndRelation(operationName, newopData, interfaceData); if (operationStatus.isRight()) { - log.error("Failed to create operation {} on interface {}", operationName, interfaceName); + log.error("Failed to create operation {} on interface {}", operationName, interfaceName); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); } - ArtifactDefinition artifact = operation.getImplementation(); + ArtifactDefinition artifact = operation.getImplementationArtifact(); if (artifact != null) { - Either<ArtifactDefinition, StorageOperationStatus> artStatus = artifactOperation.addArifactToComponent( - artifact, (String) operationStatus.left().value().getUniqueId(), NodeTypeEnum.InterfaceOperation, - true, true); + Either<ArtifactDefinition, StorageOperationStatus> artStatus = artifactOperation.addArifactToComponent(artifact, (String) operationStatus.left().value().getUniqueId(), NodeTypeEnum.InterfaceOperation, true, true); if (artStatus.isRight()) { titanGenericDao.rollback(); log.error("Failed to add artifact {} to interface {}", operationName, interfaceName); @@ -735,17 +656,14 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation return Either.left(newOperation); } - private Either<Operation, StorageOperationStatus> updateOperationFromParentNode(Operation operation, - String resourceId, String interfaceName, String operationName) { + private Either<Operation, StorageOperationStatus> updateOperationFromParentNode(Operation operation, String resourceId, String interfaceName, String operationName) { // Operation newOperation = null; ResourceMetadataData resourceData = new ResourceMetadataData(); resourceData.getMetadataDataDefinition().setUniqueId(resourceId); - Either<InterfaceData, TitanOperationStatus> parentInterfaceStatus = findInterfaceOnParentNode(resourceId, - interfaceName); + Either<InterfaceData, TitanOperationStatus> parentInterfaceStatus = findInterfaceOnParentNode(resourceId, interfaceName); if (parentInterfaceStatus.isRight()) { log.debug("Interface {} not exist", interfaceName); - return Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentInterfaceStatus.right().value())); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentInterfaceStatus.right().value())); } InterfaceData interfaceData = parentInterfaceStatus.left().value(); @@ -756,28 +674,24 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation newInterfaceInfo.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, interfaceNameSplitted)); InterfaceData updatedInterfaceData = new InterfaceData(newInterfaceInfo); - Either<InterfaceData, TitanOperationStatus> createStatus = createInterfaceNodeAndRelation(interfaceName, - resourceId, updatedInterfaceData, resourceData); + Either<InterfaceData, TitanOperationStatus> createStatus = createInterfaceNodeAndRelation(interfaceName, resourceId, updatedInterfaceData, resourceData); if (createStatus.isRight()) { - log.debug("failed to create interface node {} on resource {}", interfaceName, resourceId); + log.debug("failed to create interface node {} on resource {}", interfaceName, resourceId); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(createStatus.right().value())); } InterfaceData newInterfaceNode = createStatus.left().value(); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(newInterfaceNode, - interfaceData, GraphEdgeLabels.DERIVED_FROM, null); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(newInterfaceNode, interfaceData, GraphEdgeLabels.DERIVED_FROM, null); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate interface {} to interface {} in graph. Status is {}", interfaceData.getUniqueId(), newInterfaceNode.getUniqueId(), operationStatus); + log.error("Failed to associate interface {} to interface {} in graph. status is {}", interfaceData.getUniqueId(), newInterfaceNode.getUniqueId(), operationStatus); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationStatus)); } - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) interfaceData.getUniqueId(), GraphEdgeLabels.INTERFACE_OPERATION, - NodeTypeEnum.InterfaceOperation, OperationData.class); + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) interfaceData.getUniqueId(), + GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class); if (operationRes.isRight()) { - log.error("Failed to find operation {} on interface {}", operationName, interfaceName); + log.error("Failed to find operation {} on interface {}", operationName, interfaceName); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationRes.right().value())); } else { @@ -802,25 +716,20 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation // return Either.left(newOperation); } - private Either<InterfaceData, TitanOperationStatus> findInterfaceOnParentNode(String resourceId, - String interfaceName) { + private Either<InterfaceData, TitanOperationStatus> findInterfaceOnParentNode(String resourceId, String interfaceName) { - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentRes = titanGenericDao - .getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, GraphEdgeLabels.DERIVED_FROM, - NodeTypeEnum.Resource, ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentRes = titanGenericDao.getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, + ResourceMetadataData.class); if (parentRes.isRight()) { - log.debug("interface {} not found", interfaceName); + log.debug("interface {} not found ", interfaceName); return Either.right(parentRes.right().value()); } ImmutablePair<ResourceMetadataData, GraphEdge> parenNode = parentRes.left().value(); - Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - parenNode.getKey().getMetadataDataDefinition().getUniqueId(), GraphEdgeLabels.INTERFACE, - NodeTypeEnum.Interface, InterfaceData.class); + Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), parenNode.getKey().getMetadataDataDefinition().getUniqueId(), + GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, InterfaceData.class); if (childrenNodes.isRight()) { - return findInterfaceOnParentNode(parenNode.getKey().getMetadataDataDefinition().getUniqueId(), - interfaceName); + return findInterfaceOnParentNode(parenNode.getKey().getMetadataDataDefinition().getUniqueId(), interfaceName); } else { for (ImmutablePair<InterfaceData, GraphEdge> interfaceDataNode : childrenNodes.left().value()) { @@ -833,15 +742,13 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } } - return findInterfaceOnParentNode(parenNode.getKey().getMetadataDataDefinition().getUniqueId(), - interfaceName); + return findInterfaceOnParentNode(parenNode.getKey().getMetadataDataDefinition().getUniqueId(), interfaceName); } } @Override - public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceOnResource(InterfaceDefinition interf, - String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction) { + public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction) { Either<InterfaceData, TitanOperationStatus> status = addInterfaceToGraph(interf, interfaceName, resourceId); @@ -857,15 +764,14 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation InterfaceData interfaceData = status.left().value(); InterfaceDefinition interfaceDefResult = convertInterfaceDataToInterfaceDefinition(interfaceData); - Map<String, Operation> operations = interf.getOperations(); + Map<String, Operation> operations = interf.getOperationsMap(); if (operations != null && !operations.isEmpty()) { Set<String> opNames = operations.keySet(); Map<String, Operation> newOperations = new HashMap<String, Operation>(); for (String operationName : opNames) { Operation op = operations.get(operationName); - Either<OperationData, TitanOperationStatus> opStatus = addOperationToGraph(interf, operationName, - op, interfaceData); + Either<OperationData, TitanOperationStatus> opStatus = addOperationToGraph(interf, operationName, op, interfaceData); if (status.isRight()) { titanGenericDao.rollback(); log.error("Failed to add operation {} to interface {}", operationName, interfaceName); @@ -876,11 +782,9 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation OperationData opData = opStatus.left().value(); Operation newOperation = this.convertOperationDataToOperation(opData); - ArtifactDefinition art = op.getImplementation(); + ArtifactDefinition art = op.getImplementationArtifact(); if (art != null) { - Either<ArtifactDefinition, StorageOperationStatus> artRes = artifactOperation - .addArifactToComponent(art, (String) opData.getUniqueId(), - NodeTypeEnum.InterfaceOperation, failIfExist, true); + Either<ArtifactDefinition, StorageOperationStatus> artRes = artifactOperation.addArifactToComponent(art, (String) opData.getUniqueId(), NodeTypeEnum.InterfaceOperation, failIfExist, true); if (artRes.isRight()) { titanGenericDao.rollback(); log.error("Failed to add artifact {} to interface {}", operationName, interfaceName); @@ -891,7 +795,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } } } - interfaceDefResult.setOperations(newOperations); + interfaceDefResult.setOperationsMap(newOperations); } log.debug("The returned InterfaceDefintion is {}", interfaceDefResult); return Either.left(interfaceDefResult); @@ -900,11 +804,9 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, - String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex) { + public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex) { - Either<TitanVertex, TitanOperationStatus> interfaceResult = addInterfaceToGraph(interf, interfaceName, - resourceId, metadataVertex); + Either<TitanVertex, TitanOperationStatus> interfaceResult = addInterfaceToGraph(interf, interfaceName, resourceId, metadataVertex); if (interfaceResult.isRight()) { if (false == inTransaction) { @@ -921,14 +823,13 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation // InterfaceDefinition interfaceDefResult = // convertInterfaceDataToInterfaceDefinition(interfaceData); - Map<String, Operation> operations = interf.getOperations(); + Map<String, Operation> operations = interf.getOperationsMap(); if (operations != null && !operations.isEmpty()) { Set<String> opNames = operations.keySet(); for (String operationName : opNames) { Operation op = operations.get(operationName); - Either<TitanVertex, TitanOperationStatus> operationResult = addOperationToGraph(interf, - operationName, op, interfaceVertex); + Either<TitanVertex, TitanOperationStatus> operationResult = addOperationToGraph(interf, operationName, op, interfaceVertex); if (operationResult.isRight()) { if (false == inTransaction) { titanGenericDao.rollback(); @@ -941,12 +842,10 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } TitanVertex operationVertex = operationResult.left().value(); - ArtifactDefinition art = op.getImplementation(); + ArtifactDefinition art = op.getImplementationArtifact(); if (art != null) { - String opId = (String) titanGenericDao.getProperty(operationVertex, - GraphPropertiesDictionary.UNIQUE_ID.getProperty()); - StorageOperationStatus artRes = artifactOperation.addArifactToComponent(art, opId, - NodeTypeEnum.InterfaceOperation, failIfExist, operationVertex); + String opId = (String) titanGenericDao.getProperty(operationVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty()); + StorageOperationStatus artRes = artifactOperation.addArifactToComponent(art, opId, NodeTypeEnum.InterfaceOperation, failIfExist, operationVertex); if (!artRes.equals(StorageOperationStatus.OK)) { if (false == inTransaction) { titanGenericDao.rollback(); @@ -964,14 +863,12 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, - String operationId) { + public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationId) { return deleteInterfaceOperation(resourceId, interfaceName, operationId, false); } @Override - public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, - String operationId, boolean inTransaction) { + public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationId, boolean inTransaction) { Either<Operation, TitanOperationStatus> status = removeOperationOnGraph(resourceId, interfaceName, operationId); if (status.isRight()) { @@ -993,17 +890,15 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, - InterfaceDefinition interfaceDef, boolean inTransaction) { + public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, InterfaceDefinition interfaceDef, boolean inTransaction) { - Map<String, Operation> operations = interfaceDef.getOperations(); + Map<String, Operation> operations = interfaceDef.getOperationsMap(); String interfaceNameSplitted = getShortInterfaceName(interfaceDef); if (operations != null) { for (Entry<String, Operation> entry : operations.entrySet()) { Operation op = entry.getValue(); - Either<Operation, StorageOperationStatus> removeOperationFromResource = deleteInterfaceOperation( - resourceId, interfaceNameSplitted, op.getUniqueId(), true); + Either<Operation, StorageOperationStatus> removeOperationFromResource = deleteInterfaceOperation(resourceId, interfaceNameSplitted, op.getUniqueId(), true); if (removeOperationFromResource.isRight()) { if (false == inTransaction) { titanGenericDao.rollback(); @@ -1017,13 +912,11 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } - private Either<Operation, TitanOperationStatus> removeOperationOnGraph(String resourceId, String interfaceName, - String operationId) { + private Either<Operation, TitanOperationStatus> removeOperationOnGraph(String resourceId, String interfaceName, String operationId) { log.debug("Before deleting operation from graph {}", operationId); - Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, - GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, InterfaceData.class); + Either<List<ImmutablePair<InterfaceData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resourceId, GraphEdgeLabels.INTERFACE, NodeTypeEnum.Interface, + InterfaceData.class); if (childrenNodes.isRight()) { log.debug("Not found interface {}", interfaceName); @@ -1038,12 +931,10 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation String interfaceSplitedName = splitType(interfaceName); if (interfaceEdgeProp.get(GraphPropertiesDictionary.NAME.getProperty()).equals(interfaceSplitedName)) { - Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao - .getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) interfaceDataNode.getLeft().getUniqueId(), GraphEdgeLabels.INTERFACE_OPERATION, - NodeTypeEnum.InterfaceOperation, OperationData.class); + Either<List<ImmutablePair<OperationData, GraphEdge>>, TitanOperationStatus> operationRes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) interfaceDataNode.getLeft().getUniqueId(), + GraphEdgeLabels.INTERFACE_OPERATION, NodeTypeEnum.InterfaceOperation, OperationData.class); if (operationRes.isRight()) { - log.error("Failed to find operation {}", operationId, interfaceName); + log.error("Failed to find operation {} on interface {}", operationId, interfaceName); return Either.right(operationRes.right().value()); } List<ImmutablePair<OperationData, GraphEdge>> operations = operationRes.left().value(); @@ -1053,24 +944,18 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation opData = operationPairEdge.getLeft(); if (opData.getUniqueId().equals(operationId)) { - Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> artifactRes = titanGenericDao - .getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - (String) operationPairEdge.getLeft().getUniqueId(), - GraphEdgeLabels.ARTIFACT_REF, NodeTypeEnum.ArtifactRef, ArtifactData.class); + Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> artifactRes = titanGenericDao.getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) operationPairEdge.getLeft().getUniqueId(), + GraphEdgeLabels.ARTIFACT_REF, NodeTypeEnum.ArtifactRef, ArtifactData.class); Either<ArtifactDefinition, StorageOperationStatus> arStatus = null; if (artifactRes.isLeft()) { ArtifactData arData = artifactRes.left().value().getKey(); - arStatus = artifactOperation.removeArifactFromResource( - (String) operationPairEdge.getLeft().getUniqueId(), (String) arData.getUniqueId(), - NodeTypeEnum.InterfaceOperation, true, true); + arStatus = artifactOperation.removeArifactFromResource((String) operationPairEdge.getLeft().getUniqueId(), (String) arData.getUniqueId(), NodeTypeEnum.InterfaceOperation, true, true); if (arStatus.isRight()) { log.debug("failed to delete artifact {}", arData.getUniqueId()); return Either.right(TitanOperationStatus.INVALID_ID); } } - Either<OperationData, TitanOperationStatus> deleteOpStatus = titanGenericDao.deleteNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InterfaceOperation), opData.getUniqueId(), - OperationData.class); + Either<OperationData, TitanOperationStatus> deleteOpStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InterfaceOperation), opData.getUniqueId(), OperationData.class); if (deleteOpStatus.isRight()) { log.debug("failed to delete operation {}", opData.getUniqueId()); return Either.right(TitanOperationStatus.INVALID_ID); @@ -1081,9 +966,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation operation.setImplementation(arStatus.left().value()); } if (operations.size() <= 1) { - Either<InterfaceData, TitanOperationStatus> deleteInterfaceStatus = titanGenericDao - .deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), - interfaceDataNode.left.getUniqueId(), InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> deleteInterfaceStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDataNode.left.getUniqueId(), InterfaceData.class); if (deleteInterfaceStatus.isRight()) { log.debug("failed to delete interface {}", interfaceDataNode.left.getUniqueId()); return Either.right(TitanOperationStatus.INVALID_ID); @@ -1100,8 +983,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation log.debug("Not found operation {}", interfaceName); return Either.right(TitanOperationStatus.INVALID_ID); - // } - } private String splitType(String interfaceName) { @@ -1131,16 +1012,14 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf, - boolean inTransaction) { + public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf, boolean inTransaction) { Either<InterfaceDefinition, StorageOperationStatus> result = null; try { InterfaceData interfaceData = new InterfaceData(interf); interf.setUniqueId(interf.getType().toLowerCase()); - Either<InterfaceData, TitanOperationStatus> existInterface = titanGenericDao - .getNode(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId(), InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> existInterface = titanGenericDao.getNode(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId(), InterfaceData.class); if (existInterface.isLeft()) { // already exist @@ -1150,32 +1029,29 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } log.debug("Before adding interface type to graph {}", interfaceData); - Either<InterfaceData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData, - InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData, InterfaceData.class); log.debug("After adding property type to graph {}", interfaceData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add interface {} to graph. Status is {}", interf.getType(), operationStatus); + log.error("Failed to add interface {} to graph. status is {}", interf.getType(), operationStatus); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(operationStatus)); return result; } InterfaceDefinition interfaceDefResult = convertInterfaceDataToInterfaceDefinition(interfaceData); - Map<String, Operation> operations = interf.getOperations(); + Map<String, Operation> operations = interf.getOperationsMap(); if (operations != null && !operations.isEmpty()) { Map<String, Operation> newOperations = new HashMap<String, Operation>(); for (Map.Entry<String, Operation> operation : operations.entrySet()) { - Either<OperationData, TitanOperationStatus> opStatus = addOperationToGraph(interf, - operation.getKey(), operation.getValue(), interfaceData); + Either<OperationData, TitanOperationStatus> opStatus = addOperationToGraph(interf, operation.getKey(), operation.getValue(), interfaceData); if (opStatus.isRight()) { titanGenericDao.rollback(); log.error("Failed to add operation {} to interface {}", operation.getKey(), interf.getType()); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(opStatus.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(opStatus.right().value())); return result; } else { OperationData opData = opStatus.left().value(); @@ -1183,7 +1059,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation newOperations.put(operation.getKey(), newOperation); } } - interfaceDefResult.setOperations(newOperations); + interfaceDefResult.setOperationsMap(newOperations); } result = Either.left(interfaceDefResult); return result; @@ -1203,26 +1079,22 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation @Override public Either<InterfaceDefinition, StorageOperationStatus> getInterface(String interfaceId) { - Either<InterfaceData, TitanOperationStatus> getResult = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceId, InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> getResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceId, InterfaceData.class); if (getResult.isLeft()) { InterfaceData interfaceData = getResult.left().value(); return Either.left(convertInterfaceDataToInterfaceDefinition(interfaceData)); } else { TitanOperationStatus titanStatus = getResult.right().value(); - log.debug("Node with id {} was not found in the graph. Status: {}", interfaceId, titanStatus); - StorageOperationStatus storageOperationStatus = DaoStatusConverter - .convertTitanStatusToStorageStatus(titanStatus); + log.debug("Node with id {} was not found in the graph. status: {}", interfaceId, titanStatus); + StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); return Either.right(storageOperationStatus); } } @Override - public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, - TitanVertex metadataVertex) { + public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, TitanVertex metadataVertex) { - Either<TitanVertex, TitanOperationStatus> interfaceData = titanGenericDao.getVertexByProperty( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId()); + Either<TitanVertex, TitanOperationStatus> interfaceData = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId()); if (interfaceData.isRight()) { return DaoStatusConverter.convertTitanStatusToStorageStatus(interfaceData.right().value()); } @@ -1232,8 +1104,7 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation String interfaceName = getShortInterfaceName(interfaceDefinition); properties.put(GraphPropertiesDictionary.NAME.getProperty(), interfaceName.toLowerCase()); - TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, interfaceData.left().value(), - GraphEdgeLabels.INTERFACE, properties); + TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, interfaceData.left().value(), GraphEdgeLabels.INTERFACE, properties); if (!createRelation.equals(TitanOperationStatus.OK)) { return DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation); } @@ -1260,19 +1131,15 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, - String operationName) { - log.trace("Getting operation, resourceId {}, interfaceType {}, operationName {}", resourceId, interfaceType, - operationName); - Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource = getAllInterfacesOfResource( - resourceId, false); - if (allInterfacesOfResource.isRight() || allInterfacesOfResource.left().value() == null - || allInterfacesOfResource.left().value().get(interfaceType) == null) { + public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, String operationName) { + log.trace("Getting operation, resourceId {}, interfaceType {}, operationName {}", resourceId, interfaceType, operationName); + Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource = getAllInterfacesOfResource(resourceId, false); + if (allInterfacesOfResource.isRight() || allInterfacesOfResource.left().value() == null || allInterfacesOfResource.left().value().get(interfaceType) == null) { log.debug("Couldn't find interface definition of type {} for resource id {}", interfaceType, resourceId); return Either.right(allInterfacesOfResource.right().value()); } InterfaceDefinition interfaceDefinition = allInterfacesOfResource.left().value().get(interfaceType); - Map<String, Operation> operations = interfaceDefinition.getOperations(); + Map<String, Operation> operations = interfaceDefinition.getOperationsMap(); if (operations == null || operations.get(operationName) == null) { log.debug("Couldn't find operation for operation name {}, interface type {}", operationName, interfaceType); return Either.right(StorageOperationStatus.GENERAL_ERROR); @@ -1281,24 +1148,19 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation } @Override - public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, - InterfaceDefinition interfaceDefinition) { + public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, InterfaceDefinition interfaceDefinition) { - Either<InterfaceData, TitanOperationStatus> interfaceData = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId(), - InterfaceData.class); + Either<InterfaceData, TitanOperationStatus> interfaceData = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId(), InterfaceData.class); if (interfaceData.isRight()) { log.debug("Couldn't find interface {}", interfaceDefinition); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(interfaceData.right().value())); } InterfaceData value = interfaceData.left().value(); - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(node, value, - GraphEdgeLabels.INTERFACE); + Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(node, value, GraphEdgeLabels.INTERFACE); if (deleteRelation.isRight()) { TitanOperationStatus status = deleteRelation.right().value(); - log.debug("Couldn't dissociate interface between node {} to node {}. Status is {}", node.getUniqueId(), - value.getUniqueId(), status); + log.debug("Couldn't dissociate interface between node {} to node {}. Status is {}", node.getUniqueId(), value.getUniqueId(), status); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java index 863975893c..2537891bbd 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java @@ -116,15 +116,12 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, - boolean inTransaction) { + public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, boolean inTransaction) { Either<User, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR); try { - Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode( - UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.STATE, NodeTypeEnum.User, - UserData.class); + Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.STATE, NodeTypeEnum.User, UserData.class); if (parentNode.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentNode.right().value())); @@ -144,8 +141,7 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, - Component component, User modifier, User currentOwner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; try { @@ -153,17 +149,14 @@ public class LifecycleOperation implements ILifecycleOperation { if (!component.getLifecycleState().equals(LifecycleStateEnum.CERTIFIED)) { component.setHighestVersion(false); ComponentOperation componentOperation = getComponentOperation(nodeType); - Either<? extends Component, StorageOperationStatus> updateComponent = componentOperation - .updateComponent(component, inTransaction, titanGenericDao, component.getClass(), nodeType); + Either<? extends Component, StorageOperationStatus> updateComponent = componentOperation.updateComponent(component, inTransaction, titanGenericDao, component.getClass(), nodeType); if (updateComponent.isRight()) { StorageOperationStatus error = updateComponent.right().value(); - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, error); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, error); return Either.right(error); } - StorageOperationStatus changeStateToLastState = changeStateRelation(nodeType, component.getUniqueId(), - currentOwner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); + StorageOperationStatus changeStateToLastState = changeStateRelation(nodeType, component.getUniqueId(), currentOwner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); if (!changeStateToLastState.equals(StorageOperationStatus.OK)) { result = Either.right(changeStateToLastState); return result; @@ -173,8 +166,7 @@ public class LifecycleOperation implements ILifecycleOperation { // clone the component result = cloneComponentForCheckout(component, nodeType, modifier); if (result.isRight()) { - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, result.right().value()); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, result.right().value()); return result; } @@ -193,8 +185,7 @@ public class LifecycleOperation implements ILifecycleOperation { return result; } - private Either<? extends Component, StorageOperationStatus> cloneComponentForCertified(Component component, - User modifier, Integer majorVersion) { + private Either<? extends Component, StorageOperationStatus> cloneComponentForCertified(Component component, User modifier, Integer majorVersion) { // set new version String certifiedVersion = (majorVersion + 1) + VERSION_DELIMETER + "0"; @@ -205,15 +196,13 @@ public class LifecycleOperation implements ILifecycleOperation { component.setHighestVersion(true); ComponentOperation componentOperation = getComponentOperation(component.getComponentType().getNodeType()); - Either<? extends Component, StorageOperationStatus> cloneComponentResult = componentOperation - .cloneComponent(component, certifiedVersion, LifecycleStateEnum.CERTIFIED, true); + Either<? extends Component, StorageOperationStatus> cloneComponentResult = componentOperation.cloneComponent(component, certifiedVersion, LifecycleStateEnum.CERTIFIED, true); return cloneComponentResult; } @Override - public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component component, - User modifier, User currentOwner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; ComponentOperation componentOperation = getComponentOperation(nodeType); @@ -226,8 +215,7 @@ public class LifecycleOperation implements ILifecycleOperation { String previousVersion = versionParts[0] + VERSION_DELIMETER + minorVersion; if (!previousVersion.equals("0.0")) { - Either<? extends Component, StorageOperationStatus> updateOldResourceResult = updateOldComponentBeforeUndoCheckout( - componentOperation, prevComponent, component, previousVersion, nodeType, true); + Either<? extends Component, StorageOperationStatus> updateOldResourceResult = updateOldComponentBeforeUndoCheckout(componentOperation, prevComponent, component, previousVersion, nodeType, true); if (updateOldResourceResult.isRight()) { result = updateOldResourceResult; return result; @@ -236,8 +224,7 @@ public class LifecycleOperation implements ILifecycleOperation { } // delete the component - Either<? extends Component, StorageOperationStatus> deleteResourceResult = componentOperation - .deleteComponent(component.getUniqueId(), true); + Either<? extends Component, StorageOperationStatus> deleteResourceResult = componentOperation.deleteComponent(component.getUniqueId(), true); if (deleteResourceResult.isRight()) { result = deleteResourceResult; return result; @@ -262,23 +249,19 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; try { - StorageOperationStatus updateCheckinInGraph = updateCheckinInGraph(nodeType, component.getUniqueId(), - component.getLifecycleState(), modifier, owner); + StorageOperationStatus updateCheckinInGraph = updateCheckinInGraph(nodeType, component.getUniqueId(), component.getLifecycleState(), modifier, owner); if (!updateCheckinInGraph.equals(StorageOperationStatus.OK)) { - log.error("failed to update state of resource {}. status={}", component.getUniqueId(), - updateCheckinInGraph); + log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateCheckinInGraph); return Either.right(updateCheckinInGraph); } LifecycleStateEnum state = LifecycleStateEnum.NOT_CERTIFIED_CHECKIN; ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState(); result = updateComponentMD(component, modifier, state, nodeType, componentParametersView); if (result.isRight()) { - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - state, result.right().value()); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value()); } return result; @@ -306,8 +289,7 @@ public class LifecycleOperation implements ILifecycleOperation { return componentParametersView; } - private StorageOperationStatus updateCheckinInGraph(NodeTypeEnum componentType, String componentId, - LifecycleStateEnum state, User modifier, User owner) { + private StorageOperationStatus updateCheckinInGraph(NodeTypeEnum componentType, String componentId, LifecycleStateEnum state, User modifier, User owner) { // check if we cancel rfc if (state.equals(LifecycleStateEnum.READY_FOR_CERTIFICATION)) { @@ -316,8 +298,7 @@ public class LifecycleOperation implements ILifecycleOperation { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN); UniqueIdData resourceData = new UniqueIdData(componentType, componentId); - Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao - .deleteIncomingRelationByCriteria(resourceData, GraphEdgeLabels.LAST_STATE, props); + Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(resourceData, GraphEdgeLabels.LAST_STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); return StorageOperationStatus.INCONSISTENCY; @@ -325,8 +306,7 @@ public class LifecycleOperation implements ILifecycleOperation { } // remove CHECKOUT relation - StorageOperationStatus removeUserToResourceRelation = removeUserToResourceRelation(componentType, - owner.getUserId(), componentId, GraphEdgeLabels.STATE); + StorageOperationStatus removeUserToResourceRelation = removeUserToResourceRelation(componentType, owner.getUserId(), componentId, GraphEdgeLabels.STATE); if (!removeUserToResourceRelation.equals(StorageOperationStatus.OK)) { return removeUserToResourceRelation; } @@ -334,8 +314,7 @@ public class LifecycleOperation implements ILifecycleOperation { // create CHECKIN relation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN); - StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, - modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props); + StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props); if (!createUserToResourceRelation.equals(StorageOperationStatus.OK)) { return createUserToResourceRelation; } @@ -344,15 +323,12 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; try { - StorageOperationStatus updateRfcOnGraph = updateRfcOnGraph(nodeType, component.getUniqueId(), - component.getLifecycleState(), modifier, owner); + StorageOperationStatus updateRfcOnGraph = updateRfcOnGraph(nodeType, component.getUniqueId(), component.getLifecycleState(), modifier, owner); if (!updateRfcOnGraph.equals(StorageOperationStatus.OK)) { - log.error("failed to update state of resource {}. status={}", component.getUniqueId(), - updateRfcOnGraph); + log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateRfcOnGraph); return Either.right(updateRfcOnGraph); } @@ -362,8 +338,7 @@ public class LifecycleOperation implements ILifecycleOperation { result = updateComponentMD(component, modifier, state, nodeType, componentParametersView); if (result.isRight()) { - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - state, result.right().value()); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value()); return result; } return result; @@ -381,15 +356,13 @@ public class LifecycleOperation implements ILifecycleOperation { } } - private StorageOperationStatus updateRfcOnGraph(NodeTypeEnum componentType, String componentId, - LifecycleStateEnum state, User modifier, User owner) { + private StorageOperationStatus updateRfcOnGraph(NodeTypeEnum componentType, String componentId, LifecycleStateEnum state, User modifier, User owner) { if (state.equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT)) { // if this is atomic checkin + RFC: create checkin relation // remove CHECKOUT relation - StorageOperationStatus relationStatus = removeUserToResourceRelation(componentType, owner.getUserId(), - componentId, GraphEdgeLabels.STATE); + StorageOperationStatus relationStatus = removeUserToResourceRelation(componentType, owner.getUserId(), componentId, GraphEdgeLabels.STATE); if (!relationStatus.equals(StorageOperationStatus.OK)) { return relationStatus; } @@ -397,14 +370,12 @@ public class LifecycleOperation implements ILifecycleOperation { // create CHECKIN relation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN); - relationStatus = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, - GraphEdgeLabels.LAST_STATE, props); + relationStatus = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.LAST_STATE, props); if (!relationStatus.equals(StorageOperationStatus.OK)) { return relationStatus; } } else { - StorageOperationStatus changeStatus = changeRelationLabel(componentType, componentId, owner, - GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); + StorageOperationStatus changeStatus = changeRelationLabel(componentType, componentId, owner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); if (!changeStatus.equals(StorageOperationStatus.OK)) { return changeStatus; } @@ -413,21 +384,18 @@ public class LifecycleOperation implements ILifecycleOperation { // create RFC relation Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION); - StorageOperationStatus changeRelationLabel = createUserToResourceRelation(componentType, modifier.getUserId(), - componentId, GraphEdgeLabels.STATE, props); + StorageOperationStatus changeRelationLabel = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props); if (!changeRelationLabel.equals(StorageOperationStatus.OK)) { return changeRelationLabel; } return StorageOperationStatus.OK; } - private StorageOperationStatus changeRelationLabel(NodeTypeEnum componentType, String componentId, User owner, - GraphEdgeLabels prevLabel, GraphEdgeLabels toLabel) { + private StorageOperationStatus changeRelationLabel(NodeTypeEnum componentType, String componentId, User owner, GraphEdgeLabels prevLabel, GraphEdgeLabels toLabel) { UniqueIdData resourceV = new UniqueIdData(componentType, componentId); UserData userV = new UserData(); userV.setUserId(owner.getUserId()); - Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao - .replaceRelationLabel(userV, resourceV, prevLabel, toLabel); + Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao.replaceRelationLabel(userV, resourceV, prevLabel, toLabel); if (replaceRelationLabelResult.isRight()) { log.error("failed to replace label from last state to state"); return DaoStatusConverter.convertTitanStatusToStorageStatus(replaceRelationLabelResult.right().value()); @@ -436,12 +404,10 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, - Component component, User modifier, User owner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; try { - StorageOperationStatus updateOnGraph = updateStartCertificationOnGraph(nodeType, component.getUniqueId(), - modifier, owner); + StorageOperationStatus updateOnGraph = updateStartCertificationOnGraph(nodeType, component.getUniqueId(), modifier, owner); if (!updateOnGraph.equals(StorageOperationStatus.OK)) { log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateOnGraph); return Either.right(updateOnGraph); @@ -452,8 +418,7 @@ public class LifecycleOperation implements ILifecycleOperation { result = updateComponentMD(component, modifier, state, nodeType, componentParametersView); if (result.isRight()) { - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - state, result.right().value()); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value()); } return result; @@ -470,10 +435,8 @@ public class LifecycleOperation implements ILifecycleOperation { } } - private StorageOperationStatus updateStartCertificationOnGraph(NodeTypeEnum componentType, String componentId, - User modifier, User owner) { - StorageOperationStatus changeRelationLabel = changeRelationLabel(componentType, componentId, owner, - GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); + private StorageOperationStatus updateStartCertificationOnGraph(NodeTypeEnum componentType, String componentId, User modifier, User owner) { + StorageOperationStatus changeRelationLabel = changeRelationLabel(componentType, componentId, owner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE); if (!changeRelationLabel.equals(StorageOperationStatus.OK)) { return changeRelationLabel; } @@ -481,8 +444,7 @@ public class LifecycleOperation implements ILifecycleOperation { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS); - StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, - modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props); + StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props); if (!createUserToResourceRelation.equals(StorageOperationStatus.OK)) { return createUserToResourceRelation; } @@ -490,8 +452,7 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, - Component component, User modifier, User currentOwner, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = null; try { @@ -509,8 +470,7 @@ public class LifecycleOperation implements ILifecycleOperation { } // clone the resource - Either<? extends Component, StorageOperationStatus> createResourceResult = Either - .right(StorageOperationStatus.GENERAL_ERROR); + Either<? extends Component, StorageOperationStatus> createResourceResult = Either.right(StorageOperationStatus.GENERAL_ERROR); switch (nodeType) { case Service: case Resource: @@ -531,8 +491,7 @@ public class LifecycleOperation implements ILifecycleOperation { Component certifiedResource = createResourceResult.left().value(); // add rfc relation to preserve follower information - StorageOperationStatus addRfcRelation = addRfcRelationToCertfiedComponent(nodeType, resourceIdBeforeCertify, - certifiedResource.getUniqueId()); + StorageOperationStatus addRfcRelation = addRfcRelationToCertfiedComponent(nodeType, resourceIdBeforeCertify, certifiedResource.getUniqueId()); if (!addRfcRelation.equals(StorageOperationStatus.OK)) { result = Either.right(addRfcRelation); return result; @@ -556,15 +515,13 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, - String componentName, String uuid, boolean inTransaction) { + public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, String componentName, String uuid, boolean inTransaction) { Either<Boolean, StorageOperationStatus> result = null; ComponentOperation componentOperation = getComponentOperation(nodeType); try { - Either<List<Component>, StorageOperationStatus> oldVersionsToDelete = getComponentTempVersions(nodeType, - uuid); + Either<List<Component>, StorageOperationStatus> oldVersionsToDelete = getComponentTempVersions(nodeType, uuid); if (oldVersionsToDelete.isRight()) { result = Either.right(oldVersionsToDelete.right().value()); @@ -573,8 +530,7 @@ public class LifecycleOperation implements ILifecycleOperation { for (Component resourceToDelete : oldVersionsToDelete.left().value()) { - Either<Component, StorageOperationStatus> updateResource = componentOperation - .markComponentToDelete(resourceToDelete, inTransaction); + Either<Component, StorageOperationStatus> updateResource = componentOperation.markComponentToDelete(resourceToDelete, inTransaction); if (updateResource.isRight()) { result = Either.right(updateResource.right().value()); return result; @@ -596,26 +552,22 @@ public class LifecycleOperation implements ILifecycleOperation { } } - private StorageOperationStatus addRfcRelationToCertfiedComponent(NodeTypeEnum componentType, - String resourceIdBeforeCertify, String uniqueId) { + private StorageOperationStatus addRfcRelationToCertfiedComponent(NodeTypeEnum componentType, String resourceIdBeforeCertify, String uniqueId) { // get user of certification request UniqueIdData componentV = new UniqueIdData(componentType, resourceIdBeforeCertify); Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION); - Either<GraphRelation, TitanOperationStatus> rfcRelationResponse = titanGenericDao - .getIncomingRelationByCriteria(componentV, GraphEdgeLabels.LAST_STATE, props); + Either<GraphRelation, TitanOperationStatus> rfcRelationResponse = titanGenericDao.getIncomingRelationByCriteria(componentV, GraphEdgeLabels.LAST_STATE, props); if (rfcRelationResponse.isRight()) { TitanOperationStatus status = rfcRelationResponse.right().value(); log.error("failed to find rfc relation for component {}. status=", resourceIdBeforeCertify, status); return DaoStatusConverter.convertTitanStatusToStorageStatus(status); } GraphRelation rfcRelation = rfcRelationResponse.left().value(); - rfcRelation.setTo( - new RelationEndPoint(componentType, GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId)); + rfcRelation.setTo(new RelationEndPoint(componentType, GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId)); - Either<GraphRelation, TitanOperationStatus> createRelationResponse = titanGenericDao - .createRelation(rfcRelation); + Either<GraphRelation, TitanOperationStatus> createRelationResponse = titanGenericDao.createRelation(rfcRelation); if (createRelationResponse.isRight()) { TitanOperationStatus status = createRelationResponse.right().value(); log.error("failed to create rfc relation for component {}. status=", uniqueId, status); @@ -635,9 +587,7 @@ public class LifecycleOperation implements ILifecycleOperation { additionalQueryParams = new HashMap<String, Object>(); additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name()); } - Either<? extends Component, StorageOperationStatus> getLastCertifiedResponse = componentOperation - .getComponentByNameAndVersion(component.getName(), majorVersion + VERSION_DELIMETER + "0", - additionalQueryParams, true); + Either<? extends Component, StorageOperationStatus> getLastCertifiedResponse = componentOperation.getComponentByNameAndVersion(component.getName(), majorVersion + VERSION_DELIMETER + "0", additionalQueryParams, true); if (getLastCertifiedResponse.isRight()) { log.error("failed to update last certified resource. status={}", getLastCertifiedResponse.right().value()); @@ -646,8 +596,7 @@ public class LifecycleOperation implements ILifecycleOperation { Component lastCertified = getLastCertifiedResponse.left().value(); lastCertified.setHighestVersion(false); - Either<Component, StorageOperationStatus> updateResource = componentOperation.updateComponent(lastCertified, - true); + Either<Component, StorageOperationStatus> updateResource = componentOperation.updateComponent(lastCertified, true); if (updateResource.isRight()) { log.error("failed to update last certified resource. status={}", updateResource.right().value()); return updateResource.right().value(); @@ -655,8 +604,7 @@ public class LifecycleOperation implements ILifecycleOperation { return StorageOperationStatus.OK; } - private Either<Component, StorageOperationStatus> cloneComponentForCheckout(Component component, - NodeTypeEnum nodeType, User modifier) { + private Either<Component, StorageOperationStatus> cloneComponentForCheckout(Component component, NodeTypeEnum nodeType, User modifier) { ComponentOperation componentOperation = getComponentOperation(nodeType); String prevId = component.getUniqueId(); @@ -686,8 +634,7 @@ public class LifecycleOperation implements ILifecycleOperation { additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name()); } String name = component.getComponentMetadataDefinition().getMetadataDataDefinition().getName(); - Either<Component, StorageOperationStatus> alreadyExistResult = componentOperation - .getComponentByNameAndVersion(name, version, additionalQueryParams, true); + Either<Component, StorageOperationStatus> alreadyExistResult = componentOperation.getComponentByNameAndVersion(name, version, additionalQueryParams, true); if (alreadyExistResult.isLeft()) { log.debug("Component with name {} and version {} already exist", name, version); return Either.right(StorageOperationStatus.ENTITY_ALREADY_EXISTS); @@ -696,14 +643,11 @@ public class LifecycleOperation implements ILifecycleOperation { StorageOperationStatus storageOperationStatus = alreadyExistResult.right().value(); if (storageOperationStatus != StorageOperationStatus.NOT_FOUND) { - log.debug( - "Unexpected error when checking if component with name {} and version {} already exist, error: {}", - name, version, storageOperationStatus); + log.debug("Unexpected error when checking if component with name {} and version {} already exist, error: {}", name, version, storageOperationStatus); return Either.right(storageOperationStatus); } - Either<Component, StorageOperationStatus> cloneComponentResponse = componentOperation.cloneComponent(component, - version, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, true); + Either<Component, StorageOperationStatus> cloneComponentResponse = componentOperation.cloneComponent(component, version, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, true); return cloneComponentResponse; } @@ -720,8 +664,7 @@ public class LifecycleOperation implements ILifecycleOperation { return Either.left(newVersion); } - private StorageOperationStatus setRelationForCancelCertification(LifecycleStateEnum nextState, - NodeTypeEnum componentType, String componentId) { + private StorageOperationStatus setRelationForCancelCertification(LifecycleStateEnum nextState, NodeTypeEnum componentType, String componentId) { StorageOperationStatus result = StorageOperationStatus.GENERAL_ERROR; Map<String, Object> props = new HashMap<String, Object>(); @@ -730,8 +673,7 @@ public class LifecycleOperation implements ILifecycleOperation { // delete relation CERTIFICATION_IN_PROGRESS props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS); - Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao - .deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props); + Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; @@ -741,8 +683,7 @@ public class LifecycleOperation implements ILifecycleOperation { // delete relation READY_FOR_CERTIFICATION (LAST_STATE) props.put(GraphPropertiesDictionary.STATE.getProperty(), nextState); - deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, - props); + deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; @@ -753,8 +694,7 @@ public class LifecycleOperation implements ILifecycleOperation { // create relation READY_FOR_CERTIFICATION (STATE) UserData user = new UserData(); user.setUserId((String) origRelation.getFrom().getIdValue()); - Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, - componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap()); + Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap()); if (createRelationResult.isRight()) { log.error("failed to update last state relation. status={}", createRelationResult.right().value()); @@ -764,8 +704,7 @@ public class LifecycleOperation implements ILifecycleOperation { return StorageOperationStatus.OK; } - private StorageOperationStatus setRelationForFailCertification(LifecycleStateEnum nextState, - NodeTypeEnum componentType, String componentId) { + private StorageOperationStatus setRelationForFailCertification(LifecycleStateEnum nextState, NodeTypeEnum componentType, String componentId) { StorageOperationStatus result = null; Map<String, Object> props = new HashMap<String, Object>(); @@ -774,8 +713,7 @@ public class LifecycleOperation implements ILifecycleOperation { // delete relation CERTIFICATION_IN_PROGRESS props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS); - Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao - .deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props); + Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; @@ -785,8 +723,7 @@ public class LifecycleOperation implements ILifecycleOperation { // delete relation READY_FOR_CERTIFICATION props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION); - deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, - props); + deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; @@ -795,8 +732,7 @@ public class LifecycleOperation implements ILifecycleOperation { // delete relation NOT_CERTIFIED_CHECKIN (in order to change to STATE) props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN); - deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, - props); + deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props); if (deleteResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; @@ -807,14 +743,31 @@ public class LifecycleOperation implements ILifecycleOperation { GraphRelation origRelation = deleteResult.left().value(); UserData user = new UserData(); user.setUserId((String) origRelation.getFrom().getIdValue()); - Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, - componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap()); + Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap()); if (createRelationResult.isRight()) { log.debug("failed to update last state relation"); result = StorageOperationStatus.INCONSISTENCY; return result; } + + // delete relation LAST_MODIFIER (in order to change tester to designer) + deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_MODIFIER, null); + if (deleteResult.isRight()) { + log.debug("failed to update last modifier relation"); + result = StorageOperationStatus.INCONSISTENCY; + return result; + } + + // create new LAST_MODIFIER relation + origRelation = deleteResult.left().value(); + createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.LAST_MODIFIER, origRelation.toGraphMap()); + if (createRelationResult.isRight()) { + log.debug("failed to update last state relation"); + result = StorageOperationStatus.INCONSISTENCY; + return result; + } + return StorageOperationStatus.OK; } @@ -826,9 +779,7 @@ public class LifecycleOperation implements ILifecycleOperation { * @param nextState * @return */ - private Either<Component, StorageOperationStatus> updateComponentMD(Component component, User modifier, - LifecycleStateEnum nextState, NodeTypeEnum nodeType, - ComponentParametersView returnedComponentParametersViewFilter) { + private Either<Component, StorageOperationStatus> updateComponentMD(Component component, User modifier, LifecycleStateEnum nextState, NodeTypeEnum nodeType, ComponentParametersView returnedComponentParametersViewFilter) { if (returnedComponentParametersViewFilter == null) { returnedComponentParametersViewFilter = new ComponentParametersView(); @@ -849,34 +800,28 @@ public class LifecycleOperation implements ILifecycleOperation { } log.debug("updateComponentMD::getAndUpdateMetadata start"); // get service MD - Either<ComponentMetadataData, TitanOperationStatus> componentDataResult = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(nodeType), component.getUniqueId(), ComponentMetadataData.class); + Either<ComponentMetadataData, TitanOperationStatus> componentDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), component.getUniqueId(), ComponentMetadataData.class); if (componentDataResult.isRight()) { log.debug("failed to get service data from graph"); - return Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(componentDataResult.right().value())); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(componentDataResult.right().value())); } // set state on resource ComponentMetadataData componentData = componentDataResult.left().value(); componentData.getMetadataDataDefinition().setState(nextState.name()); component.setLifecycleState(nextState); - Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, - ComponentMetadataData.class); + Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class); log.debug("updateComponentMD::getAndUpdateMetadata end"); if (updateNode.isRight()) { - log.error("Failed to update component " + component.getUniqueId() + ". status is " - + updateNode.right().value()); + log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); return result; } log.debug("updateComponentMD::getAndUpdateMetadata start"); - Either<Object, StorageOperationStatus> serviceAfterChange = componentOperation - .getComponent(component.getUniqueId(), returnedComponentParametersViewFilter, true); + Either<Object, StorageOperationStatus> serviceAfterChange = componentOperation.getComponent(component.getUniqueId(), returnedComponentParametersViewFilter, true); log.debug("updateComponentMD::getAndUpdateMetadata end"); if (serviceAfterChange.isRight()) { - log.error("Failed to get component " + component.getUniqueId() + " after change. status is " - + updateNode.right().value()); + log.error("Failed to get component {} after change. status is {}", component.getUniqueId(), updateNode.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); return result; } @@ -891,8 +836,7 @@ public class LifecycleOperation implements ILifecycleOperation { * @param nextState * @return */ - private Either<Resource, StorageOperationStatus> updateResourceMD(Resource resource, User modifier, - LifecycleStateEnum nextState) { + private Either<Resource, StorageOperationStatus> updateResourceMD(Resource resource, User modifier, LifecycleStateEnum nextState) { Either<Resource, StorageOperationStatus> result; resource.setLastUpdateDate(null); @@ -904,33 +848,27 @@ public class LifecycleOperation implements ILifecycleOperation { return result; } // get resource MD - Either<ResourceMetadataData, TitanOperationStatus> resourceDataResult = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), - ResourceMetadataData.class); + Either<ResourceMetadataData, TitanOperationStatus> resourceDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), ResourceMetadataData.class); if (resourceDataResult.isRight()) { log.debug("failed to get resource data from graph"); - return Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceDataResult.right().value())); + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceDataResult.right().value())); } // set state on resource ResourceMetadataData resourceData = resourceDataResult.left().value(); resourceData.getMetadataDataDefinition().setState(nextState.name()); resource.setLifecycleState(nextState); - Either<ResourceMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(resourceData, - ResourceMetadataData.class); + Either<ResourceMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(resourceData, ResourceMetadataData.class); if (updateNode.isRight()) { - log.error("Failed to update resource " + resource.getUniqueId() + ". status is " - + updateNode.right().value()); + log.error("Failed to update resource {}. status is {}", resource.getUniqueId(), updateNode.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); return result; } return Either.left(resource); } - private Either<List<Component>, StorageOperationStatus> getComponentTempVersions(NodeTypeEnum nodeType, - String uuid) { + private Either<List<Component>, StorageOperationStatus> getComponentTempVersions(NodeTypeEnum nodeType, String uuid) { Either<List<Component>, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR); List<Component> componentList = new ArrayList<Component>(); @@ -941,8 +879,7 @@ public class LifecycleOperation implements ILifecycleOperation { createOldVersionsCriteria(nodeType, uuid, hasProps, hasNotProps); - Either<List<ComponentMetadataData>, TitanOperationStatus> getByCriteria = titanGenericDao - .getByCriteria(nodeType, hasProps, hasNotProps, ComponentMetadataData.class); + Either<List<ComponentMetadataData>, TitanOperationStatus> getByCriteria = titanGenericDao.getByCriteria(nodeType, hasProps, hasNotProps, ComponentMetadataData.class); if (getByCriteria.isRight()) { log.error("failed to get old versions for component, type:{}, id: {}", nodeType, uuid); @@ -952,8 +889,7 @@ public class LifecycleOperation implements ILifecycleOperation { List<ComponentMetadataData> oldVersionComponents = getByCriteria.left().value(); for (ComponentMetadataData component : oldVersionComponents) { - Either<Component, StorageOperationStatus> resourceRes = componentOperation - .getComponent(component.getMetadataDataDefinition().getUniqueId(), true); + Either<Component, StorageOperationStatus> resourceRes = componentOperation.getComponent(component.getMetadataDataDefinition().getUniqueId(), true); if (resourceRes.isRight()) { result = Either.right(resourceRes.right().value()); return result; @@ -965,17 +901,31 @@ public class LifecycleOperation implements ILifecycleOperation { return result; } - private void createOldVersionsCriteria(NodeTypeEnum nodeType, String uuid, Map<String, Object> hasProps, - Map<String, Object> hasNotProps) { + /* + * private Either<List<Service>, StorageOperationStatus> getServiceTempVersions(NodeTypeEnum nodeType, String uuid) { + * + * Either<List<Service>, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR); List<Service> resourceList = new ArrayList<Service>(); + * + * Map<String, Object> hasProps = new HashMap<String, Object>(); Map<String, Object> hasNotProps = new HashMap<String, Object>(); + * + * createOldVersionsCriteria(nodeType, uuid, hasProps, hasNotProps); + * + * Either<List<ServiceMetadataData>, TitanOperationStatus> getByCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, hasProps, hasNotProps, ServiceMetadataData.class); + * + * if (getByCriteria.isRight()) { log.error("failed to get old versions for {}", uuid); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus( getByCriteria.right().value())); return result; } + * + * List<ServiceMetadataData> oldVersionResources = getByCriteria.left().value(); for (ServiceMetadataData resource : oldVersionResources) { Either<Service, StorageOperationStatus> resourceRes = serviceOperation.getService((String) + * resource.getUniqueId(), true); if (resourceRes.isRight()) { result = Either.right(resourceRes.right().value()); return result; } else { resourceList.add(resourceRes.left().value()); } } result = Either.left(resourceList); return result; } + */ + private void createOldVersionsCriteria(NodeTypeEnum nodeType, String uuid, Map<String, Object> hasProps, Map<String, Object> hasNotProps) { hasProps.put(GraphPropertiesDictionary.UUID.getProperty(), uuid); hasProps.put(GraphPropertiesDictionary.LABEL.getProperty(), nodeType.name().toLowerCase()); hasNotProps.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name()); } - private Either<? extends Component, StorageOperationStatus> updateOldComponentBeforeUndoCheckout( - ComponentOperation componentOperation, Component prevComponent, Component currentComponent, - String previousVersion, NodeTypeEnum nodeType, boolean inTransaction) { + private Either<? extends Component, StorageOperationStatus> updateOldComponentBeforeUndoCheckout(ComponentOperation componentOperation, Component prevComponent, Component currentComponent, String previousVersion, NodeTypeEnum nodeType, + boolean inTransaction) { log.debug("update previous version of component"); Map<String, Object> additionalQueryParams = new HashMap<String, Object>(); @@ -985,31 +935,25 @@ public class LifecycleOperation implements ILifecycleOperation { additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name()); } - ComponentMetadataDataDefinition metadataDataDefinition = currentComponent.getComponentMetadataDefinition() - .getMetadataDataDefinition(); - Either<? extends Component, StorageOperationStatus> getOlderCompResult = componentOperation - .getComponentByNameAndVersion(metadataDataDefinition.getName(), previousVersion, additionalQueryParams, - true); + ComponentMetadataDataDefinition metadataDataDefinition = currentComponent.getComponentMetadataDefinition().getMetadataDataDefinition(); + Either<? extends Component, StorageOperationStatus> getOlderCompResult = componentOperation.getComponentByNameAndVersion(metadataDataDefinition.getName(), previousVersion, additionalQueryParams, true); // if previous version exist - set it as current version if (getOlderCompResult.isRight()) { if (StorageOperationStatus.NOT_FOUND.equals(getOlderCompResult.right().value())) { - log.debug("No components by name and version : {} {}", metadataDataDefinition.getName(), previousVersion); + log.debug("No components by name and version: {} - {}", metadataDataDefinition.getName(), previousVersion); log.debug("Name may have changed, since the version isn't certified try to fetch by UUID {}", metadataDataDefinition.getUUID()); additionalQueryParams.clear(); - additionalQueryParams.put(GraphPropertiesDictionary.UUID.getProperty(), - metadataDataDefinition.getUUID()); + additionalQueryParams.put(GraphPropertiesDictionary.UUID.getProperty(), metadataDataDefinition.getUUID()); additionalQueryParams.put(GraphPropertiesDictionary.VERSION.getProperty(), previousVersion); - Either<List<ComponentMetadataData>, TitanOperationStatus> byUUID = titanGenericDao - .getByCriteria(nodeType, additionalQueryParams, ComponentMetadataData.class); + Either<List<ComponentMetadataData>, TitanOperationStatus> byUUID = titanGenericDao.getByCriteria(nodeType, additionalQueryParams, ComponentMetadataData.class); if (byUUID.isRight()) { log.debug("Failed to fetch by UUID {}", metadataDataDefinition.getUUID()); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byUUID.right().value())); } String prevVersionId = (String) byUUID.left().value().get(0).getUniqueId(); - Either<? extends Component, StorageOperationStatus> component = componentOperation - .getComponent(prevVersionId, inTransaction); + Either<? extends Component, StorageOperationStatus> component = componentOperation.getComponent(prevVersionId, inTransaction); if (component.isRight()) { log.debug("Failed to fetch previous component by ID {}", prevVersionId); return Either.right(component.right().value()); @@ -1029,8 +973,7 @@ public class LifecycleOperation implements ILifecycleOperation { } prevComponent.setHighestVersion(true); - Either<Component, StorageOperationStatus> updateCompResult = componentOperation.updateComponent(prevComponent, - inTransaction); + Either<Component, StorageOperationStatus> updateCompResult = componentOperation.updateComponent(prevComponent, inTransaction); if (updateCompResult.isRight()) { log.debug("failed to update prev version of component"); return updateCompResult; @@ -1038,8 +981,7 @@ public class LifecycleOperation implements ILifecycleOperation { User user = new User(); user.setUserId(prevComponent.getLastUpdaterUserId()); - StorageOperationStatus changeStateRelation = changeStateRelation(nodeType, prevComponent.getUniqueId(), user, - GraphEdgeLabels.LAST_STATE, GraphEdgeLabels.STATE); + StorageOperationStatus changeStateRelation = changeStateRelation(nodeType, prevComponent.getUniqueId(), user, GraphEdgeLabels.LAST_STATE, GraphEdgeLabels.STATE); if (!changeStateRelation.equals(StorageOperationStatus.OK)) { return Either.right(changeStateRelation); } @@ -1047,13 +989,11 @@ public class LifecycleOperation implements ILifecycleOperation { return Either.left(prevComponent); } - private StorageOperationStatus changeStateRelation(NodeTypeEnum nodeType, String componentId, User currentOwner, - GraphEdgeLabels from, GraphEdgeLabels to) { + private StorageOperationStatus changeStateRelation(NodeTypeEnum nodeType, String componentId, User currentOwner, GraphEdgeLabels from, GraphEdgeLabels to) { UniqueIdData componentData = new UniqueIdData(nodeType, componentId); UserData userData = new UserData(); userData.setUserId(currentOwner.getUserId()); - Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao - .replaceRelationLabel(userData, componentData, from, to); + Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao.replaceRelationLabel(userData, componentData, from, to); if (replaceRelationLabelResult.isRight()) { TitanOperationStatus titanStatus = replaceRelationLabelResult.right().value(); log.error("failed to replace label from {} to {}. status = {}", from, to, titanStatus); @@ -1066,15 +1006,13 @@ public class LifecycleOperation implements ILifecycleOperation { return StorageOperationStatus.OK; } - private StorageOperationStatus removeUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, - GraphEdgeLabels label) { + private StorageOperationStatus removeUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, GraphEdgeLabels label) { UniqueIdData componentV = new UniqueIdData(componentType, idTo); UserData userV = new UserData(); userV.setUserId(idFrom); // delete relation - Either<GraphRelation, TitanOperationStatus> deleteRelationResult = titanGenericDao.deleteRelation(userV, - componentV, label); + Either<GraphRelation, TitanOperationStatus> deleteRelationResult = titanGenericDao.deleteRelation(userV, componentV, label); if (deleteRelationResult.isRight()) { log.error("failed to delete relation. status={}", deleteRelationResult.right().value()); return DaoStatusConverter.convertTitanStatusToStorageStatus(deleteRelationResult.right().value()); @@ -1082,15 +1020,13 @@ public class LifecycleOperation implements ILifecycleOperation { return StorageOperationStatus.OK; } - private StorageOperationStatus createUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, - GraphEdgeLabels label, Map<String, Object> props) { + private StorageOperationStatus createUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, GraphEdgeLabels label, Map<String, Object> props) { UniqueIdData componentV = new UniqueIdData(componentType, idTo); UserData userV = new UserData(); userV.setUserId(idFrom); // create relation - Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(userV, - componentV, label, props); + Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(userV, componentV, label, props); if (createRelationResult.isRight()) { log.error("failed to create relation. status={}", createRelationResult.right().value()); return DaoStatusConverter.convertTitanStatusToStorageStatus(createRelationResult.right().value()); @@ -1099,8 +1035,7 @@ public class LifecycleOperation implements ILifecycleOperation { } @Override - public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, - Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean inTransaction) { + public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean inTransaction) { Either<? extends Component, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR); try { @@ -1108,8 +1043,7 @@ public class LifecycleOperation implements ILifecycleOperation { ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState(); result = updateComponentMD(component, modifier, nextState, nodeType, componentParametersView); if (result.isRight()) { - log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), - nextState, result.right().value()); + log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), nextState, result.right().value()); return result; } StorageOperationStatus status = StorageOperationStatus.OK; diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/OnboardingClient.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/OnboardingClient.java index a7f8275064..033d5c268b 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/OnboardingClient.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/OnboardingClient.java @@ -91,7 +91,6 @@ public class OnboardingClient { } - // Mock returning a file from the file system until we have API from onboarding public Either<Map<String, byte[]>, StorageOperationStatus> getMockCsar(String csarUuid) { File dir = new File("/var/tmp/mockCsar"); FileFilter fileFilter = new WildcardFileFilter("*.csar"); @@ -169,7 +168,7 @@ public class OnboardingClient { /** * Build the url for download CSAR * - * E.g., http://1.2.3.4:8181/onboarding-api/v1.0/vendor-software-products/packages/ + * E.g., http://0.0.0.0:8181/onboarding-api/v1.0/vendor-software-products/packages/ * * @return */ diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PolicyTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PolicyTypeOperation.java index d085c242e8..796fc8dd34 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PolicyTypeOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PolicyTypeOperation.java @@ -64,8 +64,7 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp return getLatestPolicyTypeByType(policyTypeName, false); } - private Either<PolicyTypeDefinition, StorageOperationStatus> getLatestPolicyTypeByType(String type, - boolean inTransaction) { + private Either<PolicyTypeDefinition, StorageOperationStatus> getLatestPolicyTypeByType(String type, boolean inTransaction) { Map<String, Object> mapCriteria = new HashMap<>(); mapCriteria.put(GraphPropertiesDictionary.TYPE.getProperty(), type); mapCriteria.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); @@ -79,8 +78,7 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp } @Override - public Either<PolicyTypeDefinition, StorageOperationStatus> addPolicyType(PolicyTypeDefinition policyTypeDef, - boolean inTransaction) { + public Either<PolicyTypeDefinition, StorageOperationStatus> addPolicyType(PolicyTypeDefinition policyTypeDef, boolean inTransaction) { Either<PolicyTypeDefinition, StorageOperationStatus> result = null; @@ -89,10 +87,8 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp Either<PolicyTypeData, TitanOperationStatus> eitherStatus = addPolicyTypeToGraph(policyTypeDef); if (eitherStatus.isRight()) { - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError(CREATE_FLOW_CONTEXT, - policyTypeDef.getType(), eitherStatus.right().value().name()); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError(CREATE_FLOW_CONTEXT, policyTypeDef.getType(), eitherStatus.right().value().name()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value())); } else { PolicyTypeData policyTypeData = eitherStatus.left().value(); @@ -101,8 +97,7 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp Either<PolicyTypeDefinition, StorageOperationStatus> policyTypeRes = this.getPolicyType(uniqueId, true); if (policyTypeRes.isRight()) { - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError(GET_FLOW_CONTEXT, - policyTypeDef.getType(), eitherStatus.right().value().name()); + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError(GET_FLOW_CONTEXT, policyTypeDef.getType(), eitherStatus.right().value().name()); } result = policyTypeRes; @@ -126,20 +121,18 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp log.debug("Before adding policy type to graph. policyTypeData = {}", policyTypeData); - Either<PolicyTypeData, TitanOperationStatus> eitherPolicyTypeData = titanGenericDao.createNode(policyTypeData, - PolicyTypeData.class); + Either<PolicyTypeData, TitanOperationStatus> eitherPolicyTypeData = titanGenericDao.createNode(policyTypeData, PolicyTypeData.class); log.debug("After adding policy type to graph. status is = {}", eitherPolicyTypeData); if (eitherPolicyTypeData.isRight()) { TitanOperationStatus operationStatus = eitherPolicyTypeData.right().value(); - log.error("Failed to add policy type {} to graph. Status is {}", policyTypeDef.getType(), operationStatus); + log.error("Failed to add policy type {} to graph. status is {}", policyTypeDef.getType(), operationStatus); return Either.right(operationStatus); } PolicyTypeData resultCTD = eitherPolicyTypeData.left().value(); List<PropertyDefinition> properties = policyTypeDef.getProperties(); - Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToPolicyType = propertyOperation - .addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.PolicyType, properties); + Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToPolicyType = propertyOperation.addPropertiesToElementType(resultCTD.getUniqueId(), NodeTypeEnum.PolicyType, properties); if (addPropertiesToPolicyType.isRight()) { log.error("Failed add properties {} to policy {}", properties, policyTypeDef.getType()); return Either.right(addPropertiesToPolicyType.right().value()); @@ -148,8 +141,7 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp return Either.left(eitherPolicyTypeData.left().value()); } - public Either<PolicyTypeDefinition, StorageOperationStatus> getPolicyTypeByCriteria(String type, - Map<String, Object> properties, boolean inTransaction) { + public Either<PolicyTypeDefinition, StorageOperationStatus> getPolicyTypeByCriteria(String type, Map<String, Object> properties, boolean inTransaction) { Either<PolicyTypeDefinition, StorageOperationStatus> result = null; try { if (type == null || type.isEmpty()) { @@ -158,14 +150,11 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp return result; } - Either<List<PolicyTypeData>, TitanOperationStatus> eitherPolicyData = titanGenericDao - .getByCriteria(NodeTypeEnum.PolicyType, properties, PolicyTypeData.class); + Either<List<PolicyTypeData>, TitanOperationStatus> eitherPolicyData = titanGenericDao.getByCriteria(NodeTypeEnum.PolicyType, properties, PolicyTypeData.class); if (eitherPolicyData.isRight()) { - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherPolicyData.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherPolicyData.right().value())); } else { - PolicyTypeDataDefinition dataDefinition = eitherPolicyData.left().value().stream() - .map(e -> e.getPolicyTypeDataDefinition()).findFirst().get(); + PolicyTypeDataDefinition dataDefinition = eitherPolicyData.left().value().stream().map(e -> e.getPolicyTypeDataDefinition()).findFirst().get(); result = getPolicyType(dataDefinition.getUniqueId(), inTransaction); } @@ -178,8 +167,7 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp @Override public Either<PolicyTypeDefinition, StorageOperationStatus> getPolicyType(String uniqueId, boolean inTransaction) { - Function<String, Either<PolicyTypeDefinition, TitanOperationStatus>> policyTypeGetter = uId -> getPolicyTypeByUid( - uId); + Function<String, Either<PolicyTypeDefinition, TitanOperationStatus>> policyTypeGetter = uId -> getPolicyTypeByUid(uId); return getElementType(policyTypeGetter, uniqueId, inTransaction); } @@ -187,21 +175,18 @@ public class PolicyTypeOperation extends AbstractOperation implements IPolicyTyp private Either<PolicyTypeDefinition, TitanOperationStatus> getPolicyTypeByUid(String uniqueId) { Either<PolicyTypeDefinition, TitanOperationStatus> result = null; - Either<PolicyTypeData, TitanOperationStatus> eitherPolicyTypeData = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PolicyType), uniqueId, PolicyTypeData.class); + Either<PolicyTypeData, TitanOperationStatus> eitherPolicyTypeData = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PolicyType), uniqueId, PolicyTypeData.class); if (eitherPolicyTypeData.isRight()) { TitanOperationStatus status = eitherPolicyTypeData.right().value(); - log.debug("Policy type {} cannot be found in graph. Status is {}", uniqueId, status); + log.debug("Policy type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } PolicyTypeData policyTypeData = eitherPolicyTypeData.left().value(); - PolicyTypeDefinition policyTypeDefinition = new PolicyTypeDefinition( - policyTypeData.getPolicyTypeDataDefinition()); + PolicyTypeDefinition policyTypeDefinition = new PolicyTypeDefinition(policyTypeData.getPolicyTypeDataDefinition()); - TitanOperationStatus propertiesStatus = propertyOperation.fillProperties(uniqueId, - propList -> policyTypeDefinition.setProperties(propList)); + TitanOperationStatus propertiesStatus = propertyOperation.fillProperties(uniqueId, propList -> policyTypeDefinition.setProperties(propList)); if (propertiesStatus != TitanOperationStatus.OK) { log.error("Failed to fetch properties of policy type {}", uniqueId); return Either.right(propertiesStatus); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java index 2a8192421b..3d4fba36df 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java @@ -94,10 +94,8 @@ public class ProductOperation extends ComponentOperation implements IProductOper @SuppressWarnings("unchecked") @Override - protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, - Map<String, Object> additionalParams, boolean inTransaction) { - return (Either<T, StorageOperationStatus>) getByNamesAndVersion(GraphPropertiesDictionary.NAME.getProperty(), - name, version, additionalParams, inTransaction); + protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) { + return (Either<T, StorageOperationStatus>) getByNamesAndVersion(GraphPropertiesDictionary.NAME.getProperty(), name, version, additionalParams, inTransaction); } @Override @@ -106,14 +104,12 @@ public class ProductOperation extends ComponentOperation implements IProductOper } @Override - public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, - boolean inTransaction) { + public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction) { return getFilteredComponents(filters, inTransaction, NodeTypeEnum.Product); } private Product convertProductDataToProduct(ProductMetadataData productData) { - ProductMetadataDefinition productMetadataDefinition = new ProductMetadataDefinition( - (ProductMetadataDataDefinition) productData.getMetadataDataDefinition()); + ProductMetadataDefinition productMetadataDefinition = new ProductMetadataDefinition((ProductMetadataDataDefinition) productData.getMetadataDataDefinition()); Product product = new Product(productMetadataDefinition); @@ -123,28 +119,24 @@ public class ProductOperation extends ComponentOperation implements IProductOper @SuppressWarnings("unchecked") @Override public <T> Either<T, StorageOperationStatus> updateComponent(T component, boolean inTransaction) { - return (Either<T, StorageOperationStatus>) updateComponent((Component) component, inTransaction, - titanGenericDao, Product.class, NodeTypeEnum.Product); + return (Either<T, StorageOperationStatus>) updateComponent((Component) component, inTransaction, titanGenericDao, Product.class, NodeTypeEnum.Product); } @SuppressWarnings("unchecked") @Override public Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction) { - return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct(id, - inTransaction); + return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct(id, inTransaction); } @Override - public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, - boolean recursively, boolean inTransaction) { + public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) { // TODO Auto-generated method stub return null; } @SuppressWarnings("unchecked") @Override - public <T extends org.openecomp.sdc.be.model.Component> Either<T, StorageOperationStatus> getComponent(String id, - Class<T> clazz) { + public <T extends org.openecomp.sdc.be.model.Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz) { return (Either<T, StorageOperationStatus>) getProduct(id, false); } @@ -160,16 +152,14 @@ public class ProductOperation extends ComponentOperation implements IProductOper Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph(); if (graphResult.isRight()) { - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value())); return result; } - Either<ProductMetadataData, TitanOperationStatus> productNode = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), productId, ProductMetadataData.class); + Either<ProductMetadataData, TitanOperationStatus> productNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), productId, ProductMetadataData.class); if (productNode.isRight()) { TitanOperationStatus status = productNode.right().value(); - log.error("Failed to find product {}. Status is {}", productId, status); + log.error("Failed to find product {}. status is {}", productId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -177,29 +167,27 @@ public class ProductOperation extends ComponentOperation implements IProductOper Either<Product, StorageOperationStatus> productRes = getProduct(productId, true); if (productRes.isRight()) { StorageOperationStatus status = productRes.right().value(); - log.error("Failed to find product {}", productId, status); + log.error("Failed to find product {}.status is {}", productId, status); result = Either.right(status); return result; } Product product = productRes.left().value(); - Either<List<ComponentInstance>, StorageOperationStatus> deleteAllInstancesRes = componentInstanceOperation - .deleteAllComponentInstances(productId, NodeTypeEnum.Product, true); - log.debug("After deleting instances under product {}. Result is {}", productId, deleteAllInstancesRes); + Either<List<ComponentInstance>, StorageOperationStatus> deleteAllInstancesRes = componentInstanceOperation.deleteAllComponentInstances(productId, NodeTypeEnum.Product, true); + log.debug("After deleting instances under product {}.Result is {}", productId, deleteAllInstancesRes); if (deleteAllInstancesRes.isRight()) { StorageOperationStatus status = deleteAllInstancesRes.right().value(); if (status != StorageOperationStatus.NOT_FOUND) { - log.error("Failed to delete instances under product {}. Status is {}", productId, status); + log.error("Failed to delete instances under product {}.status is {}", productId, status); result = Either.right(status); return result; } } - Either<ProductMetadataData, TitanOperationStatus> deleteProductNodeRes = titanGenericDao - .deleteNode(productNode.left().value(), ProductMetadataData.class); + Either<ProductMetadataData, TitanOperationStatus> deleteProductNodeRes = titanGenericDao.deleteNode(productNode.left().value(), ProductMetadataData.class); if (deleteProductNodeRes.isRight()) { TitanOperationStatus status = deleteProductNodeRes.right().value(); - log.error("Failed to delete product node {}. Status is {}", productId, status); + log.error("Failed to delete product node {}. status is {}", productId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -230,47 +218,20 @@ public class ProductOperation extends ComponentOperation implements IProductOper /* * Map<String, Object> propertiesToMatch = new HashMap<>(); * - * propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty - * (), LifecycleStateEnum.CERTIFIED.name()); - * Either<List<ProductMetadataData>, TitanOperationStatus> - * lastVersionNodes = getLastVersion(NodeTypeEnum.Product, - * propertiesToMatch, ProductMetadataData.class); if - * (lastVersionNodes.isRight() && lastVersionNodes.right().value() - * != TitanOperationStatus.NOT_FOUND) { return - * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus - * (lastVersionNodes.right().value())); } List<ProductMetadataData> - * notCertifiedHighest = (lastVersionNodes.isLeft() ? - * lastVersionNodes.left().value() : new - * ArrayList<ProductMetadataData>()); + * propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty (), LifecycleStateEnum.CERTIFIED.name()); Either<List<ProductMetadataData>, TitanOperationStatus> lastVersionNodes = getLastVersion(NodeTypeEnum.Product, + * propertiesToMatch, ProductMetadataData.class); if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus + * (lastVersionNodes.right().value())); } List<ProductMetadataData> notCertifiedHighest = (lastVersionNodes.isLeft() ? lastVersionNodes.left().value() : new ArrayList<ProductMetadataData>()); * - * propertiesToMatch.put(GraphPropertiesDictionary. - * IS_HIGHEST_VERSION.getProperty(), true); - * Either<List<ProductMetadataData>, TitanOperationStatus> - * componentsNodes = - * titanGenericDao.getByCriteria(NodeTypeEnum.Product, - * propertiesToMatch, ProductMetadataData.class); if - * (componentsNodes.isRight() && componentsNodes.right().value() != - * TitanOperationStatus.NOT_FOUND) { return - * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus - * (componentsNodes.right().value())); } List<ProductMetadataData> - * certifiedHighest = (componentsNodes.isLeft() ? - * componentsNodes.left().value() : new - * ArrayList<ProductMetadataData>()); Set<String> names = new - * HashSet<String>(); for (ProductMetadataData data : - * notCertifiedHighest) { String name = - * data.getMetadataDataDefinition().getName(); names.add(name); } + * propertiesToMatch.put(GraphPropertiesDictionary. IS_HIGHEST_VERSION.getProperty(), true); Either<List<ProductMetadataData>, TitanOperationStatus> componentsNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Product, propertiesToMatch, + * ProductMetadataData.class); if (componentsNodes.isRight() && componentsNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus + * (componentsNodes.right().value())); } List<ProductMetadataData> certifiedHighest = (componentsNodes.isLeft() ? componentsNodes.left().value() : new ArrayList<ProductMetadataData>()); Set<String> names = new HashSet<String>(); for + * (ProductMetadataData data : notCertifiedHighest) { String name = data.getMetadataDataDefinition().getName(); names.add(name); } * - * for (ProductMetadataData data : certifiedHighest) { String - * productName = data.getMetadataDataDefinition().getName(); if - * (!names.contains(productName)) { notCertifiedHighest.add(data); } - * } + * for (ProductMetadataData data : certifiedHighest) { String productName = data.getMetadataDataDefinition().getName(); if (!names.contains(productName)) { notCertifiedHighest.add(data); } } */ - Either<List<ProductMetadataData>, TitanOperationStatus> listOfHighestComponents = this - .getListOfHighestComponents(NodeTypeEnum.Product, ProductMetadataData.class); - if (listOfHighestComponents.isRight() - && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) { - return Either.right( - DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value())); + Either<List<ProductMetadataData>, TitanOperationStatus> listOfHighestComponents = this.getListOfHighestComponents(NodeTypeEnum.Product, ProductMetadataData.class); + if (listOfHighestComponents.isRight() && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value())); } List<ProductMetadataData> notCertifiedHighest = listOfHighestComponents.left().value(); @@ -282,42 +243,30 @@ public class ProductOperation extends ComponentOperation implements IProductOper // fetch from cache long startFetchAllFromCache = System.currentTimeMillis(); - Map<String, Long> components = notCertifiedHighest.stream() - .collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), - p -> p.getMetadataDataDefinition().getLastUpdateDate())); + Map<String, Long> components = notCertifiedHighest.stream().collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), p -> p.getMetadataDataDefinition().getLastUpdateDate())); - Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this - .getComponentsFromCacheForCatalog(components, ComponentTypeEnum.PRODUCT); + Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this.getComponentsFromCacheForCatalog(components, ComponentTypeEnum.PRODUCT); if (componentsFromCacheForCatalog.isLeft()) { - ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left() - .value(); + ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left().value(); List<Component> list = immutablePair.getLeft(); if (list != null) { for (Component component : list) { result.add((Product) component); } - List<String> addedUids = list.stream() - .map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()) - .collect(Collectors.toList()); - notCertifiedHighest = notCertifiedHighest.stream() - .filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())) - .collect(Collectors.toList()); + List<String> addedUids = list.stream().map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()).collect(Collectors.toList()); + notCertifiedHighest = notCertifiedHighest.stream().filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())).collect(Collectors.toList()); } } long endFetchAllFromCache = System.currentTimeMillis(); - log.debug("Fetch all catalog products metadata from cache took {} ms", - (endFetchAllFromCache - startFetchAllFromCache)); + log.debug("Fetch all catalog products metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache)); log.debug("The number of products added to catalog from cache is {}", result.size()); - log.debug("The number of products needed to be fetch as light component is {}", - notCertifiedHighest.size()); + log.debug("The number of products needed to be fetch as light component is {}", notCertifiedHighest.size()); for (ProductMetadataData data : notCertifiedHighest) { - Either<Product, StorageOperationStatus> component = getLightComponent( - data.getMetadataDataDefinition().getUniqueId(), inTransaction); + Either<Product, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction); if (component.isRight()) { - log.debug("Failed to get product for id = {}, error : {}. skip product", data.getUniqueId(), - component.right().value()); + log.debug("Failed to get product for id = {}, error : {}. skip product", data.getUniqueId(), component.right().value()); } else { // get all versions Product product = component.left().value(); @@ -332,7 +281,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper if (false == inTransaction) { titanGenericDao.commit(); } - log.debug("Fetch all catalog products took {} ms", (System.currentTimeMillis() - start)); + log.debug("Fetch all catalog products took {} ms", System.currentTimeMillis() - start); } } @@ -383,34 +332,29 @@ public class ProductOperation extends ComponentOperation implements IProductOper } log.trace("Finding groupings for product {}", uniqueId); - Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent( - NodeTypeEnum.ProductGrouping, product); + Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, product); if (findGroupingsForComponent.isRight()) { return Either.right(findGroupingsForComponent.right().value()); } List<GroupingData> groupingDataToAssociate = findGroupingsForComponent.left().value(); log.debug("try to create product node on graph for id {}", uniqueId); - Either<ProductMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(productData, - ProductMetadataData.class); + Either<ProductMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(productData, ProductMetadataData.class); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - log.error("Error returned after creating product data node {}. Status returned is {}", productData, - status); + log.error("Error returned after creating product data node {}. Status returned is {}", productData, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } log.debug("product node created on graph for id {}", productData.getUniqueId()); - TitanOperationStatus associateMetadata = associateMetadataToComponent(productData, creatorUserData, - updaterUserData, null, null); + TitanOperationStatus associateMetadata = associateMetadataToComponent(productData, creatorUserData, updaterUserData, null, null); if (associateMetadata != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateMetadata)); return result; } - TitanOperationStatus associateCategories = associateCategoriesToProduct(productData, - groupingDataToAssociate); + TitanOperationStatus associateCategories = associateCategoriesToProduct(productData, groupingDataToAssociate); if (associateCategories != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateCategories)); return result; @@ -442,14 +386,11 @@ public class ProductOperation extends ComponentOperation implements IProductOper } } - private TitanOperationStatus associateCategoriesToProduct(ProductMetadataData productData, - List<GroupingData> groupingDataToAssociate) { + private TitanOperationStatus associateCategoriesToProduct(ProductMetadataData productData, List<GroupingData> groupingDataToAssociate) { for (GroupingData groupingData : groupingDataToAssociate) { GraphEdgeLabels groupingLabel = GraphEdgeLabels.CATEGORIZED_TO; - Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(productData, - groupingData, groupingLabel, null); - log.debug("After associating grouping {} to product {}. Edge type is {}", groupingData, productData, - groupingLabel); + Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(productData, groupingData, groupingLabel, null); + log.debug("After associating grouping {} to product {}. Edge type is {}", groupingData, productData, groupingLabel); if (result.isRight()) { return result.right().value(); } @@ -458,14 +399,11 @@ public class ProductOperation extends ComponentOperation implements IProductOper return TitanOperationStatus.OK; } - private TitanOperationStatus dissociateCategoriesFromProduct(ProductMetadataData productData, - List<GroupingData> groupingDataToDissociate) { + private TitanOperationStatus dissociateCategoriesFromProduct(ProductMetadataData productData, List<GroupingData> groupingDataToDissociate) { for (GroupingData groupingData : groupingDataToDissociate) { GraphEdgeLabels groupingLabel = GraphEdgeLabels.CATEGORIZED_TO; - Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.deleteRelation(productData, - groupingData, groupingLabel); - log.debug("After dissociating grouping {} from product {}. Edge type is {}", groupingData, productData, - groupingLabel); + Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.deleteRelation(productData, groupingData, groupingLabel); + log.debug("After dissociating grouping {} from product {}. Edge type is {}", groupingData, productData, groupingLabel); if (result.isRight()) { return result.right().value(); } @@ -479,8 +417,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper return getProduct(uniqueId, componentParametersView, inTransaction); } - private Either<Product, StorageOperationStatus> getProduct(String uniqueId, - ComponentParametersView componentParametersView, boolean inTransaction) { + private Either<Product, StorageOperationStatus> getProduct(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) { Product product = null; Either<Product, StorageOperationStatus> result = null; try { @@ -488,8 +425,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper NodeTypeEnum productNodeType = NodeTypeEnum.Product; NodeTypeEnum compInstNodeType = NodeTypeEnum.Service; - Either<ProductMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, - productNodeType, ProductMetadataData.class); + Either<ProductMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, productNodeType, ProductMetadataData.class); if (getComponentByLabel.isRight()) { result = Either.right(getComponentByLabel.right().value()); return result; @@ -499,12 +435,10 @@ public class ProductOperation extends ComponentOperation implements IProductOper // Try to fetch resource from the cache. The resource will be // fetched only if the time on the cache equals to // the time on the graph. - Either<Product, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, - productData, componentParametersView, Product.class, ComponentTypeEnum.PRODUCT); + Either<Product, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, productData, componentParametersView, Product.class, ComponentTypeEnum.PRODUCT); if (componentFromCacheIfUpToDate.isLeft()) { Product cachedProduct = componentFromCacheIfUpToDate.left().value(); - log.debug("Product {} with uid {} was fetched from cache.", cachedProduct.getName(), - cachedProduct.getUniqueId()); + log.debug("Product {} with uid {} was fetched from cache.", cachedProduct.getName(), cachedProduct.getUniqueId()); return Either.left(cachedProduct); } @@ -533,9 +467,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper } } - if (false == componentParametersView.isIgnoreComponentInstances() - || false == componentParametersView.isIgnoreComponentInstancesProperties() - || false == componentParametersView.isIgnoreCapabilities() + if (false == componentParametersView.isIgnoreComponentInstances() || false == componentParametersView.isIgnoreComponentInstancesProperties() || false == componentParametersView.isIgnoreCapabilities() || false == componentParametersView.isIgnoreRequirements()) { status = setComponentInstancesFromGraph(uniqueId, product, productNodeType, compInstNodeType); if (status != TitanOperationStatus.OK) { @@ -545,7 +477,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper } } if (false == componentParametersView.isIgnoreComponentInstancesProperties()) { - status = setComponentInstancesPropertiesFromGraph(uniqueId, product); + status = setComponentInstancesPropertiesFromGraph(product); if (status != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -683,8 +615,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper // } private TitanOperationStatus setAllVersions(Product product) { - Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Product, - product.getVersion(), product, ProductMetadataData.class); + Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Product, product.getVersion(), product, ProductMetadataData.class); if (res.isRight()) { return res.right().value(); } @@ -692,8 +623,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper return TitanOperationStatus.OK; } - private Either<Product, StorageOperationStatus> sendError(TitanOperationStatus status, - StorageOperationStatus statusIfNotFound) { + private Either<Product, StorageOperationStatus> sendError(TitanOperationStatus status, StorageOperationStatus statusIfNotFound) { Either<Product, StorageOperationStatus> result; if (status == TitanOperationStatus.NOT_FOUND) { result = Either.right(statusIfNotFound); @@ -708,9 +638,8 @@ public class ProductOperation extends ComponentOperation implements IProductOper TitanOperationStatus setComponentCategoriesFromGraph(Component component) { Product product = (Product) component; // Building the cat->subcat->grouping triples - Either<List<ImmutablePair<GroupingData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), product.getUniqueId(), - GraphEdgeLabels.CATEGORIZED_TO, NodeTypeEnum.ProductGrouping, GroupingData.class); + Either<List<ImmutablePair<GroupingData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), product.getUniqueId(), GraphEdgeLabels.CATEGORIZED_TO, + NodeTypeEnum.ProductGrouping, GroupingData.class); if (childrenNodes.isRight()) { if (childrenNodes.right().value() != TitanOperationStatus.NOT_FOUND) { log.debug("Error when finding groupings for this product, error {}", childrenNodes.right().value()); @@ -725,19 +654,15 @@ public class ProductOperation extends ComponentOperation implements IProductOper List<ImmutablePair<GroupingData, GraphEdge>> valueList = childrenNodes.left().value(); for (ImmutablePair<GroupingData, GraphEdge> groupPair : valueList) { GroupingData groupingData = groupPair.getLeft(); - Either<ImmutablePair<SubCategoryData, GraphEdge>, TitanOperationStatus> parentSubCat = titanGenericDao - .getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductGrouping), - (String) groupingData.getUniqueId(), GraphEdgeLabels.GROUPING, - NodeTypeEnum.ProductSubcategory, SubCategoryData.class); + Either<ImmutablePair<SubCategoryData, GraphEdge>, TitanOperationStatus> parentSubCat = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductGrouping), (String) groupingData.getUniqueId(), + GraphEdgeLabels.GROUPING, NodeTypeEnum.ProductSubcategory, SubCategoryData.class); if (parentSubCat.isRight()) { log.debug("Cannot find subcategory for grouping {}", groupingData.getUniqueId()); return parentSubCat.right().value(); } SubCategoryData subCatData = parentSubCat.left().value().getLeft(); - Either<ImmutablePair<CategoryData, GraphEdge>, TitanOperationStatus> parentCat = titanGenericDao - .getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductSubcategory), - (String) subCatData.getUniqueId(), GraphEdgeLabels.SUB_CATEGORY, - NodeTypeEnum.ProductCategory, CategoryData.class); + Either<ImmutablePair<CategoryData, GraphEdge>, TitanOperationStatus> parentCat = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductSubcategory), (String) subCatData.getUniqueId(), + GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ProductCategory, CategoryData.class); if (parentCat.isRight()) { log.debug("Cannot find category for subcategory {}", subCatData.getUniqueId()); return parentCat.right().value(); @@ -752,11 +677,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper SubCategoryDefinition subDef = new SubCategoryDefinition(subDefinition); GroupingDefinition groupingDef = new GroupingDefinition(groupingDefinition); - if (log.isDebugEnabled()) { - log.debug("Found category {} -> subcategory {} -> grouping {} for product {}", - categoryDefinition.getUniqueId(), subCatData.getUniqueId(), groupingData.getUniqueId(), - product.getUniqueId()); - } + log.debug("Found category {} -> subcategory {} -> grouping {} for product {}", categoryDefinition.getUniqueId(), subCatData.getUniqueId(), groupingData.getUniqueId(), product.getUniqueId()); Map<SubCategoryDefinition, List<GroupingDefinition>> subMap = categoriesDataStructure.get(categoryDef); if (subMap == null) { subMap = new HashMap<>(); @@ -773,14 +694,12 @@ public class ProductOperation extends ComponentOperation implements IProductOper return TitanOperationStatus.OK; } - private void convertToCategoriesList(Product product, - Map<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> categoriesDataStructure) { + private void convertToCategoriesList(Product product, Map<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> categoriesDataStructure) { List<CategoryDefinition> categoryDataList = product.getCategories(); if (categoryDataList == null) { categoryDataList = new ArrayList<CategoryDefinition>(); } - for (Entry<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> triple : categoriesDataStructure - .entrySet()) { + for (Entry<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> triple : categoriesDataStructure.entrySet()) { CategoryDefinition categoryDefinition = triple.getKey(); List<SubCategoryDefinition> subList = new ArrayList<>(); categoryDefinition.setSubcategories(subList); @@ -795,13 +714,11 @@ public class ProductOperation extends ComponentOperation implements IProductOper categoryDataList.add(categoryDefinition); } product.setCategories(categoryDataList); - log.debug("Fetched categories for product {}, categories: {}", product.getUniqueId(), - Arrays.toString(categoryDataList.toArray())); + log.debug("Fetched categories for product {}, categories: {}", product.getUniqueId(), Arrays.toString(categoryDataList.toArray())); } private ProductMetadataData getProductMetadataDataFromProduct(Product product) { - ProductMetadataData productMetadata = new ProductMetadataData( - (ProductMetadataDataDefinition) product.getComponentMetadataDefinition().getMetadataDataDefinition()); + ProductMetadataData productMetadata = new ProductMetadataData((ProductMetadataDataDefinition) product.getComponentMetadataDefinition().getMetadataDataDefinition()); return productMetadata; } @@ -820,14 +737,11 @@ public class ProductOperation extends ComponentOperation implements IProductOper @SuppressWarnings("unchecked") @Override - public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, - LifecycleStateEnum targetLifecycle, boolean inTransaction) { - return (Either<T, StorageOperationStatus>) cloneProduct((Product) other, version, targetLifecycle, - inTransaction); + public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) { + return (Either<T, StorageOperationStatus>) cloneProduct((Product) other, version, targetLifecycle, inTransaction); } - private Either<Product, StorageOperationStatus> cloneProduct(Product other, String version, - LifecycleStateEnum targetLifecycle, boolean inTransaction) { + private Either<Product, StorageOperationStatus> cloneProduct(Product other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) { Either<Product, StorageOperationStatus> result = null; try { @@ -835,12 +749,10 @@ public class ProductOperation extends ComponentOperation implements IProductOper other.setVersion(version); other.setUniqueId(null); - Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origProductId, - NodeTypeEnum.Product); + Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origProductId, NodeTypeEnum.Product); if (counterStatus.isRight()) { StorageOperationStatus status = counterStatus.right().value(); - log.error("failed to get resource instance counter on product {}. status={}", origProductId, - counterStatus); + log.error("failed to get resource instance counter on product {}. status={}", origProductId, counterStatus); result = Either.right(status); return result; } @@ -861,12 +773,10 @@ public class ProductOperation extends ComponentOperation implements IProductOper return result; } - Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter( - product.getUniqueId(), NodeTypeEnum.Product, counterStatus.left().value(), inTransaction); + Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter(product.getUniqueId(), NodeTypeEnum.Product, counterStatus.left().value(), inTransaction); if (setResourceInstanceCounter.isRight()) { StorageOperationStatus status = setResourceInstanceCounter.right().value(); - log.error("failed to set resource instance counter on product {}. status={}", product.getUniqueId(), - setResourceInstanceCounter); + log.error("failed to set resource instance counter on product {}. status={}", product.getUniqueId(), setResourceInstanceCounter); result = Either.right(status); return result; } @@ -896,8 +806,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper } } - private Either<Product, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, - String version, Map<String, Object> additionalParams, boolean inTransaction) { + private Either<Product, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, String version, Map<String, Object> additionalParams, boolean inTransaction) { Map<String, Object> props = new HashMap<String, Object>(); props.put(nameKey, nameValue); props.put(GraphPropertiesDictionary.VERSION.getProperty(), version); @@ -906,8 +815,7 @@ public class ProductOperation extends ComponentOperation implements IProductOper props.putAll(additionalParams); } - Either<List<ProductMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao - .getByCriteria(NodeTypeEnum.Product, props, ProductMetadataData.class); + Either<List<ProductMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Product, props, ProductMetadataData.class); if (byCriteria.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value())); @@ -919,11 +827,9 @@ public class ProductOperation extends ComponentOperation implements IProductOper return Either.right(StorageOperationStatus.GENERAL_ERROR); } ProductMetadataData productData = dataList.get(0); - Either<Product, StorageOperationStatus> product = getProduct( - productData.getMetadataDataDefinition().getUniqueId(), inTransaction); + Either<Product, StorageOperationStatus> product = getProduct(productData.getMetadataDataDefinition().getUniqueId(), inTransaction); if (product.isRight()) { - log.debug("Failed to fetch product, name {} id {}", productData.getMetadataDataDefinition().getName(), - productData.getMetadataDataDefinition().getUniqueId()); + log.debug("Failed to fetch product, name {} id {}", productData.getMetadataDataDefinition().getName(), productData.getMetadataDataDefinition().getUniqueId()); } return product; } @@ -936,49 +842,42 @@ public class ProductOperation extends ComponentOperation implements IProductOper } @Override - protected <T extends org.openecomp.sdc.be.model.Component> StorageOperationStatus updateDerived( - org.openecomp.sdc.be.model.Component component, org.openecomp.sdc.be.model.Component currentComponent, - ComponentMetadataData componentData, Class<T> clazz) { + protected <T extends org.openecomp.sdc.be.model.Component> StorageOperationStatus updateDerived(org.openecomp.sdc.be.model.Component component, org.openecomp.sdc.be.model.Component currentComponent, ComponentMetadataData componentData, + Class<T> clazz) { log.debug("Derived class isn't supported for product"); return StorageOperationStatus.OK; } @Override - public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, - boolean inTransaction) { + public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction) { return increaseAndGetComponentInstanceCounter(componentId, NodeTypeEnum.Product, inTransaction); } @Override - protected StorageOperationStatus validateCategories(Component currentComponent, Component component, - ComponentMetadataData componentData, NodeTypeEnum type) { + protected StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type) { // As agreed with Ella, update categories - delete old and create new StorageOperationStatus status = StorageOperationStatus.OK; List<CategoryDefinition> newcategories = component.getCategories(); List<CategoryDefinition> currentcategories = currentComponent.getCategories(); if (newcategories != null) { if (currentcategories != null && !currentcategories.isEmpty()) { - Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent( - NodeTypeEnum.ProductGrouping, currentComponent); + Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, currentComponent); if (findGroupingsForComponent.isRight()) { status = findGroupingsForComponent.right().value(); } List<GroupingData> groupingDataToDissociate = findGroupingsForComponent.left().value(); - TitanOperationStatus titanStatus = dissociateCategoriesFromProduct((ProductMetadataData) componentData, - groupingDataToDissociate); + TitanOperationStatus titanStatus = dissociateCategoriesFromProduct((ProductMetadataData) componentData, groupingDataToDissociate); if (titanStatus != TitanOperationStatus.OK) { status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); } } if (!newcategories.isEmpty()) { - Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent( - NodeTypeEnum.ProductGrouping, component); + Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, component); if (findGroupingsForComponent.isRight()) { status = findGroupingsForComponent.right().value(); } List<GroupingData> groupingDataToAssociate = findGroupingsForComponent.left().value(); - TitanOperationStatus titanStatus = associateCategoriesToProduct((ProductMetadataData) componentData, - groupingDataToAssociate); + TitanOperationStatus titanStatus = associateCategoriesToProduct((ProductMetadataData) componentData, groupingDataToAssociate); if (titanStatus != TitanOperationStatus.OK) { status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); } @@ -987,11 +886,10 @@ public class ProductOperation extends ComponentOperation implements IProductOper return status; } + @Override @SuppressWarnings("unchecked") - public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) { - return (Either<List<Product>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent( - userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Product); + public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) { + return (Either<List<Product>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent(userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Product); } @Override @@ -1011,11 +909,9 @@ public class ProductOperation extends ComponentOperation implements IProductOper @SuppressWarnings("unchecked") @Override - public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, - boolean inTransaction) { + public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction) { // markComponentToDelete is not defined yet for products - return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct( - componentToDelete.getUniqueId(), inTransaction); + return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct(componentToDelete.getUniqueId(), inTransaction); } @Override @@ -1040,28 +936,22 @@ public class ProductOperation extends ComponentOperation implements IProductOper return Either.left(new ArrayList<>()); } - public Either<Product, StorageOperationStatus> getProductByNameAndVersion(String productName, String productVersion, - boolean inTransaction) { - return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), - ValidationUtils.normaliseComponentName(productName), productVersion, null, inTransaction); + public Either<Product, StorageOperationStatus> getProductByNameAndVersion(String productName, String productVersion, boolean inTransaction) { + return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normaliseComponentName(productName), productVersion, null, inTransaction); } @SuppressWarnings("unchecked") @Override - public <T> Either<T, StorageOperationStatus> getComponent(String id, - ComponentParametersView componentParametersView, boolean inTransaction) { + public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction) { return (Either<T, StorageOperationStatus>) getProduct(id, false); } - public Either<Product, StorageOperationStatus> updateProduct(Product product, boolean inTransaction, - ComponentParametersView filterResultView) { - return (Either<Product, StorageOperationStatus>) updateComponentFilterResult(product, inTransaction, - titanGenericDao, product.getClass(), NodeTypeEnum.Service, filterResultView); + public Either<Product, StorageOperationStatus> updateProduct(Product product, boolean inTransaction, ComponentParametersView filterResultView) { + return (Either<Product, StorageOperationStatus>) updateComponentFilterResult(product, inTransaction, titanGenericDao, product.getClass(), NodeTypeEnum.Service, filterResultView); } @Override - protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, - ComponentParametersView filterResultView) { + protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterResultView) { return (Either<T, StorageOperationStatus>) updateProduct((Product) component, inTransaction, filterResultView); } } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java index 7d775b3b3d..9b900b0ae2 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java @@ -32,14 +32,11 @@ import java.util.Map.Entry; import java.util.Set; import java.util.StringJoiner; import java.util.function.Consumer; -import java.util.function.Supplier; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -import com.thinkaurelius.titan.core.TitanTransaction; -import com.thinkaurelius.titan.core.TitanVertex; - +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Edge; import org.codehaus.jackson.JsonNode; @@ -60,7 +57,6 @@ import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.PropertyRule; import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; -import org.openecomp.sdc.be.model.ComponentInstanceInput; import org.openecomp.sdc.be.model.ComponentInstanceProperty; import org.openecomp.sdc.be.model.DataTypeDefinition; import org.openecomp.sdc.be.model.IComplexDefaultValue; @@ -69,7 +65,6 @@ import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.operations.api.IPropertyOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.model.tosca.ToscaPropertyType; -import org.openecomp.sdc.be.model.tosca.ToscaType; import org.openecomp.sdc.be.model.tosca.constraints.ConstraintType; import org.openecomp.sdc.be.model.tosca.constraints.GreaterOrEqualConstraint; import org.openecomp.sdc.be.model.tosca.constraints.GreaterThanConstraint; @@ -79,22 +74,18 @@ import org.openecomp.sdc.be.model.tosca.constraints.LessThanConstraint; import org.openecomp.sdc.be.model.tosca.constraints.MinLengthConstraint; import org.openecomp.sdc.be.model.tosca.constraints.ValidValuesConstraint; import org.openecomp.sdc.be.model.tosca.converters.PropertyValueConverter; -import org.openecomp.sdc.be.model.tosca.validators.DataTypeValidatorConverter; import org.openecomp.sdc.be.model.tosca.validators.PropertyTypeValidator; import org.openecomp.sdc.be.resources.data.ComponentInstanceData; import org.openecomp.sdc.be.resources.data.DataTypeData; -import org.openecomp.sdc.be.resources.data.InputValueData; import org.openecomp.sdc.be.resources.data.PropertyData; import org.openecomp.sdc.be.resources.data.PropertyValueData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.openecomp.sdc.be.resources.data.UniqueIdData; -import org.openecomp.sdc.common.api.Constants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; @@ -104,13 +95,15 @@ import com.google.gson.JsonParseException; import com.google.gson.JsonParser; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; -import com.google.gson.reflect.TypeToken; +import com.thinkaurelius.titan.core.TitanVertex; import fj.data.Either; @Component("property-operation") public class PropertyOperation extends AbstractOperation implements IPropertyOperation { + private TitanGenericDao titanGenericDao; + public static void main(String[] args) { List<Pattern> buildFunctionPatterns = buildFunctionPatterns(); @@ -126,10 +119,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe } - public static final String PROPERTY = "property"; - - public PropertyOperation() { + public PropertyOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) { super(); + this.titanGenericDao = titanGenericDao; } private static Logger log = LoggerFactory.getLogger(PropertyOperation.class.getName()); @@ -165,7 +157,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe @Override public Either<PropertyDefinition, StorageOperationStatus> getPropertyOfResource(String propertyName, String resourceId) { - String propertyId = UniqueIdBuilder.buildPropertyUniqueId(resourceId, propertyName); + String propertyId = UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName); Either<PropertyData, TitanOperationStatus> getResult = this.titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class); if (getResult.isLeft()) { @@ -173,7 +165,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe return Either.left(convertPropertyDataToPropertyDefinition(propertyData, propertyName, resourceId)); } else { TitanOperationStatus titanStatus = getResult.right().value(); - log.debug("Node with id {} was not found in the graph. Status: {}", propertyId, titanStatus); + log.debug("Node with id {} was not found in the graph. status: {}", propertyId, titanStatus); StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus); return Either.right(storageOperationStatus); } @@ -192,10 +184,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * Either<PropertyData, TitanOperationStatus> status = addPropertyToGraph(propertyName, propertyDefinition, resourceId); * - * if (status.isRight()) { titanGenericDao.rollback(); log.error("Failed to add property " + propertyName + " to resource " + resourceId); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status. right().value())); } else + * if (status.isRight()) { titanGenericDao.rollback(); + * log.error("Failed to add property {} to resource {}, propertyName, resourceId); + * return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status. right().value())); } else * { titanGenericDao.commit(); PropertyData propertyData = status.left().value(); * - * PropertyDefinition propertyDefResult = convertPropertyDataToPropertyDefinition(propertyData, propertyName, resourceId); log.debug("The returned PropertyDefintion is {}", propertyDefinition); return Either.left(propertyDefResult); } + * PropertyDefinition propertyDefResult = convertPropertyDataToPropertyDefinition(propertyData, propertyName, resourceId); log.debug("The returned PropertyDefintion is " + propertyDefinition); return Either.left(propertyDefResult); } * * * } @@ -244,7 +238,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe PropertyDefinition propertyDefResult = new PropertyDefinition(propertyDataResult.getPropertyDataDefinition()); propertyDefResult.setConstraints(convertConstraints(propertyDataResult.getConstraints())); propertyDefResult.setName(propertyName); - propertyDefResult.setParentUniqueId(resourceId); +// propertyDefResult.setParentUniqueId(resourceId); return propertyDefResult; } @@ -545,7 +539,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * ImmutablePair<JsonElement, Boolean> validateResult = dataTypeValidatorConverter.validateAndUpdate(value, dataTypeDefinition, allDataTypes); * - * if (validateResult.right.booleanValue() == false) { log.debug("The value {} of property from type {} is invalid", value, propertyType); return Either.right(false); } + * if (validateResult.right.booleanValue() == false) { + * log.debug("The value {} of property from type {} is invalid", value, propertyType); + * return Either.right(false); } * * JsonElement jsonElement = validateResult.left; * @@ -555,9 +551,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * } * - * log.trace("After validating property type " + propertyType); + * log.trace("After validating property type {}", propertyType); * - * boolean isValidProperty = isValidValue(type, value, innerType); if (false == isValidProperty) { log.debug("The value {} of property from type {} is invalid", value, type); return Either.right(false); } + * boolean isValidProperty = isValidValue(type, value, innerType); if (false == isValidProperty) { log.debug("The value " + value + " of property from type " + type + " is invalid"); return Either.right(false); } * * * Object convertedValue = value; if (false == isEmptyValue(value)) { PropertyValueConverter converter = type.getConverter(); convertedValue = converter.convert(value, null); } @@ -572,7 +568,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe List<PropertyConstraint> constraints = propertyDefinition.getConstraints(); - propertyDefinition.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, propertyName)); + propertyDefinition.setUniqueId(UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName)); PropertyData propertyData = new PropertyData(propertyDefinition, convertConstraintsToString(constraints)); log.debug("Before adding property to graph {}", propertyData); @@ -580,7 +576,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe log.debug("After adding property to graph {}", propertyData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add property {} to graph. Status is {}", propertyName, operationStatus); + log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus); return Either.right(operationStatus); } @@ -589,7 +585,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, propertyData, GraphEdgeLabels.PROPERTY, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to associate resource {} to property {} in graph. Status is {}", resourceId, propertyName, operationStatus); + log.error("Failed to associate resource {} to property {} in graph. status is {}", resourceId, propertyName, operationStatus); return Either.right(operationStatus); } @@ -601,7 +597,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe List<PropertyConstraint> constraints = propertyDefinition.getConstraints(); - propertyDefinition.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, propertyName)); + propertyDefinition.setUniqueId(UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName)); PropertyData propertyData = new PropertyData(propertyDefinition, convertConstraintsToString(constraints)); log.debug("Before adding property to graph {}", propertyData); @@ -609,7 +605,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe log.debug("After adding property to graph {}", propertyData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus); + log.error("Failed to add property {} to graph. status is ", propertyName, operationStatus); return operationStatus; } @@ -731,7 +727,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe log.debug("After adding property to graph {}", propertyData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add property {} to graph. Status is {}", propertyName, operationStatus); + log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus); return Either.right(operationStatus); } @@ -739,11 +735,11 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName); UniqueIdData uniqueIdData = new UniqueIdData(nodeType, uniqueId); - log.debug("Before associating {} to property {}.", uniqueIdData, propertyName); + log.debug("Before associating {} to property {}", uniqueIdData, propertyName); Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(uniqueIdData, propertyData, GraphEdgeLabels.PROPERTY, props); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to associate resource {} to property {} in graph. Status is {}", uniqueId, propertyName, operationStatus); + log.error("Failed to associate resource {} to property {} in graph. status is {}", uniqueId, propertyName, operationStatus); return Either.right(operationStatus); } @@ -830,7 +826,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe String propertyUid = propertyDefinition.getUniqueId(); Either<PropertyData, TitanOperationStatus> deletePropertyRes = deletePropertyFromGraph(propertyUid); if (deletePropertyRes.isRight()) { - log.error("Failed to delete property with id " + propertyUid); + log.error("Failed to delete property with id {}", propertyUid); TitanOperationStatus status = deletePropertyRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status = TitanOperationStatus.INVALID_ID; @@ -887,8 +883,10 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe log.debug("Property {} is associated to node {}", propertyName, uniqueId); PropertyData propertyData = immutablePair.getKey(); PropertyDefinition propertyDefinition = this.convertPropertyDataToPropertyDefinition(propertyData, propertyName, uniqueId); - - properties.add(propertyDefinition); + //Adds parent property to List if it hasn't been overrided in one of the children + if(!properties.stream().filter(p -> p.getName().equals(propertyDefinition.getName())).findAny().isPresent()){ + properties.add(propertyDefinition); + } if (log.isTraceEnabled()) log.trace("findPropertiesOfNode - property {} associated to node {}", propertyDefinition, uniqueId); @@ -898,24 +896,28 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe return TitanOperationStatus.OK; } - - public boolean isPropertyExist(List<PropertyDefinition> properties, String resourceUid, String propertyName) { - - if (properties == null) { - return false; - } - - for (PropertyDefinition propertyDefinition : properties) { - String parentUniqueId = propertyDefinition.getParentUniqueId(); - String name = propertyDefinition.getName(); - - if (parentUniqueId.equals(resourceUid) && name.equals(propertyName)) { - return true; +/** + * Checks existence of a property with the same name belonging to the same resource + * or existence of property with the same name and different type (including derived from hierarchy) + * @param properties + * @param resourceUid + * @param propertyName + * @param propertyType + * @return + */ + public boolean isPropertyExist(List<PropertyDefinition> properties, String resourceUid, String propertyName, String propertyType) { + boolean result = false; + if (!CollectionUtils.isEmpty(properties)) { + for (PropertyDefinition propertyDefinition : properties) { + + if ( propertyDefinition.getName().equals(propertyName) && + (propertyDefinition.getParentUniqueId().equals(resourceUid) || !propertyDefinition.getType().equals(propertyType)) ) { + result = true; + break; + } } } - - return false; - + return result; } /** @@ -947,7 +949,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR); return Either.right(updatePropertyOfResourceInstance.right().value()); } return * Either.left(updatePropertyOfResourceInstance.left().value()); } * - * if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { log.debug("After finding property value of {} on component instance {}", propertyId, resourceInstanceId); return Either.right(isPropertyValueExists.getLeft()); } + * if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) { + * log.debug("After finding property value of {} on componenet instance {}", propertyId, resourceInstanceId); + * return Either.right(isPropertyValueExists.getLeft()); } * * String propertyType = propertyData.getPropertyDataDefinition().getType(); String value = resourceInstanceProperty.getValue(); Either<Object, Boolean> isValid = validateAndUpdatePropertyValue(propertyType, value); * @@ -961,7 +965,8 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } addRulesToNewPropertyValue(propertyValueData, * resourceInstanceProperty, resourceInstanceId); * - * log.debug("Before adding property value to graph {}", propertyValueData); Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao .createNode(propertyValueData, PropertyValueData.class); + * log.debug("Before adding property value to graph {}", propertyValueData); + * Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao .createNode(propertyValueData, PropertyValueData.class); * log.debug("After adding property value to graph {}", propertyValueData); * * Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao .createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null); @@ -1108,7 +1113,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * Either<Object, Boolean> isValid = validateAndUpdatePropertyValue(propertyType, value); * * String newValue = value; if (isValid.isRight()) { Boolean res = isValid.right().value(); if (res == false) { return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); } } else { Object object = isValid.left().value(); if (object != null) { - * newValue = object.toString(); } } PropertyValueData propertyValueData = findPropertyValueRes.left().value(); log.debug("Going to update property value from {} to {}", propertyValueData.getValue(), newValue); + * newValue = object.toString(); } } PropertyValueData propertyValueData = findPropertyValueRes.left().value(); log.debug("Going to update property value from " + propertyValueData.getValue() + " to " + newValue); * propertyValueData.setValue(newValue); * * ImmutablePair<String, Boolean> pair = validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules()); if (pair.getRight() != null && pair.getRight() == false) { BeEcompErrorManager.getInstance(). @@ -1220,7 +1225,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * ComponentInstanceProperty propertyValueResult = buildResourceInstanceProperty( propertyValueData, resourceInstanceProperty); * - * log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } } + * log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } } * * finally { if (false == inTransaction) { if (result == null || result.isRight()) { log.error("Going to execute rollback on graph."); titanGenericDao.rollback(); } else { log.debug("Going to execute commit on graph."); titanGenericDao.commit(); * } } } @@ -1238,7 +1243,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * ComponentInstanceProperty propertyValueResult = buildResourceInstanceProperty( propertyValueData, resourceInstanceProperty); * - * log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } } + * log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } } * * finally { if (false == inTransaction) { if (result == null || result.isRight()) { log.error("Going to execute rollback on graph."); titanGenericDao.rollback(); } else { log.debug("Going to execute commit on graph."); titanGenericDao.commit(); * } } } @@ -1306,7 +1311,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe propertyValueResult.setUniqueId(resourceInstanceId); propertyValueResult.setValue(propertyValueData.getValue()); - log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); + log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult); result = Either.left(propertyValueResult); return result; } @@ -1425,7 +1430,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (innerToscaType == null) { DataTypeDefinition dataTypeDefinition = dataTypes.get(innerType); if (dataTypeDefinition == null) { - log.debug("The inner type {} is not a data type", innerType); + log.debug("The inner type {} is not a data type.", innerType); return new ImmutablePair<String, Boolean>(innerType, false); } else { log.debug("The inner type {} is a data type. Data type definition is {}", innerType, dataTypeDefinition); @@ -1438,7 +1443,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe private boolean isValidComplexValue(DataTypeDefinition foundDt, String value, Map<String, DataTypeDefinition> dataTypes) { /* * Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypesRes = getAllDataTypes(); if (allDataTypesRes.isRight()) { TitanOperationStatus status = allDataTypesRes.right().value(); - * log.debug("Failed to fetch data types from graph. Status is {}", status); return false; } + * return false; } * * Map<String, DataTypeDefinition> allDataTypes = allDataTypesRes.left().value(); */ @@ -1483,10 +1488,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllPropertiesOfResourceInstanceOnlyPropertyDefId(String resourceInstanceUid, NodeTypeEnum instanceNodeType) { - // Either<ComponentInstanceData, TitanOperationStatus> - // findResInstanceRes = - // titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), - // resourceInstanceUid, ComponentInstanceData.class); Either<TitanVertex, TitanOperationStatus> findResInstanceRes = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid); if (findResInstanceRes.isRight()) { @@ -1497,11 +1498,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe return Either.right(status); } - // Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, - // TitanOperationStatus> propertyImplNodes = - // titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), - // resourceInstanceUid, GraphEdgeLabels.PROPERTY_VALUE, - // NodeTypeEnum.PropertyValue, PropertyValueData.class); Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid, GraphEdgeLabels.PROPERTY_VALUE); if (propertyImplNodes.isRight()) { @@ -1558,7 +1554,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe */ public Either<String, TitanOperationStatus> findDefaultValueFromSecondPosition(List<String> pathOfComponentInstances, String propertyUniqueId, String defaultValue) { - log.trace("In find default value: path=" + pathOfComponentInstances + "propertyUniqId=" + propertyUniqueId + "defaultValue=" + defaultValue); + log.trace("In find default value: path= {} propertyUniqId={} defaultValue= {}", pathOfComponentInstances, propertyUniqueId, defaultValue); if (pathOfComponentInstances == null || pathOfComponentInstances.size() < 2) { return Either.left(defaultValue); @@ -1583,7 +1579,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe } ComponentInstanceProperty foundCompInstanceProperty = fetchByPropertyUid(propertyValuesResult.left().value(), propertyUniqueId); - log.trace("After finding the component instance property on {}. {}", compInstanceId, foundCompInstanceProperty); + log.trace("After finding the component instance property on{} . {}", compInstanceId, foundCompInstanceProperty); if (foundCompInstanceProperty == null) { continue; @@ -1695,7 +1691,9 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Matcher matcher = pattern.matcher(stringForMatch); if (matcher.matches()) { - log.trace("{} matches the rule {}", stringForMatch, patternStr); + if (log.isTraceEnabled()) { + log.trace("{} matches the rule {}", stringForMatch, patternStr); + } propertyRule = rule; break; } @@ -1752,14 +1750,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (numberOfMatches == 1) { instanceProperty.setValue(value); if (log.isDebugEnabled()) { - log.debug("Set the value of property " + propertyUniqueId + " " + instanceProperty.getName() + " on path " + pathOfInstances + " to be " + value); + log.debug("Set the value of property {} {} on path {} to be {}", propertyUniqueId, instanceProperty.getName(), pathOfInstances, value); } } else if (numberOfMatches == 2) { // In case of another property value match, then use the // value to be the default value of the property. instanceProperty.setDefaultValue(value); if (log.isDebugEnabled()) { - log.debug("Set the default value of property " + propertyUniqueId + " " + instanceProperty.getName() + " on path " + pathOfInstances + " to be " + value); + log.debug("Set the default value of property {} {} on path {} to be {}", propertyUniqueId, instanceProperty.getName(), pathOfInstances, value); } break; } @@ -1820,19 +1818,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe */ private Either<DataTypeData, TitanOperationStatus> addDataTypeToGraph(DataTypeDefinition dataTypeDefinition) { - log.debug("Got data type " + dataTypeDefinition); + log.debug("Got data type {}", dataTypeDefinition); String dtUniqueId = UniqueIdBuilder.buildDataTypeUid(dataTypeDefinition.getName()); DataTypeData dataTypeData = buildDataTypeData(dataTypeDefinition, dtUniqueId); - log.debug("Before adding data type to graph. dataTypeData = " + dataTypeData); + log.debug("Before adding data type to graph. dataTypeData = {}", dataTypeData); Either<DataTypeData, TitanOperationStatus> createDataTypeResult = titanGenericDao.createNode(dataTypeData, DataTypeData.class); log.debug("After adding data type to graph. status is = {}", createDataTypeResult); if (createDataTypeResult.isRight()) { TitanOperationStatus operationStatus = createDataTypeResult.right().value(); - log.debug("Failed to data type " + dataTypeDefinition.getName() + " to graph. status is " + operationStatus); + log.debug("Failed to data type {} to graph. status is {}", dataTypeDefinition.getName(), operationStatus); BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError("AddDataType", NodeTypeEnum.DataType.getName()); return Either.right(operationStatus); } @@ -1841,19 +1839,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe List<PropertyDefinition> properties = dataTypeDefinition.getProperties(); Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToDataType = addPropertiesToDataType(resultCTD.getUniqueId(), properties); if (addPropertiesToDataType.isRight()) { - log.debug("Failed add properties " + properties + " to data type " + dataTypeDefinition.getName()); + log.debug("Failed add properties {} to data type {}", properties, dataTypeDefinition.getName()); return Either.right(addPropertiesToDataType.right().value()); } String derivedFrom = dataTypeDefinition.getDerivedFromName(); if (derivedFrom != null) { - log.debug("Before creating relation between data type " + dtUniqueId + " to its parent " + derivedFrom); + log.debug("Before creating relation between data type {} to its parent {}", dtUniqueId, derivedFrom); UniqueIdData from = new UniqueIdData(NodeTypeEnum.DataType, dtUniqueId); String deriveFromUid = UniqueIdBuilder.buildDataTypeUid(derivedFrom); UniqueIdData to = new UniqueIdData(NodeTypeEnum.DataType, deriveFromUid); Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.DERIVED_FROM, null); - log.debug("After create relation between capability type " + dtUniqueId + " to its parent " + derivedFrom + ". status is " + createRelation); + log.debug("After create relation between capability type {} to its parent {}. status is {}", dtUniqueId, derivedFrom, createRelation); if (createRelation.isRight()) { return Either.right(createRelation.right().value()); } @@ -1898,19 +1896,19 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe String propertyType = propertyDefinition.getType(); Either<Boolean, TitanOperationStatus> validPropertyType = isValidPropertyType(propertyType); if (validPropertyType.isRight()) { - log.debug("Data type " + uniqueId + " contains invalid property type " + propertyType); + log.debug("Data type {} contains invalid property type {}", uniqueId, propertyType); return Either.right(validPropertyType.right().value()); } Boolean isValid = validPropertyType.left().value(); if (isValid == null || isValid.booleanValue() == false) { - log.debug("Data type " + uniqueId + " contains invalid property type " + propertyType); + log.debug("Data type {} contains invalid property type {}", uniqueId, propertyType); return Either.right(TitanOperationStatus.INVALID_TYPE); } Either<PropertyData, TitanOperationStatus> addPropertyToNodeType = this.addPropertyToNodeType(propertyName, propertyDefinition, NodeTypeEnum.DataType, uniqueId); if (addPropertyToNodeType.isRight()) { TitanOperationStatus operationStatus = addPropertyToNodeType.right().value(); - log.debug("Failed to associate data type " + uniqueId + " to property " + propertyName + " in graph. status is " + operationStatus); + log.debug("Failed to associate data type {} to property {} in graph. status is {}", uniqueId, propertyName, operationStatus); BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToDataType", "Failed to associate property to data type. Status is " + operationStatus, ErrorSeverity.ERROR); return Either.right(operationStatus); } @@ -1925,7 +1923,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Either<DataTypeData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(dataTypeData, DataTypeData.class); if (updateNode.isRight()) { TitanOperationStatus operationStatus = updateNode.right().value(); - log.debug("Failed to update modification time data type " + uniqueId + " from graph. status is " + operationStatus); + log.debug("Failed to update modification time data type {} from graph. status is {}", uniqueId, operationStatus); BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToDataType", "Failed to fetch data type. Status is " + operationStatus, ErrorSeverity.ERROR); return Either.right(operationStatus); } else { @@ -1952,7 +1950,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (dataTypesRes.isRight()) { TitanOperationStatus status = dataTypesRes.right().value(); - log.debug("Data type " + uniqueId + " cannot be found in graph. status is " + status); + log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } @@ -1961,17 +1959,17 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition); if (propertiesStatus != TitanOperationStatus.OK) { - log.error("Failed to fetch properties of data type " + uniqueId); + log.error("Failed to fetch properties of data type {}", uniqueId); return Either.right(propertiesStatus); } Either<ImmutablePair<DataTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType, DataTypeData.class); - log.debug("After retrieving DERIVED_FROM node of " + uniqueId + ". status is " + parentNode); + log.debug("After retrieving DERIVED_FROM node of {}. status is {}", uniqueId, parentNode); if (parentNode.isRight()) { TitanOperationStatus titanOperationStatus = parentNode.right().value(); if (titanOperationStatus != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the parent data type of data type " + uniqueId + ". status is " + titanOperationStatus); + log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId, titanOperationStatus); result = Either.right(titanOperationStatus); return result; } @@ -2002,7 +2000,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(NodeTypeEnum.DataType, uniqueId); if (findPropertiesOfNode.isRight()) { TitanOperationStatus titanOperationStatus = findPropertiesOfNode.right().value(); - log.debug("After looking for properties of vertex " + uniqueId + ". status is " + titanOperationStatus); + log.debug("After looking for properties of vertex {}. status is {}", uniqueId, titanOperationStatus); if (TitanOperationStatus.NOT_FOUND.equals(titanOperationStatus)) { return TitanOperationStatus.OK; } else { @@ -2044,7 +2042,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe DataTypeData capabilityTypeData = eitherStatus.left().value(); DataTypeDefinition dataTypeDefResult = convertDTDataToDTDefinition(capabilityTypeData); - log.debug("The returned CapabilityTypeDefinition is " + dataTypeDefResult); + log.debug("The returned CapabilityTypeDefinition is {}", dataTypeDefResult); result = Either.left(dataTypeDefResult); return result; } @@ -2079,7 +2077,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (ctResult.isRight()) { TitanOperationStatus status = ctResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to retrieve information on capability type " + name + "status is " + status); + log.error("Failed to retrieve information on capability type {} status is {}", name, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value())); return result; @@ -2124,7 +2122,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (ctResult.isRight()) { TitanOperationStatus status = ctResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to retrieve information on capability type " + name + "status is " + status); + log.error("Failed to retrieve information on capability type {} status is {}", name, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(ctResult.right().value())); return result; @@ -2153,7 +2151,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (dataTypesRes.isRight()) { TitanOperationStatus status = dataTypesRes.right().value(); - log.debug("Data type " + uniqueId + " cannot be found in graph. status is " + status); + log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } @@ -2162,7 +2160,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition); if (propertiesStatus != TitanOperationStatus.OK) { - log.error("Failed to fetch properties of data type " + uniqueId); + log.error("Failed to fetch properties of data type {}", uniqueId); return Either.right(propertiesStatus); } @@ -2184,7 +2182,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * @return */ protected DataTypeDefinition convertDTDataToDTDefinition(DataTypeData dataTypeData) { - log.debug("The object returned after create data type is " + dataTypeData); + log.debug("The object returned after create data type is {}", dataTypeData); DataTypeDefinition dataTypeDefResult = new DataTypeDefinition(dataTypeData.getDataTypeDataDefinition()); @@ -2206,7 +2204,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe } } - private Either<Boolean, TitanOperationStatus> isDefinedInDataTypes(String propertyType) { + public Either<Boolean, TitanOperationStatus> isDefinedInDataTypes(String propertyType) { String dataTypeUid = UniqueIdBuilder.buildDataTypeUid(propertyType); Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = getDataTypeByUid(dataTypeUid); @@ -2253,14 +2251,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe List<DataTypeData> list = getAllDataTypes.left().value(); if (list != null) { - log.trace("Number of data types to load is " + list.size()); + log.trace("Number of data types to load is {}" , list.size()); List<String> collect = list.stream().map(p -> p.getDataTypeDataDefinition().getName()).collect(Collectors.toList()); - log.trace("The data types to load are " + collect); + log.trace("The data types to load are {}" , collect); for (DataTypeData dataTypeData : list) { - log.trace("Going to fetch data type " + dataTypeData.getDataTypeDataDefinition().getName() + ". uid is " + dataTypeData.getUniqueId()); + log.trace("Going to fetch data type {}. uid is {}", dataTypeData.getDataTypeDataDefinition().getName(), dataTypeData.getUniqueId()); Either<DataTypeDefinition, TitanOperationStatus> dataTypeByUid = this.getAndAddDataTypeByUid(dataTypeData.getUniqueId(), dataTypes); if (dataTypeByUid.isRight()) { TitanOperationStatus status = dataTypeByUid.right().value(); @@ -2274,12 +2272,12 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (log.isTraceEnabled()) { if (result.isRight()) { - log.trace("After fetching all data types " + result); + log.trace("After fetching all data types {}" , result); } else { Map<String, DataTypeDefinition> map = result.left().value(); if (map != null) { String types = map.keySet().stream().collect(Collectors.joining(",", "[", "]")); - log.trace("After fetching all data types " + types); + log.trace("After fetching all data types {} " , types); } } } @@ -2305,7 +2303,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (dataTypesRes.isRight()) { TitanOperationStatus status = dataTypesRes.right().value(); - log.debug("Data type " + uniqueId + " cannot be found in graph. status is " + status); + log.debug("Data type {} cannot be found in graph. status is {}", uniqueId, status); return Either.right(status); } @@ -2314,7 +2312,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe TitanOperationStatus propertiesStatus = fillProperties(uniqueId, dataTypeDefinition); if (propertiesStatus != TitanOperationStatus.OK) { - log.error("Failed to fetch properties of data type " + uniqueId); + log.error("Failed to fetch properties of data type {}", uniqueId); return Either.right(propertiesStatus); } @@ -2331,11 +2329,11 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Either<ImmutablePair<DataTypeData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.DataType), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.DataType, DataTypeData.class); - log.debug("After retrieving DERIVED_FROM node of " + uniqueId + ". status is " + parentNode); + log.debug("After retrieving DERIVED_FROM node of {}. status is {}", uniqueId, parentNode); if (parentNode.isRight()) { TitanOperationStatus titanOperationStatus = parentNode.right().value(); if (titanOperationStatus != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the parent data type of data type " + uniqueId + ". status is " + titanOperationStatus); + log.error("Failed to find the parent data type of data type {}. status is {}", uniqueId, titanOperationStatus); result = Either.right(titanOperationStatus); return result; } @@ -2436,7 +2434,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfNode = this.findPropertiesOfNode(NodeTypeEnum.GroupType, uniqueId); if (findPropertiesOfNode.isRight()) { TitanOperationStatus titanOperationStatus = findPropertiesOfNode.right().value(); - log.debug("After looking for properties of vertex " + uniqueId + ". status is " + titanOperationStatus); + log.debug("After looking for properties of vertex {}. status is {}", uniqueId, titanOperationStatus); if (TitanOperationStatus.NOT_FOUND.equals(titanOperationStatus)) { return TitanOperationStatus.OK; } else { @@ -2461,7 +2459,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe * * @param uniqueId * @param propertiesMap - * TODO + * * @return */ protected Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToElementType(String uniqueId, NodeTypeEnum nodeType, Map<String, PropertyDefinition> propertiesMap) { @@ -2477,7 +2475,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe if (addPropertyToNodeType.isRight()) { TitanOperationStatus operationStatus = addPropertyToNodeType.right().value(); - log.error("Failed to associate " + nodeType.getName() + " " + uniqueId + " to property " + propertyName + " in graph. status is " + operationStatus); + log.error("Failed to associate {} {} to property {} in graph. status is {}", nodeType.getName(), uniqueId, propertyName, operationStatus); return Either.right(operationStatus); } propertiesData.put(propertyName, addPropertyToNodeType.left().value()); @@ -2556,14 +2554,14 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe List<PropertyDefinition> propertiesToAdd = new ArrayList<>(); if (isPropertyOmitted(newProperties, oldProperties, dataTypeName) || isPropertyTypeChanged(dataTypeName, newProperties, oldProperties, propertiesToAdd) || isDerivedFromNameChanged(dataTypeName, newDerivedFromName, oldDerivedFromName)) { - log.debug("The new data type " + dataTypeName + " is invalid."); + log.debug("The new data type {} is invalid.", dataTypeName); result = Either.right(StorageOperationStatus.CANNOT_UPDATE_EXISTING_ENTITY); return result; } if (propertiesToAdd == null || propertiesToAdd.isEmpty()) { - log.debug("No new properties has been defined in the new data type " + newDataTypeDefinition); + log.debug("No new properties has been defined in the new data type {}", newDataTypeDefinition); result = Either.right(StorageOperationStatus.OK); return result; } @@ -2606,15 +2604,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe private String getDerivedFromName(DataTypeDefinition dataTypeDefinition) { String derivedFromName = dataTypeDefinition.getDerivedFromName(); - // if (derivedFromName == null) { - // DataTypeDefinition derivedFrom = dataTypeDefinition.getDerivedFrom(); - // if (derivedFrom != null) { - // log.debug("Dervied from is taken from definition"); - // derivedFromName = derivedFrom.getName(); - // } - // } else { - // log.debug("Dervied from is taken from field derivedFromName"); - // } return derivedFromName; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java index e8892ad333..a2fe3d61d3 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java @@ -95,10 +95,9 @@ public class RequirementOperation implements IRequirementOperation { } protected CapabilityTypeDefinition convertCTDataToCTDefinition(CapabilityTypeData capabilityTypeData) { - log.debug("The object returned after create capability is " + capabilityTypeData); + log.debug("The object returned after create capability is {}", capabilityTypeData); - CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition( - capabilityTypeData.getCapabilityTypeDataDefinition()); + CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition(capabilityTypeData.getCapabilityTypeDataDefinition()); return capabilityTypeDefResult; } @@ -117,14 +116,12 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, - RequirementDefinition reqDefinition, String resourceId) { + public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId) { return addRequirementToResource(reqName, reqDefinition, resourceId, false); } - private Either<GraphRelation, TitanOperationStatus> associateRequirementToRelationshipType(RequirementData reqData, - RequirementDefinition reqDefinition) { + private Either<GraphRelation, TitanOperationStatus> associateRequirementToRelationshipType(RequirementData reqData, RequirementDefinition reqDefinition) { String relationship = reqDefinition.getRelationship(); @@ -133,8 +130,7 @@ public class RequirementOperation implements IRequirementOperation { return Either.right(TitanOperationStatus.NOT_FOUND); } UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.RelationshipType, relationship); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, - uniqueIdData, GraphEdgeLabels.RELATIONSHIP_TYPE, null); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, uniqueIdData, GraphEdgeLabels.RELATIONSHIP_TYPE, null); return createRelation; @@ -147,32 +143,26 @@ public class RequirementOperation implements IRequirementOperation { * @param reqDefinition * @return */ - private Either<GraphRelation, TitanOperationStatus> associateRequirementToCapabilityType(RequirementData reqData, - RequirementDefinition reqDefinition) { + private Either<GraphRelation, TitanOperationStatus> associateRequirementToCapabilityType(RequirementData reqData, RequirementDefinition reqDefinition) { String capability = reqDefinition.getCapability(); UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, capability); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, - uniqueIdData, GraphEdgeLabels.CAPABILITY_TYPE, null); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, uniqueIdData, GraphEdgeLabels.CAPABILITY_TYPE, null); - log.debug("After associating requirementData " + reqData + " to capability " + capability + ". status is " - + createRelation); + log.debug("After associating requirementData {} to capability {}. status is {}", reqData, capability, createRelation); return createRelation; } - private TitanOperationStatus associateRequirementToCapabilityType(TitanVertex reqData, - RequirementDefinition reqDefinition) { + private TitanOperationStatus associateRequirementToCapabilityType(TitanVertex reqData, RequirementDefinition reqDefinition) { String capability = reqDefinition.getCapability(); UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, capability); - TitanOperationStatus createRelation = titanGenericDao.createEdge(reqData, uniqueIdData, - GraphEdgeLabels.CAPABILITY_TYPE, null); + TitanOperationStatus createRelation = titanGenericDao.createEdge(reqData, uniqueIdData, GraphEdgeLabels.CAPABILITY_TYPE, null); - log.debug("After associating requirementData {} to capability {}. status is {}" + reqData, capability, - createRelation); + log.debug("After associating requirementData {} to capability {}. status is {}", reqData, capability, createRelation); return createRelation; } @@ -185,18 +175,14 @@ public class RequirementOperation implements IRequirementOperation { * @param capabilityName * @return */ - private Either<GraphRelation, TitanOperationStatus> associateRequirementImplToCapabilityInst( - RequirementImplData reqImplData, CapabilityInstData capabilityInstData, String capabilityName) { + private Either<GraphRelation, TitanOperationStatus> associateRequirementImplToCapabilityInst(RequirementImplData reqImplData, CapabilityInstData capabilityInstData, String capabilityName) { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName); - log.debug( - "Before associating requirement impl " + reqImplData + " to capability instance " + capabilityInstData); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqImplData, - capabilityInstData, GraphEdgeLabels.CAPABILITY_INST, props); - log.debug("After associating requirement impl " + reqImplData + " to capability instance " + capabilityInstData - + ".status is " + createRelation); + log.debug("Before associating requirement impl {} to capability instance {}", reqImplData, capabilityInstData); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqImplData, capabilityInstData, GraphEdgeLabels.CAPABILITY_INST, props); + log.debug("After associating requirement impl {} to capability instance {}.status is {}", reqImplData, capabilityInstData, createRelation); return createRelation; @@ -210,8 +196,7 @@ public class RequirementOperation implements IRequirementOperation { * @param reqDefinition * @return */ - private Either<RequirementData, TitanOperationStatus> addRequirementData(String resourceId, String reqName, - RequirementDefinition reqDefinition) { + private Either<RequirementData, TitanOperationStatus> addRequirementData(String resourceId, String reqName, RequirementDefinition reqDefinition) { ResourceMetadataData resourceData = new ResourceMetadataData(); resourceData.getMetadataDataDefinition().setUniqueId(resourceId); @@ -219,19 +204,16 @@ public class RequirementOperation implements IRequirementOperation { RequirementData requirementData = buildRequirementData(resourceId, reqName, reqDefinition); log.debug("Before adding requirement data to graph {}", requirementData); - Either<RequirementData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementData, - RequirementData.class); + Either<RequirementData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementData, RequirementData.class); log.debug("After adding requirement to graph {}", requirementData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add requirement " + reqName + " [ " + requirementData + " ] " + " to graph. status is " - + operationStatus); + log.error("Failed to add requirement {} [{}] to graph. status is {}", reqName, requirementData, operationStatus); return Either.right(operationStatus); } - TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, resourceData, - requirementData); + TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, resourceData, requirementData); if (status != TitanOperationStatus.OK) { return Either.right(status); } @@ -240,8 +222,7 @@ public class RequirementOperation implements IRequirementOperation { } - private Either<TitanVertex, TitanOperationStatus> addRequirementData(TitanVertex vertex, String resourceId, - String reqName, RequirementDefinition reqDefinition) { + private Either<TitanVertex, TitanOperationStatus> addRequirementData(TitanVertex vertex, String resourceId, String reqName, RequirementDefinition reqDefinition) { RequirementData requirementData = buildRequirementData(resourceId, reqName, reqDefinition); @@ -251,13 +232,11 @@ public class RequirementOperation implements IRequirementOperation { log.debug("After adding requirement to graph {}", requirementData); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add requirement " + reqName + " [ " + requirementData + " ] " + " to graph. status is " - + operationStatus); + log.error("Failed to add requirement {} [{}] to graph. status is {}", reqName, requirementData, operationStatus); return Either.right(operationStatus); } - TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, vertex, - createNodeResult.left().value()); + TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, vertex, createNodeResult.left().value()); if (!status.equals(TitanOperationStatus.OK)) { return Either.right(status); } @@ -265,8 +244,7 @@ public class RequirementOperation implements IRequirementOperation { } /** - * Asssociate resource node to requirement node with REQUIREMENT label and - * requirement name as property on the edge. + * Asssociate resource node to requirement node with REQUIREMENT label and requirement name as property on the edge. * * @param resourceId * @param reqName @@ -274,39 +252,32 @@ public class RequirementOperation implements IRequirementOperation { * @param requirementData * @return */ - private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, - ResourceMetadataData resourceData, RequirementData requirementData) { + private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, ResourceMetadataData resourceData, RequirementData requirementData) { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, - requirementData, GraphEdgeLabels.REQUIREMENT, props); - log.debug("After creatin edge between resource " + resourceId + " to requirement " + requirementData); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, requirementData, GraphEdgeLabels.REQUIREMENT, props); + log.debug("After creatin edge between resource {} to requirement {}", resourceId, requirementData); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate resource " + resourceId + " to requirement " + reqName + "[ " - + requirementData + "] in graph. status is " + operationStatus); + log.error("Failed to associate resource {} to requirement {} [ {} ] in graph. status is {}", resourceId, reqName, requirementData, operationStatus); } return TitanOperationStatus.OK; } - private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, - TitanVertex resourceVertex, TitanVertex requirementVertex) { + private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, TitanVertex resourceVertex, TitanVertex requirementVertex) { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName); - TitanOperationStatus createRelResult = titanGenericDao.createEdge(resourceVertex, requirementVertex, - GraphEdgeLabels.REQUIREMENT, props); + TitanOperationStatus createRelResult = titanGenericDao.createEdge(resourceVertex, requirementVertex, GraphEdgeLabels.REQUIREMENT, props); log.debug("After creatin edge between resource {} to requirement {}", resourceId, requirementVertex); if (!createRelResult.equals(TitanOperationStatus.OK)) { - log.error("Failed to associate resource {} to requirement {} in graph. status is " + resourceId, reqName, - createRelResult); + log.error("Failed to associate resource {} to requirement {} in graph. status is {}", resourceId, reqName, createRelResult); } return TitanOperationStatus.OK; } - private RequirementData buildRequirementData(String resourceId, String reqName, - RequirementDefinition reqDefinition) { + private RequirementData buildRequirementData(String resourceId, String reqName, RequirementDefinition reqDefinition) { RequirementData requirementData = new RequirementData(); requirementData.setNode(reqDefinition.getNode()); @@ -322,8 +293,7 @@ public class RequirementOperation implements IRequirementOperation { } /** - * build requirement impl node associate it to resource, requirement & - * implementation resource + * build requirement impl node associate it to resource, requirement & implementation resource * * [RESOURCE] --> [REQUIREMENT IMPL] --> [ RESOURCE IMPL ] | V [REQUIREMENT] * @@ -334,47 +304,37 @@ public class RequirementOperation implements IRequirementOperation { * @param reqImplDefinition * @return */ - private Either<RequirementImplData, TitanOperationStatus> addRequirementImplData(NodeTypeEnum resourceLabel, - String resourceId, String reqName, String requirementUid, RequirementImplDef reqImplDefinition) { + private Either<RequirementImplData, TitanOperationStatus> addRequirementImplData(NodeTypeEnum resourceLabel, String resourceId, String reqName, String requirementUid, RequirementImplDef reqImplDefinition) { RequirementImplData requirementImplData = buildRequirementImplData(resourceId, reqName, reqImplDefinition); - log.debug("Before adding requirement impl data to graph " + requirementImplData); - Either<RequirementImplData, TitanOperationStatus> createNodeResult = titanGenericDao - .createNode(requirementImplData, RequirementImplData.class); - log.debug("After adding requirement to graph " + requirementImplData + ". status is " + createNodeResult); + log.debug("Before adding requirement impl data to graph {}", requirementImplData); + Either<RequirementImplData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementImplData, RequirementImplData.class); + log.debug("After adding requirement to graph {}. status is {}", requirementImplData, createNodeResult); if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); - log.error("Failed to add requirement " + reqName + " [ " + requirementImplData + " ] " - + " to graph. status is " + operationStatus); + log.error("Failed to add requirement {} [ {} ] to graph. status is {}", reqName, requirementImplData, operationStatus); return Either.right(operationStatus); } - Either<GraphRelation, TitanOperationStatus> createRelResult = associateReqImplRoResource(resourceLabel, - resourceId, reqName, requirementImplData); + Either<GraphRelation, TitanOperationStatus> createRelResult = associateReqImplRoResource(resourceLabel, resourceId, reqName, requirementImplData); if (createRelResult.isRight()) { TitanOperationStatus operationStatus = createRelResult.right().value(); - log.error("Failed to associate resource " + resourceId + " to requirement impl " + requirementImplData - + "[ " + requirementImplData + "] in graph. status is " + operationStatus); + log.error("Failed to associate resource {} to requirement impl {} [ {} ] in graph. status is {}", resourceId, requirementImplData, requirementImplData, operationStatus); return Either.right(operationStatus); } - Either<GraphRelation, TitanOperationStatus> associateToResourceImpl = associateReqImplToImplResource( - requirementImplData, reqImplDefinition.getNodeId()); + Either<GraphRelation, TitanOperationStatus> associateToResourceImpl = associateReqImplToImplResource(requirementImplData, reqImplDefinition.getNodeId()); if (associateToResourceImpl.isRight()) { TitanOperationStatus operationStatus = associateToResourceImpl.right().value(); - log.error("Failed to associate requirement impl " + requirementImplData + " to resource impl " - + reqImplDefinition.getNodeId() + "[ " + requirementImplData + "] in graph. status is " - + operationStatus); + log.error("Failed to associate requirement impl {} to resource impl {} [ {} ] in graph. status is {}", requirementImplData, reqImplDefinition.getNodeId(), requirementImplData, operationStatus); return Either.right(operationStatus); } - Either<GraphRelation, TitanOperationStatus> associateToRequirement = associateReqImplToRequirement( - requirementImplData, requirementUid); + Either<GraphRelation, TitanOperationStatus> associateToRequirement = associateReqImplToRequirement(requirementImplData, requirementUid); if (associateToRequirement.isRight()) { TitanOperationStatus operationStatus = associateToRequirement.right().value(); - log.error("Failed to associate requirement impl " + requirementImplData + " to requirement " + reqName - + " in graph. status is " + operationStatus); + log.error("Failed to associate requirement impl {} to requirement {} in graph. status is {}", requirementImplData, reqName, operationStatus); return Either.right(operationStatus); } @@ -382,8 +342,7 @@ public class RequirementOperation implements IRequirementOperation { } - private RequirementImplData buildRequirementImplData(String resourceId, String reqName, - RequirementImplDef reqImplDefinition) { + private RequirementImplData buildRequirementImplData(String resourceId, String reqName, RequirementImplDef reqImplDefinition) { String reqImplUid = UniqueIdBuilder.buildRequirementImplUid(resourceId, reqName); RequirementImplData requirementImplData = new RequirementImplData(); requirementImplData.setName(reqName); @@ -400,53 +359,43 @@ public class RequirementOperation implements IRequirementOperation { } /** - * associate requirement impl node to the source requirement. The source - * requirement maybe belongs to one of parents. + * associate requirement impl node to the source requirement. The source requirement maybe belongs to one of parents. * * @param requirementImplData * @param requirementUid * @return */ - private Either<GraphRelation, TitanOperationStatus> associateReqImplToRequirement( - RequirementImplData requirementImplData, String requirementUid) { + private Either<GraphRelation, TitanOperationStatus> associateReqImplToRequirement(RequirementImplData requirementImplData, String requirementUid) { UniqueIdData to = new UniqueIdData(NodeTypeEnum.Requirement, requirementUid); - log.debug("Before creating edge between requirement impl " + requirementImplData + " to requirement " - + requirementUid); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao - .createRelation(requirementImplData, to, GraphEdgeLabels.IMPLEMENTATION_OF, null); - log.debug("Before creating edge between requirement impl " + requirementImplData + " to requirement " - + requirementUid + ". status is " + createRelResult); + log.debug("Before creating edge between requirement impl {} to requirement {}", requirementImplData, requirementUid); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(requirementImplData, to, GraphEdgeLabels.IMPLEMENTATION_OF, null); + log.debug("Before creating edge between requirement impl {} to requirement {}. status is {}", requirementImplData, requirementUid, createRelResult); return createRelResult; } /** - * Associate requirement impl node to the node which supply this - * requirement. + * Associate requirement impl node to the node which supply this requirement. * * @param requirementImplData * @param nodeId * @return */ - private Either<GraphRelation, TitanOperationStatus> associateReqImplToImplResource( - RequirementImplData requirementImplData, String nodeId) { + private Either<GraphRelation, TitanOperationStatus> associateReqImplToImplResource(RequirementImplData requirementImplData, String nodeId) { UniqueIdData nodeImpl = new UniqueIdData(NodeTypeEnum.Resource, nodeId); Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), nodeId); - log.debug("Before creating edge between requirement impl " + requirementImplData + " to node impl " + nodeId); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao - .createRelation(requirementImplData, nodeImpl, GraphEdgeLabels.NODE_IMPL, props); - log.debug("After creating edge between requirement " + requirementImplData + " to node impl " + nodeId - + ". status is " + createRelResult); + log.debug("Before creating edge between requirement impl {} to node impl {}", requirementImplData, nodeId); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(requirementImplData, nodeImpl, GraphEdgeLabels.NODE_IMPL, props); + log.debug("After creating edge between requirement {} to node impl {}. status is {}", requirementImplData, nodeId, createRelResult); return createRelResult; } /** - * create an edge between the requirement impl node to the implementation - * resource. + * create an edge between the requirement impl node to the implementation resource. * * @param resourceLabel * @param resourceId @@ -454,18 +403,14 @@ public class RequirementOperation implements IRequirementOperation { * @param requirementImplData * @return */ - private Either<GraphRelation, TitanOperationStatus> associateReqImplRoResource(NodeTypeEnum resourceLabel, - String resourceId, String reqName, RequirementImplData requirementImplData) { + private Either<GraphRelation, TitanOperationStatus> associateReqImplRoResource(NodeTypeEnum resourceLabel, String resourceId, String reqName, RequirementImplData requirementImplData) { UniqueIdData resource = new UniqueIdData(resourceLabel, resourceId); Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName); - log.debug( - "Before creating edge between resource " + resourceId + " to requirement impl " + requirementImplData); - Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resource, - requirementImplData, GraphEdgeLabels.REQUIREMENT_IMPL, props); - log.debug("After creating edge between to requirement impl " + requirementImplData + " to resource " + resource - + ". status is " + createRelResult); + log.debug("Before creating edge between resource {} to requirement impl {}", resourceId, requirementImplData); + Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resource, requirementImplData, GraphEdgeLabels.REQUIREMENT_IMPL, props); + log.debug("After creating edge between to requirement impl {} to resource {}. status is {}", requirementImplData, resource, createRelResult); return createRelResult; } @@ -476,65 +421,46 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, - RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) { + public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) { Either<RequirementDefinition, StorageOperationStatus> result = null; try { - log.debug("Going to add requirement " + reqName + " to resource " + resourceId - + ". requirement definition is " + reqDefinition); + log.debug("Going to add requirement {} to resource {}. requirement definition is {}", reqName, resourceId, reqDefinition); validateNodeExists(reqDefinition.getNode()); // 1. add requirement node in graph and associate it to the resource log.debug("Going to add requirement node in graph and associate it to the resource"); - Either<RequirementData, TitanOperationStatus> addRequirementData = addRequirementData(resourceId, reqName, - reqDefinition); + Either<RequirementData, TitanOperationStatus> addRequirementData = addRequirementData(resourceId, reqName, reqDefinition); if (addRequirementData.isRight()) { - log.error("Failed to add requirement " + reqName + " node to graph. status is " + addRequirementData); - result = Either.right( - DaoStatusConverter.convertTitanStatusToStorageStatus(addRequirementData.right().value())); + log.error("Failed to add requirement {} node to graph. status is {}", reqName, addRequirementData); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addRequirementData.right().value())); return result; } RequirementData requirementData = addRequirementData.left().value(); log.debug("Going to associate the requirement to the appriopriate capability type"); - Either<GraphRelation, TitanOperationStatus> associateReqToCapabilityType = associateRequirementToCapabilityType( - requirementData, reqDefinition); + Either<GraphRelation, TitanOperationStatus> associateReqToCapabilityType = associateRequirementToCapabilityType(requirementData, reqDefinition); if (associateReqToCapabilityType.isRight()) { - log.error("Failed to associate requirement data node " + requirementData - + " to the capability type node " + reqDefinition.getCapability()); - result = Either.right(DaoStatusConverter - .convertTitanStatusToStorageStatus(associateReqToCapabilityType.right().value())); + log.error("Failed to associate requirement data node {} to the capability type node {}", requirementData, reqDefinition.getCapability()); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateReqToCapabilityType.right().value())); return result; } // TODO: esofer associate requirement to the relationship type /* - * Either<GraphRelation, TitanOperationStatus> - * associateReqToRelshipType = - * associateRequirementToRelationshipType( requirementData, - * reqDefinition); + * Either<GraphRelation, TitanOperationStatus> associateReqToRelshipType = associateRequirementToRelationshipType( requirementData, reqDefinition); * - * if (associateReqToRelshipType.isRight() && - * associateReqToRelshipType.right().value() != - * TitanOperationStatus.NOT_FOUND) { - * log.error("Failed to associate requirement data node " + - * requirementData + " to the relationship type node " + - * reqDefinition.getRelationship()); result = Either - * .right(TitanStatusConverter - * .convertTitanStatusToStorageStatus(associateReqToRelshipType - * .right().value())); return result; } + * if (associateReqToRelshipType.isRight() && associateReqToRelshipType.right().value() != TitanOperationStatus.NOT_FOUND) { log.error("Failed to associate requirement data node " + requirementData + " to the relationship type node " + + * reqDefinition.getRelationship()); result = Either .right(TitanStatusConverter .convertTitanStatusToStorageStatus(associateReqToRelshipType .right().value())); return result; } */ - log.debug("Going to fetch the requirement " + reqName + " from graph"); - Either<RequirementDefinition, TitanOperationStatus> requirementDefinitionRes = getRequirement( - requirementData.getUniqueId()); + log.debug("Going to fetch the requirement {} from graph", reqName); + Either<RequirementDefinition, TitanOperationStatus> requirementDefinitionRes = getRequirement(requirementData.getUniqueId()); if (requirementDefinitionRes.isRight()) { - result = Either.right( - DaoStatusConverter.convertTitanStatusToStorageStatus(requirementDefinitionRes.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(requirementDefinitionRes.right().value())); return result; } @@ -557,34 +483,28 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, - RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) { + public StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) { StorageOperationStatus result = StorageOperationStatus.OK; try { - log.debug("Going to add requirement {} to resource . requirement definition is ", reqName, resourceId, - reqDefinition); + log.debug("Going to add requirement {} to resource . requirement definition is ", reqName, resourceId, reqDefinition); validateNodeExists(reqDefinition.getNode()); // 1. add requirement node in graph and associate it to the resource log.debug("Going to add requirement node in graph and associate it to the resource"); - Either<TitanVertex, TitanOperationStatus> addRequirementData = addRequirementData(metadataVertex, - resourceId, reqName, reqDefinition); + Either<TitanVertex, TitanOperationStatus> addRequirementData = addRequirementData(metadataVertex, resourceId, reqName, reqDefinition); if (addRequirementData.isRight()) { - log.error("Failed to add requirement {} node to graph. status is {}", reqName, - addRequirementData.right().value()); + log.error("Failed to add requirement {} node to graph. status is {}", reqName, addRequirementData.right().value()); result = DaoStatusConverter.convertTitanStatusToStorageStatus(addRequirementData.right().value()); return result; } log.debug("Going to associate the requirement to the appriopriate capability type"); - TitanOperationStatus associateReqToCapabilityType = associateRequirementToCapabilityType( - addRequirementData.left().value(), reqDefinition); + TitanOperationStatus associateReqToCapabilityType = associateRequirementToCapabilityType(addRequirementData.left().value(), reqDefinition); if (!associateReqToCapabilityType.equals(TitanOperationStatus.OK)) { - log.error("Failed to associate requirement data node {} to the capability type node {}" + reqDefinition, - reqDefinition.getCapability()); + log.error("Failed to associate requirement data node {} to the capability type node {}", reqDefinition.getCapability(), reqDefinition); result = DaoStatusConverter.convertTitanStatusToStorageStatus(associateReqToCapabilityType); return result; } @@ -614,22 +534,19 @@ public class RequirementOperation implements IRequirementOperation { public Either<RequirementDefinition, TitanOperationStatus> getRequirement(String uniqueId) { log.debug("Going to fetch the requirement {} from graph.", uniqueId); - Either<RequirementData, TitanOperationStatus> reqDataResult = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), uniqueId, RequirementData.class); + Either<RequirementData, TitanOperationStatus> reqDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), uniqueId, RequirementData.class); if (reqDataResult.isRight()) { - log.error("Failed to find requirement node in graph " + uniqueId + ". status is " + reqDataResult); + log.error("Failed to find requirement node in graph {}. status is {}", uniqueId, reqDataResult); return Either.right(reqDataResult.right().value()); } log.debug("Going to fetch the capability type associate to requirement {}", uniqueId); - Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> capabilityTypeRes = titanGenericDao - .getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.CAPABILITY_TYPE, - NodeTypeEnum.CapabilityType, CapabilityTypeData.class); + Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> capabilityTypeRes = titanGenericDao.getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.CAPABILITY_TYPE, NodeTypeEnum.CapabilityType, + CapabilityTypeData.class); if (capabilityTypeRes.isRight()) { - log.error("Cannot find the capability of a given requirement " + uniqueId + ". status is " - + capabilityTypeRes); + log.error("Cannot find the capability of a given requirement {}. status is {}", uniqueId, capabilityTypeRes); return Either.right(capabilityTypeRes.right().value()); } @@ -639,37 +556,23 @@ public class RequirementOperation implements IRequirementOperation { // TODO: esofer add relationship as edge /* - * Either<List<ImmutablePair<RelationshipTypeData, GraphEdge>>, - * TitanOperationStatus> relationshipRes = titanGenericDao - * .getChildrenNodes( GraphPropertiesDictionary.UNIQUE_ID.getProperty(), - * uniqueId, GraphEdgeLabels.RELATIONSHIP_TYPE, + * Either<List<ImmutablePair<RelationshipTypeData, GraphEdge>>, TitanOperationStatus> relationshipRes = titanGenericDao .getChildrenNodes( GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.RELATIONSHIP_TYPE, * NodeTypeEnum.RelationshipType, RelationshipTypeData.class); * - * if (relationshipRes.isRight() && relationshipRes.right().value() != - * TitanOperationStatus.NOT_FOUND) { - * log.error("Cannot find the capability of a given requirement " + - * uniqueId + ". status is " + capabilityTypesRes); return - * Either.right(relationshipRes.right().value()); } + * if (relationshipRes.isRight() && relationshipRes.right().value() != TitanOperationStatus.NOT_FOUND) { + * return Either.right(relationshipRes.right().value()); } * - * String relationshipType = null; if (relationshipRes.isLeft()) { - * List<ImmutablePair<RelationshipTypeData, GraphEdge>> rstPairs = - * relationshipRes .left().value(); if (rstPairs == null || true == - * rstPairs.isEmpty()) { log.error( - * "Cannot find the capability of a given requirement " + uniqueId); - * return Either.right(TitanOperationStatus.NOT_FOUND); } + * String relationshipType = null; if (relationshipRes.isLeft()) { List<ImmutablePair<RelationshipTypeData, GraphEdge>> rstPairs = relationshipRes .left().value(); if (rstPairs == null || true == rstPairs.isEmpty()) { log.error( + * "Cannot find the capability of a given requirement " + uniqueId); return Either.right(TitanOperationStatus.NOT_FOUND); } * - * ImmutablePair<RelationshipTypeData, GraphEdge> relationship = - * rstPairs .get(0); relationshipType = relationship.getKey().getType(); - * } + * ImmutablePair<RelationshipTypeData, GraphEdge> relationship = rstPairs .get(0); relationshipType = relationship.getKey().getType(); } */ log.debug("Going to fetch the capability type associate to requirement {}", uniqueId); - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao - .getParentNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.REQUIREMENT, - NodeTypeEnum.Resource, ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.REQUIREMENT, NodeTypeEnum.Resource, + ResourceMetadataData.class); if (parentNode.isRight()) { - log.error("Cannot find the parent resource for a given requirement " + uniqueId + ". status is " - + parentNode.right().value()); + log.error("Cannot find the parent resource for a given requirement {}. status is {}", uniqueId, parentNode.right().value()); return Either.right(parentNode.right().value()); } @@ -689,15 +592,13 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, - String resourceId) { + public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId) { return getRequirementOfResource(reqName, resourceId, false); } @Override - public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, - String resourceId, boolean inTransaction) { + public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId, boolean inTransaction) { Either<RequirementDefinition, StorageOperationStatus> result = null; @@ -706,9 +607,8 @@ public class RequirementOperation implements IRequirementOperation { Either<RequirementDefinition, TitanOperationStatus> requirementRes = getRequirement(reqUniqueId); if (requirementRes.isRight()) { - log.debug("Failed to retrieve requirement " + reqName + " associated to resource " + resourceId); - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(requirementRes.right().value())); + log.debug("Failed to retrieve requirement {} associated to resource {}", reqName, resourceId); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(requirementRes.right().value())); } else { result = Either.left(requirementRes.left().value()); } @@ -730,16 +630,14 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, - RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId) { + public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId) { return addRequirementImplToResource(reqName, reqDefinition, resourceId, parentReqUniqueId, false); } @Override - public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, - RequirementImplDef reqImplDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction) { + public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqImplDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction) { Either<RequirementDefinition, StorageOperationStatus> result = null; @@ -748,11 +646,10 @@ public class RequirementOperation implements IRequirementOperation { // find the requirement defined at the resource itself or under one // of its parents Either<RequirementDefinition, TitanOperationStatus> findReq = getRequirement(parentReqUniqueId); - log.debug("After looking for requirement " + parentReqUniqueId + ". status is " + findReq); + log.debug("After looking for requirement {}. status is {}", parentReqUniqueId, findReq); if (findReq.isRight()) { TitanOperationStatus status = findReq.right().value(); - log.error("The requirment " + parentReqUniqueId + " was not found in the graph. status is " - + findReq.right().value()); + log.error("The requirment {} was not found in the graph. status is {}", parentReqUniqueId, findReq.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -765,27 +662,22 @@ public class RequirementOperation implements IRequirementOperation { checkNodeIdImplementsRequirementNode(nodeIdImpl, reqNode); - Either<RequirementImplData, TitanOperationStatus> addRequirementImplData = addRequirementImplData( - NodeTypeEnum.Resource, resourceId, reqName, parentReqUniqueId, reqImplDefinition); + Either<RequirementImplData, TitanOperationStatus> addRequirementImplData = addRequirementImplData(NodeTypeEnum.Resource, resourceId, reqName, parentReqUniqueId, reqImplDefinition); if (addRequirementImplData.isRight()) { TitanOperationStatus status = addRequirementImplData.right().value(); - log.error("Failed to add requirement data impl node in the graph. status is " - + addRequirementImplData.right().value()); + log.error("Failed to add requirement data impl node in the graph. status is {}", addRequirementImplData.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } RequirementImplData requirementImplData = addRequirementImplData.left().value(); - log.debug("Add the properties of the capabilities of the target node " + nodeIdImpl - + " to the requirement impl node " + requirementImplData.getUniqueId() + " in graph."); - Map<String, CapabiltyInstance> requirementPropertiesPerCapability = reqImplDefinition - .getRequirementProperties(); - TitanOperationStatus addPropsResult = addCapabilityPropertiesToReqImpl(requirementImplData, reqCapability, - nodeIdImpl, requirementPropertiesPerCapability); + log.debug("Add the properties of the capabilities of the target node {} to the requirement impl node {} in graph.", nodeIdImpl, requirementImplData.getUniqueId()); + Map<String, CapabiltyInstance> requirementPropertiesPerCapability = reqImplDefinition.getRequirementProperties(); + TitanOperationStatus addPropsResult = addCapabilityPropertiesToReqImpl(requirementImplData, reqCapability, nodeIdImpl, requirementPropertiesPerCapability); if (addPropsResult != TitanOperationStatus.OK) { - log.error("Failed to add capabilities properties to Requirement impl " + requirementImplData); + log.error("Failed to add capabilities properties to Requirement impl {}", requirementImplData); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropsResult)); return result; } @@ -807,15 +699,13 @@ public class RequirementOperation implements IRequirementOperation { return result; } - private Either<RequirementImplDef, TitanOperationStatus> getRequirementImplOfResource(String reqName, - String resourceId) { + private Either<RequirementImplDef, TitanOperationStatus> getRequirementImplOfResource(String reqName, String resourceId) { RequirementImplDef requirementImplDef = new RequirementImplDef(); - Either<List<ImmutablePair<RequirementImplData, GraphEdge>>, TitanOperationStatus> reqImplNodesRes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, - GraphEdgeLabels.REQUIREMENT_IMPL, NodeTypeEnum.RequirementImpl, RequirementImplData.class); - log.debug("After looking for requirement impl edge of resource " + resourceId); + Either<List<ImmutablePair<RequirementImplData, GraphEdge>>, TitanOperationStatus> reqImplNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.REQUIREMENT_IMPL, + NodeTypeEnum.RequirementImpl, RequirementImplData.class); + log.debug("After looking for requirement impl edge of resource {}", resourceId); if (reqImplNodesRes.isRight()) { TitanOperationStatus status = reqImplNodesRes.right().value(); return Either.right(status); @@ -832,15 +722,12 @@ public class RequirementOperation implements IRequirementOperation { requirementImplDef.setUniqueId(requirementImplData.getUniqueId()); - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> nodeImplRes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), - requirementImplData.getUniqueId(), GraphEdgeLabels.NODE_IMPL, NodeTypeEnum.Resource, - ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> nodeImplRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), requirementImplData.getUniqueId(), + GraphEdgeLabels.NODE_IMPL, NodeTypeEnum.Resource, ResourceMetadataData.class); if (nodeImplRes.isRight()) { TitanOperationStatus status = nodeImplRes.right().value(); - log.debug("No implementation resource was found under requirement impl " - + requirementImplData.getUniqueId() + ". status is " + status); + log.debug("No implementation resource was found under requirement impl {}. status is {}", requirementImplData.getUniqueId(), status); return Either.right(status); } @@ -854,14 +741,11 @@ public class RequirementOperation implements IRequirementOperation { requirementImplDef.setPoint(point); } - Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> capaInstDataRes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), - requirementImplData.getUniqueId(), GraphEdgeLabels.CAPABILITY_INST, - NodeTypeEnum.CapabilityInst, CapabilityInstData.class); + Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> capaInstDataRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), requirementImplData.getUniqueId(), + GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class); if (capaInstDataRes.isRight()) { TitanOperationStatus status = capaInstDataRes.right().value(); - log.debug("No capability instance was found under requirement impl " - + requirementImplData.getUniqueId() + ". status is " + status); + log.debug("No capability instance was found under requirement impl {}. status is {}", requirementImplData.getUniqueId(), status); return Either.right(status); } @@ -874,14 +758,12 @@ public class RequirementOperation implements IRequirementOperation { GraphEdge edge = capabilityInst.getValue(); Map<String, Object> properties = edge.getProperties(); if (properties == null) { - log.error("Cannot find the property " + GraphPropertiesDictionary.NAME.getProperty() - + " on the edge " + edge); + log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), edge); return Either.right(TitanOperationStatus.INVALID_ELEMENT); } String capabilityName = (String) properties.get(GraphPropertiesDictionary.NAME.getProperty()); if (capabilityName == null) { - log.error("Cannot find the property " + GraphPropertiesDictionary.NAME.getProperty() - + " on the edge " + edge); + log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), edge); return Either.right(TitanOperationStatus.INVALID_ELEMENT); } @@ -896,30 +778,25 @@ public class RequirementOperation implements IRequirementOperation { // capabiltyInstance.setProperties(actualValues); requirementProperties.put(capabilityName, capabiltyInstance); - Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyValueNodesRes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), - capabilityInstData.getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE, - NodeTypeEnum.PropertyValue, PropertyValueData.class); + Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyValueNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), + capabilityInstData.getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class); if (propertyValueNodesRes.isRight()) { TitanOperationStatus status = propertyValueNodesRes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find the property values of capability instance " + capabilityInstData - + ". status is " + status); + log.error("Failed to find the property values of capability instance {}. status is {}", capabilityInstData, status); return Either.right(status); } } else { - List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes = propertyValueNodesRes - .left().value(); + List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes = propertyValueNodesRes.left().value(); if (propertyValueNodes != null) { Map<String, String> actualValues = new HashMap<String, String>(); - TitanOperationStatus fillPropertiesResult = fillPropertiesMapFromNodes(propertyValueNodes, - actualValues); + TitanOperationStatus fillPropertiesResult = fillPropertiesMapFromNodes(propertyValueNodes, actualValues); if (fillPropertiesResult != TitanOperationStatus.OK) { - log.error("Failed to fetch properties of capability " + capabilityName); + log.error("Failed to fetch properties of capability {}", capabilityName); return Either.right(fillPropertiesResult); } @@ -940,7 +817,7 @@ public class RequirementOperation implements IRequirementOperation { } if (false == found) { - log.debug("Cannot find requirement impl under resource " + resourceId); + log.debug("Cannot find requirement impl under resource {}", resourceId); return Either.right(TitanOperationStatus.NOT_FOUND); } @@ -965,22 +842,19 @@ public class RequirementOperation implements IRequirementOperation { } - private TitanOperationStatus fillPropertiesMapFromNodes( - List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes, Map<String, String> actualValues) { + private TitanOperationStatus fillPropertiesMapFromNodes(List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes, Map<String, String> actualValues) { if (propertyValueNodes != null) { for (ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair : propertyValueNodes) { PropertyValueData propertyValueData = propertyValuePair.getKey(); GraphEdge propertyValueEdge = propertyValuePair.getValue(); Map<String, Object> propertyEdgeProps = propertyValueEdge.getProperties(); if (propertyEdgeProps == null) { - log.error("Cannot find the property " + GraphPropertiesDictionary.NAME.getProperty() - + " on the edge " + propertyValueEdge); + log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), propertyValueEdge); return TitanOperationStatus.INVALID_ELEMENT; } String paramName = (String) propertyEdgeProps.get(GraphPropertiesDictionary.NAME.getProperty()); if (paramName == null) { - log.error("Cannot find the property " + GraphPropertiesDictionary.NAME.getProperty() - + " on the edge " + propertyValueEdge); + log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), propertyValueEdge); return TitanOperationStatus.INVALID_ELEMENT; } actualValues.put(paramName, propertyValueData.getValue()); @@ -989,18 +863,16 @@ public class RequirementOperation implements IRequirementOperation { return TitanOperationStatus.OK; } - private TitanOperationStatus addCapabilityPropertiesToReqImpl(RequirementImplData reqImplData, String reqCapability, - String nodeIdImpl, Map<String, CapabiltyInstance> propertiesValuePerCapability) { + private TitanOperationStatus addCapabilityPropertiesToReqImpl(RequirementImplData reqImplData, String reqCapability, String nodeIdImpl, Map<String, CapabiltyInstance> propertiesValuePerCapability) { TitanOperationStatus result = null; - Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> allCapabilities = capabilityOperation - .getAllCapabilitiesPairs(nodeIdImpl); - log.trace("Atter looking for the capabilities of resource " + nodeIdImpl + ". result is " + allCapabilities); + Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> allCapabilities = capabilityOperation.getAllCapabilitiesPairs(nodeIdImpl); + log.trace("Atter looking for the capabilities of resource {}. result is {}", nodeIdImpl, allCapabilities); if (allCapabilities.isRight()) { TitanOperationStatus status = allCapabilities.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to find capabilities of resource " + nodeIdImpl + ". status is " + status); + log.error("Failed to find capabilities of resource {}. status is {}", nodeIdImpl, status); return status; } } else { @@ -1014,37 +886,32 @@ public class RequirementOperation implements IRequirementOperation { GraphEdge graphEdge = entry.getValue(); - Either<String, TitanOperationStatus> capabilityNameResult = findCapabilityName(capabilityData, - graphEdge); + Either<String, TitanOperationStatus> capabilityNameResult = findCapabilityName(capabilityData, graphEdge); if (capabilityNameResult.isRight()) { TitanOperationStatus status = capabilityNameResult.right().value(); - log.error( - "Failed to find capability name from the edge associated to capability " + capabilityData); + log.error("Failed to find capability name from the edge associated to capability {}", capabilityData); return status; } String capabilityName = capabilityNameResult.left().value(); - log.debug("Going to set properties of capability " + capabilityName); + log.debug("Going to set properties of capability {}", capabilityName); String cabilityDataUid = capabilityData.getUniqueId(); - Either<CapabilityTypeData, TitanOperationStatus> ctDataResult = capabilityOperation - .getCapabilityTypeOfCapability(cabilityDataUid); + Either<CapabilityTypeData, TitanOperationStatus> ctDataResult = capabilityOperation.getCapabilityTypeOfCapability(cabilityDataUid); if (ctDataResult.isRight()) { - log.error("Cannot find capability type of capbility " + cabilityDataUid + ". status is " - + ctDataResult); + log.error("Cannot find capability type of capbility {}. status is {}", cabilityDataUid, ctDataResult); TitanOperationStatus status = ctDataResult.right().value(); return status; } CapabilityTypeData capabilityTypeData = ctDataResult.left().value(); - Either<Map<String, PropertyDefinition>, TitanOperationStatus> propertiesStatus = findPropertiesOfCapability( - capabilityTypeData); + Either<Map<String, PropertyDefinition>, TitanOperationStatus> propertiesStatus = findPropertiesOfCapability(capabilityTypeData); if (propertiesStatus.isRight()) { TitanOperationStatus status = propertiesStatus.right().value(); - log.error("Failed to fetch properties definitions from capability. status is " + status); + log.error("Failed to fetch properties definitions from capability. status is {}", status); return status; } @@ -1055,43 +922,35 @@ public class RequirementOperation implements IRequirementOperation { capabiltyInstance = propertiesValuePerCapability.get(capabilityName); } - Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode = createCapabilityInstanceNode( - capabilityName, reqImplData); + Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode = createCapabilityInstanceNode(capabilityName, reqImplData); if (createCapabilityInstanceNode.isRight()) { TitanOperationStatus status = createCapabilityInstanceNode.right().value(); - log.error("Failed to create capability instance node (" + capabilityName + ") in graph. status is " - + status); + log.error("Failed to create capability instance node ({}) in graph. status is {}", capabilityName, status); return status; } CapabilityInstData capabilityInstData = createCapabilityInstanceNode.left().value(); - Either<List<GraphRelation>, TitanOperationStatus> instanceProperties = addPropertiesToCapabilityInstance( - properties, capabiltyInstance, capabilityInstData); + Either<List<GraphRelation>, TitanOperationStatus> instanceProperties = addPropertiesToCapabilityInstance(properties, capabiltyInstance, capabilityInstData); if (instanceProperties.isRight()) { TitanOperationStatus status = instanceProperties.right().value(); - log.debug("Failed to add properties to capability instance. status is " + status); + log.debug("Failed to add properties to capability instance. status is {}", status); return status; } - Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType = associateCapabilityInstToCapabilityType( - capabilityInstData, capabilityTypeData); + Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType = associateCapabilityInstToCapabilityType(capabilityInstData, capabilityTypeData); if (associateCapabilityInstToCapabilityType.isRight()) { TitanOperationStatus status = associateCapabilityInstToCapabilityType.right().value(); - log.error("Failed to associate capability instance " + capabilityInstData - + " to capability type node " + capabilityTypeData + " in graph. status is " + status); + log.error("Failed to associate capability instance {} to capability type node {} in graph. status is {}", capabilityInstData, capabilityTypeData, status); return status; } - Either<GraphRelation, TitanOperationStatus> associateCapabilityInst = associateRequirementImplToCapabilityInst( - reqImplData, capabilityInstData, capabilityName); + Either<GraphRelation, TitanOperationStatus> associateCapabilityInst = associateRequirementImplToCapabilityInst(reqImplData, capabilityInstData, capabilityName); if (associateCapabilityInst.isRight()) { TitanOperationStatus status = associateCapabilityInst.right().value(); - log.error("Failed to associate requirement impl " + reqImplData + " to capability instance node " - + capabilityInstData + " of capability " + capabilityName + ") in graph. status is " - + status); + log.error("Failed to associate requirement impl {} to capability instance node {} of capability {}) in graph. status is {}", reqImplData, capabilityInstData, capabilityName, status); return status; } @@ -1102,16 +961,13 @@ public class RequirementOperation implements IRequirementOperation { return result; } - private Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfCapability( - CapabilityTypeData capabilityTypeData) { + private Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfCapability(CapabilityTypeData capabilityTypeData) { String capabilityTypeUid = capabilityTypeData.getUniqueId(); - Either<CapabilityTypeDefinition, TitanOperationStatus> capabilityTypeResult = capabilityTypeOperation - .getCapabilityTypeByUid(capabilityTypeUid); + Either<CapabilityTypeDefinition, TitanOperationStatus> capabilityTypeResult = capabilityTypeOperation.getCapabilityTypeByUid(capabilityTypeUid); if (capabilityTypeResult.isRight()) { - log.error("Failed to find capabilityType " + capabilityTypeUid + " in the graph. status is " - + capabilityTypeResult); + log.error("Failed to find capabilityType {} in the graph. status is {}", capabilityTypeUid, capabilityTypeResult); return Either.right(capabilityTypeResult.right().value()); } @@ -1121,44 +977,37 @@ public class RequirementOperation implements IRequirementOperation { return Either.left(properties); } - private Either<String, TitanOperationStatus> findCapabilityName(CapabilityData capabilityData, - GraphEdge graphEdge) { + private Either<String, TitanOperationStatus> findCapabilityName(CapabilityData capabilityData, GraphEdge graphEdge) { Map<String, Object> edgeProps = graphEdge.getProperties(); String capabilityName = (String) edgeProps.get(GraphPropertiesDictionary.NAME.getProperty()); if (capabilityName == null) { - log.debug("Cannot find the name of the capability associated to node " + capabilityData); + log.debug("Cannot find the name of the capability associated to node {}", capabilityData); return Either.right(TitanOperationStatus.NOT_FOUND); } return Either.left(capabilityName); } - private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType( - CapabilityInstData capabilityInstData, CapabilityTypeData capabilityTypeData) { + private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType(CapabilityInstData capabilityInstData, CapabilityTypeData capabilityTypeData) { - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, - capabilityTypeData, GraphEdgeLabels.INSTANCE_OF, null); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, capabilityTypeData, GraphEdgeLabels.INSTANCE_OF, null); return createRelation; } /** - * add property value node with default value of override value and - * associate it to the capability instance node + * add property value node with default value of override value and associate it to the capability instance node * * @param properties * - properties definition. old also default value * @param capabilityInstance * - hold also properties new value(if exists) * @param capabilityInstData - * - the graph node which we associate the properties value node - * to. + * - the graph node which we associate the properties value node to. * @return */ - private Either<List<GraphRelation>, TitanOperationStatus> addPropertiesToCapabilityInstance( - Map<String, PropertyDefinition> properties, CapabiltyInstance capabilityInstance, - CapabilityInstData capabilityInstData) { + private Either<List<GraphRelation>, TitanOperationStatus> addPropertiesToCapabilityInstance(Map<String, PropertyDefinition> properties, CapabiltyInstance capabilityInstance, CapabilityInstData capabilityInstData) { List<GraphRelation> relationsResult = new ArrayList<GraphRelation>(); @@ -1171,31 +1020,24 @@ public class RequirementOperation implements IRequirementOperation { String propertyValue = setPropertyValue(capabilityInstance, paramName, propertyDefinition); - PropertyValueData propertyValueData = buildPropertyValueData(capabilityInstData.getUniqueId(), - paramName, propertyValue); + PropertyValueData propertyValueData = buildPropertyValueData(capabilityInstData.getUniqueId(), paramName, propertyValue); - log.debug("Before creating property value data node " + propertyValueData + " in graph."); - Either<PropertyValueData, TitanOperationStatus> createNode = titanGenericDao - .createNode(propertyValueData, PropertyValueData.class); - log.debug("Before creating property value data node " + propertyValueData + " in graph. status is " - + createNode); + log.debug("Before creating property value data node {} in graph.", propertyValueData); + Either<PropertyValueData, TitanOperationStatus> createNode = titanGenericDao.createNode(propertyValueData, PropertyValueData.class); + log.debug("Before creating property value data node {} in graph. status is {}", propertyValueData, createNode); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - log.error("Failed to create property value node in graph " + propertyValueData + ". status is " - + status); + log.error("Failed to create property value node in graph {}. status is {}", propertyValueData, status); return Either.right(status); } PropertyValueData propertyValueDataCreated = createNode.left().value(); - Either<GraphRelation, TitanOperationStatus> createRelation = associateCapabilityInstToPropertyValue( - capabilityInstData, paramName, propertyValueDataCreated); + Either<GraphRelation, TitanOperationStatus> createRelation = associateCapabilityInstToPropertyValue(capabilityInstData, paramName, propertyValueDataCreated); if (createRelation.isRight()) { TitanOperationStatus status = createNode.right().value(); - log.error("Failed to create relation between capability instance " - + capabilityInstData.getUniqueId() + " to property value " - + propertyValueDataCreated.getUniqueId() + " in graph. status is " + status); + log.error("Failed to create relation between capability instance {} to property value {} in graph. status is {}", capabilityInstData.getUniqueId(), propertyValueDataCreated.getUniqueId(), status); return Either.right(status); } @@ -1207,23 +1049,18 @@ public class RequirementOperation implements IRequirementOperation { return Either.left(relationsResult); } - private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToPropertyValue( - CapabilityInstData capabilityInstData, String paramName, PropertyValueData propertyValueDataCreated) { + private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToPropertyValue(CapabilityInstData capabilityInstData, String paramName, PropertyValueData propertyValueDataCreated) { Map<String, Object> edgeProps = new HashMap<String, Object>(); edgeProps.put(GraphPropertiesDictionary.NAME.getProperty(), paramName); - log.debug("Begin creating relation between capability instance " + capabilityInstData + " to property value " - + propertyValueDataCreated + " in graph."); - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, - propertyValueDataCreated, GraphEdgeLabels.PROPERTY_VALUE, edgeProps); - log.debug("After creating relation between capability instance " + capabilityInstData + " to property value " - + propertyValueDataCreated + " in graph. status is " + createRelation); + log.debug("Begin creating relation between capability instance {} to property value {} in graph.", capabilityInstData, propertyValueDataCreated); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, propertyValueDataCreated, GraphEdgeLabels.PROPERTY_VALUE, edgeProps); + log.debug("After creating relation between capability instance {} to property value {} in graph. status is {}", capabilityInstData, propertyValueDataCreated, createRelation); return createRelation; } - private String setPropertyValue(CapabiltyInstance capabilityInstance, String paramName, - PropertyDefinition propertyDefinition) { + private String setPropertyValue(CapabiltyInstance capabilityInstance, String paramName, PropertyDefinition propertyDefinition) { String propertyValue = NA; if (propertyDefinition.getDefaultValue() != null) { propertyValue = propertyDefinition.getDefaultValue(); @@ -1245,8 +1082,7 @@ public class RequirementOperation implements IRequirementOperation { return paramName + EQUAL_SIGN + paramValue; } - private PropertyValueData buildPropertyValueData(String capabilityInstDataUid, String paramName, - String propertyValue) { + private PropertyValueData buildPropertyValueData(String capabilityInstDataUid, String paramName, String propertyValue) { PropertyValueData propertyValueData = new PropertyValueData(); propertyValueData.setValue(propertyValue); String uid = UniqueIdBuilder.buildPropertyValueUniqueId(capabilityInstDataUid, paramName); @@ -1257,8 +1093,7 @@ public class RequirementOperation implements IRequirementOperation { return propertyValueData; } - private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode(String capabilityName, - RequirementImplData reqImplData) { + private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode(String capabilityName, RequirementImplData reqImplData) { CapabilityInstData capabilityInstData = new CapabilityInstData(); String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(reqImplData.getUniqueId(), capabilityName); @@ -1269,11 +1104,9 @@ public class RequirementOperation implements IRequirementOperation { capabilityInstData.setCreationTime(creationDate); capabilityInstData.setModificationTime(creationDate); - log.debug("Before creating capability instance node in graph " + capabilityInstData); - Either<CapabilityInstData, TitanOperationStatus> createNode = titanGenericDao.createNode(capabilityInstData, - CapabilityInstData.class); - log.debug( - "After creating capability instance node in graph " + capabilityInstData + ". status is " + createNode); + log.debug("Before creating capability instance node in graph {}", capabilityInstData); + Either<CapabilityInstData, TitanOperationStatus> createNode = titanGenericDao.createNode(capabilityInstData, CapabilityInstData.class); + log.debug("After creating capability instance node in graph {}. status is {}", capabilityInstData, createNode); return createNode; } @@ -1283,14 +1116,12 @@ public class RequirementOperation implements IRequirementOperation { } - private void checkImplNodeContainsReqCapability(String reqCapability, - List<ImmutablePair<CapabilityData, GraphEdge>> capabilitiesValue) { + private void checkImplNodeContainsReqCapability(String reqCapability, List<ImmutablePair<CapabilityData, GraphEdge>> capabilitiesValue) { // TODO Auto-generated method stub } - public Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly( - String resourceId, boolean inTransaction) { + public Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly(String resourceId, boolean inTransaction) { Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> result = null; @@ -1298,11 +1129,10 @@ public class RequirementOperation implements IRequirementOperation { Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>(); Set<String> caseInsensitiveReqNames = new HashSet<>(); - TitanOperationStatus status = findAllRequirementsNonRecursive(resourceId, requirements, - caseInsensitiveReqNames); + TitanOperationStatus status = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames); if (status != TitanOperationStatus.OK) { - log.error("Failed to get all requirements of resource " + resourceId + ". status is " + status); + log.error("Failed to get all requirements of resource {}. status is {}", resourceId, status); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } else { // TODO handle requirementImpl @@ -1332,7 +1162,7 @@ public class RequirementOperation implements IRequirementOperation { TitanOperationStatus status = findAllRequirementsRecursively(resourceId, requirements, caseInsensitiveReqNames); if (status != TitanOperationStatus.OK) { - log.error("Failed to get all requirements of resource " + resourceId + ". status is " + status); + log.error("Failed to get all requirements of resource {}. status is {}", resourceId, status); return Either.right(status); } else { log.debug("The requirements returned for resource {} are {}", resourceId, requirements); @@ -1340,17 +1170,14 @@ public class RequirementOperation implements IRequirementOperation { if (requirements != null) { for (Entry<String, RequirementDefinition> entry : requirements.entrySet()) { String reqName = entry.getKey(); - Either<RequirementImplDef, TitanOperationStatus> reqImplRes = this - .getRequirementImplOfResource(reqName, resourceId); + Either<RequirementImplDef, TitanOperationStatus> reqImplRes = this.getRequirementImplOfResource(reqName, resourceId); if (reqImplRes.isRight()) { TitanOperationStatus reqImplResStatus = reqImplRes.right().value(); if (reqImplResStatus == TitanOperationStatus.NOT_FOUND) { - log.debug("Cannot find implementation of requirement {} under resource {}", reqName, - resourceId); + log.debug("Cannot find implementation of requirement {} under resource {}", reqName, resourceId); } else { - log.error("Cannot find implementation of requirement {} under resource {}", reqName, - resourceId); + log.error("Cannot find implementation of requirement {} under resource {}", reqName, resourceId); return Either.right(reqImplResStatus); } } else { @@ -1361,8 +1188,7 @@ public class RequirementOperation implements IRequirementOperation { } } } - log.debug("The requirements returned for resource {} after fetching requirement impl are {}", resourceId, - requirements); + log.debug("The requirements returned for resource {} after fetching requirement impl are {}", resourceId, requirements); result = Either.left(requirements); @@ -1372,15 +1198,13 @@ public class RequirementOperation implements IRequirementOperation { } @Override - public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements( - String resourceId, boolean inTransaction) { + public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId, boolean inTransaction) { Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = null; try { - Either<Map<String, RequirementDefinition>, TitanOperationStatus> internalResult = getResourceRequirements( - resourceId); + Either<Map<String, RequirementDefinition>, TitanOperationStatus> internalResult = getResourceRequirements(resourceId); if (internalResult.isRight()) { TitanOperationStatus status = internalResult.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { @@ -1394,67 +1218,8 @@ public class RequirementOperation implements IRequirementOperation { result = Either.left(value); return result; - - // Map<String, RequirementDefinition> requirements = new - // HashMap<String, RequirementDefinition>(); - // TitanOperationStatus status = findAllRequirementsRecursively( - // resourceId, requirements); - // if (status != TitanOperationStatus.OK) { - // log.error("Failed to get all requirements of resource " - // + resourceId + ". status is " + status); - // return Either.right(TitanStatusConverter - // .convertTitanStatusToStorageStatus(status)); - // } else { - // log.debug("The requirements returned for resource " - // + resourceId + " are " + requirements); - // - // if (requirements != null) { - // for (Entry<String, RequirementDefinition> entry : requirements - // .entrySet()) { - // String reqName = entry.getKey(); - // Either<RequirementImplDef, TitanOperationStatus> reqImplRes = - // this - // .getRequirementImplOfResource(reqName, - // resourceId); - // if (reqImplRes.isRight()) { - // - // TitanOperationStatus reqImplResStatus = reqImplRes - // .right().value(); - // if (reqImplResStatus == TitanOperationStatus.NOT_FOUND) { - // log.warn("Cannot find implementation of requirement " - // + reqName - // + " under resource " - // + resourceId); - // } else { - // log.error("Cannot find implementation of requirement " - // + reqName - // + " under resource " - // + resourceId); - // return Either - // .right(TitanStatusConverter - // .convertTitanStatusToStorageStatus(reqImplResStatus)); - // } - // } else { - // RequirementDefinition requirementDefinition = entry - // .getValue(); - // RequirementImplDef requirementImplDef = reqImplRes - // .left().value(); - // requirementDefinition - // .setRequirementImpl(requirementImplDef); - // } - // } - // } - // log.debug("The requirements returned for resource " - // + resourceId + " after fetching requirement impl are " - // + requirements); - // - // result = Either.left(requirements); - // - // return result; - // } - } finally { - if (false == inTransaction) { + if (!inTransaction) { if (result == null || result.isRight()) { log.error("Going to execute rollback on graph."); titanGenericDao.rollback(); @@ -1467,26 +1232,21 @@ public class RequirementOperation implements IRequirementOperation { } - public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements( - String resourceId) { + public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId) { return getAllResourceRequirements(resourceId, false); } - public TitanOperationStatus findAllRequirementsRecursively(String resourceId, - Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) { + public TitanOperationStatus findAllRequirementsRecursively(String resourceId, Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) { - TitanOperationStatus nonRecursiveResult = findAllRequirementsNonRecursive(resourceId, requirements, - caseInsensitiveReqNames); - if (!nonRecursiveResult.equals(TitanOperationStatus.OK) - && !nonRecursiveResult.equals(TitanOperationStatus.NOT_FOUND)) { + TitanOperationStatus nonRecursiveResult = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames); + if (!nonRecursiveResult.equals(TitanOperationStatus.OK) && !nonRecursiveResult.equals(TitanOperationStatus.NOT_FOUND)) { return nonRecursiveResult; } - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao - .getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, - GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, + ResourceMetadataData.class); if (parentNodes.isRight()) { TitanOperationStatus parentNodesStatus = parentNodes.right().value(); @@ -1494,15 +1254,13 @@ public class RequirementOperation implements IRequirementOperation { log.debug("Finish to lookup for parnet requirements"); return TitanOperationStatus.OK; } else { - log.error("Failed to find parent requirements of resource {} . status is {}", resourceId, - parentNodesStatus); + log.error("Failed to find parent requirements of resource {} . status is {}", resourceId, parentNodesStatus); return parentNodesStatus; } } ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); - TitanOperationStatus addParentReqStatus = findAllRequirementsRecursively(parentUniqueId, requirements, - caseInsensitiveReqNames); + TitanOperationStatus addParentReqStatus = findAllRequirementsRecursively(parentUniqueId, requirements, caseInsensitiveReqNames); if (addParentReqStatus != TitanOperationStatus.OK) { log.error("Failed to fetch all requirements of resource {}", parentUniqueId); @@ -1512,11 +1270,9 @@ public class RequirementOperation implements IRequirementOperation { return TitanOperationStatus.OK; } - private TitanOperationStatus findAllRequirementsNonRecursive(String resourceId, - Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) { - Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> requirementNodes = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, - GraphEdgeLabels.REQUIREMENT, NodeTypeEnum.Requirement, RequirementData.class); + private TitanOperationStatus findAllRequirementsNonRecursive(String resourceId, Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) { + Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> requirementNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.REQUIREMENT, + NodeTypeEnum.Requirement, RequirementData.class); if (requirementNodes.isRight()) { TitanOperationStatus status = requirementNodes.right().value(); @@ -1533,18 +1289,17 @@ public class RequirementOperation implements IRequirementOperation { if (edgeProps != null) { reqName = (String) edgeProps.get(GraphPropertiesDictionary.NAME.getProperty()); if (reqName == null) { - log.error("The requirement name is missing on the edge of requirement " + reqUniqueId); + log.error("The requirement name is missing on the edge of requirement {}", reqUniqueId); return TitanOperationStatus.INVALID_ELEMENT; } } else { - log.error("The requirement name is missing on the edge of requirement " + reqUniqueId); + log.error("The requirement name is missing on the edge of requirement {}", reqUniqueId); return TitanOperationStatus.INVALID_ELEMENT; } - Either<RequirementDefinition, TitanOperationStatus> requirementDefRes = this - .getRequirement(reqUniqueId); + Either<RequirementDefinition, TitanOperationStatus> requirementDefRes = this.getRequirement(reqUniqueId); if (requirementDefRes.isRight()) { TitanOperationStatus status = requirementDefRes.right().value(); - log.error("Failed to get requirement properties of requirement " + reqUniqueId); + log.error("Failed to get requirement properties of requirement {}", reqUniqueId); return status; } @@ -1552,9 +1307,7 @@ public class RequirementOperation implements IRequirementOperation { requirementDefinition.setName(reqName); // US631462 if (caseInsensitiveReqNames.contains(reqName.toLowerCase())) { - log.debug( - "The requirement {} was already defined in derived resource (case insensitive). Ignore {} from resource {}", - reqName, reqName, resourceId); + log.debug("The requirement {} was already defined in derived resource (case insensitive). Ignore {} from resource {}", reqName, reqName, resourceId); } else { requirements.put(reqName, requirementDefinition); caseInsensitiveReqNames.add(reqName.toLowerCase()); @@ -1567,12 +1320,10 @@ public class RequirementOperation implements IRequirementOperation { } public StorageOperationStatus deleteRequirementFromGraph(String requirementId) { - log.debug("Before deleting requirement from graph " + requirementId); - Either<RequirementData, TitanOperationStatus> deleteNodeStatus = titanGenericDao.deleteNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementId, RequirementData.class); + log.debug("Before deleting requirement from graph {}", requirementId); + Either<RequirementData, TitanOperationStatus> deleteNodeStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementId, RequirementData.class); if (deleteNodeStatus.isRight()) { - log.error("failed to delete requirement with id {}. status={}", requirementId, - deleteNodeStatus.right().value()); + log.error("failed to delete requirement with id {}. status={}", requirementId, deleteNodeStatus.right().value()); return DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNodeStatus.right().value()); } return StorageOperationStatus.OK; @@ -1584,18 +1335,16 @@ public class RequirementOperation implements IRequirementOperation { } - public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, - boolean inTransaction) { + public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, boolean inTransaction) { Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = null; try { - Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRes = deleteAllRequirementsOfResource( - resourceId); + Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRes = deleteAllRequirementsOfResource(resourceId); if (deleteAllRes.isRight()) { TitanOperationStatus status = deleteAllRes.right().value(); if (status != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to delete requirements of resource " + resourceId + ". status is " + status); + log.error("Failed to delete requirements of resource {}. status is {}", resourceId, status); } result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -1620,13 +1369,11 @@ public class RequirementOperation implements IRequirementOperation { } - public Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRequirementsOfResource( - String resourceId) { + public Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRequirementsOfResource(String resourceId) { Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>(); Set<String> caseInsensitiveReqNames = new HashSet<>(); - TitanOperationStatus requirementsRes = findAllRequirementsNonRecursive(resourceId, requirements, - caseInsensitiveReqNames); + TitanOperationStatus requirementsRes = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames); if (requirementsRes != TitanOperationStatus.OK) { return Either.right(requirementsRes); } @@ -1640,11 +1387,10 @@ public class RequirementOperation implements IRequirementOperation { String requirementUid = requirementDefinition.getUniqueId(); - Either<RequirementData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementUid, RequirementData.class); + Either<RequirementData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementUid, RequirementData.class); if (deleteNodeRes.isRight()) { TitanOperationStatus status = deleteNodeRes.right().value(); - log.error("Failed to delete requirement " + requirementUid + " of resource " + resourceId); + log.error("Failed to delete requirement {} of resource ", requirementUid, resourceId); return Either.right(status); } } @@ -1653,8 +1399,7 @@ public class RequirementOperation implements IRequirementOperation { } - public Map<String, List<RequirementDefinition>> convertRequirementMap( - Map<String, RequirementDefinition> requirementMap, String ownerId, String ownerName) { + public Map<String, List<RequirementDefinition>> convertRequirementMap(Map<String, RequirementDefinition> requirementMap, String ownerId, String ownerName) { Map<String, List<RequirementDefinition>> typeToRequirementMap = new HashMap<String, List<RequirementDefinition>>(); requirementMap.forEach((reqName, requirement) -> { diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java index 22c693d8b3..4dce650f18 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java @@ -21,6 +21,7 @@ package org.openecomp.sdc.be.model.operations.impl; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -33,6 +34,8 @@ import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.openecomp.sdc.be.config.BeEcompErrorManager; @@ -79,14 +82,19 @@ import org.openecomp.sdc.be.model.operations.api.IAttributeOperation; import org.openecomp.sdc.be.model.operations.api.IElementOperation; import org.openecomp.sdc.be.model.operations.api.IResourceOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; +import org.openecomp.sdc.be.model.operations.migration.MigrationErrorInformer; import org.openecomp.sdc.be.model.operations.utils.GraphDeleteUtil; import org.openecomp.sdc.be.resources.data.ComponentMetadataData; +import org.openecomp.sdc.be.resources.data.PropertyData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.openecomp.sdc.be.resources.data.TagData; import org.openecomp.sdc.be.resources.data.UniqueIdData; import org.openecomp.sdc.be.resources.data.UserData; import org.openecomp.sdc.be.resources.data.category.CategoryData; import org.openecomp.sdc.be.resources.data.category.SubCategoryData; +import org.openecomp.sdc.common.api.ArtifactTypeEnum; +import org.openecomp.sdc.common.datastructure.Wrapper; +import org.openecomp.sdc.common.util.PairUtils; import org.openecomp.sdc.common.util.ValidationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -97,9 +105,11 @@ import com.google.gson.GsonBuilder; import com.thinkaurelius.titan.core.TitanGraph; import com.thinkaurelius.titan.core.TitanVertex; +import fj.Function; import fj.data.Either; @org.springframework.stereotype.Component("resource-operation") +@Deprecated public class ResourceOperation extends ComponentOperation implements IResourceOperation { public ResourceOperation() { @@ -139,8 +149,8 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp private GraphDeleteUtil graphDeleteUtil = new GraphDeleteUtil(); - private static Pattern uuidNewVersion = Pattern.compile("^\\d{1,}.1"); - private static Pattern uuidNormativeNewVersion = Pattern.compile("^\\d{1,}.0"); + public static Pattern uuidNewVersion = Pattern.compile("^\\d{1,}.1"); + public static Pattern uuidNormativeNewVersion = Pattern.compile("^\\d{1,}.0"); @Override public Either<Resource, StorageOperationStatus> createResource(Resource resource) { @@ -169,19 +179,18 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user " + userId + " in the graph. status is " + status); + log.error("Cannot find user {} in the graph. status is {}", userId, status); return sendError(status, StorageOperationStatus.USER_NOT_FOUND); } TitanVertex creatorVertex = findUser.left().value(); TitanVertex updaterVertex = creatorVertex; - String updaterUserId = resource.getLastUpdaterUserId(); if (updaterUserId != null && !updaterUserId.equals(userId)) { findUser = findUserVertex(updaterUserId); if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user " + userId + " in the graph. status is " + status); + log.error("Cannot find user {} in the graph. status is {}", userId, status); return sendError(status, StorageOperationStatus.USER_NOT_FOUND); } else { updaterVertex = findUser.left().value(); @@ -232,8 +241,8 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp result = Either.right(associateCategory); return result; } - - TitanOperationStatus associateProperties = associatePropertiesToResource(metadataVertex, resourceUniqueId, resource.getProperties()); + + TitanOperationStatus associateProperties = associatePropertiesToResource(metadataVertex, resourceUniqueId, resource.getProperties(), derivedResources); if (associateProperties != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateProperties)); return result; @@ -302,13 +311,13 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp result = this.getResource(resourceUniqueId, true); if (result.isRight()) { - log.error("Cannot get full resource from the graph. status is " + result.right().value()); + log.error("Cannot get full resource from the graph. status is {}", result.right().value()); return Either.right(result.right().value()); } if (log.isDebugEnabled()) { String json = prettyJson.toJson(result.left().value()); - log.debug("Resource retrieved is " + json); + log.debug("Resource retrieved is {}", json); } return result; @@ -335,7 +344,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(categoryName, NodeTypeEnum.ResourceNewCategory, CategoryData.class); if (categoryResult.isRight()) { StorageOperationStatus status = categoryResult.right().value(); - log.error("Cannot find category " + categoryName + " in the graph. status is " + status); + log.error("Cannot find category {} in the graph. status is {}", categoryName, status); return categoryResult.right().value(); } categoryData = categoryResult.left().value(); @@ -343,16 +352,16 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceNewCategory), (String) categoryData.getUniqueId(), GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ResourceSubcategory, SubCategoryData.class); if (childrenNodes.isRight()) { - log.debug("Faield to fetch sub categories for resource category" + categoryData.getCategoryDataDefinition().getName()); + log.debug("Faield to fetch sub categories for resource category {}", categoryData.getCategoryDataDefinition().getName()); return DaoStatusConverter.convertTitanStatusToStorageStatus(childrenNodes.right().value()); } for (ImmutablePair<SubCategoryData, GraphEdge> pair : childrenNodes.left().value()) { SubCategoryData subcategoryData = pair.left; if (subcategoryData.getSubCategoryDataDefinition().getName().equals(subcategoryName)) { Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(resourceData, subcategoryData, GraphEdgeLabels.CATEGORY, null); - log.debug("After associating resource " + resourceData.getUniqueId() + " to subcategory " + subcategoryData + ". Edge type is " + GraphEdgeLabels.CATEGORY); + log.debug("After associating resource {} to subcategory {}. Edge type is {}", resourceData.getUniqueId(), subcategoryData, GraphEdgeLabels.CATEGORY); if (result.isRight()) { - log.error("Faield to associate resource " + resourceData.getUniqueId() + " to category " + categoryData + ". Edge type is " + GraphEdgeLabels.CATEGORY); + log.error("Faield to associate resource {} to category {}. Edge type is {}", resourceData.getUniqueId(), categoryData, GraphEdgeLabels.CATEGORY); return DaoStatusConverter.convertTitanStatusToStorageStatus(result.right().value()); } @@ -492,15 +501,34 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp StorageOperationStatus status = StorageOperationStatus.OK; if (artifacts != null) { + Map<ArtifactDefinition, ArtifactDefinition> heatEnvMap = new HashMap<ArtifactDefinition, ArtifactDefinition>(); for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) { ArtifactDefinition artifactDefinition = entry.getValue(); - status = artifactOperation.addArifactToComponent(artifactDefinition, resourceId, NodeTypeEnum.Resource, false, metadataVertex); + + ArtifactTypeEnum artifactType = ArtifactTypeEnum.findType(artifactDefinition.getArtifactType()); + if(artifactType != ArtifactTypeEnum.HEAT_ENV){ + status = artifactOperation.addArifactToComponent(artifactDefinition, resourceId, NodeTypeEnum.Resource, false, metadataVertex); + }else{ + Optional<ArtifactDefinition> op = artifacts.values().stream().filter(p -> p.getUniqueId().equals(artifactDefinition.getGeneratedFromId())).findAny(); + if(op.isPresent()){ + heatEnvMap.put(artifactDefinition, op.get()); + } + + + } if (!status.equals(StorageOperationStatus.OK)) { return status; } } + for(Entry<ArtifactDefinition, ArtifactDefinition> entry : heatEnvMap.entrySet()){ + Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact = artifactOperation.addHeatEnvArtifact(entry.getKey(), entry.getValue(), resourceId, NodeTypeEnum.Resource, false); + if (addHeatEnvArtifact.isRight()) { + log.debug("failed to create heat env artifact on resource instance"); + return addHeatEnvArtifact.right().value(); + } + } } return status; @@ -539,7 +567,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } } - private TitanOperationStatus associatePropertiesToResource(TitanVertex metadatVertex, String resourceId, List<PropertyDefinition> properties) { + private TitanOperationStatus associatePropertiesToResource(TitanVertex metadatVertex, String resourceId, List<PropertyDefinition> properties, List<ResourceMetadataData> derivedResources) { Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll(); if (allDataTypes.isRight()) { @@ -547,21 +575,82 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp log.debug("Cannot find any data type. Status is {}.", status); return status; } - + Map<String, PropertyDefinition> convertedProperties = new HashMap<>(); if (properties != null) { for (PropertyDefinition propertyDefinition : properties) { convertedProperties.put(propertyDefinition.getName(), propertyDefinition); } - TitanOperationStatus operationStatus = propertyOperation.addPropertiesToGraph(metadatVertex, convertedProperties, allDataTypes.left().value(), resourceId); - return operationStatus; + + Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFromRes = getPropertiesOfAllDerivedFrom(derivedResources); + + if(getPropertiesOfAllDerivedFromRes.isRight()){ + TitanOperationStatus status = getPropertiesOfAllDerivedFromRes.right().value(); + log.debug("Cannot fetch properties of all derived from resources. Status is {}.", status); + return status; + } + + Map<String, PropertyDefinition> allDerivedFromProperties = getPropertiesOfAllDerivedFromRes.left().value(); + + TitanOperationStatus validatePropertyNamesUniqunessStatus = validatePropertyNamesUniquness(properties, allDerivedFromProperties); + + if(validatePropertyNamesUniqunessStatus != TitanOperationStatus.OK){ + return validatePropertyNamesUniqunessStatus; + } + + return propertyOperation.addPropertiesToGraph(metadatVertex, convertedProperties, allDataTypes.left().value(), resourceId); } return TitanOperationStatus.OK; } + private TitanOperationStatus validatePropertyNamesUniquness(List<PropertyDefinition> properties, Map<String, PropertyDefinition> allDerivedFromProperties) { + + TitanOperationStatus result = TitanOperationStatus.OK; + Optional<PropertyDefinition> propertyOptional= properties.stream() + //filters out properties with the same name and different type + .filter(prop -> allDerivedFromProperties.containsKey(prop.getName()) && !prop.getType().equals(allDerivedFromProperties.get(prop.getName()).getType())) + //Searches for any matching value + .findAny(); + if(propertyOptional.isPresent()){ + log.error("Property with name {} and type {} already exists in derived from resource. ", propertyOptional.get().getName(), allDerivedFromProperties.get( propertyOptional.get().getName()).getType()); + result = TitanOperationStatus.ALREADY_EXIST; + } + return result; + } + + private Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFrom(List<ResourceMetadataData> derivedResources) { + Map<String, PropertyDefinition> allDerivedProperties = new HashMap<>(); + Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFromRes = Either.left(allDerivedProperties); + String currResourceName = null ; + if(!CollectionUtils.isEmpty(derivedResources)){ + try{ + for(int i = derivedResources.size() - 1; i >= 0 ; --i){ + ResourceMetadataData currDerivedResource = derivedResources.get(i); + currResourceName = currDerivedResource.getMetadataDataDefinition().getName(); + Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> res = + titanGenericDao.getChildrenNodes( currDerivedResource.getUniqueIdKey(), (String)currDerivedResource.getUniqueId(), GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property, PropertyData.class); + if(res.isRight() && res.right().value() != TitanOperationStatus.NOT_FOUND){ + getPropertiesOfAllDerivedFromRes = Either.right(res.right().value()); + break; + }else if(res.isLeft()){ + allDerivedProperties.putAll(res.left().value().stream() + //Maps PropertyData converted to PropertyDefinition + .map(pair-> propertyOperation.convertPropertyDataToPropertyDefinition(pair.getLeft(), (String)pair.getRight().getProperties().get(GraphPropertiesDictionary.NAME.getProperty()), (String)currDerivedResource.getUniqueId())) + //and collects it to a map + .collect(Collectors.toMap(entry->entry.getName(), entry->entry))); + } + } + } + catch(Exception e){ + log.error("Exception occured during fetch properties of resource {}. ", currResourceName); + } + } + return getPropertiesOfAllDerivedFromRes; + } + private TitanOperationStatus associateAttributesToResource(TitanVertex metadataVertex, List<AttributeDefinition> attributes, String resourceId) { TitanOperationStatus operationStatus = TitanOperationStatus.OK; @@ -605,7 +694,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp // TODO Evg : need to change too.. if (derivedResources != null) { for (ResourceMetadataData derivedResource : derivedResources) { - log.debug("After associating resource " + resourceData.getUniqueId() + " to parent resource " + derivedResource.getUniqueId() + ". Edge type is " + GraphEdgeLabels.DERIVED_FROM); + log.debug("After associating resource {} to parent resource {}. Edge type is {}", resourceData.getUniqueId(), derivedResource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM); Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(resourceData, derivedResource, GraphEdgeLabels.DERIVED_FROM, null); if (createRelationResult.isRight()) { log.error("Failed to associate resource {} to derived ", resourceData.getUniqueId()); @@ -636,26 +725,27 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp List<ResourceMetadataData> resources = null; if (getParentResources.isRight()) { /* - * log.debug( "Cannot find parent resource by tosca resource name" + parentResource + " in the graph. Try to find by name"); Map<String, Object> propertiesWithResourceNameToMatch = new HashMap<String, Object>(); + * log.debug( "Cannot find parent resource by tosca resource name {} in the graph. Try to find by name", parentResource); + * Map<String, Object> propertiesWithResourceNameToMatch = new HashMap<String, Object>(); * propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name()); propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.NAME.getProperty(), parentResource); * propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty( ), true); * * getParentResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesWithResourceNameToMatch, ResourceData.class); if (getParentResources.isRight()) { log.error( * "Cannot find parent resource by tosca resource name" + parentResource + " in the graph."); return Either.right(StorageOperationStatus. PARENT_RESOURCE_NOT_FOUND); }else{ resources = getParentResources.left().value(); - * + * hea * } */ - log.error("Cannot find parent resource by tosca resource name" + parentResource + " in the graph."); + log.error("Cannot find parent resource by tosca resource name {} in the graph.", parentResource); return Either.right(StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND); } else { resources = getParentResources.left().value(); if (resources == null || resources.size() == 0) { - log.error("Cannot find parent resource by tosc name" + parentResource + " in the graph. resources size is empty"); + log.error("Cannot find parent resource by tosc name {} in the graph. resources size is empty", parentResource); return Either.right(StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND); } else { if (resources.size() > 1) { - log.error("Multiple parent resources called " + parentResource + " found in the graph."); + log.error("Multiple parent resources called {} found in the graph.", parentResource); return Either.right(StorageOperationStatus.MULTIPLE_PARENT_RESOURCE_FOUND); } ResourceMetadataData parentResourceData = resources.get(0); @@ -714,133 +804,6 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return getResource(uniqueId, componentParametersView, inTransaction); } - // public Either<Resource, StorageOperationStatus> getResource(String - // uniqueId, boolean inTransaction) { - // - // Resource resource = null; - // try { - // - // NodeTypeEnum resourceNodeType = NodeTypeEnum.Resource; - // NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource; - // - // Either<ResourceMetadataData, StorageOperationStatus> - // componentByLabelAndId = getComponentByLabelAndId(uniqueId, - // resourceNodeType, ResourceMetadataData.class); - // if (componentByLabelAndId.isRight()) { - // return Either.right(componentByLabelAndId.right().value()); - // } - // ResourceMetadataData resourceData = componentByLabelAndId.left().value(); - // resource = convertResourceDataToResource(resourceData); - // - // TitanOperationStatus status = setResourceCreatorFromGraph(resource, - // uniqueId); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourceLastModifierFromGraph(resource, uniqueId); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourcePropertiesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourceAttributesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourceDerivedFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setComponentCategoriesFromGraph(resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setComponentInstancesFromGraph(uniqueId, resource, - // resourceNodeType, compInstNodeType); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // - // } - // - // StorageOperationStatus setRequirementsStatus = - // setResourceRequirementsFromGraph(uniqueId, resource, true); - // if (setRequirementsStatus != StorageOperationStatus.OK) { - // log.error("Failed to set requirement of resource " + uniqueId + ". status - // is " + setRequirementsStatus); - // return Either.right(setRequirementsStatus); - // } - // - // StorageOperationStatus storageStatus = - // setResourceCapabilitiesFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // storageStatus = setArtifactFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // status = setComponentInstancesAttributesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // - // } - // - // status = setComponentInstancesPropertiesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // - // } - // - // storageStatus = setResourceInterfacesFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // storageStatus = setResourceAdditionalInformationFromGraph(uniqueId, - // resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // status = setAllVersions(resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setGroupsFromGraph(uniqueId, resource, NodeTypeEnum.Resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // } finally { - // if (false == inTransaction) { - // titanGenericDao.commit(); - // } - // } - // - // return Either.left(resource); - // } - private TitanOperationStatus setComponentInstancesAttributesFromGraph(String uniqueId, Resource component) { Map<String, List<ComponentInstanceAttribute>> resourceInstancesAttributes = new HashMap<>(); TitanOperationStatus status = TitanOperationStatus.OK; @@ -863,114 +826,6 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } - // public Either<Resource, StorageOperationStatus> getResource_tx(String - // uniqueId, boolean inTransaction) { - // - // Resource resource = null; - // try { - // - // NodeTypeEnum resourceNodeType = NodeTypeEnum.Resource; - // NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource; - // - // Either<ResourceMetadataData, StorageOperationStatus> - // componentByLabelAndId = getComponentByLabelAndId_tx(uniqueId, - // resourceNodeType, ResourceMetadataData.class); - // if (componentByLabelAndId.isRight()) { - // return Either.right(componentByLabelAndId.right().value()); - // } - // ResourceMetadataData resourceData = componentByLabelAndId.left().value(); - // resource = convertResourceDataToResource(resourceData); - // - // TitanOperationStatus status = setResourceCreatorFromGraph(resource, - // uniqueId); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourceLastModifierFromGraph(resource, uniqueId); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourcePropertiesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setResourceDerivedFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setComponentCategoriesFromGraph(resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setComponentInstancesFromGraph(uniqueId, resource, - // resourceNodeType, compInstNodeType); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // - // } - // - // StorageOperationStatus setRequirementsStatus = - // setResourceRequirementsFromGraph(uniqueId, resource, true); - // if (setRequirementsStatus != StorageOperationStatus.OK) { - // log.error("Failed to set requirement of resource " + uniqueId + ". status - // is " + setRequirementsStatus); - // return Either.right(setRequirementsStatus); - // } - // - // StorageOperationStatus storageStatus = - // setResourceCapabilitiesFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // storageStatus = setArtifactFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // status = setComponentInstancesPropertiesFromGraph(uniqueId, resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // - // } - // - // storageStatus = setResourceInterfacesFromGraph(uniqueId, resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // - // storageStatus = setResourceAdditionalInformationFromGraph(uniqueId, - // resource); - // if (storageStatus != StorageOperationStatus.OK) { - // return Either.right(storageStatus); - // } - // status = setAllVersions(resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // } finally { - // if (false == inTransaction) { - // titanGenericDao.commit(); - // } - // } - // - // return Either.left(resource); - // } - private StorageOperationStatus setResourceAdditionalInformationFromGraph(String uniqueId, Resource resource) { List<AdditionalInformationDefinition> additionalInformation = new ArrayList<>(); @@ -1019,7 +874,11 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } } else { Map<String, CapabilityDefinition> capabilities = result.left().value(); - if (capabilities == null || capabilities.isEmpty()) { + if (capabilities != null && !capabilities.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) { + log.error(String.format("VF %s has direct capabilities.!!!!!!!!!!!!!", resource.getName())); + MigrationErrorInformer.addMalformedVF(resource.getUniqueId()); + } + if (capabilities == null || capabilities.isEmpty() || resource.getResourceType().equals(ResourceTypeEnum.VF)) { Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = super.getCapabilities(resource, NodeTypeEnum.Resource, true); if (eitherCapabilities.isLeft()) { retStatus = StorageOperationStatus.OK; @@ -1086,7 +945,11 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } } else { Map<String, RequirementDefinition> requirements = result.left().value(); - if (requirements == null || requirements.isEmpty()) { + if (requirements != null && !requirements.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) { + log.error(String.format("VF %s has direct requirements.!!!!!!!!!!!!!", resource.getName())); + MigrationErrorInformer.addMalformedVF(resource.getUniqueId()); + } + if (requirements == null || requirements.isEmpty() || resource.getResourceType() == ResourceTypeEnum.VF) { Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherCapabilities = super.getRequirements(resource, NodeTypeEnum.Resource, true); if (eitherCapabilities.isLeft()) { retStatus = StorageOperationStatus.OK; @@ -1197,10 +1060,8 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp log.debug("Found parent node {}", value); UserData userData = value.getKey(); - if (log.isDebugEnabled()) { + if (log.isDebugEnabled()) log.debug("Build resource : set last modifier userId to {}", userData.getUserId()); - } - String fullName = buildFullName(userData); if (log.isDebugEnabled()) log.debug("Build resource : set last modifier full name to {}", fullName); @@ -1222,9 +1083,8 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (log.isDebugEnabled()) log.debug("Found parent node {}", value); UserData userData = value.getKey(); - if (log.isDebugEnabled()) { + if (log.isDebugEnabled()) log.debug("Build resource : set creator userId to {}", userData.getUserId()); - } String fullName = buildFullName(userData); if (log.isDebugEnabled()) log.debug("Build resource : set creator full name to {}", fullName); @@ -1310,7 +1170,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp propertiesToMatch.put(GraphPropertiesDictionary.NAME.getProperty(), resourceName); Either<List<ResourceMetadataData>, TitanOperationStatus> getParentResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class); - log.debug("result after searching for resources called " + resourceName + " is " + getParentResources); + log.debug("result after searching for resources called {} is {}", resourceName, getParentResources); if (getParentResources.isRight()) { TitanOperationStatus titanStatus = getParentResources.right().value(); if (titanStatus == TitanOperationStatus.NOT_FOUND) { @@ -1321,7 +1181,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } else { List<ResourceMetadataData> value = getParentResources.left().value(); int numberOFResources = (value == null ? 0 : value.size()); - log.debug("The number of resources returned after searching for resource called " + resourceName + " is " + numberOFResources); + log.debug("The number of resources returned after searching for resource called {} is {}", resourceName, numberOFResources); return Either.left(numberOFResources); } } @@ -1418,67 +1278,67 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (iterator != null && iterator.hasNext()) { Vertex rootVertex = iterator.next(); TitanOperationStatus deleteChildrenNodes = graphDeleteUtil.deleteChildrenNodes(rootVertex, GraphEdgeLabels.PROPERTY); - log.debug("After deleting properties nodes in the graph. status is " + deleteChildrenNodes); + log.debug("After deleting properties nodes in the graph. status is {}", deleteChildrenNodes); if (deleteChildrenNodes != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteChildrenNodes)); return result; } StorageOperationStatus removeInterfacesFromResource = removeInterfacesFromResource(resource); - log.debug("After deleting interfaces nodes in the graph. status is " + removeInterfacesFromResource); + log.debug("After deleting interfaces nodes in the graph. status is {}", removeInterfacesFromResource); if (!removeInterfacesFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeInterfacesFromResource); return result; } StorageOperationStatus removeArtifactsFromResource = removeArtifactsFromResource(resource); - log.debug("After deleting artifacts nodes in the graph. status is " + removeArtifactsFromResource); + log.debug("After deleting artifacts nodes in the graph. status is {}", removeArtifactsFromResource); if (!removeArtifactsFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeArtifactsFromResource); return result; } StorageOperationStatus removeCapabilitiesFromResource = removeCapabilitiesFromResource(resource); - log.debug("After deleting capabilities nodes in the graph. status is " + removeCapabilitiesFromResource); + log.debug("After deleting capabilities nodes in the graph. status is {}", removeCapabilitiesFromResource); if (!removeCapabilitiesFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeCapabilitiesFromResource); return result; } StorageOperationStatus removeRequirementsFromResource = removeRequirementsFromResource(resource); - log.debug("After deleting requirements nodes in the graph. status is " + removeRequirementsFromResource); + log.debug("After deleting requirements nodes in the graph. status is {}", removeRequirementsFromResource); if (!removeRequirementsFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeRequirementsFromResource); return result; } StorageOperationStatus removeRIsFromResource = removeResourceInstanceFromResource(resource); - log.debug("After deleting resource instance nodes in the graph. status is " + removeRIsFromResource); + log.debug("After deleting resource instance nodes in the graph. status is {}", removeRIsFromResource); if (!removeRIsFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeRIsFromResource); return result; } StorageOperationStatus removeAttributesFromResource = removeAttributesFromResource(resource); - log.debug("After deleting requirements nodes in the graph. status is " + removeRequirementsFromResource); + log.debug("After deleting requirements nodes in the graph. status is {}", removeRequirementsFromResource); if (removeAttributesFromResource != StorageOperationStatus.OK) { result = Either.right(removeAttributesFromResource); return result; } StorageOperationStatus removeInputsFromResource = removeInputsFromComponent(NodeTypeEnum.Resource, resource); - log.debug("After deleting requirements nodes in the graph. status is " + removeInputsFromResource); + log.debug("After deleting requirements nodes in the graph. status is {}", removeInputsFromResource); if (removeInputsFromResource != StorageOperationStatus.OK) { result = Either.right(removeInputsFromResource); return result; } StorageOperationStatus removeAdditionalInformationFromResource = super.deleteAdditionalInformation(NodeTypeEnum.Resource, resource.getUniqueId()); - log.debug("After deleting additional information node in the graph. status is " + removeAdditionalInformationFromResource); + log.debug("After deleting additional information node in the graph. status is {}", removeAdditionalInformationFromResource); if (!removeAdditionalInformationFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeAdditionalInformationFromResource); return result; } StorageOperationStatus removeGroupsFromResource = super.deleteGroups(NodeTypeEnum.Resource, resource.getUniqueId()); - log.debug("After deleting group nodes in the graph. status is " + removeGroupsFromResource); + log.debug("After deleting group nodes in the graph. status is {}", removeGroupsFromResource); if (!removeGroupsFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeGroupsFromResource); return result; @@ -1698,12 +1558,12 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp categoryRelation.setFrom(relationEndPoint); Either<GraphRelation, TitanOperationStatus> deleteOutgoingRelation = titanGenericDao.deleteOutgoingRelation(categoryRelation); if (deleteOutgoingRelation.isRight()) { - log.error("Failed to delete category from resource " + resourceData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.CATEGORY); + log.error("Failed to delete category from resource {}. Edge type is {}", resourceData.getUniqueId(), GraphEdgeLabels.CATEGORY); result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteOutgoingRelation.right().value()); return result; } - log.debug("After removing edge from graph " + deleteOutgoingRelation); + log.debug("After removing edge from graph {}", deleteOutgoingRelation); return assosiateMetadataToCategory(resource, resourceData); } @@ -1718,15 +1578,15 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp lastModifierRelation.setTo(relationEndPoint); Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao.deleteIncomingRelation(lastModifierRelation); if (deleteIncomingRelation.isRight()) { - log.error("Failed to delete user from resource " + resourceData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.LAST_MODIFIER); + log.error("Failed to delete user from resource {}. Edge type is {}", resourceData.getUniqueId(),GraphEdgeLabels.LAST_MODIFIER); result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteIncomingRelation.right().value()); return result; } Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(modifierUserData, resourceData, GraphEdgeLabels.LAST_MODIFIER, null); - log.debug("After associating user " + modifierUserData + " to resource " + resourceData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.LAST_MODIFIER); + log.debug("After associating user {} to resource {}. Edge type is {}", modifierUserData, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER); if (createRelation.isRight()) { - log.error("Failed to associate user " + modifierUserData + " to resource " + resourceData.getUniqueId() + ". Edge type is " + GraphEdgeLabels.LAST_MODIFIER); + log.error("Failed to associate user {} to resource {}. Edge type is {}", modifierUserData, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER); result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value()); return result; } @@ -1783,6 +1643,30 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExists(String templateName) { return validateToscaResourceNameUniqueness(templateName, titanGenericDao); } + + //Tal G for US815447 + public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExtends(String templateNameCurrent, String templateNameExtends) { + + String currentTemplateNameChecked = templateNameExtends; + + while(currentTemplateNameChecked != null && !currentTemplateNameChecked.equalsIgnoreCase(templateNameCurrent)){ + Either<Resource, StorageOperationStatus> latestByToscaResourceName = getLatestByToscaResourceName(currentTemplateNameChecked, true); + + if(latestByToscaResourceName.isRight()){ + return latestByToscaResourceName.right().value() == StorageOperationStatus.NOT_FOUND ? Either.left(false) : Either.right(latestByToscaResourceName.right().value()); + } + + Resource value = latestByToscaResourceName.left().value(); + + if(value.getDerivedFrom() != null){ + currentTemplateNameChecked = value.getDerivedFrom().get(0); + } else { + currentTemplateNameChecked = null; + } + } + + return (currentTemplateNameChecked != null && currentTemplateNameChecked.equalsIgnoreCase(templateNameCurrent)) ? Either.left(true) : Either.left(false); + } public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) { List<ArtifactDefinition> artifacts = new ArrayList<>(); @@ -1798,12 +1682,12 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp for (Entry<String, InterfaceDefinition> entry : interfaces.entrySet()) { InterfaceDefinition interfaceDefinition = entry.getValue(); - Map<String, Operation> operations = interfaceDefinition.getOperations(); + Map<String, Operation> operations = interfaceDefinition.getOperationsMap(); if (operations != null && !operations.isEmpty()) { for (Entry<String, Operation> opEntry : operations.entrySet()) { Operation operation = opEntry.getValue(); - ArtifactDefinition artifactDefinition = operation.getImplementation(); + ArtifactDefinition artifactDefinition = operation.getImplementationArtifact(); if (artifactDefinition != null) { artifacts.add(artifactDefinition); } @@ -1825,6 +1709,13 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return (Either<T, StorageOperationStatus>) getResource(id, inTransaction); } + // @Override + // public <T> Either<T, StorageOperationStatus> getComponent_tx(String id, + // boolean inTransaction) { + // return (Either<T, StorageOperationStatus>) getResource_tx(id, + // inTransaction); + // } + private Optional<ImmutablePair<SubCategoryData, GraphEdge>> validateCategoryHierarcy(List<ImmutablePair<SubCategoryData, GraphEdge>> childNodes, String subCategoryName) { Predicate<ImmutablePair<SubCategoryData, GraphEdge>> matchName = p -> p.getLeft().getSubCategoryDataDefinition().getName().equals(subCategoryName); return childNodes.stream().filter(matchName).findAny(); @@ -1850,8 +1741,9 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp String subCategoryName = filters.get(FilterKeyEnum.SUB_CATEGORY); String categoryName = filters.get(FilterKeyEnum.CATEGORY); + ResourceTypeEnum resourceType = ResourceTypeEnum.getType( filters.get(FilterKeyEnum.RESOURCE_TYPE)); Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, StorageOperationStatus> subcategories = null; - Optional<ImmutablePair<SubCategoryData, GraphEdge>> subCategoryData = null; + Optional<ImmutablePair<SubCategoryData, GraphEdge>> subCategoryData; if (categoryName != null) { subcategories = getAllSubCategories(categoryName); @@ -1867,20 +1759,59 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return Either.right(StorageOperationStatus.MATCH_NOT_FOUND); } return fetchByCategoryOrSubCategoryUid((String) subCategoryData.get().getLeft().getUniqueId(), NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, inTransaction, - ResourceMetadataData.class); + ResourceMetadataData.class, resourceType); } - return fetchByCategoryOrSubCategoryName(subCategoryName, NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, inTransaction, ResourceMetadataData.class); + return fetchByCategoryOrSubCategoryName(subCategoryName, NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, inTransaction, ResourceMetadataData.class, resourceType); } - return fetchByMainCategory(subcategories.left().value(), inTransaction); + if(subcategories != null){ + return fetchByMainCategory(subcategories.left().value(), inTransaction, resourceType); + } + return fetchByResourceType(NodeTypeEnum.Resource, filters.get(FilterKeyEnum.RESOURCE_TYPE), ResourceMetadataData.class, inTransaction); } - private <T> Either<List<T>, StorageOperationStatus> fetchByMainCategory(List<ImmutablePair<SubCategoryData, GraphEdge>> subcategories, boolean inTransaction) { + @SuppressWarnings("unchecked") + private <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByResourceType(NodeTypeEnum nodeType, String resourceType, + Class<S> clazz, boolean inTransaction) { + List<T> components = null; + TitanOperationStatus status; + Wrapper<StorageOperationStatus> statusWrapper = new Wrapper<>(); + Either<List<T>, StorageOperationStatus> result; + try { + Map<String, Object> props = new HashMap<>(); + props.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType); + props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); + Either<List<S>, TitanOperationStatus> getResources = titanGenericDao.getByCriteria(nodeType, props, clazz); + if (getResources.isRight()) { + status = getResources.right().value(); + if(status != TitanOperationStatus.NOT_FOUND){ + statusWrapper.setInnerElement(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + }else{ + components = new ArrayList<>(); + } + }else{ + components = getResources.left().value().stream(). + map(c->(T)convertComponentMetadataDataToComponent(c)).collect(Collectors.toList()); + } + if(!statusWrapper.isEmpty()){ + result = Either.right(statusWrapper.getInnerElement()); + }else{ + result = Either.left(components); + } + return result; + } finally { + if (!inTransaction) { + titanGenericDao.commit(); + } + } + } + + private <T> Either<List<T>, StorageOperationStatus> fetchByMainCategory(List<ImmutablePair<SubCategoryData, GraphEdge>> subcategories, boolean inTransaction, ResourceTypeEnum resourceType) { List<T> components = new ArrayList<>(); for (ImmutablePair<SubCategoryData, GraphEdge> subCategory : subcategories) { Either<List<T>, StorageOperationStatus> fetched = fetchByCategoryOrSubCategoryUid((String) subCategory.getLeft().getUniqueId(), NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, - inTransaction, ResourceMetadataData.class); + inTransaction, ResourceMetadataData.class, resourceType); if (fetched.isRight()) { // return fetched; continue; @@ -1906,6 +1837,52 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return getComponentCatalogData(NodeTypeEnum.Resource, propertiesToMatch, Resource.class, ResourceMetadataData.class, inTransaction); } + @Override + public Either<List<Resource>, StorageOperationStatus> getAllDerivedResources(Resource resource) { + try { + Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> childrenNodes = getDerivingChildren(resource); + return childrenNodes.either((childrenPairs) -> convertToResources(PairUtils.leftSequence(childrenPairs)), + (status) -> Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status))); + } finally { + titanGenericDao.commit(); + } + } + + @Override + public Either<List<Resource>, StorageOperationStatus> getRootResources() { + Map<String, Object> rootToscaResource = new HashMap<>(); + rootToscaResource.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), Resource.ROOT_RESOURCE); + return getResourceListByCriteria(rootToscaResource, false); + } + + @Override + public Either<List<Resource>, StorageOperationStatus> getVFResources() { + Map<String, Object> rootToscaResource = new HashMap<>(); + rootToscaResource.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF); + return getResourceListByCriteria(rootToscaResource, false); + } + + @Override + public Either<List<Resource>, StorageOperationStatus> getAll() { + Either<List<Resource>, StorageOperationStatus> resourceListByCriteria = getResourceListByCriteria(new HashMap<>(), false); + if (resourceListByCriteria.isRight() && resourceListByCriteria.right().value() == StorageOperationStatus.NOT_FOUND) { + return Either.left(Collections.emptyList()); + } + return resourceListByCriteria; + } + + + private Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> getDerivingChildren(Resource resource) { + return titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class); + } + + private Either<List<Resource>, StorageOperationStatus> convertToResources(List<ResourceMetadataData> resourcesMetaData) { + List<Either<Resource, StorageOperationStatus>> resources = resourcesMetaData.stream() + .map(resourceMetaData -> this.getResource(resourceMetaData.getMetadataDataDefinition().getUniqueId())) + .collect(Collectors.toList()); + return Either.sequenceLeft(fj.data.List.iterableList(resources)).bimap(fj.data.List::toJavaList, Function.identity()); + } + protected TitanOperationStatus findResourcesPathRecursively(String resourceId, List<ResourceMetadataData> resourcesPathList) { Either<ResourceMetadataData, TitanOperationStatus> nodeRes = this.titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, ResourceMetadataData.class); @@ -2106,7 +2083,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } long endFetchAllFromCache = System.currentTimeMillis(); - log.debug("Fetch all catalog resources metadata from cache took " + (endFetchAllFromCache - startFetchAllFromCache) + " ms"); + log.debug("Fetch all catalog resources metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache)); long startFetchFromGraph = System.currentTimeMillis(); log.debug("The number of resources needed to be fetch as light component is {}", notCertifiedHighest.size()); @@ -2115,13 +2092,13 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp log.trace("Fetch catalog resource non cached {} {}", uniqueId, data.getMetadataDataDefinition().getName()); Either<Resource, StorageOperationStatus> component = getLightComponent(uniqueId, inTransaction); if (component.isRight()) { - log.debug("Failed to get Service for id = " + data.getUniqueId() + " error : " + component.right().value() + " skip resource"); + log.debug("Failed to get Service for id = {} error : {} skip resource", data.getUniqueId(), component.right().value()); } else { result.add(component.left().value()); } } long endFetchFromGraph = System.currentTimeMillis(); - log.debug("Fetch catalog resources from graph took " + (endFetchFromGraph - startFetchFromGraph) + " ms"); + log.debug("Fetch catalog resources from graph took {} ms", (endFetchFromGraph - startFetchFromGraph)); return Either.left(result); @@ -2141,7 +2118,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return getResourceCatalogDataLatestCertifiedAndNonCertified(inTransaction, propertiesToMatch); } - private Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataLatestCertifiedAndNonCertified(boolean inTransaction, Map<String, Object> otherToMatch) { + public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataLatestCertifiedAndNonCertified(boolean inTransaction, Map<String, Object> otherToMatch) { Map<String, Object> propertiesToMatch = new HashMap<>(); if (otherToMatch != null) { @@ -2169,7 +2146,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp for (ResourceMetadataData data : listOfHighest) { Either<Resource, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction); if (component.isRight()) { - log.debug("Failed to get Service for id = " + data.getUniqueId() + " error : " + component.right().value() + " skip resource"); + log.debug("Failed to get Service for id = {} error : {} skip resource", data.getUniqueId(), component.right().value()); } else { result.add(component.left().value()); } @@ -2193,7 +2170,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (resource.isLeft()) { resources.add(resource.left().value()); } else { - log.debug("Failed to fetch resource for name = " + data.getMetadataDataDefinition().getName() + " and id = " + data.getUniqueId()); + log.debug("Failed to fetch resource for name = {} and id = {}", data.getUniqueId(), data.getMetadataDataDefinition().getName()); } } return Either.left(resources); @@ -2253,16 +2230,11 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } List<ResourceMetadataData> dataList = byCriteria.left().value(); if (dataList != null && !dataList.isEmpty()) { - // if (dataList.size() > 1) { - // log.debug("More that one instance of resource for name =" + - // nameValue + " and version = " + version); - // return Either.right(StorageOperationStatus.GENERAL_ERROR); - // } for (ResourceMetadataData resourceData : dataList) { // ResourceMetadataData resourceData = dataList.get(0); Either<Resource, StorageOperationStatus> resource = getResource(resourceData.getMetadataDataDefinition().getUniqueId(), inTransaction); if (resource.isRight()) { - log.debug("Failed to fetch resource for name = " + resourceData.getMetadataDataDefinition().getName() + " and id = " + resourceData.getUniqueId()); + log.debug("Failed to fetch resource for name = {} and id = {}", resourceData.getMetadataDataDefinition().getName(), resourceData.getUniqueId()); return Either.right(resource.right().value()); } resourcesList.add(resource.left().value()); @@ -2287,7 +2259,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } List<Resource> resourcesList = byNamesAndVersion.left().value(); if (resourcesList.size() > 1) { - log.debug("More that one instance of resource for name =" + name + " and version = " + version); + log.debug("More that one instance of resource for name = {} and version = {}", name, version); return Either.right(StorageOperationStatus.GENERAL_ERROR); } return Either.left(resourcesList.get(0)); @@ -2345,7 +2317,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp try { - log.debug("In updateResource. received resource = " + (resource == null ? null : resource.toString())); + log.debug("In updateResource. received resource = {}", (resource == null ? null : resource.toString())); if (resource == null) { log.error("Resource object is null"); result = Either.right(StorageOperationStatus.BAD_REQUEST); @@ -2355,7 +2327,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp ResourceMetadataData resourceData = new ResourceMetadataData(); resourceData.getMetadataDataDefinition().setUniqueId(resource.getUniqueId()); resourceData.getMetadataDataDefinition().setHighestVersion(resource.isHighestVersion()); - log.debug("After converting resource to ResourceData. ResourceData = " + resourceData); + log.debug("After converting resource to ResourceData. ResourceData = {}", resourceData); if (resourceData.getUniqueId() == null) { log.error("Resource id is missing in the request."); @@ -2365,14 +2337,14 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp Either<ResourceMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(resourceData, ResourceMetadataData.class); if (updateNode.isRight()) { - log.error("Failed to update resource " + resource.getUniqueId() + ". status is " + updateNode.right().value()); + log.error("Failed to update resource {}. status is {}", resource.getUniqueId(), updateNode.right().value()); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value())); return result; } Either<Resource, StorageOperationStatus> updatedResource = getResource(resource.getUniqueId(), true); if (updatedResource.isRight()) { - log.error("Resource id is missing in the request. status is " + updatedResource.right().value()); + log.error("Resource id is missing in the request. status is {}", updatedResource.right().value()); result = Either.right(StorageOperationStatus.BAD_REQUEST); return result; } @@ -2382,7 +2354,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (log.isDebugEnabled()) { String json = prettyJson.toJson(result.left().value()); - log.debug("Resource retrieved after update is " + json); + log.debug("Resource retrieved after update is {}", json); } return result; @@ -2430,7 +2402,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp for (ResourceMetadataData resourceData : resourceDataList) { Either<Resource, StorageOperationStatus> resource = getResource(resourceData.getMetadataDataDefinition().getUniqueId()); if (resource.isRight()) { - log.debug("Failed to fetch resource for id = " + resourceData.getUniqueId() + " error is " + resource.right().value()); + log.debug("Failed to fetch resource for id = {} error is {}", resourceData.getUniqueId(), resource.right().value()); return Either.right(resource.right().value()); } result.add(resource.left().value()); @@ -2539,20 +2511,21 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } other.setVersion(version); other.setUniqueId(null); - + List<InputDefinition> inputs = other.getInputs(); Map<String, List<ComponentInstanceProperty>> inputsPropMap = new HashMap<String, List<ComponentInstanceProperty>>(); - - if (inputs != null) { - for (InputDefinition input : inputs) { - - Either<List<ComponentInstanceProperty>, TitanOperationStatus> inputPropStatus = inputOperation.getComponentInstancePropertiesByInputId(input.getUniqueId()); - if (inputPropStatus.isLeft()) { - if (inputPropStatus.left().value() != null) + + if(inputs != null){ + for(InputDefinition input: inputs){ + + Either<List<ComponentInstanceProperty>, TitanOperationStatus> inputPropStatus = inputOperation.getComponentInstancePropertiesByInputId(input.getUniqueId()); + if(inputPropStatus.isLeft()){ + if(inputPropStatus.left().value() != null) inputsPropMap.put(input.getName(), inputPropStatus.left().value()); - + } - + + } } @@ -2607,15 +2580,10 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp result = this.getResource(resource.getUniqueId(), true); if (result.isRight()) { - log.error("Cannot get full service from the graph. status is " + result.right().value()); + log.error("Cannot get full service from the graph. status is {}", result.right().value()); return Either.right(result.right().value()); } - if (log.isDebugEnabled()) { - String json = prettyJson.toJson(result.left().value()); - // log.debug("Resource retrieved is {}", json); - } - return result; } finally { if (false == inTransaction) { @@ -2713,13 +2681,13 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp SubCategoryDefinition currSubcategory = currentCategory.getSubcategories().get(0); SubCategoryDefinition newSubcategory = newCategory.getSubcategories().get(0); if (newSubcategory.getName() != null && false == newSubcategory.getName().equals(currSubcategory.getName())) { - log.debug("Going to update the category of the resource from " + currentCategory + " to " + newCategory); + log.debug("Going to update the category of the resource from {} to {}", currentCategory, newCategory); categoryWasChanged = true; } } if (categoryWasChanged) { status = moveCategoryEdge((Resource) component, (ResourceMetadataData) componentData, newCategory); - log.debug("Going to update the category of the resource from " + currentCategory + " to " + newCategory + ". status is " + status); + log.debug("Going to update the category of the resource from {} to {}. status is {}", currentCategory, newCategory, status); } return status; } @@ -2810,7 +2778,12 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp List<ResourceMetadataData> resourceMetadataDataList = null; Either<List<ResourceMetadataData>, TitanOperationStatus> byCsar = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class); if (byCsar.isRight()) { - if (TitanOperationStatus.NOT_FOUND.equals(byCsar.right().value())) { + if (TitanOperationStatus.NOT_FOUND == byCsar.right().value()) { + //Fix Defect DE256036 + if( StringUtils.isEmpty(systemName)){ + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND)); + } + props.clear(); props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName); @@ -2820,7 +2793,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(bySystemname.right().value())); } if (bySystemname.left().value().size() > 2) { - log.debug("getLatestResourceByCsarOrName - getByCriteria(by system name) must return only 2 latest version, but was returned - " + bySystemname.left().value().size()); + log.debug("getLatestResourceByCsarOrName - getByCriteria(by system name) must return only 2 latest version, but was returned - {}", bySystemname.left().value().size()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } resourceMetadataDataList = bySystemname.left().value(); @@ -2850,7 +2823,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } else { resourceMetadataDataList = byCsar.left().value(); if (resourceMetadataDataList.size() > 2) { - log.debug("getLatestResourceByCsarOrName - getByCriteria(by csar) must return only 2 latest version, but was returned - " + byCsar.left().value().size()); + log.debug("getLatestResourceByCsarOrName - getByCriteria(by csar) must return only 2 latest version, but was returned - {}", byCsar.left().value().size()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } if (resourceMetadataDataList.size() == 1) { @@ -2889,7 +2862,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return Either.left(byCsar.left().value()); } - private Either<Resource, StorageOperationStatus> getResource(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) { + public Either<Resource, StorageOperationStatus> getResource(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) { Resource resource = null; try { @@ -2971,7 +2944,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (false == componentParametersView.isIgnoreRequirements()) { StorageOperationStatus setRequirementsStatus = setResourceRequirementsFromGraph(uniqueId, resource, true); if (setRequirementsStatus != StorageOperationStatus.OK) { - log.error("Failed to set requirement of resource " + uniqueId + ". status is " + setRequirementsStatus); + log.error("Failed to set requirement of resource {}. status is {}", uniqueId, setRequirementsStatus); return Either.right(setRequirementsStatus); } } @@ -2979,7 +2952,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (false == componentParametersView.isIgnoreInputs()) { status = setComponentInputsFromGraph(uniqueId, resource, true); if (status != TitanOperationStatus.OK) { - log.error("Failed to set inputs of resource " + uniqueId + ". status is " + status); + log.error("Failed to set inputs of resource {}. status is {}", uniqueId, status); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } @@ -3008,7 +2981,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } if (false == componentParametersView.isIgnoreComponentInstancesProperties()) { - status = setComponentInstancesPropertiesFromGraph(uniqueId, resource); + status = setComponentInstancesPropertiesFromGraph(resource); if (status != TitanOperationStatus.OK) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java index 18229f9245..e503c787b5 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java @@ -20,17 +20,9 @@ package org.openecomp.sdc.be.model.operations.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.annotation.Resource; - +import com.thinkaurelius.titan.core.TitanGraph; +import com.thinkaurelius.titan.core.TitanVertex; +import fj.data.Either; import org.apache.commons.lang3.tuple.ImmutablePair; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; @@ -43,18 +35,7 @@ import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; -import org.openecomp.sdc.be.model.AdditionalInformationDefinition; -import org.openecomp.sdc.be.model.ArtifactDefinition; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentInstanceInput; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.DistributionStatusEnum; -import org.openecomp.sdc.be.model.InputDefinition; -import org.openecomp.sdc.be.model.LifecycleStateEnum; -import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.ServiceMetadataDefinition; -import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.category.CategoryDefinition; import org.openecomp.sdc.be.model.operations.api.IArtifactOperation; import org.openecomp.sdc.be.model.operations.api.IElementOperation; @@ -69,11 +50,19 @@ import org.openecomp.sdc.common.util.ValidationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.thinkaurelius.titan.core.TitanGraph; - -import fj.data.Either; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Collectors; @org.springframework.stereotype.Component("service-operation") +@Deprecated public class ServiceOperation extends ComponentOperation implements IServiceOperation { private static Logger log = LoggerFactory.getLogger(ServiceOperation.class.getName()); @@ -110,7 +99,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user " + userId + " in the graph. status is " + status); + log.error("Cannot find user {} in the graph. status is {}",userId,status); return sendError(status, StorageOperationStatus.USER_NOT_FOUND); } @@ -121,7 +110,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper findUser = findUser(updaterUserId); if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user " + userId + " in the graph. status is " + status); + log.error("Cannot find user {} in the graph. status is {}",userId, status); return sendError(status, StorageOperationStatus.USER_NOT_FOUND); } else { updaterUserData = findUser.left().value(); @@ -134,17 +123,13 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper String categoryName = categories.get(0).getName(); if (categoryName != null) { - Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation - .getNewCategoryData(categoryName, NodeTypeEnum.ServiceNewCategory, CategoryData.class); + Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(categoryName, NodeTypeEnum.ServiceNewCategory, CategoryData.class); if (categoryResult.isRight()) { StorageOperationStatus status = categoryResult.right().value(); /* - * TitanOperationStatus titanStatus = null; - * if(ActionStatus.CATEGORY_NOT_FOUND.equals(status)){ - * titanStatus = TitanOperationStatus.NOT_FOUND; }else{ - * titanStatus = TitanOperationStatus.GENERAL_ERROR; } + * TitanOperationStatus titanStatus = null; if(ActionStatus.CATEGORY_NOT_FOUND.equals(status)){ titanStatus = TitanOperationStatus.NOT_FOUND; }else{ titanStatus = TitanOperationStatus.GENERAL_ERROR; } */ - log.error("Cannot find category " + categoryName + " in the graph. status is " + status); + log.error("Cannot find category {} in the graph. status is {}",categoryName,status); return Either.right(status); } @@ -156,20 +141,17 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return Either.right(storageOperationStatus); } - log.debug("try to create service node on graph for id " + serviceData.getUniqueId()); - Either<ServiceMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(serviceData, - ServiceMetadataData.class); + log.debug("try to create service node on graph for id {}",serviceData.getUniqueId()); + Either<ServiceMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(serviceData, ServiceMetadataData.class); if (createNode.isRight()) { TitanOperationStatus status = createNode.right().value(); - log.error("Error returned after creating service data node " + serviceData + ". status returned is " - + status); + log.error("Error returned after creating service data node {}. status returned is {}",serviceData,status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } - log.debug("create service node created on graph for id " + serviceData.getUniqueId()); + log.debug("create service node created on graph for id {}",serviceData.getUniqueId()); - TitanOperationStatus associateMetadata = associateMetadataToComponent(serviceData, creatorUserData, - updaterUserData, null, null); + TitanOperationStatus associateMetadata = associateMetadataToComponent(serviceData, creatorUserData, updaterUserData, null, null); if (associateMetadata != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateMetadata)); return result; @@ -194,23 +176,20 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper allArtifacts.putAll(service.getToscaArtifacts()); } - StorageOperationStatus associateArtifacts = associateArtifactsToComponent(NodeTypeEnum.Service, serviceData, - allArtifacts); + StorageOperationStatus associateArtifacts = associateArtifactsToComponent(NodeTypeEnum.Service, serviceData, allArtifacts); if (associateArtifacts != StorageOperationStatus.OK) { result = Either.right(associateArtifacts); return result; } - TitanOperationStatus associateInputs = associateInputsToComponent(NodeTypeEnum.Service, serviceData, - service.getInputs()); + TitanOperationStatus associateInputs = associateInputsToComponent(NodeTypeEnum.Service, serviceData, service.getInputs()); if (associateInputs != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateInputs)); return result; } List<AdditionalInformationDefinition> additionalInformation = service.getAdditionalInformation(); - StorageOperationStatus addAdditionalInformation = addAdditionalInformationToService(uniqueId, - additionalInformation); + StorageOperationStatus addAdditionalInformation = addAdditionalInformationToService(uniqueId, additionalInformation); if (addAdditionalInformation != StorageOperationStatus.OK) { result = Either.right(addAdditionalInformation); return result; @@ -218,13 +197,13 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper result = this.getService(uniqueId, true); if (result.isRight()) { - log.error("Cannot get full service from the graph. status is " + result.right().value()); + log.error("Cannot get full service from the graph. status is {}", result.right().value()); return Either.right(result.right().value()); } if (log.isDebugEnabled()) { String json = prettyJson.toJson(result.left().value()); - log.debug("Service retrieved is " + json); + log.debug("Service retrieved is {}",json); } return result; @@ -242,24 +221,20 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } } - private TitanOperationStatus associateMetadataCategoryToComponent(ServiceMetadataData serviceData, - CategoryData categoryData) { + private TitanOperationStatus associateMetadataCategoryToComponent(ServiceMetadataData serviceData, CategoryData categoryData) { Either<GraphRelation, TitanOperationStatus> result; if (categoryData != null) { result = titanGenericDao.createRelation(serviceData, categoryData, GraphEdgeLabels.CATEGORY, null); - log.debug("After associating component " + serviceData.getUniqueId() + " to category " + categoryData - + ". Edge type is " + GraphEdgeLabels.CATEGORY); + log.debug("After associating component {} to category {}. Edge type is {}",serviceData.getUniqueId(),categoryData,GraphEdgeLabels.CATEGORY); if (result.isRight()) { - log.error("Faield to associate component " + serviceData.getUniqueId() + " to category " + categoryData - + ". Edge type is " + GraphEdgeLabels.CATEGORY); + log.error("Faield to associate component {} to category {}. Edge type is {}",serviceData.getUniqueId(),categoryData,GraphEdgeLabels.CATEGORY); return result.right().value(); } } return TitanOperationStatus.OK; } - private StorageOperationStatus addAdditionalInformationToService(String resourceUniqueId, - List<AdditionalInformationDefinition> additionalInformation) { + private StorageOperationStatus addAdditionalInformationToService(String resourceUniqueId, List<AdditionalInformationDefinition> additionalInformation) { StorageOperationStatus result = null; @@ -267,13 +242,10 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper result = super.addAdditionalInformation(NodeTypeEnum.Service, resourceUniqueId, null); } else { if (additionalInformation.size() == 1) { - result = super.addAdditionalInformation(NodeTypeEnum.Service, resourceUniqueId, - additionalInformation.get(0)); + result = super.addAdditionalInformation(NodeTypeEnum.Service, resourceUniqueId, additionalInformation.get(0)); } else { result = StorageOperationStatus.BAD_REQUEST; - log.info( - "Cannot create resource with more than one additional information object. The number of received object is " - + additionalInformation.size()); + log.info("Cannot create resource with more than one additional information object. The number of received object is {}", additionalInformation.size()); } } return result; @@ -283,8 +255,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return cloneService(other, version, null, inTransaction); } - public Either<Service, StorageOperationStatus> cloneService(Service other, String version, - LifecycleStateEnum targetLifecycle, boolean inTransaction) { + public Either<Service, StorageOperationStatus> cloneService(Service other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) { Either<Service, StorageOperationStatus> result = null; try { @@ -292,28 +263,26 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper other.setVersion(version); other.setUniqueId(null); - Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origServiceId, - NodeTypeEnum.Service); + Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origServiceId, NodeTypeEnum.Service); if (counterStatus.isRight()) { StorageOperationStatus status = counterStatus.right().value(); - log.error("failed to get resource instance counter on service {}. status={}", origServiceId, - counterStatus); + log.error("failed to get resource instance counter on service {}. status={}", origServiceId, counterStatus); result = Either.right(status); return result; } Map<String, List<ComponentInstanceInput>> inputsValuesMap = new HashMap<String, List<ComponentInstanceInput>>(); List<InputDefinition> inputs = other.getInputs(); - if(inputs != null){ - for(InputDefinition input: inputs){ - - Either<List<ComponentInstanceInput>, TitanOperationStatus> inputStatus = inputOperation.getComponentInstanceInputsByInputId(input.getUniqueId()); - - if(inputStatus.isLeft()){ - if(inputStatus.left().value() != null) - inputsValuesMap.put(input.getName(), inputStatus.left().value()); - } + if (inputs != null) { + for (InputDefinition input : inputs) { + + Either<List<ComponentInstanceInput>, TitanOperationStatus> inputStatus = inputOperation + .getComponentInstanceInputsByInputId(input.getUniqueId()); + + if (inputStatus.isLeft() && inputStatus.left().value() != null) { + inputsValuesMap.put(input.getName(), inputStatus.left().value()); + } } - } + } Either<Service, StorageOperationStatus> createServiceMD = createService(other, true); @@ -333,19 +302,17 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return result; } - Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter( - service.getUniqueId(), NodeTypeEnum.Service, counterStatus.left().value(), true); + Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter(service.getUniqueId(), NodeTypeEnum.Service, counterStatus.left().value(), true); if (setResourceInstanceCounter.isRight()) { StorageOperationStatus status = setResourceInstanceCounter.right().value(); - log.error("failed to set resource instance counter on service {}. status={}", service.getUniqueId(), - setResourceInstanceCounter); + log.error("failed to set resource instance counter on service {}. status={}", service.getUniqueId(), setResourceInstanceCounter); result = Either.right(status); return result; } result = this.getService(service.getUniqueId(), true); if (result.isRight()) { - log.error("Cannot get full service from the graph. status is " + result.right().value()); + log.error("Cannot get full service from the graph. status is {}", result.right().value()); return Either.right(result.right().value()); } @@ -369,22 +336,18 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } private ServiceMetadataData getServiceMetaDataFromService(Service service) { - ServiceMetadataData serviceData = new ServiceMetadataData( - (ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition()); + ServiceMetadataData serviceData = new ServiceMetadataData((ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition()); if (service.getNormalizedName() == null || service.getNormalizedName().isEmpty()) { - serviceData.getMetadataDataDefinition() - .setNormalizedName(ValidationUtils.normaliseComponentName(service.getName())); + serviceData.getMetadataDataDefinition().setNormalizedName(ValidationUtils.normaliseComponentName(service.getName())); } if (service.getSystemName() == null || service.getSystemName().isEmpty()) { - serviceData.getMetadataDataDefinition() - .setSystemName(ValidationUtils.convertToSystemName(service.getName())); + serviceData.getMetadataDataDefinition().setSystemName(ValidationUtils.convertToSystemName(service.getName())); } return serviceData; } - private Either<Service, StorageOperationStatus> sendError(TitanOperationStatus status, - StorageOperationStatus statusIfNotFound) { + private Either<Service, StorageOperationStatus> sendError(TitanOperationStatus status, StorageOperationStatus statusIfNotFound) { Either<Service, StorageOperationStatus> result; if (status == TitanOperationStatus.NOT_FOUND) { result = Either.right(statusIfNotFound); @@ -406,128 +369,8 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper ComponentParametersView componentParametersView = new ComponentParametersView(); return getService(uniqueId, componentParametersView, inTransaction); } - // public Either<Service, StorageOperationStatus> getService(String - // uniqueId, boolean inTransaction) { - // - // Service service = null; - // Either<Service, StorageOperationStatus> result = null; - // try { - // - // NodeTypeEnum serviceNodeType = NodeTypeEnum.Service; - // NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource; - // - // Either<ServiceMetadataData, StorageOperationStatus> getComponentByLabel = - // getComponentByLabelAndId(uniqueId, serviceNodeType, - // ServiceMetadataData.class); - // if (getComponentByLabel.isRight()) { - // result = Either.right(getComponentByLabel.right().value()); - // return result; - // } - // ServiceMetadataData serviceData = getComponentByLabel.left().value(); - // service = convertServiceDataToService(serviceData); - // - // TitanOperationStatus status = setComponentCreatorFromGraph(service, - // uniqueId, serviceNodeType); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // } - // - // status = setComponentLastModifierFromGraph(service, uniqueId, - // serviceNodeType); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // - // } - // status = setComponentCategoriesFromGraph(service); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // - // } - // - // // status = setServicePropertiesFromGraph(uniqueId, resource, vertex); - // // if (status != TitanOperationStatus.OK) { - // // return - // Either.right(TitanStatusConverter.convertTitanStatusToStorageStatus(status)); - // // } - // - // StorageOperationStatus storageStatus = setArtifactFromGraph(uniqueId, - // service, serviceNodeType, artifactOperation); - // if (storageStatus != StorageOperationStatus.OK) { - // result = Either.right(storageStatus); - // return result; - // } - // - // status = setComponentInstancesFromGraph(uniqueId, service, - // serviceNodeType, compInstNodeType); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // - // } - // - // status = setComponentInstancesPropertiesFromGraph(uniqueId, service); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // } - // - // status = setCapabilitiesFromGraph(uniqueId, service, - // NodeTypeEnum.Service); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // } - // - // status = setRequirementsFromGraph( uniqueId, service, - // NodeTypeEnum.Service); - // if (status != TitanOperationStatus.OK) { - // result = - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // return result; - // } - // - // status = setAllVersions(service); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setServiceAdditionalInformationFromGraph(uniqueId, service); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // status = setGroupsFromGraph(uniqueId, service, NodeTypeEnum.Resource); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - // - // result = Either.left(service); - // return result; - // } finally { - // if (false == inTransaction) { - // if (result == null || result.isRight()) { - // titanGenericDao.rollback(); - // } else { - // titanGenericDao.commit(); - // } - // } - // } - // } - public Either<Service, StorageOperationStatus> getService(String uniqueId, - ComponentParametersView componentParametersView, boolean inTransaction) { + public Either<Service, StorageOperationStatus> getService(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) { Service service = null; Either<Service, StorageOperationStatus> result = null; @@ -536,8 +379,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper NodeTypeEnum serviceNodeType = NodeTypeEnum.Service; NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource; - Either<ServiceMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, - serviceNodeType, ServiceMetadataData.class); + Either<ServiceMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, serviceNodeType, ServiceMetadataData.class); if (getComponentByLabel.isRight()) { result = Either.right(getComponentByLabel.right().value()); return result; @@ -546,12 +388,10 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper // Try to fetch resource from the cache. The resource will be // fetched only if the time on the cache equals to // the time on the graph. - Either<Service, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, - serviceData, componentParametersView, Service.class, ComponentTypeEnum.SERVICE); + Either<Service, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, serviceData, componentParametersView, Service.class, ComponentTypeEnum.SERVICE); if (componentFromCacheIfUpToDate.isLeft()) { Service cachedService = componentFromCacheIfUpToDate.left().value(); - log.debug("Service {} with uid {} was fetched from cache.", cachedService.getName(), - cachedService.getUniqueId()); + log.debug("Service {} with uid {} was fetched from cache.", cachedService.getName(), cachedService.getUniqueId()); return Either.left(cachedService); } @@ -580,25 +420,15 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } } - // status = setServicePropertiesFromGraph(uniqueId, resource, - // vertex); - // if (status != TitanOperationStatus.OK) { - // return - // Either.right(TitanStatusConverter.convertTitanStatusToStorageStatus(status)); - // } - if (false == componentParametersView.isIgnoreArtifacts()) { - StorageOperationStatus storageStatus = setArtifactFromGraph(uniqueId, service, serviceNodeType, - artifactOperation); + StorageOperationStatus storageStatus = setArtifactFromGraph(uniqueId, service, serviceNodeType, artifactOperation); if (storageStatus != StorageOperationStatus.OK) { result = Either.right(storageStatus); return result; } } - if (false == componentParametersView.isIgnoreComponentInstances() - || false == componentParametersView.isIgnoreComponentInstancesProperties() - || false == componentParametersView.isIgnoreCapabilities() + if (false == componentParametersView.isIgnoreComponentInstances() || false == componentParametersView.isIgnoreComponentInstancesProperties() || false == componentParametersView.isIgnoreCapabilities() || false == componentParametersView.isIgnoreRequirements()) { status = setComponentInstancesFromGraph(uniqueId, service, serviceNodeType, compInstNodeType); if (status != TitanOperationStatus.OK) { @@ -608,7 +438,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } } if (false == componentParametersView.isIgnoreComponentInstancesProperties()) { - status = setComponentInstancesPropertiesFromGraph(uniqueId, service); + status = setComponentInstancesPropertiesFromGraph(service); if (status != TitanOperationStatus.OK) { result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; @@ -650,7 +480,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper if (false == componentParametersView.isIgnoreInputs()) { status = setComponentInputsFromGraph(uniqueId, service, true); if (status != TitanOperationStatus.OK) { - log.error("Failed to set inputs of resource " + uniqueId + ". status is " + status); + log.error("Failed to set inputs of resource {}. status is {}",uniqueId,status); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } @@ -795,19 +625,17 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper TitanOperationStatus setComponentCategoriesFromGraph(Component service) { String uniqueId = service.getUniqueId(); - Either<List<ImmutablePair<CategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao - .getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, - GraphEdgeLabels.CATEGORY, NodeTypeEnum.ServiceNewCategory, CategoryData.class); + Either<List<ImmutablePair<CategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, GraphEdgeLabels.CATEGORY, + NodeTypeEnum.ServiceNewCategory, CategoryData.class); if (parentNode.isRight()) { return parentNode.right().value(); } List<ImmutablePair<CategoryData, GraphEdge>> listValue = parentNode.left().value(); if (log.isDebugEnabled()) - log.debug("Result after looking for category nodes pointed by service {}. status is {}", uniqueId, - listValue); + log.debug("Result after looking for category nodes pointed by service {}. status is {}", uniqueId, listValue); if (listValue.size() > 1) { - log.error("Multiple edges foud between resource " + uniqueId + " to category nodes."); + log.error("Multiple edges foud between resource {} to category nodes.",uniqueId); } ImmutablePair<CategoryData, GraphEdge> value = listValue.get(0); if (log.isDebugEnabled()) @@ -836,59 +664,52 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph(); if (graphResult.isRight()) { - result = Either - .right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value())); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value())); return result; } - Either<ServiceMetadataData, TitanOperationStatus> serviceNode = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, ServiceMetadataData.class); + Either<ServiceMetadataData, TitanOperationStatus> serviceNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, ServiceMetadataData.class); if (serviceNode.isRight()) { TitanOperationStatus status = serviceNode.right().value(); - log.error("Failed to find service " + serviceId + ". status is " + status); + log.error("Failed to find service {}. status is {}",serviceId,status); return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); } Either<Service, StorageOperationStatus> serviceRes = getService(serviceId, true); if (serviceRes.isRight()) { StorageOperationStatus status = serviceRes.right().value(); - log.error("Failed to find sevice " + serviceId + ".status is " + status); + log.error("Failed to find sevice {}.status is {}",serviceId,status); result = Either.right(status); return result; } Service service = serviceRes.left().value(); - Either<List<ComponentInstance>, StorageOperationStatus> deleteAllResourceInstancesRes = componentInstanceOperation - .deleteAllComponentInstances(serviceId, NodeTypeEnum.Service, true); - log.debug("After deleting resource instances under service " + serviceId + ".Result is " - + deleteAllResourceInstancesRes); + Either<List<ComponentInstance>, StorageOperationStatus> deleteAllResourceInstancesRes = componentInstanceOperation.deleteAllComponentInstances(serviceId, NodeTypeEnum.Service, true); + log.debug("After deleting resource instances under service {}.Result is {}",serviceId,deleteAllResourceInstancesRes); if (deleteAllResourceInstancesRes.isRight()) { StorageOperationStatus status = deleteAllResourceInstancesRes.right().value(); if (status != StorageOperationStatus.NOT_FOUND) { - log.error( - "Failed to delete resource instances under service " + serviceId + " .status is " + status); + log.error("Failed to delete resource instances under service {} .status is ",serviceId,status); result = Either.right(status); return result; } } - StorageOperationStatus removeArtifactsFromResource = removeArtifactsFromComponent(service, - NodeTypeEnum.Service); - log.debug("After deleting artifacts nodes in the graph. status is " + removeArtifactsFromResource); + StorageOperationStatus removeArtifactsFromResource = removeArtifactsFromComponent(service, NodeTypeEnum.Service); + log.debug("After deleting artifacts nodes in the graph. status is {}",removeArtifactsFromResource); if (!removeArtifactsFromResource.equals(StorageOperationStatus.OK)) { result = Either.right(removeArtifactsFromResource); return result; } StorageOperationStatus removeInputsFromResource = removeInputsFromComponent(NodeTypeEnum.Service, service); - log.debug("After deleting requirements nodes in the graph. status is " + removeInputsFromResource); + log.debug("After deleting requirements nodes in the graph. status is {}",removeInputsFromResource); if (removeInputsFromResource != StorageOperationStatus.OK) { result = Either.right(removeInputsFromResource); return result; } - Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deleteChildrenNodesRes = titanGenericDao - .deleteChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, - GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property, PropertyData.class); + Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deleteChildrenNodesRes = titanGenericDao.deleteChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, GraphEdgeLabels.PROPERTY, + NodeTypeEnum.Property, PropertyData.class); if (deleteChildrenNodesRes.isRight()) { TitanOperationStatus status = deleteChildrenNodesRes.right().value(); @@ -898,27 +719,24 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } } - StorageOperationStatus removeAdditionalInformationFromService = super.deleteAdditionalInformation( - NodeTypeEnum.Service, serviceId); - log.debug("After deleting additional information node in the graph. status is " - + removeAdditionalInformationFromService); + StorageOperationStatus removeAdditionalInformationFromService = super.deleteAdditionalInformation(NodeTypeEnum.Service, serviceId); + log.debug("After deleting additional information node in the graph. status is {}",removeAdditionalInformationFromService); if (!removeAdditionalInformationFromService.equals(StorageOperationStatus.OK)) { result = Either.right(removeAdditionalInformationFromService); return result; } StorageOperationStatus removeGroupsFromService = super.deleteGroups(NodeTypeEnum.Service, serviceId); - log.debug("After deleting group nodes in the graph. status is " + removeGroupsFromService); + log.debug("After deleting group nodes in the graph. status is {}",removeGroupsFromService); if (!removeGroupsFromService.equals(StorageOperationStatus.OK)) { result = Either.right(removeGroupsFromService); return result; } - Either<ServiceMetadataData, TitanOperationStatus> deleteServiceNodeRes = titanGenericDao - .deleteNode(serviceNode.left().value(), ServiceMetadataData.class); + Either<ServiceMetadataData, TitanOperationStatus> deleteServiceNodeRes = titanGenericDao.deleteNode(serviceNode.left().value(), ServiceMetadataData.class); if (deleteServiceNodeRes.isRight()) { TitanOperationStatus status = deleteServiceNodeRes.right().value(); - log.error("Failed to delete service node " + serviceId + ". status is " + status); + log.error("Failed to delete service node {}. status is {}",serviceId, status); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); return result; } @@ -946,8 +764,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } private Service convertServiceDataToService(ServiceMetadataData serviceData) { - ServiceMetadataDefinition serviceMetadataDefinition = new ServiceMetadataDefinition( - (ServiceMetadataDataDefinition) serviceData.getMetadataDataDefinition()); + ServiceMetadataDefinition serviceMetadataDefinition = new ServiceMetadataDefinition((ServiceMetadataDataDefinition) serviceData.getMetadataDataDefinition()); Service service = new Service(serviceMetadataDefinition); @@ -964,12 +781,11 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return Either.left(clazz.cast(component.left().value())); } + @Override @SuppressWarnings("unchecked") - public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) { + public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) { - return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent( - userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Service); + return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent(userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Service); } @SuppressWarnings("unchecked") @@ -978,24 +794,14 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return (Either<T, StorageOperationStatus>) getService(id, inTransaction); } - // @Override - // public <T> Either<T, StorageOperationStatus> getComponent_tx(String id, - // boolean inTransaction) { - // return (Either<T, StorageOperationStatus>) getService_tx(id, - // inTransaction); - // } - @Override - public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, - boolean inTransaction) { - return getComponentCatalogData(NodeTypeEnum.Service, propertiesToMatch, Service.class, - ServiceMetadataData.class, inTransaction); + public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction) { + return getComponentCatalogData(NodeTypeEnum.Service, propertiesToMatch, Service.class, ServiceMetadataData.class, inTransaction); } @Override public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction) { - Either<Service, StorageOperationStatus> result = updateComponent(service, inTransaction, titanGenericDao, - Service.class, NodeTypeEnum.Service); + Either<Service, StorageOperationStatus> result = updateComponent(service, inTransaction, titanGenericDao, Service.class, NodeTypeEnum.Service); return result; } @@ -1008,8 +814,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper @SuppressWarnings("unchecked") @Override public Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction) { - return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteService(id, - inTransaction); + return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteService(id, inTransaction); } @Override @@ -1023,8 +828,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } @Override - public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, - boolean inTransaction) { + public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction) { Either<List<T>, StorageOperationStatus> components = null; String categoryName = filters.get(FilterKeyEnum.CATEGORY); @@ -1036,13 +840,10 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } if (categoryName != null) { // primary filter - components = fetchByCategoryOrSubCategoryName(categoryName, NodeTypeEnum.ServiceNewCategory, - GraphEdgeLabels.CATEGORY.getProperty(), NodeTypeEnum.Service, inTransaction, - ServiceMetadataData.class); + components = fetchByCategoryOrSubCategoryName(categoryName, NodeTypeEnum.ServiceNewCategory, GraphEdgeLabels.CATEGORY.getProperty(), NodeTypeEnum.Service, inTransaction, ServiceMetadataData.class, null); if (components.isLeft() && distEnum != null) {// secondary filter Predicate<T> statusFilter = p -> ((Service) p).getDistributionStatus().equals(distEnum); - return Either - .left(components.left().value().stream().filter(statusFilter).collect(Collectors.toList())); + return Either.left(components.left().value().stream().filter(statusFilter).collect(Collectors.toList())); } filters.remove(FilterKeyEnum.DISTRIBUTION_STATUS); return components; @@ -1054,69 +855,56 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return components; } - private <T> Either<List<T>, StorageOperationStatus> fetchByDistributionStatus(String status, - boolean inTransaction) { + private <T> Either<List<T>, StorageOperationStatus> fetchByDistributionStatus(String status, boolean inTransaction) { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.DISTRIBUTION_STATUS.getProperty(), status); props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); - return (Either<List<T>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getServiceListByCriteria( - props, inTransaction); + return (Either<List<T>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getServiceListByCriteria(props, inTransaction); } @SuppressWarnings("unchecked") @Override - public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, - Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction) { - return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getTesterFollowedComponent( - userId, lifecycleStates, inTransaction, NodeTypeEnum.Service); + public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction) { + return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getTesterFollowedComponent(userId, lifecycleStates, inTransaction, NodeTypeEnum.Service); } - public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, - DistributionStatusEnum distributionStatus) { + @Override + public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, DistributionStatusEnum distributionStatus) { String userId = user.getUserId(); Either<UserData, TitanOperationStatus> findUser = findUser(userId); if (findUser.isRight()) { TitanOperationStatus status = findUser.right().value(); - log.error("Cannot find user " + userId + " in the graph. status is " + status); + log.error("Cannot find user {} in the graph. status is {}", userId, status); return sendError(status, StorageOperationStatus.USER_NOT_FOUND); } UserData userData = findUser.left().value(); - Either<ServiceMetadataData, TitanOperationStatus> serviceMetadataDataRequeset = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId(), - ServiceMetadataData.class); + Either<ServiceMetadataData, TitanOperationStatus> serviceMetadataDataRequeset = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId(), ServiceMetadataData.class); if (serviceMetadataDataRequeset.isRight()) { TitanOperationStatus status = serviceMetadataDataRequeset.right().value(); - log.error("Cannot find service " + service.getUniqueId() + " in the graph. status is " + status); + log.error("Cannot find service {} in the graph. status is {}",service.getUniqueId(),status); return sendError(status, StorageOperationStatus.NOT_FOUND); } ServiceMetadataData serviceMetadataData = serviceMetadataDataRequeset.left().value(); StorageOperationStatus result = StorageOperationStatus.OK; - Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = deleteLastDistributionModifierRelation( - service); - if (deleteIncomingRelation.isRight() - && deleteIncomingRelation.right().value() != TitanOperationStatus.NOT_FOUND) { - log.error("Failed to delete user from component " + service.getUniqueId() + ". Edge type is " - + GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); + Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = deleteLastDistributionModifierRelation(service); + if (deleteIncomingRelation.isRight() && deleteIncomingRelation.right().value() != TitanOperationStatus.NOT_FOUND) { + log.error("Failed to delete user from component {}. Edge type is {}",service.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteIncomingRelation.right().value()); return Either.right(result); } - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(userData, - serviceMetadataData, GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER, null); - log.debug("After associating user " + userData + " to component " + serviceMetadataData.getUniqueId() - + ". Edge type is " + GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(userData, serviceMetadataData, GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER, null); + log.debug("After associating user {} to component {}. Edge type is {}",userData,serviceMetadataData.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); if (createRelation.isRight()) { - log.error("Failed to associate user " + userData + " to component " + serviceMetadataData.getUniqueId() - + ". Edge type is " + GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); + log.error("Failed to associate user {} to component {}. Edge type is {}",userData,serviceMetadataData.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER); result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value()); return Either.right(result); } service.setDistributionStatus(distributionStatus); - Either<Service, StorageOperationStatus> updateResponse = updateComponent(service, true, titanGenericDao, - Service.class, NodeTypeEnum.Service); + Either<Service, StorageOperationStatus> updateResponse = updateComponent(service, true, titanGenericDao, Service.class, NodeTypeEnum.Service); return updateResponse; @@ -1125,17 +913,14 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper private Either<GraphRelation, TitanOperationStatus> deleteLastDistributionModifierRelation(Service service) { GraphRelation lastDistributionStateModifaierRelation = new GraphRelation(); lastDistributionStateModifaierRelation.setType(GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER.getProperty()); - RelationEndPoint relationEndPoint = new RelationEndPoint(NodeTypeEnum.Service, - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId()); + RelationEndPoint relationEndPoint = new RelationEndPoint(NodeTypeEnum.Service, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId()); lastDistributionStateModifaierRelation.setTo(relationEndPoint); - Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao - .deleteIncomingRelation(lastDistributionStateModifaierRelation); + Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao.deleteIncomingRelation(lastDistributionStateModifaierRelation); return deleteIncomingRelation; } @Override - public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus( - Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction) { + public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus(Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction) { log.debug("Start getCertifiedServicesWithDistStatus."); Set<Service> servicesSet = new HashSet<Service>(); if (distStatus != null && !distStatus.isEmpty()) { @@ -1143,8 +928,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper Map<String, Object> props = new HashMap<>(); props.putAll(propertiesToMatch); props.put(GraphPropertiesDictionary.DISTRIBUTION_STATUS.getProperty(), status.name()); - Either<Set<Service>, StorageOperationStatus> services = retrieveCertifiedServicesWithStatus( - inTransaction, servicesSet, props); + Either<Set<Service>, StorageOperationStatus> services = retrieveCertifiedServicesWithStatus(inTransaction, props); if (services.isRight()) { return services; } else { @@ -1153,14 +937,12 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } return Either.left(servicesSet); } else { - return retrieveCertifiedServicesWithStatus(inTransaction, servicesSet, propertiesToMatch); + return retrieveCertifiedServicesWithStatus(inTransaction, propertiesToMatch); } } - private Either<Set<Service>, StorageOperationStatus> retrieveCertifiedServicesWithStatus(boolean inTransaction, - Set<Service> servicesSet, Map<String, Object> props) { - Either<List<ServiceMetadataData>, TitanOperationStatus> criteriaRes = titanGenericDao - .getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); + private Either<Set<Service>, StorageOperationStatus> retrieveCertifiedServicesWithStatus(boolean inTransaction, Map<String, Object> props) { + Either<List<ServiceMetadataData>, TitanOperationStatus> criteriaRes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); return retrieveComponentsFromNodes(criteriaRes, inTransaction); } @@ -1170,41 +952,19 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper try { /* - * Map<String, Object> propertiesToMatch = new HashMap<>(); - * propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty - * (), LifecycleStateEnum.CERTIFIED.name()); - * Either<List<ServiceMetadataData>, TitanOperationStatus> - * lastVersionNodes = getLastVersion(NodeTypeEnum.Service, - * propertiesToMatch, ServiceMetadataData.class); if - * (lastVersionNodes.isRight() && lastVersionNodes.right().value() - * != TitanOperationStatus.NOT_FOUND) { return - * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus - * (lastVersionNodes.right().value())); } List<ServiceMetadataData> - * notCertifiedHighest = (lastVersionNodes.isLeft() ? - * lastVersionNodes.left().value() : new + * Map<String, Object> propertiesToMatch = new HashMap<>(); propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty (), LifecycleStateEnum.CERTIFIED.name()); Either<List<ServiceMetadataData>, TitanOperationStatus> + * lastVersionNodes = getLastVersion(NodeTypeEnum.Service, propertiesToMatch, ServiceMetadataData.class); if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return + * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus (lastVersionNodes.right().value())); } List<ServiceMetadataData> notCertifiedHighest = (lastVersionNodes.isLeft() ? lastVersionNodes.left().value() : new * ArrayList<ServiceMetadataData>()); * - * propertiesToMatch.put(GraphPropertiesDictionary. - * IS_HIGHEST_VERSION.getProperty(), true); - * Either<List<ServiceMetadataData>, TitanOperationStatus> - * componentsNodes = - * titanGenericDao.getByCriteria(NodeTypeEnum.Service, - * propertiesToMatch, ServiceMetadataData.class); if - * (componentsNodes.isRight() && componentsNodes.right().value() != - * TitanOperationStatus.NOT_FOUND) { return - * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus - * (componentsNodes.right().value())); } List<ServiceMetadataData> - * certifiedHighest = (componentsNodes.isLeft() ? - * componentsNodes.left().value() : new - * ArrayList<ServiceMetadataData>()); + * propertiesToMatch.put(GraphPropertiesDictionary. IS_HIGHEST_VERSION.getProperty(), true); Either<List<ServiceMetadataData>, TitanOperationStatus> componentsNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, propertiesToMatch, + * ServiceMetadataData.class); if (componentsNodes.isRight() && componentsNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus + * (componentsNodes.right().value())); } List<ServiceMetadataData> certifiedHighest = (componentsNodes.isLeft() ? componentsNodes.left().value() : new ArrayList<ServiceMetadataData>()); */ - Either<List<ServiceMetadataData>, TitanOperationStatus> listOfHighestComponents = this - .getListOfHighestComponents(NodeTypeEnum.Service, ServiceMetadataData.class); - if (listOfHighestComponents.isRight() - && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) { - return Either.right( - DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value())); + Either<List<ServiceMetadataData>, TitanOperationStatus> listOfHighestComponents = this.getListOfHighestComponents(NodeTypeEnum.Service, ServiceMetadataData.class); + if (listOfHighestComponents.isRight() && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) { + return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value())); } List<ServiceMetadataData> notCertifiedHighest = listOfHighestComponents.left().value(); @@ -1216,41 +976,29 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper // fetch from cache long startFetchAllFromCache = System.currentTimeMillis(); - Map<String, Long> components = notCertifiedHighest.stream() - .collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), - p -> p.getMetadataDataDefinition().getLastUpdateDate())); + Map<String, Long> components = notCertifiedHighest.stream().collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), p -> p.getMetadataDataDefinition().getLastUpdateDate())); - Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this - .getComponentsFromCacheForCatalog(components, ComponentTypeEnum.SERVICE); + Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this.getComponentsFromCacheForCatalog(components, ComponentTypeEnum.SERVICE); if (componentsFromCacheForCatalog.isLeft()) { - ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left() - .value(); + ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left().value(); List<Component> list = immutablePair.getLeft(); if (list != null) { for (Component component : list) { result.add((Service) component); } - List<String> addedUids = list.stream() - .map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()) - .collect(Collectors.toList()); - notCertifiedHighest = notCertifiedHighest.stream() - .filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())) - .collect(Collectors.toList()); + List<String> addedUids = list.stream().map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()).collect(Collectors.toList()); + notCertifiedHighest = notCertifiedHighest.stream().filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())).collect(Collectors.toList()); } } long endFetchAllFromCache = System.currentTimeMillis(); - log.debug("Fetch all catalog services metadata from cache took {} ms", - (endFetchAllFromCache - startFetchAllFromCache)); + log.debug("Fetch all catalog services metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache)); log.debug("The number of services added to catalog from cache is {}", result.size()); - log.debug("The number of services needed to be fetch as light component is {}", - notCertifiedHighest.size()); + log.debug("The number of services needed to be fetch as light component is {}", notCertifiedHighest.size()); for (ServiceMetadataData data : notCertifiedHighest) { - Either<Service, StorageOperationStatus> component = getLightComponent( - data.getMetadataDataDefinition().getUniqueId(), inTransaction); + Either<Service, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction); if (component.isRight()) { - log.debug("Failed to get Service for id = {}, error : {}. Skip service", data.getUniqueId(), - component.right().value()); + log.debug("Failed to get Service for id = {}, error : {}. Skip service", data.getUniqueId(), component.right().value()); } else { result.add(component.left().value()); } @@ -1261,19 +1009,17 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper if (false == inTransaction) { titanGenericDao.commit(); } - log.debug("Fetch all catalog services took " + (System.currentTimeMillis() - start) + " ms"); + log.debug("Fetch all catalog services took {} ms",(System.currentTimeMillis() - start)); } } - public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified( - boolean inTransaction) { + public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified(boolean inTransaction) { Map<String, Object> properties = new HashMap<>(); properties.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true); List<Service> result = new ArrayList<>(); - Either<List<ServiceMetadataData>, TitanOperationStatus> lastVersionNodes = titanGenericDao - .getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class); + Either<List<ServiceMetadataData>, TitanOperationStatus> lastVersionNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class); if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(lastVersionNodes.right().value())); @@ -1288,11 +1034,9 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } for (ServiceMetadataData data : latestServices) { - Either<Service, StorageOperationStatus> component = getLightComponent( - data.getMetadataDataDefinition().getUniqueId(), inTransaction); + Either<Service, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction); if (component.isRight()) { - log.debug("Failed to get Service for id = " + data.getUniqueId() + " error : " - + component.right().value() + " skip resource"); + log.debug("Failed to get Service for id = {} error : {} skip resource",data.getUniqueId(),component.right().value()); } else { result.add(component.left().value()); } @@ -1302,25 +1046,21 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } - private Either<List<Service>, StorageOperationStatus> getServiceListByCriteria(Map<String, Object> props, - boolean inTransaction) { + private Either<List<Service>, StorageOperationStatus> getServiceListByCriteria(Map<String, Object> props, boolean inTransaction) { props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Service.getName()); - Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao - .getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); + Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); if (byCriteria.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value())); } - List<Service> services = new ArrayList<Service>(); + List<Service> services = new ArrayList<>(); List<ServiceMetadataData> servicesDataList = byCriteria.left().value(); for (ServiceMetadataData data : servicesDataList) { - Either<Service, StorageOperationStatus> service = getService(data.getMetadataDataDefinition().getUniqueId(), - inTransaction); + Either<Service, StorageOperationStatus> service = getService(data.getMetadataDataDefinition().getUniqueId(), inTransaction); if (service.isLeft()) { services.add(service.left().value()); } else { - log.debug("Failed to fetch resource for name = " + data.getMetadataDataDefinition().getName() - + " and id = " + data.getUniqueId()); + log.debug("Failed to fetch resource for name = {} and id = {}",data.getMetadataDataDefinition().getName(),data.getUniqueId()); } } return Either.left(services); @@ -1334,8 +1074,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return getLatestServiceByUuid(uuid, true, inTransaction); } - private Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean isLatest, - boolean inTransaction) { + private Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean isLatest, boolean inTransaction) { Map<String, Object> props = new HashMap<String, Object>(); if (isLatest) { @@ -1346,17 +1085,23 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return getServiceListByCriteria(props, inTransaction); } - public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, - boolean inTransaction) { + @Override + public Either<List<Service>, StorageOperationStatus> getAll() { + Either<List<Service>, StorageOperationStatus> serviceListByCriteria = getServiceListByCriteria(new HashMap<>(), false); + if (serviceListByCriteria.isRight() && serviceListByCriteria.right().value() == StorageOperationStatus.NOT_FOUND) { + return Either.left(Collections.emptyList()); + } + return serviceListByCriteria; + } + + public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, boolean inTransaction) { Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName); return getServiceListByCriteria(props, inTransaction); } - public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, - Map<String, Object> additionalParams, boolean inTransaction) { - return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), - ValidationUtils.normaliseComponentName(name), version, additionalParams, inTransaction); + public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) { + return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normaliseComponentName(name), version, additionalParams, inTransaction); } @Override @@ -1364,8 +1109,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return getServiceByNameAndVersion(name, version, null, false); } - protected Either<Service, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, - String version, Map<String, Object> additionalParams, boolean inTransaction) { + protected Either<Service, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, String version, Map<String, Object> additionalParams, boolean inTransaction) { Map<String, Object> props = new HashMap<String, Object>(); props.put(nameKey, nameValue); props.put(GraphPropertiesDictionary.VERSION.getProperty(), version); @@ -1374,8 +1118,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper props.putAll(additionalParams); } - Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao - .getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); + Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class); if (byCriteria.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value())); @@ -1383,40 +1126,33 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper List<ServiceMetadataData> dataList = byCriteria.left().value(); if (dataList != null && !dataList.isEmpty()) { if (dataList.size() > 1) { - log.debug("More that one instance of resource for name =" + nameValue + " and version = " + version); + log.debug("More that one instance of resource for name ={} and version = {}",nameValue,version); return Either.right(StorageOperationStatus.GENERAL_ERROR); } ServiceMetadataData serviceData = dataList.get(0); - Either<Service, StorageOperationStatus> service = getService( - serviceData.getMetadataDataDefinition().getUniqueId(), inTransaction); + Either<Service, StorageOperationStatus> service = getService(serviceData.getMetadataDataDefinition().getUniqueId(), inTransaction); if (service.isRight()) { - log.debug("Failed to fetch resource for name = " + serviceData.getMetadataDataDefinition().getName() - + " and id = " + serviceData.getMetadataDataDefinition().getUniqueId()); + log.debug("Failed to fetch resource for name = {} and id = {}",serviceData.getMetadataDataDefinition().getName(),serviceData.getMetadataDataDefinition().getUniqueId()); } return service; } return Either.right(StorageOperationStatus.NOT_FOUND); } - protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, - Map<String, Object> additionalParams, boolean inTransaction) { - return (Either<T, StorageOperationStatus>) getServiceByNameAndVersion(name, version, additionalParams, - inTransaction); + protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) { + return (Either<T, StorageOperationStatus>) getServiceByNameAndVersion(name, version, additionalParams, inTransaction); } @Override - public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, - boolean inTransaction) { - return getByNamesAndVersion(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), name, version, null, - inTransaction); + public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, boolean inTransaction) { + return getByNamesAndVersion(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), name, version, null, inTransaction); } private TitanOperationStatus setServiceAdditionalInformationFromGraph(String uniqueId, Service service) { List<AdditionalInformationDefinition> additionalInformation = new ArrayList<>(); - Either<AdditionalInformationDefinition, TitanOperationStatus> either = additionalInformationOperation - .getAllAdditionalInformationParameters(NodeTypeEnum.Service, uniqueId, true); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = additionalInformationOperation.getAllAdditionalInformationParameters(NodeTypeEnum.Service, uniqueId, true); if (either.isRight()) { TitanOperationStatus status = either.right().value(); @@ -1436,8 +1172,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } private TitanOperationStatus setAllVersions(Service service) { - Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Service, - service.getVersion(), service, ServiceMetadataData.class); + Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Service, service.getVersion(), service, ServiceMetadataData.class); if (res.isRight()) { return res.right().value(); } @@ -1445,8 +1180,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return TitanOperationStatus.OK; } - public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, - boolean recursively, boolean inTransaction) { + public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) { List<ArtifactDefinition> artifacts = new ArrayList<>(); return Either.left(artifacts); } @@ -1466,40 +1200,33 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper @SuppressWarnings("unchecked") @Override - public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, - LifecycleStateEnum targetLifecycle, boolean inTransaction) { - return (Either<T, StorageOperationStatus>) cloneService((Service) other, version, targetLifecycle, - inTransaction); + public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) { + return (Either<T, StorageOperationStatus>) cloneService((Service) other, version, targetLifecycle, inTransaction); } @Override - public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, - boolean inTransaction) { + public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction) { return increaseAndGetComponentInstanceCounter(componentId, NodeTypeEnum.Service, inTransaction); } @Override - protected StorageOperationStatus validateCategories(Component currentComponent, Component component, - ComponentMetadataData componentData, NodeTypeEnum type) { + protected StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type) { List<CategoryDefinition> newcategories = component.getCategories(); CategoryDefinition newCat = newcategories.get(0); CategoryDefinition currentCategory = currentComponent.getCategories().get(0); StorageOperationStatus status = StorageOperationStatus.OK; if (newCat != null && newCat.getName() != null && false == newCat.getName().equals(currentCategory.getName())) { - log.debug( - "Going to update the category of the resource from " + currentCategory + " to " + newCat.getName()); + log.debug("Going to update the category of the resource from {} to {}",currentCategory,newCat.getName()); status = moveCategoryEdge(component, componentData, newCat, type); - log.debug("Going to update the category of the resource from " + currentCategory + " to " + newCat.getName() - + ". status is " + status); + log.debug("Going to update the category of the resource from {} to {}. status is {}",currentCategory,newCat.getName(),status); } return status; } @Override - protected <T extends Component> StorageOperationStatus updateDerived(Component component, - Component currentComponent, ComponentMetadataData componentData, Class<T> clazz) { + protected <T extends Component> StorageOperationStatus updateDerived(Component component, Component currentComponent, ComponentMetadataData componentData, Class<T> clazz) { log.debug("Derived class isn't supported for resource"); return null; } @@ -1525,8 +1252,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper } @Override - public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, - boolean inTransaction) { + public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction) { return internalMarkComponentToDelete(componentToDelete, inTransaction); } @@ -1542,8 +1268,7 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper @SuppressWarnings("unchecked") @Override - public <T> Either<T, StorageOperationStatus> getComponent(String id, - ComponentParametersView componentParametersView, boolean inTransaction) { + public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction) { Either<Service, StorageOperationStatus> component = getService(id, componentParametersView, inTransaction); if (component.isRight()) { @@ -1552,15 +1277,13 @@ public class ServiceOperation extends ComponentOperation implements IServiceOper return (Either<T, StorageOperationStatus>) component; } - public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction, - ComponentParametersView filterResultView) { - return (Either<Service, StorageOperationStatus>) updateComponentFilterResult(service, inTransaction, - titanGenericDao, service.getClass(), NodeTypeEnum.Service, filterResultView); + public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction, ComponentParametersView filterResultView) { + return (Either<Service, StorageOperationStatus>) updateComponentFilterResult(service, inTransaction, titanGenericDao, service.getClass(), NodeTypeEnum.Service, filterResultView); } @Override - protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, - ComponentParametersView filterResultView) { + protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterResultView) { return (Either<T, StorageOperationStatus>) updateService((Service) component, inTransaction, filterResultView); } + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java new file mode 100644 index 0000000000..01a730a052 --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java @@ -0,0 +1,27 @@ +package org.openecomp.sdc.be.model.operations.impl; + +import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge; +import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.operations.api.ToscaDefinitionPathCalculator; +import org.springframework.stereotype.Component; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +@Component("tosca-path-calculator") +public class ToscaDefinitionPathCalculatorImpl implements ToscaDefinitionPathCalculator { + + @Override + public List<String> calculateToscaDefinitionPath(ComponentInstance componentInstance, GraphEdge edge) { + String ownerId = getCapReqOwner(edge); + String instanceId = componentInstance.getUniqueId(); + return ownerId.equals(instanceId) ? Collections.singletonList(instanceId) : Arrays.asList(instanceId, ownerId); + } + + private String getCapReqOwner(GraphEdge edge) { + String ownerIdKey = GraphEdgePropertiesDictionary.OWNER_ID.getProperty(); + return (String)edge.getProperties().get(ownerIdKey); + } +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UniqueIdBuilder.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UniqueIdBuilder.java index c4bcf6d907..eb5d8f6797 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UniqueIdBuilder.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UniqueIdBuilder.java @@ -24,22 +24,24 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.resources.data.ResourceCategoryData; import org.openecomp.sdc.be.resources.data.ServiceCategoryData; import org.openecomp.sdc.be.resources.data.TagData; import org.openecomp.sdc.be.resources.data.UserData; +import org.openecomp.sdc.common.util.ValidationUtils; public class UniqueIdBuilder { private static String DOT = "."; private static final String HEAT_PARAM_PREFIX = "heat_"; - + public static String buildPropertyUniqueId(String resourceId, String propertyName) { return resourceId + DOT + propertyName; } - + public static String buildHeatParameterUniqueId(String resourceId, String propertyName) { return resourceId + DOT + HEAT_PARAM_PREFIX + propertyName; } @@ -103,7 +105,9 @@ public class UniqueIdBuilder { public static String buildAttributeUid(String resourceId, String attName) { return NodeTypeEnum.Attribute.getName() + DOT + resourceId + DOT + attName; } - + public static String buildArtifactUid(String parentId, String label) { + return parentId + DOT + label; + } public static String buildRequirementUid(String resourceId, String reqName) { return resourceId + DOT + reqName; } @@ -125,9 +129,8 @@ public class UniqueIdBuilder { public static String buildPropertyValueUniqueId(String parentId, String paramName) { return NodeTypeEnum.PropertyValue.getName() + DOT + parentId + DOT + paramName; } - - public static String buildArtifactByInterfaceUniqueId(String resourceId, String interfaceName, String operation, - String artifactLabel) { + + public static String buildArtifactByInterfaceUniqueId(String resourceId, String interfaceName, String operation, String artifactLabel) { return resourceId + DOT + interfaceName + DOT + operation + DOT + artifactLabel; } @@ -141,8 +144,7 @@ public class UniqueIdBuilder { // return resourceId + DOT + interfaceName + DOT +operation + DOT + // artifactLabel; // } - public static String buildArtifactByInterfaceUniqueIdAndRsrcId(String resourceId, String interfaceName, - String operation, String artifactLabel) { + public static String buildArtifactByInterfaceUniqueIdAndRsrcId(String resourceId, String interfaceName, String operation, String artifactLabel) { return resourceId + DOT + interfaceName + DOT + operation + DOT + artifactLabel; } @@ -183,6 +185,9 @@ public class UniqueIdBuilder { public static String buildCategoryUid(String categoryName, NodeTypeEnum type) { return type.getName() + DOT + categoryName; } + public static String buildComponentCategoryUid(String categoryName, VertexTypeEnum type) { + return type.getName() + DOT + ValidationUtils.normalizeCategoryName4Uniqueness(categoryName); + } public static String buildSubCategoryUid(String categoryUid, String subCategoryName) { return categoryUid + DOT + subCategoryName; @@ -195,6 +200,10 @@ public class UniqueIdBuilder { public static String buildResourceInstancePropertyValueUid(String resourceInstanceUniqueId, Integer index) { return resourceInstanceUniqueId + DOT + "property" + DOT + index; } + + public static String buildComponentPropertyUniqueId(String resourceId, String propertyName) { + return NodeTypeEnum.Property.getName() + DOT + resourceId + DOT + propertyName; + } public static String buildResourceInstanceAttributeValueUid(String resourceInstanceUniqueId, Integer index) { return resourceInstanceUniqueId + DOT + "attribute" + DOT + index; @@ -236,7 +245,7 @@ public class UniqueIdBuilder { return groupUniqueId + DOT + "property" + DOT + index; } - + public static String buildUserFunctionalMenuUid(String userId) { return userId + DOT + "functionalmenu"; diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java index 85bb56f39f..7c45f8f384 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java @@ -20,11 +20,8 @@ package org.openecomp.sdc.be.model.operations.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - +import com.thinkaurelius.titan.core.TitanVertex; +import fj.data.Either; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Direction; import org.apache.tinkerpop.gremlin.structure.Edge; @@ -47,20 +44,24 @@ import org.openecomp.sdc.common.datastructure.Wrapper; import org.openecomp.sdc.common.util.MethodActivationStatusEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; -import com.thinkaurelius.titan.core.TitanVertex; - -import fj.data.Either; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; @Component("user-operation") public class UserAdminOperation implements IUserAdminOperation { - @javax.annotation.Resource private TitanGenericDao titanGenericDao; - public UserAdminOperation() { + public UserAdminOperation(@Qualifier("titan-generic-dao") TitanGenericDao titanGenericDao) { super(); + this.titanGenericDao = titanGenericDao; + } private static Logger log = LoggerFactory.getLogger(UserAdminOperation.class.getName()); @@ -132,8 +133,7 @@ public class UserAdminOperation implements IUserAdminOperation { } } - private void validateUserExists(Wrapper<Either<User, ActionStatus>> resultWrapper, Wrapper<UserData> userWrapper, - String id) { + private void validateUserExists(Wrapper<Either<User, ActionStatus>> resultWrapper, Wrapper<UserData> userWrapper, String id) { Either<User, ActionStatus> result; if (id == null) { log.info("User userId is empty"); @@ -142,19 +142,10 @@ public class UserAdminOperation implements IUserAdminOperation { return; } id = id.toLowerCase(); - Either<UserData, TitanOperationStatus> either = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class); + Either<UserData, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class); if (either.isRight()) { - if (either.right().value() == TitanOperationStatus.NOT_FOUND) { - log.debug("User with userId {} not found", id); - result = Either.right(ActionStatus.USER_NOT_FOUND); - resultWrapper.setInnerElement(result); - } else { - log.debug("Problem get User with userId {}. Reason - {}", id, either.right().value().name()); - result = Either.right(ActionStatus.GENERAL_ERROR); - resultWrapper.setInnerElement(result); - } + resultWrapper.setInnerElement(getUserNotFoundError(id, either.right().value())); } else { userWrapper.setInnerElement(either.left().value()); } @@ -168,10 +159,10 @@ public class UserAdminOperation implements IUserAdminOperation { UserData userData = convertToUserData(user); result = titanGenericDao.createNode(userData, UserData.class); if (result.isRight()) { - log.debug("Problem while saving User {}. Reason - {}", userData.toString(), result.right().value().name()); + log.debug("Problem while saving User {}. Reason - {}",userData.toString(),result.right().value().name()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } - log.debug("User {} saved successfully", userData.toString()); + log.debug("User {} saved successfully",userData.toString()); return Either.left(convertToUser(result.left().value())); } finally { @@ -194,10 +185,10 @@ public class UserAdminOperation implements IUserAdminOperation { UserData userData = convertToUserData(user); result = titanGenericDao.updateNode(userData, UserData.class); if (result.isRight()) { - log.debug("Problem while updating User {}. Reason - {}", userData.toString(), result.right().value().name()); + log.debug("Problem while updating User {}. Reason - {}",userData.toString(),result.right().value().name()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } - log.debug("User {} updated successfully", userData.toString()); + log.debug("User {} updated successfully",userData.toString()); return Either.left(convertToUser(result.left().value())); } finally { @@ -229,10 +220,9 @@ public class UserAdminOperation implements IUserAdminOperation { @Override public Either<User, ActionStatus> deleteUserData(String id) { Either<User, ActionStatus> result; - Either<UserData, TitanOperationStatus> eitherGet = titanGenericDao - .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class); + Either<UserData, TitanOperationStatus> eitherGet = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), id, UserData.class); if (eitherGet.isRight()) { - log.debug("Problem while retriving user with userId {}", id); + log.debug("Problem while retriving user with userId {}",id); if (eitherGet.right().value() == TitanOperationStatus.NOT_FOUND) { result = Either.right(ActionStatus.USER_NOT_FOUND); } else { @@ -264,11 +254,11 @@ public class UserAdminOperation implements IUserAdminOperation { private void deleteUser(Wrapper<Either<User, ActionStatus>> resultWrapper, UserData userData) { Either<UserData, TitanOperationStatus> eitherDelete = titanGenericDao.deleteNode(userData, UserData.class); if (eitherDelete.isRight()) { - log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), eitherDelete.right().value().name()); + log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),eitherDelete.right().value().name()); Either<User, ActionStatus> result = Either.right(ActionStatus.GENERAL_ERROR); resultWrapper.setInnerElement(result); } else { - log.debug("User {} deleted successfully", userData.toString()); + log.debug("User {} deleted successfully",userData.toString()); Either<User, ActionStatus> result = Either.left(convertToUser(eitherDelete.left().value())); resultWrapper.setInnerElement(result); } @@ -277,10 +267,9 @@ public class UserAdminOperation implements IUserAdminOperation { private void validateUserHasNoConnections(Wrapper<Either<User, ActionStatus>> resultWrapper, UserData userData) { if (resultWrapper.isEmpty()) { - Either<List<Edge>, TitanOperationStatus> edgesForNode = titanGenericDao.getEdgesForNode(userData, - Direction.BOTH); + Either<List<Edge>, TitanOperationStatus> edgesForNode = titanGenericDao.getEdgesForNode(userData, Direction.BOTH); if (edgesForNode.isRight()) { - log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), edgesForNode.right().value().name()); + log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),edgesForNode.right().value().name()); Either<User, ActionStatus> result = Either.right(ActionStatus.GENERAL_ERROR); resultWrapper.setInnerElement(result); } else { @@ -293,35 +282,31 @@ public class UserAdminOperation implements IUserAdminOperation { } } - public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user, - Map<String, Object> properties) { + public Either<List<Edge>, StorageOperationStatus> getUserPandingTasksList(User user, Map<String, Object> properties) { UserData userData = convertToUserData(user); - Either<TitanVertex, TitanOperationStatus> vertexUser = titanGenericDao - .getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId()); + Either<TitanVertex, TitanOperationStatus> vertexUser = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User), user.getUserId()); if (vertexUser.isRight()) { - log.debug("Problem while deleting User {}. Reason - {}", userData.toString(), vertexUser.right().value().name()); + log.debug("Problem while deleting User {}. Reason - {}",userData.toString(),vertexUser.right().value().name()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } List<Edge> pandingTasks = new ArrayList<>(); - Either<List<Edge>, TitanOperationStatus> edges = titanGenericDao - .getOutgoingEdgesByCriteria(vertexUser.left().value(), GraphEdgeLabels.STATE, properties); + Either<List<Edge>, TitanOperationStatus> edges = titanGenericDao.getOutgoingEdgesByCriteria(vertexUser.left().value(), GraphEdgeLabels.STATE, properties); if (edges.isRight() || edges.left().value() == null) { if (edges.right().value() == TitanOperationStatus.NOT_FOUND) { return Either.left(pandingTasks); } else { - log.debug("Problem while deleting User {}", userData.toString(), edges.right().value().name()); + log.debug("Problem while deleting User {}. Reason - ",userData.toString(),edges.right().value().name()); return Either.right(StorageOperationStatus.GENERAL_ERROR); } } for (Edge edge : edges.left().value()) { Vertex componentVertex = edge.inVertex(); - VertexProperty<Object> property = componentVertex - .property(GraphPropertiesDictionary.IS_DELETED.getProperty()); + VertexProperty<Object> property = componentVertex.property(GraphPropertiesDictionary.IS_DELETED.getProperty()); if (!property.isPresent()) { pandingTasks.add(edge); } else { @@ -347,35 +332,64 @@ public class UserAdminOperation implements IUserAdminOperation { propertiesToMatch.put(GraphPropertiesDictionary.USER_STATUS.getProperty(), status); } - Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getByCriteria(NodeTypeEnum.User, - propertiesToMatch, UserData.class); + Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getByCriteria(NodeTypeEnum.User, propertiesToMatch, UserData.class); titanGenericDao.commit(); - if (userNodes.isRight()) { - // in case of NOT_FOUND from Titan return empty list - if (userNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { - return Either.left(result); - } else { - log.error("Problem while getting all users with role {}. Reason - {}", role, userNodes.right().value().name()); - return Either.right(ActionStatus.GENERAL_ERROR); - } - } else { - List<UserData> userDataList = userNodes.left().value(); - if (userDataList != null) { - for (UserData userData : userDataList) { - User user = convertToUser(userData); - result.add(user); - } - return Either.left(result); - } - log.debug("No users were found with role {}", role); - return Either.left(result); - } + return convertToUsers(role, userNodes); } finally { titanGenericDao.commit(); } } + private Either<List<User>, ActionStatus> convertToUsers(String role, Either<List<UserData>, TitanOperationStatus> userNodes) { + + if (userNodes.isRight()) { + // in case of NOT_FOUND from Titan return empty list + if (userNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) { + return Either.left(Collections.emptyList()); + } else { + log.error("Problem while getting all users with role {}. Reason - {}", role, userNodes.right().value().name()); + return Either.right(ActionStatus.GENERAL_ERROR); + } + } else { + List<UserData> userDataList = userNodes.left().value(); + if (userDataList != null) { + return Either.left(convertToUsers(userDataList)); + } + log.debug("No users were found with role {}", role); + return Either.left(Collections.emptyList()); + } + } + + private List<User> convertToUsers(List<UserData> usersData) { + List<User> result = new ArrayList<>(); + for (UserData userData : usersData) { + User user = convertToUser(userData); + result.add(user); + } + return result; + } + + @Override + public Either<List<User>, ActionStatus> getAllUsers() { + try { + Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getAll(NodeTypeEnum.User, UserData.class); + return convertToUsers("", userNodes); + } finally { + titanGenericDao.commit(); + } + } + + private Either<User, ActionStatus> getUserNotFoundError(String uid, TitanOperationStatus status) { + if (status == TitanOperationStatus.NOT_FOUND) { + log.debug("User with userId {} not found", uid); + return Either.right(ActionStatus.USER_NOT_FOUND); + } else { + log.debug("Problem get User with userId {}. Reason - {}", uid, status.name()); + return Either.right(ActionStatus.GENERAL_ERROR); + } + } + protected User convertToUser(UserData userData) { User user = new User(); user.setUserId(userData.getUserId()); @@ -403,6 +417,7 @@ public class UserAdminOperation implements IUserAdminOperation { return userData; } + @Override public Either<ImmutablePair<User, FunctionalMenuInfo>, ActionStatus> getUserDataWithFunctionalMenu(String userId) { Either<User, ActionStatus> userData = getUserData(userId, true, true); @@ -424,8 +439,7 @@ public class UserAdminOperation implements IUserAdminOperation { functionalMenuInfo.setFunctionalMenu(userFunctionalMenuData.getFunctionalMenu()); } - ImmutablePair<User, FunctionalMenuInfo> result = new ImmutablePair<User, FunctionalMenuInfo>(user, - functionalMenuInfo); + ImmutablePair<User, FunctionalMenuInfo> result = new ImmutablePair<User, FunctionalMenuInfo>(user, functionalMenuInfo); return Either.left(result); } @@ -441,8 +455,7 @@ public class UserAdminOperation implements IUserAdminOperation { userId = userId.toLowerCase(); String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId); - Either<UserFunctionalMenuData, TitanOperationStatus> either = titanGenericDao.getNode( - UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.UserFunctionalMenu), uid, UserFunctionalMenuData.class); + Either<UserFunctionalMenuData, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.UserFunctionalMenu), uid, UserFunctionalMenuData.class); return either; } @@ -457,8 +470,7 @@ public class UserAdminOperation implements IUserAdminOperation { String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId); UserFunctionalMenuData functionalMenuData = new UserFunctionalMenuData(newFunctionalMenu, uid); - Either<UserFunctionalMenuData, TitanOperationStatus> createNode = titanGenericDao - .createNode(functionalMenuData, UserFunctionalMenuData.class); + Either<UserFunctionalMenuData, TitanOperationStatus> createNode = titanGenericDao.createNode(functionalMenuData, UserFunctionalMenuData.class); if (createNode.isRight()) { return Either.right(createNode.right().value()); @@ -473,8 +485,7 @@ public class UserAdminOperation implements IUserAdminOperation { } else { UserFunctionalMenuData userFunctionalMenuData = functionalMenu.left().value(); userFunctionalMenuData.setFunctionalMenu(newFunctionalMenu); - Either<UserFunctionalMenuData, TitanOperationStatus> updateNode = titanGenericDao - .updateNode(userFunctionalMenuData, UserFunctionalMenuData.class); + Either<UserFunctionalMenuData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(userFunctionalMenuData, UserFunctionalMenuData.class); if (updateNode.isRight()) { return Either.right(updateNode.right().value()); diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationErrorInformer.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationErrorInformer.java new file mode 100644 index 0000000000..952c0672cc --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationErrorInformer.java @@ -0,0 +1,39 @@ +package org.openecomp.sdc.be.model.operations.migration; + +import org.apache.commons.lang3.StringUtils; +import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * to be moved with all operations to the migration project + */ +@Deprecated +public class MigrationErrorInformer { + + private static Logger log = LoggerFactory.getLogger(MigrationErrorInformer.class); + private static Set<String> malformedVFs = new HashSet<>(); + + public static void addMalformedVF(String vfId) { + malformedVFs.add(vfId); + } + + public static void logIfServiceUsingMalformedVfs(Component service) { + List<ComponentInstance> componentInstances = service.getComponentInstances(); + if (componentInstances != null && !componentInstances.isEmpty() && !malformedVFs.isEmpty()) { + Set<String> serviceInstances = componentInstances.stream().map(ComponentInstance::getComponentUid).collect(Collectors.toSet()); + serviceInstances.retainAll(malformedVFs); + if (!serviceInstances.isEmpty()) { + log.error(String.format("Service %s is using malformed VFs: %s", service.getUniqueId(), StringUtils.join(serviceInstances, ','))); + } + } + } + + +} diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java index fd6563ac4f..fe5d79a266 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java @@ -20,11 +20,12 @@ package org.openecomp.sdc.be.model.operations.utils; +import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.LifecycleStateEnum; import org.openecomp.sdc.be.model.Resource; import org.openecomp.sdc.be.model.Service; -import org.openecomp.sdc.be.model.operations.api.IComponentOperation; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.IResourceOperation; import org.openecomp.sdc.be.model.operations.api.IServiceOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; @@ -56,52 +57,26 @@ public class ComponentValidationUtils { return true; } - public static boolean canWorkOnResource(String resourceId, IResourceOperation resourceOperation, - String userId) { - Either<Resource, StorageOperationStatus> getResourceResult = resourceOperation.getLightComponent(resourceId, - false); - - if (getResourceResult.isRight()) { - log.debug("Failed to retrive resource, resource id {}", resourceId); - return false; - } - Resource resource = getResourceResult.left().value(); - - return canWorkOnResource(resource, userId); - - } - - public static boolean canWorkOnService(String serviceId, IServiceOperation serviceOperation, String userId) { - Either<Service, StorageOperationStatus> getResourceResult = serviceOperation.getLightComponent(serviceId, - false); - - if (getResourceResult.isRight()) { - log.debug("Failed to retrieve service, service id {}", serviceId); - return false; - } - Service service = getResourceResult.left().value(); - - return canWorkOnComponent(service, userId); - - } - - public static boolean canWorkOnComponent(String componentId, IComponentOperation componentOperation, - String userId) { - Either<Component, StorageOperationStatus> getResourceResult = componentOperation.getLightComponent(componentId, - false); + public static boolean canWorkOnComponent(String componentId, ToscaOperationFacade toscaOperationFacade, String userId) { + + Either<Component, StorageOperationStatus> getResourceResult = toscaOperationFacade.getToscaElement(componentId, JsonParseFlagEnum.ParseMetadata); if (getResourceResult.isRight()) { log.debug("Failed to retrieve component, component id {}", componentId); return false; } - Component service = getResourceResult.left().value(); + Component component = getResourceResult.left().value(); - return canWorkOnComponent(service, userId); + return canWorkOnComponent(component, userId); } - + public static boolean canWorkOnComponent(Component component, String userId) { + return canWorkOnComponent(component.getLifecycleState(), component.getLastUpdaterUserId(), userId); + } + + private static boolean canWorkOnComponent(LifecycleStateEnum lifecycleState, String lastUpdaterUserId, String userId) { // verify resource is checked-out - if (component.getLifecycleState() != LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT) { + if (lifecycleState != LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT) { log.debug("resource is not checked-out"); return false; } @@ -113,7 +88,7 @@ public class ComponentValidationUtils { } // verify resource last update user is the current user - if (!userId.equals(component.getLastUpdaterUserId())) { + if (!userId.equals(lastUpdaterUserId)) { log.debug("resource last updater userId is not {}", userId); return false; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/GraphDeleteUtil.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/GraphDeleteUtil.java index 1d78252de2..1671b2d98b 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/GraphDeleteUtil.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/GraphDeleteUtil.java @@ -58,41 +58,16 @@ public class GraphDeleteUtil { Map<String, Object> properties = null; if (log.isDebugEnabled()) { properties = getProperties(incomingVertex); - log.debug("Going to delete vertex {}", properties); + log.debug("Going to delete vertex {}",properties); } incomingVertex.remove(); if (log.isDebugEnabled()) { - log.debug("After deleting vertex {}", properties); + log.debug("After deleting vertex {}",properties); } } } - // - // if (edgesCreatorIterable != null) { - // for (Edge edge : edgesCreatorIterable) { - // - // Vertex incomingVertex = edge.getVertex(Direction.IN); - // Iterable<Edge> outEdges = incomingVertex.getEdges(Direction.OUT); - // if (outEdges != null) { - // if (outEdges.iterator().hasNext()) { - // return TitanOperationStatus.CANNOT_DELETE_NON_LEAF_NODE; - // } else { - // Map<String, Object> properties = null; - // if (log.isDebugEnabled()) { - // properties = ElementHelper.getProperties(incomingVertex); - // log.debug("Going to delete vertex {}", properties); - // } - // incomingVertex.remove(); - // if (log.isDebugEnabled()) { - // log.debug("After deleting vertex {}", properties); - // } - // } - // } - // - // } - // } - return TitanOperationStatus.OK; } |