aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java1170
1 files changed, 0 insertions, 1170 deletions
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
deleted file mode 100644
index 818089feee..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java
+++ /dev/null
@@ -1,1170 +0,0 @@
-/*-
- * ============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.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-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.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.operations.api.ICapabilityInstanceOperation;
-import org.openecomp.sdc.be.resources.data.CapabilityData;
-import org.openecomp.sdc.be.resources.data.CapabilityInstData;
-import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
-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.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-/**
- * public class CapabilityInstanceOperation provides methods for CRUD operations for CapabilityInstance on component instance level
- *
- * @author ns019t
- *
- */
-@Component("capability-instance-operation")
-public class CapabilityInstanceOperation extends AbstractOperation implements ICapabilityInstanceOperation {
-
- private static Logger log = LoggerFactory.getLogger(CapabilityOperation.class.getName());
-
- @Autowired
- private PropertyOperation propertyOperation;
-
- @Autowired
- private CapabilityOperation capabilityOperation;
-
- /**
- * create capability instance of capability with property values for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @param propertyValues
- * @param validateCapabilityInstExistence
- * @param capabilityName
- * @return
- */
- @Override
- public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence) {
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- Wrapper<CapabilityData> overrideCapabilityDataWrapper = new Wrapper<>();
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper = new Wrapper<>();
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes = null;
- CapabilityInstData createdCapabilityInstance = null;
-
- Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper = new Wrapper<>();
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
- Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes = null;
- Wrapper<String> createdCapabilityInstanceIdWrapper = new Wrapper<>();
- if (validateCapabilityInstExistence) {
- validateCapabilityInstanceExistence(resourceInstanceId, capabilityId, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityRes = getCapabilitiesOfResourceInstance(resourceInstanceId, capabilityId, capabilityName, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityDefinitionRes = getCapabiityDefinition(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, getCapabilityRes);
- }
- if (errorWrapper.isEmpty()) {
- createCapabilityRes = createCapabilityInstanceOnGraph(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, overrideCapabilityDefinitionWrapper, getCapabilityDefinitionRes);
- }
- if (errorWrapper.isEmpty() && overrideCapabilityDefinitionWrapper.getInnerElement().getProperties() != null) {
- createdCapabilityInstance = validateCapabilityInstanceProperties(resourceInstanceId, propertyValues, errorWrapper, overrideCapabilityDefinitionWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
- if (errorWrapper.isEmpty()) {
- addPropertyValuesRes = addPropertyValueToCapabilityInstance(resourceInstanceId, propertyValues, errorWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
- Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> result;
- if (errorWrapper.isEmpty()) {
- Map<CapabilityInstData, List<PropertyValueData>> resultMap = new HashMap<>();
- resultMap.put(createdCapabilityInstance, addPropertyValuesRes.left().value());
- result = Either.left(resultMap);
- } else {
- result = Either.right(errorWrapper.getInnerElement());
- }
- return result;
- }
-
- @Override
- public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence) {
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- Wrapper<TitanVertex> overrideCapabilityDataWrapper = new Wrapper<>();
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper = new Wrapper<>();
- Either<TitanVertex, TitanOperationStatus> createCapabilityRes = null;
- TitanVertex createdCapabilityInstance = null;
-
- Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper = new Wrapper<>();
- Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
- TitanOperationStatus addPropertyValuesRes = null;
- Wrapper<String> createdCapabilityInstanceIdWrapper = new Wrapper<>();
- if (validateCapabilityInstExistence) {
- validateCapabilityInstanceExistence(resourceInstanceVertex, resourceInstanceId, capabilityId, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityRes = getCapabilitiesOfResourceInstance(resourceInstanceVertex, resourceInstanceId, capabilityId, capabilityName, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityDefinitionRes = getCapabiityDefinitionByVertex(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, getCapabilityRes);
- }
- if (errorWrapper.isEmpty()) {
- createCapabilityRes = createCapabilityInstanceOnGraphByVertex(resourceInstanceVertex, resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, overrideCapabilityDefinitionWrapper, getCapabilityDefinitionRes);
- }
- if (errorWrapper.isEmpty() && overrideCapabilityDefinitionWrapper.getInnerElement().getProperties() != null) {
- createdCapabilityInstance = validateCapabilityInstancePropertiesByVertex(resourceInstanceId, propertyValues, errorWrapper, overrideCapabilityDefinitionWrapper, createCapabilityRes.left().value(), defaultPropertiesWrapper,
- createdCapabilityInstanceIdWrapper);
- }
- if (errorWrapper.isEmpty()) {
- addPropertyValuesRes = addPropertyValueToCapabilityInstanceByVertex(resourceInstanceId, propertyValues, errorWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
-
- return addPropertyValuesRes;
- }
-
- 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 {}.",createdCapabilityInstanceIdWrapper.getInnerElement());
- addPropertyValuesRes = addPropertyValuesToCapabilityInstance(createCapabilityRes.left().value(), propertyValues, defaultPropertiesWrapper.getInnerElement());
- if (addPropertyValuesRes.isRight()) {
- errorWrapper.setInnerElement(addPropertyValuesRes.right().value());
- 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());
- return addPropertyValuesRes;
- }
-
- private TitanOperationStatus addPropertyValueToCapabilityInstanceByVertex(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Either<TitanVertex, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) {
- log.trace("Before adding property values to capability instance {}", createdCapabilityInstanceIdWrapper.getInnerElement());
- 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 {} of resource instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.trace("After adding property values to capability instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return addPropertyValuesRes;
- }
-
- private CapabilityInstData validateCapabilityInstanceProperties(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper,
- Wrapper<String> createdCapabilityInstanceIdWrapper) {
- CapabilityInstData createdCapabilityInstance;
- createdCapabilityInstance = createCapabilityRes.left().value();
- 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());
- Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues);
- if (result.isRight()) {
- errorWrapper.setInnerElement(result.right().value());
- 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());
- 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()));
- defaultPropertiesWrapper.setInnerElement(defaultProperties);
- log.trace("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("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 {}, status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return createCapabilityRes;
- }
-
- private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceOnGraph(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<CapabilityData> overrideCapabilityDataWrapper,
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes) {
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes;
- log.debug("Before creating capability instance of capability {} on graph.", capabilityId);
- overrideCapabilityDefinitionWrapper.setInnerElement(getCapabilityDefinitionRes.left().value());
- CapabilityInstData capabilityInstance = buildCapabilityInstanceData(resourceInstanceId, overrideCapabilityDefinitionWrapper.getInnerElement());
- createCapabilityRes = createCapabilityInstanceOnGraph(resourceInstanceId, overrideCapabilityDataWrapper.getInnerElement(), capabilityInstance);
- if (createCapabilityRes.isRight()) {
- errorWrapper.setInnerElement(createCapabilityRes.right().value());
- 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());
- 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 {} 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 {} of resource instance {}, status is {} ", capabilityId, resourceInstanceId, 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 {} 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 {} of resource instance {}, status is {}", 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 {} for resource instance {}", capabilityId, resourceInstanceId);
-
- TitanVertex 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 {} of resource instance {}, status is {}", 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 {} 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 {} of resource instance {}, status is {}", 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, " 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 {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, 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 {} 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 {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- } else {
- capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value();
- if (capabilityInstOfCapabilityAlreadyExists) {
- errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST);
- 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 {} 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 {} 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 {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- } else {
- capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value();
- if (capabilityInstOfCapabilityAlreadyExists) {
- errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST);
- 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 {} 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 {} 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 {} of resource instance, status is {}", createdCapabilityInstance.getUniqueId(), error);
- break;
- } else {
- createdPropertyValues.add(addPropertyValueRes.left().value());
- }
- log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), createdCapabilityInstance.getUniqueId(), error);
- }
- if (error == null) {
- return Either.left(createdPropertyValues);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus addPropertyValuesToCapabilityInstance(TitanVertex createdCapabilityInstancevertex, List<ComponentInstanceProperty> propertyValues, Map<String, PropertyDefinition> defaultProperties) {
- TitanOperationStatus error = null;
- String id = (String) titanGenericDao.getProperty(createdCapabilityInstancevertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- for (ComponentInstanceProperty property : propertyValues) {
- 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 {} of resource instance. status is {}", id, error);
- break;
- }
- log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), id, error);
- }
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-
- private PropertyValueData buildPropertyValueData(String propertyName, String propertyType, String propertyValue, String capabilityInstanceId) {
- PropertyValueData propertyData = new PropertyValueData();
- String uniqueId = UniqueIdBuilder.buildPropertyValueUniqueId(capabilityInstanceId, propertyName);
- Long creationTime = System.currentTimeMillis();
- propertyData.setUniqueId(uniqueId);
- propertyData.setValue(propertyValue);
- propertyData.setType(propertyType);
- propertyData.setCreationTime(creationTime);
- propertyData.setModificationTime(creationTime);
- return propertyData;
- }
-
- private Either<PropertyValueData, TitanOperationStatus> addPropertyValueToCapabilityInstance(CapabilityInstData createdCapabilityInstance, PropertyValueData propertyValue, PropertyDefinition propertyDefinition) {
- TitanOperationStatus error = null;
- Map<String, Object> props = null;
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
- PropertyValueData createdValue = null;
- 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 {} of resource instance. status is {}", createdCapabilityInstance.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 {} to capability instance {}", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId());
- createdValue = createValueRes.left().value();
- props = new HashMap<>();
- props.put(GraphPropertiesDictionary.PROPERTY_NAME.name(), propertyDefinition.getName());
- props.put(GraphPropertiesDictionary.PROPERTY_ID.name(), propertyDefinition.getUniqueId());
- 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 {} to property value {}. status is {}", createdCapabilityInstance.getUniqueId(), createdValue.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 {} 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 {} to property {}. status is {}", createdValue.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);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus addPropertyValueToCapabilityInstance(TitanVertex createdCapabilityInstanceVertex, PropertyValueData propertyValue, PropertyDefinition propertyDefinition, String id) {
- TitanOperationStatus error = null;
- Map<String, Object> props = null;
- TitanOperationStatus createRelationRes;
- log.trace("Before creating property value node {} on graph.", propertyValue.getUniqueId());
- Either<TitanVertex, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue);
- if (createValueRes.isRight()) {
- error = createValueRes.right().value();
- 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 {} 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());
- createdPropVertex = createValueRes.left().value();
- createRelationRes = titanGenericDao.createEdge(createdCapabilityInstanceVertex, createdPropVertex, GraphEdgeLabels.PROPERTY_VALUE, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- createdId = (String) titanGenericDao.getProperty(createdPropVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- 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 {} 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 {} to property {}. status is {}", createdId, 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 TitanOperationStatus.OK;
- }
- return error;
- }
-
- private Either<Boolean, TitanOperationStatus> validateCapabilityInstanceProperties(Map<String, PropertyDefinition> defaultProperties, List<ComponentInstanceProperty> propertyValues) {
- Either<Boolean, TitanOperationStatus> result = Either.left(true);
- for (ComponentInstanceProperty property : propertyValues) {
- result = validateUpdateCapabilityInstancePropertyValue(property, defaultProperties);
- if (result.isRight()) {
- break;
- }
- }
- return result;
- }
-
- private Either<Boolean, TitanOperationStatus> validateUpdateCapabilityInstancePropertyValue(ComponentInstanceProperty property, Map<String, PropertyDefinition> defaultProperties) {
- PropertyDefinition defaultProperty;
- String propertyName = property.getName();
- Either<Boolean, TitanOperationStatus> result = null;
- if (defaultProperties.containsKey(propertyName)) {
- defaultProperty = defaultProperties.get(propertyName);
- String propertyType = property.getType() == null || property.getType().isEmpty() ? defaultProperty.getType() : property.getType();
-
- String innerType = null;
- if (property.getSchema() != null && property.getSchema().getProperty() != null)
- innerType = property.getSchema().getProperty().getType();
- if (innerType == null && defaultProperty.getSchema() != null && defaultProperty.getSchema().getProperty() != null)
- innerType = defaultProperty.getSchema().getProperty().getType();
-
- if (defaultProperty.getType().equals(propertyType)) {
- String propertyValue = property.getValue();
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Failed to update property value. status is {}", status);
- result = Either.right(status);
- }
- if (result == null) {
- Either<Object, Boolean> updatedPropertyValueRes = propertyOperation.validateAndUpdatePropertyValue(propertyType, propertyValue, innerType, allDataTypes.left().value());
- if (updatedPropertyValueRes.isLeft()) {
- if (updatedPropertyValueRes.left().value() != null)
- property.setDefaultValue(updatedPropertyValueRes.left().value().toString());
- result = Either.left(true);
- } else {
- result = Either.right(TitanOperationStatus.INVALID_PROPERTY);
- }
- }
- log.debug("The property with name {} has invalid type {} or invalid value {}.", propertyName, propertyType, propertyValue);
-
- } else {
- result = Either.right(TitanOperationStatus.PROPERTY_NAME_ALREADY_EXISTS);
- log.debug("The property with name {} and different type already exists.", propertyName);
- }
- } else {
- result = Either.right(TitanOperationStatus.NOT_FOUND);
- log.debug("Failed to find property with name {}.", propertyName);
- }
- return result;
- }
-
- /**
- * validate capability instance uniqueness
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- @Override
- public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, String capabilityId) {
- Either<Boolean, TitanOperationStatus> result = null;
- TitanOperationStatus error;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<Edge, TitanOperationStatus> getCapabilityInstanceEdgeRes = titanGenericDao.getOutgoingEdgeByCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CAPABILITY_INST, props);
- if (getCapabilityInstanceEdgeRes.isRight()) {
- error = getCapabilityInstanceEdgeRes.right().value();
- if (error.equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.left(false);
- } else {
- log.debug("Failed to get outgoing edge for resource instance {}. status is {}.", resourceInstanceId, error);
- result = Either.right(error);
- }
- }
- if (result == null) {
- result = Either.left(true);
- }
- return result;
- }
-
- @Override
- public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId) {
- Either<Boolean, TitanOperationStatus> result = null;
- TitanOperationStatus error;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<Edge, TitanOperationStatus> getCapabilityInstanceEdgeRes = titanGenericDao.getOutgoingEdgeByCriteria(instanceVertex, GraphEdgeLabels.CAPABILITY_INST, props);
- if (getCapabilityInstanceEdgeRes.isRight()) {
- error = getCapabilityInstanceEdgeRes.right().value();
- if (error.equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.left(false);
- } else {
- log.debug("Failed to get outgoing edge for resource instance {} status is {}", resourceInstanceId, error);
- result = Either.right(error);
- }
- }
- if (result == null) {
- result = Either.left(true);
- }
- return result;
- }
-
- private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceOnGraph(String resourceInstanceId, CapabilityData overrideCapabilityData, CapabilityInstData capabilityInstance) {
- log.debug("Before creation of capability instance of capability {} for resource instance {}", overrideCapabilityData.getUniqueId(), resourceInstanceId);
-
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
- CapabilityInstData createdCapabilityInstance = null;
- String capabilityInstanceId = null;
- TitanOperationStatus error = null;
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance, CapabilityInstData.class);
- if (createCapabilityInstanceRes.isRight()) {
- error = createCapabilityInstanceRes.right().value();
- 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 {} for resource instance {}. status is {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error);
- if (error == null) {
- createdCapabilityInstance = createCapabilityInstanceRes.left().value();
- capabilityInstanceId = createdCapabilityInstance.getUniqueId();
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityData.getUniqueId());
- UniqueIdData resourceInstanceIdData = new UniqueIdData(NodeTypeEnum.ResourceInstance, resourceInstanceId);
- log.debug("Before associating resource instance {} to capability instance.", resourceInstanceId);
- createRelationRes = titanGenericDao.createRelation(resourceInstanceIdData, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to assotiate resource instance {} to capability instance {}. status is {}", 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 {} 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 {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error);
- }
- log.debug("After associating capability instance {} to capability {}. status is {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error);
- }
- if (error == null) {
- return createCapabilityInstanceRes;
- }
- return Either.right(error);
- }
-
- 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 {} for resource instance {}", overrideCapabilityDataVertex, resourceInstanceId);
-
- TitanOperationStatus createRelationRes;
- TitanVertex createdCapabilityInstance = null;
- String capabilityInstanceId = null;
- TitanOperationStatus error = null;
- Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance);
- if (createCapabilityInstanceRes.isRight()) {
- error = createCapabilityInstanceRes.right().value();
- 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 {} for resource instance {} status is {}", overrideCapabilityDataId, resourceInstanceId, error);
- if (error == null) {
- createdCapabilityInstance = createCapabilityInstanceRes.left().value();
- capabilityInstanceId = (String) titanGenericDao.getProperty(createdCapabilityInstance, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityDataId);
- log.debug("Before associating resource instance {} to capability instance.", resourceInstanceId);
-
- createRelationRes = titanGenericDao.createEdge(riVertex, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to assotiate resource instance {} to capability instance {} status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After associating resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- }
- if (error == null) {
- 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 {} to capability {} status is {}", capabilityInstanceId, overrideCapabilityDataId, error);
- }
- log.debug("After associating capability instance {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityDataId, error);
- }
- if (error == null) {
- return createCapabilityInstanceRes;
- }
- return Either.right(error);
- }
-
- private CapabilityInstData buildCapabilityInstanceData(String resourceInstanceId, CapabilityDefinition capability) {
- CapabilityInstData capabilityInstance = new CapabilityInstData();
- Long creationTime = System.currentTimeMillis();
- String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(resourceInstanceId, capability.getName());
-
- capabilityInstance.setCreationTime(creationTime);
- capabilityInstance.setModificationTime(creationTime);
- capabilityInstance.setUniqueId(uniqueId);
-
- return capabilityInstance;
- }
-
- /**
- * delete capability instance from resource instance
- *
- * @param resourceInstanceId
- * @param capabilityInstanceId
- * @return
- */
- @Override
- public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId) {
- 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("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 {} for resource instance {}. status is {}", 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());
- }
- return Either.right(error);
- }
-
- private Either<Boolean, TitanOperationStatus> deleteAllPropertyValuesOfCapabilityInstance(String resourceInstanceId, String capabilityInstanceId) {
- 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 {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- if (error == null) {
- deletePropertiesPairs = getPropertyValuesRes.left().value();
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyPair : deletePropertiesPairs) {
- Either<PropertyValueData, TitanOperationStatus> deletePropertyRes = titanGenericDao.deleteNode(propertyPair.getLeft(), PropertyValueData.class);
- if (deletePropertyRes.isRight()) {
- error = deletePropertyRes.right().value();
- 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 from resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- if (error == null) {
- return Either.left(true);
- }
- return Either.right(error);
- }
-
- /**
- * 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>
- */
- @Override
- public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String 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 {}. status is {}", resourceInstanceId, error);
- }
- log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error);
- if (error == null) {
- return getCapabilityInstancesRes;
- }
- return Either.right(error);
- }
-
- /**
- * get capability instance of capability for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- @Override
- public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance(String resourceInstanceId, String capabilityId) {
- TitanOperationStatus error = null;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<ImmutablePair<CapabilityInstData, GraphEdge>, TitanOperationStatus> getCapabilityInstanceRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class, props);
- if (getCapabilityInstanceRes.isRight()) {
- error = getCapabilityInstanceRes.right().value();
- 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());
- }
- return Either.right(error);
- }
-
- /**
- * update capability property values
- *
- * @param resourceInstanceId
- * @param propertyValues
- * @param capabilityId
- * @return
- */
- @Override
- public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues) {
- 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;
- String capabilityInstanceId = null;
- Either<Boolean, TitanOperationStatus> deleteProperyValuesRes;
-
- CapabilityData overrideCapabilityData;
- CapabilityDefinition overrideCapabilityDefinition;
- Map<String, PropertyDefinition> defaultProperties = null;
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityDataRes = null;
- Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
-
- 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 {} of resource instance {}. status is {}", capabilityId, 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 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("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error);
- }
- if (error == null) {
- 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 {} of resource instance {}. status is {}", 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 {} 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 {} of resource instance {}. status is {}", 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 {} of resource instance {}.", capabilityInstanceId, resourceInstanceId);
- overrideCapabilityDefinition = getCapabilityDefinitionRes.left().value();
- if (overrideCapabilityDefinition.getProperties() != null) {
- defaultProperties = overrideCapabilityDefinition.getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity()));
- }
- Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues);
- if (result.isRight()) {
- error = result.right().value();
- 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 resource instance {}. status is {}.", capabilityInstanceId, resourceInstanceId, error);
- }
- if (error == null) {
- 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("Failed to add properties to capability instance {} of resource instance {}. status is {}", capabilityInstance.getUniqueId(), resourceInstanceId, error);
- }
- log.debug("Before adding property values to capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId);
- }
- log.debug("After updating property values of capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error);
- if (error == null) {
- return addPropertyValuesRes;
- }
- return Either.right(error);
- }
-
- /**
- * clone and associate capability instance with property values
- *
- * @param createdComponentInstance
- * @param capability
- * @param capabilityInstPair
- * @return
- */
- @Override
- public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(ComponentInstanceData createdComponentInstance, CapabilityDefinition capability,
- ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair) {
-
- TitanOperationStatus error = null;
- String componentInstanceId = createdComponentInstance.getUniqueId();
- String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId();
-
- 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 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 {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), 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 {} 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 {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, 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 {} to capability {} on graph.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId());
- cloneCapabilityInstance = cloneCapabilityInstanceNodeRes.left().value();
- CapabilityData capabilityData = buildCapabilityData(capability);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityData.getUniqueId());
- 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 {} to capability {}. status is {}", cloneCapabilityInstance.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 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();
- 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 component instance {}. status is {}.", capabilityInstanceId, 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));
- }
- return Either.right(error);
- }
-
- public Either<TitanVertex, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(TitanVertex componentInstanceVertex, CapabilityDefinition capability, ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair) {
-
- TitanOperationStatus error = null;
- String componentInstanceId = (String) titanGenericDao.getProperty(componentInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId();
-
- if (log.isTraceEnabled()) {
- 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 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();
- 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 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 {} on graph", cloneCapabilityInst.getUniqueId());
- cloneCapabilityInstanceNodeRes = titanGenericDao.createNode(cloneCapabilityInst);
- if (cloneCapabilityInstanceNodeRes.isRight()) {
- error = cloneCapabilityInstanceNodeRes.right().value();
- 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 {} 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 {} to capability {} on graph", capability.getUniqueId(), capability.getUniqueId());
- }
- capabilityData = buildCapabilityData(capability);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityData.getUniqueId());
- cloneCapabilityInstance = cloneCapabilityInstanceNodeRes.left().value();
- TitanOperationStatus createRelationRes = titanGenericDao.createEdge(cloneCapabilityInstance, capabilityData, GraphEdgeLabels.INSTANCE_OF, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- 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 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;
- log.debug("Failed to clone property value of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error);
- break;
- }
- }
- 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 {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error);
- if (error == null) {
- return Either.left(cloneCapabilityInstance);
- }
- return Either.right(error);
- }
-
- private CapabilityData buildCapabilityData(CapabilityDefinition capability) {
- CapabilityData capabilityData = new CapabilityData();
- capabilityData.setUniqueId(capability.getUniqueId());
- capabilityData.setDescription(capability.getDescription());
- capabilityData.setType(capability.getType());
- capabilityData.setMaxOccurrences(capability.getMaxOccurrences());
- capabilityData.setMinOccurrences(capability.getMinOccurrences());
- List<String> validSourceTypes = capability.getValidSourceTypes();
- if (validSourceTypes != null) {
- capabilityData.setValidSourceTypes(validSourceTypes);
- }
- return capabilityData;
- }
-
- private Either<PropertyValueData, TitanOperationStatus> cloneAssociatePropertyValue(CapabilityInstData cloneCapabilityInstance, ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair) {
- TitanOperationStatus error = null;
- String propertyValueID = propertyValuePair.getLeft().getUniqueId();
- String capabilityInstanceId = cloneCapabilityInstance.getUniqueId();
- log.debug("Before cloning property values {} of component instance {}.", propertyValueID, capabilityInstanceId);
-
- Map<String, Object> props = propertyValuePair.getRight().getProperties();
- PropertyData propertyData = new PropertyData();
- String propertyId = (String) props.get(GraphPropertiesDictionary.PROPERTY_ID.name());
- propertyData.getPropertyDataDefinition().setUniqueId(propertyId);
-
- PropertyValueData propertyValue = buildPropertyValueData((String) props.get(GraphPropertiesDictionary.PROPERTY_NAME.name()), propertyValuePair.getLeft().getType(), propertyValuePair.getLeft().getValue(), capabilityInstanceId);
- PropertyValueData createdValue = null;
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
-
- 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 {} of resource instance. status is {}.", cloneCapabilityInstance.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 {} 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 {} to property value {}. status is {}.", cloneCapabilityInstance.getUniqueId(), 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 {} 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 {} to property {}. status is {}.", createdValue.getUniqueId(), propertyId, error);
- }
- log.debug("Before creating relation from property value {} to property {}. status is {}.", createdValue, propertyData.getUniqueId(), error);
- }
- log.debug("After cloning property values {} of component instance {}. status is {}.", propertyValueID, capabilityInstanceId, error);
- if (error == null) {
- return Either.left(createdValue);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus cloneAssociatePropertyValue(TitanVertex capabilityInstanceVertex, ImmutablePair<TitanVertex, Edge> propertyValuePair) {
- TitanOperationStatus error = null;
- TitanVertex propertyVertex = propertyValuePair.getLeft();
- 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 {} of component instance {}", propertyValueID, capabilityInstanceId);
- }
-
- Map<String, Object> props = titanGenericDao.getProperties(propertyValuePair.getRight());
- PropertyData propertyData = new PropertyData();
- String propertyId = (String) props.get(GraphPropertiesDictionary.PROPERTY_ID.name());
- propertyData.getPropertyDataDefinition().setUniqueId(propertyId);
-
- String propertyType = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.TYPE.getProperty());
- String propertyValueStr = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.VALUE.getProperty());
-
- PropertyValueData propertyValue = buildPropertyValueData((String) props.get(GraphPropertiesDictionary.PROPERTY_NAME.name()), propertyType, propertyValueStr, capabilityInstanceId);
- TitanVertex createdValue = null;
- TitanOperationStatus createRelationRes;
-
- 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();
- 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 {} on graph. status is {} ", propertyValue.getUniqueId(), error);
- }
- if (error == null) {
- createdValue = createValueRes.left().value();
- 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;
- 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 {} to property value {}. status is {} ", capabilityInstanceId, propertyValue.getUniqueId(), error);
- }
- }
- if (error == null) {
- 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;
- 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 {} to property {}. status is {}", createdValue, propertyData.getUniqueId(), error);
- }
- }
- log.trace("After cloning property values {} of component instance {}. status is {}", propertyValueID, capabilityInstanceId, error);
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-}