summaryrefslogtreecommitdiffstats
path: root/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java848
1 files changed, 27 insertions, 821 deletions
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
index d282ecfae9..4ffea48dee 100644
--- 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
@@ -20,18 +20,11 @@
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 com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.TitanVertex;
+import fj.data.Either;
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;
@@ -39,64 +32,51 @@ 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;
+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;
@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
@@ -110,72 +90,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
@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) {
@@ -275,55 +189,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@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;
@@ -361,18 +226,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@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
@@ -425,38 +278,12 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@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());
@@ -465,8 +292,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
/**
* add property to resource instance
*
- * @param resourceInstanceProperty
- * @param resourceInstanceId
* @param index
* @return
*/
@@ -608,242 +433,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
- 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();
@@ -869,119 +459,9 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
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 ValidationUtils.normalizeComponentInstanceName(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) {
@@ -1207,68 +687,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
}
- /**
- * 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) {
+ private Either<GroupInstance, TitanOperationStatus> getGroupInstanceFromGraph(String uniqueId, boolean skipProperties, boolean skipArtifacts) {
Either<GroupInstance, TitanOperationStatus> result = null;
@@ -1337,20 +756,20 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
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);
-}
+ 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){
@@ -1401,14 +820,11 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
@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) {
+ private StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
Either<List<GroupInstance>, StorageOperationStatus> allGroupsFromGraph = getAllGroupInstances(componentId, componentTypeEnum);
if (allGroupsFromGraph.isRight()) {
@@ -1461,212 +877,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
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;
@@ -1694,8 +904,4 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
return result;
}
- @Override
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance groupInstance, List<GroupInstanceProperty> newProperties) {
- return updateGroupInstancePropertyValues(groupInstance, newProperties, false);
- }
}