re base code
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / operations / impl / HeatParametersOperation.java
index 7b7ead5..6d050af 100644 (file)
 
 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 fj.data.Either;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
@@ -43,432 +39,432 @@ import org.openecomp.sdc.be.model.tosca.validators.PropertyTypeValidator;
 import org.openecomp.sdc.be.resources.data.HeatParameterData;
 import org.openecomp.sdc.be.resources.data.HeatParameterValueData;
 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 fj.data.Either;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @Component("heat-parameter-operation")
 public class HeatParametersOperation implements IHeatParametersOperation {
 
-       public static final String EMPTY_VALUE = null;
+    public static final String EMPTY_VALUE = null;
+
+    private static final Logger log = Logger.getLogger(HeatParametersOperation.class.getName());
+
+    @javax.annotation.Resource
+    private TitanGenericDao titanGenericDao;
+
+    public TitanGenericDao getTitanGenericDao() {
+        return titanGenericDao;
+    }
+
+    public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
+        this.titanGenericDao = titanGenericDao;
+    }
+
+    public StorageOperationStatus getHeatParametersOfNode(NodeTypeEnum nodeType, String uniqueId, List<HeatParameterDefinition> properties) {
+
+        Either<List<ImmutablePair<HeatParameterData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.HEAT_PARAMETER, NodeTypeEnum.HeatParameter,
+                HeatParameterData.class);
+
+        if (childrenNodes.isRight()) {
+            TitanOperationStatus status = childrenNodes.right().value();
+            if (status == TitanOperationStatus.NOT_FOUND) {
+                status = TitanOperationStatus.OK;
+            }
+            return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
+        }
+
+        List<ImmutablePair<HeatParameterData, GraphEdge>> values = childrenNodes.left().value();
+        if (values != null) {
+
+            for (ImmutablePair<HeatParameterData, GraphEdge> immutablePair : values) {
+                GraphEdge edge = immutablePair.getValue();
+                String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
+                if (log.isDebugEnabled())
+                    log.debug("Property {} is associated to node {}", propertyName, uniqueId);
+                HeatParameterData propertyData = immutablePair.getKey();
+                HeatParameterDefinition propertyDefinition = convertParameterDataToParameterDefinition(propertyData, propertyName, uniqueId);
 
-       private static Logger log = LoggerFactory.getLogger(HeatParametersOperation.class.getName());
+                properties.add(propertyDefinition);
 
-       @javax.annotation.Resource
-       private TitanGenericDao titanGenericDao;
+                if (log.isTraceEnabled()) {
+                    log.trace("getHeatParametersOfNode - property {} associated to node {}", propertyDefinition, uniqueId);
+                }
+            }
 
-       public TitanGenericDao getTitanGenericDao() {
-               return titanGenericDao;
-       }
+        }
 
-       public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
-               this.titanGenericDao = titanGenericDao;
-       }
+        return StorageOperationStatus.OK;
+    }
 
-       public StorageOperationStatus getHeatParametersOfNode(NodeTypeEnum nodeType, String uniqueId, List<HeatParameterDefinition> properties) {
+    public StorageOperationStatus getParametersValueNodes(NodeTypeEnum parentNodeType, String parentUniqueId, List<HeatParameterValueData> heatValues) {
 
-               Either<List<ImmutablePair<HeatParameterData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.HEAT_PARAMETER, NodeTypeEnum.HeatParameter,
-                               HeatParameterData.class);
+        Either<List<ImmutablePair<HeatParameterValueData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentUniqueId, GraphEdgeLabels.PARAMETER_VALUE,
+                NodeTypeEnum.HeatParameterValue, HeatParameterValueData.class);
 
-               if (childrenNodes.isRight()) {
-                       TitanOperationStatus status = childrenNodes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.OK;
-                       }
-                       return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
-               }
+        if (childrenNodes.isRight()) {
+            TitanOperationStatus status = childrenNodes.right().value();
+            if (status == TitanOperationStatus.NOT_FOUND) {
+                status = TitanOperationStatus.OK;
+            }
+            return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
+        }
 
-               List<ImmutablePair<HeatParameterData, GraphEdge>> values = childrenNodes.left().value();
-               if (values != null) {
+        List<ImmutablePair<HeatParameterValueData, GraphEdge>> values = childrenNodes.left().value();
+        if (values != null) {
 
-                       for (ImmutablePair<HeatParameterData, GraphEdge> immutablePair : values) {
-                               GraphEdge edge = immutablePair.getValue();
-                               String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
-                               if (log.isDebugEnabled())
-                                       log.debug("Property {} is associated to node {}", propertyName, uniqueId);
-                               HeatParameterData propertyData = immutablePair.getKey();
-                               HeatParameterDefinition propertyDefinition = convertParameterDataToParameterDefinition(propertyData, propertyName, uniqueId);
+            for (ImmutablePair<HeatParameterValueData, GraphEdge> immutablePair : values) {
+                GraphEdge edge = immutablePair.getValue();
+                String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
+                log.trace("Heat value {} is associated to node {}", propertyName,parentUniqueId);
+                HeatParameterValueData propertyData = immutablePair.getKey();
 
-                               properties.add(propertyDefinition);
+                heatValues.add(propertyData);
+            }
 
-                               if (log.isTraceEnabled()) {
-                                       log.trace("getHeatParametersOfNode - property {} associated to node {}", propertyDefinition, uniqueId);
-                               }
-                       }
+        }
 
-               }
+        return StorageOperationStatus.OK;
+    }
 
