+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItemBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItemKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents.AbstractObjects;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.objects.AbstractConnection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.objects.AbstractFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.objects.AbstractNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperation;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/12/4.\r
+ */\r
+public class UpdateTemplateInstance {\r
+ private TenantManage tenantManage;\r
+ Map<String, String> abstractInstanceIdMap = new HashMap<String, String>();\r
+ Map<String, String> nameIdMap = new HashMap<String, String>();\r
+ private GetDefinitions getDefinitions;\r
+\r
+ public UpdateTemplateInstance(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ getDefinitions = new GetDefinitions(dataBroker);\r
+ }\r
+\r
+ public String checkTemplateInstance(UserId userId, TemplateInstance templateInstance){\r
+ String errorInfo = null;\r
+ TemplateDefinition definition = null;\r
+ if (tenantManage.getTempalteDefinition(userId)!=null){\r
+ if (tenantManage.getTempalteDefinition(userId).containsKey(templateInstance.getTemplateName())){\r
+ definition = tenantManage.getTempalteDefinition(userId).get(templateInstance.getTemplateName());\r
+ }\r
+ }\r
+ else if (tenantManage.getDefinitionDataStore(userId)!=null){\r
+ if (tenantManage.getDefinitionDataStore(userId).containsKey(templateInstance.getTemplateName())){\r
+ definition = tenantManage.getDefinitionDataStore(userId).get(templateInstance.getTemplateName());\r
+ }\r
+ }\r
+ else if (definition==null) {\r
+ Map<UserId, User> usersMap = tenantManage.getUsers();\r
+ for (User user : usersMap.values()) {\r
+ if (user.getUserRole().getValue().equals(NEMOConstants.admin)) {\r
+ if (tenantManage.getDefinitionDataStore(user.getUserId()) != null) {\r
+ if (tenantManage.getDefinitionDataStore(user.getUserId()).containsKey(templateInstance.getTemplateName())) {\r
+ definition = tenantManage.getDefinitionDataStore(user.getUserId()).get(templateInstance.getTemplateName());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ if (definition!=null){\r
+ List<TemplateParameter> templateParameters = definition.getTemplateParameter();\r
+ HashMap<ParameterName, TemplateParameter.ParameterValueType> definitionMap = new HashMap<ParameterName, TemplateParameter.ParameterValueType>();\r
+ for (TemplateParameter parameter : templateParameters){\r
+ definitionMap.put(parameter.getParameterName(),parameter.getParameterValueType());\r
+ }\r
+\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter> instanceParameters = templateInstance.getTemplateParameter();\r
+ HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap = new HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues>();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter parameter : instanceParameters){\r
+ if (definitionMap.containsKey(parameter.getParameterName())){\r
+ if (definitionMap.get(parameter.getParameterName()).getIntValue()==0 &&\r
+ !(parameter.getParameterValues().getIntValue()==null&¶meter.getParameterValues().getStringValue()!=null&¶meter.getParameterValues().getRangeValue()==null)){\r
+ return "The value type should be string";\r
+ }\r
+ if (definitionMap.get(parameter.getParameterName()).getIntValue()==1 &&\r
+ !(parameter.getParameterValues().getIntValue()!=null&¶meter.getParameterValues().getStringValue()==null&¶meter.getParameterValues().getRangeValue()==null)){\r
+ return "The value type should be string";\r
+ }\r
+ if (definitionMap.get(parameter.getParameterName()).getIntValue()==2 &&\r
+ !(parameter.getParameterValues().getIntValue()==null&¶meter.getParameterValues().getStringValue()==null&¶meter.getParameterValues().getRangeValue()!=null)){\r
+ return "The value type should be string";\r
+ }\r
+ else {\r
+ instaceParameterMap.put(parameter.getParameterName(), parameter.getParameterValues());\r
+ }\r
+ }\r
+ else {\r
+ return "The parameter " + parameter.getParameterName().getValue() + " is not defined.";\r
+ }\r
+ }\r
+ errorInfo = createInstance(userId,definition,instaceParameterMap,templateInstance.getTemplateInstanceName().getValue());\r
+ }\r
+ else {\r
+ if (templateInstance!=null){\r
+ return "The template " + templateInstance.getTemplateName().getValue() + " is not exist.";\r
+ }\r
+ }\r
+\r
+ return errorInfo;\r
+ }\r
+\r
+ //get template definitions defined by admin role\r
+ private TemplateDefinition getTempalteDefinition(TemplateName templateName){\r
+ Map<UserId, User> usersMap = tenantManage.getUsers();\r
+ User userAdmin = null;\r
+ Map<TemplateName, TemplateDefinition> definitionMap = new HashMap<TemplateName, TemplateDefinition>();\r
+ for (User user : usersMap.values()){\r
+ if (user.getUserRole().getValue().equals("admin")){\r
+ userAdmin = user;\r
+ }\r
+ }\r
+ if (userAdmin!=null){\r
+ definitionMap = tenantManage.getTempalteDefinition(userAdmin.getUserId());\r
+ }\r
+ return definitionMap.isEmpty()?null:definitionMap.get(templateName);\r
+ }\r
+\r
+ private String createInstance(UserId userId, TemplateDefinition definition, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap, String instanceName){\r
+ String errorInfo = null;\r
+ if (definition.getTemplateParameter()!=null){\r
+ if (definition.getAbstractIntents().getAbstractObjects()!=null){\r
+ AbstractObjects objects = definition.getAbstractIntents().getAbstractObjects();\r
+ if (objects.getAbstractNode()!=null){\r
+ List<AbstractNode> abstractNodeList = objects.getAbstractNode();\r
+ for (AbstractNode abstractNode : abstractNodeList){\r
+ NodeBuilder nodeBuilder = new NodeBuilder();\r
+ NodeId nodeId = null;\r
+ if (abstractNode.getNodeType().getValue().equals(NEMOConstants.host)){\r
+ Map<PhysicalHostName, PhysicalHost> physicalHostMap = getDefinitions.getPhysicalHost();\r
+ if (physicalHostMap.containsKey(new PhysicalHostName(abstractNode.getNodeName().getValue()))){\r
+ PhysicalHostId physicalHostId = physicalHostMap.get(new PhysicalHostName(abstractNode.getNodeName().getValue())).getHostId();\r
+ nodeBuilder.setKey(new NodeKey(new NodeId(physicalHostId.getValue())))\r
+ .setNodeId(new NodeId(physicalHostId.getValue()));\r
+ }\r
+ else {\r
+ return "The host " + abstractNode.getNodeName().getValue() + " is not exist in physical network.";\r
+ }\r
+ }else {\r
+ nodeId = new NodeId(UUID.randomUUID().toString());\r
+ nodeBuilder.setKey(new NodeKey(nodeId)).setNodeId(nodeId);\r
+ }\r
+ nodeBuilder.setKey(new NodeKey(nodeId)).setNodeId(nodeId);\r
+ if (instaceParameterMap.containsKey(new ParameterName(abstractNode.getNodeName().getValue()))){\r
+ nodeBuilder.setNodeName(new NodeName(instaceParameterMap.get(new ParameterName(abstractNode.getNodeName())).getStringValue().get(0).getValue()));\r
+ }else {\r
+ nodeBuilder.setNodeName(new NodeName(instanceName + "." + abstractNode.getNodeName().getValue()));\r
+ }\r
+\r
+ if (instaceParameterMap.containsKey(new ParameterName(abstractNode.getNodeType().getValue()))){\r
+ nodeBuilder.setNodeType(new NodeType(instaceParameterMap.get(new ParameterName(abstractNode.getNodeType())).getStringValue().get(0).getValue()));\r
+ }else {\r
+ nodeBuilder.setNodeType(abstractNode.getNodeType());\r
+ }\r
+\r
+ if (abstractNode.getSubNode()!=null){\r
+ List<SubNode> subNodeList = new LinkedList<SubNode>();\r
+ for (SubNode subNode : abstractNode.getSubNode()){\r
+ if (abstractInstanceIdMap.containsKey(subNode.getNodeId().getValue())){\r
+ SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
+ subNodeBuilder.setKey(new SubNodeKey(new NodeId(abstractInstanceIdMap.get(subNode.getNodeId().getValue()))))\r
+ .setOrder(subNode.getOrder())\r
+ .setNodeId(new NodeId(abstractInstanceIdMap.get(subNode.getNodeId().getValue())));\r
+ subNodeList.add(subNodeBuilder.build());\r
+ }\r
+ else {\r
+ return "The subnode " + subNode.getNodeId().getValue() + " is not exist.";\r
+ }\r
+ }\r
+ nodeBuilder.setSubNode(subNodeList.isEmpty() ? null : subNodeList);\r
+ }\r
+\r
+ abstractInstanceIdMap.put(abstractNode.getNodeId().getValue(),nodeId.getValue());\r
+ nameIdMap.put(abstractNode.getNodeName().getValue(),abstractNode.getNodeId().getValue());\r
+\r
+ if (abstractNode.getProperty()!=null){\r
+ List<Property> propertyList = new LinkedList<Property>();\r
+ for (Property property : abstractNode.getProperty()){\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.sub_nodes)){\r
+ if (property.getPropertyValues().getStringValue()==null||property.getPropertyValues().getIntValue()!=null||property.getPropertyValues().getRangeValue()!=null){\r
+ return "The subnodes type should be string.";\r
+ }\r
+ else {\r
+ List<StringValue> subnodes = property.getPropertyValues().getStringValue();\r
+ List<SubNode> subNodeList = new LinkedList<SubNode>();\r
+ Long order = 0L;\r
+ for (StringValue value : subnodes){\r
+ if (instaceParameterMap.containsKey(new ParameterName(value.getValue()))){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues = instaceParameterMap.get(new ParameterName(value.getValue())).getStringValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue stringValue : stringValues){\r
+ if (tenantManage.getObjectId(userId,stringValue.getValue())!=null){\r
+ NodeId subNodeId = new NodeId(tenantManage.getObjectId(userId,stringValue.getValue()));\r
+ SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
+ subNodeBuilder.setKey(new SubNodeKey(subNodeId))\r
+ .setNodeId(nodeId)\r
+ .setOrder(order);\r
+ subNodeList.add(subNodeBuilder.build());\r
+ order ++;\r
+ }\r
+ else {\r
+ return "The subnode " + stringValue.getValue() + " is not exist.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ nodeBuilder.setSubNode(subNodeList);\r
+ }\r
+ }\r
+ else {\r
+ Property property1 = createNodeProperty(property,instaceParameterMap);\r
+ if (property1==null){\r
+ return "The property instance is not consistent with template definition.";\r
+ }else {\r
+ propertyList.add(property1);\r
+ }\r
+ }\r
+ }\r
+ nodeBuilder.setProperty(propertyList);\r
+ }\r
+ tenantManage.setNode(userId,nodeBuilder.getNodeId(),nodeBuilder.build());\r
+ }\r
+ }\r
+ if (objects.getAbstractConnection()!=null){\r
+ List<AbstractConnection> abstractConnectionList = objects.getAbstractConnection();\r
+ for (AbstractConnection abstractConnection : abstractConnectionList){\r
+ ConnectionBuilder connectionBuilder = new ConnectionBuilder();\r
+ ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString());\r
+ connectionBuilder.setKey(new ConnectionKey(connectionId)).setConnectionId(connectionId)\r
+ .setConnectionName(new ConnectionName(instanceName + "." + abstractConnection.getConnectionName().getValue()))\r
+ .setConnectionType(abstractConnection.getConnectionType());\r
+\r
+ abstractInstanceIdMap.put(abstractConnection.getConnectionId().getValue(),connectionId.getValue());\r
+ nameIdMap.put(abstractConnection.getConnectionName().getValue(),abstractConnection.getConnectionId().getValue());\r
+\r
+ if (abstractConnection.getEndNode()!=null){\r
+ List<EndNode> endNodeList = new LinkedList<EndNode>();\r
+ for (EndNode endNode : abstractConnection.getEndNode()){\r
+ if (abstractInstanceIdMap.containsKey(endNode.getNodeId().getValue())){\r
+ EndNodeBuilder endNodeBuilder = new EndNodeBuilder();\r
+ endNodeBuilder.setKey(new EndNodeKey(new NodeId(abstractInstanceIdMap.get(endNode.getNodeId().getValue()))))\r
+ .setOrder(endNode.getOrder())\r
+ .setNodeId(new NodeId(abstractInstanceIdMap.get(endNode.getNodeId().getValue())));\r
+ endNodeList.add(endNodeBuilder.build());\r
+ }\r
+ }\r
+ connectionBuilder.setEndNode(endNodeList);\r
+ }\r
+ if (abstractConnection.getProperty()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> propertyList = new LinkedList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property>();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : abstractConnection.getProperty()){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property1 = createConnProperty(property, instaceParameterMap);\r
+ if (property1==null){\r
+ return "The property instance is not consistent with template definition.";\r
+ }else {\r
+ propertyList.add(createConnProperty(property,instaceParameterMap));\r
+ }\r
+ }\r
+ connectionBuilder.setProperty(propertyList);\r
+ }\r
+ tenantManage.setConnection(userId,connectionBuilder.getConnectionId(),connectionBuilder.build());\r
+ }\r
+ }\r
+ if (objects.getAbstractFlow()!=null){\r
+ List<AbstractFlow> abstractFlowList = objects.getAbstractFlow();\r
+ for (AbstractFlow abstractFlow : abstractFlowList){\r
+ FlowBuilder flowBuilder = new FlowBuilder();\r
+ FlowId flowId = new FlowId(UUID.randomUUID().toString());\r
+ flowBuilder.setKey(new FlowKey(flowId)).setFlowId(flowId)\r
+ .setFlowName(new FlowName(instanceName+"."+abstractFlow.getFlowName().getValue()));\r
+\r
+ abstractInstanceIdMap.put(abstractFlow.getFlowId().getValue(),flowId.getValue());\r
+ nameIdMap.put(abstractFlow.getFlowName().getValue(),abstractFlow.getFlowId().getValue());\r
+\r
+ if (abstractFlow.getMatchItem()!=null){\r
+ List<MatchItem> matchItemList = new LinkedList<MatchItem>();\r
+ for (MatchItem matchItem : abstractFlow.getMatchItem()){\r
+ MatchItem matchItem1 = createMatchItem(matchItem,instaceParameterMap);\r
+ if (matchItem1==null){\r
+ return "The match instance is not consistent with template definition.";\r
+ }else {\r
+ matchItemList.add(matchItem1);\r
+ }\r
+ }\r
+ flowBuilder.setMatchItem(matchItemList);\r
+ }\r
+ tenantManage.setFlow(userId,flowBuilder.getFlowId(),flowBuilder.build());\r
+ }\r
+ }\r
+ }\r
+\r
+ if (definition.getAbstractIntents().getAbstractOperations()!=null){\r
+ List<AbstractOperation> abstractOperationList = definition.getAbstractIntents().getAbstractOperations().getAbstractOperation();\r
+ if (abstractOperationList!=null){\r
+ for (AbstractOperation abstractOperation : abstractOperationList){\r
+ OperationBuilder operationBuilder = new OperationBuilder();\r
+ OperationId operationId = new OperationId(UUID.randomUUID().toString());\r
+ operationBuilder.setKey(new OperationKey(operationId)).setOperationId(operationId)\r
+ .setOperationName(new OperationName(instanceName + "." + abstractOperation.getOperationName().getValue()));\r
+\r
+ String prority = abstractOperation.getOperationName().getValue()+"."+NEMOConstants.Priority;\r
+ if (instaceParameterMap.containsKey(new ParameterName(prority))){\r
+ if (instaceParameterMap.get(new ParameterName(prority)).getIntValue()==null||instaceParameterMap.get(new ParameterName(prority)).getStringValue()!=null\r
+ ||instaceParameterMap.get(new ParameterName(prority)).getRangeValue()!=null){\r
+ return "The "+NEMOConstants.Priority +" should one integer.";\r
+ }else {\r
+ if (instaceParameterMap.get(new ParameterName(prority)).getIntValue().size()!=1){\r
+ return "The "+NEMOConstants.Priority +" should one integer.";\r
+ }\r
+ else {\r
+ operationBuilder.setPriority(instaceParameterMap.get(new ParameterName(prority)).getIntValue().get(0).getValue());\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ operationBuilder.setPriority(abstractOperation.getPriority());\r
+ }\r
+\r
+ String target = NEMOConstants.Target+"."+abstractOperation.getOperationName().getValue() ;\r
+ if (instaceParameterMap.containsKey(new ParameterName(target))){\r
+ if (instaceParameterMap.get(new ParameterName(target)).getIntValue()!=null||instaceParameterMap.get(new ParameterName(target)).getStringValue()==null\r
+ ||instaceParameterMap.get(new ParameterName(target)).getRangeValue()!=null){\r
+ return "The "+NEMOConstants.Target +" should one string.";\r
+ }\r
+ else {\r
+\r
+ if (nameIdMap.containsKey(instaceParameterMap.get(new ParameterName(target)))){\r
+ String abstractId = nameIdMap.get(instaceParameterMap.get(new ParameterName(target)));\r
+ operationBuilder.setTargetObject(new ObjectId(abstractInstanceIdMap.get(abstractId)));\r
+ }\r
+ else {\r
+ return "The "+NEMOConstants.Target + " is not exist.";\r
+ }\r
+ }\r
+ }else {\r
+ String objectId = abstractInstanceIdMap.get(abstractOperation.getTargetObject().getValue());\r
+ operationBuilder.setTargetObject(new ObjectId(objectId));\r
+ }\r
+\r
+ if (abstractOperation.getConditionSegment()!=null){\r
+ List<ConditionSegment> conditionSegmentList = abstractOperation.getConditionSegment();\r
+ List<ConditionSegment> conditionSegments = new LinkedList<ConditionSegment>();\r
+ for (ConditionSegment conditionSegment : conditionSegmentList){\r
+ ConditionSegment conditionSegment1 = createCondition(conditionSegment,instaceParameterMap);\r
+ if (conditionSegment1==null){\r
+ return "The Condition instance is not consistent with Condition definition.";\r
+ }\r
+ else {\r
+ conditionSegments.add(conditionSegment1);\r
+ }\r
+ }\r
+ operationBuilder.setConditionSegment(conditionSegments);\r
+ }\r
+ if (abstractOperation.getAction()!=null){\r
+ List<Action> actionList = abstractOperation.getAction();\r
+ List<Action> actions = new LinkedList<Action>();\r
+ for (Action action : actionList){\r
+ Action action1 = createAction(action,instaceParameterMap);\r
+ if (action1==null){\r
+ return "The Action instance is not consistent with template definition.";\r
+ }\r
+ else\r
+ {\r
+ actions.add(action1);\r
+ }\r
+ }\r
+ operationBuilder.setAction(actions);\r
+ }\r
+ tenantManage.setOperation(userId,operationBuilder.getOperationId(),operationBuilder.build());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private Property createNodeProperty(Property property, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.PropertyBuilder propertyBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.PropertyBuilder();\r
+ propertyBuilder.setPropertyName(property.getPropertyName());\r
+ propertyBuilder.setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.PropertyKey(property.getPropertyName()));\r
+ PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+\r
+ List<StringValue> stringValues2 = new LinkedList<StringValue>();\r
+ List<IntValue> intValues2 = new LinkedList<IntValue>();\r
+ RangeValue rangeValue2 = null;\r
+ if (property.getPropertyValues().getStringValue()!=null){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ for (StringValue stringValue : stringValues){\r
+ if (instaceParameterMap.containsKey(new ParameterName(stringValue.getValue()))){\r
+ if (instaceParameterMap.get(new ParameterName(stringValue.getValue())).getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues1 = instaceParameterMap.get(new ParameterName(stringValue.getValue())).getStringValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue stringValue1 : stringValues1){\r
+ stringValues2.add(new StringValueBuilder().setKey(new StringValueKey(stringValue1.getOrder(),stringValue1.getValue())).setValue(stringValue1.getValue()).setOrder(stringValue1.getOrder()).build());\r
+ }\r
+ }\r
+\r
+ if (instaceParameterMap.get(new ParameterName(stringValue.getValue())).getIntValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue> intValues1 = instaceParameterMap.get(new ParameterName(stringValue.getValue())).getIntValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue intValue : intValues1){\r
+ intValues2.add(new IntValueBuilder().setKey(new IntValueKey(intValue.getOrder(),intValue.getValue())).setValue(intValue.getValue()).setOrder(intValue.getOrder()).build());\r
+ }\r
+ }\r
+\r
+ if (instaceParameterMap.get(new ParameterName(stringValue.getValue())).getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.RangeValue rangeValue1 = instaceParameterMap.get(new ParameterName(stringValue.getValue())).getRangeValue();\r
+ rangeValue2 = new RangeValueBuilder().setMax(rangeValue1.getMax()).setMin(rangeValue1.getMin()).build();\r
+ propertyValuesBuilder.setRangeValue(rangeValue2);\r
+ }\r
+\r
+ }\r
+ else {\r
+ stringValues2.add(stringValue);\r
+ }\r
+ }\r
+ }\r
+ if (property.getPropertyValues().getIntValue()!=null){\r
+ for (IntValue intValue : property.getPropertyValues().getIntValue()){\r
+ intValues2.add(intValue);\r
+ }\r
+ }\r
+ if (property.getPropertyValues().getRangeValue()!=null){\r
+ rangeValue2 = property.getPropertyValues().getRangeValue();\r
+ }\r
+\r
+ propertyValuesBuilder.setStringValue(stringValues2.isEmpty()?null:stringValues2);\r
+ propertyValuesBuilder.setIntValue(intValues2.isEmpty()?null:intValues2);\r
+ propertyValuesBuilder.setRangeValue(rangeValue2);\r
+ propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+\r
+ return propertyBuilder.build();\r
+ }\r
+\r
+ private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property createConnProperty(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap){\r
+ PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+ propertyBuilder.setPropertyName(property.getPropertyName())\r
+ .setKey(new PropertyKey(property.getPropertyName()));\r
+\r
+ PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+ List<StringValue> stringValues = new LinkedList<StringValue>();\r
+ List<IntValue> intValues = new LinkedList<IntValue>();\r
+ RangeValue rangeValue = null;\r
+\r
+ if (property.getPropertyValues().getStringValue()!=null){\r
+ List<StringValue> stringValueList = property.getPropertyValues().getStringValue();\r
+ for (StringValue stringValue : stringValueList){\r
+ if (instaceParameterMap.containsKey(new ParameterName(stringValue.getValue()))){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues values = instaceParameterMap.get(new ParameterName(stringValue.getValue()));\r
+ if (values.getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues1 = values.getStringValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue value : stringValues1){\r
+ stringValues.add(new StringValueBuilder().setKey(new StringValueKey(value.getOrder(),value.getValue())).setOrder(value.getOrder()).setValue(value.getValue()).build());\r
+ }\r
+ }\r
+ if (values.getIntValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue> intValues1 = values.getIntValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue value : intValues1){\r
+ intValues.add(new IntValueBuilder().setKey(new IntValueKey(value.getOrder(),value.getValue())).setOrder(value.getOrder()).setValue(value.getValue()).build());\r
+ }\r
+ }\r
+ if (values.getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.RangeValue rangeValue1 = values.getRangeValue();\r
+ rangeValue = new RangeValueBuilder().setMax(rangeValue1.getMax()).setMin(rangeValue1.getMin()).build();\r
+ }\r
+ }else {\r
+ stringValues.add(stringValue);\r
+ }\r
+ }\r
+ }\r
+ if (property.getPropertyValues().getIntValue()!=null){\r
+ for (IntValue intValue : property.getPropertyValues().getIntValue()){\r
+ intValues.add(intValue);\r
+ }\r
+ }\r
+ if (property.getPropertyValues().getRangeValue()!=null){\r
+ rangeValue = property.getPropertyValues().getRangeValue();\r
+ }\r
+\r
+ propertyValuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+ .setIntValue(intValues.isEmpty()?null:intValues)\r
+ .setRangeValue(rangeValue);\r
+ propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+\r
+ return propertyBuilder.build();\r
+ }\r
+\r
+ private MatchItem createMatchItem(MatchItem matchItem, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap){\r
+ MatchItemBuilder matchItemBuilder = new MatchItemBuilder();\r
+ matchItemBuilder.setMatchItemName(matchItem.getMatchItemName());\r
+ matchItemBuilder.setKey(new MatchItemKey(matchItem.getMatchItemName()));\r
+\r
+ MatchItemValueBuilder valueBuilder = new MatchItemValueBuilder();\r
+\r
+ if (matchItem.getMatchItemValue().getStringValue()!=null){\r
+ String stringValue = matchItem.getMatchItemValue().getStringValue();\r
+ if (instaceParameterMap.containsKey(new ParameterName(stringValue))){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues parameterValues = instaceParameterMap.get(new ParameterName(matchItem.getMatchItemValue().getStringValue()));\r
+ if (parameterValues.getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues1 = parameterValues.getStringValue();\r
+ if (stringValues1.size()!=1){\r
+ return null;\r
+ }else {\r
+ valueBuilder.setStringValue(stringValues1.get(0).getValue());\r
+ }\r
+ }\r
+ if (parameterValues.getIntValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue> intValues1 = parameterValues.getIntValue();\r
+ if (intValues1.size()!=1){\r
+ return null;\r
+ }else {\r
+ valueBuilder.setIntValue(intValues1.get(0).getValue());\r
+ }\r
+ }\r
+ if (parameterValues.getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.RangeValue rangeValue = parameterValues.getRangeValue();\r
+ valueBuilder.setRangeValue(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValueBuilder().setMax(rangeValue.getMax()).setMin(rangeValue.getMin()).build());\r
+ }\r
+\r
+ }\r
+ }\r
+ if (matchItem.getMatchItemValue().getIntValue()!=null){\r
+ valueBuilder.setIntValue(matchItem.getMatchItemValue().getIntValue());\r
+ }\r
+ if (matchItem.getMatchItemValue().getRangeValue()!=null){\r
+ valueBuilder.setRangeValue(matchItem.getMatchItemValue().getRangeValue());\r
+ }\r
+ matchItemBuilder.setMatchItemValue(valueBuilder.build());\r
+ return matchItemBuilder.build();\r
+ }\r
+\r
+ private Action createAction(Action action, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap){\r
+ ActionBuilder actionBuilder = new ActionBuilder();\r
+ actionBuilder.setKey(new ActionKey(action.getActionName()))\r
+ .setActionName(action.getActionName())\r
+ .setOrder(action.getOrder());\r
+\r
+ if (action.getParameterValues()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues = new LinkedList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue>();\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = new LinkedList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue>();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = null;\r
+ ParameterValuesBuilder valuesBuilder = new ParameterValuesBuilder();\r
+\r
+ if (action.getParameterValues().getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues1 = action.getParameterValues().getStringValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues1){\r
+ if (instaceParameterMap.containsKey(new ParameterName(stringValue.getValue()))){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues parameterValues = instaceParameterMap.get(new ParameterName(stringValue.getValue()));\r
+ if (parameterValues.getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues2 = parameterValues.getStringValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue value : stringValues2){\r
+ String targetValue = null;\r
+ if (nameIdMap.containsKey(value.getValue())){\r
+ targetValue = abstractInstanceIdMap.get(nameIdMap.get(value.getValue()));\r
+ }\r
+ else {\r
+ targetValue= value.getValue();\r
+ }\r
+ stringValues.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder()\r
+ .setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey(value.getOrder(),targetValue))\r
+ .setOrder(value.getOrder())\r
+ .setValue(targetValue).build());\r
+ }\r
+ }\r
+ if (parameterValues.getIntValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue> intValues2 = parameterValues.getIntValue();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue value : intValues2){\r
+ intValues.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder()\r
+ .setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueKey(value.getOrder(),value.getValue()))\r
+ .setOrder(value.getOrder()).setValue(value.getValue()).build());\r
+ }\r
+ }\r
+ if (parameterValues.getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.RangeValue rangeValue2 = parameterValues.getRangeValue();\r
+ rangeValue = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder()\r
+ .setMin(rangeValue2.getMax()).setMin(rangeValue2.getMin()).build();\r
+ }\r
+ }\r
+ else {\r
+ if (nameIdMap.containsKey(stringValue.getValue())){\r
+ String objectId = abstractInstanceIdMap.get(nameIdMap.get(stringValue.getValue()));\r
+ stringValues.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder()\r
+ .setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey(stringValue.getOrder(),objectId))\r
+ .setOrder(stringValue.getOrder())\r
+ .setValue(objectId).build());\r
+ }\r
+ else {\r
+ stringValues.add(stringValue);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (action.getParameterValues().getIntValue()!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : action.getParameterValues().getIntValue()){\r
+ intValues.add(intValue);\r
+ }\r
+ }\r
+ if (action.getParameterValues().getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue2 = action.getParameterValues().getRangeValue();\r
+ rangeValue = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder()\r
+ .setMin(rangeValue2.getMax()).setMin(rangeValue2.getMin()).build();\r
+ }\r
+\r
+ valuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+ .setIntValue(intValues.isEmpty()?null:intValues)\r
+ .setRangeValue(rangeValue);\r
+ actionBuilder.setParameterValues(valuesBuilder.build());\r
+ }\r
+ return actionBuilder.build();\r
+ }\r
+\r
+ private ConditionSegment createCondition(ConditionSegment conditionSegment, HashMap<ParameterName, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValues> instaceParameterMap){\r
+ ConditionSegmentBuilder conditionBuilder = new ConditionSegmentBuilder();\r
+ ConditionSegmentId conditionSegmentId = new ConditionSegmentId(UUID.randomUUID().toString());\r
+ conditionBuilder.setKey(new ConditionSegmentKey(conditionSegmentId))\r
+ .setConditionSegmentId(conditionSegmentId)\r
+ .setConditionParameterName(conditionSegment.getConditionParameterName())\r
+ .setConditionParameterMatchPattern(conditionSegment.getConditionParameterMatchPattern())\r
+ .setPrecursorRelationOperator(conditionSegment.getPrecursorRelationOperator())\r
+ .setOrder(conditionSegment.getOrder());\r
+ ConditionParameterTargetValueBuilder targetValueBuilder = new ConditionParameterTargetValueBuilder();\r
+ if (conditionSegment.getConditionParameterTargetValue().getStringValue()!=null){\r
+ String targetValue = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+ if (instaceParameterMap.containsKey(new ParameterName(targetValue))){\r
+ if (instaceParameterMap.get(new ParameterName(targetValue)).getStringValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValues = instaceParameterMap.get(new ParameterName(targetValue)).getStringValue();\r
+ if (stringValues.size()!=1){\r
+ return null;\r
+ }\r
+ else {\r
+ targetValueBuilder.setStringValue(stringValues.get(0).getValue());\r
+ }\r
+ }\r
+ if (instaceParameterMap.get(new ParameterName(targetValue)).getIntValue()!=null){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.IntValue> intValues = instaceParameterMap.get(new ParameterName(targetValue)).getIntValue();\r
+ if (intValues.size()!=1){\r
+ return null;\r
+ }\r
+ else {\r
+ targetValueBuilder.setIntValue(intValues.get(0).getValue());\r
+ }\r
+ }\r
+ if (instaceParameterMap.get(new ParameterName(targetValue)).getRangeValue()!=null){\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.RangeValue rangeValue = instaceParameterMap.get(new ParameterName(targetValue)).getRangeValue();\r
+ //targetValueBuilder.setRangeValue(new RangeValueBuilder().setMin(rangeValue.getMin()).setMax(rangeValue.getMax()).build());\r
+ }\r
+ }\r
+ }\r
+ if (conditionSegment.getConditionParameterTargetValue().getIntValue()!=null){\r
+ targetValueBuilder.setIntValue(conditionSegment.getConditionParameterTargetValue().getIntValue());\r
+ }\r
+ if (conditionSegment.getConditionParameterTargetValue().getRangeValue()!=null){\r
+ targetValueBuilder.setRangeValue(conditionSegment.getConditionParameterTargetValue().getRangeValue());\r
+ }\r
+\r
+ conditionBuilder.setConditionParameterTargetValue(targetValueBuilder.build());\r
+ return conditionBuilder.build();\r
+ }\r
+}\r
+\r