diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java | 1189 |
1 files changed, 593 insertions, 596 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java index 8f34b3207e..349ee289b7 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AdditionalInformationOperation.java @@ -20,12 +20,8 @@ package org.openecomp.sdc.be.model.operations.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - +import com.thinkaurelius.titan.core.TitanVertex; +import fj.data.Either; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.tinkerpop.gremlin.structure.Vertex; import org.openecomp.sdc.be.config.BeEcompErrorManager; @@ -47,775 +43,776 @@ import org.openecomp.sdc.be.resources.data.AdditionalInfoParameterData; import org.openecomp.sdc.be.resources.data.ResourceMetadataData; import org.openecomp.sdc.be.resources.data.ServiceMetadataData; import org.openecomp.sdc.be.resources.data.UniqueIdData; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.openecomp.sdc.common.log.wrappers.Logger; import org.springframework.stereotype.Component; -import com.thinkaurelius.titan.core.TitanVertex; - -import fj.data.Either; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; @Component("additional-information-operation") public class AdditionalInformationOperation implements IAdditionalInformationOperation { + private static final String GOING_TO_EXECUTE_COMMIT_ON_GRAPH = "Going to execute commit on graph."; + private static final String GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH = "Going to execute rollback on graph."; + private static final String ADDITIONAL_INFORMATION_OF = "additional information of "; public static final String EMPTY_VALUE = null; - public AdditionalInformationOperation() { - super(); - } - - private static Logger log = LoggerFactory.getLogger(AdditionalInformationOperation.class.getName()); - - @javax.annotation.Resource - private TitanGenericDao titanGenericDao; - - @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String key, String value) { - - TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); - if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { - return Either.right(verifyNodeTypeVsComponent); - } - - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + public AdditionalInformationOperation() { + super(); + } + + private static final Logger log = Logger.getLogger(AdditionalInformationOperation.class.getName()); + + @javax.annotation.Resource + private TitanGenericDao titanGenericDao; + + @Override + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String key, String value) { + + TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); + if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { + return Either.right(verifyNodeTypeVsComponent); + } - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - return Either.right(status); - } + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); - if (parameters == null) { - parameters = new HashMap<String, String>(); - parameterData.setParameters(parameters); - } - Map<String, String> idToKey = parameterData.getIdToKey(); - if (idToKey == null) { - idToKey = new HashMap<String, String>(); - parameterData.setIdToKey(idToKey); - } + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + return Either.right(status); + } - Integer lastCreatedCounter = parameterData.getAdditionalInfoParameterDataDefinition().getLastCreatedCounter(); - lastCreatedCounter++; + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); + if (parameters == null) { + parameters = new HashMap<>(); + parameterData.setParameters(parameters); + } + Map<String, String> idToKey = parameterData.getIdToKey(); + if (idToKey == null) { + idToKey = new HashMap<>(); + parameterData.setIdToKey(idToKey); + } - if (parameters.containsKey(key)) { - log.debug("The key {} already exists under component {}", key, componentId); - return Either.right(TitanOperationStatus.ALREADY_EXIST); - } + Integer lastCreatedCounter = parameterData.getAdditionalInfoParameterDataDefinition().getLastCreatedCounter(); + lastCreatedCounter++; - idToKey.put(String.valueOf(lastCreatedCounter), key); - parameters.put(key, value); - parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); + if (parameters.containsKey(key)) { + log.debug("The key {} already exists under component {}", key, componentId); + return Either.right(TitanOperationStatus.ALREADY_EXIST); + } - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); - - if (updateNode.isRight()) { - TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - return Either.right(status); - } + idToKey.put(String.valueOf(lastCreatedCounter), key); + parameters.put(key, value); + parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); + + if (updateNode.isRight()) { + TitanOperationStatus status = updateNode.right().value(); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + componentId, String.valueOf(status)); + return Either.right(status); + } - return Either.left(informationDefinition); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); - } + return Either.left(informationDefinition); - @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id, String key, String value) { + } - TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); - if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { - return Either.right(verifyNodeTypeVsComponent); - } + @Override + public Either<AdditionalInformationDefinition, TitanOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id, String key, String value) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); + if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { + return Either.right(verifyNodeTypeVsComponent); + } - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - return Either.right(status); - } + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); - Map<String, String> idToKey = parameterData.getIdToKey(); - if (idToKey == null || false == idToKey.containsKey(id)) { - return Either.right(TitanOperationStatus.INVALID_ID); - } + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + return Either.right(status); + } - String origKey = idToKey.get(id); + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); + Map<String, String> idToKey = parameterData.getIdToKey(); + if (idToKey == null || !idToKey.containsKey(id)) { + return Either.right(TitanOperationStatus.INVALID_ID); + } - if (false == origKey.equals(key)) { - if (parameters.containsKey(key)) { - log.debug("The key {} already exists", key); - return Either.right(TitanOperationStatus.ALREADY_EXIST); - } - String removed = parameters.remove(origKey); - log.trace("The key-value {} = {} was removed from additionalInformation", origKey, removed); - } - parameters.put(key, value); - idToKey.put(id, key); + String origKey = idToKey.get(id); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); + if (!origKey.equals(key)) { + if (parameters.containsKey(key)) { + log.debug("The key {} already exists", key); + return Either.right(TitanOperationStatus.ALREADY_EXIST); + } + String removed = parameters.remove(origKey); + log.trace("The key-value {} = {} was removed from additionalInformation", origKey, removed); + } + parameters.put(key, value); + idToKey.put(id, key); - if (updateNode.isRight()) { - TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", "additional information of resource " + componentId, String.valueOf(status)); - return Either.right(status); - } + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); + if (updateNode.isRight()) { + TitanOperationStatus status = updateNode.right().value(); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("UpdateAdditionalInformationParameter", "additional information of resource " + componentId, String.valueOf(status)); + return Either.right(status); + } - return Either.left(informationDefinition); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); - } + return Either.left(informationDefinition); - @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { + } - TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); - if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { - return Either.right(verifyNodeTypeVsComponent); - } + @Override + public Either<AdditionalInformationDefinition, TitanOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); + if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { + return Either.right(verifyNodeTypeVsComponent); + } - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - return Either.right(status); - } + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); - Map<String, String> idToKey = parameterData.getIdToKey(); + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + return Either.right(status); + } - if (idToKey == null || false == idToKey.containsKey(id)) { - return Either.right(TitanOperationStatus.INVALID_ID); - } + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); + Map<String, String> idToKey = parameterData.getIdToKey(); - String key = idToKey.get(id); - String removedKey = idToKey.remove(id); - String removedValue = parameters.remove(key); - log.trace("The key-value {} = {} was removed from additionalInformation", removedKey, removedValue); + if (idToKey == null || !idToKey.containsKey(id)) { + return Either.right(TitanOperationStatus.INVALID_ID); + } - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); + String key = idToKey.get(id); + String removedKey = idToKey.remove(id); + String removedValue = parameters.remove(key); + log.trace("The key-value {} = {} was removed from additionalInformation", removedKey, removedValue); - if (updateNode.isRight()) { - TitanOperationStatus status = updateNode.right().value(); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("DeleteAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - return Either.right(status); - } + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); + if (updateNode.isRight()) { + TitanOperationStatus status = updateNode.right().value(); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("DeleteAdditionalInformationParameter", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + componentId, String.valueOf(status)); + return Either.right(status); + } - return Either.left(informationDefinition); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, updateNode.left().value()); - } + return Either.left(informationDefinition); - private AdditionalInformationDefinition createInformationDefinitionFromNode(String resourceId, Map<String, String> parameters, Map<String, String> idToKey, AdditionalInfoParameterData additionalInfoParameterData) { - AdditionalInfoParameterDataDefinition dataDefinition = additionalInfoParameterData.getAdditionalInfoParameterDataDefinition(); + } - AdditionalInformationDefinition informationDefinition = new AdditionalInformationDefinition(dataDefinition, resourceId, convertParameters(parameters, idToKey)); - return informationDefinition; - } + private AdditionalInformationDefinition createInformationDefinitionFromNode(String resourceId, Map<String, String> parameters, Map<String, String> idToKey, AdditionalInfoParameterData additionalInfoParameterData) { + AdditionalInfoParameterDataDefinition dataDefinition = additionalInfoParameterData.getAdditionalInfoParameterDataDefinition(); - private List<AdditionalInfoParameterInfo> convertParameters(Map<String, String> parameters, Map<String, String> idToKey) { + return new AdditionalInformationDefinition(dataDefinition, resourceId, convertParameters(parameters, idToKey)); + } - List<AdditionalInfoParameterInfo> list = new ArrayList<AdditionalInfoParameterInfo>(); + private List<AdditionalInfoParameterInfo> convertParameters(Map<String, String> parameters, Map<String, String> idToKey) { - if (parameters != null) { - for (Entry<String, String> idToKeyEntry : idToKey.entrySet()) { + List<AdditionalInfoParameterInfo> list = new ArrayList<>(); - String id = idToKeyEntry.getKey(); - String key = idToKeyEntry.getValue(); + if (parameters != null) { + for (Entry<String, String> idToKeyEntry : idToKey.entrySet()) { - String value = parameters.get(key); + String id = idToKeyEntry.getKey(); + String key = idToKeyEntry.getValue(); - AdditionalInfoParameterInfo parameterInfo = new AdditionalInfoParameterInfo(id, key, value); - list.add(parameterInfo); - } + String value = parameters.get(key); - } + AdditionalInfoParameterInfo parameterInfo = new AdditionalInfoParameterInfo(id, key, value); + list.add(parameterInfo); + } - return list; - } + } - @Override - public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId) { + return list; + } - UniqueIdData from = new UniqueIdData(nodeType, componentId); + @Override + public Either<AdditionalInfoParameterData, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId) { - String uniqueId = UniqueIdBuilder.buildAdditionalInformationUniqueId(componentId); - AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); - additionalInfoParameterDataDefinition.setUniqueId(uniqueId); + UniqueIdData from = new UniqueIdData(nodeType, componentId); - AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); + String uniqueId = UniqueIdBuilder.buildAdditionalInformationUniqueId(componentId); + AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); + additionalInfoParameterDataDefinition.setUniqueId(uniqueId); - Either<AdditionalInfoParameterData, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData, AdditionalInfoParameterData.class); - if (createNode.isRight()) { - TitanOperationStatus status = createNode.right().value(); - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); - return Either.right(status); - } + AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<>(), new HashMap<>()); - AdditionalInfoParameterData to = createNode.left().value(); + Either<AdditionalInfoParameterData, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData, AdditionalInfoParameterData.class); + if (createNode.isRight()) { + TitanOperationStatus status = createNode.right().value(); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); + return Either.right(status); + } - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); - if (createRelation.isRight()) { - TitanOperationStatus status = createRelation.right().value(); - return Either.right(status); - } + AdditionalInfoParameterData to = createNode.left().value(); - return Either.left(to); - } + Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(from, to, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); + if (createRelation.isRight()) { + TitanOperationStatus status = createRelation.right().value(); + return Either.right(status); + } - @Override - public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, TitanVertex metadataVertex) { + return Either.left(to); + } - String uniqueId = UniqueIdBuilder.buildAdditionalInformationUniqueId(componentId); - AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); - additionalInfoParameterDataDefinition.setUniqueId(uniqueId); + @Override + public Either<TitanVertex, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, TitanVertex metadataVertex) { - AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<String, String>(), new HashMap<String, String>()); + String uniqueId = UniqueIdBuilder.buildAdditionalInformationUniqueId(componentId); + AdditionalInfoParameterDataDefinition additionalInfoParameterDataDefinition = new AdditionalInfoParameterDataDefinition(); + additionalInfoParameterDataDefinition.setUniqueId(uniqueId); - Either<TitanVertex, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData); - if (createNode.isRight()) { - TitanOperationStatus status = createNode.right().value(); - BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); - return Either.right(status); - } + AdditionalInfoParameterData additionalInfoParameterData = new AdditionalInfoParameterData(additionalInfoParameterDataDefinition, new HashMap<>(), new HashMap<>()); - TitanVertex additionalInfoVertex = createNode.left().value(); + Either<TitanVertex, TitanOperationStatus> createNode = titanGenericDao.createNode(additionalInfoParameterData); + if (createNode.isRight()) { + TitanOperationStatus status = createNode.right().value(); + BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("AddAdditionalInformationNode", uniqueId, String.valueOf(status)); + return Either.right(status); + } - TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, additionalInfoVertex, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); + TitanVertex additionalInfoVertex = createNode.left().value(); - if (!createRelation.equals(TitanOperationStatus.OK)) { - return Either.right(createRelation); - } - return Either.left(additionalInfoVertex); - } + TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, additionalInfoVertex, GraphEdgeLabels.ADDITIONAL_INFORMATION, null); - public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters) { + if (!createRelation.equals(TitanOperationStatus.OK)) { + return Either.right(createRelation); + } + return Either.left(additionalInfoVertex); + } - Either<AdditionalInfoParameterData, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId); + public Either<AdditionalInformationDefinition, TitanOperationStatus> addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters) { - if (status.isRight()) { - return Either.right(status.right().value()); - } + Either<AdditionalInfoParameterData, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId); - AdditionalInfoParameterData parameterData = status.left().value(); + if (status.isRight()) { + return Either.right(status.right().value()); + } - populateParameterNodeWithParameters(parameterData, parameters); + AdditionalInfoParameterData parameterData = status.left().value(); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); + populateParameterNodeWithParameters(parameterData, parameters); - if (updateNode.isRight()) { - return Either.right(updateNode.right().value()); - } + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); - AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(updateNode.left().value(), componentId); + if (updateNode.isRight()) { + return Either.right(updateNode.right().value()); + } - return Either.left(informationDefinition); - } + AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(updateNode.left().value(), componentId); - public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters, TitanVertex metadataVertex) { + return Either.left(informationDefinition); + } - Either<TitanVertex, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId, metadataVertex); + public TitanOperationStatus addAdditionalInformationNode(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition parameters, TitanVertex metadataVertex) { - if (status.isRight()) { - return status.right().value(); - } - TitanVertex additionalInfoVertex = status.left().value(); + Either<TitanVertex, TitanOperationStatus> status = this.addAdditionalInformationNode(nodeType, componentId, metadataVertex); - Map<String, Object> newProp = titanGenericDao.getProperties(additionalInfoVertex); - AdditionalInfoParameterData parameterData = GraphElementFactory.createElement(NodeTypeEnum.AdditionalInfoParameters.getName(), GraphElementTypeEnum.Node, newProp, AdditionalInfoParameterData.class); + if (status.isRight()) { + return status.right().value(); + } + TitanVertex additionalInfoVertex = status.left().value(); - populateParameterNodeWithParameters(parameterData, parameters); + Map<String, Object> newProp = titanGenericDao.getProperties(additionalInfoVertex); + AdditionalInfoParameterData parameterData = GraphElementFactory.createElement(NodeTypeEnum.AdditionalInfoParameters.getName(), GraphElementTypeEnum.Node, newProp, AdditionalInfoParameterData.class); - TitanOperationStatus updateNode = titanGenericDao.updateVertex(parameterData, additionalInfoVertex); + populateParameterNodeWithParameters(parameterData, parameters); - return updateNode; - } + return titanGenericDao.updateVertex(parameterData, additionalInfoVertex); + } - private void populateParameterNodeWithParameters(AdditionalInfoParameterData parameterData, AdditionalInformationDefinition aiDefinition) { + private void populateParameterNodeWithParameters(AdditionalInfoParameterData parameterData, AdditionalInformationDefinition aiDefinition) { - if (aiDefinition != null) { + if (aiDefinition != null) { - Integer lastCreatedCounter = aiDefinition.getLastCreatedCounter(); - parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); - log.trace("Set last created counter of additional information to {}", lastCreatedCounter); + Integer lastCreatedCounter = aiDefinition.getLastCreatedCounter(); + parameterData.getAdditionalInfoParameterDataDefinition().setLastCreatedCounter(lastCreatedCounter); + log.trace("Set last created counter of additional information to {}", lastCreatedCounter); - List<AdditionalInfoParameterInfo> parameters = aiDefinition.getParameters(); - if (parameters != null) { + List<AdditionalInfoParameterInfo> parameters = aiDefinition.getParameters(); + if (parameters != null) { - Map<String, String> idToKey = new HashMap<String, String>(); - Map<String, String> parametersMap = new HashMap<String, String>(); - for (AdditionalInfoParameterInfo additionalInfoParameterInfo : parameters) { - String uniqueId = additionalInfoParameterInfo.getUniqueId(); - String key = additionalInfoParameterInfo.getKey(); - String value = additionalInfoParameterInfo.getValue(); + Map<String, String> idToKey = new HashMap<>(); + Map<String, String> parametersMap = new HashMap<>(); + for (AdditionalInfoParameterInfo additionalInfoParameterInfo : parameters) { + String uniqueId = additionalInfoParameterInfo.getUniqueId(); + String key = additionalInfoParameterInfo.getKey(); + String value = additionalInfoParameterInfo.getValue(); - if (key != null && false == key.isEmpty()) { - idToKey.put(uniqueId, key); - parametersMap.put(key, value); - } - } - parameterData.setIdToKey(idToKey); - parameterData.setParameters(parametersMap); - } - } + if (key != null && !key.isEmpty()) { + idToKey.put(uniqueId, key); + parametersMap.put(key, value); + } + } + parameterData.setIdToKey(idToKey); + parameterData.setParameters(parametersMap); + } + } - } + } - @Override - public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { + @Override + public TitanOperationStatus findResourceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { - log.trace("Going to fetch additional information under resource {}", uniqueId); - TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Resource, uniqueId, properties); + log.trace("Going to fetch additional information under resource {}", uniqueId); + TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Resource, uniqueId, properties); - if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { - return resourceCapabilitiesStatus; - } + if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { + return resourceCapabilitiesStatus; + } - Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, - ResourceMetadataData.class); + Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, + ResourceMetadataData.class); - if (parentNodes.isRight()) { - TitanOperationStatus parentNodesStatus = parentNodes.right().value(); - if (false == parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { - log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); - return parentNodesStatus; - } - } + if (parentNodes.isRight()) { + TitanOperationStatus parentNodesStatus = parentNodes.right().value(); + if (!parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { + log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); + return parentNodesStatus; + } + } - if (parentNodes.isLeft()) { - ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); - String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); - TitanOperationStatus addParentIntStatus = findResourceAllAdditionalInformationRecursively(parentUniqueId, properties); + if (parentNodes.isLeft()) { + ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); + String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); + TitanOperationStatus addParentIntStatus = findResourceAllAdditionalInformationRecursively(parentUniqueId, properties); - if (addParentIntStatus != TitanOperationStatus.OK) { - log.error("Failed to find all resource additional information of resource {}", parentUniqueId); - return addParentIntStatus; - } - } - return TitanOperationStatus.OK; + if (addParentIntStatus != TitanOperationStatus.OK) { + log.error("Failed to find all resource additional information of resource {}", parentUniqueId); + return addParentIntStatus; + } + } + return TitanOperationStatus.OK; - } + } - @Override - public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { + @Override + public TitanOperationStatus findServiceAllAdditionalInformationRecursively(String uniqueId, List<AdditionalInformationDefinition> properties) { - log.trace("Going to fetch additional information under service {}", uniqueId); - TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Service, uniqueId, properties); + log.trace("Going to fetch additional information under service {}", uniqueId); + TitanOperationStatus resourceCapabilitiesStatus = findAdditionalInformationOfNode(NodeTypeEnum.Service, uniqueId, properties); - if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { - return resourceCapabilitiesStatus; - } + if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) { + return resourceCapabilitiesStatus; + } - Either<ImmutablePair<ServiceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Service, - ServiceMetadataData.class); + Either<ImmutablePair<ServiceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Service, + ServiceMetadataData.class); - if (parentNodes.isRight()) { - TitanOperationStatus parentNodesStatus = parentNodes.right().value(); - if (false == parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { - log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); - return parentNodesStatus; - } - } + if (parentNodes.isRight()) { + TitanOperationStatus parentNodesStatus = parentNodes.right().value(); + if (!parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) { + log.error("Failed to find parent additional information of resource {}. status is {}", uniqueId, parentNodesStatus); + return parentNodesStatus; + } + } - if (parentNodes.isLeft()) { - ImmutablePair<ServiceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); - String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); - TitanOperationStatus addParentIntStatus = findServiceAllAdditionalInformationRecursively(parentUniqueId, properties); + if (parentNodes.isLeft()) { + ImmutablePair<ServiceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value(); + String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId(); + TitanOperationStatus addParentIntStatus = findServiceAllAdditionalInformationRecursively(parentUniqueId, properties); - if (addParentIntStatus != TitanOperationStatus.OK) { - log.error("Failed to find all resource additional information of resource {}", parentUniqueId); - return addParentIntStatus; - } - } - return TitanOperationStatus.OK; + if (addParentIntStatus != TitanOperationStatus.OK) { + log.error("Failed to find all resource additional information of resource {}", parentUniqueId); + return addParentIntStatus; + } + } + return TitanOperationStatus.OK; - } + } - private TitanOperationStatus findAdditionalInformationOfNode(NodeTypeEnum nodeType, String uniqueId, List<AdditionalInformationDefinition> properties) { + private TitanOperationStatus findAdditionalInformationOfNode(NodeTypeEnum nodeType, String uniqueId, List<AdditionalInformationDefinition> properties) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> childNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> childNode = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - if (childNode.isRight()) { - TitanOperationStatus status = childNode.right().value(); - if (status == TitanOperationStatus.NOT_FOUND) { - status = TitanOperationStatus.OK; - } - return status; - } + if (childNode.isRight()) { + TitanOperationStatus status = childNode.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.OK; + } + return status; + } - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = childNode.left().value(); - AdditionalInfoParameterData propertyData = immutablePair.getKey(); + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = childNode.left().value(); + AdditionalInfoParameterData propertyData = immutablePair.getKey(); - Map<String, String> parameters = propertyData.getParameters(); - if (parameters != null && false == parameters.isEmpty()) { - AdditionalInformationDefinition additionalInfoDef = this.convertAdditionalInformationDataToDefinition(propertyData, uniqueId); - properties.add(additionalInfoDef); - } + Map<String, String> parameters = propertyData.getParameters(); + if (parameters != null && !parameters.isEmpty()) { + AdditionalInformationDefinition additionalInfoDef = this.convertAdditionalInformationDataToDefinition(propertyData, uniqueId); + properties.add(additionalInfoDef); + } - return TitanOperationStatus.OK; + return TitanOperationStatus.OK; - } + } - private AdditionalInformationDefinition convertAdditionalInformationDataToDefinition(AdditionalInfoParameterData additionalInfoData, String uniqueId) { + private AdditionalInformationDefinition convertAdditionalInformationDataToDefinition(AdditionalInfoParameterData additionalInfoData, String uniqueId) { - Map<String, String> parameters = additionalInfoData.getParameters(); - Map<String, String> idToKey = additionalInfoData.getIdToKey(); + Map<String, String> parameters = additionalInfoData.getParameters(); + Map<String, String> idToKey = additionalInfoData.getIdToKey(); - AdditionalInformationDefinition definition = new AdditionalInformationDefinition(additionalInfoData.getAdditionalInfoParameterDataDefinition(), uniqueId, convertParameters(parameters, idToKey)); - return definition; - } + return new AdditionalInformationDefinition(additionalInfoData.getAdditionalInfoParameterDataDefinition(), uniqueId, convertParameters(parameters, idToKey)); + } - @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction) { + @Override + public Either<AdditionalInformationDefinition, StorageOperationStatus> createAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String key, String value, boolean inTransaction) { - Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; + Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; - try { + try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.addAdditionalInformationParameter(nodeType, resourceId, key, value); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.addAdditionalInformationParameter(nodeType, resourceId, key, value); - if (either.isRight()) { - TitanOperationStatus status = either.right().value(); - log.debug("Failed to add additional information property {} to component {}. Status is {}", key, resourceId, status); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("CreateAdditionalInformationParameter", "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - } else { - AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); - result = Either.left(additionalInformationDefinition); - } + if (either.isRight()) { + TitanOperationStatus status = either.right().value(); + log.debug("Failed to add additional information property {} to component {}. Status is {}", key, resourceId, status); + BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("CreateAdditionalInformationParameter", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + resourceId, String.valueOf(status)); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + } else { + AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); + result = Either.left(additionalInformationDefinition); + } - return result; - } finally { - commitOrRollback(inTransaction, result); - } + return result; + } finally { + commitOrRollback(inTransaction, result); + } - } + } - @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction) { + @Override + public Either<AdditionalInformationDefinition, StorageOperationStatus> updateAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, String key, String value, boolean inTransaction) { - Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; + Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; - try { + try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.updateAdditionalInformationParameter(nodeType, resourceId, id, key, value); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.updateAdditionalInformationParameter(nodeType, resourceId, id, key, value); - if (either.isRight()) { - log.info("Failed to update additional information property {} to component {}", key, resourceId); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); - } else { - AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); - result = Either.left(additionalInformationDefinition); - } + if (either.isRight()) { + log.info("Failed to update additional information property {} to component {}", key, resourceId); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); + } else { + AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); + result = Either.left(additionalInformationDefinition); + } - return result; + return result; - } finally { - commitOrRollback(inTransaction, result); - } + } finally { + commitOrRollback(inTransaction, result); + } - } + } - @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { + @Override + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { - Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; + Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; - try { + try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.deleteAdditionalInformationParameter(nodeType, resourceId, id); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.deleteAdditionalInformationParameter(nodeType, resourceId, id); - if (either.isRight()) { - log.error("Failed to delete additional information id {} to component {}", id, resourceId); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); - } else { - AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); - result = Either.left(additionalInformationDefinition); - } + if (either.isRight()) { + log.error("Failed to delete additional information id {} to component {}", id, resourceId); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); + } else { + AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); + result = Either.left(additionalInformationDefinition); + } - return result; + return result; - } finally { - commitOrRollback(inTransaction, result); - } + } finally { + commitOrRollback(inTransaction, result); + } - } + } - @Override - public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { + @Override + public Either<Integer, StorageOperationStatus> getNumberOfAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { - Either<Integer, StorageOperationStatus> result = null; + Either<Integer, StorageOperationStatus> result = null; - try { + try { - Either<Integer, TitanOperationStatus> either = this.getNumberOfParameters(nodeType, resourceId); + Either<Integer, TitanOperationStatus> either = this.getNumberOfParameters(nodeType, resourceId); - if (either.isRight()) { - log.error("Failed to get the number of additional information properties in component {}", resourceId); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); - } else { - Integer counter = either.left().value(); - result = Either.left(counter); - } + if (either.isRight()) { + log.error("Failed to get the number of additional information properties in component {}", resourceId); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); + } else { + Integer counter = either.left().value(); + result = Either.left(counter); + } - return result; - } finally { - if (false == inTransaction) { - if (result == null || result.isRight()) { - log.error("Going to execute rollback on graph."); - titanGenericDao.rollback(); - } else { - log.debug("Going to execute commit on graph."); - titanGenericDao.commit(); - } - } - } + return result; + } finally { + if (!inTransaction) { + if (result == null || result.isRight()) { + log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH); + titanGenericDao.rollback(); + } else { + log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH); + titanGenericDao.commit(); + } + } + } - } + } - @Override - public Either<Integer, TitanOperationStatus> getNumberOfParameters(NodeTypeEnum nodeType, String resourceId) { + @Override + public Either<Integer, TitanOperationStatus> getNumberOfParameters(NodeTypeEnum nodeType, String resourceId) { - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - return Either.right(status); - } + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + return Either.right(status); + } - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); - Integer counter = 0; - if (parameters != null) { - counter = parameters.size(); - } + Integer counter = 0; + if (parameters != null) { + counter = parameters.size(); + } - return Either.left(counter); + return Either.left(counter); - } + } - @Override - public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { + @Override + public Either<AdditionalInfoParameterInfo, TitanOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String componentId, String id) { - TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); - if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { - return Either.right(verifyNodeTypeVsComponent); - } + TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); + if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { + return Either.right(verifyNodeTypeVsComponent); + } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - return Either.right(status); - } + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + return Either.right(status); + } - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); - Map<String, String> idToKey = parameterData.getIdToKey(); + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); + Map<String, String> idToKey = parameterData.getIdToKey(); - if (idToKey == null || false == idToKey.containsKey(id)) { - return Either.right(TitanOperationStatus.INVALID_ID); - } + if (idToKey == null || !idToKey.containsKey(id)) { + return Either.right(TitanOperationStatus.INVALID_ID); + } - String key = idToKey.get(id); - String value = parameters.get(key); + String key = idToKey.get(id); + String value = parameters.get(key); - log.trace("The key-value {} = {} was retrieved for id {}", key, value, id); + log.trace("The key-value {} = {} was retrieved for id {}", key, value, id); - Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); + Either<AdditionalInfoParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(parameterData, AdditionalInfoParameterData.class); - if (updateNode.isRight()) { - TitanOperationStatus status = updateNode.right().value(); - if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameter", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - } - return Either.right(status); - } + if (updateNode.isRight()) { + TitanOperationStatus status = updateNode.right().value(); + if (status != TitanOperationStatus.NOT_FOUND) { + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameter", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + componentId, String.valueOf(status)); + } + return Either.right(status); + } - AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo(id, key, value); + AdditionalInfoParameterInfo additionalInfoParameterInfo = new AdditionalInfoParameterInfo(id, key, value); - return Either.left(additionalInfoParameterInfo); + return Either.left(additionalInfoParameterInfo); - } + } - @Override - public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String componentId, boolean ignoreVerification) { + @Override + public Either<AdditionalInformationDefinition, TitanOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String componentId, boolean ignoreVerification) { - if (false == ignoreVerification) { - TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); - if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { - return Either.right(verifyNodeTypeVsComponent); - } - } + if (!ignoreVerification) { + TitanOperationStatus verifyNodeTypeVsComponent = verifyNodeTypeVsComponent(nodeType, componentId); + if (verifyNodeTypeVsComponent != TitanOperationStatus.OK) { + return Either.right(verifyNodeTypeVsComponent); + } + } - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - if (status != TitanOperationStatus.NOT_FOUND) { - BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameters", "additional information of " + nodeType.getName() + " " + componentId, String.valueOf(status)); - } - return Either.right(status); - } + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + if (status != TitanOperationStatus.NOT_FOUND) { + BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("GetAdditionnalInformationParameters", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + componentId, String.valueOf(status)); + } + return Either.right(status); + } - ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); - AdditionalInfoParameterData parameterData = immutablePair.getLeft(); - Map<String, String> parameters = parameterData.getParameters(); - Map<String, String> idToKey = parameterData.getIdToKey(); + ImmutablePair<AdditionalInfoParameterData, GraphEdge> immutablePair = getResult.left().value(); + AdditionalInfoParameterData parameterData = immutablePair.getLeft(); + Map<String, String> parameters = parameterData.getParameters(); + Map<String, String> idToKey = parameterData.getIdToKey(); - AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, parameterData); + AdditionalInformationDefinition informationDefinition = createInformationDefinitionFromNode(componentId, parameters, idToKey, parameterData); - return Either.left(informationDefinition); + return Either.left(informationDefinition); - } + } - @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction) { + @Override + public Either<AdditionalInformationDefinition, StorageOperationStatus> getAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean ignoreVerification, boolean inTransaction) { - Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; + Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; - try { + try { - Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.getAllAdditionalInformationParameters(nodeType, resourceId, ignoreVerification); + Either<AdditionalInformationDefinition, TitanOperationStatus> either = this.getAllAdditionalInformationParameters(nodeType, resourceId, ignoreVerification); - if (either.isRight()) { - TitanOperationStatus status = either.right().value(); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - } else { - AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); - result = Either.left(additionalInformationDefinition); - } + if (either.isRight()) { + TitanOperationStatus status = either.right().value(); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + } else { + AdditionalInformationDefinition additionalInformationDefinition = either.left().value(); + result = Either.left(additionalInformationDefinition); + } - return result; + return result; - } finally { - commitOrRollback(inTransaction, result); - } - - } - - private void commitOrRollback(boolean inTransaction, Either<? extends Object, StorageOperationStatus> result) { - - if (false == inTransaction) { - if (result == null || result.isRight()) { - log.error("Going to execute rollback on graph."); - titanGenericDao.rollback(); - } else { - log.debug("Going to execute commit on graph."); - titanGenericDao.commit(); - } - } - } - - @Override - public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { - - Either<AdditionalInfoParameterInfo, StorageOperationStatus> result = null; - - try { - - Either<AdditionalInfoParameterInfo, TitanOperationStatus> either = this.getAdditionalInformationParameter(nodeType, resourceId, id); - - if (either.isRight()) { - log.error("Failed to fetch additional information property with id {} of component {}", id, resourceId); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); - } else { - AdditionalInfoParameterInfo additionalInformationDefinition = either.left().value(); - result = Either.left(additionalInformationDefinition); - } - - return result; - - } finally { - commitOrRollback(inTransaction, result); - } - } - - @Override - public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { - - Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; - - try { - - Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, - NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); - - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - if (status == TitanOperationStatus.NOT_FOUND) { - return Either.right(StorageOperationStatus.OK); - } else { - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", "additional information of " + nodeType.getName() + " " + resourceId, String.valueOf(status)); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - } - return result; - } - - ImmutablePair<AdditionalInfoParameterData, GraphEdge> value = getResult.left().value(); - AdditionalInfoParameterData parameterData = value.getLeft(); - - Either<AdditionalInfoParameterData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(parameterData, AdditionalInfoParameterData.class); - if (deleteNodeRes.isRight()) { - TitanOperationStatus status = getResult.right().value(); - BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", (String) parameterData.getUniqueId(), String.valueOf(status)); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - return result; - } - - AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(deleteNodeRes.left().value(), resourceId); - - result = Either.left(informationDefinition); - - return result; - - } finally { - commitOrRollback(inTransaction, result); - } - } - - private TitanOperationStatus verifyNodeTypeVsComponent(NodeTypeEnum nodeType, String componentId) { - Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId); - if (vertexByProperty.isRight()) { - TitanOperationStatus status = vertexByProperty.right().value(); - if (status == TitanOperationStatus.NOT_FOUND) { - status = TitanOperationStatus.INVALID_ID; - } - return status; - } else { - Vertex v = vertexByProperty.left().value(); - String label = (String) v.property(GraphPropertiesDictionary.LABEL.getProperty()).value(); - if (label != null) { - if (false == label.equals(nodeType.getName())) { - log.debug("The node type {} is not appropriate to component {}", nodeType, componentId); - return TitanOperationStatus.INVALID_ID; - } - } else { - log.debug("The node type {} with id {} does not have a label property.", nodeType, componentId); - return TitanOperationStatus.INVALID_ID; - } - } - return TitanOperationStatus.OK; - } + } finally { + commitOrRollback(inTransaction, result); + } + + } + + private void commitOrRollback(boolean inTransaction, Either<? extends Object, StorageOperationStatus> result) { + + if (!inTransaction) { + if (result == null || result.isRight()) { + log.error(GOING_TO_EXECUTE_ROLLBACK_ON_GRAPH); + titanGenericDao.rollback(); + } else { + log.debug(GOING_TO_EXECUTE_COMMIT_ON_GRAPH); + titanGenericDao.commit(); + } + } + } + + + @Override + public Either<AdditionalInfoParameterInfo, StorageOperationStatus> getAdditionalInformationParameter(NodeTypeEnum nodeType, String resourceId, String id, boolean inTransaction) { + + Either<AdditionalInfoParameterInfo, StorageOperationStatus> result = null; + + try { + + Either<AdditionalInfoParameterInfo, TitanOperationStatus> either = this.getAdditionalInformationParameter(nodeType, resourceId, id); + + if (either.isRight()) { + log.error("Failed to fetch additional information property with id {} of component {}", id, resourceId); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value())); + } else { + AdditionalInfoParameterInfo additionalInformationDefinition = either.left().value(); + result = Either.left(additionalInformationDefinition); + } + + return result; + + } finally { + commitOrRollback(inTransaction, result); + } + } + + @Override + public Either<AdditionalInformationDefinition, StorageOperationStatus> deleteAllAdditionalInformationParameters(NodeTypeEnum nodeType, String resourceId, boolean inTransaction) { + + Either<AdditionalInformationDefinition, StorageOperationStatus> result = null; + + try { + + Either<ImmutablePair<AdditionalInfoParameterData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.ADDITIONAL_INFORMATION, + NodeTypeEnum.AdditionalInfoParameters, AdditionalInfoParameterData.class); + + if (getResult.isRight()) { + TitanOperationStatus status = getResult.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + return Either.right(StorageOperationStatus.OK); + } else { + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", ADDITIONAL_INFORMATION_OF + nodeType.getName() + " " + resourceId, String.valueOf(status)); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + } + return result; + } + + ImmutablePair<AdditionalInfoParameterData, GraphEdge> value = getResult.left().value(); + AdditionalInfoParameterData parameterData = value.getLeft(); + + Either<AdditionalInfoParameterData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(parameterData, AdditionalInfoParameterData.class); + if (deleteNodeRes.isRight()) { + TitanOperationStatus status = getResult.right().value(); + BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("DeleteAdditionalInformationNode", (String) parameterData.getUniqueId(), String.valueOf(status)); + result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); + return result; + } + + AdditionalInformationDefinition informationDefinition = convertAdditionalInformationDataToDefinition(deleteNodeRes.left().value(), resourceId); + + result = Either.left(informationDefinition); + + return result; + + } finally { + commitOrRollback(inTransaction, result); + } + } + + private TitanOperationStatus verifyNodeTypeVsComponent(NodeTypeEnum nodeType, String componentId) { + Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId); + if (vertexByProperty.isRight()) { + TitanOperationStatus status = vertexByProperty.right().value(); + if (status == TitanOperationStatus.NOT_FOUND) { + status = TitanOperationStatus.INVALID_ID; + } + return status; + } else { + Vertex v = vertexByProperty.left().value(); + String label = (String) v.property(GraphPropertiesDictionary.LABEL.getProperty()).value(); + if (label != null) { + if (!label.equals(nodeType.getName())) { + log.debug("The node type {} is not appropriate to component {}", nodeType, componentId); + return TitanOperationStatus.INVALID_ID; + } + } else { + log.debug("The node type {} with id {} does not have a label property.", nodeType, componentId); + return TitanOperationStatus.INVALID_ID; + } + } + return TitanOperationStatus.OK; + } } |