-               return StorageOperationStatus.OK;
-       }
+    @Override
+    public Either<List<HeatParameterDefinition>, StorageOperationStatus> deleteAllHeatParametersAssociatedToNode(NodeTypeEnum nodeType, String uniqueId) {
 
-       public StorageOperationStatus getParametersValueNodes(NodeTypeEnum parentNodeType, String parentUniqueId, List<HeatParameterValueData> heatValues) {
+        List<HeatParameterDefinition> heatParams = new ArrayList<>();
+        StorageOperationStatus propertiesOfNodeRes = getHeatParametersOfNode(nodeType, uniqueId, heatParams);
 
-               Either<List<ImmutablePair<HeatParameterValueData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentUniqueId, GraphEdgeLabels.PARAMETER_VALUE,
-                               NodeTypeEnum.HeatParameterValue, HeatParameterValueData.class);
+        if (!propertiesOfNodeRes.equals(StorageOperationStatus.OK) && !propertiesOfNodeRes.equals(StorageOperationStatus.NOT_FOUND)) {
+            return Either.right(propertiesOfNodeRes);
+        }
 
-               if (childrenNodes.isRight()) {
-                       TitanOperationStatus status = childrenNodes.right().value();
-                       if (status == TitanOperationStatus.NOT_FOUND) {
-                               status = TitanOperationStatus.OK;
-                       }
-                       return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
-               }
+        for (HeatParameterDefinition propertyDefinition : heatParams) {
 
-               List<ImmutablePair<HeatParameterValueData, GraphEdge>> values = childrenNodes.left().value();
-               if (values != null) {
+            String propertyUid = propertyDefinition.getUniqueId();
+            Either<HeatParameterData, TitanOperationStatus> deletePropertyRes = deleteHeatParameterFromGraph(propertyUid);
+            if (deletePropertyRes.isRight()) {
+                log.error("Failed to delete heat parameter with id {}", propertyUid);
+                TitanOperationStatus status = deletePropertyRes.right().value();
+                if (status == TitanOperationStatus.NOT_FOUND) {
+                    status = TitanOperationStatus.INVALID_ID;
+                }
+                return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
+            }
 
-                       for (ImmutablePair<HeatParameterValueData, GraphEdge> immutablePair : values) {
-                               GraphEdge edge = immutablePair.getValue();
-                               String propertyName = (String) edge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
-                               log.trace("Heat value {} is associated to node {}", propertyName,parentUniqueId);
-                               HeatParameterValueData propertyData = immutablePair.getKey();
+        }
 
-                               heatValues.add(propertyData);
-                       }
+        log.debug("The heat parameters deleted from node {} are {}", uniqueId, heatParams);
+        return Either.left(heatParams);
+    }
 
-               }
+    @Override
+    public StorageOperationStatus deleteAllHeatValuesAssociatedToNode(NodeTypeEnum parentNodeType, String parentUniqueId) {
 
-               return StorageOperationStatus.OK;
-       }
+        List<HeatParameterValueData> heatValues = new ArrayList<>();
+        StorageOperationStatus propertiesOfNodeRes = getParametersValueNodes(parentNodeType, parentUniqueId, heatValues);
 
-       @Override
-       public Either<List<HeatParameterDefinition>, StorageOperationStatus> deleteAllHeatParametersAssociatedToNode(NodeTypeEnum nodeType, String uniqueId) {
+        if (!propertiesOfNodeRes.equals(StorageOperationStatus.OK) && !propertiesOfNodeRes.equals(StorageOperationStatus.NOT_FOUND)) {
+            return propertiesOfNodeRes;
+        }
 
-               List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>();
-               StorageOperationStatus propertiesOfNodeRes = getHeatParametersOfNode(nodeType, uniqueId, heatParams);
+        for (HeatParameterValueData propertyDefinition : heatValues) {
 
-               if (!propertiesOfNodeRes.equals(StorageOperationStatus.OK) && !propertiesOfNodeRes.equals(StorageOperationStatus.NOT_FOUND)) {
-                       return Either.right(propertiesOfNodeRes);
-               }
+            String propertyUid = (String) propertyDefinition.getUniqueId();
+            Either<HeatParameterValueData, TitanOperationStatus> deletePropertyRes = deleteHeatParameterValueFromGraph(propertyUid);
+            if (deletePropertyRes.isRight()) {
+                log.error("Failed to delete heat parameter value with id {}", propertyUid);
+                TitanOperationStatus status = deletePropertyRes.right().value();
+                if (status == TitanOperationStatus.NOT_FOUND) {
+                    status = TitanOperationStatus.INVALID_ID;
+                }
+                return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
+            }
 
-               for (HeatParameterDefinition propertyDefinition : heatParams) {
+        }
 
-                       String propertyUid = propertyDefinition.getUniqueId();
-                       Either<HeatParameterData, TitanOperationStatus> deletePropertyRes = deleteHeatParameterFromGraph(propertyUid);
-                       if (deletePropertyRes.isRight()) {
-                               log.error("Failed to delete heat parameter with id {}", propertyUid);
-                               TitanOperationStatus status = deletePropertyRes.right().value();
-                               if (status == TitanOperationStatus.NOT_FOUND) {
-                                       status = TitanOperationStatus.INVALID_ID;
-                               }
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-                       }
+        log.debug("The heat values deleted from node {} are {}" , parentUniqueId, heatValues);
+        return StorageOperationStatus.OK;
+    }
 
-               }
+    private Either<HeatParameterData, TitanOperationStatus> deleteHeatParameterFromGraph(String propertyId) {
+        log.debug("Before deleting heat parameter from graph {}" , propertyId);
+        return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameter), propertyId, HeatParameterData.class);
+    }
 
-               log.debug("The heat parameters deleted from node {} are {}", uniqueId, heatParams);
-               return Either.left(heatParams);
-       }
+    private Either<HeatParameterValueData, TitanOperationStatus> deleteHeatParameterValueFromGraph(String propertyId) {
+        log.debug("Before deleting heat parameter from graph {}" , propertyId);
+        return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameterValue), propertyId, HeatParameterValueData.class);
+    }
 
-       @Override
-       public StorageOperationStatus deleteAllHeatValuesAssociatedToNode(NodeTypeEnum parentNodeType, String parentUniqueId) {
+    @Override
+    public StorageOperationStatus addPropertiesToGraph(List<HeatParameterDefinition> properties, String parentId, NodeTypeEnum nodeType) {
 
-               List<HeatParameterValueData> heatValues = new ArrayList<HeatParameterValueData>();
-               StorageOperationStatus propertiesOfNodeRes = getParametersValueNodes(parentNodeType, parentUniqueId, heatValues);
+        if (properties != null) {
+            for (HeatParameterDefinition propertyDefinition : properties) {
 
-               if (!propertiesOfNodeRes.equals(StorageOperationStatus.OK) && !propertiesOfNodeRes.equals(StorageOperationStatus.NOT_FOUND)) {
-                       return propertiesOfNodeRes;
-               }
+                String propertyName = propertyDefinition.getName();
 
-               for (HeatParameterValueData propertyDefinition : heatValues) {
+                Either<HeatParameterData, TitanOperationStatus> addPropertyToGraph = addPropertyToGraph(propertyName, propertyDefinition, parentId, nodeType);
 
-                       String propertyUid = (String) propertyDefinition.getUniqueId();
-                       Either<HeatParameterValueData, TitanOperationStatus> deletePropertyRes = deleteHeatParameterValueFromGraph(propertyUid);
-                       if (deletePropertyRes.isRight()) {
-                               log.error("Failed to delete heat parameter value with id {}", propertyUid);
-                               TitanOperationStatus status = deletePropertyRes.right().value();
-                               if (status == TitanOperationStatus.NOT_FOUND) {
-                                       status = TitanOperationStatus.INVALID_ID;
-                               }
-                               return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
-                       }
+                if (addPropertyToGraph.isRight()) {
+                    return DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToGraph.right().value());
+                }
+            }
+        }
 
-               }
+        return StorageOperationStatus.OK;
 
-               log.debug("The heat values deleted from node {} are {}" , parentUniqueId, heatValues);
-               return StorageOperationStatus.OK;
-       }
+    }
 
-       private Either<HeatParameterData, TitanOperationStatus> deleteHeatParameterFromGraph(String propertyId) {
-               log.debug("Before deleting heat parameter from graph {}" , propertyId);
-               return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameter), propertyId, HeatParameterData.class);
-       }
+    @Override
+    public StorageOperationStatus updateHeatParameters(List<HeatParameterDefinition> properties) {
 
-       private Either<HeatParameterValueData, TitanOperationStatus> deleteHeatParameterValueFromGraph(String propertyId) {
-               log.debug("Before deleting heat parameter from graph {}" , propertyId);
-               return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.HeatParameterValue), propertyId, HeatParameterValueData.class);
-       }
+        if (properties == null) {
+            return StorageOperationStatus.OK;
+        }
+        for (HeatParameterDefinition property : properties) {
 
-       @Override
-       public StorageOperationStatus addPropertiesToGraph(List<HeatParameterDefinition> properties, String parentId, NodeTypeEnum nodeType) {
+            HeatParameterData heatParameterData = new HeatParameterData(property);
+            Either<HeatParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(heatParameterData, HeatParameterData.class);
+            if (updateNode.isRight()) {
+                log.debug("failed to update heat parameter in graph. id = {}", property.getUniqueId());
+                return DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value());
+            }
+        }
 
-               if (properties != null) {
-                       for (HeatParameterDefinition propertyDefinition : properties) {
+        return StorageOperationStatus.OK;
+    }
 
-                               String propertyName = propertyDefinition.getName();
-
-                               Either<HeatParameterData, TitanOperationStatus> addPropertyToGraph = addPropertyToGraph(propertyName, propertyDefinition, parentId, nodeType);
-
-                               if (addPropertyToGraph.isRight()) {
-                                       return DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToGraph.right().value());
-                               }
-                       }
-               }
-
-               return StorageOperationStatus.OK;
-
-       }
-
-       @Override
-       public StorageOperationStatus updateHeatParameters(List<HeatParameterDefinition> properties) {
+    public Either<HeatParameterData, TitanOperationStatus> addPropertyToGraph(String propertyName, HeatParameterDefinition propertyDefinition, String parentId, NodeTypeEnum nodeType) {
 
-               if (properties == null) {
-                       return StorageOperationStatus.OK;
-               }
-               for (HeatParameterDefinition property : properties) {
+        UniqueIdData parentNode = new UniqueIdData(nodeType, parentId);
 
-                       HeatParameterData heatParameterData = new HeatParameterData(property);
-                       Either<HeatParameterData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(heatParameterData, HeatParameterData.class);
-                       if (updateNode.isRight()) {
-                               log.debug("failed to update heat parameter in graph. id = {}", property.getUniqueId());
-                               return DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value());
-                       }
-               }
+        propertyDefinition.setUniqueId(UniqueIdBuilder.buildHeatParameterUniqueId(parentId, propertyName));
+        HeatParameterData propertyData = new HeatParameterData(propertyDefinition);
 
-               return StorageOperationStatus.OK;
-       }
+        log.debug("Before adding property to graph {}" , propertyData);
+        Either<HeatParameterData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData, HeatParameterData.class);
+        log.debug("After adding property to graph {}" , propertyData);
+        if (createNodeResult.isRight()) {
+            TitanOperationStatus operationStatus = createNodeResult.right().value();
+            log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus);
+            return Either.right(operationStatus);
+        }
 
-       public Either<HeatParameterData, TitanOperationStatus> addPropertyToGraph(String propertyName, HeatParameterDefinition propertyDefinition, String parentId, NodeTypeEnum nodeType) {
+        Map<String, Object> props = new HashMap<>();
+        props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName);
+        Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(parentNode, propertyData, GraphEdgeLabels.HEAT_PARAMETER, props);
+        if (createRelResult.isRight()) {
+            TitanOperationStatus operationStatus = createRelResult.right().value();
+            log.error("Failed to associate {} {} to heat parameter {} in graph. status is {}", nodeType.getName(), parentId, propertyName, operationStatus);
+            return Either.right(operationStatus);
+        }
 
-               UniqueIdData parentNode = new UniqueIdData(nodeType, parentId);
+        return Either.left(createNodeResult.left().value());
 
-               propertyDefinition.setUniqueId(UniqueIdBuilder.buildHeatParameterUniqueId(parentId, propertyName));
-               HeatParameterData propertyData = new HeatParameterData(propertyDefinition);
+    }
 
-               log.debug("Before adding property to graph {}" , propertyData);
-               Either<HeatParameterData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyData, HeatParameterData.class);
-               log.debug("After adding property to graph {}" , propertyData);
-               if (createNodeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
-                       log.error("Failed to add property {} to graph. status is {}", propertyName, operationStatus);
-                       return Either.right(operationStatus);
-               }
+    public StorageOperationStatus validateAndUpdateProperty(HeatParameterDefinition propertyDefinition) {
 
-               Map<String, Object> props = new HashMap<String, Object>();
-               props.put(GraphPropertiesDictionary.NAME.getProperty(), propertyName);
-               Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(parentNode, propertyData, GraphEdgeLabels.HEAT_PARAMETER, props);
-               if (createRelResult.isRight()) {
-                       TitanOperationStatus operationStatus = createRelResult.right().value();
-                       log.error("Failed to associate {} {} to heat parameter {} in graph. status is {}", nodeType.getName(), parentId, propertyName, operationStatus);
-                       return Either.right(operationStatus);
-               }
+        log.trace("Going to validate property type and value. {}" , propertyDefinition);
 
-               return Either.left(createNodeResult.left().value());
+        String propertyType = propertyDefinition.getType();
+        HeatParameterType type = getType(propertyType);
 
-       }
+        if (type == null) {
+            log.info("The type {} of heat parameter is invalid", type);
 
-       public StorageOperationStatus validateAndUpdateProperty(HeatParameterDefinition propertyDefinition) {
+            return StorageOperationStatus.INVALID_TYPE;
+        }
+        propertyDefinition.setType(type.getType());
 
-               log.trace("Going to validate property type and value. {}" , propertyDefinition);
+        log.trace("After validating property type {}", propertyType);
 
-               String propertyType = propertyDefinition.getType();
-               HeatParameterType type = getType(propertyType);
-
-               if (type == null) {
-                       log.info("The type {} of heat parameter is invalid", type);
-
-                       return StorageOperationStatus.INVALID_TYPE;
-               }
-               propertyDefinition.setType(type.getType());
-
-               log.trace("After validating property type {}", propertyType);
-
-               // validate default value
-               String defaultValue = propertyDefinition.getDefaultValue();
-               boolean isValidProperty = isValidValue(type, defaultValue);
-               if (false == isValidProperty) {
-                       log.info("The value {} of property from type {} is invalid", defaultValue, type);
-                       return StorageOperationStatus.INVALID_VALUE;
-               }
-
-               PropertyValueConverter converter = type.getConverter();
-
-               if (isEmptyValue(defaultValue)) {
-                       log.debug("Default value was not sent for property {}. Set default value to {}", propertyDefinition.getName() , EMPTY_VALUE);
-                                       
-                       propertyDefinition.setDefaultValue(EMPTY_VALUE);
-               } else if (false == isEmptyValue(defaultValue)) {
-                       String convertedValue = converter.convert(defaultValue, null, null);
-                       propertyDefinition.setDefaultValue(convertedValue);
-               }
-
-               // validate current value
-               String value = propertyDefinition.getCurrentValue();
-               isValidProperty = isValidValue(type, value);
-               if (false == isValidProperty) {
-                       log.info("The value {} of property from type {} is invalid", value, type);
-                       return StorageOperationStatus.INVALID_VALUE;
-               }
-
-               if (isEmptyValue(value)) {
-                       log.debug("Value was not sent for property {}. Set value to {}", propertyDefinition.getName(), EMPTY_VALUE);
-                                       
-                       propertyDefinition.setCurrentValue(EMPTY_VALUE);
-               } else if (!value.equals("")) {
-                       String convertedValue = converter.convert(value, null, null);
-                       propertyDefinition.setCurrentValue(convertedValue);
-               }
-
-               return StorageOperationStatus.OK;
-       }
-
-       public HeatParameterDefinition convertParameterDataToParameterDefinition(HeatParameterData propertyDataResult, String propertyName, String resourceId) {
-               log.debug("convert to HeatParamereDefinition {}", propertyDataResult);
-
-               HeatParameterDefinition propertyDefResult = new HeatParameterDefinition(propertyDataResult.getHeatDataDefinition());
-
-               propertyDefResult.setName(propertyName);
-
-               return propertyDefResult;
-       }
-
-       private HeatParameterType getType(String propertyType) {
-
-               HeatParameterType type = HeatParameterType.isValidType(propertyType);
-
-               return type;
-
-       }
-
-       protected boolean isValidValue(HeatParameterType type, String value) {
-               if (isEmptyValue(value)) {
-                       return true;
-               }
-
-               PropertyTypeValidator validator = type.getValidator();
-
-               boolean isValid = validator.isValid(value, null, null);
-               if (true == isValid) {
-                       return true;
-               } else {
-                       return false;
-               }
-
-       }
-
-       public boolean isEmptyValue(String value) {
-               if (value == null) {
-                       return true;
-               }
-               return false;
-       }
-
-       public boolean isNullParam(String value) {
-               if (value == null) {
-                       return true;
-               }
-               return false;
-       }
-
-       @Override
-       public Either<HeatParameterValueData, StorageOperationStatus> updateHeatParameterValue(HeatParameterDefinition heatParam, String artifactId, String resourceInstanceId, String artifactLabel) {
-               String heatEnvId = UniqueIdBuilder.buildHeatParameterValueUniqueId(resourceInstanceId, artifactLabel, heatParam.getName());
-               Either<HeatParameterValueData, TitanOperationStatus> getNode = titanGenericDao.getNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), heatEnvId, HeatParameterValueData.class);
-               if (getNode.isRight() || getNode.left().value() == null) {
-                       if (heatParam.getCurrentValue() == null || (heatParam.getDefaultValue() != null && heatParam.getCurrentValue().equals(heatParam.getDefaultValue()))) {
-                               log.debug("Updated heat parameter value equals default value. No need to create heat parameter value for heat parameter {}", heatParam.getUniqueId());
-                               return Either.left(null);
-                       }
-                       return createHeatParameterValue(heatParam, artifactId, resourceInstanceId, artifactLabel);
-               } else {
-                       heatParam.setUniqueId(heatEnvId);
-                       return updateHeatParameterValue(heatParam);
-               }
-       }
-
-       public Either<HeatParameterValueData, StorageOperationStatus> updateHeatParameterValue(HeatParameterDefinition heatParam) {
-               HeatParameterValueData heatParameterValue = new HeatParameterValueData();
-               heatParameterValue.setUniqueId(heatParam.getUniqueId());
-               if (heatParam.getCurrentValue() == null || (heatParam.getDefaultValue() != null && heatParam.getCurrentValue().equals(heatParam.getDefaultValue()))) {
-                       Either<GraphRelation, TitanOperationStatus> deleteParameterValueIncomingRelation = titanGenericDao.deleteIncomingRelationByCriteria(heatParameterValue, GraphEdgeLabels.PARAMETER_VALUE, null);
-                       if (deleteParameterValueIncomingRelation.isRight()) {
-                               log.debug("Failed to delete heat parameter value incoming relation on graph. id = {}", heatParameterValue.getUniqueId());
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteParameterValueIncomingRelation.right().value()));
-                       }
-                       Either<Edge, TitanOperationStatus> getOutgoingRelation = titanGenericDao.getOutgoingEdgeByCriteria(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) heatParameterValue.getUniqueId(), GraphEdgeLabels.PARAMETER_IMPL, null);
-                       if (getOutgoingRelation.isRight()) {
-                               log.debug("Failed to get heat parameter value outgoing relation from graph. id = {}", heatParameterValue.getUniqueId());
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getOutgoingRelation.right().value()));
-                       }
-                       Edge edge = getOutgoingRelation.left().value();
-                       if (edge == null) {
-                               log.debug("Failed to get heat parameter value outgoing relation from graph. id = {}", heatParameterValue.getUniqueId());
-                               return Either.right(StorageOperationStatus.GENERAL_ERROR);
-                       }
-                       edge.remove();
-
-                       Either<HeatParameterValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(heatParameterValue, HeatParameterValueData.class);
-                       if (deleteNode.isRight()) {
-                               log.debug("Failed to delete heat parameter value on graph. id = {}", heatParameterValue.getUniqueId());
-                               return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value()));
-                       }
-                       return Either.left(deleteNode.left().value());
-               }
-               heatParameterValue.setValue(heatParam.getCurrentValue());
-               Either<HeatParameterValueData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(heatParameterValue, HeatParameterValueData.class);
-               if (updateNode.isRight()) {
-                       log.debug("Failed to update heat parameter value in graph. id = {}", heatParameterValue.getUniqueId());
-                       return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
-               }
-               return Either.left(updateNode.left().value());
-       }
-
-       public Either<HeatParameterValueData, StorageOperationStatus> createHeatParameterValue(HeatParameterDefinition heatParam, String artifactId, String resourceInstanceId, String artifactLabel) {
-
-               Either<HeatParameterValueData, TitanOperationStatus> addHeatValueToGraph = addHeatValueToGraph(heatParam, artifactLabel, artifactId, resourceInstanceId);
-               if (addHeatValueToGraph.isRight()) {
-                       log.debug("Failed to create heat parameters value on graph for artifact {}", artifactId);
-                       return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addHeatValueToGraph.right().value()));
-               }
-               return Either.left(addHeatValueToGraph.left().value());
-       }
-
-       public Either<HeatParameterValueData, TitanOperationStatus> addHeatValueToGraph(HeatParameterDefinition heatParameter, String artifactLabel, String artifactId, String resourceInstanceId) {
-
-               UniqueIdData heatEnvNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId);
-               HeatParameterValueData heatValueData = new HeatParameterValueData();
-               heatValueData.setUniqueId(UniqueIdBuilder.buildHeatParameterValueUniqueId(resourceInstanceId, artifactLabel, heatParameter.getName()));
-               heatValueData.setValue(heatParameter.getCurrentValue());
-
-               log.debug("Before adding property to graph {}", heatValueData);
-               Either<HeatParameterValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(heatValueData, HeatParameterValueData.class);
-               log.debug("After adding property to graph {}", heatValueData);
-               if (createNodeResult.isRight()) {
-                       TitanOperationStatus operationStatus = createNodeResult.right().value();
-                       log.error("Failed to add heat value {} to graph. status is {}", heatValueData.getUniqueId(), operationStatus);
-                       return Either.right(operationStatus);
-               }
-
-               Map<String, Object> props = new HashMap<String, Object>();
-               props.put(GraphPropertiesDictionary.NAME.getProperty(), heatParameter.getName());
-               Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(heatEnvNode, heatValueData, GraphEdgeLabels.PARAMETER_VALUE, props);
-               if (createRelResult.isRight()) {
-                       TitanOperationStatus operationStatus = createRelResult.right().value();
-                       log.error("Failed to associate heat value {} to heat env artifact {} in graph. status is {}", heatValueData.getUniqueId(), artifactId, operationStatus);
-                       return Either.right(operationStatus);
-               }
-               UniqueIdData heatParameterNode = new UniqueIdData(NodeTypeEnum.HeatParameter, heatParameter.getUniqueId());
-               Either<GraphRelation, TitanOperationStatus> createRel2Result = titanGenericDao.createRelation(heatValueData, heatParameterNode, GraphEdgeLabels.PARAMETER_IMPL, null);
-               if (createRel2Result.isRight()) {
-                       TitanOperationStatus operationStatus = createRel2Result.right().value();
-                       log.error("Failed to associate heat value {} to heat parameter {} in graph. status is {}", heatValueData.getUniqueId(), heatParameter.getName(), operationStatus);
-                       return Either.right(operationStatus);
-               }
-
-               return Either.left(createNodeResult.left().value());
-
-       }
+        // validate default value
+        String defaultValue = propertyDefinition.getDefaultValue();
+        boolean isValidProperty = isValidValue(type, defaultValue);
+        if (!isValidProperty) {
+            log.info("The value {} of property from type {} is invalid", defaultValue, type);
+            return StorageOperationStatus.INVALID_VALUE;
+        }
+
+        PropertyValueConverter converter = type.getConverter();
+
+        if (isEmptyValue(defaultValue)) {
+            log.debug("Default value was not sent for property {}. Set default value to {}", propertyDefinition.getName() , EMPTY_VALUE);
+
+            propertyDefinition.setDefaultValue(EMPTY_VALUE);
+        } else if (!isEmptyValue(defaultValue)) {
+            String convertedValue = converter.convert(defaultValue, null, null);
+            propertyDefinition.setDefaultValue(convertedValue);
+        }
+
+        // validate current value
+        String value = propertyDefinition.getCurrentValue();
+        isValidProperty = isValidValue(type, value);
+        if (!isValidProperty) {
+            log.info("The value {} of property from type {} is invalid", value, type);
+            return StorageOperationStatus.INVALID_VALUE;
+        }
+
+        if (isEmptyValue(value)) {
+            log.debug("Value was not sent for property {}. Set value to {}", propertyDefinition.getName(), EMPTY_VALUE);
+
+            propertyDefinition.setCurrentValue(EMPTY_VALUE);
+        } else if (!value.equals("")) {
+            String convertedValue = converter.convert(value, null, null);
+            propertyDefinition.setCurrentValue(convertedValue);
+        }
+
+        return StorageOperationStatus.OK;
+    }
+
+    public HeatParameterDefinition convertParameterDataToParameterDefinition(HeatParameterData propertyDataResult, String propertyName, String resourceId) {
+        log.debug("convert to HeatParamereDefinition {}", propertyDataResult);
+
+        HeatParameterDefinition propertyDefResult = new HeatParameterDefinition(propertyDataResult.getHeatDataDefinition());
+
+        propertyDefResult.setName(propertyName);
+
+        return propertyDefResult;
+    }
+
+    private HeatParameterType getType(String propertyType) {
+
+        return HeatParameterType.isValidType(propertyType);
+
+    }
+
+    protected boolean isValidValue(HeatParameterType type, String value) {
+        if (isEmptyValue(value)) {
+            return true;
+        }
+
+        PropertyTypeValidator validator = type.getValidator();
+
+        boolean isValid = validator.isValid(value, null, null);
+        if (isValid) {
+            return true;
+        } else {
+            return false;
+        }
+
+    }
+
+    public boolean isEmptyValue(String value) {
+        if (value == null) {
+            return true;
+        }
+        return false;
+    }
+
+    public boolean isNullParam(String value) {
+        if (value == null) {
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public Either<HeatParameterValueData, StorageOperationStatus> updateHeatParameterValue(HeatParameterDefinition heatParam, String artifactId, String resourceInstanceId, String artifactLabel) {
+        String heatEnvId = UniqueIdBuilder.buildHeatParameterValueUniqueId(resourceInstanceId, artifactLabel, heatParam.getName());
+        Either<HeatParameterValueData, TitanOperationStatus> getNode = titanGenericDao.getNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), heatEnvId, HeatParameterValueData.class);
+        if (getNode.isRight() || getNode.left().value() == null) {
+            if (heatParam.getCurrentValue() == null || (heatParam.getDefaultValue() != null && heatParam.getCurrentValue().equals(heatParam.getDefaultValue()))) {
+                log.debug("Updated heat parameter value equals default value. No need to create heat parameter value for heat parameter {}", heatParam.getUniqueId());
+                return Either.left(null);
+            }
+            return createHeatParameterValue(heatParam, artifactId, resourceInstanceId, artifactLabel);
+        } else {
+            heatParam.setUniqueId(heatEnvId);
+            return updateHeatParameterValue(heatParam);
+        }
+    }
+
+    public Either<HeatParameterValueData, StorageOperationStatus> updateHeatParameterValue(HeatParameterDefinition heatParam) {
+        HeatParameterValueData heatParameterValue = new HeatParameterValueData();
+        heatParameterValue.setUniqueId(heatParam.getUniqueId());
+        if (heatParam.getCurrentValue() == null || (heatParam.getDefaultValue() != null && heatParam.getCurrentValue().equals(heatParam.getDefaultValue()))) {
+            Either<GraphRelation, TitanOperationStatus> deleteParameterValueIncomingRelation = titanGenericDao.deleteIncomingRelationByCriteria(heatParameterValue, GraphEdgeLabels.PARAMETER_VALUE, null);
+            if (deleteParameterValueIncomingRelation.isRight()) {
+                log.debug("Failed to delete heat parameter value incoming relation on graph. id = {}", heatParameterValue.getUniqueId());
+                return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteParameterValueIncomingRelation.right().value()));
+            }
+            Either<Edge, TitanOperationStatus> getOutgoingRelation = titanGenericDao.getOutgoingEdgeByCriteria(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), (String) heatParameterValue.getUniqueId(), GraphEdgeLabels.PARAMETER_IMPL, null);
+            if (getOutgoingRelation.isRight()) {
+                log.debug("Failed to get heat parameter value outgoing relation from graph. id = {}", heatParameterValue.getUniqueId());
+                return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getOutgoingRelation.right().value()));
+            }
+            Edge edge = getOutgoingRelation.left().value();
+            if (edge == null) {
+                log.debug("Failed to get heat parameter value outgoing relation from graph. id = {}", heatParameterValue.getUniqueId());
+                return Either.right(StorageOperationStatus.GENERAL_ERROR);
+            }
+            edge.remove();
+
+            Either<HeatParameterValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(heatParameterValue, HeatParameterValueData.class);
+            if (deleteNode.isRight()) {
+                log.debug("Failed to delete heat parameter value on graph. id = {}", heatParameterValue.getUniqueId());
+                return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value()));
+            }
+            return Either.left(deleteNode.left().value());
+        }
+        heatParameterValue.setValue(heatParam.getCurrentValue());
+        Either<HeatParameterValueData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(heatParameterValue, HeatParameterValueData.class);
+        if (updateNode.isRight()) {
+            log.debug("Failed to update heat parameter value in graph. id = {}", heatParameterValue.getUniqueId());
+            return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
+        }
+        return Either.left(updateNode.left().value());
+    }
+
+    public Either<HeatParameterValueData, StorageOperationStatus> createHeatParameterValue(HeatParameterDefinition heatParam, String artifactId, String resourceInstanceId, String artifactLabel) {
+
+        Either<HeatParameterValueData, TitanOperationStatus> addHeatValueToGraph = addHeatValueToGraph(heatParam, artifactLabel, artifactId, resourceInstanceId);
+        if (addHeatValueToGraph.isRight()) {
+            log.debug("Failed to create heat parameters value on graph for artifact {}", artifactId);
+            return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addHeatValueToGraph.right().value()));
+        }
+        return Either.left(addHeatValueToGraph.left().value());
+    }
+
+    public Either<HeatParameterValueData, TitanOperationStatus> addHeatValueToGraph(HeatParameterDefinition heatParameter, String artifactLabel, String artifactId, String resourceInstanceId) {
+
+        UniqueIdData heatEnvNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId);
+        HeatParameterValueData heatValueData = new HeatParameterValueData();
+        heatValueData.setUniqueId(UniqueIdBuilder.buildHeatParameterValueUniqueId(resourceInstanceId, artifactLabel, heatParameter.getName()));
+        heatValueData.setValue(heatParameter.getCurrentValue());
+
+        log.debug("Before adding property to graph {}", heatValueData);
+        Either<HeatParameterValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(heatValueData, HeatParameterValueData.class);
+        log.debug("After adding property to graph {}", heatValueData);
+        if (createNodeResult.isRight()) {
+            TitanOperationStatus operationStatus = createNodeResult.right().value();
+            log.error("Failed to add heat value {} to graph. status is {}", heatValueData.getUniqueId(), operationStatus);
+            return Either.right(operationStatus);
+        }
+
+        Map<String, Object> props = new HashMap<>();
+        props.put(GraphPropertiesDictionary.NAME.getProperty(), heatParameter.getName());
+        Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(heatEnvNode, heatValueData, GraphEdgeLabels.PARAMETER_VALUE, props);
+        if (createRelResult.isRight()) {
+            TitanOperationStatus operationStatus = createRelResult.right().value();
+            log.error("Failed to associate heat value {} to heat env artifact {} in graph. status is {}", heatValueData.getUniqueId(), artifactId, operationStatus);
+            return Either.right(operationStatus);
+        }
+        UniqueIdData heatParameterNode = new UniqueIdData(NodeTypeEnum.HeatParameter, heatParameter.getUniqueId());
+        Either<GraphRelation, TitanOperationStatus> createRel2Result = titanGenericDao.createRelation(heatValueData, heatParameterNode, GraphEdgeLabels.PARAMETER_IMPL, null);
+        if (createRel2Result.isRight()) {
+            TitanOperationStatus operationStatus = createRel2Result.right().value();
+            log.error("Failed to associate heat value {} to heat parameter {} in graph. status is {}", heatValueData.getUniqueId(), heatParameter.getName(), operationStatus);
+            return Either.right(operationStatus);
+        }
+
+        return Either.left(createNodeResult.left().value());
+
+    }
 
 }