Change the way of fetching data from datastore and write user's intents into datastor... 86/31886/2
authorZhang Yali <zhangyali369@huawei.com>
Sat, 26 Dec 2015 06:01:03 +0000 (14:01 +0800)
committerZhang Yali <zhangyali369@huawei.com>
Sat, 26 Dec 2015 06:43:13 +0000 (14:43 +0800)
And add the implementation of nemo template.

Change-Id: Ia034135b5913979f5f709cce4a5a133ff080ac2a
Signed-off-by: Zhang Yali <zhangyali369@huawei.com>
48 files changed:
nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserConstants.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateFlowLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateNodeLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateOperationLang.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnection.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/GetDefinitions.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateDefinition.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateInstance.java [new file with mode: 0644]
nemo-impl/src/test/java/org/opendaylight/nemo/intent/NodeMapperTest.java
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLangTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLangTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLangTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLangTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java [deleted file]

index 16bd3ae89c881966fa1f8ba635682b6e3e4a054f..dd06ce695c3350a255eef6a8af35817afa1b18b6 100644 (file)
@@ -121,6 +121,7 @@ public class UserManager implements NemoIntentService {
             }\r
             else{\r
                 transaction = false;\r
+                tenantManage.transactionHandling(input.getUserId());\r
                 if (informresolver){\r
                     informresolver = false;\r
                     try{\r
index 4a5154eb709cfc627d34e604b32d3cca62edbd9f..aca173aa54639d048352dbcfcdea0aa4bd9043e9 100644 (file)
@@ -7,18 +7,32 @@
  */\r
 package org.opendaylight.nemo.user.tenantmanager;\r
 \r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.concurrent.ExecutionException;\r
-\r
+import com.google.common.base.Function;\r
+import com.google.common.base.Optional;\r
+import com.google.common.collect.Maps;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\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.intent.rev151010.RegisterUserInput;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.TemplateDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.TemplateInstances;\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.Operation;\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.definitions.TemplateDefinitionKey;\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.user.intent.template.instances.TemplateInstanceKey;\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.intent.rev151010.users.UserBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
@@ -28,13 +42,9 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
-import com.google.common.base.Function;\r
-import com.google.common.base.Optional;\r
-import com.google.common.collect.Maps;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/29.\r
@@ -45,9 +55,16 @@ public class TenantManage {
     private static final Logger LOG = LoggerFactory.getLogger(TenantManage.class);\r
     private DataBroker dataBroker;\r
     private User user;\r
+    private Map<UserId, Map<NodeId, Node>> userNodeMap = new HashMap<UserId, Map<NodeId, Node>>();\r
+    private Map<UserId, Map<ConnectionId, Connection>> userConnectionMap = new HashMap<UserId, Map<ConnectionId, Connection>>();\r
+    private Map<UserId, Map<FlowId, Flow>> userFlowMap = new HashMap<UserId, Map<FlowId, Flow>>();\r
+    private Map<UserId, Map<OperationId, Operation>> userOperationMap = new HashMap<UserId, Map<OperationId, Operation>>();\r
+    private Map<UserId, Map<TemplateName, TemplateDefinition>> userTemplateDefinitionMap = new HashMap<UserId, Map<TemplateName, TemplateDefinition>>();\r
+    private Map<UserId, Map<TemplateInstanceId, TemplateInstance>> userTemplateInstanceMap = new HashMap<UserId, Map<TemplateInstanceId, TemplateInstance>>();\r
+    private Map<UserId, Map<String, String>> userDeleteIntent = new HashMap<UserId, Map<String, String>>();\r
+    private Map<UserId, Map<String, String>> userNameIdMap = new HashMap<UserId, Map<String, String>>();\r
 \r
-    public TenantManage(DataBroker dataBroker)\r
-    {\r
+    public TenantManage(DataBroker dataBroker){\r
         this.dataBroker = dataBroker;\r
     }\r
 \r
@@ -134,8 +151,7 @@ public class TenantManage {
         }).or(new HashMap<UserId, User>());\r
     }\r
 \r
-    public void fetchVNSpace(UserId userId)\r
-    {\r
+    public void fetchVNSpace(UserId userId){\r
         final Map<UserId, User> users = getUsers();\r
         setUser((users != null) ? users.get(userId) : null);\r
     }\r
@@ -162,6 +178,576 @@ public class TenantManage {
 \r
                 }\r
             });\r
+            try {\r
+                f.get();\r
+            } catch (InterruptedException e) {\r
+                // TODO Auto-generated catch block\r
+                e.printStackTrace();\r
+            } catch (ExecutionException e) {\r
+                // TODO Auto-generated catch block\r
+                e.printStackTrace();\r
+            }\r
+        }\r
+    }\r
+\r
+    /**\r
+     * create a space to store all information in one transaction\r
+     */\r
+    public void transactionHandling(UserId userId){\r
+        writeDataStore(userId);\r
+        deleteDataStore(userId);\r
+\r
+        userNodeMap.clear();\r
+        userConnectionMap.clear();\r
+        userFlowMap.clear();\r
+        userOperationMap.clear();\r
+        userTemplateDefinitionMap.clear();\r
+        userTemplateInstanceMap.clear();\r
+        userDeleteIntent.clear();\r
+    }\r
+\r
+    /**\r
+     * store and get all user node in one transaction into map\r
+     * @param userId\r
+     */\r
+    public void setNode(UserId userId, NodeId nodeId, Node node){\r
+        if (userNodeMap.containsKey(userId)){\r
+            Map<NodeId, Node> nodeMap = userNodeMap.get(userId);\r
+            nodeMap.put(nodeId, node);\r
+        }\r
+        else {\r
+            Map<NodeId, Node> nodeMap = new HashMap<NodeId, Node>();\r
+            nodeMap.put(nodeId,node);\r
+            userNodeMap.put(userId,nodeMap);\r
+        }\r
+        setUserNameIdMap(userId, node.getNodeName().getValue(),nodeId.getValue());\r
+    }\r
+\r
+    public Map<NodeId, Node> getNode(UserId userId){\r
+        if (!userNodeMap.isEmpty()){\r
+            return userNodeMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public void setConnection(UserId userId, ConnectionId connectionId, Connection connection){\r
+        if (userConnectionMap.containsKey(userId)){\r
+            Map<ConnectionId, Connection> connectionMap = userConnectionMap.get(userId);\r
+            connectionMap.put(connectionId,connection);\r
+        }\r
+        else {\r
+            Map<ConnectionId, Connection> connectionMap = new HashMap<ConnectionId, Connection>();\r
+            connectionMap.put(connectionId,connection);\r
+            userConnectionMap.put(userId,connectionMap);\r
+        }\r
+        setUserNameIdMap(userId, connection.getConnectionName().getValue(),connectionId.getValue());\r
+    }\r
+\r
+    public Map<ConnectionId, Connection> getConnection(UserId userId){\r
+        if (!userConnectionMap.isEmpty()){\r
+            return userConnectionMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public void setFlow(UserId userId, FlowId flowId, Flow flow){\r
+        if (userFlowMap.containsKey(userId)){\r
+            Map<FlowId,Flow> flowMap = userFlowMap.get(userId);\r
+            flowMap.put(flowId,flow);\r
+        }\r
+        else {\r
+            Map<FlowId,Flow> flowMap = new HashMap<FlowId, Flow>();\r
+            flowMap.put(flowId,flow);\r
+            userFlowMap.put(userId,flowMap);\r
+        }\r
+        setUserNameIdMap(userId,flow.getFlowName().getValue(),flowId.getValue());\r
+    }\r
+\r
+    public Map<FlowId,Flow> getFlow(UserId userId){\r
+        if (!userFlowMap.isEmpty()){\r
+            return userFlowMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public void setOperation(UserId userId, OperationId operationId, Operation operation){\r
+        if (userOperationMap.containsKey(userId)){\r
+            Map<OperationId, Operation> operationMap = userOperationMap.get(userId);\r
+            operationMap.put(operationId,operation);\r
+        }\r
+        else {\r
+            Map<OperationId, Operation> operationMap = new HashMap<OperationId, Operation>();\r
+            operationMap.put(operationId,operation);\r
+            userOperationMap.put(userId,operationMap);\r
+        }\r
+        setUserNameIdMap(userId,operation.getOperationName().getValue(),operationId.getValue());\r
+    }\r
+\r
+    public Map<OperationId, Operation> getOperation(UserId userId){\r
+        if (!userOperationMap.isEmpty()){\r
+            return userOperationMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public void setTemplateDefinition(UserId userId,TemplateName templateName, TemplateDefinition definition){\r
+        if (userTemplateDefinitionMap.containsKey(userId)){\r
+            Map<TemplateName, TemplateDefinition> definitionMap = userTemplateDefinitionMap.get(userId);\r
+            definitionMap.put(templateName,definition);\r
+        }\r
+        else {\r
+            Map<TemplateName, TemplateDefinition> definitionMap = new HashMap<TemplateName, TemplateDefinition>();\r
+            definitionMap.put(templateName,definition);\r
+            userTemplateDefinitionMap.put(userId,definitionMap);\r
+        }\r
+    }\r
+\r
+    public Map<TemplateName, TemplateDefinition> getTempalteDefinition(UserId userId){\r
+        if (!userTemplateDefinitionMap.isEmpty()){\r
+            return userTemplateDefinitionMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public void setUserTemplateInstance(UserId userId, TemplateInstanceId instanceId, TemplateInstance instance){\r
+        if (userTemplateInstanceMap.containsKey(userId)){\r
+            Map<TemplateInstanceId, TemplateInstance> instanceMap = userTemplateInstanceMap.get(userId);\r
+            instanceMap.put(instanceId,instance);\r
+        }\r
+        else {\r
+            Map<TemplateInstanceId, TemplateInstance> instanceMap = new HashMap<TemplateInstanceId, TemplateInstance>();\r
+            instanceMap.put(instanceId,instance);\r
+            userTemplateInstanceMap.put(userId,instanceMap);\r
+        }\r
+    }\r
+\r
+    public Map<TemplateInstanceId, TemplateInstance> getTemplateInstance(UserId userId){\r
+        if (!userTemplateInstanceMap.isEmpty()){\r
+            return userTemplateInstanceMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    /**\r
+     * store all intent need to be deleted in the data store\r
+     * @param userId\r
+     * @param type\r
+     * @param objectId\r
+     */\r
+    public void setUserDeleteIntent(UserId userId, String type, String objectId){\r
+        if (userDeleteIntent.containsKey(userId)){\r
+            Map<String, String> deleteObject = userDeleteIntent.get(userId);\r
+            deleteObject.put(objectId,type);\r
+        }\r
+        else {\r
+            Map<String, String> deleteObject = new HashMap<String, String>();\r
+            deleteObject.put(objectId,type);\r
+            userDeleteIntent.put(userId, deleteObject);\r
+        }\r
+    }\r
+\r
+    /**\r
+     * store all name-id map\r
+     * @param userId\r
+     * @param name\r
+     * @param objectId\r
+     */\r
+    public void setUserNameIdMap(UserId userId, String name, String objectId){\r
+        if (userNameIdMap.containsKey(userId)){\r
+            Map<String, String> map = userNameIdMap.get(userId);\r
+            map.put(name,objectId);\r
+        }\r
+        else {\r
+            Map<String, String> nameIdMap = new HashMap<String, String>();\r
+            nameIdMap.put(name, objectId);\r
+            userNameIdMap.put(userId, nameIdMap);\r
+        }\r
+    }\r
+\r
+    public Map<String, String> getUserNameIdMap(UserId userId){\r
+        if (!userNameIdMap.isEmpty()){\r
+            return userNameIdMap.get(userId);\r
+        }\r
+        else {\r
+            return null;\r
+        }\r
+    }\r
+\r
+    public String getObjectId(UserId userId, String name){\r
+        if (userNameIdMap.containsKey(userId)){\r
+            if (userNameIdMap.get(userId).containsKey(name)){\r
+                return userNameIdMap.get(userId).get(name);\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+\r
+    public String getName(UserId userId, String objectId){\r
+        if (userNameIdMap.containsKey(userId)){\r
+            for (String name : userNameIdMap.get(userId).keySet()){\r
+                if (objectId.equals(userNameIdMap.get(userId).get(name))){\r
+                    return name;\r
+                }\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+\r
+    /**\r
+     * get all information stored in data store\r
+     */\r
+\r
+    public Map<NodeId, Node> getNodeDataStore(UserId userId){\r
+        Map<NodeId, Node> nodeMap = new HashMap<NodeId, Node>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getObjects()!=null){\r
+            if (user1.getObjects().getNode()!=null){\r
+                for (Node node : user1.getObjects().getNode()){\r
+                    nodeMap.put(node.getNodeId(),node);\r
+                }\r
+            }\r
+        }\r
+        return nodeMap.isEmpty()?null:nodeMap;\r
+    }\r
+\r
+    public Map<ConnectionId, Connection> getConnectionDataStore(UserId userId){\r
+        Map<ConnectionId, Connection> connectionMap = new HashMap<ConnectionId, Connection>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getObjects()!=null){\r
+            if (user1.getObjects().getConnection()!=null){\r
+                for (Connection connection : user1.getObjects().getConnection()){\r
+                    connectionMap.put(connection.getConnectionId(),connection);\r
+                }\r
+            }\r
+        }\r
+        return connectionMap.isEmpty()?null:connectionMap;\r
+    }\r
+\r
+    public Map<FlowId, Flow> getFlowDataStore(UserId userId){\r
+        Map<FlowId, Flow> flowMap = new HashMap<FlowId, Flow>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getObjects()!=null){\r
+            if (user1.getObjects().getFlow()!=null){\r
+                for (Flow flow : user1.getObjects().getFlow()){\r
+                    flowMap.put(flow.getFlowId(),flow);\r
+                }\r
+            }\r
+        }\r
+        return flowMap.isEmpty()?null:flowMap;\r
+    }\r
+\r
+    public Map<OperationId, Operation> getOperationDataStore(UserId userId){\r
+        Map<OperationId, Operation> operationMap = new HashMap<OperationId, Operation>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getOperations()!=null){\r
+            if (user1.getOperations().getOperation()!=null){\r
+                for (Operation operation : user1.getOperations().getOperation()){\r
+                    operationMap.put(operation.getOperationId(),operation);\r
+                }\r
+            }\r
+        }\r
+        return operationMap.isEmpty()?null:operationMap;\r
+    }\r
+\r
+    public Map<TemplateName, TemplateDefinition> getDefinitionDataStore(UserId userId){\r
+        Map<TemplateName, TemplateDefinition> definitionMap = new HashMap<TemplateName, TemplateDefinition>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getTemplateDefinitions()!=null){\r
+            if (user1.getTemplateDefinitions().getTemplateDefinition()!=null){\r
+                for (TemplateDefinition definition : user1.getTemplateDefinitions().getTemplateDefinition()){\r
+                    definitionMap.put(definition.getTemplateName(),definition);\r
+                }\r
+            }\r
+        }\r
+        return definitionMap.isEmpty()?null:definitionMap;\r
+    }\r
+\r
+    public Map<TemplateInstanceId, TemplateInstance> getInstanceDataStore(UserId userId){\r
+        Map<TemplateInstanceId, TemplateInstance> instanceMap = new HashMap<TemplateInstanceId, TemplateInstance>();\r
+        fetchVNSpace(userId);\r
+        User user1 = getUser();\r
+        if (user1.getTemplateInstances()!=null){\r
+            if (user1.getTemplateInstances().getTemplateInstance()!=null){\r
+                for (TemplateInstance instance : user1.getTemplateInstances().getTemplateInstance()){\r
+                    instanceMap.put(instance.getTemplateInstanceId(),instance);\r
+                }\r
+            }\r
+        }\r
+        return instanceMap.isEmpty()?null:instanceMap;\r
+    }\r
+\r
+    /**\r
+     * write all information in one transaction into data store\r
+     */\r
+    private void writeDataStore(UserId userId){\r
+\r
+        UserKey userKey = new UserKey(userId);\r
+        if (getNode(userId)!=null){\r
+            for (NodeId nodeId : getNode(userId).keySet()){\r
+                NodeKey nodeKey = new NodeKey(nodeId);\r
+                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, nodeid, getNode(userId).get(nodeId),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write node instance", t);\r
+                    }\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+                    }\r
+                });\r
+                try {\r
+                    f.get();\r
+                } catch (InterruptedException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                } catch (ExecutionException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+\r
+        }\r
+        if (getConnection(userId)!=null){\r
+           for (ConnectionId connectionId : getConnection(userId).keySet()){\r
+                ConnectionKey connectionKey = new ConnectionKey(connectionId);\r
+               WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, connectionid, getConnection(userId).get(connectionId),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write connection instance", t);\r
+                    }\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+                    }\r
+                });\r
+               try {\r
+                   f.get();\r
+               } catch (InterruptedException e) {\r
+                   // TODO Auto-generated catch block\r
+                   e.printStackTrace();\r
+               } catch (ExecutionException e) {\r
+                   // TODO Auto-generated catch block\r
+                   e.printStackTrace();\r
+               }\r
+           }\r
+        }\r
+        if (getFlow(userId)!=null){\r
+           for (FlowId flowId : getFlow(userId).keySet()){\r
+                FlowKey flowKey = new FlowKey(flowId);\r
+               WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, flowid, getFlow(userId).get(flowId),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write endpoint base container", t);\r
+                    }\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+                    }\r
+                });\r
+               try {\r
+                   f.get();\r
+               } catch (InterruptedException e) {\r
+                   // TODO Auto-generated catch block\r
+                   e.printStackTrace();\r
+               } catch (ExecutionException e) {\r
+                   // TODO Auto-generated catch block\r
+                   e.printStackTrace();\r
+               }\r
+           }\r
+        }\r
+        if (getOperation(userId)!=null){\r
+            for (OperationId operationId : getOperation(userId).keySet()){\r
+                OperationKey operationKey = new OperationKey(operationId);\r
+                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, operationid, getOperation(userId).get(operationId),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write endpoint base container", t);\r
+                    }\r
+\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+\r
+                    }\r
+                });\r
+                try {\r
+                    f.get();\r
+                } catch (InterruptedException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                } catch (ExecutionException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+        }\r
+        if (getTempalteDefinition(userId)!=null){\r
+            for (TemplateName templateName : getTempalteDefinition(userId).keySet()){\r
+                TemplateDefinitionKey key = new TemplateDefinitionKey(templateName);\r
+                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<TemplateDefinition> templateDefinitionId = InstanceIdentifier.builder(Users.class).child(User.class, userKey)\r
+                        .child(TemplateDefinitions.class).child(TemplateDefinition.class, key)\r
+                        .build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, templateDefinitionId, getTempalteDefinition(userId).get(templateName),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write endpoint base container", t);\r
+                    }\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+                    }\r
+                });\r
+                try {\r
+                    f.get();\r
+                } catch (InterruptedException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                } catch (ExecutionException e) {\r
+                    // TODO Auto-generated catch block\r
+                    e.printStackTrace();\r
+                }\r
+            }\r
+        }\r
+        if (getTemplateInstance(userId)!=null){\r
+          for (TemplateInstanceId instanceId : getTemplateInstance(userId).keySet()){\r
+                TemplateInstanceKey key = new TemplateInstanceKey(instanceId);\r
+                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                InstanceIdentifier<TemplateInstance> templateDefinitionId = InstanceIdentifier.builder(Users.class).child(User.class, userKey)\r
+                        .child(TemplateInstances.class).child(TemplateInstance.class, key)\r
+                        .build();\r
+                t.put(LogicalDatastoreType.CONFIGURATION, templateDefinitionId, getTemplateInstance(userId).get(instanceId),true);\r
+                CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                Futures.addCallback(f, new FutureCallback<Void>() {\r
+                    @Override\r
+                    public void onFailure(Throwable t) {\r
+                        LOG.error("Could not write endpoint base container", t);\r
+                    }\r
+                    @Override\r
+                    public void onSuccess(Void result) {\r
+                    }\r
+                });\r
+              try {\r
+                  f.get();\r
+              } catch (InterruptedException e) {\r
+                  // TODO Auto-generated catch block\r
+                  e.printStackTrace();\r
+              } catch (ExecutionException e) {\r
+                  // TODO Auto-generated catch block\r
+                  e.printStackTrace();\r
+              }\r
+          }\r
+        }\r
+    }\r
+\r
+    /**\r
+     * delete intent in data store\r
+     * @param userId\r
+     */\r
+    private void deleteDataStore(UserId userId){\r
+        if (userDeleteIntent.get(userId)!=null){\r
+            Map<String, String> deleteObject = userDeleteIntent.get(userId);\r
+\r
+            for (String objectId : deleteObject.keySet()){\r
+                if (deleteObject.get(objectId).equals(NEMOConstants.node)){\r
+                    UserKey userKey = new UserKey(userId);\r
+                    NodeKey nodeKey = new NodeKey(new NodeId(objectId));\r
+                    WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                    InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
+                    t.delete(LogicalDatastoreType.CONFIGURATION, nodeid);\r
+                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                    Futures.addCallback(f, new FutureCallback<Void>() {\r
+                        @Override\r
+                        public void onFailure(Throwable t) {\r
+                            LOG.error("Could not delete node instance", t);\r
+                        }\r
+                        @Override\r
+                        public void onSuccess(Void result) {\r
+                        }\r
+                    });\r
+                }\r
+                if (deleteObject.get(objectId).equals(NEMOConstants.connection)){\r
+                    UserKey userKey = new UserKey(userId);\r
+                    ConnectionKey connectionKey = new ConnectionKey(new ConnectionId(objectId));\r
+                    WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                    InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
+                    t.delete(LogicalDatastoreType.CONFIGURATION, connectionid);\r
+                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                    Futures.addCallback(f, new FutureCallback<Void>() {\r
+                        @Override\r
+                        public void onFailure(Throwable t) {\r
+                            LOG.error("Could not delete connection instance", t);\r
+                        }\r
+                        @Override\r
+                        public void onSuccess(Void result) {\r
+                        }\r
+                    });\r
+                }\r
+                if (deleteObject.get(objectId).equals(NEMOConstants.flow)){\r
+                    UserKey userKey = new UserKey(userId);\r
+                    FlowKey flowKey = new FlowKey(new FlowId(objectId));\r
+                    WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                    InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
+                    t.delete(LogicalDatastoreType.CONFIGURATION, flowid);\r
+                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                    Futures.addCallback(f, new FutureCallback<Void>() {\r
+                        @Override\r
+                        public void onFailure(Throwable t) {\r
+                            LOG.error("Could not delete flow instance", t);\r
+                        }\r
+                        @Override\r
+                        public void onSuccess(Void result) {\r
+                        }\r
+                    });\r
+                }\r
+                if (deleteObject.get(objectId).equals(NEMOConstants.operation)){\r
+                    UserKey userKey = new UserKey(userId);\r
+                    OperationKey operationKey = new OperationKey(new OperationId(objectId));\r
+                    WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+                    InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
+                    t.delete(LogicalDatastoreType.CONFIGURATION, operationid);\r
+                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+                    Futures.addCallback(f, new FutureCallback<Void>() {\r
+                        @Override\r
+                        public void onFailure(Throwable t) {\r
+                            LOG.error("Could not delete operation instance", t);\r
+                        }\r
+                        @Override\r
+                        public void onSuccess(Void result) {\r
+                        }\r
+                    });\r
+                }\r
+            }\r
         }\r
     }\r
 }\r
index 4ca448f3edb3e5f4f8f59d29fa07a53530325b0c..45b904849c904f5ca2911e1bdc307c16b035352f 100644 (file)
@@ -33,7 +33,6 @@ public class LanguageIntent {
     }\r
 \r
     public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput) throws ParseException {\r
-\r
         String errorInfo = null;\r
 \r
         errorInfo = aaa.checkUser(languageStyleNemoRequestInput.getUserId());\r
index 03d15228b0269a438fc8af5c362d3fb171677095..2248fda3768e37d6b0e0ea5f1e69ba5e230228e4 100644 (file)
@@ -13,7 +13,7 @@ package org.opendaylight.nemo.user.vnspacemanager.languagestyle;
 public interface NEMOConstants {\r
     String range = "range";\r
     String string = "string";\r
-    String integer = "int";\r
+    String integer = "integer";\r
     String ethaddr = "ethaddr";\r
     String ipv4pref = "ipv4pref";\r
     String ipv4addr = "ipv4addr";\r
@@ -34,10 +34,6 @@ public interface NEMOConstants {
     String not = "!";\r
     String and = "&&";\r
     String or = "||";\r
-    String lparen = "(";\r
-    String rparen = ")";\r
-    String lbracket = "[";\r
-    String rbracket = "]";\r
     String equal = "==";\r
     String not_equal = "!=";\r
     String greater_than = ">";\r
@@ -71,10 +67,11 @@ public interface NEMOConstants {
     String create = "CREATE";\r
     String delete = "DELETE";\r
     String update = "UPDATE";\r
-    String Import = "IMPORT";\r
     String query = "query";\r
     String from = "From";\r
     String transaction = "Transaction";\r
     String begin = "Begin";\r
     String end = "End";\r
+    String sub_nodes = "sub-nodes";\r
+    String admin = "admin";\r
 }\r
index aaea0ed9a2b5824fac1bf539ed16e8665ce9533f..d41cc7ce5414150cfac450d63bda15985a97ce48 100644 (file)
@@ -17,20 +17,21 @@ options {
 PARSER_BEGIN(NEMOparser)\r
 \r
 package org.opendaylight.nemo.parser;\r
-\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowlang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.Query;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateDefinitionLang;\r
 \r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-\r
 import java.util.LinkedHashMap;\r
 import java.util.List;\r
 import java.util.ArrayList;\r
@@ -82,6 +83,7 @@ TOKEN :
 |      < LTHAN: "<" >\r
 |      < NLTHAN: ">=" >\r
 |      < NMTHAN: "<=" >\r
+|      < BETWEEN: "*" >\r
 |      < #UNDERSCORE: "_" >\r
 |   < #JOINER: "-" >\r
 |      < #FSLASH: "/" >\r
@@ -93,7 +95,7 @@ TOKEN :
    < CREATE: "CREATE" >\r
 |   < IMPORT: "IMPORT" >\r
 |   < UPDATE: "UPDATE" >\r
-|   < DELETE: "DELETE" >  \r
+|   < DELETE: "DELETE" >\r
 |      < NODE: "Node" >\r
 |      < TYPE: "Type" >\r
 |      < CONTAIN: "Contain" >\r
@@ -109,26 +111,42 @@ TOKEN :
 |      < QUERY: "Query" >\r
 |      < FROM: "From" >\r
 |   < PRIORITY: "Priority" >\r
-|   < TRUE: "true" >\r
-|   < FALSE: "false" >\r
 |   < TRANSACTION: "Transaction" >\r
 |   < BEGIN: "Begin" >\r
 |   < END: "End" >\r
+|   < NODES : "nodes" >\r
+|      < CONNECTIONS: "connections" >\r
+|      < FLOWS: "flows" >\r
+|      < OPERATIONS: "operations" >\r
+|      < NODEMODEL: "NodeModel" >\r
+|      < STRING: "string" >\r
+|   < INTEGER: "integer" >\r
+|      < RANGE: "range" >\r
 }\r
 TOKEN :\r
 {\r
        < UNUMBER: "0" | ["1" - "9"](<DIGIT>)* >\r
-|      < ID: (<LETTER> | <LETTER>(<LETTER> | <DIGIT> | <UNDERSCORE>|< JOINER >)*(<LETTER> | <DIGIT>)+) > \r
-|   < #DIGIT: ["0" - "9"] >\r
-|      < #LETTER: ["a" - "z"] >\r
+|      < ID: (<LETTER> | <LETTER>(<LETTER> | <DIGIT> | <UNDERSCORE>|< JOINER >)*(<LETTER> | <DIGIT>)+) >\r
+|      < TEMPID: (<LETTER> | <LETTER>(<LETTER> | <DIGIT> | <UNDERSCORE>|< JOINER >|< COLON >|< DOT >)*(<LETTER> | <DIGIT>)+) > \r
 |      < ETHPREF: <ETHADDR>(<FSLASH>(["1" - "9"] | ["1" - "3"]<DIGIT> | "4"["0" - "8"]))? >\r
 |      < IPV4PREF: <IPV4ADDR>(<FSLASH>(["1" - "9"] | ["1" - "2"]<DIGIT> | "3"["0" - "2"]))? >\r
-|      < #ETHADDR: ((<HEXDIGIT>){2}<COLON>){5}(<HEXDIGIT>){2} >\r
-|      < #IPV4ADDR: (<UBYTE>"."){3}<UBYTE> >\r
+|      < DATEVAL: <YEAR>"-"(<SMONDAY> | <LMONDAY> | <FEBDAY>) >\r
+|      < TIMEVAL: <HOUR><COLON><MINUTE><COLON><SECOND> >\r
+|      < FULLTIME: (<YEAR>"-"(<SMONDAY> | <LMONDAY> | <FEBDAY>))< COMMA >(<HOUR><COLON><MINUTE><COLON><SECOND>) >\r
+|      < ETHADDR: ((<HEXDIGIT>){2}<COLON>){5}(<HEXDIGIT>){2} >\r
+|      < IPV4ADDR: (<UBYTE>"."){3}<UBYTE> >\r
 |      < #UBYTE: (["0" - "9"] | ["1" - "9"]<DIGIT> | "1"(<DIGIT>){2} | "2"["0" - "4"]<DIGIT> | "25"["0" - "5"]) >\r
 |      < #HEXDIGIT: ["0" - "9", "a" - "f"] >\r
+|   < #YEAR: (<DIGIT>){4} >\r
+|      < #SMONDAY: (("0")?("1" | "3" | "5" | "7" | "8") | "10" | "12")"-"(("0")?["1" - "9"] | ["1" - "2"]<DIGIT> | "3"["0" - "1"]) >\r
+|      < #LMONDAY: (("0")?("4" | "6" | "9") | "11")"-"(("0")?["1" - "9"] | ["1" - "2"]<DIGIT> | "30") >\r
+|      < #FEBDAY: ("0")?"2-"(("0")?["1" - "9"] | ["1" - "2"]<DIGIT>) >\r
+|      < #HOUR: ("0")?<DIGIT> | "1"<DIGIT> | "2"["0" - "3"] >\r
+|      < #MINUTE: ("0")?<DIGIT> | ["1" - "5"]<DIGIT> >\r
+|      < #SECOND: ("0")?<DIGIT> | ["1" - "5"]<DIGIT> >\r
+|   < #DIGIT: ["0" - "9"] >\r
+|      < #LETTER: ["a" - "z"] >\r
 }\r
-\r
 String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage ):\r
 {\r
 }\r
@@ -146,8 +164,8 @@ String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage ):
 \r
 String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
 {\r}\r
-{\r
-  < NODE >\r
+{ \r
+   < NODE >\r
        {\r
          return UpdateNode(userId,dataBroker,tenantManage);\r
        }\r
@@ -162,12 +180,15 @@ String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantMan
 | < OPERATION >\r
        {\r
          return UpdateOperation(userId,dataBroker,tenantManage);\r
-       }\r}\r
+       }\r
+| < NODEMODEL >\r
+       {\r
+         return NodeModel(userId,dataBroker,tenantManage);\r    }       \r}\r
 \r
 String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
 {\r}\r
-{\r
-  < NODE >\r
+{ \r
+   < NODE >\r
        {\r
          return DeleteNode(userId,dataBroker,tenantManage);\r
        }\r
@@ -186,613 +207,553 @@ String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantMan
 \r
 String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
 {\r
-       String strReturn = null;\r
-       Token objNodeNameToken = null;\r
-       Token objNodeTypeToken = null;\r
-       Token objContainNodeToken = null;\r
-       Token objPropertyNameToken = null;\r
-       Token objPropertyValueToken = null;\r
-       Token objRangeLeft = null;\r
-       Token objRangeRight = null;\r
-       Boolean typeRight=false;\r
-       List<String> subNodeNameList = new ArrayList<String>();         \r
-    LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-    UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage);   \r
-}\r
-{      \r
-       objNodeNameToken = < ID >       \r
-       < TYPE >\r
-       objNodeTypeToken = < ID >       \r
-       (\r        < CONTAIN >\r
-         (\r
-           objContainNodeToken = < ID >\r
-           {\r
-             subNodeNameList.add(objContainNodeToken.image);\r      }       \r     )\r
-         (\r
-           < COMMA >\r
-           objContainNodeToken = < ID >\r
-           {\r
-             subNodeNameList.add(objContainNodeToken.image);      \r
-           }\r    )*\r
-       )?\r
-       (\r        < PROPERTY >\r
-        (\r
-          objPropertyNameToken = < ID >           \r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r     }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "string");\r            }\r
-               | objPropertyValueToken=< ETHPREF >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r                    }\r
-               | objPropertyValueToken=< IPV4PREF >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r                    }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "int");\r               }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r       }))\r         \r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ETHPREF >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               | objPropertyValueToken=< IPV4PREF >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r                    }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue);\r           })\r
-         )\r
-\r
-         (\r
-           < COMMA >\r
-          objPropertyNameToken = < ID >\r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
-          }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                  }\r
-               | objPropertyValueToken=< ETHPREF >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               | objPropertyValueToken=< IPV4PREF >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "int");\r
-                  }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          \r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ETHPREF >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               | objPropertyValueToken=< IPV4PREF >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue1);\r
-          })\r
-         )*\r
-        )?\r
-       < SEMICOLON >\r
-       {\r
-         strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties);\r   return strReturn;\r
-       }\r
-}\r
-\r
-String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
-{\r
-       String strReturn = null;\r
-       Token objNodeNameToken = null;\r
-       DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage);   \r
+  Token objNameToken = null;\r
+  Token objTypeToken = null;\r
+  Token objSubNodeNameToken = null;\r
+  Token objSubNodeNameToken1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  List<String> subNodeNameList = new ArrayList<String>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  UpdateNodeLang updateNodeLang = new UpdateNodeLang(dataBroker, tenantManage);        \r
 }\r
 {\r
-  objNodeNameToken = < ID >\r
+  objNameToken = < ID >\r
+  < TYPE >\r
+  objTypeToken = < ID >\r
+  (\r    < CONTAIN >\r
+    objSubNodeNameToken= <ID >\r
+    {\r
+      subNodeNameList.add(objSubNodeNameToken.image);\r    }\r
+    (\r
+      < COMMA >\r
+      objSubNodeNameToken1= <ID >\r
+      {\r
+        subNodeNameList.add(objSubNodeNameToken1.image);\r
+         }\r    )*    \r
+  )?\r
+  (\r    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> property = property();\r      properties.put(objPropertyNameToken.image, property);\r    }\r
+    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
   < SEMICOLON >\r
-  {\r
-    strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
-    return strReturn;\r  }\r
+  {   \r
+    return updateNodeLang.NodeHandling(userId, objNameToken.image, objTypeToken.image,subNodeNameList, properties);\r
+  }\r
 }\r
 \r
 String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
-  {\r
-    String strReturn = null;\r
+{\r
     Token objConnNameToken = null;\r
     Token objConnTypeToken = null;\r
     Token objConnEndNodeToken = null;\r
     Token objPropertyNameToken = null;\r
-       Token objPropertyValueToken = null;\r
-       Token objRangeLeft = null;\r
-       Token objRangeRight = null;\r
-    List<String> endNodes = new ArrayList<String>();    \r
+       Token objPropertyNameToken1 = null;\r
+    List<String> endNodes = new ArrayList<String>();\r
     LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-    UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage);\r  }\r
-  {\r
-    objConnNameToken = < ID >\r
+    UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage);       \r}\r
+{\r
+  objConnNameToken = < ID >\r
     < TYPE >\r
     objConnTypeToken = < ID >\r
     (\r
       < ENDNODES >\r
       (\r
         objConnEndNodeToken = < ID >\r
+        {\r
+           endNodes.add(objConnEndNodeToken.image);\r
+        }\r
+      | objConnEndNodeToken = < TEMPID >\r
         {\r
           endNodes.add(objConnEndNodeToken.image);\r        }\r      )\r
       (\r
         < COMMA >\r
-        objConnEndNodeToken = < ID >\r
+        (\r
+          objConnEndNodeToken = < ID >\r
         {\r
-          endNodes.add(objConnEndNodeToken.image);\r        }\r      )+\r    )?\r
+          endNodes.add(objConnEndNodeToken.image);\r        }\r      | objConnEndNodeToken = < TEMPID >\r
+        {\r
+          endNodes.add(objConnEndNodeToken.image);\r
+        }\r
+      )\r      )*\r
+    )?\r
     (\r
-      < PROPERTY >\r
-      (\r
-          objPropertyNameToken = < ID >\r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r     }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "string");\r
-                  }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "int");\r
-                  }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )\r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r
-                       }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue);\r
-          }\r
-         )\r
-\r
-         (\r
-           < COMMA >\r
-          objPropertyNameToken = < ID >\r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r    }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                  }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "int");\r
-                  }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )\r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue1);\r
-          }\r
-         )*\r    )?\r
-    < SEMICOLON >\r
+    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
+    < COLON >\r
     {\r
-      strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
-      return strReturn;\r    }\r}\r
-\r
-String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
-{\r
-       String strReturn = null;\r
-       Token objConnNameToken = null;\r
-       DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage);   \r
-}\r
-{\r
-  objConnNameToken = < ID >\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r    }\r    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
   < SEMICOLON >\r
   {\r
-    strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
-    return strReturn;\r
+    return updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
   }\r
 }\r
 \r
 String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
 {\r
-  String strReturn = null;\r
   Token objFlowNameToken = null;\r
   Token objFlowMatchItem = null;\r
-  Token objFlowMatchValue = null;\r
+  Token objFlowMatchItem1 = null;\r
   Token objPropertyNameToken = null;\r
-  Token objPropertyValueToken = null;\r
-  Token objRangeLeft = null;\r
-  Token objRangeRight = null;  \r
-  LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-  \r
+  Token objPropertyNameToken1 = null;\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();  \r
   LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
   UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage);\r}\r
 {\r
   objFlowNameToken = < ID >\r
-  (\r
-    < MATCH >\r
-    objFlowMatchItem = < ID >\r
+  < MATCH >\r
+   objFlowMatchItem = < ID >\r
     < COLON >\r
     {\r
-      LinkedHashMap<String,String> matchvalue = new LinkedHashMap<String,String>();\r    }\r
-    (\r      (objFlowMatchValue = < ID >\r
+      LinkedHashMap<String,String> match = property();\r      matchItems.put(objFlowMatchItem.image, match);\r
+    }\r
+    (\r      < COMMA >\r
+      objFlowMatchItem1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> match1= property();\r        matchItems.put(objFlowMatchItem1.image, match1);\r      }\r
+    )*\r
+    (\r
+    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> property = property();\r      properties.put(objPropertyNameToken.image, property);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
+  < SEMICOLON >\r
+  {\r
+    return updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
+  }\r}\r
+\r
+String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+  Token objOperNameToken = null;\r
+  Token objOperTargetToken = null;\r
+  Token objOperPrioToken = null;\r
+  Token objCondRelationToken = null;\r
+  Token objCondNameToken = null;\r
+  Token objCondMatchPattern = null;\r
+  Token objActionNameToken = null;\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();    \r
+  LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  UpdateOperationLang updateOperationLang  = new UpdateOperationLang(dataBroker, tenantManage);\r}\r
+{\r
+   objOperNameToken = < ID >\r
+  < TARGET >\r
+  objOperTargetToken = < ID >\r
+  < PRIORITY >\r
+  objOperPrioToken = < UNUMBER >\r
+  (\r
+    < CONDITION >\r
+    (objCondRelationToken=< NOT >)?\r
+    < LPAREN >\r
+    objCondNameToken=< ID >\r
+    (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >\r
+        |objCondMatchPattern=<NMTHAN >| objCondMatchPattern=<BETWEEN >)\r
+    {\r
+      LinkedHashMap<String,String> targetValue = conditionTarget();\r      String s = (objCondRelationToken==null)?null:objCondRelationToken.image;  \r
+      conditions.put(s+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue);\r
+    }\r
+    < RPAREN >\r
+    (\r
+      (objCondRelationToken=< NOT >|objCondRelationToken=< AND >|objCondRelationToken=< OR >)\r
+      < LPAREN >\r
+       (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >\r
+        |objCondMatchPattern=<NMTHAN >| objCondMatchPattern=<BETWEEN >)\r
            {\r
-             matchvalue.put(objFlowMatchValue.image,"string");\r            }\r
-       | objFlowMatchValue = < ETHPREF >\r
-               {\r
-                 matchvalue.put(objFlowMatchValue.image,"string");\r            }\r
-       | objFlowMatchValue = < IPV4PREF >\r
-               {\r
-                 matchvalue.put(objFlowMatchValue.image,"string");\r            }\r
-       | objFlowMatchValue = < UNUMBER >\r
-               {\r
-                 matchvalue.put(objFlowMatchValue.image,"int");\r               }\r
-       | (< LPAREN >(objRangeLeft=< UNUMBER >)<COMMA >(objRangeRight=< UNUMBER >)<RPAREN >\r
-               {\r
-                 matchvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r          }))\r
-       {\r
-         matchItems.put(objFlowMatchItem.image,matchvalue);\r   }\r
-       )  \r
+             LinkedHashMap<String,String> targetValue1 = conditionTarget();\r         String s1 = (objCondRelationToken==null)?null:objCondRelationToken.image;  \r
+             conditions.put(s1+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue1);\r
+           }\r
+      < RPAREN >\r
+    )*\r  )?\r
+  (\r
+    < ACTION >\r
+    objActionNameToken = < ID >\r
+    {\r      LinkedHashMap<String,String> action = null;\r
+    }\r
+    (\r
+      < COLON >\r
+    {\r
+      action = property();     \r
+    })?\r
+    {\r
+      actions.put(objActionNameToken.image, action);\r    }\r
+    (\r
+      < COMMA >\r
+      objActionNameToken = < ID >\r
+      {\r
+        LinkedHashMap<String,String> action1 = null;\r      }\r
+     (\r
+        < COLON >\r
+      {\r
+        action1 = property();       \r
+      })?\r
+      {\r
+        actions.put(objActionNameToken.image, action1);\r
+      }      \r
+    )*\r  )?\r
+  < SEMICOLON >\r
+  {\r
+    return updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r  }\r}\r
+\r
+String NodeModel(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+  String strReturn = null;\r
+  Token nodeModelName = null;\r
+  Token parameterType = null;\r
+  Token parameterName = null;\r
+  Token parameterType1 = null;\r
+  Token parameterName1 = null;\r
+  LinkedHashMap<String, String> parameters = new LinkedHashMap< String, String >();\r
+  UpdateTemplateDefinitionLang definition = new UpdateTemplateDefinitionLang(dataBroker, tenantManage);\r}\r
+{\r
+  nodeModelName = < ID >\r
+  < PROPERTY >\r
+  (\r    ( (parameterType = < STRING>) | (parameterType = < INTEGER >) | (parameterType=< RANGE >))\r
+         < COLON >\r
+         parameterName = < ID >\r
+         {\r
+           parameters.put(parameterName.image, parameterType.image);\r    }\r
+  )\r
   (\r
     < COMMA >\r
-    objFlowMatchItem = < ID >\r
+    ( (parameterType1 = < STRING>) | (parameterType1 = < INTEGER >) | (parameterType1 = < RANGE >))\r
+         < COLON >\r
+         parameterName1 = < ID >\r
+         {\r
+           parameters.put(parameterName1.image, parameterType1.image);\r
+         }\r  )*\r
+  < SEMICOLON>\r
+  (\r    < NODE >\r
+    {\r
+      strReturn = abstractNode(definition);\r    }\r
+|   < CONNECTION >\r
+       {\r
+         strReturn = abstractConnection(definition);\r  }\r
+|   < FLOW >\r
+       {\r
+         strReturn = abstractFlow(definition);\r        }\r
+|   < OPERATION >\r
+       {\r
+         strReturn = abstractOperation(definition);\r   }\r
+)*\r
+       {\r
+         if(strReturn !=null)\r   {\r
+           return strReturn;\r    }\r
+         else\r   {\r
+           return definition.templateDefinitionLang(userId, nodeModelName.image, parameters);\r   }       \r     }\r}\r
+\r
+String abstractNode(UpdateTemplateDefinitionLang definition):\r
+{\r
+  Token objNameToken = null;\r
+  Token objTypeToken = null;\r
+  Token objSubNodeNameToken = null;\r
+  Token objSubNodeNameToken1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  List<String> subNodeNameList = new ArrayList<String>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();    \r
+}\r
+{\r
+  objNameToken = < ID >\r
+  < TYPE >\r
+  objTypeToken = < ID >\r
+  (\r
+    < CONTAIN >\r
+    objSubNodeNameToken= <ID >\r
     {\r
-      LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\r    }\r
+      subNodeNameList.add(objSubNodeNameToken.image);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objSubNodeNameToken1= <ID >\r
+      {\r
+        subNodeNameList.add(objSubNodeNameToken1.image);\r
+         }\r
+    )*    \r
+  )?\r
+  (\r
+    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
     < COLON >\r
-    (objFlowMatchValue = < ID >\r
-           {\r
-             matchvalue1.put(objFlowMatchValue.image,"string");\r
-           }\r
-       | objFlowMatchValue = < ETHPREF >\r
-               {\r
-                 matchvalue1.put(objFlowMatchValue.image,"string");\r           }\r
-       | objFlowMatchValue = < IPV4PREF >\r
-               {\r
-                  matchvalue1.put(objFlowMatchValue.image,"string");\r          }\r
-       | objFlowMatchValue = < UNUMBER >\r
-               {\r
-                 matchvalue1.put(objFlowMatchValue.image,"int");\r
-               }\r
-       | (< LPAREN >(objRangeLeft=< UNUMBER >)<COMMA >(objRangeRight=< UNUMBER >)<RPAREN >\r
-               {\r
-                 matchvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-               }))\r
-       {\r
-         matchItems.put(objFlowMatchItem.image,matchvalue1);\r
-       } \r  )*\r
- )\r
- (\r
-         < PROPERTY >\r
-        (\r
-          objPropertyNameToken = < ID >\r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r     }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "string");\r
-                  }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image, "int");\r
-                  }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )\r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue.put(objPropertyValueToken.image, "string");\r
-                       }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue);\r
-          }\r
-         )\r
+    {\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
+  < SEMICOLON >\r
+  {   \r
+    return definition.createAbstractNode(objNameToken.image, objTypeToken.image,subNodeNameList, properties);;\r
+  }\r
+}\r
 \r
-         (\r
-           < COMMA >\r
-          objPropertyNameToken = < ID >\r
-          < COLON >\r
-          {\r
-            LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r    }\r
-          < LBRACKET >\r
-          ((objPropertyValueToken = < ID >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                  }\r
-               |objPropertyValueToken=< UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image, "int");\r
-                  }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )\r
-          (< COMMA >\r
-            (objPropertyValueToken = < UNUMBER >\r
-                  {\r
-                    propertyvalue1.put(objPropertyValueToken.image,"int");\r
-                  }\r
-               | objPropertyValueToken=< ID >\r
-                       {\r
-                         propertyvalue1.put(objPropertyValueToken.image, "string");\r
-                       }\r
-           |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-             {\r
-               propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-             }))\r
-          )*\r
-          < RBRACKET >\r
-          {\r
-            properties.put(objPropertyNameToken.image, propertyvalue1);\r
-          }\r
-         )*\r
-        )?\r
+String abstractConnection(UpdateTemplateDefinitionLang definition):\r
+{\r
+    Token objConnNameToken = null;\r
+    Token objConnTypeToken = null;\r
+    Token objConnEndNodeToken = null;\r
+    Token objPropertyNameToken = null;\r
+       Token objPropertyNameToken1 = null;\r
+    List<String> endNodes = new ArrayList<String>();\r
+    LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();      \r
+}\r
+{\r
+  objConnNameToken = < ID >\r
+    < TYPE >\r
+    objConnTypeToken = < ID >\r
+    (\r
+      < ENDNODES >\r
+      (\r
+        objConnEndNodeToken = < ID >\r
+        {\r
+          endNodes.add(objConnEndNodeToken.image);\r
+        }\r
+      )\r
+      (\r
+        < COMMA >\r
+        objConnEndNodeToken = < ID >\r
+        {\r
+          endNodes.add(objConnEndNodeToken.image);\r
+        }\r
+      )*\r
+    )?\r
+    (\r
+    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
   < SEMICOLON >\r
   {\r
-    strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
-    return strReturn;\r  }\r}\r
+    return definition.createAbstractConnection(objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
+  }\r
+}\r
 \r
-String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+String abstractFlow(UpdateTemplateDefinitionLang definition):\r
 {\r
-       String strReturn = null;\r
-       Token objFlowNameToken = null;\r
-       DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);   \r
+  Token objFlowNameToken = null;\r
+  Token objFlowMatchItem = null;\r
+  Token objFlowMatchItem1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();  \r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
 }\r
 {\r
   objFlowNameToken = < ID >\r
+  < MATCH >\r
+   objFlowMatchItem = < ID >\r
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> match = property();\r
+      matchItems.put(objFlowMatchItem.image, match);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objFlowMatchItem1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> match1 = property();\r
+        matchItems.put(objFlowMatchItem1.image, match1);\r
+      }\r
+    )*\r
+    (\r
+    < PROPERTY >\r
+    objPropertyNameToken = < ID >\r
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+    }\r
+    (\r
+      < COMMA >\r
+      objPropertyNameToken1 = < ID >\r
+      < COLON >\r
+      {\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+    )*\r
+  )?\r
   < SEMICOLON >\r
   {\r
-    strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
-    return strReturn;\r
+    return definition.createAbstractFlow(objFlowNameToken.image, matchItems, properties);;\r
   }\r
 }\r
 \r
-String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+String abstractOperation(UpdateTemplateDefinitionLang definition):\r
 {\r
-  String strReturn = null;\r
   Token objOperNameToken = null;\r
   Token objOperTargetToken = null;\r
   Token objOperPrioToken = null;\r
   Token objCondRelationToken = null;\r
   Token objCondNameToken = null;\r
   Token objCondMatchPattern = null;\r
-  Token objCondTarget = null;\r
   Token objActionNameToken = null;\r
-  Token objActionValueToken = null;\r
-  Token objRangeLeft = null;\r
-  Token objRangeRight = null;  \r
-  LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-    \r
+  LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();    \r
   LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-  UpdateOperationLang updateOperationLang  = new UpdateOperationLang(dataBroker, tenantManage);\r}\r
+}\r
 {\r
-  objOperNameToken = < ID >\r
+   objOperNameToken = < ID >\r
   < TARGET >\r
   objOperTargetToken = < ID >\r
   < PRIORITY >\r
   objOperPrioToken = < UNUMBER >\r
   (\r
     < CONDITION >\r
+    (objCondRelationToken=< NOT >)?\r
+    < LPAREN >\r
+    objCondNameToken=< ID >\r
+    (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >\r
+        |objCondMatchPattern=<NMTHAN >| objCondMatchPattern=<BETWEEN >)\r
+    {\r
+      LinkedHashMap<String,String> targetValue = conditionTarget();\r
+      String s = (objCondRelationToken==null)?null:objCondRelationToken.image;  \r
+      conditions.put(s+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue);\r
+    }\r
+    < RPAREN >\r
     (\r
-      (objCondRelationToken=< NOT >)?\r
+      (objCondRelationToken=< NOT >|objCondRelationToken=< AND >|objCondRelationToken=< OR >)\r
       < LPAREN >\r
       objCondNameToken=< ID >\r
-      (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >|objCondMatchPattern=<NMTHAN >)\r
-      {\r
-        LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r      }\r
-      (                objCondTarget=<ID>\r
-                     {\r
-                       targetValue.put(objCondTarget.image,"string");\r               }\r
-       |       objCondTarget=<UNUMBER>\r
-                 {\r
-                       targetValue.put(objCondTarget.image,"int");\r
-                     }\r
-       |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-                 {\r
-                       targetValue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-                     }))\r
-       < RPAREN >\r
-       {         \r
-         conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue);\r       }\r    )\r
-    (\r
-       (objCondRelationToken=< NOT >|objCondRelationToken=< AND >|objCondRelationToken=< OR >)\r
-       < LPAREN >\r
-             objCondNameToken=< ID >\r
-             (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >|objCondMatchPattern=<NMTHAN >)\r
-             {\r
-               LinkedHashMap<String,String> targetValue1 = new LinkedHashMap<String,String>();\r              }\r
-             (         objCondTarget=<ID>\r
-                             {\r
-                               targetValue1.put(objCondTarget.image,"string");\r
-                             }\r
-               |       objCondTarget=<UNUMBER>\r
-                         {\r
-                               targetValue1.put(objCondTarget.image,"int");\r
-                             }\r
-               |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-                         {\r
-                               targetValue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
-                             }))\r
-              < RPAREN >\r
-              {         \r
-                conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue1);\r
-              }\r    )*\r  )?\r
-  (\r
-    < ACTION >\r
-    (\r      (\r
-      objActionNameToken = < ID >\r
-      (\r        < COLON >\r
-        {\r
-          LinkedHashMap<String,String> actionvalues = new LinkedHashMap<String,String>();\r        }\r
-     (\r
-       < LBRACKET >\r        objActionValueToken = < ID >\r
-        {\r
-          actionvalues.put(objActionValueToken.image, "string");\r        }\r
-    |  objActionValueToken = < UNUMBER >\r
+       (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >\r
+        |objCondMatchPattern=<NMTHAN >| objCondMatchPattern=<BETWEEN >)\r
            {\r
-             actionvalues.put(objActionValueToken.image, "int");\r          }\r
-    |  (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-           {\r
-             actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range");\r       } ))        \r
-     (\r
-       < COMMA >\r
-        objActionValueToken = < ID >\r
-        {\r
-          actionvalues.put(objActionValueToken.image, "string");\r
-        }\r
-    |  objActionValueToken = < UNUMBER >\r
-           {\r
-             actionvalues.put(objActionValueToken.image, "int");\r
+             LinkedHashMap<String,String> targetValue1 = conditionTarget();           \r
+             conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue1);\r
            }\r
-    |  (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-           {\r
-             actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
-           }))*\r
-           < RBRACKET >\r
-           {\r
-             actions.put(objActionNameToken.image,actionvalues);\r          }\r
-         )?\r
-     )\r
+      < RPAREN >\r
+    )*\r
+  )?\r
+  (\r
+    < ACTION >\r
+    objActionNameToken = < ID >\r
+    {\r
+      LinkedHashMap<String,String> action = null;\r
+    }\r
+    (\r
+      < COLON >\r
+    {\r
+      action = property();     \r
+    })?\r
+    {\r
+      actions.put(objActionNameToken.image, action);\r
+    }\r
     (\r
       < COMMA >\r
-      (\r
       objActionNameToken = < ID >\r
-     (       \r        < COLON >\r
-        {\r
-          LinkedHashMap<String,String> actionvalues1 = new LinkedHashMap<String,String>();\r        }\r
-     (\r
-       < LBRACKET >\r
-        objActionValueToken = < ID >\r
-        {\r
-          actionvalues1.put(objActionValueToken.image, "string");\r
-        }\r
-    |  objActionValueToken = < UNUMBER >\r
-           {\r
-             actionvalues1.put(objActionValueToken.image, "int");\r
-           }\r
-    |  (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-           {\r
-             actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
-           }  ))       \r
+      {\r
+        LinkedHashMap<String,String> action1 = null;\r
+      }\r
      (\r
-       < COMMA >\r
-        objActionValueToken = < ID >\r
-        {\r
-          actionvalues1.put(objActionValueToken.image, "string");\r
-        }\r
-    |  objActionValueToken = < UNUMBER >\r
-           {\r
-             actionvalues1.put(objActionValueToken.image, "int");\r
-           }\r
-    |  (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
-           {\r
-             actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
-           }))*\r
-           < RBRACKET >\r
-           {\r
-             actions.put(objActionNameToken.image,actionvalues1);\r
-           }\r
-         )?\r
-     )\r    )*\r  )\r
-)?\r
+        < COLON >\r
+      {\r
+        action1 = property();       \r
+      })?\r
+      {\r
+        actions.put(objActionNameToken.image, action1);\r
+      }      \r
+    )*\r
+  )?\r
+  < SEMICOLON >\r
+  {\r
+    return definition.createAbstractOperation(objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);;\r
+  }\r
+}\r
+\r
+String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+       Token objNodeNameToken = null;\r
+       DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage);   \r
+}\r
+{\r
+  objNodeNameToken = < ID >\r
+  < SEMICOLON >\r
+  {\r
+    return deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
+  }\r
+}\r
+\r
+String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+       Token objConnNameToken = null;\r
+       DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage);   \r
+}\r
+{\r
+  objConnNameToken = < ID >\r
   < SEMICOLON >\r
   {\r
-    strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r
-    return strReturn;\r  }\r}\r
+    return deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
+  }\r
+}\r
+\r
+String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+       Token objFlowNameToken = null;\r
+       DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);   \r
+}\r
+{\r
+  objFlowNameToken = < ID >\r
+  < SEMICOLON >\r
+  {\r
+    return deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
+  }\r
+}\r
 \r
 String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
 {\r
-       String strReturn = null;\r
        Token objOperationNameToken = null;\r
        DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage);   \r
 }\r
@@ -800,8 +761,266 @@ String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenant
   objOperationNameToken = < ID >\r
   < SEMICOLON >\r
   {\r
-    strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
-    return strReturn;\r
+    return deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
+  }\r
+}\r
+\r
+String Query(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+  String strReturn = null;\r
+  Token objItemToken = null;\r
+  Token objTargetToken = null;\r
+  Query query = new Query(tenantManage);\r
+}\r
+{\r
+  (\r
+    objItemToken = <TYPE> | objItemToken=< CONTAIN > | objItemToken = < PROPERTY > | objItemToken = <ENDNODES>\r
+    | objItemToken = < MATCH > | objItemToken = < PRIORITY > | objItemToken = < TARGET > | objItemToken = < CONDITION >\r
+    | objItemToken = < ACTION > | objItemToken = < ID > | objItemToken = < NODES > | objItemToken = < CONNECTIONS >\r
+    | objItemToken = < FLOWS > | objItemToken = < OPERATIONS >\r
+  )\r
+  (\r
+    < FROM>\r
+    (\r
+      objTargetToken = <ID > \r
+    )\r
+  )?\r
+  < SEMICOLON >\r
+  {\r
+    if (objTargetToken == null)\r
+    {\r
+      String target = null;\r
+      return query.query(userId,objItemToken.image,target);        \r
+    }\r
+    else\r
+    {\r
+      return query.query(userId,objItemToken.image,objTargetToken.image);     \r
+    }            \r
+  }\r
+}\r
+\r
+\r
+\r
+LinkedHashMap<String,String> conditionTarget():\r
+{\r
+  Token objCondTarget = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;  \r
+  LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r
+}\r
+{\r
+     (\r
+       objCondTarget=<ID>\r
+      {\r
+        targetValue.put(objCondTarget.image,"string");\r
+      }\r
+|      objCondTarget=<TIMEVAL>\r
+      {\r
+        targetValue.put(objCondTarget.image,"string");\r
+      }\r
+|   objCondTarget=<FULLTIME>\r
+      {\r
+        targetValue.put(objCondTarget.image,"string");\r
+      }\r
+|      objCondTarget=<UNUMBER>\r
+         {\r
+        targetValue.put(objCondTarget.image,"integer");\r
+      }\r
+|(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+         {\r
+        targetValue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+      }))\r
+  {\r
+    return targetValue;\r
   }\r
 }\r
 \r
+LinkedHashMap<String,String> property():\r
+{\r
+  Token objPropertyValueToken = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;\r
+  LinkedHashMap<String,String> propertyvalue= new LinkedHashMap<String,String>();\r
+}\r
+{\r
+  (\r
+    (\r
+     (objPropertyValueToken = < ID >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+       \r
+    | objPropertyValueToken=< ETHADDR >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+    | objPropertyValueToken=< IPV4PREF >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+    |objPropertyValueToken=< IPV4ADDR >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+    |objPropertyValueToken=< TIMEVAL >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+    |objPropertyValueToken=< FULLTIME >\r
+               {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+       |objPropertyValueToken = < TEMPID >\r
+       {\r
+                 propertyvalue.put(objPropertyValueToken.image, "string");\r
+               }\r
+       )\r
+    |objPropertyValueToken=< UNUMBER >\r
+          {\r
+            propertyvalue.put(objPropertyValueToken.image, "integer");\r
+          }\r
+       |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+         {\r
+           propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+         })\r
+  )\r
+| (\r
+       {         \r
+         LinkedHashMap<String,String> multiProperty = nodeMultiProperty();\r
+         for (String value : multiProperty.keySet())\r
+         {\r
+           propertyvalue.put(value, multiProperty.get(value));\r
+         }\r
+       }       \r
+  )\r
+)\r
+{\r
+  return propertyvalue;\r
+} \r
+}\r
+\r
+LinkedHashMap<String,String> nodeMultiProperty():\r
+{\r
+  Token objPropertyValueToken = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;\r
+  LinkedHashMap<String,String> propertyvalue= new LinkedHashMap<String,String>();\r
+}\r
+{\r
+  < LBRACKET >\r
+ (\r
+    (\r
+    objPropertyValueToken = < ID >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < ID >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < TEMPID >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < TEMPID >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < ETHADDR >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < ETHADDR >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < IPV4PREF >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < IPV4PREF >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < IPV4ADDR >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < IPV4ADDR >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < TIMEVAL >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < TIMEVAL >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < FULLTIME >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < FULLTIME >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "string");\r
+         }\r
+    )*\r
+  )\r
+| (\r
+    objPropertyValueToken = < UNUMBER >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "integer");\r
+         }\r
+    (\r
+    < COMMA >\r
+    objPropertyValueToken = < UNUMBER >\r
+         {\r
+           propertyvalue.put(objPropertyValueToken.image, "integer");\r
+         }\r
+    )*\r
+  )\r
+| (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+      {\r
+        propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+      }\r
+   )\r
+ )\r
+ < RBRACKET >\r
+ {\r
+   return propertyvalue;\r
+ }\r
+}\r
index 11660a5d86e093d4c883ddc7592721306fc84f7c..d78d0c8e4225c79a3b5c220391eacb25b1a49a6f 100644 (file)
@@ -7,7 +7,6 @@
  */\r
 /* Generated By:JavaCC: Do not edit this line. NEMOparser.java */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
-\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowLang;\r
@@ -18,11 +17,11 @@ import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.Query;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateDefinitionLang;\r
 \r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-\r
 import java.util.LinkedHashMap;\r
 import java.util.List;\r
 import java.util.ArrayList;\r
@@ -104,6 +103,10 @@ public class NEMOparser implements NEMOparserConstants {
       jj_consume_token(OPERATION);\r
           {if (true) return UpdateOperation(userId,dataBroker,tenantManage);}\r
       break;\r
+    case NODEMODEL:\r
+      jj_consume_token(NODEMODEL);\r
+          {if (true) return NodeModel(userId,dataBroker,tenantManage);}\r
+      break;\r
     default:\r
       jj_la1[2] = jj_gen;\r
       jj_consume_token(-1);\r
@@ -139,26 +142,23 @@ public class NEMOparser implements NEMOparserConstants {
   }\r
 \r
   static final public String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-        String strReturn = null;\r
-        Token objNodeNameToken = null;\r
-        Token objNodeTypeToken = null;\r
-        Token objContainNodeToken = null;\r
-        Token objPropertyNameToken = null;\r
-        Token objPropertyValueToken = null;\r
-        Token objRangeLeft = null;\r
-        Token objRangeRight = null;\r
-        Boolean typeRight=false;\r
-        List<String> subNodeNameList = new ArrayList<String>();\r
-    LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-    UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage);\r
-    objNodeNameToken = jj_consume_token(ID);\r
+  Token objNameToken = null;\r
+  Token objTypeToken = null;\r
+  Token objSubNodeNameToken = null;\r
+  Token objSubNodeNameToken1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  List<String> subNodeNameList = new ArrayList<String>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  UpdateNodeLang updateNodeLang = new UpdateNodeLang(dataBroker, tenantManage);\r
+    objNameToken = jj_consume_token(ID);\r
     jj_consume_token(TYPE);\r
-    objNodeTypeToken = jj_consume_token(ID);\r
+    objTypeToken = jj_consume_token(ID);\r
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
     case CONTAIN:\r
       jj_consume_token(CONTAIN);\r
-      objContainNodeToken = jj_consume_token(ID);\r
-              subNodeNameList.add(objContainNodeToken.image);\r
+      objSubNodeNameToken = jj_consume_token(ID);\r
+      subNodeNameList.add(objSubNodeNameToken.image);\r
       label_1:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
@@ -170,8 +170,8 @@ public class NEMOparser implements NEMOparserConstants {
           break label_1;\r
         }\r
         jj_consume_token(COMMA);\r
-        objContainNodeToken = jj_consume_token(ID);\r
-              subNodeNameList.add(objContainNodeToken.image);\r
+        objSubNodeNameToken1 = jj_consume_token(ID);\r
+        subNodeNameList.add(objSubNodeNameToken1.image);\r
       }\r
       break;\r
     default:\r
@@ -183,42 +183,8 @@ public class NEMOparser implements NEMOparserConstants {
       jj_consume_token(PROPERTY);\r
       objPropertyNameToken = jj_consume_token(ID);\r
       jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
-      jj_consume_token(LBRACKET);\r
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-      case ID:\r
-        objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case ETHADDR:\r
-        objPropertyValueToken = jj_consume_token(ETHADDR);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case IPV4PREF:\r
-        objPropertyValueToken = jj_consume_token(IPV4PREF);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case IPV4ADDR:\r
-        objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case UNUMBER:\r
-        objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
-        break;\r
-      case LPAREN:\r
-        jj_consume_token(LPAREN);\r
-        objRangeLeft = jj_consume_token(UNUMBER);\r
-        jj_consume_token(COMMA);\r
-        objRangeRight = jj_consume_token(UNUMBER);\r
-        jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-        break;\r
-      default:\r
-        jj_la1[6] = jj_gen;\r
-        jj_consume_token(-1);\r
-        throw new ParseException();\r
-      }\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
       label_2:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
@@ -226,168 +192,31 @@ public class NEMOparser implements NEMOparserConstants {
           ;\r
           break;\r
         default:\r
-          jj_la1[7] = jj_gen;\r
+          jj_la1[6] = jj_gen;\r
           break label_2;\r
         }\r
         jj_consume_token(COMMA);\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-          break;\r
-        case ETHADDR:\r
-          objPropertyValueToken = jj_consume_token(ETHADDR);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case IPV4PREF:\r
-          objPropertyValueToken = jj_consume_token(IPV4PREF);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case IPV4ADDR:\r
-          objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-          break;\r
-        default:\r
-          jj_la1[8] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
-      }\r
-      jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue);\r
-      label_3:\r
-      while (true) {\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case COMMA:\r
-          ;\r
-          break;\r
-        default:\r
-          jj_la1[9] = jj_gen;\r
-          break label_3;\r
-        }\r
-        jj_consume_token(COMMA);\r
-        objPropertyNameToken = jj_consume_token(ID);\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
         jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
-        jj_consume_token(LBRACKET);\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case ETHADDR:\r
-          objPropertyValueToken = jj_consume_token(ETHADDR);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case IPV4PREF:\r
-          objPropertyValueToken = jj_consume_token(IPV4PREF);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-          break;\r
-        default:\r
-          jj_la1[10] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
-        label_4:\r
-        while (true) {\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case COMMA:\r
-            ;\r
-            break;\r
-          default:\r
-            jj_la1[11] = jj_gen;\r
-            break label_4;\r
-          }\r
-          jj_consume_token(COMMA);\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case UNUMBER:\r
-            objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-            break;\r
-          case ETHADDR:\r
-            objPropertyValueToken = jj_consume_token(ETHADDR);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case IPV4PREF:\r
-            objPropertyValueToken = jj_consume_token(IPV4PREF);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case ID:\r
-            objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case LPAREN:\r
-            jj_consume_token(LPAREN);\r
-            objRangeLeft = jj_consume_token(UNUMBER);\r
-            jj_consume_token(COMMA);\r
-            objRangeRight = jj_consume_token(UNUMBER);\r
-            jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-            break;\r
-          default:\r
-            jj_la1[12] = jj_gen;\r
-            jj_consume_token(-1);\r
-            throw new ParseException();\r
-          }\r
-        }\r
-        jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue1);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
       }\r
       break;\r
     default:\r
-      jj_la1[13] = jj_gen;\r
+      jj_la1[7] = jj_gen;\r
       ;\r
     }\r
     jj_consume_token(SEMICOLON);\r
-          strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties);\r
-          {if (true) return strReturn;}\r
-    throw new Error("Missing return statement in function");\r
-  }\r
-\r
-  static final public String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-        String strReturn = null;\r
-        Token objNodeNameToken = null;\r
-        DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage);\r
-    objNodeNameToken = jj_consume_token(ID);\r
-    jj_consume_token(SEMICOLON);\r
-    strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
-    {if (true) return strReturn;}\r
+    {if (true) return updateNodeLang.NodeHandling(userId, objNameToken.image, objTypeToken.image,subNodeNameList, properties);}\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
   static final public String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-    String strReturn = null;\r
     Token objConnNameToken = null;\r
     Token objConnTypeToken = null;\r
     Token objConnEndNodeToken = null;\r
     Token objPropertyNameToken = null;\r
-        Token objPropertyValueToken = null;\r
-        Token objRangeLeft = null;\r
-        Token objRangeRight = null;\r
+        Token objPropertyNameToken1 = null;\r
     List<String> endNodes = new ArrayList<String>();\r
     LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
     UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage);\r
@@ -397,470 +226,633 @@ public class NEMOparser implements NEMOparserConstants {
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
     case ENDNODES:\r
       jj_consume_token(ENDNODES);\r
-      objConnEndNodeToken = jj_consume_token(ID);\r
-          endNodes.add(objConnEndNodeToken.image);\r
-      label_5:\r
-      while (true) {\r
-        jj_consume_token(COMMA);\r
-        objConnEndNodeToken = jj_consume_token(ID);\r
-          endNodes.add(objConnEndNodeToken.image);\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case COMMA:\r
-          ;\r
-          break;\r
-        default:\r
-          jj_la1[14] = jj_gen;\r
-          break label_5;\r
-        }\r
-      }\r
-      break;\r
-    default:\r
-      jj_la1[15] = jj_gen;\r
-      ;\r
-    }\r
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-    case PROPERTY:\r
-      jj_consume_token(PROPERTY);\r
-      objPropertyNameToken = jj_consume_token(ID);\r
-      jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
-      jj_consume_token(LBRACKET);\r
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
       case ID:\r
-        objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case UNUMBER:\r
-        objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+        objConnEndNodeToken = jj_consume_token(ID);\r
+           endNodes.add(objConnEndNodeToken.image);\r
         break;\r
-      case LPAREN:\r
-        jj_consume_token(LPAREN);\r
-        objRangeLeft = jj_consume_token(UNUMBER);\r
-        jj_consume_token(COMMA);\r
-        objRangeRight = jj_consume_token(UNUMBER);\r
-        jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+      case TEMPID:\r
+        objConnEndNodeToken = jj_consume_token(TEMPID);\r
+          endNodes.add(objConnEndNodeToken.image);\r
         break;\r
       default:\r
-        jj_la1[16] = jj_gen;\r
+        jj_la1[8] = jj_gen;\r
         jj_consume_token(-1);\r
         throw new ParseException();\r
       }\r
-      label_6:\r
+      label_3:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case COMMA:\r
           ;\r
           break;\r
         default:\r
-          jj_la1[17] = jj_gen;\r
-          break label_6;\r
+          jj_la1[9] = jj_gen;\r
+          break label_3;\r
         }\r
         jj_consume_token(COMMA);\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-          break;\r
         case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+          objConnEndNodeToken = jj_consume_token(ID);\r
+          endNodes.add(objConnEndNodeToken.image);\r
           break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+        case TEMPID:\r
+          objConnEndNodeToken = jj_consume_token(TEMPID);\r
+          endNodes.add(objConnEndNodeToken.image);\r
           break;\r
         default:\r
-          jj_la1[18] = jj_gen;\r
+          jj_la1[10] = jj_gen;\r
           jj_consume_token(-1);\r
           throw new ParseException();\r
         }\r
       }\r
-      jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue);\r
-      label_7:\r
+      break;\r
+    default:\r
+      jj_la1[11] = jj_gen;\r
+      ;\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case PROPERTY:\r
+      jj_consume_token(PROPERTY);\r
+      objPropertyNameToken = jj_consume_token(ID);\r
+      jj_consume_token(COLON);\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+      label_4:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case COMMA:\r
           ;\r
           break;\r
         default:\r
-          jj_la1[19] = jj_gen;\r
-          break label_7;\r
+          jj_la1[12] = jj_gen;\r
+          break label_4;\r
         }\r
         jj_consume_token(COMMA);\r
-        objPropertyNameToken = jj_consume_token(ID);\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
         jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
-        jj_consume_token(LBRACKET);\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-          break;\r
-        default:\r
-          jj_la1[20] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
-        label_8:\r
-        while (true) {\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case COMMA:\r
-            ;\r
-            break;\r
-          default:\r
-            jj_la1[21] = jj_gen;\r
-            break label_8;\r
-          }\r
-          jj_consume_token(COMMA);\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case UNUMBER:\r
-            objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-            break;\r
-          case ID:\r
-            objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case LPAREN:\r
-            jj_consume_token(LPAREN);\r
-            objRangeLeft = jj_consume_token(UNUMBER);\r
-            jj_consume_token(COMMA);\r
-            objRangeRight = jj_consume_token(UNUMBER);\r
-            jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-            break;\r
-          default:\r
-            jj_la1[22] = jj_gen;\r
-            jj_consume_token(-1);\r
-            throw new ParseException();\r
-          }\r
-        }\r
-        jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue1);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
       }\r
       break;\r
     default:\r
-      jj_la1[23] = jj_gen;\r
+      jj_la1[13] = jj_gen;\r
       ;\r
     }\r
     jj_consume_token(SEMICOLON);\r
-      strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
-      {if (true) return strReturn;}\r
-    throw new Error("Missing return statement in function");\r
-  }\r
-\r
-  static final public String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-        String strReturn = null;\r
-        Token objConnNameToken = null;\r
-        DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage);\r
-    objConnNameToken = jj_consume_token(ID);\r
-    jj_consume_token(SEMICOLON);\r
-    strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
-    {if (true) return strReturn;}\r
+    {if (true) return updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);}\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
   static final public String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-  String strReturn = null;\r
   Token objFlowNameToken = null;\r
   Token objFlowMatchItem = null;\r
-  Token objFlowMatchValue = null;\r
+  Token objFlowMatchItem1 = null;\r
   Token objPropertyNameToken = null;\r
-  Token objPropertyValueToken = null;\r
-  Token objRangeLeft = null;\r
-  Token objRangeRight = null;\r
+  Token objPropertyNameToken1 = null;\r
   LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-\r
   LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
   UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage);\r
     objFlowNameToken = jj_consume_token(ID);\r
     jj_consume_token(MATCH);\r
     objFlowMatchItem = jj_consume_token(ID);\r
     jj_consume_token(COLON);\r
-      LinkedHashMap<String,String> matchvalue = new LinkedHashMap<String,String>();\r
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-    case ID:\r
-      objFlowMatchValue = jj_consume_token(ID);\r
-              matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
-      break;\r
-    case ETHADDR:\r
-      objFlowMatchValue = jj_consume_token(ETHADDR);\r
-                  matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
-      break;\r
-    case IPV4PREF:\r
-      objFlowMatchValue = jj_consume_token(IPV4PREF);\r
-                  matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
-      break;\r
-    case IPV4ADDR:\r
-      objFlowMatchValue = jj_consume_token(IPV4ADDR);\r
-                  matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
-      break;\r
-    case UNUMBER:\r
-      objFlowMatchValue = jj_consume_token(UNUMBER);\r
-                  matchvalue.put(objFlowMatchValue.image,NEMOConstants.integer);\r
-      break;\r
-    case LPAREN:\r
-      jj_consume_token(LPAREN);\r
-      objRangeLeft = jj_consume_token(UNUMBER);\r
-      jj_consume_token(COMMA);\r
-      objRangeRight = jj_consume_token(UNUMBER);\r
-      jj_consume_token(RPAREN);\r
-                  matchvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-      break;\r
-    default:\r
-      jj_la1[24] = jj_gen;\r
-      jj_consume_token(-1);\r
-      throw new ParseException();\r
-    }\r
-          matchItems.put(objFlowMatchItem.image,matchvalue);\r
-    label_9:\r
+      LinkedHashMap<String,String> match = property();\r
+      matchItems.put(objFlowMatchItem.image, match);\r
+    label_5:\r
     while (true) {\r
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
       case COMMA:\r
         ;\r
         break;\r
       default:\r
-        jj_la1[25] = jj_gen;\r
-        break label_9;\r
+        jj_la1[14] = jj_gen;\r
+        break label_5;\r
       }\r
       jj_consume_token(COMMA);\r
-      objFlowMatchItem = jj_consume_token(ID);\r
-      LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\r
+      objFlowMatchItem1 = jj_consume_token(ID);\r
       jj_consume_token(COLON);\r
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-      case ID:\r
-        objFlowMatchValue = jj_consume_token(ID);\r
-              matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
-        break;\r
-      case ETHADDR:\r
-        objFlowMatchValue = jj_consume_token(ETHADDR);\r
-                  matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
-        break;\r
-      case IPV4PREF:\r
-        objFlowMatchValue = jj_consume_token(IPV4PREF);\r
-                   matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
-        break;\r
-      case IPV4ADDR:\r
-        objFlowMatchValue = jj_consume_token(IPV4ADDR);\r
-                  matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
-        break;\r
-      case UNUMBER:\r
-        objFlowMatchValue = jj_consume_token(UNUMBER);\r
-                  matchvalue1.put(objFlowMatchValue.image,NEMOConstants.integer);\r
-        break;\r
-      case LPAREN:\r
-        jj_consume_token(LPAREN);\r
-        objRangeLeft = jj_consume_token(UNUMBER);\r
-        jj_consume_token(COMMA);\r
-        objRangeRight = jj_consume_token(UNUMBER);\r
-        jj_consume_token(RPAREN);\r
-                  matchvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-        break;\r
-      default:\r
-        jj_la1[26] = jj_gen;\r
-        jj_consume_token(-1);\r
-        throw new ParseException();\r
-      }\r
-          matchItems.put(objFlowMatchItem.image,matchvalue1);\r
+        LinkedHashMap<String,String> match1= property();\r
+        matchItems.put(objFlowMatchItem1.image, match1);\r
     }\r
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
     case PROPERTY:\r
       jj_consume_token(PROPERTY);\r
       objPropertyNameToken = jj_consume_token(ID);\r
       jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
-      jj_consume_token(LBRACKET);\r
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-      case ID:\r
-        objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-        break;\r
-      case UNUMBER:\r
-        objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
-        break;\r
-      case LPAREN:\r
-        jj_consume_token(LPAREN);\r
-        objRangeLeft = jj_consume_token(UNUMBER);\r
-        jj_consume_token(COMMA);\r
-        objRangeRight = jj_consume_token(UNUMBER);\r
-        jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-        break;\r
-      default:\r
-        jj_la1[27] = jj_gen;\r
-        jj_consume_token(-1);\r
-        throw new ParseException();\r
-      }\r
-      label_10:\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+      label_6:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case COMMA:\r
           ;\r
           break;\r
         default:\r
-          jj_la1[28] = jj_gen;\r
-          break label_10;\r
+          jj_la1[15] = jj_gen;\r
+          break label_6;\r
         }\r
         jj_consume_token(COMMA);\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-          break;\r
-        case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-          break;\r
-        default:\r
-          jj_la1[29] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
+        jj_consume_token(COLON);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
       }\r
-      jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue);\r
-      label_11:\r
+      break;\r
+    default:\r
+      jj_la1[16] = jj_gen;\r
+      ;\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+  Token objOperNameToken = null;\r
+  Token objOperTargetToken = null;\r
+  Token objOperPrioToken = null;\r
+  Token objCondRelationToken = null;\r
+  Token objCondNameToken = null;\r
+  Token objCondMatchPattern = null;\r
+  Token objActionNameToken = null;\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  UpdateOperationLang updateOperationLang  = new UpdateOperationLang(dataBroker, tenantManage);\r
+    objOperNameToken = jj_consume_token(ID);\r
+    jj_consume_token(TARGET);\r
+    objOperTargetToken = jj_consume_token(ID);\r
+    jj_consume_token(PRIORITY);\r
+    objOperPrioToken = jj_consume_token(UNUMBER);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case CONDITION:\r
+      jj_consume_token(CONDITION);\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case NOT:\r
+        objCondRelationToken = jj_consume_token(NOT);\r
+        break;\r
+      default:\r
+        jj_la1[17] = jj_gen;\r
+        ;\r
+      }\r
+      jj_consume_token(LPAREN);\r
+      objCondNameToken = jj_consume_token(ID);\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case EQUAL:\r
+        objCondMatchPattern = jj_consume_token(EQUAL);\r
+        break;\r
+      case GTHAN:\r
+        objCondMatchPattern = jj_consume_token(GTHAN);\r
+        break;\r
+      case LTHAN:\r
+        objCondMatchPattern = jj_consume_token(LTHAN);\r
+        break;\r
+      case NLTHAN:\r
+        objCondMatchPattern = jj_consume_token(NLTHAN);\r
+        break;\r
+      case NMTHAN:\r
+        objCondMatchPattern = jj_consume_token(NMTHAN);\r
+        break;\r
+      case BETWEEN:\r
+        objCondMatchPattern = jj_consume_token(BETWEEN);\r
+        break;\r
+      default:\r
+        jj_la1[18] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+      LinkedHashMap<String,String> targetValue = conditionTarget();\r
+      String s = (objCondRelationToken==null)?null:objCondRelationToken.image;\r
+      conditions.put(s+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue);\r
+      jj_consume_token(RPAREN);\r
+      label_7:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case COMMA:\r
+        case AND:\r
+        case OR:\r
+        case NOT:\r
           ;\r
           break;\r
         default:\r
-          jj_la1[30] = jj_gen;\r
-          break label_11;\r
+          jj_la1[19] = jj_gen;\r
+          break label_7;\r
         }\r
-        jj_consume_token(COMMA);\r
-        objPropertyNameToken = jj_consume_token(ID);\r
-        jj_consume_token(COLON);\r
-             LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
-        jj_consume_token(LBRACKET);\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case ID:\r
-          objPropertyValueToken = jj_consume_token(ID);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+        case NOT:\r
+          objCondRelationToken = jj_consume_token(NOT);\r
+          break;\r
+        case AND:\r
+          objCondRelationToken = jj_consume_token(AND);\r
+          break;\r
+        case OR:\r
+          objCondRelationToken = jj_consume_token(OR);\r
+          break;\r
+        default:\r
+          jj_la1[20] = jj_gen;\r
+          jj_consume_token(-1);\r
+          throw new ParseException();\r
+        }\r
+        jj_consume_token(LPAREN);\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case EQUAL:\r
+          objCondMatchPattern = jj_consume_token(EQUAL);\r
+          break;\r
+        case GTHAN:\r
+          objCondMatchPattern = jj_consume_token(GTHAN);\r
+          break;\r
+        case LTHAN:\r
+          objCondMatchPattern = jj_consume_token(LTHAN);\r
+          break;\r
+        case NLTHAN:\r
+          objCondMatchPattern = jj_consume_token(NLTHAN);\r
           break;\r
-        case UNUMBER:\r
-          objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+        case NMTHAN:\r
+          objCondMatchPattern = jj_consume_token(NMTHAN);\r
           break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+        case BETWEEN:\r
+          objCondMatchPattern = jj_consume_token(BETWEEN);\r
           break;\r
         default:\r
-          jj_la1[31] = jj_gen;\r
+          jj_la1[21] = jj_gen;\r
           jj_consume_token(-1);\r
           throw new ParseException();\r
         }\r
-        label_12:\r
-        while (true) {\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case COMMA:\r
-            ;\r
-            break;\r
-          default:\r
-            jj_la1[32] = jj_gen;\r
-            break label_12;\r
+              LinkedHashMap<String,String> targetValue1 = conditionTarget();\r
+              String s1 = (objCondRelationToken==null)?null:objCondRelationToken.image;\r
+              conditions.put(s1+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue1);\r
+        jj_consume_token(RPAREN);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[22] = jj_gen;\r
+      ;\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case ACTION:\r
+      jj_consume_token(ACTION);\r
+      objActionNameToken = jj_consume_token(ID);\r
+      LinkedHashMap<String,String> action = null;\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case COLON:\r
+        jj_consume_token(COLON);\r
+      action = property();\r
+        break;\r
+      default:\r
+        jj_la1[23] = jj_gen;\r
+        ;\r
+      }\r
+      actions.put(objActionNameToken.image, action);\r
+      label_8:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[24] = jj_gen;\r
+          break label_8;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objActionNameToken = jj_consume_token(ID);\r
+        LinkedHashMap<String,String> action1 = null;\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COLON:\r
+          jj_consume_token(COLON);\r
+        action1 = property();\r
+          break;\r
+        default:\r
+          jj_la1[25] = jj_gen;\r
+          ;\r
+        }\r
+        actions.put(objActionNameToken.image, action1);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[26] = jj_gen;\r
+      ;\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String NodeModel(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+  String strReturn = null;\r
+  Token nodeModelName = null;\r
+  Token parameterType = null;\r
+  Token parameterName = null;\r
+  Token parameterType1 = null;\r
+  Token parameterName1 = null;\r
+  LinkedHashMap<String, String> parameters = new LinkedHashMap< String, String >();\r
+  UpdateTemplateDefinitionLang definition = new UpdateTemplateDefinitionLang(dataBroker, tenantManage);\r
+    nodeModelName = jj_consume_token(ID);\r
+    jj_consume_token(PROPERTY);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case STRING:\r
+      parameterType = jj_consume_token(STRING);\r
+      break;\r
+    case INTEGER:\r
+      parameterType = jj_consume_token(INTEGER);\r
+      break;\r
+    case RANGE:\r
+      parameterType = jj_consume_token(RANGE);\r
+      break;\r
+    default:\r
+      jj_la1[27] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    jj_consume_token(COLON);\r
+    parameterName = jj_consume_token(ID);\r
+            parameters.put(parameterName.image, parameterType.image);\r
+    label_9:\r
+    while (true) {\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case COMMA:\r
+        ;\r
+        break;\r
+      default:\r
+        jj_la1[28] = jj_gen;\r
+        break label_9;\r
+      }\r
+      jj_consume_token(COMMA);\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case STRING:\r
+        parameterType1 = jj_consume_token(STRING);\r
+        break;\r
+      case INTEGER:\r
+        parameterType1 = jj_consume_token(INTEGER);\r
+        break;\r
+      case RANGE:\r
+        parameterType1 = jj_consume_token(RANGE);\r
+        break;\r
+      default:\r
+        jj_la1[29] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+      jj_consume_token(COLON);\r
+      parameterName1 = jj_consume_token(ID);\r
+            parameters.put(parameterName1.image, parameterType1.image);\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    label_10:\r
+    while (true) {\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case NODE:\r
+      case CONNECTION:\r
+      case FLOW:\r
+      case OPERATION:\r
+        ;\r
+        break;\r
+      default:\r
+        jj_la1[30] = jj_gen;\r
+        break label_10;\r
+      }\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case NODE:\r
+        jj_consume_token(NODE);\r
+      strReturn = abstractNode(definition);\r
+        break;\r
+      case CONNECTION:\r
+        jj_consume_token(CONNECTION);\r
+          strReturn = abstractConnection(definition);\r
+        break;\r
+      case FLOW:\r
+        jj_consume_token(FLOW);\r
+          strReturn = abstractFlow(definition);\r
+        break;\r
+      case OPERATION:\r
+        jj_consume_token(OPERATION);\r
+          strReturn = abstractOperation(definition);\r
+        break;\r
+      default:\r
+        jj_la1[31] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    }\r
+          if(strReturn !=null)\r
+          {\r
+            {if (true) return strReturn;}\r
           }\r
-          jj_consume_token(COMMA);\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case UNUMBER:\r
-            objPropertyValueToken = jj_consume_token(UNUMBER);\r
-                     propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
-            break;\r
-          case ID:\r
-            objPropertyValueToken = jj_consume_token(ID);\r
-                          propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case LPAREN:\r
-            jj_consume_token(LPAREN);\r
-            objRangeLeft = jj_consume_token(UNUMBER);\r
-            jj_consume_token(COMMA);\r
-            objRangeRight = jj_consume_token(UNUMBER);\r
-            jj_consume_token(RPAREN);\r
-                propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
-            break;\r
-          default:\r
-            jj_la1[33] = jj_gen;\r
-            jj_consume_token(-1);\r
-            throw new ParseException();\r
+          else\r
+          {\r
+            {if (true) return definition.templateDefinitionLang(userId, nodeModelName.image, parameters);}\r
           }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String abstractNode(UpdateTemplateDefinitionLang definition) throws ParseException {\r
+  Token objNameToken = null;\r
+  Token objTypeToken = null;\r
+  Token objSubNodeNameToken = null;\r
+  Token objSubNodeNameToken1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  List<String> subNodeNameList = new ArrayList<String>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+    objNameToken = jj_consume_token(ID);\r
+    jj_consume_token(TYPE);\r
+    objTypeToken = jj_consume_token(ID);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case CONTAIN:\r
+      jj_consume_token(CONTAIN);\r
+      objSubNodeNameToken = jj_consume_token(ID);\r
+      subNodeNameList.add(objSubNodeNameToken.image);\r
+      label_11:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[32] = jj_gen;\r
+          break label_11;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objSubNodeNameToken1 = jj_consume_token(ID);\r
+        subNodeNameList.add(objSubNodeNameToken1.image);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[33] = jj_gen;\r
+      ;\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case PROPERTY:\r
+      jj_consume_token(PROPERTY);\r
+      objPropertyNameToken = jj_consume_token(ID);\r
+      jj_consume_token(COLON);\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+      label_12:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[34] = jj_gen;\r
+          break label_12;\r
         }\r
-        jj_consume_token(RBRACKET);\r
-             properties.put(objPropertyNameToken.image, propertyvalue1);\r
+        jj_consume_token(COMMA);\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
+        jj_consume_token(COLON);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
       }\r
       break;\r
     default:\r
-      jj_la1[34] = jj_gen;\r
+      jj_la1[35] = jj_gen;\r
       ;\r
     }\r
     jj_consume_token(SEMICOLON);\r
-    strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
-    {if (true) return strReturn;}\r
+    {if (true) return definition.createAbstractNode(objNameToken.image, objTypeToken.image,subNodeNameList, properties);};\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
-  static final public String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-        String strReturn = null;\r
-        Token objFlowNameToken = null;\r
-        DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);\r
+  static final public String abstractConnection(UpdateTemplateDefinitionLang definition) throws ParseException {\r
+    Token objConnNameToken = null;\r
+    Token objConnTypeToken = null;\r
+    Token objConnEndNodeToken = null;\r
+    Token objPropertyNameToken = null;\r
+        Token objPropertyNameToken1 = null;\r
+    List<String> endNodes = new ArrayList<String>();\r
+    LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+    objConnNameToken = jj_consume_token(ID);\r
+    jj_consume_token(TYPE);\r
+    objConnTypeToken = jj_consume_token(ID);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case ENDNODES:\r
+      jj_consume_token(ENDNODES);\r
+      objConnEndNodeToken = jj_consume_token(ID);\r
+          endNodes.add(objConnEndNodeToken.image);\r
+      label_13:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[36] = jj_gen;\r
+          break label_13;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objConnEndNodeToken = jj_consume_token(ID);\r
+          endNodes.add(objConnEndNodeToken.image);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[37] = jj_gen;\r
+      ;\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case PROPERTY:\r
+      jj_consume_token(PROPERTY);\r
+      objPropertyNameToken = jj_consume_token(ID);\r
+      jj_consume_token(COLON);\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+      label_14:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[38] = jj_gen;\r
+          break label_14;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
+        jj_consume_token(COLON);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[39] = jj_gen;\r
+      ;\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return definition.createAbstractConnection(objConnNameToken.image, objConnTypeToken.image,endNodes, properties);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String abstractFlow(UpdateTemplateDefinitionLang definition) throws ParseException {\r
+  Token objFlowNameToken = null;\r
+  Token objFlowMatchItem = null;\r
+  Token objFlowMatchItem1 = null;\r
+  Token objPropertyNameToken = null;\r
+  Token objPropertyNameToken1 = null;\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+  LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
     objFlowNameToken = jj_consume_token(ID);\r
+    jj_consume_token(MATCH);\r
+    objFlowMatchItem = jj_consume_token(ID);\r
+    jj_consume_token(COLON);\r
+      LinkedHashMap<String,String> match = property();\r
+      matchItems.put(objFlowMatchItem.image, match);\r
+    label_15:\r
+    while (true) {\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case COMMA:\r
+        ;\r
+        break;\r
+      default:\r
+        jj_la1[40] = jj_gen;\r
+        break label_15;\r
+      }\r
+      jj_consume_token(COMMA);\r
+      objFlowMatchItem1 = jj_consume_token(ID);\r
+      jj_consume_token(COLON);\r
+        LinkedHashMap<String,String> match1 = property();\r
+        matchItems.put(objFlowMatchItem1.image, match1);\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case PROPERTY:\r
+      jj_consume_token(PROPERTY);\r
+      objPropertyNameToken = jj_consume_token(ID);\r
+      jj_consume_token(COLON);\r
+      LinkedHashMap<String,String> property = property();\r
+      properties.put(objPropertyNameToken.image, property);\r
+      label_16:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[41] = jj_gen;\r
+          break label_16;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyNameToken1 = jj_consume_token(ID);\r
+        jj_consume_token(COLON);\r
+        LinkedHashMap<String,String> property1 = property();\r
+        properties.put(objPropertyNameToken1.image, property1);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[42] = jj_gen;\r
+      ;\r
+    }\r
     jj_consume_token(SEMICOLON);\r
-    strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
-    {if (true) return strReturn;}\r
+    {if (true) return definition.createAbstractFlow(objFlowNameToken.image, matchItems, properties);};\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
-  static final public String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-  String strReturn = null;\r
+  static final public String abstractOperation(UpdateTemplateDefinitionLang definition) throws ParseException {\r
   Token objOperNameToken = null;\r
   Token objOperTargetToken = null;\r
   Token objOperPrioToken = null;\r
   Token objCondRelationToken = null;\r
   Token objCondNameToken = null;\r
   Token objCondMatchPattern = null;\r
-  Token objCondTarget = null;\r
-  Token objCondTarget1 = null;\r
   Token objActionNameToken = null;\r
-  Token objActionValueToken = null;\r
-  Token objRangeLeft = null;\r
-  Token objRangeRight = null;\r
   LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-\r
   LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
-  UpdateOperationLang updateOperationLang  = new UpdateOperationLang(dataBroker, tenantManage);\r
     objOperNameToken = jj_consume_token(ID);\r
     jj_consume_token(TARGET);\r
     objOperTargetToken = jj_consume_token(ID);\r
@@ -874,7 +866,7 @@ public class NEMOparser implements NEMOparserConstants {
         objCondRelationToken = jj_consume_token(NOT);\r
         break;\r
       default:\r
-        jj_la1[35] = jj_gen;\r
+        jj_la1[43] = jj_gen;\r
         ;\r
       }\r
       jj_consume_token(LPAREN);\r
@@ -890,63 +882,24 @@ public class NEMOparser implements NEMOparserConstants {
         objCondMatchPattern = jj_consume_token(LTHAN);\r
         break;\r
       case NLTHAN:\r
-        objCondMatchPattern = jj_consume_token(NLTHAN);\r
-        break;\r
-      case NMTHAN:\r
-        objCondMatchPattern = jj_consume_token(NMTHAN);\r
-        break;\r
-      case BETWEEN:\r
-        objCondMatchPattern = jj_consume_token(BETWEEN);\r
-        break;\r
-      default:\r
-        jj_la1[36] = jj_gen;\r
-        jj_consume_token(-1);\r
-        throw new ParseException();\r
-      }\r
-        LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-      case ID:\r
-        objCondTarget = jj_consume_token(ID);\r
-                        targetValue.put(objCondTarget.image,NEMOConstants.string);\r
-        break;\r
-      case TIMEVAL:\r
-        objCondTarget = jj_consume_token(TIMEVAL);\r
-                        targetValue.put(objCondTarget.image,NEMOConstants.string);\r
-        break;\r
-      case FULLTIME:\r
-        objCondTarget = jj_consume_token(FULLTIME);\r
-                        targetValue.put(objCondTarget.image,NEMOConstants.string);\r
-        break;\r
-      case UNUMBER:\r
-        objCondTarget = jj_consume_token(UNUMBER);\r
-                        targetValue.put(objCondTarget.image,NEMOConstants.integer);\r
-        break;\r
-      case LPAREN:\r
-        jj_consume_token(LPAREN);\r
-        objRangeLeft = jj_consume_token(UNUMBER);\r
-        jj_consume_token(COMMA);\r
-        objRangeRight = jj_consume_token(UNUMBER);\r
-        jj_consume_token(RPAREN);\r
-                        targetValue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+        objCondMatchPattern = jj_consume_token(NLTHAN);\r
+        break;\r
+      case NMTHAN:\r
+        objCondMatchPattern = jj_consume_token(NMTHAN);\r
+        break;\r
+      case BETWEEN:\r
+        objCondMatchPattern = jj_consume_token(BETWEEN);\r
         break;\r
       default:\r
-        jj_la1[37] = jj_gen;\r
+        jj_la1[44] = jj_gen;\r
         jj_consume_token(-1);\r
         throw new ParseException();\r
       }\r
+      LinkedHashMap<String,String> targetValue = conditionTarget();\r
+      String s = (objCondRelationToken==null)?null:objCondRelationToken.image;\r
+      conditions.put(s+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue);\r
       jj_consume_token(RPAREN);\r
-         if (objCondRelationToken == null)\r
-         {\r
-           String s = null;\r
-           conditions.put(s+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
-         +objCondMatchPattern.image,targetValue);\r
-         }\r
-         else\r
-         {\r
-           conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
-         +objCondMatchPattern.image,targetValue);\r
-         }\r
-      label_13:\r
+      label_17:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case AND:\r
@@ -955,8 +908,8 @@ public class NEMOparser implements NEMOparserConstants {
           ;\r
           break;\r
         default:\r
-          jj_la1[38] = jj_gen;\r
-          break label_13;\r
+          jj_la1[45] = jj_gen;\r
+          break label_17;\r
         }\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case NOT:\r
@@ -969,7 +922,7 @@ public class NEMOparser implements NEMOparserConstants {
           objCondRelationToken = jj_consume_token(OR);\r
           break;\r
         default:\r
-          jj_la1[39] = jj_gen;\r
+          jj_la1[46] = jj_gen;\r
           jj_consume_token(-1);\r
           throw new ParseException();\r
         }\r
@@ -991,207 +944,61 @@ public class NEMOparser implements NEMOparserConstants {
         case NMTHAN:\r
           objCondMatchPattern = jj_consume_token(NMTHAN);\r
           break;\r
-        default:\r
-          jj_la1[40] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
-                LinkedHashMap<String,String> targetValue1 = new LinkedHashMap<String,String>();\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case ID:\r
-          objCondTarget = jj_consume_token(ID);\r
-                                targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
-          break;\r
-        case TIMEVAL:\r
-          objCondTarget = jj_consume_token(TIMEVAL);\r
-                                targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
-          break;\r
-        case FULLTIME:\r
-          objCondTarget = jj_consume_token(FULLTIME);\r
-                                targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
-          break;\r
-        case UNUMBER:\r
-          objCondTarget = jj_consume_token(UNUMBER);\r
-                                targetValue1.put(objCondTarget.image,NEMOConstants.integer);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-                                targetValue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+        case BETWEEN:\r
+          objCondMatchPattern = jj_consume_token(BETWEEN);\r
           break;\r
         default:\r
-          jj_la1[41] = jj_gen;\r
+          jj_la1[47] = jj_gen;\r
           jj_consume_token(-1);\r
           throw new ParseException();\r
         }\r
+              LinkedHashMap<String,String> targetValue1 = conditionTarget();\r
+              conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image, targetValue1);\r
         jj_consume_token(RPAREN);\r
-                 conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
-                 +objCondMatchPattern.image,targetValue1);\r
       }\r
       break;\r
     default:\r
-      jj_la1[42] = jj_gen;\r
+      jj_la1[48] = jj_gen;\r
       ;\r
     }\r
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
     case ACTION:\r
       jj_consume_token(ACTION);\r
       objActionNameToken = jj_consume_token(ID);\r
+      LinkedHashMap<String,String> action = null;\r
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
       case COLON:\r
         jj_consume_token(COLON);\r
-          LinkedHashMap<String,String> actionvalues = new LinkedHashMap<String,String>();\r
-        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-        case LBRACKET:\r
-          jj_consume_token(LBRACKET);\r
-          objActionValueToken = jj_consume_token(ID);\r
-          actionvalues.put(objActionValueToken.image, NEMOConstants.string);\r
-          break;\r
-        case UNUMBER:\r
-          objActionValueToken = jj_consume_token(UNUMBER);\r
-              actionvalues.put(objActionValueToken.image, NEMOConstants.integer);\r
-          break;\r
-        case LPAREN:\r
-          jj_consume_token(LPAREN);\r
-          objRangeLeft = jj_consume_token(UNUMBER);\r
-          jj_consume_token(COMMA);\r
-          objRangeRight = jj_consume_token(UNUMBER);\r
-          jj_consume_token(RPAREN);\r
-              actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
-          break;\r
-        default:\r
-          jj_la1[43] = jj_gen;\r
-          jj_consume_token(-1);\r
-          throw new ParseException();\r
-        }\r
-        label_14:\r
-        while (true) {\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case COMMA:\r
-          case LPAREN:\r
-          case UNUMBER:\r
-            ;\r
-            break;\r
-          default:\r
-            jj_la1[44] = jj_gen;\r
-            break label_14;\r
-          }\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case COMMA:\r
-            jj_consume_token(COMMA);\r
-            objActionValueToken = jj_consume_token(ID);\r
-          actionvalues.put(objActionValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case UNUMBER:\r
-            objActionValueToken = jj_consume_token(UNUMBER);\r
-              actionvalues.put(objActionValueToken.image, NEMOConstants.integer);\r
-            break;\r
-          case LPAREN:\r
-            jj_consume_token(LPAREN);\r
-            objRangeLeft = jj_consume_token(UNUMBER);\r
-            jj_consume_token(COMMA);\r
-            objRangeRight = jj_consume_token(UNUMBER);\r
-            jj_consume_token(RPAREN);\r
-              actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
-            break;\r
-          default:\r
-            jj_la1[45] = jj_gen;\r
-            jj_consume_token(-1);\r
-            throw new ParseException();\r
-          }\r
-        }\r
-        jj_consume_token(RBRACKET);\r
-              actions.put(objActionNameToken.image,actionvalues);\r
+      action = property();\r
         break;\r
       default:\r
-        jj_la1[46] = jj_gen;\r
+        jj_la1[49] = jj_gen;\r
         ;\r
       }\r
-      label_15:\r
+      actions.put(objActionNameToken.image, action);\r
+      label_18:\r
       while (true) {\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case COMMA:\r
           ;\r
           break;\r
         default:\r
-          jj_la1[47] = jj_gen;\r
-          break label_15;\r
+          jj_la1[50] = jj_gen;\r
+          break label_18;\r
         }\r
         jj_consume_token(COMMA);\r
         objActionNameToken = jj_consume_token(ID);\r
+        LinkedHashMap<String,String> action1 = null;\r
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
         case COLON:\r
           jj_consume_token(COLON);\r
-          LinkedHashMap<String,String> actionvalues1 = new LinkedHashMap<String,String>();\r
-          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-          case LBRACKET:\r
-            jj_consume_token(LBRACKET);\r
-            objActionValueToken = jj_consume_token(ID);\r
-          actionvalues1.put(objActionValueToken.image, NEMOConstants.string);\r
-            break;\r
-          case UNUMBER:\r
-            objActionValueToken = jj_consume_token(UNUMBER);\r
-              actionvalues1.put(objActionValueToken.image, NEMOConstants.integer);\r
-            break;\r
-          case LPAREN:\r
-            jj_consume_token(LPAREN);\r
-            objRangeLeft = jj_consume_token(UNUMBER);\r
-            jj_consume_token(COMMA);\r
-            objRangeRight = jj_consume_token(UNUMBER);\r
-            jj_consume_token(RPAREN);\r
-              actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
-            break;\r
-          default:\r
-            jj_la1[48] = jj_gen;\r
-            jj_consume_token(-1);\r
-            throw new ParseException();\r
-          }\r
-          label_16:\r
-          while (true) {\r
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-            case COMMA:\r
-            case LPAREN:\r
-            case UNUMBER:\r
-              ;\r
-              break;\r
-            default:\r
-              jj_la1[49] = jj_gen;\r
-              break label_16;\r
-            }\r
-            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
-            case COMMA:\r
-              jj_consume_token(COMMA);\r
-              objActionValueToken = jj_consume_token(ID);\r
-          actionvalues1.put(objActionValueToken.image, NEMOConstants.string);\r
-              break;\r
-            case UNUMBER:\r
-              objActionValueToken = jj_consume_token(UNUMBER);\r
-              actionvalues1.put(objActionValueToken.image, NEMOConstants.integer);\r
-              break;\r
-            case LPAREN:\r
-              jj_consume_token(LPAREN);\r
-              objRangeLeft = jj_consume_token(UNUMBER);\r
-              jj_consume_token(COMMA);\r
-              objRangeRight = jj_consume_token(UNUMBER);\r
-              jj_consume_token(RPAREN);\r
-              actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
-              break;\r
-            default:\r
-              jj_la1[50] = jj_gen;\r
-              jj_consume_token(-1);\r
-              throw new ParseException();\r
-            }\r
-          }\r
-          jj_consume_token(RBRACKET);\r
-              actions.put(objActionNameToken.image,actionvalues1);\r
+        action1 = property();\r
           break;\r
         default:\r
           jj_la1[51] = jj_gen;\r
           ;\r
         }\r
+        actions.put(objActionNameToken.image, action1);\r
       }\r
       break;\r
     default:\r
@@ -1199,19 +1006,43 @@ public class NEMOparser implements NEMOparserConstants {
       ;\r
     }\r
     jj_consume_token(SEMICOLON);\r
-    strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r
-    {if (true) return strReturn;}\r
+    {if (true) return definition.createAbstractOperation(objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);};\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+        Token objNodeNameToken = null;\r
+        DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage);\r
+    objNodeNameToken = jj_consume_token(ID);\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+        Token objConnNameToken = null;\r
+        DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage);\r
+    objConnNameToken = jj_consume_token(ID);\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+        Token objFlowNameToken = null;\r
+        DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);\r
+    objFlowNameToken = jj_consume_token(ID);\r
+    jj_consume_token(SEMICOLON);\r
+    {if (true) return deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);}\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
   static final public String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
-        String strReturn = null;\r
         Token objOperationNameToken = null;\r
         DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage);\r
     objOperationNameToken = jj_consume_token(ID);\r
     jj_consume_token(SEMICOLON);\r
-    strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
-    {if (true) return strReturn;}\r
+    {if (true) return deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);}\r
     throw new Error("Missing return statement in function");\r
   }\r
 \r
@@ -1290,6 +1121,302 @@ public class NEMOparser implements NEMOparserConstants {
     throw new Error("Missing return statement in function");\r
   }\r
 \r
+  static final public LinkedHashMap<String,String> conditionTarget() throws ParseException {\r
+  Token objCondTarget = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;\r
+  LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case ID:\r
+      objCondTarget = jj_consume_token(ID);\r
+        targetValue.put(objCondTarget.image,"string");\r
+      break;\r
+    case TIMEVAL:\r
+      objCondTarget = jj_consume_token(TIMEVAL);\r
+        targetValue.put(objCondTarget.image,"string");\r
+      break;\r
+    case FULLTIME:\r
+      objCondTarget = jj_consume_token(FULLTIME);\r
+        targetValue.put(objCondTarget.image,"string");\r
+      break;\r
+    case UNUMBER:\r
+      objCondTarget = jj_consume_token(UNUMBER);\r
+        targetValue.put(objCondTarget.image,"integer");\r
+      break;\r
+    case LPAREN:\r
+      jj_consume_token(LPAREN);\r
+      objRangeLeft = jj_consume_token(UNUMBER);\r
+      jj_consume_token(COMMA);\r
+      objRangeRight = jj_consume_token(UNUMBER);\r
+      jj_consume_token(RPAREN);\r
+        targetValue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+      break;\r
+    default:\r
+      jj_la1[55] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    {if (true) return targetValue;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public LinkedHashMap<String,String> property() throws ParseException {\r
+  Token objPropertyValueToken = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;\r
+  LinkedHashMap<String,String> propertyvalue= new LinkedHashMap<String,String>();\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case LPAREN:\r
+    case UNUMBER:\r
+    case ID:\r
+    case TEMPID:\r
+    case IPV4PREF:\r
+    case TIMEVAL:\r
+    case FULLTIME:\r
+    case ETHADDR:\r
+    case IPV4ADDR:\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case ID:\r
+      case TEMPID:\r
+      case IPV4PREF:\r
+      case TIMEVAL:\r
+      case FULLTIME:\r
+      case ETHADDR:\r
+      case IPV4ADDR:\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case ID:\r
+          objPropertyValueToken = jj_consume_token(ID);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case ETHADDR:\r
+          objPropertyValueToken = jj_consume_token(ETHADDR);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case IPV4PREF:\r
+          objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case IPV4ADDR:\r
+          objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case TIMEVAL:\r
+          objPropertyValueToken = jj_consume_token(TIMEVAL);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case FULLTIME:\r
+          objPropertyValueToken = jj_consume_token(FULLTIME);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        case TEMPID:\r
+          objPropertyValueToken = jj_consume_token(TEMPID);\r
+                  propertyvalue.put(objPropertyValueToken.image, "string");\r
+          break;\r
+        default:\r
+          jj_la1[56] = jj_gen;\r
+          jj_consume_token(-1);\r
+          throw new ParseException();\r
+        }\r
+        break;\r
+      case UNUMBER:\r
+        objPropertyValueToken = jj_consume_token(UNUMBER);\r
+             propertyvalue.put(objPropertyValueToken.image, "integer");\r
+        break;\r
+      case LPAREN:\r
+        jj_consume_token(LPAREN);\r
+        objRangeLeft = jj_consume_token(UNUMBER);\r
+        jj_consume_token(COMMA);\r
+        objRangeRight = jj_consume_token(UNUMBER);\r
+        jj_consume_token(RPAREN);\r
+            propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+        break;\r
+      default:\r
+        jj_la1[57] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[58] = jj_gen;\r
+          LinkedHashMap<String,String> multiProperty = nodeMultiProperty();\r
+          for (String value : multiProperty.keySet())\r
+          {\r
+            propertyvalue.put(value, multiProperty.get(value));\r
+          }\r
+    }\r
+  {if (true) return propertyvalue;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public LinkedHashMap<String,String> nodeMultiProperty() throws ParseException {\r
+  Token objPropertyValueToken = null;\r
+  Token objRangeLeft = null;\r
+  Token objRangeRight = null;\r
+  LinkedHashMap<String,String> propertyvalue= new LinkedHashMap<String,String>();\r
+    jj_consume_token(LBRACKET);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case ID:\r
+      objPropertyValueToken = jj_consume_token(ID);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_19:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[59] = jj_gen;\r
+          break label_19;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(ID);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case TEMPID:\r
+      objPropertyValueToken = jj_consume_token(TEMPID);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_20:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[60] = jj_gen;\r
+          break label_20;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(TEMPID);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case ETHADDR:\r
+      objPropertyValueToken = jj_consume_token(ETHADDR);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_21:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[61] = jj_gen;\r
+          break label_21;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(ETHADDR);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case IPV4PREF:\r
+      objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_22:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[62] = jj_gen;\r
+          break label_22;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case IPV4ADDR:\r
+      objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_23:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[63] = jj_gen;\r
+          break label_23;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case TIMEVAL:\r
+      objPropertyValueToken = jj_consume_token(TIMEVAL);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_24:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[64] = jj_gen;\r
+          break label_24;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(TIMEVAL);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case FULLTIME:\r
+      objPropertyValueToken = jj_consume_token(FULLTIME);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      label_25:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[65] = jj_gen;\r
+          break label_25;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(FULLTIME);\r
+            propertyvalue.put(objPropertyValueToken.image, "string");\r
+      }\r
+      break;\r
+    case UNUMBER:\r
+      objPropertyValueToken = jj_consume_token(UNUMBER);\r
+            propertyvalue.put(objPropertyValueToken.image, "integer");\r
+      label_26:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[66] = jj_gen;\r
+          break label_26;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objPropertyValueToken = jj_consume_token(UNUMBER);\r
+            propertyvalue.put(objPropertyValueToken.image, "integer");\r
+      }\r
+      break;\r
+    case LPAREN:\r
+      jj_consume_token(LPAREN);\r
+      objRangeLeft = jj_consume_token(UNUMBER);\r
+      jj_consume_token(COMMA);\r
+      objRangeRight = jj_consume_token(UNUMBER);\r
+      jj_consume_token(RPAREN);\r
+        propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+      break;\r
+    default:\r
+      jj_la1[67] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    jj_consume_token(RBRACKET);\r
+   {if (true) return propertyvalue;}\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
   static private boolean jj_initialized_once = false;\r
   /** Generated Token Manager. */\r
   static public NEMOparserTokenManager token_source;\r
@@ -1300,7 +1427,7 @@ public class NEMOparser implements NEMOparserConstants {
   static public Token jj_nt;\r
   static private int jj_ntk;\r
   static private int jj_gen;\r
-  static final private int[] jj_la1 = new int[55];\r
+  static final private int[] jj_la1 = new int[68];\r
   static private int[] jj_la1_0;\r
   static private int[] jj_la1_1;\r
   static private int[] jj_la1_2;\r
@@ -1310,13 +1437,13 @@ public class NEMOparser implements NEMOparserConstants {
       jj_la1_init_2();\r
    }\r
    private static void jj_la1_init_0() {\r
-      jj_la1_0 = new int[] {0xe000000,0x1e000000,0x40000000,0x40000000,0x40,0x0,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x40,0x0,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x100,0x40,0x100,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x4000,0x1f8000,0x100,0x7000,0x7000,0xf8000,0x100,0x0,0x500,0x140,0x140,0x20,0x40,0x500,0x140,0x140,0x20,0x0,0x80000000,0x0,};\r
+      jj_la1_0 = new int[] {0xe000000,0x1e000000,0x20000000,0x20000000,0x40,0x80000000,0x40,0x0,0x0,0x40,0x0,0x0,0x40,0x0,0x40,0x40,0x0,0x4000,0x1f8000,0x7000,0x7000,0x1f8000,0x0,0x20,0x40,0x20,0x0,0x0,0x40,0x0,0x20000000,0x20000000,0x40,0x80000000,0x40,0x0,0x40,0x0,0x40,0x0,0x40,0x40,0x0,0x4000,0x1f8000,0x7000,0x7000,0x1f8000,0x0,0x20,0x40,0x20,0x0,0xc0000000,0x0,0x100,0x0,0x100,0x100,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x100,};\r
    }\r
    private static void jj_la1_init_1() {\r
-      jj_la1_1 = new int[] {0x0,0x400,0x54,0x54,0x0,0x1,0x18b00000,0x0,0x18b00000,0x0,0x8b00000,0x0,0x8b00000,0x2,0x0,0x8,0x300000,0x0,0x300000,0x0,0x300000,0x0,0x300000,0x2,0x18b00000,0x0,0x18b00000,0x300000,0x0,0x300000,0x0,0x300000,0x0,0x300000,0x2,0x0,0x0,0x6300000,0x0,0x0,0x0,0x6300000,0x100,0x100000,0x100000,0x100000,0x0,0x0,0x100000,0x100000,0x100000,0x0,0x200,0x2f13ab,0x800,};\r
+      jj_la1_1 = new int[] {0x0,0x200,0x8002a,0x2a,0x0,0x0,0x0,0x1,0x3000000,0x0,0x3000000,0x4,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x100,0x700000,0x0,0x700000,0x2a,0x2a,0x0,0x0,0x0,0x1,0x0,0x4,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x100,0x10789d5,0x400,0x61800000,0xeb000000,0xeb800000,0xeb800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xeb800000,};\r
    }\r
    private static void jj_la1_init_2() {\r
-      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};\r
+      jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,};\r
    }\r
 \r
   /** Constructor with InputStream. */\r
@@ -1337,7 +1464,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   /** Reinitialise. */\r
@@ -1351,7 +1478,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   /** Constructor. */\r
@@ -1368,7 +1495,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   /** Reinitialise. */\r
@@ -1378,7 +1505,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   /** Constructor with generated Token Manager. */\r
@@ -1394,7 +1521,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   /** Reinitialise. */\r
@@ -1403,7 +1530,7 @@ public class NEMOparser implements NEMOparserConstants {
     token = new Token();\r
     jj_ntk = -1;\r
     jj_gen = 0;\r
-    for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+    for (int i = 0; i < 68; i++) jj_la1[i] = -1;\r
   }\r
 \r
   static private Token jj_consume_token(int kind) throws ParseException {\r
@@ -1454,12 +1581,12 @@ public class NEMOparser implements NEMOparserConstants {
   /** Generate ParseException. */\r
   static public ParseException generateParseException() {\r
     jj_expentries.clear();\r
-    boolean[] la1tokens = new boolean[72];\r
+    boolean[] la1tokens = new boolean[76];\r
     if (jj_kind >= 0) {\r
       la1tokens[jj_kind] = true;\r
       jj_kind = -1;\r
     }\r
-    for (int i = 0; i < 55; i++) {\r
+    for (int i = 0; i < 68; i++) {\r
       if (jj_la1[i] == jj_gen) {\r
         for (int j = 0; j < 32; j++) {\r
           if ((jj_la1_0[i] & (1<<j)) != 0) {\r
@@ -1474,7 +1601,7 @@ public class NEMOparser implements NEMOparserConstants {
         }\r
       }\r
     }\r
-    for (int i = 0; i < 72; i++) {\r
+    for (int i = 0; i < 76; i++) {\r
       if (la1tokens[i]) {\r
         jj_expentry = new int[1];\r
         jj_expentry[0] = i;\r
index c77f4490e4bec111debe3159fbabc611a12186d0..021044ff6287d06552ad6ea5fcdcbc040c86e57f 100644 (file)
@@ -66,91 +66,99 @@ public interface NEMOparserConstants {
   /** RegularExpression Id. */\r
   int DELETE = 28;\r
   /** RegularExpression Id. */\r
-  int USER = 29;\r
+  int NODE = 29;\r
   /** RegularExpression Id. */\r
-  int NODE = 30;\r
+  int TYPE = 30;\r
   /** RegularExpression Id. */\r
-  int TYPE = 31;\r
+  int CONTAIN = 31;\r
   /** RegularExpression Id. */\r
-  int CONTAIN = 32;\r
+  int PROPERTY = 32;\r
   /** RegularExpression Id. */\r
-  int PROPERTY = 33;\r
+  int CONNECTION = 33;\r
   /** RegularExpression Id. */\r
-  int CONNECTION = 34;\r
+  int ENDNODES = 34;\r
   /** RegularExpression Id. */\r
-  int ENDNODES = 35;\r
+  int FLOW = 35;\r
   /** RegularExpression Id. */\r
-  int FLOW = 36;\r
+  int MATCH = 36;\r
   /** RegularExpression Id. */\r
-  int MATCH = 37;\r
+  int OPERATION = 37;\r
   /** RegularExpression Id. */\r
-  int OPERATION = 38;\r
+  int TARGET = 38;\r
   /** RegularExpression Id. */\r
-  int TARGET = 39;\r
+  int CONDITION = 39;\r
   /** RegularExpression Id. */\r
-  int CONDITION = 40;\r
+  int ACTION = 40;\r
   /** RegularExpression Id. */\r
-  int ACTION = 41;\r
+  int QUERY = 41;\r
   /** RegularExpression Id. */\r
-  int QUERY = 42;\r
+  int FROM = 42;\r
   /** RegularExpression Id. */\r
-  int FROM = 43;\r
+  int PRIORITY = 43;\r
   /** RegularExpression Id. */\r
-  int PRIORITY = 44;\r
+  int TRANSACTION = 44;\r
   /** RegularExpression Id. */\r
-  int TRANSACTION = 45;\r
+  int BEGIN = 45;\r
   /** RegularExpression Id. */\r
-  int BEGIN = 46;\r
+  int END = 46;\r
   /** RegularExpression Id. */\r
-  int END = 47;\r
+  int NODES = 47;\r
   /** RegularExpression Id. */\r
-  int NODES = 48;\r
+  int CONNECTIONS = 48;\r
   /** RegularExpression Id. */\r
-  int CONNECTIONS = 49;\r
+  int FLOWS = 49;\r
   /** RegularExpression Id. */\r
-  int FLOWS = 50;\r
+  int OPERATIONS = 50;\r
   /** RegularExpression Id. */\r
-  int OPERATIONS = 51;\r
+  int NODEMODEL = 51;\r
   /** RegularExpression Id. */\r
-  int UNUMBER = 52;\r
+  int STRING = 52;\r
   /** RegularExpression Id. */\r
-  int ID = 53;\r
+  int INTEGER = 53;\r
   /** RegularExpression Id. */\r
-  int ETHPREF = 54;\r
+  int RANGE = 54;\r
   /** RegularExpression Id. */\r
-  int IPV4PREF = 55;\r
+  int UNUMBER = 55;\r
   /** RegularExpression Id. */\r
-  int DATEVAL = 56;\r
+  int ID = 56;\r
   /** RegularExpression Id. */\r
-  int TIMEVAL = 57;\r
+  int TEMPID = 57;\r
   /** RegularExpression Id. */\r
-  int FULLTIME = 58;\r
+  int ETHPREF = 58;\r
   /** RegularExpression Id. */\r
-  int ETHADDR = 59;\r
+  int IPV4PREF = 59;\r
   /** RegularExpression Id. */\r
-  int IPV4ADDR = 60;\r
+  int DATEVAL = 60;\r
   /** RegularExpression Id. */\r
-  int UBYTE = 61;\r
+  int TIMEVAL = 61;\r
   /** RegularExpression Id. */\r
-  int HEXDIGIT = 62;\r
+  int FULLTIME = 62;\r
   /** RegularExpression Id. */\r
-  int YEAR = 63;\r
+  int ETHADDR = 63;\r
   /** RegularExpression Id. */\r
-  int SMONDAY = 64;\r
+  int IPV4ADDR = 64;\r
   /** RegularExpression Id. */\r
-  int LMONDAY = 65;\r
+  int UBYTE = 65;\r
   /** RegularExpression Id. */\r
-  int FEBDAY = 66;\r
+  int HEXDIGIT = 66;\r
   /** RegularExpression Id. */\r
-  int HOUR = 67;\r
+  int YEAR = 67;\r
   /** RegularExpression Id. */\r
-  int MINUTE = 68;\r
+  int SMONDAY = 68;\r
   /** RegularExpression Id. */\r
-  int SECOND = 69;\r
+  int LMONDAY = 69;\r
   /** RegularExpression Id. */\r
-  int DIGIT = 70;\r
+  int FEBDAY = 70;\r
   /** RegularExpression Id. */\r
-  int LETTER = 71;\r
+  int HOUR = 71;\r
+  /** RegularExpression Id. */\r
+  int MINUTE = 72;\r
+  /** RegularExpression Id. */\r
+  int SECOND = 73;\r
+  /** RegularExpression Id. */\r
+  int DIGIT = 74;\r
+  /** RegularExpression Id. */\r
+  int LETTER = 75;\r
 \r
   /** Lexical state. */\r
   int DEFAULT = 0;\r
@@ -186,7 +194,6 @@ public interface NEMOparserConstants {
     "\"IMPORT\"",\r
     "\"UPDATE\"",\r
     "\"DELETE\"",\r
-    "\"User\"",\r
     "\"Node\"",\r
     "\"Type\"",\r
     "\"Contain\"",\r
@@ -209,8 +216,13 @@ public interface NEMOparserConstants {
     "\"connections\"",\r
     "\"flows\"",\r
     "\"operations\"",\r
+    "\"NodeModel\"",\r
+    "\"string\"",\r
+    "\"integer\"",\r
+    "\"range\"",\r
     "<UNUMBER>",\r
     "<ID>",\r
+    "<TEMPID>",\r
     "<ETHPREF>",\r
     "<IPV4PREF>",\r
     "<DATEVAL>",\r
index f29731c2f4bbb36463d1724d7f230cf059d9331d..a30321040ddaad5ff3b354d476b14029ccf53864 100644 (file)
@@ -7,6 +7,25 @@
  */\r
 /* Generated By:JavaCC: Do not edit this line. NEMOparserTokenManager.java */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.Query;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateDefinitionLang;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.ArrayList;\r
+import java.io.StringReader;\r
+\r
 /** Token Manager. */\r
 public class NEMOparserTokenManager implements NEMOparserConstants\r
 {\r
@@ -20,95 +39,102 @@ private static final int jjStopStringLiteralDfa_0(int pos, long active0)
    switch (pos)\r
    {\r
       case 0:\r
-         if ((active0 & 0x9000000000000L) != 0L)\r
+         if ((active0 & 0x74800000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
-            return 203;\r
+            jjmatchedKind = 56;\r
+            return 205;\r
          }\r
-         if ((active0 & 0x6000000000000L) != 0L)\r
+         if ((active0 & 0x3000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
-            return 84;\r
+            jjmatchedKind = 56;\r
+            return 81;\r
          }\r
          return -1;\r
       case 1:\r
-         if ((active0 & 0xf000000000000L) != 0L)\r
+         if ((active0 & 0x77800000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 1;\r
-            return 203;\r
+            return 205;\r
          }\r
          return -1;\r
       case 2:\r
-         if ((active0 & 0xf000000000000L) != 0L)\r
+         if ((active0 & 0x77800000000000L) != 0L)\r
          {\r
             if (jjmatchedPos != 2)\r
             {\r
-               jjmatchedKind = 53;\r
+               jjmatchedKind = 56;\r
                jjmatchedPos = 2;\r
             }\r
-            return 203;\r
+            return 205;\r
          }\r
          return -1;\r
       case 3:\r
-         if ((active0 & 0xf000000000000L) != 0L)\r
+         if ((active0 & 0x77800000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
-            jjmatchedPos = 3;\r
-            return 203;\r
+            if (jjmatchedPos != 3)\r
+            {\r
+               jjmatchedKind = 56;\r
+               jjmatchedPos = 3;\r
+            }\r
+            return 205;\r
          }\r
          return -1;\r
       case 4:\r
-         if ((active0 & 0xa000000000000L) != 0L)\r
+         if ((active0 & 0x35000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 4;\r
-            return 203;\r
+            return 205;\r
          }\r
-         if ((active0 & 0x5000000000000L) != 0L)\r
-            return 203;\r
+         if ((active0 & 0x42800000000000L) != 0L)\r
+            return 205;\r
          return -1;\r
       case 5:\r
-         if ((active0 & 0xa000000000000L) != 0L)\r
+         if ((active0 & 0x25000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 5;\r
-            return 203;\r
+            return 205;\r
          }\r
+         if ((active0 & 0x10000000000000L) != 0L)\r
+            return 205;\r
          return -1;\r
       case 6:\r
-         if ((active0 & 0xa000000000000L) != 0L)\r
+         if ((active0 & 0x5000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 6;\r
-            return 203;\r
+            return 205;\r
          }\r
+         if ((active0 & 0x20000000000000L) != 0L)\r
+            return 205;\r
          return -1;\r
       case 7:\r
-         if ((active0 & 0xa000000000000L) != 0L)\r
+         if ((active0 & 0x5000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 7;\r
-            return 203;\r
+            return 205;\r
          }\r
          return -1;\r
       case 8:\r
-         if ((active0 & 0xa000000000000L) != 0L)\r
+         if ((active0 & 0x5000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 8;\r
-            return 203;\r
+            return 205;\r
          }\r
          return -1;\r
       case 9:\r
-         if ((active0 & 0x2000000000000L) != 0L)\r
+         if ((active0 & 0x4000000000000L) != 0L)\r
+            return 205;\r
+         if ((active0 & 0x1000000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 53;\r
+            jjmatchedKind = 56;\r
             jjmatchedPos = 9;\r
-            return 203;\r
+            return 205;\r
          }\r
-         if ((active0 & 0x8000000000000L) != 0L)\r
-            return 203;\r
          return -1;\r
       default :\r
          return -1;\r
@@ -153,45 +179,51 @@ static private int jjMoveStringLiteralDfa0_0()
          jjmatchedKind = 16;\r
          return jjMoveStringLiteralDfa1_0(0x40000L);\r
       case 65:\r
-         return jjMoveStringLiteralDfa1_0(0x20000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x10000000000L);\r
       case 66:\r
-         return jjMoveStringLiteralDfa1_0(0x400000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x200000000000L);\r
       case 67:\r
-         return jjMoveStringLiteralDfa1_0(0x10502000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x8282000000L);\r
       case 68:\r
          return jjMoveStringLiteralDfa1_0(0x10000000L);\r
       case 69:\r
-         return jjMoveStringLiteralDfa1_0(0x800800000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x400400000000L);\r
       case 70:\r
-         return jjMoveStringLiteralDfa1_0(0x81000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x40800000000L);\r
       case 73:\r
          return jjMoveStringLiteralDfa1_0(0x4000000L);\r
       case 77:\r
-         return jjMoveStringLiteralDfa1_0(0x2000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x1000000000L);\r
       case 78:\r
-         return jjMoveStringLiteralDfa1_0(0x40000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x8000020000000L);\r
       case 79:\r
-         return jjMoveStringLiteralDfa1_0(0x4000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x2000000000L);\r
       case 80:\r
-         return jjMoveStringLiteralDfa1_0(0x100200000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x80100000000L);\r
       case 81:\r
-         return jjMoveStringLiteralDfa1_0(0x40000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x20000000000L);\r
       case 84:\r
-         return jjMoveStringLiteralDfa1_0(0x208080000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x104040000000L);\r
       case 85:\r
-         return jjMoveStringLiteralDfa1_0(0x28000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x8000000L);\r
       case 91:\r
          return jjStopAtPos(0, 10);\r
       case 93:\r
          return jjStopAtPos(0, 11);\r
       case 99:\r
-         return jjMoveStringLiteralDfa1_0(0x2000000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x1000000000000L);\r
       case 102:\r
-         return jjMoveStringLiteralDfa1_0(0x4000000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x2000000000000L);\r
+      case 105:\r
+         return jjMoveStringLiteralDfa1_0(0x20000000000000L);\r
       case 110:\r
-         return jjMoveStringLiteralDfa1_0(0x1000000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x800000000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa1_0(0x8000000000000L);\r
+         return jjMoveStringLiteralDfa1_0(0x4000000000000L);\r
+      case 114:\r
+         return jjMoveStringLiteralDfa1_0(0x40000000000000L);\r
+      case 115:\r
+         return jjMoveStringLiteralDfa1_0(0x10000000000000L);\r
       case 124:\r
          return jjMoveStringLiteralDfa1_0(0x2000L);\r
       default :\r
@@ -228,27 +260,27 @@ static private int jjMoveStringLiteralDfa1_0(long active0)
       case 82:\r
          return jjMoveStringLiteralDfa2_0(active0, 0x2000000L);\r
       case 97:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0xa000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x40005000000000L);\r
       case 99:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000L);\r
       case 101:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x200000000000L);\r
       case 108:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x4001000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000800000000L);\r
       case 110:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x800800000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x20400400000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x3010540000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x98082a0000000L);\r
       case 112:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x8004000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x4002000000000L);\r
       case 114:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x380200000000L);\r
-      case 115:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x20000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x1c0100000000L);\r
+      case 116:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x10000000000000L);\r
       case 117:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L);\r
       case 121:\r
-         return jjMoveStringLiteralDfa2_0(active0, 0x80000000L);\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x40000000L);\r
       case 124:\r
          if ((active0 & 0x2000L) != 0L)\r
             return jjStopAtPos(1, 13);\r
@@ -278,30 +310,30 @@ static private int jjMoveStringLiteralDfa2_0(long old0, long active0)
       case 80:\r
          return jjMoveStringLiteralDfa3_0(active0, 0x4000000L);\r
       case 97:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);\r
       case 100:\r
-         if ((active0 & 0x800000000000L) != 0L)\r
+         if ((active0 & 0x400000000000L) != 0L)\r
          {\r
-            jjmatchedKind = 47;\r
+            jjmatchedKind = 46;\r
             jjmatchedPos = 2;\r
          }\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x1000840000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x8800420000000L);\r
       case 101:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x8044020000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x4022000000000L);\r
       case 103:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);\r
       case 105:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000000L);\r
       case 110:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x2010500000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x41008280000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x4081200000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x2040900000000L);\r
       case 112:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x80000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x40000000L);\r
       case 114:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x10004000000000L);\r
       case 116:\r
-         return jjMoveStringLiteralDfa3_0(active0, 0x22000000000L);\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x20011000000000L);\r
       default :\r
          break;\r
    }\r
@@ -325,39 +357,40 @@ static private int jjMoveStringLiteralDfa3_0(long old0, long active0)
       case 79:\r
          return jjMoveStringLiteralDfa4_0(active0, 0x4000000L);\r
       case 99:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000L);\r
       case 100:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);\r
       case 101:\r
-         if ((active0 & 0x40000000L) != 0L)\r
+         if ((active0 & 0x20000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 29;\r
+            jjmatchedPos = 3;\r
+         }\r
+         else if ((active0 & 0x40000000L) != 0L)\r
             return jjStopAtPos(3, 30);\r
-         else if ((active0 & 0x80000000L) != 0L)\r
-            return jjStopAtPos(3, 31);\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x28800000000000L);\r
       case 103:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x40004000000000L);\r
       case 105:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x420000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x10210000000000L);\r
       case 109:\r
-         if ((active0 & 0x80000000000L) != 0L)\r
-            return jjStopAtPos(3, 43);\r
+         if ((active0 & 0x40000000000L) != 0L)\r
+            return jjStopAtPos(3, 42);\r
          break;\r
       case 110:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x2200c00000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x1100600000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L);\r
       case 112:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x200000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000L);\r
       case 114:\r
-         if ((active0 & 0x20000000L) != 0L)\r
-            return jjStopAtPos(3, 29);\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x8044000000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x4022000000000L);\r
       case 116:\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x100000000L);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x80000000L);\r
       case 119:\r
-         if ((active0 & 0x1000000000L) != 0L)\r
-            return jjStopAtPos(3, 36);\r
-         return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L);\r
+         if ((active0 & 0x800000000L) != 0L)\r
+            return jjStopAtPos(3, 35);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000000L);\r
       default :\r
          break;\r
    }\r
@@ -374,37 +407,43 @@ static private int jjMoveStringLiteralDfa4_0(long old0, long active0)
    }\r
    switch(curChar)\r
    {\r
+      case 77:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000000L);\r
       case 82:\r
          return jjMoveStringLiteralDfa5_0(active0, 0x4000000L);\r
       case 84:\r
          return jjMoveStringLiteralDfa5_0(active0, 0x1a000000L);\r
       case 97:\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x8004100000000L);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x4002080000000L);\r
       case 101:\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x2008600000000L);\r
+         if ((active0 & 0x40000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(4, 54, 205);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x1004300000000L);\r
+      case 103:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x20000000000000L);\r
       case 104:\r
-         if ((active0 & 0x2000000000L) != 0L)\r
-            return jjStopAtPos(4, 37);\r
+         if ((active0 & 0x1000000000L) != 0L)\r
+            return jjStopAtPos(4, 36);\r
          break;\r
       case 105:\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x8000000000L);\r
       case 110:\r
-         if ((active0 & 0x400000000000L) != 0L)\r
-            return jjStopAtPos(4, 46);\r
-         break;\r
+         if ((active0 & 0x200000000000L) != 0L)\r
+            return jjStopAtPos(4, 45);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x10000000000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x20800000000L);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x10400000000L);\r
       case 114:\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x80000000000L);\r
       case 115:\r
-         if ((active0 & 0x1000000000000L) != 0L)\r
-            return jjStartNfaWithStates_0(4, 48, 203);\r
-         else if ((active0 & 0x4000000000000L) != 0L)\r
-            return jjStartNfaWithStates_0(4, 50, 203);\r
-         return jjMoveStringLiteralDfa5_0(active0, 0x200000000000L);\r
+         if ((active0 & 0x800000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(4, 47, 205);\r
+         else if ((active0 & 0x2000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(4, 49, 205);\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L);\r
       case 121:\r
-         if ((active0 & 0x40000000000L) != 0L)\r
-            return jjStopAtPos(4, 42);\r
+         if ((active0 & 0x20000000000L) != 0L)\r
+            return jjStopAtPos(4, 41);\r
          break;\r
       default :\r
          break;\r
@@ -435,23 +474,31 @@ static private int jjMoveStringLiteralDfa5_0(long old0, long active0)
             return jjStopAtPos(5, 26);\r
          break;\r
       case 97:\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x100000000000L);\r
       case 99:\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x2000400000000L);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x1000200000000L);\r
       case 100:\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x800000000L);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x400000000L);\r
+      case 101:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x20000000000000L);\r
+      case 103:\r
+         if ((active0 & 0x10000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(5, 52, 205);\r
+         break;\r
       case 105:\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x100100000000L);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x80080000000L);\r
       case 110:\r
-         if ((active0 & 0x20000000000L) != 0L)\r
-            return jjStopAtPos(5, 41);\r
+         if ((active0 & 0x10000000000L) != 0L)\r
+            return jjStopAtPos(5, 40);\r
          break;\r
+      case 111:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x8000000000000L);\r
       case 114:\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x200000000L);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x100000000L);\r
       case 116:\r
-         if ((active0 & 0x8000000000L) != 0L)\r
-            return jjStopAtPos(5, 39);\r
-         return jjMoveStringLiteralDfa6_0(active0, 0x8014000000000L);\r
+         if ((active0 & 0x4000000000L) != 0L)\r
+            return jjStopAtPos(5, 38);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x400a000000000L);\r
       default :\r
          break;\r
    }\r
@@ -469,17 +516,23 @@ static private int jjMoveStringLiteralDfa6_0(long old0, long active0)
    switch(curChar)\r
    {\r
       case 99:\r
-         return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x100000000000L);\r
+      case 100:\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x8000000000000L);\r
       case 101:\r
-         return jjMoveStringLiteralDfa7_0(active0, 0x800000000L);\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x400000000L);\r
       case 105:\r
-         return jjMoveStringLiteralDfa7_0(active0, 0x8014000000000L);\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x400a000000000L);\r
       case 110:\r
-         if ((active0 & 0x100000000L) != 0L)\r
-            return jjStopAtPos(6, 32);\r
+         if ((active0 & 0x80000000L) != 0L)\r
+            return jjStopAtPos(6, 31);\r
+         break;\r
+      case 114:\r
+         if ((active0 & 0x20000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(6, 53, 205);\r
          break;\r
       case 116:\r
-         return jjMoveStringLiteralDfa7_0(active0, 0x2100600000000L);\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x1080300000000L);\r
       default :\r
          break;\r
    }\r
@@ -496,21 +549,23 @@ static private int jjMoveStringLiteralDfa7_0(long old0, long active0)
    }\r
    switch(curChar)\r
    {\r
+      case 101:\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x8000000000000L);\r
       case 105:\r
-         return jjMoveStringLiteralDfa8_0(active0, 0x2000400000000L);\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x1000200000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa8_0(active0, 0x8014000000000L);\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x400a000000000L);\r
       case 115:\r
-         if ((active0 & 0x800000000L) != 0L)\r
-            return jjStopAtPos(7, 35);\r
+         if ((active0 & 0x400000000L) != 0L)\r
+            return jjStopAtPos(7, 34);\r
          break;\r
       case 116:\r
-         return jjMoveStringLiteralDfa8_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x100000000000L);\r
       case 121:\r
-         if ((active0 & 0x200000000L) != 0L)\r
-            return jjStopAtPos(7, 33);\r
-         else if ((active0 & 0x100000000000L) != 0L)\r
-            return jjStopAtPos(7, 44);\r
+         if ((active0 & 0x100000000L) != 0L)\r
+            return jjStopAtPos(7, 32);\r
+         else if ((active0 & 0x80000000000L) != 0L)\r
+            return jjStopAtPos(7, 43);\r
          break;\r
       default :\r
          break;\r
@@ -529,15 +584,19 @@ static private int jjMoveStringLiteralDfa8_0(long old0, long active0)
    switch(curChar)\r
    {\r
       case 105:\r
-         return jjMoveStringLiteralDfa9_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa9_0(active0, 0x100000000000L);\r
+      case 108:\r
+         if ((active0 & 0x8000000000000L) != 0L)\r
+            return jjStopAtPos(8, 51);\r
+         break;\r
       case 110:\r
-         if ((active0 & 0x4000000000L) != 0L)\r
-            return jjStopAtPos(8, 38);\r
-         else if ((active0 & 0x10000000000L) != 0L)\r
-            return jjStopAtPos(8, 40);\r
-         return jjMoveStringLiteralDfa9_0(active0, 0x8000000000000L);\r
+         if ((active0 & 0x2000000000L) != 0L)\r
+            return jjStopAtPos(8, 37);\r
+         else if ((active0 & 0x8000000000L) != 0L)\r
+            return jjStopAtPos(8, 39);\r
+         return jjMoveStringLiteralDfa9_0(active0, 0x4000000000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa9_0(active0, 0x2000400000000L);\r
+         return jjMoveStringLiteralDfa9_0(active0, 0x1000200000000L);\r
       default :\r
          break;\r
    }\r
@@ -555,14 +614,14 @@ static private int jjMoveStringLiteralDfa9_0(long old0, long active0)
    switch(curChar)\r
    {\r
       case 110:\r
-         if ((active0 & 0x400000000L) != 0L)\r
-            return jjStopAtPos(9, 34);\r
-         return jjMoveStringLiteralDfa10_0(active0, 0x2000000000000L);\r
+         if ((active0 & 0x200000000L) != 0L)\r
+            return jjStopAtPos(9, 33);\r
+         return jjMoveStringLiteralDfa10_0(active0, 0x1000000000000L);\r
       case 111:\r
-         return jjMoveStringLiteralDfa10_0(active0, 0x200000000000L);\r
+         return jjMoveStringLiteralDfa10_0(active0, 0x100000000000L);\r
       case 115:\r
-         if ((active0 & 0x8000000000000L) != 0L)\r
-            return jjStartNfaWithStates_0(9, 51, 203);\r
+         if ((active0 & 0x4000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(9, 50, 205);\r
          break;\r
       default :\r
          break;\r
@@ -581,12 +640,12 @@ static private int jjMoveStringLiteralDfa10_0(long old0, long active0)
    switch(curChar)\r
    {\r
       case 110:\r
-         if ((active0 & 0x200000000000L) != 0L)\r
-            return jjStopAtPos(10, 45);\r
+         if ((active0 & 0x100000000000L) != 0L)\r
+            return jjStopAtPos(10, 44);\r
          break;\r
       case 115:\r
-         if ((active0 & 0x2000000000000L) != 0L)\r
-            return jjStartNfaWithStates_0(10, 49, 203);\r
+         if ((active0 & 0x1000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(10, 48, 205);\r
          break;\r
       default :\r
          break;\r
@@ -604,7 +663,7 @@ static private int jjStartNfaWithStates_0(int pos, int kind, int state)
 static private int jjMoveNfa_0(int startState, int curPos)\r
 {\r
    int startsAt = 0;\r
-   jjnewStateCnt = 203;\r
+   jjnewStateCnt = 205;\r
    int i = 1;\r
    jjstateSet[0] = startState;\r
    int kind = 0x7fffffff;\r
@@ -619,30 +678,6 @@ static private int jjMoveNfa_0(int startState, int curPos)
          {\r
             switch(jjstateSet[--i])\r
             {\r
-               case 84:\r
-                  if ((0x3ff200000000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 107;\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 85;\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                  {\r
-                     if (kind > 53)\r
-                        kind = 53;\r
-                     jjCheckNAdd(2);\r
-                  }\r
-                  break;\r
-               case 203:\r
-                  if ((0x3ff200000000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                  {\r
-                     if (kind > 53)\r
-                        kind = 53;\r
-                     jjCheckNAdd(2);\r
-                  }\r
-                  break;\r
                case 0:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
                      jjCheckNAddStates(0, 4);\r
@@ -650,15 +685,15 @@ static private int jjMoveNfa_0(int startState, int curPos)
                      jjAddStates(5, 6);\r
                   if ((0x3fe000000000000L & l) != 0L)\r
                   {\r
-                     if (kind > 52)\r
-                        kind = 52;\r
+                     if (kind > 55)\r
+                        kind = 55;\r
                      jjCheckNAddStates(7, 9);\r
                   }\r
                   else if (curChar == 48)\r
                   {\r
-                     if (kind > 52)\r
-                        kind = 52;\r
-                     jjCheckNAdd(4);\r
+                     if (kind > 55)\r
+                        kind = 55;\r
+                     jjCheckNAdd(1);\r
                   }\r
                   if (curChar == 50)\r
                      jjAddStates(10, 11);\r
@@ -667,356 +702,390 @@ static private int jjMoveNfa_0(int startState, int curPos)
                   if (curChar == 50)\r
                      jjAddStates(15, 17);\r
                   break;\r
-               case 1:\r
+               case 81:\r
+                  if ((0x7ff600000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
+                  if ((0x3ff200000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(201, 202);\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 104;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 82;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 57)\r
+                        kind = 57;\r
+                     jjCheckNAdd(204);\r
+                  }\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 56)\r
+                        kind = 56;\r
+                     jjCheckNAdd(202);\r
+                  }\r
+                  break;\r
+               case 205:\r
+                  if ((0x7ff600000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
                   if ((0x3ff200000000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
+                     jjCheckNAddTwoStates(201, 202);\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 57)\r
+                        kind = 57;\r
+                     jjCheckNAdd(204);\r
+                  }\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 56)\r
+                        kind = 56;\r
+                     jjCheckNAdd(202);\r
+                  }\r
+                  break;\r
+               case 1:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(2);\r
                   break;\r
                case 2:\r
-                  if ((0x3ff000000000000L & l) == 0L)\r
-                     break;\r
-                  if (kind > 53)\r
-                     kind = 53;\r
-                  jjCheckNAdd(2);\r
+                  if (curChar == 58)\r
+                     jjCheckNAddStates(18, 20);\r
                   break;\r
                case 3:\r
-                  if (curChar != 48)\r
-                     break;\r
-                  if (kind > 52)\r
-                     kind = 52;\r
-                  jjCheckNAdd(4);\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(4);\r
                   break;\r
                case 4:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(5);\r
+                     jjstateSet[jjnewStateCnt++] = 5;\r
                   break;\r
                case 5:\r
                   if (curChar == 58)\r
-                     jjCheckNAddStates(18, 20);\r
+                     jjCheckNAddStates(21, 23);\r
                   break;\r
                case 6:\r
                   if (curChar == 48)\r
                      jjCheckNAdd(7);\r
                   break;\r
                case 7:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 8;\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 61)\r
+                     kind = 61;\r
                   break;\r
                case 8:\r
-                  if (curChar == 58)\r
-                     jjCheckNAddStates(21, 23);\r
-                  break;\r
-               case 9:\r
-                  if (curChar == 48)\r
-                     jjCheckNAdd(10);\r
-                  break;\r
-               case 10:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 57)\r
-                     kind = 57;\r
-                  break;\r
-               case 11:\r
                   if ((0x3e000000000000L & l) != 0L)\r
-                     jjCheckNAdd(10);\r
+                     jjCheckNAdd(7);\r
                   break;\r
-               case 12:\r
+               case 9:\r
                   if ((0x3e000000000000L & l) != 0L)\r
-                     jjCheckNAdd(7);\r
+                     jjCheckNAdd(4);\r
                   break;\r
-               case 13:\r
+               case 10:\r
                   if ((0x3fe000000000000L & l) == 0L)\r
                      break;\r
-                  if (kind > 52)\r
-                     kind = 52;\r
+                  if (kind > 55)\r
+                     kind = 55;\r
                   jjCheckNAddStates(7, 9);\r
                   break;\r
-               case 14:\r
+               case 11:\r
                   if ((0x3ff000000000000L & l) == 0L)\r
                      break;\r
-                  if (kind > 52)\r
-                     kind = 52;\r
-                  jjCheckNAdd(14);\r
+                  if (kind > 55)\r
+                     kind = 55;\r
+                  jjCheckNAdd(11);\r
                   break;\r
-               case 15:\r
+               case 12:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(16);\r
+                     jjCheckNAdd(13);\r
                   break;\r
-               case 16:\r
+               case 13:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(24, 28);\r
                   break;\r
-               case 17:\r
+               case 14:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(18);\r
+                     jjCheckNAdd(15);\r
                   break;\r
-               case 18:\r
+               case 15:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(29, 33);\r
                   break;\r
-               case 19:\r
+               case 16:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(20);\r
+                     jjCheckNAdd(17);\r
                   break;\r
-               case 20:\r
+               case 17:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(34, 38);\r
                   break;\r
-               case 21:\r
+               case 18:\r
                   if ((0x3ff000000000000L & l) == 0L)\r
                      break;\r
-                  if (kind > 55)\r
-                     kind = 55;\r
-                  jjCheckNAdd(22);\r
+                  if (kind > 59)\r
+                     kind = 59;\r
+                  jjCheckNAdd(19);\r
                   break;\r
-               case 22:\r
+               case 19:\r
                   if (curChar == 47)\r
                      jjAddStates(39, 41);\r
                   break;\r
-               case 23:\r
-                  if ((0x3fe000000000000L & l) != 0L && kind > 55)\r
-                     kind = 55;\r
+               case 20:\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 59)\r
+                     kind = 59;\r
                   break;\r
-               case 24:\r
+               case 21:\r
                   if ((0x6000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 25;\r
+                     jjstateSet[jjnewStateCnt++] = 22;\r
                   break;\r
-               case 25:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 55)\r
-                     kind = 55;\r
+               case 22:\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 59)\r
+                     kind = 59;\r
                   break;\r
-               case 26:\r
+               case 23:\r
                   if (curChar == 51)\r
-                     jjstateSet[jjnewStateCnt++] = 27;\r
+                     jjstateSet[jjnewStateCnt++] = 24;\r
                   break;\r
-               case 27:\r
-                  if ((0x7000000000000L & l) != 0L && kind > 55)\r
-                     kind = 55;\r
+               case 24:\r
+                  if ((0x7000000000000L & l) != 0L && kind > 59)\r
+                     kind = 59;\r
                   break;\r
-               case 28:\r
+               case 25:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(21);\r
+                     jjCheckNAdd(18);\r
                   break;\r
-               case 29:\r
+               case 26:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 30;\r
+                     jjstateSet[jjnewStateCnt++] = 27;\r
                   break;\r
-               case 30:\r
+               case 27:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(21);\r
+                     jjCheckNAdd(18);\r
                   break;\r
-               case 31:\r
+               case 28:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 32;\r
+                     jjstateSet[jjnewStateCnt++] = 29;\r
                   break;\r
-               case 32:\r
+               case 29:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(21);\r
+                     jjCheckNAdd(18);\r
                   break;\r
-               case 33:\r
+               case 30:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 34;\r
+                     jjstateSet[jjnewStateCnt++] = 31;\r
                   break;\r
-               case 34:\r
+               case 31:\r
                   if ((0x3f000000000000L & l) == 0L)\r
                      break;\r
-                  if (kind > 55)\r
-                     kind = 55;\r
-                  jjCheckNAdd(22);\r
+                  if (kind > 59)\r
+                     kind = 59;\r
+                  jjCheckNAdd(19);\r
                   break;\r
-               case 35:\r
+               case 32:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 33;\r
+                     jjstateSet[jjnewStateCnt++] = 30;\r
                   break;\r
-               case 36:\r
+               case 33:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(19);\r
+                     jjCheckNAdd(16);\r
                   break;\r
-               case 37:\r
+               case 34:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 38;\r
+                     jjstateSet[jjnewStateCnt++] = 35;\r
                   break;\r
-               case 38:\r
+               case 35:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(19);\r
+                     jjCheckNAdd(16);\r
                   break;\r
-               case 39:\r
+               case 36:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 40;\r
+                     jjstateSet[jjnewStateCnt++] = 37;\r
                   break;\r
-               case 40:\r
+               case 37:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(19);\r
+                     jjCheckNAdd(16);\r
                   break;\r
-               case 41:\r
+               case 38:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 42;\r
+                     jjstateSet[jjnewStateCnt++] = 39;\r
                   break;\r
-               case 42:\r
+               case 39:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(20);\r
+                     jjCheckNAdd(17);\r
                   break;\r
-               case 43:\r
+               case 40:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 41;\r
+                     jjstateSet[jjnewStateCnt++] = 38;\r
                   break;\r
-               case 44:\r
+               case 41:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(17);\r
+                     jjCheckNAdd(14);\r
                   break;\r
-               case 45:\r
+               case 42:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 46;\r
+                     jjstateSet[jjnewStateCnt++] = 43;\r
                   break;\r
-               case 46:\r
+               case 43:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(17);\r
+                     jjCheckNAdd(14);\r
                   break;\r
-               case 47:\r
+               case 44:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 48;\r
+                     jjstateSet[jjnewStateCnt++] = 45;\r
                   break;\r
-               case 48:\r
+               case 45:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(17);\r
+                     jjCheckNAdd(14);\r
                   break;\r
-               case 49:\r
+               case 46:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 50;\r
+                     jjstateSet[jjnewStateCnt++] = 47;\r
                   break;\r
-               case 50:\r
+               case 47:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(18);\r
+                     jjCheckNAdd(15);\r
                   break;\r
-               case 51:\r
+               case 48:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 49;\r
+                     jjstateSet[jjnewStateCnt++] = 46;\r
                   break;\r
-               case 52:\r
+               case 49:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(53);\r
+                     jjCheckNAdd(50);\r
                   break;\r
-               case 53:\r
+               case 50:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(42, 46);\r
                   break;\r
-               case 54:\r
+               case 51:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(55);\r
+                     jjCheckNAdd(52);\r
                   break;\r
-               case 55:\r
+               case 52:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(47, 51);\r
                   break;\r
-               case 56:\r
+               case 53:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(57);\r
+                     jjCheckNAdd(54);\r
                   break;\r
-               case 57:\r
+               case 54:\r
                   if (curChar == 46)\r
                      jjCheckNAddStates(52, 56);\r
                   break;\r
-               case 58:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 60)\r
-                     kind = 60;\r
+               case 55:\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 64)\r
+                     kind = 64;\r
                   break;\r
-               case 59:\r
+               case 56:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(58);\r
+                     jjCheckNAdd(55);\r
                   break;\r
-               case 60:\r
+               case 57:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 61;\r
+                     jjstateSet[jjnewStateCnt++] = 58;\r
                   break;\r
-               case 61:\r
+               case 58:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(58);\r
+                     jjCheckNAdd(55);\r
                   break;\r
-               case 62:\r
+               case 59:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 63;\r
+                     jjstateSet[jjnewStateCnt++] = 60;\r
                   break;\r
-               case 63:\r
+               case 60:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(58);\r
+                     jjCheckNAdd(55);\r
                   break;\r
-               case 64:\r
+               case 61:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 65;\r
+                     jjstateSet[jjnewStateCnt++] = 62;\r
                   break;\r
-               case 65:\r
-                  if ((0x3f000000000000L & l) != 0L && kind > 60)\r
-                     kind = 60;\r
+               case 62:\r
+                  if ((0x3f000000000000L & l) != 0L && kind > 64)\r
+                     kind = 64;\r
                   break;\r
-               case 66:\r
+               case 63:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 64;\r
+                     jjstateSet[jjnewStateCnt++] = 61;\r
                   break;\r
-               case 67:\r
+               case 64:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(56);\r
+                     jjCheckNAdd(53);\r
                   break;\r
-               case 68:\r
+               case 65:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 69;\r
+                     jjstateSet[jjnewStateCnt++] = 66;\r
                   break;\r
-               case 69:\r
+               case 66:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(56);\r
+                     jjCheckNAdd(53);\r
                   break;\r
-               case 70:\r
+               case 67:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 71;\r
+                     jjstateSet[jjnewStateCnt++] = 68;\r
                   break;\r
-               case 71:\r
+               case 68:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(56);\r
+                     jjCheckNAdd(53);\r
                   break;\r
-               case 72:\r
+               case 69:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 73;\r
+                     jjstateSet[jjnewStateCnt++] = 70;\r
                   break;\r
-               case 73:\r
+               case 70:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(57);\r
+                     jjCheckNAdd(54);\r
                   break;\r
-               case 74:\r
+               case 71:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 72;\r
+                     jjstateSet[jjnewStateCnt++] = 69;\r
                   break;\r
-               case 75:\r
+               case 72:\r
                   if ((0x3fe000000000000L & l) != 0L)\r
-                     jjCheckNAdd(54);\r
+                     jjCheckNAdd(51);\r
                   break;\r
-               case 76:\r
+               case 73:\r
                   if (curChar == 49)\r
-                     jjstateSet[jjnewStateCnt++] = 77;\r
+                     jjstateSet[jjnewStateCnt++] = 74;\r
                   break;\r
-               case 77:\r
+               case 74:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(54);\r
+                     jjCheckNAdd(51);\r
                   break;\r
-               case 78:\r
+               case 75:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 79;\r
+                     jjstateSet[jjnewStateCnt++] = 76;\r
                   break;\r
-               case 79:\r
+               case 76:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(54);\r
+                     jjCheckNAdd(51);\r
                   break;\r
-               case 80:\r
+               case 77:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 81;\r
+                     jjstateSet[jjnewStateCnt++] = 78;\r
                   break;\r
-               case 81:\r
+               case 78:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(55);\r
+                     jjCheckNAdd(52);\r
                   break;\r
-               case 82:\r
+               case 79:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 80;\r
+                     jjstateSet[jjnewStateCnt++] = 77;\r
                   break;\r
-               case 83:\r
+               case 80:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
                      jjAddStates(5, 6);\r
                   break;\r
+               case 82:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 83;\r
+                  break;\r
+               case 83:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 84;\r
+                  break;\r
+               case 84:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 85;\r
+                  break;\r
                case 85:\r
                   if (curChar == 58)\r
                      jjstateSet[jjnewStateCnt++] = 86;\r
@@ -1062,47 +1131,47 @@ static private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 96;\r
                   break;\r
                case 96:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 97;\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 58)\r
+                     kind = 58;\r
+                  jjstateSet[jjnewStateCnt++] = 97;\r
                   break;\r
                case 97:\r
-                  if (curChar == 58)\r
-                     jjstateSet[jjnewStateCnt++] = 98;\r
+                  if (curChar == 47)\r
+                     jjAddStates(57, 59);\r
                   break;\r
                case 98:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 99;\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 58)\r
+                     kind = 58;\r
                   break;\r
                case 99:\r
-                  if ((0x3ff000000000000L & l) == 0L)\r
-                     break;\r
-                  if (kind > 54)\r
-                     kind = 54;\r
-                  jjstateSet[jjnewStateCnt++] = 100;\r
+                  if ((0xe000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 100;\r
                   break;\r
                case 100:\r
-                  if (curChar == 47)\r
-                     jjAddStates(57, 59);\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 58)\r
+                     kind = 58;\r
                   break;\r
                case 101:\r
-                  if ((0x3fe000000000000L & l) != 0L && kind > 54)\r
-                     kind = 54;\r
+                  if (curChar == 52)\r
+                     jjstateSet[jjnewStateCnt++] = 102;\r
                   break;\r
                case 102:\r
-                  if ((0xe000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 103;\r
+                  if ((0x1ff000000000000L & l) != 0L && kind > 58)\r
+                     kind = 58;\r
                   break;\r
                case 103:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 54)\r
-                     kind = 54;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 104;\r
                   break;\r
                case 104:\r
-                  if (curChar == 52)\r
+                  if (curChar == 58)\r
                      jjstateSet[jjnewStateCnt++] = 105;\r
                   break;\r
                case 105:\r
-                  if ((0x1ff000000000000L & l) != 0L && kind > 54)\r
-                     kind = 54;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 106;\r
                   break;\r
                case 106:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
@@ -1153,158 +1222,158 @@ static private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 118;\r
                   break;\r
                case 118:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 119;\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 63)\r
+                     kind = 63;\r
                   break;\r
                case 119:\r
-                  if (curChar == 58)\r
-                     jjstateSet[jjnewStateCnt++] = 120;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAddStates(0, 4);\r
                   break;\r
                case 120:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
                      jjstateSet[jjnewStateCnt++] = 121;\r
                   break;\r
                case 121:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 59)\r
-                     kind = 59;\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 122;\r
                   break;\r
                case 122:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAddStates(0, 4);\r
+                     jjstateSet[jjnewStateCnt++] = 123;\r
                   break;\r
                case 123:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 124;\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(60, 64);\r
                   break;\r
                case 124:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 125;\r
+                  if ((0x1aa000000000000L & l) != 0L)\r
+                     jjCheckNAdd(125);\r
                   break;\r
                case 125:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 126;\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(65, 68);\r
                   break;\r
                case 126:\r
-                  if (curChar == 45)\r
-                     jjCheckNAddStates(60, 64);\r
+               case 134:\r
+               case 139:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(127);\r
                   break;\r
                case 127:\r
-                  if ((0x1aa000000000000L & l) != 0L)\r
-                     jjCheckNAdd(128);\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 60)\r
+                     kind = 60;\r
                   break;\r
                case 128:\r
-                  if (curChar == 45)\r
-                     jjCheckNAddStates(65, 68);\r
+               case 135:\r
+               case 140:\r
+                  if ((0x6000000000000L & l) != 0L)\r
+                     jjCheckNAdd(129);\r
                   break;\r
                case 129:\r
-               case 137:\r
-               case 142:\r
-                  if (curChar == 48)\r
-                     jjCheckNAdd(130);\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 60)\r
+                     kind = 60;\r
                   break;\r
                case 130:\r
-                  if ((0x3fe000000000000L & l) != 0L && kind > 56)\r
-                     kind = 56;\r
+                  if (curChar == 51)\r
+                     jjstateSet[jjnewStateCnt++] = 131;\r
                   break;\r
                case 131:\r
-               case 138:\r
-               case 143:\r
-                  if ((0x6000000000000L & l) != 0L)\r
-                     jjCheckNAdd(132);\r
+                  if ((0x3000000000000L & l) != 0L && kind > 60)\r
+                     kind = 60;\r
                   break;\r
                case 132:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 56)\r
-                     kind = 56;\r
-                  break;\r
-               case 133:\r
-                  if (curChar == 51)\r
-                     jjstateSet[jjnewStateCnt++] = 134;\r
-                  break;\r
-               case 134:\r
-                  if ((0x3000000000000L & l) != 0L && kind > 56)\r
-                     kind = 56;\r
-                  break;\r
-               case 135:\r
                   if ((0x250000000000000L & l) != 0L)\r
-                     jjCheckNAdd(136);\r
+                     jjCheckNAdd(133);\r
                   break;\r
-               case 136:\r
+               case 133:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(69, 72);\r
                   break;\r
-               case 139:\r
-                  if (curChar == 48 && kind > 56)\r
-                     kind = 56;\r
+               case 136:\r
+                  if (curChar == 48 && kind > 60)\r
+                     kind = 60;\r
                   break;\r
-               case 140:\r
+               case 137:\r
                   if (curChar == 51)\r
-                     jjstateSet[jjnewStateCnt++] = 139;\r
+                     jjstateSet[jjnewStateCnt++] = 136;\r
                   break;\r
-               case 141:\r
+               case 138:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(73, 75);\r
                   break;\r
-               case 144:\r
+               case 141:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 141;\r
+                     jjstateSet[jjnewStateCnt++] = 138;\r
                   break;\r
-               case 145:\r
+               case 142:\r
                   if (curChar == 48)\r
                      jjCheckNAddStates(76, 78);\r
                   break;\r
-               case 146:\r
+               case 143:\r
                   if (curChar == 49)\r
                      jjAddStates(79, 81);\r
                   break;\r
-               case 147:\r
+               case 144:\r
                   if (curChar == 48)\r
-                     jjCheckNAdd(128);\r
+                     jjCheckNAdd(125);\r
                   break;\r
-               case 148:\r
+               case 145:\r
                   if (curChar == 50)\r
-                     jjCheckNAdd(128);\r
+                     jjCheckNAdd(125);\r
                   break;\r
-               case 149:\r
+               case 146:\r
                   if (curChar == 49)\r
-                     jjCheckNAdd(136);\r
+                     jjCheckNAdd(133);\r
                   break;\r
-               case 150:\r
+               case 147:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 151;\r
+                     jjstateSet[jjnewStateCnt++] = 148;\r
                   break;\r
-               case 151:\r
+               case 148:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 152;\r
+                     jjstateSet[jjnewStateCnt++] = 149;\r
                   break;\r
-               case 152:\r
+               case 149:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 153;\r
+                     jjstateSet[jjnewStateCnt++] = 150;\r
                   break;\r
-               case 153:\r
+               case 150:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(82, 86);\r
                   break;\r
-               case 154:\r
+               case 151:\r
                   if ((0x1aa000000000000L & l) != 0L)\r
-                     jjCheckNAdd(155);\r
+                     jjCheckNAdd(152);\r
                   break;\r
-               case 155:\r
+               case 152:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(87, 90);\r
                   break;\r
+               case 153:\r
+               case 175:\r
+               case 180:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(154);\r
+                  break;\r
+               case 154:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(155);\r
+                  break;\r
+               case 155:\r
+                  if (curChar == 44)\r
+                     jjCheckNAddStates(91, 94);\r
+                  break;\r
                case 156:\r
-               case 178:\r
-               case 183:\r
                   if (curChar == 48)\r
                      jjCheckNAdd(157);\r
                   break;\r
                case 157:\r
-                  if ((0x3fe000000000000L & l) != 0L)\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
                      jjCheckNAdd(158);\r
                   break;\r
                case 158:\r
-                  if (curChar == 44)\r
-                     jjCheckNAddStates(91, 94);\r
+                  if (curChar == 58)\r
+                     jjCheckNAddStates(95, 97);\r
                   break;\r
                case 159:\r
                   if (curChar == 48)\r
@@ -1312,161 +1381,171 @@ static private int jjMoveNfa_0(int startState, int curPos)
                   break;\r
                case 160:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(161);\r
+                     jjstateSet[jjnewStateCnt++] = 161;\r
                   break;\r
                case 161:\r
                   if (curChar == 58)\r
-                     jjCheckNAddStates(95, 97);\r
+                     jjCheckNAddStates(98, 100);\r
                   break;\r
                case 162:\r
                   if (curChar == 48)\r
                      jjCheckNAdd(163);\r
                   break;\r
                case 163:\r
-                  if ((0x3ff000000000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 164;\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 62)\r
+                     kind = 62;\r
                   break;\r
                case 164:\r
-                  if (curChar == 58)\r
-                     jjCheckNAddStates(98, 100);\r
-                  break;\r
-               case 165:\r
-                  if (curChar == 48)\r
-                     jjCheckNAdd(166);\r
-                  break;\r
-               case 166:\r
-                  if ((0x3ff000000000000L & l) != 0L && kind > 58)\r
-                     kind = 58;\r
-                  break;\r
-               case 167:\r
                   if ((0x3e000000000000L & l) != 0L)\r
-                     jjCheckNAdd(166);\r
+                     jjCheckNAdd(163);\r
                   break;\r
-               case 168:\r
+               case 165:\r
                   if ((0x3e000000000000L & l) != 0L)\r
-                     jjCheckNAdd(163);\r
+                     jjCheckNAdd(160);\r
                   break;\r
-               case 169:\r
+               case 166:\r
                   if (curChar == 49)\r
-                     jjCheckNAdd(160);\r
+                     jjCheckNAdd(157);\r
                   break;\r
-               case 170:\r
+               case 167:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 171;\r
+                     jjstateSet[jjnewStateCnt++] = 168;\r
                   break;\r
-               case 171:\r
+               case 168:\r
                   if ((0xf000000000000L & l) != 0L)\r
-                     jjCheckNAdd(161);\r
+                     jjCheckNAdd(158);\r
                   break;\r
-               case 172:\r
-               case 179:\r
-               case 184:\r
+               case 169:\r
+               case 176:\r
+               case 181:\r
                   if ((0x6000000000000L & l) != 0L)\r
-                     jjCheckNAdd(173);\r
+                     jjCheckNAdd(170);\r
                   break;\r
-               case 173:\r
+               case 170:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(158);\r
+                     jjCheckNAdd(155);\r
                   break;\r
-               case 174:\r
+               case 171:\r
                   if (curChar == 51)\r
-                     jjstateSet[jjnewStateCnt++] = 175;\r
+                     jjstateSet[jjnewStateCnt++] = 172;\r
                   break;\r
-               case 175:\r
+               case 172:\r
                   if ((0x3000000000000L & l) != 0L)\r
-                     jjCheckNAdd(158);\r
+                     jjCheckNAdd(155);\r
                   break;\r
-               case 176:\r
+               case 173:\r
                   if ((0x250000000000000L & l) != 0L)\r
-                     jjCheckNAdd(177);\r
+                     jjCheckNAdd(174);\r
                   break;\r
-               case 177:\r
+               case 174:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(101, 104);\r
                   break;\r
-               case 180:\r
+               case 177:\r
                   if (curChar == 48)\r
-                     jjCheckNAdd(158);\r
+                     jjCheckNAdd(155);\r
                   break;\r
-               case 181:\r
+               case 178:\r
                   if (curChar == 51)\r
-                     jjstateSet[jjnewStateCnt++] = 180;\r
+                     jjstateSet[jjnewStateCnt++] = 177;\r
                   break;\r
-               case 182:\r
+               case 179:\r
                   if (curChar == 45)\r
                      jjCheckNAddStates(105, 107);\r
                   break;\r
-               case 185:\r
+               case 182:\r
                   if (curChar == 50)\r
-                     jjstateSet[jjnewStateCnt++] = 182;\r
+                     jjstateSet[jjnewStateCnt++] = 179;\r
                   break;\r
-               case 186:\r
+               case 183:\r
                   if (curChar == 48)\r
                      jjCheckNAddStates(108, 110);\r
                   break;\r
-               case 187:\r
+               case 184:\r
                   if (curChar == 49)\r
                      jjAddStates(111, 113);\r
                   break;\r
-               case 188:\r
+               case 185:\r
                   if (curChar == 48)\r
-                     jjCheckNAdd(155);\r
+                     jjCheckNAdd(152);\r
                   break;\r
-               case 189:\r
+               case 186:\r
                   if (curChar == 50)\r
-                     jjCheckNAdd(155);\r
+                     jjCheckNAdd(152);\r
                   break;\r
-               case 190:\r
+               case 187:\r
                   if (curChar == 49)\r
-                     jjCheckNAdd(177);\r
+                     jjCheckNAdd(174);\r
                   break;\r
-               case 191:\r
+               case 188:\r
                   if (curChar == 49)\r
                      jjCheckNAddStates(12, 14);\r
                   break;\r
-               case 192:\r
+               case 189:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(15);\r
+                     jjCheckNAdd(12);\r
                   break;\r
-               case 193:\r
+               case 190:\r
                   if ((0x3ff000000000000L & l) != 0L)\r
-                     jjCheckNAdd(52);\r
+                     jjCheckNAdd(49);\r
                   break;\r
-               case 194:\r
+               case 191:\r
                   if (curChar == 50)\r
                      jjAddStates(15, 17);\r
                   break;\r
-               case 195:\r
+               case 192:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(15);\r
+                     jjCheckNAdd(12);\r
                   break;\r
-               case 196:\r
+               case 193:\r
                   if ((0xf000000000000L & l) != 0L)\r
-                     jjCheckNAdd(5);\r
+                     jjCheckNAdd(2);\r
                   break;\r
-               case 197:\r
+               case 194:\r
                   if ((0x1f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(52);\r
+                     jjCheckNAdd(49);\r
                   break;\r
-               case 198:\r
+               case 195:\r
                   if (curChar == 50)\r
                      jjAddStates(10, 11);\r
                   break;\r
-               case 199:\r
+               case 196:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 200;\r
+                     jjstateSet[jjnewStateCnt++] = 197;\r
                   break;\r
-               case 200:\r
+               case 197:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(16);\r
+                     jjCheckNAdd(13);\r
                   break;\r
-               case 201:\r
+               case 198:\r
                   if (curChar == 53)\r
-                     jjstateSet[jjnewStateCnt++] = 202;\r
+                     jjstateSet[jjnewStateCnt++] = 199;\r
                   break;\r
-               case 202:\r
+               case 199:\r
                   if ((0x3f000000000000L & l) != 0L)\r
-                     jjCheckNAdd(53);\r
+                     jjCheckNAdd(50);\r
+                  break;\r
+               case 201:\r
+                  if ((0x3ff200000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(201, 202);\r
+                  break;\r
+               case 202:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 56)\r
+                     kind = 56;\r
+                  jjCheckNAdd(202);\r
+                  break;\r
+               case 203:\r
+                  if ((0x7ff600000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
+                  break;\r
+               case 204:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 57)\r
+                     kind = 57;\r
+                  jjCheckNAdd(204);\r
                   break;\r
                default : break;\r
             }\r
@@ -1479,54 +1558,67 @@ static private int jjMoveNfa_0(int startState, int curPos)
          {\r
             switch(jjstateSet[--i])\r
             {\r
-               case 84:\r
-                  if ((0x7fffffe80000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
+               case 0:\r
                   if ((0x7fffffe00000000L & l) != 0L)\r
                   {\r
-                     if (kind > 53)\r
-                        kind = 53;\r
-                     jjCheckNAdd(2);\r
+                     if (kind > 56)\r
+                        kind = 56;\r
+                     jjCheckNAddStates(114, 117);\r
                   }\r
                   if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 107;\r
-                  if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 85;\r
+                     jjAddStates(5, 6);\r
                   break;\r
-               case 203:\r
+               case 81:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
                   if ((0x7fffffe80000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
+                     jjCheckNAddTwoStates(201, 202);\r
                   if ((0x7fffffe00000000L & l) != 0L)\r
                   {\r
-                     if (kind > 53)\r
-                        kind = 53;\r
-                     jjCheckNAdd(2);\r
+                     if (kind > 57)\r
+                        kind = 57;\r
+                     jjCheckNAdd(204);\r
                   }\r
-                  break;\r
-               case 0:\r
                   if ((0x7fffffe00000000L & l) != 0L)\r
                   {\r
-                     if (kind > 53)\r
-                        kind = 53;\r
-                     jjCheckNAddTwoStates(1, 2);\r
+                     if (kind > 56)\r
+                        kind = 56;\r
+                     jjCheckNAdd(202);\r
                   }\r
                   if ((0x7e00000000L & l) != 0L)\r
-                     jjAddStates(5, 6);\r
+                     jjstateSet[jjnewStateCnt++] = 104;\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 82;\r
                   break;\r
-               case 1:\r
+               case 205:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
                   if ((0x7fffffe80000000L & l) != 0L)\r
-                     jjCheckNAddTwoStates(1, 2);\r
+                     jjCheckNAddTwoStates(201, 202);\r
+                  if ((0x7fffffe00000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 57)\r
+                        kind = 57;\r
+                     jjCheckNAdd(204);\r
+                  }\r
+                  if ((0x7fffffe00000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 56)\r
+                        kind = 56;\r
+                     jjCheckNAdd(202);\r
+                  }\r
                   break;\r
-               case 2:\r
-                  if ((0x7fffffe00000000L & l) == 0L)\r
-                     break;\r
-                  if (kind > 53)\r
-                     kind = 53;\r
-                  jjCheckNAdd(2);\r
+               case 80:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjAddStates(5, 6);\r
                   break;\r
                case 83:\r
                   if ((0x7e00000000L & l) != 0L)\r
-                     jjAddStates(5, 6);\r
+                     jjstateSet[jjnewStateCnt++] = 84;\r
+                  break;\r
+               case 84:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 85;\r
                   break;\r
                case 86:\r
                   if ((0x7e00000000L & l) != 0L)\r
@@ -1557,19 +1649,19 @@ static private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 96;\r
                   break;\r
                case 96:\r
-                  if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 97;\r
+                  if ((0x7e00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 58)\r
+                     kind = 58;\r
+                  jjstateSet[jjnewStateCnt++] = 97;\r
                   break;\r
-               case 98:\r
+               case 103:\r
                   if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 99;\r
+                     jjstateSet[jjnewStateCnt++] = 104;\r
                   break;\r
-               case 99:\r
-                  if ((0x7e00000000L & l) == 0L)\r
-                     break;\r
-                  if (kind > 54)\r
-                     kind = 54;\r
-                  jjstateSet[jjnewStateCnt++] = 100;\r
+               case 105:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 106;\r
                   break;\r
                case 106:\r
                   if ((0x7e00000000L & l) != 0L)\r
@@ -1604,16 +1696,37 @@ static private int jjMoveNfa_0(int startState, int curPos)
                      jjstateSet[jjnewStateCnt++] = 118;\r
                   break;\r
                case 118:\r
-                  if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 119;\r
+                  if ((0x7e00000000L & l) != 0L && kind > 63)\r
+                     kind = 63;\r
                   break;\r
-               case 120:\r
-                  if ((0x7e00000000L & l) != 0L)\r
-                     jjstateSet[jjnewStateCnt++] = 121;\r
+               case 200:\r
+                  if ((0x7fffffe00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 56)\r
+                     kind = 56;\r
+                  jjCheckNAddStates(114, 117);\r
                   break;\r
-               case 121:\r
-                  if ((0x7e00000000L & l) != 0L && kind > 59)\r
-                     kind = 59;\r
+               case 201:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(201, 202);\r
+                  break;\r
+               case 202:\r
+                  if ((0x7fffffe00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 56)\r
+                     kind = 56;\r
+                  jjCheckNAdd(202);\r
+                  break;\r
+               case 203:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(203, 204);\r
+                  break;\r
+               case 204:\r
+                  if ((0x7fffffe00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 57)\r
+                     kind = 57;\r
+                  jjCheckNAdd(204);\r
                   break;\r
                default : break;\r
             }\r
@@ -1638,21 +1751,21 @@ static private int jjMoveNfa_0(int startState, int curPos)
          kind = 0x7fffffff;\r
       }\r
       ++curPos;\r
-      if ((i = jjnewStateCnt) == (startsAt = 203 - (jjnewStateCnt = startsAt)))\r
+      if ((i = jjnewStateCnt) == (startsAt = 205 - (jjnewStateCnt = startsAt)))\r
          return curPos;\r
       try { curChar = input_stream.readChar(); }\r
       catch(java.io.IOException e) { return curPos; }\r
    }\r
 }\r
 static final int[] jjnextStates = {\r
-   16, 123, 5, 150, 53, 84, 106, 14, 15, 52, 199, 201, 192, 4, 193, 195\r
-   196, 197, 6, 7, 12, 9, 10, 11, 17, 44, 45, 47, 51, 19, 36, 37\r
-   39, 43, 21, 28, 29, 31, 35, 23, 24, 26, 54, 75, 76, 78, 82, 56\r
-   67, 68, 70, 74, 58, 59, 60, 62, 66, 101, 102, 104, 127, 135, 144, 145\r
-   146, 129, 130, 131, 133, 137, 130, 138, 140, 142, 130, 143, 127, 135, 144, 147\r
-   148, 149, 154, 176, 185, 186, 187, 156, 157, 172, 174, 159, 160, 169, 170, 162\r
-   163, 168, 165, 166, 167, 178, 157, 179, 181, 183, 157, 184, 154, 176, 185, 188\r
-   189, 190\r
+   13, 120, 2, 147, 50, 81, 103, 11, 12, 49, 196, 198, 189, 1, 190, 192\r
+   193, 194, 3, 4, 9, 6, 7, 8, 14, 41, 42, 44, 48, 16, 33, 34\r
+   36, 40, 18, 25, 26, 28, 32, 20, 21, 23, 51, 72, 73, 75, 79, 53\r
+   64, 65, 67, 71, 55, 56, 57, 59, 63, 98, 99, 101, 124, 132, 141, 142\r
+   143, 126, 127, 128, 130, 134, 127, 135, 137, 139, 127, 140, 124, 132, 141, 144\r
+   145, 146, 151, 173, 182, 183, 184, 153, 154, 169, 171, 156, 157, 166, 167, 159\r
+   160, 165, 162, 163, 164, 175, 154, 176, 178, 180, 154, 181, 151, 173, 182, 185\r
+   186, 187, 201, 202, 203, 204\r
 };\r
 \r
 /** Token literal values. */\r
@@ -1660,29 +1773,31 @@ public static final String[] jjstrLiteralImages = {
 "", null, null, null, null, "\72", "\54", "\73", "\50", "\51", "\133", "\135", \r
 "\46\46", "\174\174", "\41", "\75\75", "\76", "\74", "\76\75", "\74\75", "\52", null, \r
 null, null, null, "\103\122\105\101\124\105", "\111\115\120\117\122\124", \r
-"\125\120\104\101\124\105", "\104\105\114\105\124\105", "\125\163\145\162", "\116\157\144\145", \r
-"\124\171\160\145", "\103\157\156\164\141\151\156", "\120\162\157\160\145\162\164\171", \r
+"\125\120\104\101\124\105", "\104\105\114\105\124\105", "\116\157\144\145", "\124\171\160\145", \r
+"\103\157\156\164\141\151\156", "\120\162\157\160\145\162\164\171", \r
 "\103\157\156\156\145\143\164\151\157\156", "\105\156\144\156\157\144\145\163", "\106\154\157\167", \r
 "\115\141\164\143\150", "\117\160\145\162\141\164\151\157\156", "\124\141\162\147\145\164", \r
 "\103\157\156\144\151\164\151\157\156", "\101\143\164\151\157\156", "\121\165\145\162\171", "\106\162\157\155", \r
 "\120\162\151\157\162\151\164\171", "\124\162\141\156\163\141\143\164\151\157\156", "\102\145\147\151\156", \r
 "\105\156\144", "\156\157\144\145\163", "\143\157\156\156\145\143\164\151\157\156\163", \r
-"\146\154\157\167\163", "\157\160\145\162\141\164\151\157\156\163", null, null, null, null, null, null, \r
-null, null, null, null, null, null, null, null, null, null, null, null, null, null, };\r
+"\146\154\157\167\163", "\157\160\145\162\141\164\151\157\156\163", \r
+"\116\157\144\145\115\157\144\145\154", "\163\164\162\151\156\147", "\151\156\164\145\147\145\162", \r
+"\162\141\156\147\145", null, null, null, null, null, null, null, null, null, null, null, null, null, \r
+null, null, null, null, null, null, null, null, };\r
 \r
 /** Lexer state names. */\r
 public static final String[] lexStateNames = {\r
    "DEFAULT",\r
 };\r
 static final long[] jjtoToken = {\r
-   0x1ffffffffe1fffe1L, 0x0L, \r
+   0xfffffffffe1fffe1L, 0x1L, \r
 };\r
 static final long[] jjtoSkip = {\r
    0x1eL, 0x0L, \r
 };\r
 static protected SimpleCharStream input_stream;\r
-static private final int[] jjrounds = new int[203];\r
-static private final int[] jjstateSet = new int[406];\r
+static private final int[] jjrounds = new int[205];\r
+static private final int[] jjstateSet = new int[410];\r
 static protected char curChar;\r
 /** Constructor. */\r
 public NEMOparserTokenManager(SimpleCharStream stream){\r
@@ -1709,7 +1824,7 @@ static private void ReInitRounds()
 {\r
    int i;\r
    jjround = 0x80000001;\r
-   for (i = 203; i-- > 0;)\r
+   for (i = 205; i-- > 0;)\r
       jjrounds[i] = 0x80000000;\r
 }\r
 \r
index d6ed531d4b0f1748a21b8fc4d89305d60efbf9de..7aad8aa089d902b46657563d36729eb5fc7e0840 100644 (file)
@@ -191,4 +191,4 @@ public class ParseException extends Exception {
    }\r
 \r
 }\r
-/* JavaCC - OriginalChecksum=48271970a2f1022a0ad80acb4577d14d (do not edit this line) */\r
+/* JavaCC - OriginalChecksum=e5e4e351aea2c3ff97c4b9bdac453a62 (do not edit this line) */\r
index a54f3eef6f6ed761f1d657bdbea4caf74f97553a..91bb6403aa390a0ac1e7ad332141a2da05e3b152 100644 (file)
@@ -479,4 +479,4 @@ public class SimpleCharStream
   }\r
 \r
 }\r
-/* JavaCC - OriginalChecksum=3d5e5b74f810fa0f4ef70d18e9bc8601 (do not edit this line) */\r
+/* JavaCC - OriginalChecksum=260bab006425812ac59340f462f4b574 (do not edit this line) */\r
index e52c95dd31fe40acb6c0c773d6798ef939af9206..af4d53ae16ade9ff66433bf4f857c21abdd8a2ca 100644 (file)
@@ -135,4 +135,4 @@ public class Token implements java.io.Serializable {
   }\r
 \r
 }\r
-/* JavaCC - OriginalChecksum=dc8b83e991d3e41cf255b23a7a4d3774 (do not edit this line) */\r
+/* JavaCC - OriginalChecksum=ca5b1825c6a359ea3683518d0df51cbc (do not edit this line) */\r
index 8ae30d91d3169438e7f3f0f2772bdf102a962fd0..e2e9f63a26624b207669d92e6fc436183f069532 100644 (file)
@@ -151,4 +151,4 @@ public class TokenMgrError extends Error
     this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);\r
   }\r
 }\r
-/* JavaCC - OriginalChecksum=ba2e47c01c2fe7ef735d03301bf06ea2 (do not edit this line) */\r
+/* JavaCC - OriginalChecksum=91ec89f496ecd57e6511b78a642440de (do not edit this line) */\r
index 02fa51369574f8c85cce2146e9fbbc00684539b5..797c6c6b901e8619348f0009112cf1f21a738449 100644 (file)
@@ -7,14 +7,11 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\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.structurestyle.deleteintent.DeleteConnection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-\r
-import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/11/6.\r
@@ -29,30 +26,12 @@ public class DeleteConnectionLang {
     }\r
 \r
     public String DeleteConnectionHandling(UserId userId, String connectionname){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user =tenantManage.getUser();\r
-        if (user.getObjects()!=null){\r
-            if (!user.getObjects().getConnection().isEmpty()){\r
-                List<Connection> connectionList = user.getObjects().getConnection();\r
-                Boolean connExit = false;\r
-                for (Connection connection1 : connectionList){\r
-                    if (connection1.getConnectionName().getValue().equals(connectionname)){\r
-                        connExit = true;\r
-                        errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection1.getConnectionId());\r
-                    }\r
-                }\r
-                if (!connExit){\r
-                    errorInfo =  "The connection "+connectionname + " is not exist in this user vn space.";\r
-                }\r
-            }\r
-            else {\r
-                errorInfo =  "The connection "+connectionname + " is not exist in this user vn space.";\r
-            }\r
+        if (tenantManage.getObjectId(userId,connectionname)!=null){\r
+            ConnectionId connectionId = new ConnectionId(tenantManage.getObjectId(userId,connectionname));\r
+            return deleteConnection.DeleteConnectionHandling(userId,connectionId);\r
         }\r
-        else{\r
-            errorInfo =  "The connection "+connectionname + " is not exist in this user vn space.";\r
+        else {\r
+            return "The connection " + connectionname + " is not exist.";\r
         }\r
-        return errorInfo;\r
     }\r
 }\r
index a32d7bf7a34b9cb484886ea7c0abef0d479dc408..c4d1fa12c928b5ef8d7596dff77dc9a4ccebc1fd 100644 (file)
@@ -7,14 +7,11 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\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.structurestyle.deleteintent.DeleteFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-\r
-import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/11/6.\r
@@ -29,31 +26,12 @@ public class DeleteFlowLang {
     }\r
 \r
     public String DeleteFlowHandling(UserId userId, String flowname){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        if (user.getObjects()!=null){\r
-            if (!user.getObjects().getFlow().isEmpty()){\r
-                List<Flow> flowList = user.getObjects().getFlow();\r
-                Boolean flowExist = false;\r
-                for (Flow flow : flowList){\r
-                    if (flow.getFlowName().getValue().equals(flowname)){\r
-                        flowExist = true;\r
-                        errorInfo = deleteFlow.DeleteFlowHandling(userId,flow.getFlowId());\r
-                    }\r
-                }\r
-                if (!flowExist){\r
-                    errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
-                }\r
-            }\r
-            else{\r
-                errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
-            }\r
+        if (tenantManage.getObjectId(userId,flowname)!=null){\r
+            FlowId flowId = new FlowId(tenantManage.getObjectId(userId,flowname));\r
+            return deleteFlow.DeleteFlowHandling(userId,flowId);\r
         }\r
-        else\r
-        {\r
-            errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
+        else {\r
+            return "The flow " + flowname + " is not exist.";\r
         }\r
-        return errorInfo;\r
     }\r
 }\r
index cab3e14f3a5446514745ecf07676789ccb71c6a2..bc4af6b535cfee7435e6a05274ac1b8a9fff6095 100644 (file)
@@ -7,14 +7,11 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\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.structurestyle.deleteintent.DeleteNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-\r
-import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/11/6.\r
@@ -29,31 +26,12 @@ public class DeleteNodeLang {
     }\r
 \r
     public String DeleteNodeHandling(UserId userId, String nodename){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user =tenantManage.getUser();\r
-        if (user.getObjects()!=null){\r
-            if (!user.getObjects().getNode().isEmpty()){\r
-                List<Node> nodeList = user.getObjects().getNode();\r
-                Boolean nodeExist = false;\r
-                for (Node node1 : nodeList){\r
-                    if (node1.getNodeName().getValue().equals(nodename)){\r
-                        nodeExist = true;\r
-                        errorInfo = deleteNode.DeleNodeHandling(userId,node1.getNodeId());\r
-                    }\r
-                }\r
-                if (!nodeExist){\r
-                    errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
-                }\r
-            }\r
-            else{\r
-                errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
-            }\r
+        if (tenantManage.getObjectId(userId,nodename)!=null){\r
+            NodeId nodeId = new NodeId(tenantManage.getObjectId(userId,nodename));\r
+            return deleteNode.DeleNodeHandling(userId,nodeId);\r
         }\r
-        else{\r
-            errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
+        else {\r
+            return "The node " + nodename + " is not exist.";\r
         }\r
-\r
-        return errorInfo;\r
     }\r
 }\r
index 028c1c539cd1dfb6206c0bbe8358f7a0432f69b4..8606e54baf04c38f0863e5126b3be515e6fbe58a 100644 (file)
@@ -7,14 +7,11 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\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.structurestyle.deleteintent.DeleteOperation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-\r
-import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/11/6.\r
@@ -29,30 +26,13 @@ public class DeleteOperationLang {
     }\r
 \r
     public String DeleteOperationHandling(UserId userId, String operationname){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        if (user.getOperations()!=null){\r
-            if (!user.getOperations().getOperation().isEmpty()){\r
-                List<Operation> operationList = user.getOperations().getOperation();\r
-                Boolean operationExist = false;\r
-                for (Operation operation : operationList){\r
-                    if (operation.getOperationName().getValue().equals(operationname)){\r
-                        operationExist = true;\r
-                        errorInfo = deleteOperation.DeleteOperationhandling(userId,operation.getOperationId());\r
-                    }\r
-                }\r
-                if (!operationExist) {\r
-                    errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
-                }\r
-            }\r
-            else{\r
-                errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
-            }\r
+        if (tenantManage.getObjectId(userId,operationname)!=null){\r
+            OperationId operationId = new OperationId(tenantManage.getObjectId(userId,operationname));\r
+            return deleteOperation.DeleteOperationhandling(userId,operationId);\r
         }\r
-        else{\r
-            errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
+        else {\r
+            return "The operation " + operationname + " is not exist.";\r
         }\r
-        return errorInfo;\r
     }\r
+\r
 }\r
index 91609f4ee4fc3942ddbc33a0d545f6f1976942c7..ab1d74df66299b2d654216b0c48612802296fe2a 100644 (file)
@@ -7,6 +7,7 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\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.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateConnection;\r
@@ -14,13 +15,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.com
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\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.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.controller.md.sal.binding.api.DataBroker;\r
-\r
 \r
 import java.util.*;\r
 \r
@@ -80,65 +77,46 @@ public class UpdateConnectionLang {
 \r
     private String createConnection(UserId userId, String connectionname, String connectiontype, List<String> endnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
         String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        List<Connection> connectionList = new ArrayList<Connection>();\r
-        List<Node> nodeList = new ArrayList<Node>();\r
-        Boolean ConnExist = false;\r
-\r
-        if (user.getObjects()!=null){\r
-            if (user.getObjects().getNode()!=null){\r
-                nodeList = user.getObjects().getNode();\r
-            }\r
-            if (user.getObjects().getConnection()!=null){\r
-                connectionList = user.getObjects().getConnection();\r
-            }\r
-        }\r
         ConnectionBuilder connectionBuilder = new ConnectionBuilder();\r
-        if (!connectionList.isEmpty()){\r
-            for (Connection connection1:connectionList) {\r
-                if (connection1.getConnectionName().getValue().equals(connectionname)){\r
-                    ConnExist = true;\r
-                    connectionBuilder.setKey(connection1.getKey());\r
-                    connectionBuilder.setConnectionId(connection1.getConnectionId());\r
-                }\r
+        Connection connection1 = null;\r
+        if (tenantManage.getObjectId(userId,connectionname)!=null){\r
+            ConnectionId connectionId = new ConnectionId(tenantManage.getObjectId(userId,connectionname));\r
+            if (tenantManage.getConnection(userId).containsKey(connectionId)){\r
+                connection1 = tenantManage.getConnection(userId).get(connectionId);\r
+            }\r
+            else if (tenantManage.getConnectionDataStore(userId).containsKey(connectionId)){\r
+                connection1 = tenantManage.getConnectionDataStore(userId).get(connectionId);\r
             }\r
         }\r
-        if (!ConnExist){\r
+\r
+        if (connection1==null){\r
             ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString());\r
-            connectionBuilder.setKey(new ConnectionKey(connectionId));\r
-            connectionBuilder.setConnectionId(connectionId);\r
+            connectionBuilder.setKey(new ConnectionKey(connectionId))\r
+                             .setConnectionId(connectionId);\r
+        }\r
+        else {\r
+            connectionBuilder.setKey(connection1.getKey())\r
+                             .setConnectionId(connection1.getConnectionId());\r
         }\r
 \r
-        connectionBuilder.setConnectionName(new ConnectionName(connectionname));\r
-        connectionBuilder.setConnectionType(new ConnectionType(connectiontype));\r
+        connectionBuilder.setConnectionName(new ConnectionName(connectionname))\r
+                         .setConnectionType(new ConnectionType(connectiontype));\r
 \r
-        if (!endnodes.isEmpty() && errorInfo==null){\r
+        if (!endnodes.isEmpty()){\r
             List<EndNode> endNodeList = new ArrayList<EndNode>();\r
-\r
-            if (nodeList.isEmpty()){\r
-                errorInfo = "The EndNode is not exist in the user vn space.";\r
-                return errorInfo;\r
-            }\r
-            else{\r
-                int order = 0;\r
-                for (String endnode : endnodes){\r
-                    Boolean endnodeexist = false;\r
-                    for (Node node : nodeList) {\r
-                        if (node.getNodeName().getValue().equals(endnode)){\r
-                            endnodeexist = true;\r
-                            EndNodeBuilder endNodeBuilder = new EndNodeBuilder();\r
-                            endNodeBuilder.setKey(new EndNodeKey(node.getNodeId()));\r
-                            endNodeBuilder.setNodeId(node.getNodeId());\r
-                            endNodeBuilder.setOrder((long) order);\r
-                            endNodeList.add(endNodeBuilder.build());\r
-                        }\r
-                    }\r
-                    if (!endnodeexist) {\r
-                        errorInfo = "The EndNode is not exist in the user vn space.";\r
-                        return errorInfo;\r
-                    }\r
-                    order ++;\r
+            for (String nodeName : endnodes){\r
+                if (tenantManage.getObjectId(userId,nodeName)!=null){\r
+                    Long order = 0L;\r
+                    NodeId nodeId = new NodeId(tenantManage.getObjectId(userId,nodeName));\r
+                    EndNodeBuilder endNodeBuilder = new EndNodeBuilder();\r
+                    endNodeBuilder.setKey(new EndNodeKey(nodeId))\r
+                                  .setNodeId(nodeId)\r
+                                  .setOrder(order);\r
+                    order++;\r
+                    endNodeList.add(endNodeBuilder.build());\r
+                }\r
+                else {\r
+                    return "The end node " + nodeName + " is not exist.";\r
                 }\r
             }\r
             connectionBuilder.setEndNode(endNodeList);\r
index ec065da18a0888d147ceadbe82422a967231834c..cb55f6765f100911e8b613eb1ef86249e82af3a3 100644 (file)
@@ -15,7 +15,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.com
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;\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.flow.instance.*;\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.match.item.instance.match.item.value.RangeValueBuilder;\r
@@ -69,48 +68,12 @@ public class UpdateFlowLang {
                         return "The property " + propertyValues.get(iterator.next()) + " should be string.";\r
                     }\r
                 }\r
-//                else if (valueType.equals(NEMOConstants.ethaddr)){\r
-//                    if (!iterator.next().equals(NEMOConstants.ethaddr)){\r
-//                        return "The property " + propertyValues.get(iterator.next()) + " should be an legal mac address.";\r
-//                    }\r
-//                }\r
-//                else if (valueType.equals(NEMOConstants.ipv4pref)){\r
-//                    if (!iterator.next().equals(NEMOConstants.ipv4pref)){\r
-//                        return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip prefix.";\r
-//                    }\r
-//                }\r
-//                else if (valueType.equals(NEMOConstants.ipv4addr)){\r
-//                    if (!iterator.next().equals(NEMOConstants.ipv4addr)){\r
-//                        return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip address.";\r
-//                    }\r
-//                }\r
                 else if (valueType.equals(NEMOConstants.integer)){\r
                     if (!iterator.next().equals(NEMOConstants.integer)){\r
                         return "The property " + propertyValues.get(iterator.next()) + " should be int.";\r
                     }\r
                 }\r
             }\r
-\r
-//            if (propertyName.equals(NEMOConstants.src_mac)){\r
-//                if (!valueType.equals(NEMOConstants.ethaddr)){\r
-//                    return "The property " + propertyName +"'s value should be an legal mac address.";\r
-//                }\r
-//            }\r
-//            if (propertyName.equals(NEMOConstants.dst_mac)){\r
-//                if (!valueType.equals(NEMOConstants.ethaddr)){\r
-//                    return "The property " + propertyName +"'s value should be an legal mac address.";\r
-//                }\r
-//            }\r
-//            if (propertyName.equals(NEMOConstants.src_ip)){\r
-//                if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){\r
-//                    return "The property " + propertyName +"'s value should be an legal ip address.";\r
-//                }\r
-//            }\r
-//            if (propertyName.equals(NEMOConstants.dst_ip)){\r
-//                if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){\r
-//                    return "The property " + propertyName +"'s value should be an legal ip address.";\r
-//                }\r
-//            }\r
         }\r
         return errorInfo;\r
     }\r
@@ -118,28 +81,24 @@ public class UpdateFlowLang {
     private String createFlow(UserId userId, String flowname,LinkedHashMap<String,LinkedHashMap<String,String>> flowmatch,LinkedHashMap<String,LinkedHashMap<String,String>> propertyList ){\r
         String errorInfo = null;\r
         FlowBuilder flowBuilder = new FlowBuilder();\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        List<Flow> flowList = new ArrayList<Flow>();\r
-        Boolean FlowExist = false;\r
-        if (user.getObjects()!=null){\r
-            if (user.getObjects().getFlow()!=null){\r
-                flowList = user.getObjects().getFlow();\r
+        Flow flow1 = null;\r
+        if (tenantManage.getObjectId(userId,flowname)!=null){\r
+            FlowId flowId = new FlowId(tenantManage.getObjectId(userId,flowname));\r
+            if (tenantManage.getFlow(userId).containsKey(flowId)){\r
+                flow1 = tenantManage.getFlow(userId).get(flowId);\r
             }\r
-        }\r
-        if (!flowList.isEmpty()){\r
-            for (Flow flow1:flowList){\r
-                if (flow1.getFlowName().getValue().equals(flowname)){\r
-                    FlowExist = true;\r
-                    flowBuilder.setKey(flow1.getKey());\r
-                    flowBuilder.setFlowId(flow1.getFlowId());\r
-                }\r
+            else if (tenantManage.getFlowDataStore(userId).containsKey(flowId)){\r
+                flow1 = tenantManage.getFlowDataStore(userId).get(flowId);\r
             }\r
         }\r
-        if (!FlowExist){\r
+        if (flow1==null){\r
             FlowId flowId = new FlowId(UUID.randomUUID().toString());\r
-            flowBuilder.setKey(new FlowKey(flowId));\r
-            flowBuilder.setFlowId(flowId);\r
+            flowBuilder.setKey(new FlowKey(flowId))\r
+                       .setFlowId(flowId);\r
+        }\r
+        else {\r
+            flowBuilder.setKey(flow1.getKey())\r
+                       .setFlowId(flow1.getFlowId());\r
         }\r
 \r
         flowBuilder.setFlowName(new FlowName(flowname));\r
@@ -152,8 +111,6 @@ public class UpdateFlowLang {
                 LinkedHashMap<String, String> matchvalue = flowmatch.get(matchname);\r
                 MatchItemValueBuilder matchItemValueBuilder = new MatchItemValueBuilder();\r
                 for (String value : matchvalue.keySet()){\r
-//                    if ((matchvalue.get(value).equals(NEMOConstants.string))||matchvalue.get(value).equals(NEMOConstants.ethaddr)\r
-//                            ||matchvalue.get(value).equals(NEMOConstants.ipv4addr)||matchvalue.get(value).equals(NEMOConstants.ipv4pref)){\r
                     if (matchvalue.get(value).equals(NEMOConstants.string)){\r
                         matchItemValueBuilder.setStringValue(value);\r
                     }\r
index 819d7f295f2df7518f3ebfdda0841b1a118bceac..dfa78b0981cd7f8f933cb5615373b6ac547f5c5c 100644 (file)
@@ -10,9 +10,12 @@ package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang
 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.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.GetDefinitions;\r
 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;\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.Node;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
@@ -30,27 +33,67 @@ public class UpdateNodeLang {
     private TenantManage tenantManage;\r
     private UpdateNode updateNode;\r
     private Node node;\r
+    private UpdateTemplateInstanceLang updateTemplateInstanceLang;\r
+    private GetDefinitions getDefinitions;\r
 \r
     public UpdateNodeLang(DataBroker dataBroker, TenantManage tenantManage){\r
         this.tenantManage = tenantManage;\r
         updateNode = new UpdateNode(dataBroker,tenantManage);\r
+        updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker, tenantManage);\r
+        getDefinitions = new GetDefinitions(dataBroker);\r
     }\r
 \r
     public String NodeHandling(UserId userId,String nodename, String nodetype, List<String> subnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
         String errorInfo = null;\r
+\r
         if (nodetype.equals(NEMOConstants.host)&&!subnodes.isEmpty()){\r
-            errorInfo = "the node "+nodename+ " is a " + NEMOConstants.host +", it could not contain other nodes.";\r
-            return errorInfo;\r
+            return  "the node "+nodename+ " is a " + NEMOConstants.host +", it could not contain other nodes.";\r
+        }\r
+\r
+        Boolean nodeModel = false;\r
+        if (tenantManage.getTempalteDefinition(userId)!=null){\r
+            if (tenantManage.getTempalteDefinition(userId).containsKey(new TemplateName(nodetype))){\r
+                nodeModel = true;\r
+            }\r
+        }\r
+        else if (tenantManage.getDefinitionDataStore(userId)!=null){\r
+            if (tenantManage.getDefinitionDataStore(userId).containsKey(new TemplateName(nodetype))){\r
+                nodeModel = true;\r
+            }\r
+        }\r
+        else if (!nodeModel) {\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(new TemplateName(nodetype))) {\r
+                            nodeModel = true;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
         }\r
-        if (!propertyList.isEmpty()){\r
-            errorInfo = checkProperty(propertyList);\r
+\r
+        if (nodeModel){\r
+            if (!subnodes.isEmpty()){\r
+                return "Subnodes should not be included in template instance.";\r
+            }\r
+            else {\r
+                errorInfo = updateTemplateInstanceLang.templateInstanceLang(userId,nodename,nodetype,propertyList);\r
+            }\r
         }\r
-        if (errorInfo==null){\r
-            errorInfo = createNode(userId, nodename, nodetype, subnodes, propertyList);\r
-            if (errorInfo == null){\r
-                return updateNode.NodeHandling(userId,this.node);\r
+        else {\r
+            if (!propertyList.isEmpty()){\r
+                errorInfo = checkProperty(propertyList);\r
+            }\r
+            if (errorInfo==null){\r
+                errorInfo = createNode(userId, nodename, nodetype, subnodes, propertyList);\r
+                if (errorInfo == null){\r
+                    return updateNode.NodeHandling(userId,this.node);\r
+                }\r
             }\r
         }\r
+\r
         return errorInfo;\r
     }\r
 \r
@@ -83,73 +126,65 @@ public class UpdateNodeLang {
 \r
     private String createNode(UserId userId, String nodename, String nodetype, List<String> subnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
         String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user =tenantManage.getUser();\r
-        List<Node> nodeList = new ArrayList<Node>();\r
-        if (user.getObjects()!=null)\r
-        {\r
-            if (user.getObjects().getNode()!=null)\r
-            {\r
-                nodeList = user.getObjects().getNode();\r
+        NodeBuilder nodeBuilder = new NodeBuilder();\r
+        Node node1 = null;\r
+\r
+        if (tenantManage.getObjectId(userId,nodename)!=null){\r
+            NodeId nodeId = new NodeId(tenantManage.getObjectId(userId,nodename));\r
+            if (tenantManage.getNode(userId)!=null){\r
+                node1 = tenantManage.getNode(userId).get(nodeId);\r
+            }\r
+            else if (tenantManage.getNodeDataStore(userId)!=null){\r
+                node1 = tenantManage.getNodeDataStore(userId).get(nodeId);\r
             }\r
         }\r
-        NodeBuilder nodeBuilder = new NodeBuilder();\r
-        Boolean NodeExist = false;\r
-        if (!nodeList.isEmpty())\r
+        if (node1==null)\r
         {\r
-            for (Node node1:nodeList)\r
-            {\r
-                if (node1.getNodeName().getValue().equals(nodename))\r
-                {\r
-                    NodeExist = true;\r
-                    nodeBuilder.setKey(node1.getKey());\r
-                    nodeBuilder.setNodeId(node1.getNodeId());\r
+            if (nodetype.equals(NEMOConstants.host)){\r
+               Map<PhysicalHostName, PhysicalHost> physicalHostMap = getDefinitions.getPhysicalHost();\r
+                if (physicalHostMap.containsKey(new PhysicalHostName(nodename))){\r
+                    PhysicalHostId physicalHostId = physicalHostMap.get(new PhysicalHostName(nodename)).getHostId();\r
+                    nodeBuilder.setKey(new NodeKey(new NodeId(physicalHostId.getValue())))\r
+                               .setNodeId(new NodeId(physicalHostId.getValue()));\r
                 }\r
+                else {\r
+                    return "The host " + nodename + " is not exist in physical network.";\r
+                }\r
+            }\r
+            else {\r
+                NodeId nodeId = new NodeId(UUID.randomUUID().toString());\r
+                nodeBuilder.setKey(new NodeKey(nodeId))\r
+                           .setNodeId(nodeId);\r
             }\r
         }\r
-        if (!NodeExist)\r
-        {\r
-            NodeId nodeId = new NodeId(UUID.randomUUID().toString());\r
-            nodeBuilder.setKey(new NodeKey(nodeId));\r
-            nodeBuilder.setNodeId(nodeId);\r
+        else {\r
+            nodeBuilder.setKey(node1.getKey())\r
+                       .setNodeId(node1.getNodeId());\r
         }\r
 \r
-        nodeBuilder.setNodeName(new NodeName(nodename));\r
-        nodeBuilder.setNodeType(new NodeType(nodetype));\r
+        nodeBuilder.setNodeName(new NodeName(nodename))\r
+                   .setNodeType(new NodeType(nodetype));\r
+\r
+\r
 \r
-        List<SubNode> subNodeList = new ArrayList<SubNode>();\r
-        Boolean subnodeexist = false;\r
-        if (errorInfo==null && !subnodes.isEmpty())\r
+        if (!subnodes.isEmpty())\r
         {\r
-            for (String subnodename : subnodes)\r
+            List<SubNode> subNodeList = new ArrayList<SubNode>();\r
+            for (String subnodeName : subnodes)\r
             {\r
-                int order = 0;\r
-                if (!nodeList.isEmpty())\r
-                {\r
-                    for (Node node : nodeList)\r
-                    {\r
-                        if (node.getNodeName().getValue().equals(subnodename))\r
-                        {\r
-                            subnodeexist = true;\r
-                            SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
-                            subNodeBuilder.setKey(new SubNodeKey(node.getNodeId()));\r
-                            subNodeBuilder.setNodeId(node.getNodeId());\r
-                            subNodeBuilder.setOrder((long)order);\r
-                            subNodeList.add(subNodeBuilder.build());\r
-                        }\r
-                    }\r
-                    if (!subnodeexist)\r
-                    {\r
-                        errorInfo = "The subnode is not exist.";\r
-                        return errorInfo;\r
-                    }\r
+                String nodeId = tenantManage.getObjectId(userId,subnodeName);\r
+                if (nodeId==null) {\r
+                    return "The subnode " +subnodeName+ " is not exist.";\r
                 }\r
-                else\r
-                {\r
-                    errorInfo = "The subnode is not exist.";\r
-                    return errorInfo;\r
+                else {\r
+                    Long order = 0L;\r
+                    SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
+                    subNodeBuilder.setKey(new SubNodeKey(new NodeId(nodeId)))\r
+                                  .setNodeId(new NodeId(nodeId))\r
+                                  .setOrder(order);\r
+                    order ++;\r
+                    subNodeList.add(subNodeBuilder.build());\r
                 }\r
-                order ++;\r
             }\r
             nodeBuilder.setSubNode(subNodeList);\r
         }\r
@@ -172,8 +207,6 @@ public class UpdateNodeLang {
                 int order = 0;\r
                 for (String value : valuetype.keySet())\r
                 {\r
-//                    if ((valuetype.get(value).equals(NEMOConstants.string))||valuetype.get(value).equals(NEMOConstants.ipv4addr)||valuetype.get(value).equals(NEMOConstants.ipv4pref)\r
-//                        ||valuetype.get(value).equals(NEMOConstants.ethaddr))\r
                     if (valuetype.get(value).equals(NEMOConstants.string))\r
                     {\r
                         StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
index 49263100f8644c1390f5a29629d4baa9e8f259f9..9799420f3b38e4fe94ef3f9e64afc3f925474181 100644 (file)
@@ -12,22 +12,11 @@ import org.opendaylight.nemo.user.tenantmanager.TenantManage;
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateOperation;\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.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\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.users.User;\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.action.instance.parameter.values.IntValue;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.*;\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
@@ -36,7 +25,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.ope
 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
 \r
-\r
 import java.util.*;\r
 \r
 /**\r
@@ -67,79 +55,39 @@ public class UpdateOperationLang {
     private String createOperation(UserId userId, String operationname, String target, String priority,\r
                                    LinkedHashMap<String,LinkedHashMap<String,String>> conditions,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
         String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        List<Operation> operationList = new ArrayList<Operation>();\r
-        Boolean OperationExist = false;\r
         Boolean TargetExist = false;\r
         OperationBuilder operationBuilder = new OperationBuilder();\r
 \r
-\r
-        if (user.getOperations()!=null){\r
-            if (user.getOperations().getOperation()!=null){\r
-                operationList = user.getOperations().getOperation();\r
+        Operation operation1 = null;\r
+        if (tenantManage.getObjectId(userId,operationname)!=null){\r
+            OperationId operationId = new OperationId(tenantManage.getObjectId(userId,operationname));\r
+            if (tenantManage.getOperation(userId).containsKey(operationId)){\r
+                operation1 = tenantManage.getOperation(userId).get(operationId);\r
             }\r
-        }\r
-        if (!operationList.isEmpty()){\r
-            for (Operation operation1:operationList){\r
-                if (operation1.getOperationName().getValue().equals(operationname)){\r
-                    OperationExist = true;\r
-                    operationBuilder.setKey(operation1.getKey());\r
-                    operationBuilder.setOperationId(operation1.getOperationId());\r
-                }\r
+            if (tenantManage.getOperationDataStore(userId).containsKey(operationId)){\r
+                operation1 = tenantManage.getOperationDataStore(userId).get(operationId);\r
             }\r
         }\r
-        if (!OperationExist) {\r
+        if (operation1!=null){\r
+            operationBuilder.setKey(operation1.getKey())\r
+                    .setOperationId(operation1.getOperationId());\r
+        }\r
+       else {\r
             OperationId operationId = new OperationId(UUID.randomUUID().toString());\r
             operationBuilder.setKey(new OperationKey(operationId));\r
             operationBuilder.setOperationId(operationId);\r
         }\r
 \r
-        if (user.getObjects()!=null){\r
-            if (user.getObjects().getNode()!=null){\r
-                for(Node node : user.getObjects().getNode()){\r
-                    if (node.getNodeName().getValue().equals(target)){\r
-                        TargetExist = true;\r
-                        operationBuilder.setTargetObject(node.getNodeId());\r
-                    }\r
-                }\r
-            }\r
-            if (user.getObjects().getConnection()!=null){\r
-                for (Connection connection : user.getObjects().getConnection()){\r
-                    if (connection.getConnectionName().getValue().equals(target)){\r
-                        TargetExist = true;\r
-                        operationBuilder.setTargetObject(connection.getConnectionId());\r
-                    }\r
-                }\r
-            }\r
-            if (user.getObjects().getFlow()!=null){\r
-                for (Flow flow: user.getObjects().getFlow()){\r
-                    if (flow.getFlowName().getValue().equals(target)){\r
-                        TargetExist = true;\r
-                        operationBuilder.setTargetObject(flow.getFlowId());\r
-                    }\r
-                }\r
-            }\r
+        if (tenantManage.getObjectId(userId,target)!=null){\r
+            operationBuilder.setTargetObject(new ObjectId(tenantManage.getObjectId(userId,target)));\r
         }\r
-        if (!TargetExist){\r
-            errorInfo = "The target "+target+" is not exist in user vn space.";\r
-            return errorInfo;\r
+        else {\r
+            return "The target " + target + " is not exist.";\r
         }\r
         operationBuilder.setOperationName(new OperationName(operationname));\r
         operationBuilder.setPriority(Long.parseLong(priority));\r
 \r
         if (!conditions.isEmpty() && errorInfo==null){\r
-//            for (String condtionName : conditions.keySet()){\r
-//                if (condtionName.equals(NEMOConstants.time)){\r
-//                    LinkedHashMap<String,String> values = conditions.get(condtionName);\r
-//                    Iterator<String> iterator = values.values().iterator();\r
-//                    while (iterator.hasNext()){\r
-//                        if (!((iterator.next().equals(NEMOConstants.y_m_d))||iterator.next().equals(NEMOConstants.h_m_s))){\r
-//                            return "The target value is not a legal time";\r
-//                        }\r
-//                    }\r
-//                }\r
-//            }\r
             errorInfo = createCondition(conditions);\r
             if (errorInfo==null) {\r
                 operationBuilder.setConditionSegment(conditionSegmentList);\r
@@ -147,7 +95,7 @@ public class UpdateOperationLang {
         }\r
 \r
         if (!actions.isEmpty() && errorInfo ==null){\r
-            errorInfo = createAction(user,actions);\r
+            errorInfo = createAction(userId,actions);\r
             if (errorInfo==null){\r
                 operationBuilder.setAction(actionList);\r
             }\r
@@ -224,14 +172,10 @@ public class UpdateOperationLang {
                     rangeValueBuilder.setMax(Long.valueOf(values[0]));\r
                     rangeValueBuilder.setMin(Long.parseLong(values[1]));\r
                 }\r
-                else if (Long.parseLong(values[0])<Long.parseLong(values[1])){\r
+                else{\r
                     rangeValueBuilder.setMin(Long.parseLong(values[0]));\r
                     rangeValueBuilder.setMax(Long.parseLong(values[1]));\r
                 }\r
-                else {\r
-                    errorInfo = "The value "+values[0]+" and "+values[1]+" should not be equal.";\r
-                    return errorInfo;\r
-                }\r
             }\r
 \r
             conditionSegmentBuilder.setConditionParameterTargetValue(conditionParameterTargetValueBuilder.build());\r
@@ -240,120 +184,88 @@ public class UpdateOperationLang {
         return errorInfo;\r
     }\r
 \r
-    private String createAction(User user,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+    private String createAction(UserId userId,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
         String errorInfo = null;\r
         int order = 0;\r
-        for (String actionname : actions.keySet())\r
-        {\r
+        for (String actionname : actions.keySet()){\r
             ActionBuilder actionBuilder = new ActionBuilder();\r
             actionBuilder.setKey(new ActionKey(new ActionName(actionname)));\r
             actionBuilder.setActionName(new ActionName(actionname));\r
             actionBuilder.setOrder((long) order);\r
 \r
-            ParameterValuesBuilder parameterValuesBuilder = new ParameterValuesBuilder();\r
-            LinkedHashMap<String, String> actionvalues = actions.get(actionname);\r
-            List<IntValue> intValueList = new ArrayList<IntValue>();\r
-            List<StringValue> stringValueList = new ArrayList<StringValue>();\r
-            RangeValue rangeValue = null;\r
+            if (actions.get(actionname)!=null){\r
+                ParameterValuesBuilder parameterValuesBuilder = new ParameterValuesBuilder();\r
+                LinkedHashMap<String, String> actionvalues = actions.get(actionname);\r
+                List<IntValue> intValueList = new ArrayList<IntValue>();\r
+                List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+                RangeValue rangeValue = null;\r
 \r
-            int actionorder = 0;\r
-            for (String actionvalue : actionvalues.keySet())\r
-            {\r
-                if (actionvalues.get(actionvalue).equals(NEMOConstants.string))\r
+                long actionorder = 0L;\r
+                for (String actionvalue : actionvalues.keySet())\r
                 {\r
-                    if (intValueList.isEmpty()&&rangeValue==null) {\r
-                        Boolean ParaExist = false;\r
-                        StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
-                        if (user.getObjects() != null) {\r
-                            if (user.getObjects().getNode() != null) {\r
-                                for (Node node : user.getObjects().getNode()) {\r
-                                    if (node.getNodeName().getValue().equals(actionvalue)) {\r
-                                        ParaExist = true;\r
-                                        stringValueBuilder.setKey(new StringValueKey((long) actionorder, node.getNodeId().getValue()));\r
-                                        stringValueBuilder.setValue(node.getNodeId().getValue());\r
-                                    }\r
-                                }\r
-                            }\r
-                            if (user.getObjects().getConnection() != null) {\r
-                                for (Connection connection : user.getObjects().getConnection()) {\r
-                                    if (connection.getConnectionName().getValue().equals(actionvalue)) {\r
-                                        ParaExist = true;\r
-                                        stringValueBuilder.setKey(new StringValueKey((long) actionorder, connection.getConnectionId().getValue()));\r
-                                        stringValueBuilder.setValue(connection.getConnectionId().getValue());\r
-                                    }\r
-                                }\r
-                            }\r
-                            if (user.getObjects().getFlow() != null) {\r
-                                for (Flow flow : user.getObjects().getFlow()) {\r
-                                    if (flow.getFlowName().getValue().equals(actionvalue)) {\r
-                                        ParaExist = true;\r
-                                        stringValueBuilder.setKey(new StringValueKey((long) actionorder, flow.getFlowId().getValue()));\r
-                                        stringValueBuilder.setValue(flow.getFlowId().getValue());\r
-                                    }\r
-                                }\r
+                    if (actionvalues.get(actionvalue).equals(NEMOConstants.string))\r
+                    {\r
+                        if (intValueList.isEmpty()&&rangeValue==null) {\r
+                            Boolean ParaExist = false;\r
+                            StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                            if (tenantManage.getObjectId(userId,actionvalue)!=null){\r
+                                stringValueBuilder.setKey(new StringValueKey(actionorder,tenantManage.getObjectId(userId,actionvalue)))\r
+                                                  .setOrder(actionorder)\r
+                                                  .setValue(tenantManage.getObjectId(userId,actionvalue));\r
+                                actionorder++;\r
                             }\r
-                            if (!ParaExist){\r
-                                errorInfo = "The parameter object is not exist in user vn space.";\r
+                                stringValueList.add(stringValueBuilder.build());\r
                             }\r
 \r
-                            stringValueBuilder.setOrder((long) actionorder);\r
-                            stringValueList.add(stringValueBuilder.build());\r
-                            actionorder++;\r
-                        }\r
-                    }\r
-\r
-                    else{\r
-                        errorInfo = "The parameter"+actionvalue +" in action should be string";\r
-                        return errorInfo;\r
-                    }\r
-                }\r
-                if (actionvalues.get(actionvalue).equals(NEMOConstants.integer)) {\r
-                    if (stringValueList.isEmpty()&&rangeValue==null){\r
-                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
-                        intValueBuilder.setKey(new IntValueKey((long)actionorder,Long.parseLong(actionvalue)));\r
-                        intValueBuilder.setOrder((long)actionorder);\r
-                        intValueBuilder.setValue(Long.parseLong(actionvalue));\r
-                        intValueList.add(intValueBuilder.build());\r
-                        actionorder ++;\r
                     }\r
-                    else{\r
-                        errorInfo = "The parameter"+actionvalue +" in action should be int";\r
-                        return errorInfo;\r
-                    }\r
-                }\r
-                if (actionvalues.get(actionvalue).equals(NEMOConstants.range)){\r
-                    if (intValueList.isEmpty()&&stringValueList.isEmpty())\r
-                    {\r
-                        String[] rangevalue = new String[2];\r
-                        rangevalue = actionvalue.split(NEMOConstants.comma);\r
-                        RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
-                        if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
-                            rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
-                            rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+                    if (actionvalues.get(actionvalue).equals(NEMOConstants.integer)) {\r
+                        if (stringValueList.isEmpty()&&rangeValue==null){\r
+                            IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                            intValueBuilder.setKey(new IntValueKey((long)actionorder,Long.parseLong(actionvalue)));\r
+                            intValueBuilder.setOrder(actionorder);\r
+                            intValueBuilder.setValue(Long.parseLong(actionvalue));\r
+                            intValueList.add(intValueBuilder.build());\r
+                            actionorder ++;\r
                         }\r
                         else{\r
-                            rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
-                            rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+                            errorInfo = "The parameter"+actionvalue +" in action should be int";\r
+                            return errorInfo;\r
                         }\r
-                        rangeValue = rangeValueBuilder.build();\r
-                        actionorder ++;\r
                     }\r
-                    else{\r
-                        errorInfo = "The parameter"+actionvalue +" in action should be range";\r
-                        return errorInfo;\r
+                    if (actionvalues.get(actionvalue).equals(NEMOConstants.range)){\r
+                        if (intValueList.isEmpty()&&stringValueList.isEmpty())\r
+                        {\r
+                            String[] rangevalue = new String[2];\r
+                            rangevalue = actionvalue.split(NEMOConstants.comma);\r
+                            RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                            if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
+                                rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+                                rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+                            }\r
+                            else{\r
+                                rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+                                rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+                            }\r
+                            rangeValue = rangeValueBuilder.build();\r
+                            actionorder ++;\r
+                        }\r
+                        else{\r
+                            errorInfo = "The parameter"+actionvalue +" in action should be range";\r
+                            return errorInfo;\r
+                        }\r
                     }\r
                 }\r
+                if (intValueList.isEmpty()) {\r
+                    intValueList = null;\r
+                    parameterValuesBuilder.setIntValue(intValueList);\r
+                }\r
+                if (stringValueList.isEmpty()){\r
+                    stringValueList = null;\r
+                    parameterValuesBuilder.setStringValue(stringValueList);\r
+                }\r
+                parameterValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(rangeValue);\r
+                actionBuilder.setParameterValues(parameterValuesBuilder.build());\r
             }\r
-            if (intValueList.isEmpty()) {\r
-                intValueList = null;\r
-                parameterValuesBuilder.setIntValue(intValueList);\r
-            }\r
-            if (stringValueList.isEmpty()){\r
-                stringValueList = null;\r
-                parameterValuesBuilder.setStringValue(stringValueList);\r
-            }\r
-            parameterValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(rangeValue);\r
-            actionBuilder.setParameterValues(parameterValuesBuilder.build());\r
             actionList.add(actionBuilder.build());\r
         }\r
         return errorInfo;\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLang.java
new file mode 100644 (file)
index 0000000..c215547
--- /dev/null
@@ -0,0 +1,527 @@
+/*\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.languagestyle.updateintentlang;\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.nemo.user.vnspacemanager.structurestyle.updateintent.GetDefinitions;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateDefinition;\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.template.definitions.TemplateDefinitionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinitionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNodeKey;\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.*;\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.AbstractIntentsBuilder;\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.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents.AbstractObjectsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents.AbstractOperationsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.objects.*;\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
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperationKey;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/12/7.\r
+ */\r
+public class UpdateTemplateDefinitionLang {\r
+    private UpdateTemplateDefinition definition;\r
+    private Map<NodeName, AbstractNode> abstractNodes;\r
+    private Map<ConnectionName, AbstractConnection> abstractConnections;\r
+    private Map<FlowName, AbstractFlow> abstractFlows;\r
+    private Map<OperationName, AbstractOperation> abstractOperations;\r
+    private GetDefinitions getDefinitions;\r
+\r
+    public UpdateTemplateDefinitionLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        definition = new UpdateTemplateDefinition(dataBroker,tenantManage);\r
+        abstractNodes = new HashMap<NodeName, AbstractNode>();\r
+        abstractConnections = new HashMap<ConnectionName, AbstractConnection>();\r
+        abstractFlows = new HashMap<FlowName, AbstractFlow>();\r
+        abstractOperations = new HashMap<OperationName, AbstractOperation>();\r
+        getDefinitions = new GetDefinitions(dataBroker);\r
+    }\r
+\r
+    public String templateDefinitionLang(UserId userId, String templateName, LinkedHashMap<String, String> parameters){\r
+        TemplateDefinitionBuilder builder = new TemplateDefinitionBuilder();\r
+        builder.setKey(new TemplateDefinitionKey(new TemplateName(templateName)))\r
+                .setTemplateName(new TemplateName(templateName));\r
+\r
+        List<TemplateParameter> templateParameters = new LinkedList<TemplateParameter>();\r
+        for (String value : parameters.keySet()){\r
+            TemplateParameterBuilder parameterBuilder = new TemplateParameterBuilder();\r
+            parameterBuilder.setKey(new TemplateParameterKey(new ParameterName(value)))\r
+                            .setParameterName(new ParameterName(value));\r
+\r
+            if (parameters.get(value).equals(NEMOConstants.string)){\r
+                parameterBuilder.setParameterValueType(TemplateParameter.ParameterValueType.String);\r
+            }\r
+            else if (parameters.get(value).equals(NEMOConstants.integer)){\r
+                parameterBuilder.setParameterValueType(TemplateParameter.ParameterValueType.Int);\r
+            }\r
+            else if (parameters.get(value).equals(NEMOConstants.range)){\r
+                parameterBuilder.setParameterValueType(TemplateParameter.ParameterValueType.Range);\r
+            }\r
+            templateParameters.add(parameterBuilder.build());\r
+        }\r
+        builder.setTemplateParameter(templateParameters);\r
+\r
+        AbstractIntentsBuilder intentsBuilder = new AbstractIntentsBuilder();\r
+        AbstractObjectsBuilder objectsBuilder = new AbstractObjectsBuilder();\r
+        if (!abstractNodes.isEmpty()){\r
+            List<AbstractNode> abstractNodeList = new LinkedList<AbstractNode>();\r
+            for (AbstractNode node : abstractNodes.values()){\r
+                abstractNodeList.add(node);\r
+            }\r
+            objectsBuilder.setAbstractNode(abstractNodeList);\r
+        }else {\r
+            objectsBuilder.setAbstractNode(null);\r
+        }\r
+\r
+        if (!abstractConnections.isEmpty()){\r
+            List<AbstractConnection> abstractConnectionList = new LinkedList<AbstractConnection>();\r
+            for (AbstractConnection connection : abstractConnections.values()){\r
+                abstractConnectionList.add(connection);\r
+            }\r
+            objectsBuilder.setAbstractConnection(abstractConnectionList);\r
+        }else {\r
+            objectsBuilder.setAbstractConnection(null);\r
+        }\r
+\r
+        if (!abstractFlows.isEmpty()){\r
+            List<AbstractFlow> abstractFlowList = new ArrayList<AbstractFlow>();\r
+            for (AbstractFlow flow : abstractFlows.values()){\r
+                abstractFlowList.add(flow);\r
+            }\r
+            objectsBuilder.setAbstractFlow(abstractFlowList);\r
+        }else {\r
+            objectsBuilder.setAbstractFlow(null);\r
+        }\r
+\r
+        AbstractOperationsBuilder operationsBuilder = new AbstractOperationsBuilder();\r
+        if (!abstractOperations.isEmpty()){\r
+            List<AbstractOperation> abstractOperationList = new LinkedList<AbstractOperation>();\r
+            for (AbstractOperation operation : abstractOperations.values()){\r
+                abstractOperationList.add(operation);\r
+            }\r
+            operationsBuilder.setAbstractOperation(abstractOperationList);\r
+        }else {\r
+            operationsBuilder.setAbstractOperation(null);\r
+        }\r
+\r
+        intentsBuilder.setAbstractObjects(objectsBuilder.build())\r
+                      .setAbstractOperations(operationsBuilder.build());\r
+        builder.setAbstractIntents(intentsBuilder.build());\r
+\r
+        return definition.checkTemplateDefinition(userId,builder.build());\r
+    }\r
+\r
+    public String createAbstractNode(String name, String type, List<String> subnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        AbstractNodeBuilder nodeBuilder = new AbstractNodeBuilder();\r
+        NodeId nodeId = null;\r
+        if (type.equals(NEMOConstants.host)){\r
+            Map<PhysicalHostName, PhysicalHost> physicalHostMap = getDefinitions.getPhysicalHost();\r
+            if (physicalHostMap.containsKey(new PhysicalHostName(name))){\r
+                PhysicalHostId physicalHostId = physicalHostMap.get(new PhysicalHostName(name)).getHostId();\r
+                nodeBuilder.setKey(new AbstractNodeKey(new AbstractNodeKey(new NodeId(physicalHostId.getValue()))))\r
+                        .setNodeId(new NodeId(physicalHostId.getValue()));\r
+            }\r
+            else {\r
+                return "The host " + name + " is not exist in physical network.";\r
+            }\r
+        }\r
+        else {\r
+            nodeId = new NodeId(UUID.randomUUID().toString());\r
+        }\r
+\r
+        nodeBuilder.setKey(new AbstractNodeKey(nodeId));\r
+        nodeBuilder.setNodeId(nodeId);\r
+        nodeBuilder.setNodeName(new NodeName(name));\r
+        nodeBuilder.setNodeType(new NodeType(type));\r
+\r
+        if (!subnodes.isEmpty()){\r
+            if (abstractNodes.isEmpty()){\r
+                return "There are no nodes.";\r
+            }\r
+            else {\r
+                List<SubNode> subNodeList = new LinkedList<SubNode>();\r
+                Long order = 0L;\r
+                for (String nodeName : subnodes){\r
+                    if (!abstractNodes.containsKey(new NodeName(nodeName))){\r
+                        return "The subnode " + nodeName + " is not exist.";\r
+                    }\r
+                    else {\r
+                        SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
+                        subNodeBuilder.setKey(new SubNodeKey(abstractNodes.get(new NodeName(nodeName)).getNodeId()))\r
+                                        .setNodeId(abstractNodes.get(new NodeName(nodeName)).getNodeId())\r
+                                        .setOrder(order);\r
+                        order++;\r
+                        subNodeList.add(subNodeBuilder.build());\r
+                    }\r
+                }\r
+                nodeBuilder.setSubNode(subNodeList);\r
+            }\r
+        }\r
+\r
+        if (!propertyList.isEmpty()){\r
+            List<Property> properties = new LinkedList<Property>();\r
+            for (String propertyName : propertyList.keySet()){\r
+                PropertyBuilder builder = new PropertyBuilder();\r
+                builder.setKey(new PropertyKey(new PropertyName(propertyName)))\r
+                        .setPropertyName(new PropertyName(propertyName));\r
+\r
+                Map<String, String> values = propertyList.get(propertyName);\r
+                PropertyValuesBuilder valuesBuilder = new PropertyValuesBuilder();\r
+                List<StringValue> stringValues = new LinkedList<StringValue>();\r
+                List<IntValue> intValues = new LinkedList<IntValue>();\r
+                RangeValue rangeValue = null;\r
+                Long order = 0L;\r
+                for (String value : values.keySet()){\r
+                    if (values.get(value).equals(NEMOConstants.string)){\r
+                        StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                        stringValueBuilder.setKey(new StringValueKey(order,value))\r
+                                          .setOrder(order)\r
+                                          .setValue(value);\r
+                        order ++;\r
+                        stringValues.add(stringValueBuilder.build());\r
+                    }\r
+                    if (values.get(value).equals(NEMOConstants.integer)){\r
+                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                        intValueBuilder.setKey(new IntValueKey(order, Long.parseLong(value)))\r
+                                        .setOrder(order)\r
+                                        .setValue(Long.parseLong(value));\r
+                        order ++;\r
+                        intValues.add(intValueBuilder.build());\r
+                    }\r
+                    if (values.get(value).equals(NEMOConstants.range)){\r
+                        String[] range = value.split(",");\r
+                        RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                        if (Long.parseLong(range[0])<Long.parseLong(range[1])){\r
+                            rangeValueBuilder.setMin(Long.parseLong(range[0]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[1]));\r
+                        }\r
+                        else{\r
+                            rangeValueBuilder.setMin(Long.parseLong(range[1]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[0]));\r
+                        }\r
+                        rangeValue = rangeValueBuilder.build();\r
+                    }\r
+                }\r
+                valuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+                             .setIntValue(intValues.isEmpty()?null:intValues)\r
+                             .setRangeValue(rangeValue);\r
+                builder.setPropertyValues(valuesBuilder.build());\r
+                properties.add(builder.build());\r
+            }\r
+            nodeBuilder.setProperty(properties);\r
+        }\r
+        abstractNodes.put(new NodeName(name),nodeBuilder.build());\r
+        return null;\r
+    }\r
+\r
+    public String createAbstractConnection(String name, String type, List<String> endnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        AbstractConnectionBuilder connectionBuilder = new AbstractConnectionBuilder();\r
+        ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString());\r
+        connectionBuilder.setKey(new AbstractConnectionKey(connectionId))\r
+                         .setConnectionId(connectionId)\r
+                         .setConnectionName(new ConnectionName(name))\r
+                         .setConnectionType(new ConnectionType(type));\r
+\r
+        List<EndNode> endNodeList = new LinkedList<EndNode>();\r
+        if (abstractNodes.isEmpty()){\r
+            return "There are nodes exist.";\r
+        }\r
+        else {\r
+            long order = 0L;\r
+            for (String endNode : endnodes){\r
+                if (!abstractNodes.containsKey(new NodeName(endNode))){\r
+                    return "The endnode " + endNode + " is not exit.";\r
+                }\r
+                else {\r
+                    EndNodeBuilder endNodeBuilder = new EndNodeBuilder();\r
+                    endNodeBuilder.setKey(new EndNodeKey(abstractNodes.get(new NodeName(endNode)).getNodeId()))\r
+                                  .setNodeId(abstractNodes.get(new NodeName(endNode)).getNodeId())\r
+                                  .setOrder(order);\r
+                    order++;\r
+                    endNodeList.add(endNodeBuilder.build());\r
+                }\r
+            }\r
+        }\r
+        connectionBuilder.setEndNode(endNodeList.isEmpty()?null:endNodeList);\r
+\r
+        if (!propertyList.isEmpty()){\r
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> properties = new LinkedList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property>();\r
+            for (String propertyName : propertyList.keySet()){\r
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.PropertyBuilder builder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.PropertyBuilder();\r
+                builder.setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.PropertyKey(new PropertyName(propertyName)))\r
+                        .setPropertyName(new PropertyName(propertyName));\r
+\r
+                Map<String, String> values = propertyList.get(propertyName);\r
+                PropertyValuesBuilder valuesBuilder = new PropertyValuesBuilder();\r
+                List<StringValue> stringValues = new LinkedList<StringValue>();\r
+                List<IntValue> intValues = new LinkedList<IntValue>();\r
+                RangeValue rangeValue = null;\r
+                Long order = 0L;\r
+                for (String value : values.keySet()){\r
+                    if (values.get(value).equals(NEMOConstants.string)){\r
+                        StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                        stringValueBuilder.setKey(new StringValueKey(order,value))\r
+                                .setOrder(order)\r
+                                .setValue(value);\r
+                        order ++;\r
+                        stringValues.add(stringValueBuilder.build());\r
+                    }\r
+                    if (values.get(value).equals(NEMOConstants.integer)){\r
+                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                        intValueBuilder.setKey(new IntValueKey(order, Long.parseLong(value)))\r
+                                .setOrder(order)\r
+                                .setValue(Long.parseLong(value));\r
+                        order ++;\r
+                        intValues.add(intValueBuilder.build());\r
+                    }\r
+                    if (values.get(value).equals(NEMOConstants.range)){\r
+                        String[] range = value.split(",");\r
+                        RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                        if (Long.parseLong(range[0])<Long.parseLong(range[1])){\r
+                            rangeValueBuilder.setMin(Long.parseLong(range[0]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[1]));\r
+                        }\r
+                        else{\r
+                            rangeValueBuilder.setMin(Long.parseLong(range[1]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[0]));\r
+                        }\r
+                        rangeValue = rangeValueBuilder.build();\r
+                    }\r
+                }\r
+                valuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+                        .setIntValue(intValues.isEmpty()?null:intValues)\r
+                        .setRangeValue(rangeValue);\r
+                builder.setPropertyValues(valuesBuilder.build());\r
+                properties.add(builder.build());\r
+            }\r
+            connectionBuilder.setProperty(properties);\r
+        }\r
+        abstractConnections.put(new ConnectionName(name),connectionBuilder.build());\r
+        return null;\r
+    }\r
+\r
+    public String createAbstractFlow(String name,LinkedHashMap<String,LinkedHashMap<String,String>> matches,LinkedHashMap<String,LinkedHashMap<String,String>> propertyList){\r
+        AbstractFlowBuilder flowBuilder = new AbstractFlowBuilder();\r
+        FlowId flowId = new FlowId(UUID.randomUUID().toString());\r
+        flowBuilder.setKey(new AbstractFlowKey(flowId))\r
+                   .setFlowId(flowId)\r
+                   .setFlowName(new FlowName(name));\r
+\r
+        List<MatchItem> matchItemList = new LinkedList<MatchItem>();\r
+        for (String matchName : matches.keySet()){\r
+            MatchItemBuilder matchItemBuilder = new MatchItemBuilder();\r
+            matchItemBuilder.setKey(new MatchItemKey(new MatchItemName(matchName)))\r
+                            .setMatchItemName(new MatchItemName(matchName));\r
+\r
+            MatchItemValueBuilder valueBuilder = new MatchItemValueBuilder();\r
+            Map<String, String> values = matches.get(matchName);\r
+            for (String value : values.keySet()){\r
+                if (values.get(value).equals(NEMOConstants.string)){\r
+                    valueBuilder.setStringValue(value);\r
+                }\r
+                if (values.get(value).equals(NEMOConstants.integer)){\r
+                    valueBuilder.setIntValue(Long.parseLong(value));\r
+                }\r
+                if (values.get(value).equals(NEMOConstants.range)){\r
+                    String[] range = value.split(",");\r
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValueBuilder rangeValueBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValueBuilder();\r
+                    rangeValueBuilder.setMax(Long.parseLong(range[0]) > Long.parseLong(range[1]) ? Long.parseLong(range[0]) : Long.parseLong(range[1]));\r
+                    rangeValueBuilder.setMin(Long.parseLong(range[0])<Long.parseLong(range[1])?Long.parseLong(range[0]):Long.parseLong(range[1]));\r
+                    valueBuilder.setRangeValue(rangeValueBuilder.build());\r
+                }\r
+            }\r
+            matchItemBuilder.setMatchItemValue(valueBuilder.build());\r
+            matchItemList.add(matchItemBuilder.build());\r
+        }\r
+        flowBuilder.setMatchItem(matchItemList);\r
+\r
+        //todo check property\r
+\r
+        abstractFlows.put(new FlowName(name), flowBuilder.build());\r
+        return null;\r
+    }\r
+\r
+    public String createAbstractOperation(String name, String target, String priority, LinkedHashMap<String,LinkedHashMap<String,String>> conditions,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+        AbstractOperationBuilder operationBuilder = new AbstractOperationBuilder();\r
+        OperationId operationId = new OperationId(UUID.randomUUID().toString());\r
+        operationBuilder.setKey(new AbstractOperationKey(operationId))\r
+                        .setOperationId(operationId)\r
+                        .setOperationName(new OperationName(name))\r
+                        .setPriority(Long.parseLong(priority));\r
+        if (abstractNodes.containsKey(new NodeName(target))){\r
+            operationBuilder.setTargetObject(abstractNodes.get(new NodeName(target)).getNodeId());\r
+        }\r
+        else if (abstractConnections.containsKey(new ConnectionName(target))){\r
+            operationBuilder.setTargetObject(abstractConnections.get(new ConnectionName(target)).getConnectionId());\r
+        }\r
+        else if (abstractFlows.containsKey(new FlowName(target))){\r
+            operationBuilder.setTargetObject(abstractFlows.get(new FlowName(target)).getFlowId());\r
+        }\r
+\r
+        if (!conditions.isEmpty()){\r
+            List<ConditionSegment> conditionSegmentList = new LinkedList<ConditionSegment>();\r
+            long order = 0;\r
+            for (String conditionName : conditions.keySet()){\r
+                String[] condition = conditionName.split(NEMOConstants.comma);\r
+                ConditionSegmentBuilder conditionSegmentBuilder = new ConditionSegmentBuilder();\r
+                ConditionSegmentId conditionSegmentId = new ConditionSegmentId(UUID.randomUUID().toString());\r
+                conditionSegmentBuilder.setKey(new ConditionSegmentKey(conditionSegmentId))\r
+                                       .setConditionSegmentId(conditionSegmentId)\r
+                                       .setOrder(order);\r
+                String preRelationOperator = condition[0];\r
+                if (preRelationOperator == null){\r
+                    conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.None);\r
+                }\r
+                else if (preRelationOperator.equals(NEMOConstants.not)){\r
+                    conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Not);\r
+                }\r
+                else if (preRelationOperator.equals(NEMOConstants.and)){\r
+                    conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.And);\r
+                }\r
+                else if (preRelationOperator.equals(NEMOConstants.or)){\r
+                    conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Or);\r
+                }\r
+\r
+                String condtionName = condition[1];\r
+                conditionSegmentBuilder.setConditionParameterName(new ConditionParameterName(condtionName));\r
+\r
+                String matchPattern = condition[2];\r
+                if (matchPattern.equals(NEMOConstants.equal)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Equal);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.not_equal)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotEqual);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.greater_than)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.GreaterThan);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.less_than)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.LessThan);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.not_less_than)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotLessThan);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.not_greater_than)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotGreaterThan);\r
+                }\r
+                else if (matchPattern.equals(NEMOConstants.between)){\r
+                    conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Between);\r
+                }\r
+\r
+                Map<String, String> targetValue = conditions.get(conditionName);\r
+                ConditionParameterTargetValueBuilder valueBuilder = new ConditionParameterTargetValueBuilder();\r
+                for (String value : targetValue.keySet()){\r
+                    if (targetValue.get(value).equals(NEMOConstants.string)){\r
+                        valueBuilder.setStringValue(value);\r
+                    }\r
+                    else if (targetValue.get(value).equals(NEMOConstants.integer)){\r
+                        valueBuilder.setIntValue(Long.parseLong(value));\r
+                    }\r
+                    else if (targetValue.get(value).equals(NEMOConstants.range)){\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.condition.parameter.target.value.RangeValueBuilder rangeValueBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.condition.parameter.target.value.RangeValueBuilder();\r
+                        String[] values = value.split(NEMOConstants.comma);\r
+                        rangeValueBuilder.setMax(Long.parseLong(values[0])>Long.parseLong(values[1])?Long.parseLong(values[0]):Long.parseLong(values[1]))\r
+                                         .setMin(Long.parseLong(values[0])<Long.parseLong(values[1])?Long.parseLong(values[0]):Long.parseLong(values[1]));\r
+                        valueBuilder.setRangeValue(rangeValueBuilder.build());\r
+                    }\r
+                }\r
+                conditionSegmentBuilder.setConditionParameterTargetValue(valueBuilder.build());\r
+                order ++;\r
+                conditionSegmentList.add(conditionSegmentBuilder.build());\r
+            }\r
+            operationBuilder.setConditionSegment(conditionSegmentList);\r
+        }\r
+\r
+        if (!actions.isEmpty()){\r
+            List<Action> actionList = new LinkedList<Action>();\r
+            Long order = 0L;\r
+            for (String actionName : actions.keySet()){\r
+                ActionBuilder actionBuilder = new ActionBuilder();\r
+                actionBuilder.setKey(new ActionKey(new ActionName(actionName)))\r
+                             .setActionName(new ActionName(actionName))\r
+                             .setOrder(order);\r
+\r
+                Map<String, String> parameters = actions.get(actionName);\r
+                if (parameters!=null){\r
+                    ParameterValuesBuilder parameterValuesBuilder = new ParameterValuesBuilder();\r
+                    Long valueOrder = 0L;\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
+\r
+                    for (String value : parameters.keySet()){\r
+                        if (parameters.get(value).equals(NEMOConstants.string)){\r
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder valueBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder();\r
+                            valueBuilder.setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey(valueOrder,value))\r
+                                    .setValue(value)\r
+                                    .setOrder(valueOrder);\r
+                            valueOrder++;\r
+                            stringValues.add(valueBuilder.build());\r
+                        }\r
+                        if (parameters.get(value).equals(NEMOConstants.integer)){\r
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder valueBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder();\r
+                            valueBuilder.setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueKey(order,Long.parseLong(value)))\r
+                                    .setValue(Long.parseLong(value))\r
+                                    .setOrder(valueOrder);\r
+                            valueOrder++;\r
+                            intValues.add(valueBuilder.build());\r
+                        }\r
+                        if (parameters.get(value).equals(NEMOConstants.range)){\r
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder rangeValueBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder();\r
+                            String[] range = value.split(",");\r
+                            valueOrder++;\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[0])>Long.parseLong(range[1])?Long.parseLong(range[0]):Long.parseLong(range[1]));\r
+                        }\r
+                    }\r
+                    if ((!stringValues.isEmpty()&&intValues.isEmpty()&&rangeValue==null)\r
+                            ||(stringValues.isEmpty()&&!intValues.isEmpty()&&rangeValue==null)\r
+                            ||stringValues.isEmpty()&&intValues.isEmpty()&&rangeValue!=null){\r
+                        parameterValuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+                                .setIntValue(intValues.isEmpty()?null:intValues)\r
+                                .setRangeValue(rangeValue);\r
+                        actionBuilder.setParameterValues(parameterValuesBuilder.build());\r
+                    }\r
+                    else {\r
+                        return "The action values are not consistent.";\r
+                    }\r
+                }\r
+                actionList.add(actionBuilder.build());\r
+            }\r
+            operationBuilder.setAction(actionList);\r
+        }\r
+        abstractOperations.put(new OperationName(name),operationBuilder.build());\r
+        return null;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLang.java
new file mode 100644 (file)
index 0000000..a4882f0
--- /dev/null
@@ -0,0 +1,127 @@
+/*\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.languagestyle.updateintentlang;\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.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateInstance;\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.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/12/8.\r
+ */\r
+public class UpdateTemplateInstanceLang {\r
+    private DataBroker dataBroker;\r
+    private TenantManage tenantManage;\r
+    private UpdateTemplateInstance updateTemplateInstance;\r
+    private static final Logger LOG = LoggerFactory.getLogger(UpdateTemplateInstanceLang.class);\r
+\r
+    public UpdateTemplateInstanceLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.dataBroker = dataBroker;\r
+        this.tenantManage = tenantManage;\r
+        updateTemplateInstance = new UpdateTemplateInstance(dataBroker,tenantManage);\r
+    }\r
+\r
+    public String templateInstanceLang(UserId userId, String nodeName, String nodeType, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        Boolean instanceExist = false;\r
+        if (tenantManage.getTemplateInstance(userId)!=null){\r
+            String objectId = tenantManage.getObjectId(userId,nodeName);\r
+            if (tenantManage.getTemplateInstance(userId).containsKey(new TemplateInstanceId(objectId))){\r
+                instanceExist = true;\r
+            }\r
+        }\r
+\r
+        if (!instanceExist){\r
+            TemplateInstanceBuilder instanceBuilder = new TemplateInstanceBuilder();\r
+            TemplateInstanceId templateInstanceId = new TemplateInstanceId(UUID.randomUUID().toString());\r
+            instanceBuilder.setKey(new TemplateInstanceKey(templateInstanceId))\r
+                    .setTemplateInstanceId(templateInstanceId)\r
+                    .setTemplateInstanceName(new TemplateInstanceName(nodeName))\r
+                    .setTemplateName(new TemplateName(nodeType));\r
+\r
+            if (!propertyList.isEmpty()){\r
+                List<TemplateParameter> templateParameterList = new LinkedList<TemplateParameter>();\r
+                for (String parameterName : propertyList.keySet()){\r
+                    TemplateParameterBuilder parameterBuilder = new TemplateParameterBuilder();\r
+                    parameterBuilder.setKey(new TemplateParameterKey(new ParameterName(parameterName)))\r
+                            .setParameterName(new ParameterName(parameterName));\r
+\r
+                    Map<String, String> values = propertyList.get(parameterName);\r
+                    ParameterValuesBuilder valuesBuilder = new ParameterValuesBuilder();\r
+                    List<StringValue> stringValues = new LinkedList<StringValue>();\r
+                    List<IntValue> intValues = new LinkedList<IntValue>();\r
+                    RangeValue rangeValue = null;\r
+                    Long order = 0L;\r
+                    for (String value : values.keySet()){\r
+                        if (values.get(value).equals(NEMOConstants.string)){\r
+                            StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                            stringValueBuilder.setKey(new StringValueKey(order,value))\r
+                                    .setValue(value)\r
+                                    .setOrder(order);\r
+                            order++;\r
+                            stringValues.add(stringValueBuilder.build());\r
+                        }\r
+                        if (values.get(value).equals(NEMOConstants.integer)){\r
+                            IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                            intValueBuilder.setKey(new IntValueKey(order,Long.parseLong(value)))\r
+                                    .setOrder(Long.parseLong(value))\r
+                                    .setOrder(order);\r
+                            order++;\r
+                            intValues.add(intValueBuilder.build());\r
+                        }\r
+                        if (values.get(value).equals(NEMOConstants.range)){\r
+                            RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                            String[] range = value.split(",");\r
+                            rangeValueBuilder.setMax(Long.parseLong(range[0])>Long.parseLong(range[1])?Long.parseLong(range[0]):Long.parseLong(range[1]))\r
+                                    .setMin(Long.parseLong(range[0])<Long.parseLong(range[1])?Long.parseLong(range[0]):Long.parseLong(range[1]));\r
+                            order++;\r
+                            rangeValue = rangeValueBuilder.build();\r
+                        }\r
+                    }\r
+                    if ((!stringValues.isEmpty()&&intValues.isEmpty()&&rangeValue==null)\r
+                            ||(stringValues.isEmpty()&&!intValues.isEmpty()&&rangeValue==null)\r
+                            ||stringValues.isEmpty()&&intValues.isEmpty()&&rangeValue!=null){\r
+                        valuesBuilder.setStringValue(stringValues.isEmpty()?null:stringValues)\r
+                                .setIntValue(intValues.isEmpty()?null:intValues)\r
+                                .setRangeValue(rangeValue);\r
+                        parameterBuilder.setParameterValues(valuesBuilder.build());\r
+                    }else {\r
+                        return "The value types are not consistent.";\r
+                    }\r
+                    templateParameterList.add(parameterBuilder.build());\r
+                }\r
+                instanceBuilder.setTemplateParameter(templateParameterList);\r
+            }\r
+\r
+            String errorInfo = updateTemplateInstance.checkTemplateInstance(userId,instanceBuilder.build());\r
+\r
+            if (errorInfo!=null){\r
+                return errorInfo;\r
+            }\r
+            else {\r
+                tenantManage.setUserTemplateInstance(userId,instanceBuilder.getTemplateInstanceId(),instanceBuilder.build());\r
+            }\r
+        }\r
+        else {\r
+            return "The instance " + nodeName + " has exist.";\r
+        }\r
+        return null;\r
+    }\r
+}\r
index 758b625d499c6a7b39ddac023e0bfdaca83f7002..a397db3fd04b9150abb1ea23ddb28a07b67f6411 100644 (file)
@@ -9,93 +9,61 @@ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
 \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.nemo.common.rev151010.ConnectionId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import java.util.List;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
 \r
 /**\r
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class DeleteConnection {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteConnection.class);\r
 \r
     public DeleteConnection(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
     }\r
 \r
     public String DeleteConnectionHandling(UserId userId, ConnectionId connectionId){\r
-        Boolean ConnInstanceExist = false;\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
+         Boolean connectionExist = false;\r
 \r
-        if (user != null){\r
-            if (user.getObjects() != null){\r
-                if (user.getObjects().getConnection() != null){\r
-                    List<Connection> connectionList = tenantManage.getUser().getObjects().getConnection();\r
+        if (tenantManage.getConnection(userId)!=null){\r
+            if (tenantManage.getConnection(userId).containsKey(connectionId)){\r
+                connectionExist = true;\r
+                tenantManage.getConnection(userId).remove(connectionId);\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connectionId.getValue()));\r
+            }\r
+        }\r
+        if (tenantManage.getConnectionDataStore(userId)!=null){\r
+            if (tenantManage.getConnectionDataStore(userId).containsKey(connectionId)){\r
+                connectionExist = true;\r
+                tenantManage.setUserDeleteIntent(userId, NEMOConstants.connection,connectionId.getValue());\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connectionId.getValue()));\r
+            }\r
+        }\r
 \r
-                    for (Connection connection : connectionList){\r
-                        if (connection.getConnectionId().equals(connectionId)){\r
-                            ConnInstanceExist = true;\r
-                            break;\r
-                        }\r
-                    }\r
-                    if (ConnInstanceExist){\r
-                        DeleteConnInstance(userId, connectionId);\r
-                    }\r
-                    else{\r
-                        errorInfo = "The connection instance "+connectionId.getValue()+ " is not exit. Could not be deleted.";\r
+        if (!connectionExist){\r
+            return "The connection instance "+connectionId.getValue()+ " is not exit.";\r
+        }\r
+        else {\r
+            if (tenantManage.getOperation(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperation(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(connectionId.getValue())){\r
+                        tenantManage.getOperation(userId).remove(operation.getOperationId());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
                     }\r
                 }\r
-                else{\r
-                    errorInfo = "There are no connection instances in data store.";\r
+            }\r
+            if (tenantManage.getOperationDataStore(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperationDataStore(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(connectionId.getValue())){\r
+                        tenantManage.setUserDeleteIntent(userId, NEMOConstants.operation, operation.getOperationId().getValue());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
                 }\r
             }\r
         }\r
-        else{\r
-            errorInfo = "There are no connection instances in data store.";\r
-        }\r
-\r
-        return errorInfo;\r
+        return null;\r
     }\r
 \r
-    private void DeleteConnInstance(UserId userId, ConnectionId connectionId){\r
-        WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-        UserKey userKey = new UserKey(userId);\r
-        ConnectionKey connectionKey = new ConnectionKey(connectionId);\r
-\r
-        InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
-        t.delete(LogicalDatastoreType.CONFIGURATION, connectionid);\r
-        CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-        Futures.addCallback(f, new FutureCallback<Void>() {\r
-            @Override\r
-            public void onFailure(Throwable t) {\r
-                LOG.error("Could not write endpoint base container", t);\r
-            }\r
-\r
-            @Override\r
-            public void onSuccess(Void result) {\r
-            }\r
-        });\r
-    }\r
 }\r
index 84d304f693de4bf59ede62aae68dfc651b6926e5..33651134cfbf49d611dbd4f7f7addc82a447e254 100644 (file)
@@ -9,91 +9,60 @@ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
 \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.nemo.common.rev151010.FlowId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import java.util.List;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
 \r
 /**\r
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class DeleteFlow {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteFlow.class);\r
 \r
     public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
     }\r
 \r
     public String DeleteFlowHandling(UserId userId, FlowId flowId){\r
-        Boolean FlowInsExist = false;\r
-        tenantManage.fetchVNSpace(userId);\r
-        String errorInfo = null;\r
-        User user = tenantManage.getUser();\r
+        Boolean flowExist = false;\r
 \r
-        if (user != null){\r
-            if (user.getObjects() != null){\r
-                if (user.getObjects().getFlow() != null){\r
-                    List<Flow> flowList = tenantManage.getUser().getObjects().getFlow();\r
-                    for (Flow flow : flowList){\r
-                        if (flow.getFlowId().equals(flowId)){\r
-                            FlowInsExist = true;\r
-                            break;\r
-                        }\r
-                    }\r
-                    if (FlowInsExist) {\r
-                        DeleteFlowInstance(userId,flowId);\r
-                    }\r
-                    else{\r
-                        errorInfo = "The flow instance " +flowId.getValue()+" is not exist. Could not be deleted.";\r
-                    }\r
-                }\r
-                else{\r
-                    errorInfo = "There are no flow instances in the data store.";\r
-                }\r
+        if (tenantManage.getFlow(userId)!=null){\r
+            if (tenantManage.getFlow(userId).containsKey(flowId)){\r
+                flowExist = true;\r
+                tenantManage.getFlow(userId).remove(flowId);\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,flowId.getValue()));\r
             }\r
         }\r
-        else{\r
-            errorInfo = "There are no user in the data store.";\r
+        if (tenantManage.getFlowDataStore(userId)!=null){\r
+            if (tenantManage.getFlowDataStore(userId).containsKey(flowId)){\r
+                flowExist = true;\r
+                tenantManage.setUserDeleteIntent(userId, NEMOConstants.flow, flowId.getValue());\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,flowId.getValue()));\r
+            }\r
         }\r
-        return errorInfo;\r
-    }\r
 \r
-    private void DeleteFlowInstance(UserId userId, FlowId flowId){\r
-        WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-        UserKey userKey = new UserKey(userId);\r
-        FlowKey flowKey = new FlowKey(flowId);\r
-\r
-        InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
-        t.delete(LogicalDatastoreType.CONFIGURATION, flowid);\r
-        CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-        Futures.addCallback(f, new FutureCallback<Void>() {\r
-            @Override\r
-            public void onFailure(Throwable t) {\r
-                LOG.error("Could not write endpoint base container", t);\r
+        if (!flowExist){\r
+            return "The flow instance " +flowId.getValue()+" is not exist.";\r
+        }\r
+        else {\r
+            if (tenantManage.getOperation(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperation(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(flowId.getValue())){\r
+                        tenantManage.getOperation(userId).remove(operation.getOperationId());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-\r
-            @Override\r
-            public void onSuccess(Void result) {\r
+            if (tenantManage.getOperationDataStore(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperationDataStore(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(flowId.getValue())){\r
+                        tenantManage.setUserDeleteIntent(userId, NEMOConstants.operation, operation.getOperationId().getValue());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-        });\r
+        }\r
+        return null;\r
     }\r
 }\r
index b924deb9f3f9aabfcf257a85aa7676a2f966804d..d95aad5b3b0a21efe0528363da9689a8ad9c8694 100644 (file)
@@ -7,27 +7,14 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
 \r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\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.nemo.common.rev151010.NodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\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.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
 import java.util.List;\r
 \r
@@ -35,83 +22,74 @@ import java.util.List;
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class DeleteNode {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteNode.class);\r
-    private DeleteConnection deleteConnection;\r
 \r
     public DeleteNode(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
-        deleteConnection = new DeleteConnection(dataBroker, tenantManage);\r
     }\r
 \r
     public String DeleNodeHandling(UserId userId,NodeId nodeId){\r
-        String errorInfo = null;\r
-        Boolean NodeInstanceExist = false;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        if (user != null){\r
-            if (user.getObjects() != null){\r
-                if (user.getObjects().getNode() != null){\r
-                    List<Node> nodeList = tenantManage.getUser().getObjects().getNode();\r
-                    for (Node node : nodeList){\r
-                        if (node.getNodeId().equals(nodeId)){\r
-                            NodeInstanceExist = true;\r
-                            DeleteNodeInstance(userId,nodeId);\r
+        Boolean nodeExist = false;\r
 \r
-                            if (user.getObjects().getConnection()!=null) {\r
-                                Boolean nodeconn = false;\r
-                                List<Connection> connectionList = user.getObjects().getConnection();\r
-                                for (Connection connection : connectionList){\r
-                                    if (connection.getEndNode() != null){\r
-                                        for (EndNode endNode : connection.getEndNode()){\r
-                                            if (endNode.getNodeId().equals(nodeId)){\r
-                                                nodeconn = true;\r
-                                            }\r
-                                        }\r
-                                        if (nodeconn){\r
-                                            errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection.getConnectionId());\r
-                                        }\r
-                                    }\r
-                                }\r
-                            }\r
+        if (tenantManage.getNode(userId)!=null){\r
+            if (tenantManage.getNode(userId).containsKey(nodeId)){\r
+                nodeExist = true;\r
+                tenantManage.getNode(userId).remove(nodeId);\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,nodeId.getValue()));\r
+            }\r
+        }\r
+        if (tenantManage.getNodeDataStore(userId)!=null){\r
+            if (tenantManage.getNodeDataStore(userId).containsKey(nodeId)){\r
+                nodeExist = true;\r
+                tenantManage.setUserDeleteIntent(userId, NEMOConstants.node,nodeId.getValue());\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,nodeId.getValue()));\r
+            }\r
+        }\r
+        if (!nodeExist){\r
+            return "The node instance " +nodeId.getValue()+" is not exist.";\r
+        }\r
+        else {\r
+            if (tenantManage.getConnection(userId)!=null){\r
+                for (Connection connection : tenantManage.getConnection(userId).values()){\r
+                    List<EndNode> endNodeList = connection.getEndNode();\r
+                    for (EndNode endNode :endNodeList){\r
+                        if (endNode.getNodeId().equals(nodeId)){\r
+                            tenantManage.getConnection(userId).remove(connection.getConnectionId());\r
+                            tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connection.getConnectionId().getValue()));\r
+                            break;\r
                         }\r
                     }\r
-                    if (!NodeInstanceExist) {\r
-                        errorInfo = "The node instance " +nodeId.getValue()+" is not exist.Could not be deleted";\r
-                    }\r
                 }\r
-                else{\r
-                    errorInfo = "There are no nodes instances in data store.";\r
+            }\r
+            if (tenantManage.getConnectionDataStore(userId)!=null){\r
+                for (Connection connection : tenantManage.getConnectionDataStore(userId).values()){\r
+                    List<EndNode> endNodeList = connection.getEndNode();\r
+                    for (EndNode endNode :endNodeList){\r
+                        if (endNode.getNodeId().equals(nodeId)){\r
+                            tenantManage.setUserDeleteIntent(userId,NEMOConstants.connection,connection.getConnectionId().getValue());\r
+                            tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,connection.getConnectionId().getValue()));\r
+                            break;\r
+                        }\r
+                    }\r
                 }\r
             }\r
-        }\r
-        else{\r
-            errorInfo = "There are no user in data store.";\r
-        }\r
-\r
-        return errorInfo;\r
-    }\r
-\r
-    private void DeleteNodeInstance(UserId userId,NodeId nodeId){\r
-        WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-        UserKey userKey = new UserKey(userId);\r
-        NodeKey nodeKey = new NodeKey(nodeId);\r
-\r
-        InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
-        t.delete(LogicalDatastoreType.CONFIGURATION, nodeid);\r
-        CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-        Futures.addCallback(f, new FutureCallback<Void>() {\r
-            @Override\r
-            public void onFailure(Throwable t) {\r
-                LOG.error("Could not write endpoint base container", t);\r
+            if (tenantManage.getOperation(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperation(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(nodeId.getValue())){\r
+                        tenantManage.getOperation(userId).remove(operation.getOperationId());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-\r
-            @Override\r
-            public void onSuccess(Void result) {\r
+            if (tenantManage.getOperationDataStore(userId)!=null){\r
+                for (Operation operation : tenantManage.getOperationDataStore(userId).values()){\r
+                    if (operation.getTargetObject().getValue().equals(nodeId.getValue())){\r
+                        tenantManage.setUserDeleteIntent(userId,NEMOConstants.operation,operation.getOperationId().getValue());\r
+                        tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operation.getOperationId().getValue()));\r
+                    }\r
+                }\r
             }\r
-        });\r
+        }\r
+        return null;\r
     }\r
 }\r
index 5d9a0c9aed8bb7225361c45367d0d8b06e74ae51..c3998241034fd66dc5e1bfddbfcfc60fac7ff330 100644 (file)
@@ -9,91 +9,40 @@ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
 \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.nemo.common.rev151010.OperationId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\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.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class DeleteOperation {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private static final Logger LOG = LoggerFactory.getLogger(DeleteOperation.class);\r
 \r
     public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
     }\r
 \r
     public String DeleteOperationhandling(UserId userId, OperationId operationId){\r
-        Boolean OperationExist = false;\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
+        Boolean operationExist = false;\r
 \r
-        if (user != null){\r
-            if (user.getOperations() != null){\r
-                if (user.getOperations().getOperation() != null){\r
-                    List<Operation> operationList = tenantManage.getUser().getOperations().getOperation();\r
-                    for (Operation operation : operationList){\r
-                        if (operation.getOperationId().equals(operationId)){\r
-                            OperationExist = true;\r
-                            break;\r
-                        }\r
-                    }\r
-                    if (OperationExist){\r
-                        DeleteOperationInstance(userId,operationId);\r
-                    }\r
-                    else{\r
-                        errorInfo = "The operation instance " +operationId.getValue()+" is not exist. Could not be deleted.";\r
-                    }\r
-                }\r
-                else{\r
-                    errorInfo = "There are no operation instances in the data store.";\r
-                }\r
+        if (tenantManage.getOperation(userId)!=null){\r
+            if (tenantManage.getOperation(userId).containsKey(operationId)){\r
+                operationExist = true;\r
+                tenantManage.getOperation(userId).remove(operationId);\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operationId.getValue()));\r
             }\r
         }\r
-        else{\r
-            errorInfo = "There are no user in the data store.";\r
-        }\r
-        return errorInfo;\r
-    }\r
-\r
-    private void DeleteOperationInstance(UserId userId, OperationId operationId){\r
-        WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-        UserKey userKey = new UserKey(userId);\r
-        OperationKey operationKey = new OperationKey(operationId);\r
-\r
-        InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
-        t.delete(LogicalDatastoreType.CONFIGURATION, operationid);\r
-        CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-        Futures.addCallback(f, new FutureCallback<Void>() {\r
-            @Override\r
-            public void onFailure(Throwable t) {\r
-                LOG.error("Could not write endpoint base container", t);\r
-            }\r
-\r
-            @Override\r
-            public void onSuccess(Void result) {\r
+        if (tenantManage.getOperationDataStore(userId)!=null){\r
+            if (tenantManage.getOperationDataStore(userId).containsKey(operationId)){\r
+                operationExist = true;\r
+                tenantManage.setUserDeleteIntent(userId, NEMOConstants.operation, operationId.getValue());\r
+                tenantManage.getUserNameIdMap(userId).remove(tenantManage.getName(userId,operationId.getValue()));\r
             }\r
-        });\r
+        }\r
+        if (!operationExist){\r
+            return "The operation instance " +operationId.getValue()+" is not exist.";\r
+        }\r
+        return null;\r
     }\r
 }\r
index 5ec98deb29f147fb21181df1d47b1a8e9184c0d5..5aacc3118c5f488f82298a21dcf9f7fd46af3bf4 100644 (file)
@@ -13,7 +13,11 @@ import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;\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.PhysicalHostName;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
@@ -31,6 +35,7 @@ import org.slf4j.LoggerFactory;
 import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/12/3.\r
@@ -42,6 +47,7 @@ public class GetDefinitions {
     private List<MatchItemDefinition> matchItemDefinitionList = null;\r
     private List<ConditionParameterDefinition> conditionParameterDefinitionList = null;\r
     private List<ActionDefinition> actionDefinitionList = null;\r
+    private List<PhysicalHost> physicalHostList = null;\r
     private static final Logger LOG = LoggerFactory.getLogger(GetDefinitions.class);\r
 \r
     public GetDefinitions(DataBroker dataBroker){\r
@@ -103,6 +109,17 @@ public class GetDefinitions {
         return map;\r
     }\r
 \r
+    public Map<PhysicalHostName, PhysicalHost> getPhysicalHost(){\r
+        fetchPhysicalHosts();\r
+        Map<PhysicalHostName, PhysicalHost> map = new HashMap<PhysicalHostName, PhysicalHost>();\r
+        if (physicalHostList!=null){\r
+            for (PhysicalHost physicalHost : physicalHostList){\r
+                map.put(physicalHost.getHostName(),physicalHost);\r
+            }\r
+        }\r
+        return map;\r
+    }\r
+\r
     private void setNodeDefinitionsList(List<NodeDefinition> nodeDefinitiones){\r
         this.nodeDefinitionList = nodeDefinitiones;\r
     }\r
@@ -123,6 +140,10 @@ public class GetDefinitions {
         this.actionDefinitionList = actionDefinitions;\r
     }\r
 \r
+    private void setPhysicalHosts(List<PhysicalHost> physicalHosts){\r
+        this.physicalHostList = physicalHosts;\r
+    }\r
+\r
     private void fetchNodeDefinitions(){\r
         InstanceIdentifier<NodeDefinitions> nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build();\r
         ListenableFuture<Optional<NodeDefinitions>> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId);\r
@@ -203,6 +224,32 @@ public class GetDefinitions {
                 LOG.error("Can not read condition parameter definition information.", t);\r
             }\r
         });\r
+        try {\r
+            conditionparadefinitionFuture.get();\r
+        } catch (InterruptedException e) {\r
+            // TODO Auto-generated catch block\r
+            e.printStackTrace();\r
+        } catch (ExecutionException e){\r
+            // TODO Auto-generated catch block\r
+            e.printStackTrace();\r
+        }\r
+        return ;\r
+    }\r
+\r
+    private void fetchPhysicalHosts(){\r
+        InstanceIdentifier<PhysicalHosts> physicalHostsInstanceIdentifier = InstanceIdentifier.builder(PhysicalNetwork.class).child(PhysicalHosts.class).build();\r
+        ListenableFuture<Optional<PhysicalHosts>> physicalHostsFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.OPERATIONAL, physicalHostsInstanceIdentifier);\r
+        Futures.addCallback(physicalHostsFuture, new FutureCallback<Optional<PhysicalHosts>>() {\r
+            @Override\r
+            public void onSuccess(Optional<PhysicalHosts> result) {\r
+                setPhysicalHosts(result.get().getPhysicalHost());\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t) {\r
+                LOG.error("Can not read physical hosts information.", t);\r
+            }\r
+        });\r
         return ;\r
     }\r
 }\r
index df43c74d5e7463a33b80c9ac25701d94dad269b1..494e01d45f196d44c006d467823500f5698abb1d 100644 (file)
@@ -7,56 +7,28 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
 \r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import com.google.common.util.concurrent.SettableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
-import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.concurrent.ExecutionException;\r
-import java.util.concurrent.TimeUnit;\r
-import java.util.concurrent.TimeoutException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class UpdateConnection {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
     private GetDefinitions getDefinitions;\r
-    private static final Logger LOG = LoggerFactory.getLogger(UpdateConnection.class);\r
 \r
     public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
         getDefinitions = new GetDefinitions(dataBroker);\r
     }\r
@@ -73,91 +45,61 @@ public class UpdateConnection {
                 return errorInfo;\r
             }\r
             else {\r
-                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-                if (userId != null && connection != null){\r
-                    Connection connection1 = new ConnectionBuilder(connection).build();\r
-                    ConnectionKey connectionKey = new ConnectionKey(connection.getConnectionId());\r
-\r
-                    UserKey userKey = new UserKey(userId);\r
-\r
-                    InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
-                    t.put(LogicalDatastoreType.CONFIGURATION, connectionid, connection1,true);\r
-                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-                    Futures.addCallback(f, new FutureCallback<Void>() {\r
-                        @Override\r
-                        public void onFailure(Throwable t) {\r
-                            LOG.error("Could not write endpoint base container", t);\r
-                        }\r
-\r
-                        @Override\r
-                        public void onSuccess(Void result) {\r
-                        }\r
-                    });\r
-                }\r
+                tenantManage.setConnection(userId,connection.getConnectionId(),connection);\r
             }\r
         }\r
         return errorInfo;\r
     }\r
 \r
     private String checkInstance(UserId userId, Connection connection){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-\r
-        if (user!=null){\r
-            if (user.getObjects()!=null){\r
-                if (user.getObjects().getConnection()!=null){\r
-                    List<Connection> connectionList = tenantManage.getUser().getObjects().getConnection();\r
-\r
-                    for (Connection connection1 : connectionList){\r
-                        if (connection1.getConnectionId().equals(connection.getConnectionId())){\r
-                            if (!connection1.getConnectionType().equals(connection.getConnectionType())){\r
-                                errorInfo = "The connection type should not be changed.";\r
-                                break;\r
-                            }\r
-                            if (!connection1.getConnectionName().equals(connection.getConnectionName())){\r
-                                errorInfo = "The End node should not be changed.";\r
-                                break;\r
-                            }\r
+        if (tenantManage.getConnection(userId)!=null){\r
+            if (tenantManage.getConnection(userId).containsKey(connection.getConnectionId())){\r
+                Connection connExist = tenantManage.getConnection(userId).get(connection.getConnectionId());\r
+                if (!connExist.getConnectionName().equals(connection.getConnectionName())){\r
+                    return "The connection name should not be changed.";\r
+                }\r
+                if (!connExist.getConnectionType().equals(connection.getConnectionType())){\r
+                    return "The connection type should not be changed.";\r
+                }\r
+                if (!connExist.getEndNode().equals(connection.getEndNode())){\r
+                    return "The connection end node should not be changed.";\r
+                }\r
+            }\r
+        }\r
 \r
-                        }\r
-                    }\r
+        if (tenantManage.getConnectionDataStore(userId)!=null){\r
+            if (tenantManage.getConnectionDataStore(userId).containsKey(connection.getConnectionId())){\r
+                Connection connExist = tenantManage.getConnectionDataStore(userId).get(connection.getConnectionId());\r
+                if (!connExist.getConnectionName().equals(connection.getConnectionName())){\r
+                    return "The connection name should not be changed.";\r
+                }\r
+                if (!connExist.getConnectionType().equals(connection.getConnectionType())){\r
+                    return "The connection type should not be changed.";\r
                 }\r
-                if (connection.getEndNode()!=null){\r
-                    if (user.getObjects().getNode()!=null){\r
-                        List<EndNode> endnodeList = connection.getEndNode();\r
-                        List<Node> nodeList = user.getObjects().getNode();\r
-                        Boolean nodeExist = false;\r
+                if (!connExist.getEndNode().equals(connection.getEndNode())){\r
+                    return "The connection end node should not be changed.";\r
+                }\r
+            }\r
+        }\r
 \r
-                        for (EndNode endNode : endnodeList){\r
-                            for (Node node : nodeList){\r
-                                if (endNode.getNodeId().equals(node.getNodeId())){\r
-                                    nodeExist = true;\r
-                                }\r
-                            }\r
-                            if (!nodeExist){\r
-                                errorInfo = "The endnode is not exist in user vn space.";\r
-                            }\r
-                        }\r
-                    }\r
-                    else\r
-                    {\r
-                        errorInfo = "The endnodes are not exist in the user vn space.";\r
-                    }\r
+        List<EndNode> endNodeList = connection.getEndNode();\r
+        for (EndNode endNode : endNodeList){\r
+            Boolean endNodeExist = false;\r
+            if (tenantManage.getNode(userId)!=null){\r
+                if (tenantManage.getNode(userId).containsKey(endNode.getNodeId())){\r
+                    endNodeExist = true;\r
                 }\r
             }\r
-            else {\r
-                if (connection.getEndNode() != null){\r
-                    errorInfo = "There are no nodes in user vn space.";\r
+            if (tenantManage.getNodeDataStore(userId)!=null){\r
+                if (tenantManage.getNodeDataStore(userId).containsKey(endNode.getNodeId())){\r
+                    endNodeExist = true;\r
                 }\r
             }\r
-        }\r
-        else {\r
-            if (connection.getEndNode() != null){\r
-                errorInfo = "There are no nodes in user vn space.";\r
+            if (!endNodeExist){\r
+                return "The endnode "+ endNode.getNodeId().getValue() +" is not exist;";\r
             }\r
         }\r
-        return errorInfo;\r
+        return null;\r
     }\r
 \r
     private String checkDefinition(Connection connection){\r
@@ -176,7 +118,7 @@ public class UpdateConnection {
                 }\r
                 else if (connectionProperties != null && propertyDefinitions != null)\r
                 {\r
-                    errorInfo = CheckProperty(connection.getProperty(), propertyDefinitions);\r
+                    errorInfo = checkProperty(connection.getProperty(), propertyDefinitions);\r
                 }\r
             }\r
             else {\r
@@ -186,7 +128,7 @@ public class UpdateConnection {
         return errorInfo;\r
     }\r
 \r
-    private String CheckProperty(List<Property> connectionProperty, List<PropertyDefinition> propertyDefinitionList ){\r
+    private String checkProperty(List<Property> connectionProperty, List<PropertyDefinition> propertyDefinitionList ){\r
         String errorInfo = null;\r
         for (Property property : connectionProperty)\r
         {\r
index f7d44d8aa6b6fb4e2aa337a30089698c342cc725..9f58eb8c98aebfe79986caa4e2c50e02af6d547f 100644 (file)
@@ -7,56 +7,29 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
 \r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import com.google.common.util.concurrent.SettableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\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.nemo.common.rev151010.MatchItemName;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\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.match.item.definitions.MatchItemDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
-import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.concurrent.ExecutionException;\r
-import java.util.concurrent.TimeUnit;\r
-import java.util.concurrent.TimeoutException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class UpdateFlow {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private GetDefinitions getDefinitions;\r
     private ValueCheck valueCheck;\r
-    private static final Logger LOG = LoggerFactory.getLogger(UpdateFlow.class);\r
+    private GetDefinitions getDefinitions;\r
 \r
     public UpdateFlow(DataBroker dataBroker, TenantManage tenantManage)\r
     {\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
         getDefinitions = new GetDefinitions(dataBroker);\r
         valueCheck = new ValueCheck();\r
@@ -74,51 +47,30 @@ public class UpdateFlow {
                 return errorInfo;\r
             }\r
             else {\r
-                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-                if (userId!=null && flow!=null){\r
-                    Flow flow1 = new FlowBuilder(flow).build();\r
-                    FlowKey flowKey = new FlowKey(flow.getFlowId());\r
-                    UserKey userKey = new UserKey(userId);\r
-\r
-                    InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
-                    t.put(LogicalDatastoreType.CONFIGURATION, flowid, flow1,true);\r
-                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-                    Futures.addCallback(f, new FutureCallback<Void>() {\r
-                        @Override\r
-                        public void onFailure(Throwable t) {\r
-                            LOG.error("Could not write endpoint base container", t);\r
-                        }\r
-\r
-                        @Override\r
-                        public void onSuccess(Void result) {\r
-                        }\r
-                    });\r
-                }\r
+                tenantManage.setFlow(userId,flow.getFlowId(),flow);\r
             }\r
         }\r
         return null;\r
     }\r
 \r
     private String checkInstance(UserId userId, Flow flow){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-        if (user != null){\r
-            if (user.getObjects() != null){\r
-                if (user.getObjects().getFlow() != null){\r
-                    List<Flow> flowList = tenantManage.getUser().getObjects().getFlow();\r
-                    for (Flow flow1 : flowList){\r
-                        if (flow1.getFlowId().equals(flow.getFlowId())){\r
-                            if (!flow1.getFlowName().equals(flow.getFlowName())){\r
-                                errorInfo = "The flow name should not be changed.";\r
-                                break;\r
-                            }\r
-                        }\r
-                    }\r
+        if (tenantManage.getFlow(userId)!=null){\r
+            if (tenantManage.getFlow(userId).containsKey(flow.getFlowId())){\r
+                Flow flowExist = tenantManage.getFlow(userId).get(flow.getFlowId());\r
+                if (!flowExist.getFlowName().equals(flow.getFlowName())){\r
+                    return "The flow name should not be changed.";\r
                 }\r
             }\r
         }\r
-        return errorInfo;\r
+        if (tenantManage.getFlowDataStore(userId)!=null){\r
+            if (tenantManage.getFlowDataStore(userId).containsKey(flow.getFlowId())){\r
+                Flow flowExist = tenantManage.getFlowDataStore(userId).get(flow.getFlowId());\r
+                if (!flowExist.getFlowName().equals(flow.getFlowName())){\r
+                    return "The flow name should not be changed.";\r
+                }\r
+            }\r
+        }\r
+        return null;\r
     }\r
 \r
     private String checkPredefine(List<MatchItem> matchItems){\r
index e1358470cb1bb33b6e5a9638857f28594c2134c8..941b8515ce83013bc586ce6584046d189f4d28f4 100644 (file)
@@ -16,6 +16,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\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
 \r
 import java.util.List;\r
 \r
@@ -23,21 +25,22 @@ import java.util.List;
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class UpdateIntent {\r
-\r
-    private TenantManage tenantManage;\r
     private UpdateNode updateNode;\r
     private UpdateConnection updateConnection;\r
     private UpdateFlow updateFlow;\r
     private UpdateOperation updateOperation;\r
     private UpdateResult updateResult;\r
+    private UpdateTemplateDefinition updateTemplateDefinition;\r
+    private UpdateTemplateInstance updateTemplateInstance;\r
 \r
     public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.tenantManage = tenantManage;\r
         updateNode = new UpdateNode(dataBroker,tenantManage);\r
         updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
         updateFlow = new UpdateFlow(dataBroker,tenantManage);\r
         updateOperation = new UpdateOperation(dataBroker,tenantManage);\r
         updateResult = new UpdateResult(dataBroker,tenantManage);\r
+        updateTemplateDefinition = new UpdateTemplateDefinition(dataBroker,tenantManage);\r
+        updateTemplateInstance = new UpdateTemplateInstance(dataBroker,tenantManage);\r
     }\r
 \r
     public String updateIntent(AAA aaa,StructureStyleNemoUpdateInput structureStyleNemoUpdateInput){\r
@@ -92,7 +95,7 @@ public class UpdateIntent {
                 }\r
             }\r
 \r
-        else if (structureStyleNemoUpdateInput.getResults() != null){\r
+        if (structureStyleNemoUpdateInput.getResults() != null){\r
                 if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null){\r
                     Results results = structureStyleNemoUpdateInput.getResults();\r
                     erroInfo = updateResult.ResultHandling(structureStyleNemoUpdateInput.getUserId(), results);\r
@@ -102,6 +105,30 @@ public class UpdateIntent {
                 }\r
             }\r
         }\r
+\r
+        if (structureStyleNemoUpdateInput.getTemplateDefinitions()!=null){\r
+            if (structureStyleNemoUpdateInput.getTemplateDefinitions().getTemplateDefinition()!=null && erroInfo == null){\r
+                List<TemplateDefinition> templateDefinitionList = structureStyleNemoUpdateInput.getTemplateDefinitions().getTemplateDefinition();\r
+                for (TemplateDefinition templateDefinition : templateDefinitionList ){\r
+                    erroInfo = updateTemplateDefinition.checkTemplateDefinition(structureStyleNemoUpdateInput.getUserId(),templateDefinition);\r
+                    if (erroInfo!=null){\r
+                        break;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+\r
+        if (structureStyleNemoUpdateInput.getTemplateInstances()!=null){\r
+            if (structureStyleNemoUpdateInput.getTemplateInstances().getTemplateInstance()!=null && erroInfo ==null){\r
+                List<TemplateInstance> templateInstanceList = structureStyleNemoUpdateInput.getTemplateInstances().getTemplateInstance();\r
+                for (TemplateInstance templateInstance : templateInstanceList){\r
+                    erroInfo = updateTemplateInstance.checkTemplateInstance(structureStyleNemoUpdateInput.getUserId(),templateInstance);\r
+                    if (erroInfo!=null){\r
+                        break;\r
+                    }\r
+                }\r
+            }\r
+        }\r
      return erroInfo;\r
     }\r
 }\r
index f20484044b386409ee72233da2d79c6b23128abd..d478f75564ab18dc52d0006c9dd7b20bb2e883ec 100644 (file)
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
 \r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import com.google.common.util.concurrent.SettableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\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.nemo.common.rev151010.NodeType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;\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.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\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.property.definitions.PropertyDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;\r
 \r
-import java.util.HashMap;\r
+import java.util.LinkedList;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.concurrent.ExecutionException;\r
-import java.util.concurrent.TimeUnit;\r
-import java.util.concurrent.TimeoutException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class UpdateNode {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
     private GetDefinitions getDefinitions;\r
     private ValueCheck valueCheck;\r
-    private static final Logger LOG = LoggerFactory.getLogger(UpdateNode.class);\r
+    private UpdateTemplateInstance updateTemplateInstance;\r
+    private UpdateTemplateInstanceLang updateTemplateInstanceLang;\r
 \r
     public UpdateNode(DataBroker dataBroker,TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
         getDefinitions = new GetDefinitions(dataBroker);\r
         valueCheck = new ValueCheck();\r
+        updateTemplateInstance = new UpdateTemplateInstance(dataBroker, tenantManage);\r
+        updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker, tenantManage);\r
     }\r
 \r
 \r
     public String NodeHandling(UserId userId,Node node){\r
         String errorInfo = null;\r
-        errorInfo = checkDefinition(node);\r
-        if (errorInfo !=null){\r
-            return errorInfo;\r
+        boolean nodeModel = false;\r
+        if (tenantManage.getTempalteDefinition(userId)!=null){\r
+            if (tenantManage.getTempalteDefinition(userId).containsKey(new TemplateName(node.getNodeType().getValue()))){\r
+                nodeModel = true;\r
+            }\r
         }\r
-        else{\r
-            errorInfo = checkInstance(userId, node);\r
-            if (errorInfo!=null){\r
-                return errorInfo;\r
+        else if (tenantManage.getDefinitionDataStore(userId)!=null){\r
+            if (tenantManage.getDefinitionDataStore(userId).containsKey(new TemplateName(node.getNodeType().getValue()))){\r
+                nodeModel = true;\r
             }\r
-            else {\r
-                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-                if (userId != null && node.getNodeId() !=null){\r
-                    Node node1 = new NodeBuilder(node).build();\r
-                    NodeKey nodeKey = new NodeKey(node.getKey());\r
-                    UserKey userKey = new UserKey(userId);\r
-\r
-                    InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
-                    t.put(LogicalDatastoreType.CONFIGURATION, nodeid, node1,true);\r
-                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-                    Futures.addCallback(f, new FutureCallback<Void>() {\r
-                        @Override\r
-                        public void onFailure(Throwable t) {\r
-                            LOG.error("Could not write endpoint base container", t);\r
+        }\r
+        else if (!nodeModel){\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(new TemplateName(node.getNodeType().getValue()))) {\r
+                            nodeModel = true;\r
                         }\r
+                    }\r
+                }\r
+            }\r
+        }\r
 \r
-                        @Override\r
-                        public void onSuccess(Void result) {\r
+        if (nodeModel){\r
+            if (node.getSubNode()!=null){\r
+                return "Subnodes should not be included in template instance.";\r
+            }\r
+            else {\r
+                TemplateInstanceBuilder builder = new TemplateInstanceBuilder();\r
+                builder.setKey(new TemplateInstanceKey(new TemplateInstanceId(node.getNodeId().getValue())))\r
+                        .setTemplateInstanceId(new TemplateInstanceId(node.getNodeId().getValue()))\r
+                        .setTemplateInstanceName(new TemplateInstanceName(node.getNodeName().getValue()))\r
+                        .setTemplateName(new TemplateName(node.getNodeType().getValue()));\r
+                if (node.getProperty()!=null){\r
+                    List<Property> nodeProeprty = node.getProperty();\r
+                    List<TemplateParameter> parameters = new LinkedList<TemplateParameter>();\r
+                    for (Property property : nodeProeprty){\r
+                        TemplateParameterBuilder parameterBuilder = new TemplateParameterBuilder();\r
+                        parameterBuilder.setKey(new TemplateParameterKey(new ParameterName(property.getPropertyName().getValue())))\r
+                                        .setParameterName(new ParameterName(property.getPropertyName().getValue()));\r
+                        ParameterValuesBuilder valuesBuilder = new ParameterValuesBuilder();\r
+                        List<IntValue> intValueList = new LinkedList<IntValue>();\r
+                        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue> stringValueList\r
+                                = new LinkedList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.StringValue>();\r
+                        RangeValue rangeValue = null;\r
+                        if (property.getPropertyValues().getIntValue()!=null){\r
+                            for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue intValue : property.getPropertyValues().getIntValue()){\r
+                                IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                                intValueBuilder.setKey(new IntValueKey(intValue.getOrder(),intValue.getValue()))\r
+                                                .setOrder(intValue.getOrder())\r
+                                                .setValue(intValue.getValue());\r
+                                intValueList.add(intValueBuilder.build());\r
+                            }\r
+                        }\r
+                        if (property.getPropertyValues().getStringValue()!=null){\r
+                            for (StringValue stringValue : property.getPropertyValues().getStringValue()){\r
+                                StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                                stringValueBuilder.setKey(new StringValueKey(stringValue.getOrder(),stringValue.getValue()))\r
+                                                  .setOrder(stringValue.getOrder())\r
+                                                  .setValue(stringValue.getValue());\r
+                                stringValueList.add(stringValueBuilder.build());\r
+                            }\r
                         }\r
-                    });\r
+                        if (property.getPropertyValues().getRangeValue()!=null){\r
+                            RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                            rangeValueBuilder.setMin(property.getPropertyValues().getRangeValue().getMin())\r
+                                             .setMax(property.getPropertyValues().getRangeValue().getMax());\r
+                            rangeValue = rangeValueBuilder.build();\r
+                        }\r
+                        valuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(rangeValue);\r
+                        parameterBuilder.setParameterValues(valuesBuilder.build());\r
+                        parameters.add(parameterBuilder.build());\r
+                    }\r
+                    builder.setTemplateParameter(parameters);\r
+                }\r
+\r
+                errorInfo = updateTemplateInstance.checkTemplateInstance(userId,builder.build());\r
+            }\r
+        }\r
+        else {\r
+            errorInfo = checkDefinition(node);\r
+            if (errorInfo !=null){\r
+                return errorInfo;\r
+            }\r
+            else{\r
+                errorInfo = checkInstance(userId, node);\r
+                if (errorInfo!=null){\r
+                    return errorInfo;\r
+                }\r
+                else {\r
+                    tenantManage.setNode(userId, node.getNodeId(),node);\r
                 }\r
             }\r
         }\r
@@ -102,35 +151,35 @@ public class UpdateNode {
     }\r
 \r
     private String checkInstance(UserId userId, Node node){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
+        if (tenantManage.getNode(userId)!=null){\r
+            if (tenantManage.getNode(userId).containsKey(node.getNodeId())){\r
+                Node nodeExist = tenantManage.getNode(userId).get(node.getNodeId());\r
+                if (!nodeExist.getNodeName().equals(node.getNodeName())){\r
+                    return  "The node name should not be changed.";\r
+                }\r
+                if (!nodeExist.getNodeType().equals(node.getNodeType())){\r
+                    return "The node type should not be changed.";\r
+                }\r
+            }\r
+        }\r
 \r
-        if (user!=null){\r
-            if (user.getObjects()!=null){\r
-                if (user.getObjects().getNode()!=null){\r
-                    List<Node> nodeList = user.getObjects().getNode();\r
-                    for (Node node1 : nodeList){\r
-                        if (node1.getNodeId().equals(node.getNodeId())){\r
-                            if ( !node1.getNodeName().equals(node.getNodeName())) {\r
-                                errorInfo = "The node name should not be changed.";\r
-                                break;\r
-                            }\r
-                            if  (!node1.getNodeType().equals(node.getNodeType())){\r
-                                errorInfo = "The node type should not be changed.";\r
-                                break;\r
-                            }\r
-                        }\r
-                    }\r
+        if (tenantManage.getNodeDataStore(userId)!=null){\r
+            if (tenantManage.getNodeDataStore(userId).containsKey(node.getNodeId())){\r
+                Node nodeExist = tenantManage.getNodeDataStore(userId).get(node.getNodeId());\r
+                if (!nodeExist.getNodeName().equals(node.getNodeName())){\r
+                    return  "The node name should not be changed.";\r
+                }\r
+                if (!nodeExist.getNodeType().equals(node.getNodeType())){\r
+                    return "The node type should not be changed.";\r
                 }\r
             }\r
         }\r
-        return errorInfo;\r
+        return null;\r
     }\r
 \r
     private String checkDefinition(Node node){\r
         String errorInfo = null;\r
-        final Map<NodeType, NodeDefinition> map = getDefinitions.getNodeDefinition();\r
+        Map<NodeType, NodeDefinition> map = getDefinitions.getNodeDefinition();\r
         if (map.isEmpty()){\r
             return "This type of Node has not been defined.";\r
         }\r
@@ -217,7 +266,7 @@ public class UpdateNode {
                             }\r
                         }\r
                         if (!requiredProperty){\r
-                            errorInfo = "The required property "+ propertyDefinition.getPropertyName().getValue() + "is not included in the intent.";\r
+                            errorInfo = "The required property "+ propertyDefinition.getPropertyName().getValue() + " is not included in the intent.";\r
                             break;\r
                         }\r
                     }\r
index fa6f4ac1bf6624306043dbd058ab260d3f387d2d..0e34225bf5f57c8382c5c1428f804bb8d1590e18 100644 (file)
@@ -7,35 +7,11 @@
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
 \r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.*;\r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import com.google.common.util.concurrent.SettableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\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.nemo.common.rev151010.ActionName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ParameterName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\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.intent.rev151010.user.intent.operations.Operation;\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.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
@@ -43,30 +19,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.ope
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.condition.parameter.definition.ParameterMatchPatterns;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
 \r
-import java.util.HashMap;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.concurrent.ExecutionException;\r
-import java.util.concurrent.TimeUnit;\r
-import java.util.concurrent.TimeoutException;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class UpdateOperation {\r
-\r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
     private GetDefinitions getDefinitions;\r
     private ValueCheck valueCheck;\r
-    private static final Logger LOG = LoggerFactory.getLogger(UpdateOperation.class);\r
 \r
     public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage){\r
-        this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
         getDefinitions = new GetDefinitions(dataBroker);\r
         valueCheck = new ValueCheck();\r
@@ -84,112 +49,83 @@ public class UpdateOperation {
                 return errorInfo;\r
             }\r
             else {\r
-                WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-                if (userId != null && operation.getOperationId() != null)\r
-                {\r
-                    Operation operation1 = new OperationBuilder(operation).build();\r
-                    OperationKey operationKey = new OperationKey(operation.getOperationId());\r
-\r
-                    UserKey userKey = new UserKey(userId);\r
-\r
-                    InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
-                    t.put(LogicalDatastoreType.CONFIGURATION, operationid, operation1,true);\r
-                    CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
-                    Futures.addCallback(f, new FutureCallback<Void>() {\r
-                        @Override\r
-                        public void onFailure(Throwable t) {\r
-                            LOG.error("Could not write endpoint base container", t);\r
-                        }\r
-\r
-                        @Override\r
-                        public void onSuccess(Void result) {\r
-\r
-                        }\r
-                    });\r
-                }\r
+                tenantManage.setOperation(userId,operation.getOperationId(),operation);\r
             }\r
         }\r
         return null;\r
     }\r
 \r
     private String checkInstance(UserId userId, Operation operation){\r
-        String errorInfo = null;\r
-        tenantManage.fetchVNSpace(userId);\r
-        User user = tenantManage.getUser();\r
-\r
         if (operation.getPriority()==null){\r
-            errorInfo = "The priority should not be empty.";\r
+            return  "The priority should not be empty.";\r
         }\r
         if (operation.getTargetObject()==null){\r
-            errorInfo = "The target should not be empty.";\r
+            return  "The target should not be empty.";\r
         }\r
-        if (operation.getTargetObject()!=null){\r
-            if (user!=null){\r
-                if (user.getObjects()!=null){\r
-                    Boolean targetExist = false;\r
-                    if (user.getObjects().getNode()!=null){\r
-                        List<Node> nodeList = user.getObjects().getNode();\r
-                        for (Node node : nodeList){\r
-                            if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){\r
-                                targetExist = true;\r
-                            }\r
-                        }\r
-                    }\r
-                    if (user.getObjects().getConnection()!=null){\r
-                        List<Connection> connectionList = user.getObjects().getConnection();\r
-                        for (Connection connection : connectionList){\r
-                            if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){\r
-                                targetExist = true;\r
-                            }\r
-                        }\r
-                    }\r
-                    if (user.getObjects().getFlow()!=null){\r
-                        List<Flow> flowList = user.getObjects().getFlow();\r
-                        for (Flow flow : flowList){\r
-                            if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){\r
-                                targetExist = true;\r
-                            }\r
-                        }\r
-                    }\r
-                    if (!targetExist){\r
-                        errorInfo = "The target object is not exist.";\r
-                    }\r
+\r
+        if (tenantManage.getOperation(userId)!=null){\r
+            if (tenantManage.getOperation(userId).containsKey(operation.getOperationId())){\r
+                Operation operationExist = tenantManage.getOperation(userId).get(operation.getOperationId());\r
+                if (!operationExist.getOperationName().equals(operation.getOperationName())){\r
+                    return "The operation name should not be changed.";\r
                 }\r
-                else {\r
-                    errorInfo = "The target object is not exist.";\r
+            }\r
+        }\r
+        if (tenantManage.getOperationDataStore(userId)!=null){\r
+            if (tenantManage.getOperationDataStore(userId).containsKey(operation.getOperationId())){\r
+                Operation operationExist = tenantManage.getOperationDataStore(userId).get(operation.getOperationId());\r
+                if (!operationExist.getOperationName().equals(operation.getOperationName())){\r
+                    return "The operation name should not be changed.";\r
                 }\r
             }\r
-            else {\r
-                errorInfo = "The target object is not exist.";\r
+        }\r
+\r
+        Boolean targetExist = false;\r
+        if (tenantManage.getNode(userId)!=null){\r
+            if (tenantManage.getNode(userId).containsKey(new NodeId(operation.getTargetObject()))){\r
+                targetExist = true;\r
             }\r
         }\r
-        if (user!=null){\r
-            if (user.getOperations()!=null){\r
-                if (user.getOperations().getOperation()!=null){\r
-                    List<Operation> operationList = user.getOperations().getOperation();\r
-                    for (Operation operation1 : operationList){\r
-                        if (operation.getOperationId().equals(operation1.getOperationId())){\r
-                            if (!operation.getOperationName().equals(operation1.getOperationName())){\r
-                                errorInfo="The operation name should not be changed.";\r
-                                return errorInfo;\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
+        if (tenantManage.getConnection(userId)!=null){\r
+            if (tenantManage.getConnection(userId).containsKey(new ConnectionId(operation.getTargetObject()))){\r
+                targetExist = true;\r
             }\r
         }\r
-        return errorInfo;\r
+        if (tenantManage.getFlow(userId)!=null){\r
+            if (tenantManage.getFlow(userId).containsKey(new FlowId(operation.getTargetObject()))){\r
+                targetExist = true;\r
+            }\r
+        }\r
+\r
+        if (tenantManage.getNodeDataStore(userId)!=null){\r
+            if (tenantManage.getNodeDataStore(userId).containsKey(new NodeId(operation.getTargetObject()))){\r
+                targetExist = true;\r
+            }\r
+        }\r
+        if (tenantManage.getConnectionDataStore(userId)!=null){\r
+            if (tenantManage.getConnectionDataStore(userId).containsKey(new ConnectionId(operation.getTargetObject()))){\r
+                targetExist = true;\r
+            }\r
+        }\r
+        if (tenantManage.getFlowDataStore(userId)!=null){\r
+            if (tenantManage.getFlowDataStore(userId).containsKey(new FlowId(operation.getTargetObject()))){\r
+                targetExist = true;\r
+            }\r
+        }\r
+\r
+        if (!targetExist){\r
+            return "The target " + operation.getTargetObject().getValue() + " is not exist.";\r
+        }\r
+        return null;\r
     }\r
 \r
     private String checkDefinition(Operation operation){\r
         String errorInfo = null;\r
 \r
-        if (operation.getAction() != null )\r
-        {\r
+        if (operation.getAction() != null ){\r
             errorInfo = checkAction(operation);\r
         }\r
-        if (errorInfo == null && operation.getConditionSegment() != null)\r
-        {\r
+        if (errorInfo == null && operation.getConditionSegment() != null){\r
             errorInfo = checkCondition(operation);\r
         }\r
         return errorInfo;\r
@@ -242,8 +178,9 @@ public class UpdateOperation {
             }\r
             else {\r
                 for (ConditionSegment conditionSegment :operation.getConditionSegment()){\r
-                    if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){\r
-                        ConditionParameterDefinition conditionParameterDefinition = conditionParameterDefinitionMap.get(conditionSegment.getConditionParameterName());\r
+                    if (conditionParameterDefinitionMap.containsKey(new ParameterName(conditionSegment.getConditionParameterName().getValue()))){\r
+//                    if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){\r
+                        ConditionParameterDefinition conditionParameterDefinition = conditionParameterDefinitionMap.get(new ParameterName(conditionSegment.getConditionParameterName().getValue()));\r
 \r
                         if (conditionSegment.getConditionParameterMatchPattern() != null)\r
                         {\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateDefinition.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateDefinition.java
new file mode 100644 (file)
index 0000000..2302d26
--- /dev/null
@@ -0,0 +1,348 @@
+/*\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.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.intent.rev151010.user.intent.template.definitions.TemplateDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\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.match.item.definitions.MatchItemDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\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.property.definitions.PropertyDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\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.parameter.definitions.ConditionParameterDefinition;\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.template.rev151201.template.definition.grouping.AbstractIntents;\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._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.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/12/2.\r
+ */\r
+public class UpdateTemplateDefinition {\r
+    private TenantManage tenantManage;\r
+    private GetDefinitions getDefinitions;\r
+\r
+    public UpdateTemplateDefinition(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        getDefinitions = new GetDefinitions(dataBroker);\r
+    }\r
+\r
+    public String checkTemplateDefinition(UserId userId, TemplateDefinition templateDefinition){\r
+        String errorInfo = null;\r
+        Boolean templateDefined = false;\r
+\r
+        if (tenantManage.getTempalteDefinition(userId)!=null){\r
+            if (tenantManage.getTempalteDefinition(userId).containsKey(templateDefinition.getTemplateName())){\r
+                templateDefined = true;\r
+            }\r
+        }\r
+        if (templateDefined){\r
+            return "The template " + templateDefinition.getTemplateName().getValue() + " has been defined.";\r
+        }\r
+        else {\r
+            List<TemplateParameter> list = templateDefinition.getTemplateParameter();\r
+            HashMap<ParameterName, TemplateParameter.ParameterValueType> map = new HashMap<ParameterName, TemplateParameter.ParameterValueType>();\r
+            for (TemplateParameter templateParameter : list){\r
+                map.put(templateParameter.getParameterName(), templateParameter.getParameterValueType());\r
+            }\r
+            AbstractIntents abstractIntents = templateDefinition.getAbstractIntents();\r
+            if (abstractIntents.getAbstractObjects()!=null){\r
+                if (abstractIntents.getAbstractObjects().getAbstractNode()!=null){\r
+                    List<AbstractNode> nodeList = abstractIntents.getAbstractObjects().getAbstractNode();\r
+                    Map<NodeId,AbstractNode> nodeMap = new HashMap<NodeId, AbstractNode>();\r
+                    for (AbstractNode node : nodeList){\r
+                        nodeMap.put(node.getNodeId(),node);\r
+                    }\r
+                    for (AbstractNode node : nodeMap.values()){\r
+                        if (node.getSubNode()!=null){\r
+                            for (SubNode subNode : node.getSubNode()){\r
+                                if (!nodeMap.containsKey(subNode.getNodeId())){\r
+                                    return "The sub node is not defined.";\r
+                                }\r
+                            }\r
+                        }\r
+                        errorInfo = checkNodeTemplate(node,map);\r
+                        if (errorInfo!=null){\r
+                            return errorInfo;\r
+                        }\r
+                    }\r
+                }\r
+                if (abstractIntents.getAbstractObjects().getAbstractConnection()!=null){\r
+                    List<AbstractConnection> connectionList = abstractIntents.getAbstractObjects().getAbstractConnection();\r
+                    for (AbstractConnection connection : connectionList){\r
+                        List<EndNode> endNodeList = connection.getEndNode();\r
+                        if (abstractIntents.getAbstractObjects().getAbstractNode()!=null){\r
+                            List<AbstractNode> nodeList = abstractIntents.getAbstractObjects().getAbstractNode();\r
+                            Map<NodeId,AbstractNode> nodeMap = new HashMap<NodeId, AbstractNode>();\r
+                            for (AbstractNode node : nodeList){\r
+                                nodeMap.put(node.getNodeId(),node);\r
+                            }\r
+                            for (EndNode endNode : endNodeList){\r
+                                if (!nodeMap.containsKey(endNode.getNodeId())){\r
+                                    return "The end node is not exist.";\r
+                                }\r
+                            }\r
+                        }\r
+                        else {\r
+                            return "There are no end nodes exist.";\r
+                        }\r
+                        errorInfo = checkConnectionTemplate(connection, map);\r
+                        if (errorInfo!=null){\r
+                            return errorInfo;\r
+                        }\r
+                    }\r
+                }\r
+                if (abstractIntents.getAbstractObjects().getAbstractFlow()!=null){\r
+                    List<AbstractFlow> flowList = abstractIntents.getAbstractObjects().getAbstractFlow();\r
+                    for (AbstractFlow flow : flowList){\r
+                        errorInfo = checkFlowTemplate(flow,map);\r
+                        if (errorInfo!=null){\r
+                            return errorInfo;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (abstractIntents.getAbstractOperations()!=null){\r
+                if (abstractIntents.getAbstractOperations().getAbstractOperation()!=null){\r
+                    List<AbstractOperation> operationList = abstractIntents.getAbstractOperations().getAbstractOperation();\r
+                    for (AbstractOperation operation : operationList){\r
+                        ObjectId objectId = operation.getTargetObject();\r
+                        Boolean targetExist = false;\r
+                        if (abstractIntents.getAbstractObjects()!=null){\r
+                            if (abstractIntents.getAbstractObjects().getAbstractNode()!=null) {\r
+                                List<AbstractNode> nodeList = abstractIntents.getAbstractObjects().getAbstractNode();\r
+                                Map<NodeId, AbstractNode> nodeMap = new HashMap<NodeId, AbstractNode>();\r
+                                for (AbstractNode node : nodeList) {\r
+                                    nodeMap.put(node.getNodeId(), node);\r
+                                }\r
+                                if (nodeMap.containsKey(new NodeId(objectId))){\r
+                                    targetExist = true;\r
+                                }\r
+                            }\r
+                            if (abstractIntents.getAbstractObjects().getAbstractConnection()!=null){\r
+                                List<AbstractConnection> connectionList = abstractIntents.getAbstractObjects().getAbstractConnection();\r
+                                Map<ConnectionId, AbstractConnection> connectionMap = new HashMap<ConnectionId, AbstractConnection>();\r
+                                for (AbstractConnection connection : connectionList){\r
+                                    connectionMap.put(connection.getConnectionId(),connection);\r
+                                }\r
+                                if (connectionMap.containsKey(new ConnectionId(objectId))){\r
+                                    targetExist = true;\r
+                                }\r
+                            }\r
+                            if (abstractIntents.getAbstractObjects().getAbstractFlow()!=null) {\r
+                                List<AbstractFlow> flowList = abstractIntents.getAbstractObjects().getAbstractFlow();\r
+                                Map<FlowId, AbstractFlow> flowMap = new HashMap<FlowId, AbstractFlow>();\r
+                                for (AbstractFlow flow : flowList){\r
+                                    flowMap.put(flow.getFlowId(),flow);\r
+                                }\r
+                                if (flowMap.containsKey(new FlowId(objectId))){\r
+                                    targetExist = true;\r
+                                }\r
+                            }\r
+                        }\r
+                        else {\r
+                            return "The target is not exist.";\r
+                        }\r
+\r
+                        if (!targetExist){\r
+                            return "The target is not exist.";\r
+                        }\r
+                        errorInfo = checkOperationTemplate(operation, map);\r
+                        if (errorInfo!=null){\r
+                            return errorInfo;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (errorInfo == null){\r
+                tenantManage.setTemplateDefinition(userId,templateDefinition.getTemplateName(),templateDefinition);\r
+            }\r
+\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkNodeTemplate(AbstractNode node, Map<ParameterName, TemplateParameter.ParameterValueType> parameterValueTypeMap){\r
+        String errorInfo = null;\r
+        Map<NodeType, NodeDefinition> nodeDefinitions = getDefinitions.getNodeDefinition();\r
+        if (nodeDefinitions.containsKey(node.getNodeType())){\r
+            NodeDefinition nodeDefinition = nodeDefinitions.get(node.getNodeType());\r
+            List<PropertyDefinition> propertyDefinitions = nodeDefinition.getPropertyDefinition();\r
+            Map<PropertyName, PropertyDefinition> nodePropertyDefinition = new HashMap<PropertyName, PropertyDefinition>();\r
+            if (propertyDefinitions!=null){\r
+                for (PropertyDefinition propertyDefinition : propertyDefinitions){\r
+                    nodePropertyDefinition.put(propertyDefinition.getPropertyName(),propertyDefinition);\r
+                }\r
+            }\r
+\r
+            if (node.getProperty()!=null){\r
+                for (Property property : node.getProperty()){\r
+                    if (nodePropertyDefinition.containsKey(property.getPropertyName())){\r
+                        PropertyDefinition.PropertyValueType type = nodePropertyDefinition.get(property.getPropertyName()).getPropertyValueType();\r
+                       if (type.getIntValue()==0){\r
+                           List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                           for (StringValue stringValue : stringValues){\r
+                                TemplateParameter.ParameterValueType valueType = parameterValueTypeMap.get(new ParameterName(stringValue.getValue()));\r
+                               if (valueType!=null){\r
+                                   if (type.getIntValue()!= valueType.getIntValue()){\r
+                                       return  "The property " + property.getPropertyName().getValue() + " type is not right.";\r
+                                   }\r
+                               }\r
+                            }\r
+                       }\r
+                    }\r
+                    else {\r
+                        errorInfo = "The property name " + property.getPropertyName().getValue() + " is not defined.";\r
+                        return errorInfo;\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            errorInfo = "The node type " + node.getNodeType().getValue() + " is not defined.";\r
+            return errorInfo;\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkConnectionTemplate(AbstractConnection connection,  Map<ParameterName, TemplateParameter.ParameterValueType> parameterValueTypeMap){\r
+        Map<ConnectionType, ConnectionDefinition> connDefinitions = getDefinitions.getConnectionDefinition();\r
+        if (connDefinitions.containsKey(connection.getConnectionType())){\r
+            ConnectionDefinition connectionDefinition = connDefinitions.get(connection.getConnectionType());\r
+            List<PropertyDefinition> propertyDefinitions = connectionDefinition.getPropertyDefinition();\r
+            Map<PropertyName, PropertyDefinition> connPropertyDefinition = new HashMap<PropertyName, PropertyDefinition>();\r
+            if (propertyDefinitions != null){\r
+                for (PropertyDefinition propertyDefinition : propertyDefinitions){\r
+                    connPropertyDefinition.put(propertyDefinition.getPropertyName(),propertyDefinition);\r
+                }\r
+            }\r
+\r
+            if (connection.getProperty()!=null){\r
+                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : connection.getProperty()){\r
+                    if (connPropertyDefinition.containsKey(property.getPropertyName())){\r
+                        PropertyDefinition.PropertyValueType type = connPropertyDefinition.get(property.getPropertyName()).getPropertyValueType();\r
+                        if (type.getIntValue()==0){\r
+                            List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                            for (StringValue stringValue : stringValues){\r
+                                TemplateParameter.ParameterValueType valueType = parameterValueTypeMap.get(new ParameterName(stringValue.getValue()));\r
+                                if (valueType!=null){\r
+                                    if (type.getIntValue()!= valueType.getIntValue()){\r
+                                        return "The property " + property.getPropertyName().getValue() + " type is not right.";\r
+                                    }\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                    else {\r
+                        return "The property name " + property.getPropertyName().getValue() + " is not defined.";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            return "The connection type " + connection.getConnectionType().getValue() + " is not defined.";\r
+        }\r
+        return null;\r
+    }\r
+\r
+    private String checkFlowTemplate(AbstractFlow flow, Map<ParameterName, TemplateParameter.ParameterValueType> parameterValueTypeMap){\r
+        Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap = getDefinitions.getMatchItemDefinition();\r
+        List<MatchItem> matchItemList = flow.getMatchItem();\r
+        for (MatchItem matchItem : matchItemList){\r
+            if (matchItemDefinitionMap.containsKey(matchItem.getMatchItemName())){\r
+                MatchItemDefinition matchItemDefinition = matchItemDefinitionMap.get(matchItem.getMatchItemName());\r
+                MatchItemDefinition.MatchItemValueType type = matchItemDefinition.getMatchItemValueType();\r
+\r
+                if (type.getIntValue()==0){\r
+                   String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+                    TemplateParameter.ParameterValueType valueType = parameterValueTypeMap.get(new ParameterName(stringValues));\r
+                    if (valueType!=null){\r
+                        if (type.getIntValue() != valueType.getIntValue()){\r
+                            return "The match item " + stringValues+" type is not right.";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            else {\r
+                return "The match item " + matchItem.getMatchItemName().getValue() +" is not defined.";\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+\r
+    private String checkOperationTemplate(AbstractOperation operation, Map<ParameterName, TemplateParameter.ParameterValueType> parameterValueTypeMap){\r
+        Map<ParameterName, ConditionParameterDefinition> conditionParameterDefinitionMap = getDefinitions.getConditionParameterDefinition();\r
+        Map<ActionName, ActionDefinition> actionDefinitionMap = getDefinitions.getActionDefinition();\r
+        List<ConditionSegment> conditionSegmentList = operation.getConditionSegment();\r
+        List<Action> actionList = operation.getAction();\r
+        if (conditionSegmentList!=null){\r
+            for (ConditionSegment conditionSegment : conditionSegmentList){\r
+                if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){\r
+                    if (conditionSegment.getConditionParameterTargetValue()!=null){\r
+                        ConditionParameterDefinition definition = conditionParameterDefinitionMap.get(conditionSegment.getConditionParameterName());\r
+                        ConditionParameterDefinition.ParameterValueType type = definition.getParameterValueType();\r
+\r
+                        if (type.getIntValue()==0){\r
+                            String valuePrameter = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+                            TemplateParameter.ParameterValueType valueType = parameterValueTypeMap.get(new ParameterName(valuePrameter));\r
+                            if (valueType!=null){\r
+                                if (type.getIntValue()!=valueType.getIntValue()){\r
+                                    return "The condition " + conditionSegment.getConditionParameterName().getValue() +" type is not right.";\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+                else {\r
+                    return "The Condition " + conditionSegment.getConditionParameterName().getValue() + " is not defined.";\r
+                }\r
+            }\r
+        }\r
+        if (actionList!=null){\r
+            for (Action action : actionList){\r
+                if (actionDefinitionMap.containsKey(action.getActionName())){\r
+                    if (action.getParameterValues()!=null){\r
+                        ActionDefinition actionDefinition = actionDefinitionMap.get(action.getActionName());\r
+                        ActionDefinition.ParameterValueType type = actionDefinition.getParameterValueType();\r
+\r
+                        if (type.getIntValue()==0){\r
+                            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues = 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 : stringValues){\r
+                                TemplateParameter.ParameterValueType valueType = parameterValueTypeMap.get(new ParameterName(stringValue.getValue()));\r
+                                if (valueType!=null){\r
+                                    if (type.getIntValue()!=valueType.getIntValue()){\r
+                                        return "The action " + action.getActionName().getValue() +" type is not right.";\r
+                                    }\r
+                                }\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+                else {\r
+                    return "The action " + action.getActionName().getValue() + " is not defined.";\r
+                }\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateInstance.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateTemplateInstance.java
new file mode 100644 (file)
index 0000000..3264549
--- /dev/null
@@ -0,0 +1,687 @@
+/*\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&&parameter.getParameterValues().getStringValue()!=null&&parameter.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&&parameter.getParameterValues().getStringValue()==null&&parameter.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&&parameter.getParameterValues().getStringValue()==null&&parameter.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
index faf6f41d9a3cc9bda3a6f6450c24649ade31ede9..60266233e7d9144a13e54bd59810767215595fb5 100644 (file)
@@ -219,7 +219,7 @@ public class NodeMapperTest extends TestCase {
         //get into for circle subnodes\r
         when(subNode.getNodeId()).thenReturn(subnodeId);\r
         when(subNode1.getNodeId()).thenReturn(subnodeId1);\r
-            //power mock\r
+        //power mock\r
         PowerMockito.mockStatic(IntentResolverUtils.class);\r
         PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode.getNodeId())).thenReturn(node1);\r
         PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode1.getNodeId())).thenReturn(node2);\r
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLangTest.java
deleted file mode 100644 (file)
index cc154af..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*\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 user.vnspacemanager.languagestyle.deleteintentlang;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteConnection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\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.common.rev151010.ConnectionName;\r
-\r
-import java.lang.reflect.Field;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-import static org.mockito.Mockito.doNothing;\r
-\r
-/**\r
- * Created by zhangmeng on 2015/12/9.\r
- */\r
-public class DeleteConnectionLangTest extends TestCase {\r
-    private DeleteConnectionLang deleteConnectionLang;\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private DeleteConnection deleteConnection;\r
-    @Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        deleteConnection = mock(DeleteConnection.class);\r
-\r
-        deleteConnectionLang = new DeleteConnectionLang(dataBroker,tenantManage);\r
-    }\r
-\r
-    @Test\r
-    public void testDeleteConnectionHandling() throws Exception {\r
-        String result;\r
-        String connectionname = new String("test");\r
-        Objects objects = mock(Objects.class);\r
-        UserId userId = mock(UserId.class);\r
-        User user = mock(User.class);\r
-        Connection connection = mock(Connection.class);\r
-        ConnectionId connectionId = mock(ConnectionId.class);\r
-        ConnectionName connectionName = mock(ConnectionName.class);\r
-        List<Connection> connections = new ArrayList<Connection>();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(any(UserId.class));\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects())\r
-                .thenReturn(null)//if (user.getObjects()!=null)\r
-                .thenReturn(objects);//get into if\r
-\r
-        result = deleteConnectionLang.DeleteConnectionHandling(userId,connectionname);\r
-        Assert.assertTrue(result.equals("The connection " + connectionname + " is not exist in this user vn space."));\r
-        verify(user).getObjects();\r
-        //test null\r
-        when(objects.getConnection()).thenReturn(connections);\r
-        Assert.assertTrue(connections.isEmpty());\r
-        result = deleteConnectionLang.DeleteConnectionHandling(userId,connectionname);\r
-        Assert.assertTrue(result.equals("The connection " + connectionname + " is not exist in this user vn space."));\r
-        //test not null\r
-        connections.add(connection);\r
-        when(connection.getConnectionName()).thenReturn(connectionName);\r
-        when(connectionName.getValue())\r
-                .thenReturn("")\r
-                .thenReturn(connectionname);\r
-        Assert.assertTrue(!connections.isEmpty());\r
-        result = deleteConnectionLang.DeleteConnectionHandling(userId,connectionname);\r
-        Assert.assertTrue(result.equals("The connection " + connectionname + " is not exist in this user vn space."));\r
-        //test last\r
-        when(connection.getConnectionId()).thenReturn(connectionId);\r
-        Class<DeleteConnectionLang> class1 = DeleteConnectionLang.class;\r
-        Field field = class1.getDeclaredField("deleteConnection");\r
-        field.setAccessible(true);\r
-        field.set(deleteConnectionLang, deleteConnection);\r
-        System.out.println(field.get(deleteConnectionLang));\r
-        when(deleteConnection.DeleteConnectionHandling(any(UserId.class),any(ConnectionId.class))).thenReturn(new String("test"));\r
-        result = deleteConnectionLang.DeleteConnectionHandling(userId,connectionname);\r
-        Assert.assertTrue(result.equals("test"));\r
-        verify(connection).getConnectionId();\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLangTest.java
deleted file mode 100644 (file)
index 4aa5a1b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*\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 user.vnspacemanager.languagestyle.deleteintentlang;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteFlow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
-\r
-import java.lang.reflect.Field;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import junit.framework.TestCase;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang;\r
-import  org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-/**\r
- * Created by zhangmeng on 2015/12/9.\r
- */\r
-public class DeleteFlowLangTest extends TestCase {\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private DeleteFlowLang deleteFlowLang;\r
-    private DeleteFlow deleteFlow;\r
-    @Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        deleteFlow = mock(DeleteFlow.class);\r
-        deleteFlowLang = new DeleteFlowLang(dataBroker,tenantManage);\r
-    }\r
-\r
-    @Test\r
-    public void testDeleteFlowHandling() throws Exception {\r
-        String result;\r
-        String flowname = new String("test");\r
-        UserId userId = mock(UserId.class);\r
-        User user = mock(User.class);\r
-        Objects objects = mock(Objects.class);\r
-        Flow flow = mock(Flow.class);\r
-        FlowId flowId = mock(FlowId.class);\r
-        FlowName flowName = mock(FlowName.class);\r
-        List<Flow> flowList = new ArrayList<Flow>();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(any(UserId.class));\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects())\r
-                .thenReturn(null)//if (user.getObjects()!=null)\r
-                .thenReturn(objects);//get into if\r
-        result = deleteFlowLang.DeleteFlowHandling(userId,flowname);\r
-        Assert.assertTrue(result.equals("The flow " + flowname + " is not exist in this user vn space."));\r
-        when(objects.getFlow()).thenReturn(flowList);\r
-        result = deleteFlowLang.DeleteFlowHandling(userId,flowname);\r
-        Assert.assertTrue(result.equals("The flow " + flowname + " is not exist in this user vn space."));\r
-        Assert.assertTrue(flowList.isEmpty());\r
-        //list not null\r
-        flowList.add(flow);\r
-        when(flow.getFlowName()).thenReturn(flowName);\r
-        when(flowName.getValue())\r
-                .thenReturn("1")\r
-                .thenReturn(flowname);\r
-        result = deleteFlowLang.DeleteFlowHandling(userId,flowname);\r
-        Assert.assertTrue(result.equals("The flow " + flowname + " is not exist in this user vn space."));\r
-        //test last\r
-        when(flow.getFlowId()).thenReturn(flowId);\r
-        Class<DeleteFlowLang> class1 = DeleteFlowLang.class;\r
-        Field field = class1.getDeclaredField("deleteFlow");\r
-        field.setAccessible(true);\r
-        field.set(deleteFlowLang, deleteFlow);\r
-        System.out.println(field.get(deleteFlowLang));\r
-        when(deleteFlow.DeleteFlowHandling(any(UserId.class),any(FlowId.class))).thenReturn(new String("test"));\r
-        result = deleteFlowLang.DeleteFlowHandling(userId,flowname);\r
-        Assert.assertTrue(result.equals("test"));\r
-        verify(flow).getFlowId();\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLangTest.java
deleted file mode 100644 (file)
index 3eefdcf..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*\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
-\r
-package user.vnspacemanager.languagestyle.deleteintentlang;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import static org.junit.Assert.*;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteNode;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\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.common.rev151010.NodeName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import java.lang.reflect.Field;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import static org.mockito.Mockito.*;\r
-/**\r
- * Created by zhangmeng on 2015/12/10.\r
- */\r
-public class DeleteNodeLangTest extends TestCase {\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private DeleteNode deleteNode;\r
-    private DeleteNodeLang deleteNodeLang;\r
-    @Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        deleteNode = mock(DeleteNode.class);\r
-\r
-        deleteNodeLang = new DeleteNodeLang(dataBroker,tenantManage);\r
-    }\r
-\r
-    @Test\r
-    public void testDeleteNodeHandling() throws Exception {\r
-        User user = mock(User.class);\r
-        UserId userId = mock(UserId.class);\r
-        Objects objects = mock(Objects.class);\r
-        Node node = mock(Node.class);\r
-        NodeName nodeName = mock(NodeName.class);\r
-        NodeId nodeId = mock(NodeId.class);\r
-        String nodename = new String("test");\r
-        String result;\r
-        List<Node> nodeList = new ArrayList<Node>();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects())\r
-                .thenReturn(null)\r
-                .thenReturn(objects);\r
-\r
-        result = deleteNodeLang.DeleteNodeHandling(userId,nodename);\r
-        Assert.assertTrue(result.equals("The node " + nodename + " is not exist in this user vn space."));\r
-        verify(user).getObjects();\r
-\r
-        when(objects.getNode()).thenReturn(nodeList);\r
-        Assert.assertTrue(nodeList.isEmpty());\r
-        result = deleteNodeLang.DeleteNodeHandling(userId,nodename);\r
-        Assert.assertTrue(result.equals("The node " + nodename + " is not exist in this user vn space."));\r
-\r
-        nodeList.add(node);\r
-        when(node.getNodeName()).thenReturn(nodeName);\r
-        when(nodeName.getValue())\r
-                .thenReturn("")\r
-                .thenReturn(nodename);\r
-        Assert.assertTrue(!nodeList.isEmpty());\r
-        result = deleteNodeLang.DeleteNodeHandling(userId,nodename);\r
-        Assert.assertTrue(result.equals("The node " + nodename + " is not exist in this user vn space."));\r
-\r
-        Class<DeleteNodeLang> class1 = DeleteNodeLang.class;\r
-        Field field = class1.getDeclaredField("deleteNode");\r
-        field.setAccessible(true);\r
-        field.set(deleteNodeLang, deleteNode);\r
-        System.out.println(field.get(deleteNodeLang));\r
-        when(node.getNodeId()).thenReturn(nodeId);\r
-        when(deleteNode.DeleNodeHandling(any(UserId.class), any(NodeId.class))).thenReturn(new String("test"));\r
-        result = deleteNodeLang.DeleteNodeHandling(userId,nodename);\r
-        Assert.assertTrue(result.equals("test"));\r
-        verify(node).getNodeId();\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLangTest.java
deleted file mode 100644 (file)
index 922b2ec..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*\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 user.vnspacemanager.languagestyle.deleteintentlang;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import static org.junit.Assert.*;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteOperation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\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;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
-import java.lang.reflect.Field;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import static org.mockito.Mockito.*;\r
-/**\r
- * Created by zhangmeng on 2015/12/10.\r
- */\r
-public class DeleteOperationLangTest extends TestCase {\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private DeleteOperationLang deleteOperationLang;\r
-    private DeleteOperation deleteOperation;\r
-\r
-    @Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        deleteOperation = mock(DeleteOperation.class);\r
-\r
-        deleteOperationLang = new DeleteOperationLang(dataBroker,tenantManage);\r
-    }\r
-\r
-    @Test\r
-    public void testDeleteOperationHandling() throws Exception {\r
-        UserId userId = mock(UserId.class);\r
-        User user = mock(User.class);\r
-        OperationName operationName = mock(OperationName.class);\r
-        Operation operation = mock(Operation.class);\r
-        Operations operations = mock(Operations.class);\r
-        OperationId operationId = mock(OperationId.class);\r
-        List<Operation> operationList = new ArrayList<Operation>();\r
-        String operationname = new String("test");\r
-        String result;\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getOperations())\r
-                .thenReturn(null)\r
-                .thenReturn(operations);\r
-\r
-        result = deleteOperationLang.DeleteOperationHandling(userId,operationname);\r
-        Assert.assertTrue(result.equals("The operation " + operationname + " is not exist in this user vn space."));\r
-\r
-        when(operations.getOperation()).thenReturn(operationList);\r
-        result = deleteOperationLang.DeleteOperationHandling(userId,operationname);\r
-        Assert.assertTrue(operationList.isEmpty());\r
-        Assert.assertTrue(result.equals("The operation " + operationname + " is not exist in this user vn space."));\r
-\r
-        operationList.add(operation);\r
-        when(operation.getOperationName()).thenReturn(operationName);\r
-        when(operationName.getValue())\r
-                .thenReturn("")\r
-                .thenReturn(operationname);\r
-        result = deleteOperationLang.DeleteOperationHandling(userId,operationname);\r
-        Assert.assertTrue(result.equals("The operation " + operationname + " is not exist in this user vn space."));\r
-\r
-        Class<DeleteOperationLang> class1 = DeleteOperationLang.class;\r
-        Field field = class1.getDeclaredField("deleteOperation");\r
-        field.setAccessible(true);\r
-        field.set(deleteOperationLang, deleteOperation);\r
-        System.out.println(field.get(deleteOperationLang));\r
-        when(operation.getOperationId()).thenReturn(operationId);\r
-        when(deleteOperation.DeleteOperationhandling(any(UserId.class), any(OperationId.class))).thenReturn(operationname);\r
-        result = deleteOperationLang.DeleteOperationHandling(userId,operationname);\r
-        Assert.assertTrue(result.equals(operationname));\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java
deleted file mode 100644 (file)
index c8ef1a2..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;
-import static org.mockito.Mockito.mock;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.*;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import static org.mockito.Mockito.*;
-public class  DeleteConnectionTest{
-           private DataBroker dataBroker;
-        private TenantManage tenantManage;
-        private DeleteConnection deleteconnection;
-        private UserId userId;
-        private ConnectionId connectionID;
-               private User user;
-               private Objects objects;
-               private Connection connection;
-               private List<Connection> connectionList;
-               private ConnectionId NotconnectionID;
-               private  ConnectionId connectionID2;
-               private   WriteTransaction  writetransaction;
-@org.junit.Before
-public void setUp() throws Exception {
-           dataBroker=mock(DataBroker.class);
-               tenantManage=mock(TenantManage.class);
-        deleteconnection=mock(DeleteConnection.class);
-        userId=mock(UserId.class);
-        connectionID=mock(ConnectionId.class);
-               NotconnectionID=mock(ConnectionId.class);
-               connectionID2=connectionID;
-               user=mock(User.class);
-               objects=mock(Objects.class);
-               connection=mock(Connection.class);
-               connectionList=new ArrayList<Connection>(3);
-               connectionList.add(connection);
-               deleteconnection=new DeleteConnection(dataBroker,tenantManage);
-               writetransaction=mock(WriteTransaction.class);
-        }
-@org.junit.Test
-public void DeleteConnectionHandlingTest() throws Exception{
-       //no data test
-          CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
-       ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-          when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-         
-          when(tenantManage.getUser()).thenReturn(null);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"There are no connection instances in data store.");
-          //data exists and other branches
-          // branch 1
-          when (tenantManage.getUser()).thenReturn(user);
-          when(user.getObjects()).thenReturn(null);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),null);
-          //branch 2
-          when(tenantManage.getUser()).thenReturn(user);
-          when(user.getObjects()).thenReturn(objects);
-          when(user.getObjects().getConnection()).thenReturn(null);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"There are no connection instances in data store.");
-       //branch 3
-          when(tenantManage.getUser()).thenReturn(user);
-          when(user.getObjects()).thenReturn(objects);
-          when(objects.getConnection()).thenReturn(connectionList);
-          when(connection.getConnectionId()).thenReturn(NotconnectionID);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"The connection instance " +connectionID.getValue()+" is not exit. Could not be deleted.");
-       //branch 4
-          when(tenantManage.getUser()).thenReturn(user);
-          when(user.getObjects()).thenReturn(objects);
-          when(objects.getConnection()).thenReturn(connectionList);
-          when(connection.getConnectionId()).thenReturn(connectionID);
-          when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
-          CheckedFuture<Void, TransactionCommitFailedException> f;
-          f=mock(CheckedFuture.class);
-          when(writetransaction.submit()).thenReturn(f);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),null);
-       //-------
-               Assert.assertNotNull(deleteconnection);
-               Assert.assertNotNull(tenantManage);
-        //Assert.assertNull(deleteconnection.DeleteConnectionHandling(userId,connectionID));
-        }
-        }
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java
deleted file mode 100644 (file)
index c30c868..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;
-import static org.mockito.Mockito.mock;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.util.*;
-import java.util.List;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-public class DeleteFlowTest{
-       private DataBroker dataBroker;
-    private TenantManage tenantManage;
-       private DeleteFlow deleteflow;
-       private UserId userId;
-    private    FlowId flowId;
-       private Objects objects;
-       private User  user;
-       private List<Flow> flowlist;
-       private Flow flow;
-       private FlowId notflowId;
-       private   WriteTransaction  writetransaction;
-       @org.junit.Before
-       public void setUp() throws Exception {
-               dataBroker=mock(DataBroker.class);
-               tenantManage=mock(TenantManage.class);
-               deleteflow=new DeleteFlow(dataBroker,tenantManage);
-               userId=mock(UserId.class);
-               flowId=mock(FlowId.class);
-               objects=mock(Objects.class);
-               user=mock(User.class);
-               flow=mock(Flow.class);
-               notflowId=mock(FlowId.class);
-               flowlist=new ArrayList<Flow>(1);
-               flowlist.add(flow);
-               writetransaction=mock(WriteTransaction.class);
-       }
-       @org.junit.Test
-       public void  DeleteFlowHandlingTest() throws Exception{
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
-     ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-
-     //no data test
-        when(tenantManage.getUser()).thenReturn(null);
-        Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"There are no user in the data store.");
-        //data exists and other branches
-        //branch 1
-       when(tenantManage.getUser()).thenReturn(user);
-       when(user.getObjects()).thenReturn(null);
-       Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),null);
-       //branch 2
-       when(tenantManage.getUser()).thenReturn(user);
-       when(user.getObjects()).thenReturn(objects);
-       when(user.getObjects().getFlow()).thenReturn(null);
-       Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"There are no flow instances in the data store.");
-       //branch 3
-       when(tenantManage.getUser()).thenReturn(user);
-       when(user.getObjects()).thenReturn(objects);
-       when(user.getObjects().getFlow()).thenReturn(flowlist);
-       when(flow.getFlowId()).thenReturn(notflowId);
-       Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"The flow instance " +flowId.getValue()+" is not exist. Could not be deleted.");
-       //branch 4
-       when(tenantManage.getUser()).thenReturn(user);
-       when(user.getObjects()).thenReturn(objects);
-       when(user.getObjects().getFlow()).thenReturn(flowlist);
-       when(flow.getFlowId()).thenReturn(flowId);
-       when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
-       CheckedFuture<Void, TransactionCommitFailedException> f;
-       f=mock(CheckedFuture.class);
-       when(writetransaction.submit()).thenReturn(f);
-       Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),null);
-       }
-}
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java
deleted file mode 100644 (file)
index e792b51..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-/*\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.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.AAA;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoDeleteInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.Results;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import java.util.*;\r
-import java.util.List;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserPassword;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-public class DeleteIntentTest{\r
-       private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private DeleteNode deleteNode;\r
-    private DeleteConnection deleteConnection;\r
-    private DeleteFlow deleteFlow;\r
-    private DeleteOperation deleteOperation;\r
-    private DeleteResult deleteResult;\r
-       private AAA aaa;\r
-       private Objects objects;\r
-       private StructureStyleNemoDeleteInput styleNemoDeleteInput;\r
-       private DeleteIntent deleteintent;\r
-       private Operations operations;\r
-       private Results results;\r
-       private UserId userid;\r
-       private NodeId nodeid;\r
-       private ConnectionId connectionid;\r
-       private FlowId flowid;\r
-       private List<NodeId> nodeidlist;\r
-       private List<ConnectionId> connectionidlist;\r
-       private List<FlowId> flowidlist;\r
-       private List<OperationId> operationidlist;\r
-       private OperationId operationid;\r
-       private User user;\r
-@org.junit.Before\r
-public void setUp() throws Exception{\r
-       dataBroker=mock(DataBroker.class);\r
-       tenantManage=mock(TenantManage.class);\r
-       deleteNode=mock(DeleteNode.class);\r
-       deleteConnection=mock(DeleteConnection.class);\r
-       //deleteFlow=mock(DeleteFlow.class);\r
-       deleteOperation=mock(DeleteOperation.class);\r
-       deleteResult=mock(DeleteResult.class);\r
-       aaa=mock(AAA.class);\r
-       objects=mock(Objects.class);\r
-       styleNemoDeleteInput=mock(StructureStyleNemoDeleteInput.class);\r
-       deleteintent=new DeleteIntent(dataBroker,tenantManage);\r
-       results=mock(Results.class);\r
-       operations=mock(Operations.class);\r
-       nodeid=mock(NodeId.class);\r
-       connectionid=mock(ConnectionId.class);\r
-       flowid=mock(FlowId.class);\r
-       nodeidlist=new ArrayList<NodeId>(1);\r
-       nodeidlist.add(nodeid);\r
-       connectionidlist=new ArrayList<ConnectionId>(1);\r
-       connectionidlist.add(connectionid);\r
-       flowidlist=new ArrayList<FlowId>(1);\r
-       flowidlist.add(flowid);\r
-       user=mock(User.class);\r
-       operationid=mock(OperationId.class);\r
-       operationidlist=new ArrayList<OperationId>(1);\r
-       operationidlist.add(operationid);\r
-}\r
-@org.junit.Test\r
-public void styleNemoDeleteOutputTest(){\r
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
-     ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-        UserId useridtest=mock(UserId.class);\r
-        UserName usernametest=mock(UserName.class);\r
-        UserPassword userpasswordtest=mock(UserPassword.class);\r
-        UserRoleName userrolenametest=mock(UserRoleName.class);\r
-        when(styleNemoDeleteInput.getUserId()).thenReturn(useridtest);\r
-        //branch 1\r
-        when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn("The user is not exist.");\r
-        Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),"The user is not exist.");\r
-        //branch 2\r
-        when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-        when(styleNemoDeleteInput.getObjects()).thenReturn(null);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);\r
-        //branch 3\r
-        //if-\r
-         when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(objects);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(null);\r
-         //if--\r
-         when(styleNemoDeleteInput.getObjects().getNode()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getConnection()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getFlow()).thenReturn(null);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null); \r
-         //branch 4\r
-         //if-\r
-         when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(objects);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(null);\r
-         //if--\r
-         when(styleNemoDeleteInput.getObjects().getNode()).thenReturn(nodeidlist);\r
-         when(styleNemoDeleteInput.getObjects().getConnection()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getFlow()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getUserId()).thenReturn(userid);\r
-         when(tenantManage.getUser()).thenReturn(user);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);\r
-         //branch 5\r
-         //if-\r
-         when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(objects);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(null);\r
-         //if--\r
-         when(styleNemoDeleteInput.getObjects().getNode()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getConnection()).thenReturn(connectionidlist);\r
-         when(styleNemoDeleteInput.getObjects().getFlow()).thenReturn(null);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);\r
-      //branch 6\r
-     //if-\r
-         when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(objects);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(null);\r
-         //if--\r
-         when(styleNemoDeleteInput.getObjects().getNode()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getConnection()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects().getFlow()).thenReturn(flowidlist);\r
-      Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);    \r
-        //branch 7\r
-        //if-\r
-         when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(operations);\r
-         //if--\r
-      when(operations.getOperation()).thenReturn(null);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null); \r
-         //branch 8\r
-         //if-\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(operations);\r
-         //if--\r
-      when(operations.getOperation()).thenReturn(operationidlist);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);\r
-        //branch 9\r
-        //if-\r
-        when(aaa.checkUser(styleNemoDeleteInput.getUserId())).thenReturn(null);\r
-         when(styleNemoDeleteInput.getObjects()).thenReturn(null);\r
-         when(styleNemoDeleteInput.getResults()).thenReturn(results);\r
-         when(styleNemoDeleteInput.getOperations()).thenReturn(null);\r
-         Assert.assertEquals(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput),null);        \r
-}\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java
deleted file mode 100644 (file)
index 3ad0b9c..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*\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.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\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.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\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.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-import java.util.*;\r
-public class DeleteNodeTest{\r
-       private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-       private UserId  userid;\r
-       private NodeId  nodeid;\r
-       private DeleteNode deletenode;\r
-       private User user;\r
-       private Objects objects;\r
-       private  Node node;\r
-       private NodeId notnodeid;\r
-       private List<Node> nodeList;\r
-       private   WriteTransaction  writetransaction;\r
-       @org.junit.Before\r
-       public void setUp() throws Exception{\r
-               dataBroker=mock(DataBroker.class);\r
-               tenantManage=mock(TenantManage.class);\r
-        userid=mock(UserId.class);     \r
-               nodeid=mock(NodeId.class);\r
-               deletenode=new DeleteNode(dataBroker,tenantManage);\r
-               user=mock(User.class);\r
-               objects=mock(Objects.class);\r
-               node=mock(Node.class);\r
-               notnodeid=mock(NodeId.class);\r
-               nodeList=new ArrayList<Node>(1);\r
-               nodeList.add(node);\r
-               writetransaction=mock(WriteTransaction.class);\r
-       }\r
-       @org.junit.Test\r
-    public void DeleNodeHandlingTest(){\r
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
-     ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-    //branch 1\r
-    when(tenantManage.getUser()).thenReturn(null);\r
-    Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no user in data store.");        \r
-       //branch 2\r
-       when(tenantManage.getUser()).thenReturn(user);\r
-       when(user.getObjects()).thenReturn(null);\r
-       Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null);\r
-   //branch 3\r
-       when(tenantManage.getUser()).thenReturn(user);\r
-       when(user.getObjects()).thenReturn(objects);\r
-       when(objects.getNode()).thenReturn(null);\r
-       Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no nodes instances in data store.");\r
-       //branch 4\r
-       when(tenantManage.getUser()).thenReturn(user);\r
-       when(user.getObjects()).thenReturn(objects);\r
-       when(objects.getNode()).thenReturn(nodeList);\r
-       when(node.getNodeId()).thenReturn(notnodeid);\r
-       Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"The node instance " +nodeid.getValue()+" is not exist.Could not be deleted");\r
-       //branch 5\r
-       when(tenantManage.getUser()).thenReturn(user);\r
-       when(user.getObjects()).thenReturn(objects);\r
-       when(objects.getNode()).thenReturn(nodeList);\r
-       when(node.getNodeId()).thenReturn(nodeid);\r
-       when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
-       CheckedFuture<Void, TransactionCommitFailedException> f;\r
-       f=mock(CheckedFuture.class);\r
-       when(writetransaction.submit()).thenReturn(f);\r
-       Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null);\r
-       }\r
-}\r
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java
deleted file mode 100644 (file)
index 2d783aa..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*\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.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\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.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-import java.util.*;\r
-public class DeleteOperationTest{\r
-       private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-       private UserId userId;\r
-       private User user;\r
-    private    OperationId operationId;\r
-       private DeleteOperation deleteoperation;\r
-       private Operations operations;\r
-       private Operation operation;\r
-       private OperationId notoperationId;\r
-       private List<Operation> operationList;\r
-       private   WriteTransaction  writetransaction;\r
-       @org.junit.Before\r
-       public void setUp() throws Exception{\r
-       dataBroker=mock(DataBroker.class);\r
-       tenantManage=mock(TenantManage.class);\r
-    userId=mock(UserId.class);\r
-    operationId=mock(OperationId.class);\r
-       user=mock(User.class);\r
-       operation=mock(Operation.class);\r
-       notoperationId=mock(OperationId.class);\r
-    deleteoperation=new DeleteOperation(dataBroker,tenantManage);\r
-    operations=mock(Operations.class);\r
-    operationList=new ArrayList<Operation>(1);\r
-       operationList.add(operation);\r
-    writetransaction=mock(WriteTransaction.class);\r
-       }\r
-       @org.junit.Test\r
-       public void DeleteOperationhandlingTest(){\r
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
-     ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-               //branch 1\r
-               when(tenantManage.getUser()).thenReturn(null);\r
-               Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no user in the data store.");\r
-               //branch 2\r
-               when(tenantManage.getUser()).thenReturn(user);\r
-               when(user.getOperations()).thenReturn(null);\r
-               Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null);\r
-               //branch 3\r
-               when(tenantManage.getUser()).thenReturn(user);\r
-               when(user.getOperations()).thenReturn(operations);      \r
-        when(operations.getOperation()).thenReturn(null);\r
-        Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no operation instances in the data store.");                \r
-           //branch 4\r
-               when(tenantManage.getUser()).thenReturn(user);\r
-               when(user.getOperations()).thenReturn(operations);      \r
-        when(operations.getOperation()).thenReturn(operationList);\r
-               when(operation.getOperationId()).thenReturn(notoperationId);\r
-               Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"The operation instance " +operationId.getValue()+" is not exist. Could not be deleted.");\r
-           //branch 5\r
-               when(tenantManage.getUser()).thenReturn(user);\r
-               when(user.getOperations()).thenReturn(operations);      \r
-        when(operations.getOperation()).thenReturn(operationList);\r
-               when(operation.getOperationId()).thenReturn(operationId);\r
-               when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
-           CheckedFuture<Void, TransactionCommitFailedException> f;\r
-           f=mock(CheckedFuture.class);\r
-           when(writetransaction.submit()).thenReturn(f);\r
-               Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null);\r
-       }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java
deleted file mode 100644 (file)
index e8a5a14..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import com.google.common.base.Optional;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
-
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import java.util.LinkedList;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import java.util.*;
-import java.util.List;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-
-import com.google.common.util.concurrent.CheckedFuture;
-
-import static org.junit.Assert.*;
-
-/**
- * Created by ldzd11 on 2015/12/21.
- */
-public class UpdateConnectionTest {
-
-    UpdateConnection updateConnection;
-
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private List<Property> propertyList;
-    private PropertyName propertyName;
-    private PropertyName propertyName2;
-    private Property property;
-    private Connection connection;
-    private Connection connection2;
-    private NodeId nodeId;
-    private NodeId nodeId2;
-
-
-    private List<Connection> connectionList;
-    private ConnectionType connectionType;
-    private ConnectionType connectionType2;
-    private ConnectionName connectionName;
-    private ConnectionName connectionName2;
-    private  User user;
-    private UserId userId;
-    private ConnectionId connectionId;
-    private Objects objects;
-
-
-
-    private PropertyDefinition propertyDefinition;
-    private List<PropertyDefinition> propertyDefinitionList;
-    @Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-
-        property = mock(Property.class);
-        propertyList = new ArrayList<Property>(1);
-        propertyList.add(property);
-
-        propertyName = mock(PropertyName.class);
-        propertyName2 = mock(PropertyName.class);
-
-        connectionName = mock(ConnectionName.class);
-        connectionName2 = mock(ConnectionName.class);
-
-        propertyDefinition = mock(PropertyDefinition.class);
-        propertyDefinitionList = new ArrayList<PropertyDefinition>(1);
-        propertyDefinitionList.add(propertyDefinition);
-
-        connectionType = mock(ConnectionType.class);
-        connectionType2 = mock(ConnectionType.class);
-        connection = mock(Connection.class);
-        connection2 = mock(Connection.class);
-        connectionList = new ArrayList<Connection>(1);
-        connectionList.add(connection);
-        objects = mock(Objects.class);
-
-        user = mock(User.class);
-        userId = mock(UserId.class);
-        nodeId = mock(NodeId.class);
-        nodeId2 = mock(NodeId.class);
-
-
-        connectionId = mock(ConnectionId.class);
-        updateConnection = new UpdateConnection(dataBroker,tenantManage);
-
-    }
-
-    @Test
-    public void testConnectionHandling() throws Exception {
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
-
-        List<ConnectionDefinition> connectionDefinitionList = new ArrayList<ConnectionDefinition>();
-        List<ConnectionDefinition> connectionDefinitionListnull = new ArrayList<ConnectionDefinition>();
-        ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
-        connectionDefinitionList.add(connectionDefinition);
-        when(connectionDefinition.getConnectionType()).thenReturn(connectionType);
-
-
-        Class<UpdateConnection> class1 = UpdateConnection.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("connectionDefinitionsList");
-        field1.setAccessible(true);
-
-        field1.set(field.get(updateConnection), connectionDefinitionList);
-        when(connection.getConnectionType()).thenReturn(connectionType);
-        when(connection.getProperty()).thenReturn(null);
-        when(connectionDefinition.getPropertyDefinition()).thenReturn(null);
-
-        when(tenantManage.getUser()).thenReturn(null);
-        when(connection.getEndNode()).thenReturn(null);
-        WriteTransaction writeTransaction = mock(WriteTransaction.class);
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        ConnectionId connectionId = mock(ConnectionId.class);
-        when(connection.getConnectionId()).thenReturn(connectionId);
-
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        CheckedFuture<Void, TransactionCommitFailedException> f;
-        f=mock(CheckedFuture.class);
-        when(writeTransaction.submit()).thenReturn(f);
-        Assert.assertEquals(updateConnection.ConnectionHandling(userId,connection),null);
-
-
-
-
-
-
-
-
-    }
-
-    @Test
-    public void testcheckInstance() throws Exception {
-        Class<UpdateConnection> class1 = UpdateConnection.class;
-        Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Connection.class});
-        method.setAccessible(true);
-        when(tenantManage.getUser()).thenReturn(user);
-        when(user.getObjects()).thenReturn(objects);
-
-        when(user.getObjects().getConnection()).thenReturn(connectionList);
-        when(connection.getConnectionId()).thenReturn(connectionId);
-        when(connection2.getConnectionId()).thenReturn(connectionId);
-        when(connection.getConnectionType()).thenReturn(connectionType);
-        when(connection2.getConnectionType()).thenReturn(connectionType2);
-        //Assert.assertTrue(connectionType == connectionType2);
-       // Assert.assertTrue(connectionType != connectionType2);
-
-       // String result = (String) method.invoke(updateConnection,userId,connection2);
-       // System.out.println(result+"3232");
-       // Assert.assertTrue(result.equals("1"));
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The connection type should not be changed.");
-
-        when(connection.getConnectionId()).thenReturn(connectionId);
-        when(connection2.getConnectionId()).thenReturn(connectionId);
-        when(connection.getConnectionType()).thenReturn(connectionType);
-        when(connection2.getConnectionType()).thenReturn(connectionType);
-        when(connection.getConnectionName()).thenReturn(connectionName);
-        when(connection2.getConnectionName()).thenReturn(connectionName2);
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The End node should not be changed.");
-
-        EndNode endNode = mock(EndNode.class);
-        List<EndNode> endnodeList = new ArrayList<EndNode>(1);
-        endnodeList.add(endNode);
-
-        Node node = mock(Node.class);
-        List<Node> nodeList = new ArrayList<Node>(1);
-        nodeList.add(node);
-
-        when(user.getObjects().getConnection()).thenReturn(null);
-        when(connection2.getEndNode()).thenReturn(endnodeList);
-        when(user.getObjects().getNode()).thenReturn(nodeList);
-        when(endNode.getNodeId()).thenReturn(nodeId);
-        when(node.getNodeId()).thenReturn(nodeId2);
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The endnode is not exist in user vn space.");
-
-        when(user.getObjects().getNode()).thenReturn(null);
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The endnodes are not exist in the user vn space.");
-
-        when(user.getObjects()).thenReturn(null);
-        when(connection2.getEndNode()).thenReturn(endnodeList);
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "There are no nodes in user vn space.");
-
-        when(tenantManage.getUser()).thenReturn(null);
-        when(connection.getEndNode()).thenReturn(endnodeList);
-        Assert.assertEquals(method.invoke(updateConnection, userId, connection2),"There are no nodes in user vn space.");
-
-
-    }
-
-    @Test
-    public void testcheckDefinition() throws Exception {
-        Class<UpdateConnection> class3 = UpdateConnection.class;
-        Method method = class3.getDeclaredMethod("checkDefinition",new Class[]{Connection.class});
-        method.setAccessible(true);
-
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
-
-        List<ConnectionDefinition> connectionDefinitionList = new ArrayList<ConnectionDefinition>();
-        List<ConnectionDefinition> connectionDefinitionListnull = new ArrayList<ConnectionDefinition>();
-        ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
-        connectionDefinitionList.add(connectionDefinition);
-        when(connectionDefinition.getConnectionType()).thenReturn(connectionType);
-
-
-        Class<UpdateConnection> class1 = UpdateConnection.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("connectionDefinitionsList");
-        field1.setAccessible(true);
-
-
-      //  when(connection.getConnectionType()).thenReturn(connectionType);
-     //   when(connection.getProperty()).thenReturn(propertyList);
-     //   when(connectionDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionList);
-      //  Assert.assertEquals(method.invoke(updateConnection, connection), "There are no properties for this type of connection.");
-
-        field1.set(field.get(updateConnection), connectionDefinitionList);
-        when(connection.getConnectionType()).thenReturn(connectionType);
-        when(connection.getProperty()).thenReturn(propertyList);
-        when(connectionDefinition.getPropertyDefinition()).thenReturn(null);
-       // when(connection.getConnectionType()).thenReturn(connectionType2);
-        Assert.assertEquals(method.invoke(updateConnection, connection), "There are no properties for this type of connection.");
-
-        field1.set(field.get(updateConnection), connectionDefinitionList);
-        when(connection.getConnectionType()).thenReturn(connectionType);
-        when(connection.getProperty()).thenReturn(propertyList);
-        when(connectionDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionList);
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
-        when(property.getPropertyName().toString()).thenReturn(new String("propertyname"));
-        Assert.assertEquals(method.invoke(updateConnection, connection), "This type of propertypropertyname has not been defined.");
-
-        when(connection.getConnectionType()).thenReturn(connectionType2);
-        Assert.assertEquals(method.invoke(updateConnection, connection),"This type of connection has not been defined.");
-
-                field1.set(field.get(updateConnection), connectionDefinitionListnull);
-        Assert.assertEquals(method.invoke(updateConnection, connection), "This type of connection has not been defined.");
-
-    }
-
-    @Test
-    public void testcheckProperty() throws Exception {
-        Class<UpdateConnection> class1 = UpdateConnection.class;
-        Method method = class1.getDeclaredMethod("CheckProperty",new Class[]{List.class,List.class});
-        method.setAccessible(true);
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
-        when(property.getPropertyName().toString()).thenReturn(new String("propertyname"));
-        Assert.assertEquals(method.invoke(updateConnection, propertyList, propertyDefinitionList), "This type of propertypropertyname has not been defined.");
-
-
-
-
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java
deleted file mode 100644 (file)
index 1935462..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.MatchItemName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.LinkedList;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import java.util.*;
-import java.util.List;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import com.google.common.util.concurrent.CheckedFuture;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-
-
-import static org.junit.Assert.*;
-
-/**
- * Created by ldzd11 on 2015/12/22.
- */
-public class UpdateFlowTest {
-
-    private  UpdateFlow updateFlow;
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private MatchItemName matchItemName;
-    private MatchItemName matchItemName2;
-    private MatchItem matchItem;
-    private List<MatchItem> matchItemList;
-    private List<MatchItem> matchItemListnull;
-    private User user;
-    private UserId userId;
-    private Objects objects;
-    private List<Flow> flowList;
-    private FlowId flowId;
-    private FlowName flowName;
-    private FlowName flowName2;
-
-
-
-    private MatchItemValue matchItemValue;
-    private Flow flow;
-    private Flow flow2;
-
-    @Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-        matchItemName = mock(MatchItemName.class);
-        matchItemName2= mock(MatchItemName.class);
-        matchItem = mock(MatchItem.class);
-        matchItemList = new ArrayList<MatchItem>(1);
-        matchItemListnull = new ArrayList<MatchItem>();
-        userId = mock(UserId.class);
-        user = mock(User.class);
-        matchItemList.add(matchItem);
-        flow = mock(Flow.class);
-        flow2 = mock(Flow.class);
-        flowId = mock(FlowId.class);
-        flowName = mock(FlowName.class);
-        flowName2 = mock(FlowName.class);
-
-        matchItemValue = mock(MatchItemValue.class);
-        objects = mock(Objects.class);
-        flowList = new ArrayList<Flow>(1);
-        flowList.add(flow2);
-
-        updateFlow = new UpdateFlow(dataBroker,tenantManage);
-
-    }
-
-
-
-
-    @Test
-    public void testFlowHandling() throws Exception {
-        //into checkdefinition  for error = null
-        CheckedFuture matchitemdefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(matchitemdefinitionFuture);
-
-        List<MatchItemDefinition> matchItemDefinitions = new ArrayList<MatchItemDefinition>();
-        MatchItemDefinition matchItemDefinition = mock(MatchItemDefinition.class);
-        matchItemDefinitions.add(matchItemDefinition);
-        when(matchItemDefinition.getMatchItemName()).thenReturn(matchItemName);
-
-        Class<UpdateFlow> class1 = UpdateFlow.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("matchItemDefinitionList");
-        field1.setAccessible(true);
-
-        field1.set(field.get(updateFlow), matchItemDefinitions);
-        when(flow.getMatchItem()).thenReturn(null);
-        //into checkinstance for error = null
-        when(tenantManage.getUser()).thenReturn(null);
-
-        WriteTransaction writeTransaction = mock(WriteTransaction.class);
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        when(flow.getFlowId()).thenReturn(flowId);
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        CheckedFuture<Void, TransactionCommitFailedException> f;
-        f=mock(CheckedFuture.class);
-        when(writeTransaction.submit()).thenReturn(f);
-
-        Assert.assertEquals(updateFlow.FlowHandling(userId, flow), null);
-
-
-
-
-    }
-
-    @Test
-    public void testcheckInstance() throws Exception {
-        Class<UpdateFlow> class1 = UpdateFlow.class;
-        Method method = class1.getDeclaredMethod("checkInstance",new Class[]{UserId.class,Flow.class});
-        method.setAccessible(true);
-
-        when(tenantManage.getUser()).thenReturn(user);
-        when(user.getObjects()).thenReturn(objects);
-        when(user.getObjects().getFlow()).thenReturn(flowList);
-
-        when(flow2.getFlowId()).thenReturn(flowId);
-        when(flow.getFlowId()).thenReturn(flowId);
-        when(flow2.getFlowName()).thenReturn(flowName2);
-        when(flow.getFlowName()).thenReturn(flowName);
-        Assert.assertEquals(method.invoke(updateFlow, userId, flow), "The flow name should not be changed.");
-
-
-
-
-    }
-
-    @Test
-    public void testcheckDefinition() throws Exception {
-        Class<UpdateFlow> class3 = UpdateFlow.class;
-        Method method = class3.getDeclaredMethod("checkDefinition",new Class[]{Flow.class});
-        method.setAccessible(true);
-
-        CheckedFuture matchitemdefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(matchitemdefinitionFuture);
-
-
-        List<MatchItemDefinition> matchItemDefinitions = new ArrayList<MatchItemDefinition>();
-        List<MatchItemDefinition> matchItemDefinitionsnull = new ArrayList<MatchItemDefinition>();
-        MatchItemDefinition matchItemDefinition = mock(MatchItemDefinition.class);
-        matchItemDefinitions.add(matchItemDefinition);
-        when(matchItemDefinition.getMatchItemName()).thenReturn(matchItemName);
-
-
-        Class<UpdateFlow> class1 = UpdateFlow.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("matchItemDefinitionList");
-        field1.setAccessible(true);
-
-        //the else
-        field1.set(field.get(updateFlow), matchItemDefinitions);
-        when(flow.getMatchItem()).thenReturn(matchItemList);
-        when(matchItem.getMatchItemName()).thenReturn(matchItemName2);
-        Assert.assertEquals(method.invoke(updateFlow, flow), "The match item has not been defined.");
-
-        //the upper
-        field1.set(field.get(updateFlow), matchItemDefinitionsnull);
-        Assert.assertEquals(method.invoke(updateFlow, flow), "The match item has not been defined.");
-
-        //the if errorInfo == null into checkPredefine
-        field1.set(field.get(updateFlow), matchItemDefinitions);
-        when(flow.getMatchItem()).thenReturn(matchItemListnull);
-        //into checkPredefine
-        Assert.assertEquals(method.invoke(updateFlow, flow), null);
-
-
-
-
-    }
-
-    @Test
-    public void testcheckPredefine() throws Exception {
-        Class<UpdateFlow> class1 = UpdateFlow.class;
-        Method method = class1.getDeclaredMethod("checkPredefine",new Class[]{List.class});
-        method.setAccessible(true);
-
-        when(matchItem.getMatchItemName()).thenReturn(matchItemName);
-        when(matchItem.getMatchItemName().getValue()).thenReturn(new String("src-ip"));
-        when(matchItem.getMatchItemValue()).thenReturn(matchItemValue);
-
-        //stringValues.contains("/")
-        when(matchItem.getMatchItemValue().getStringValue()).thenReturn(new String("110/"));
-        //into checkIpPrefix(stringvalues)  legalValue=false
-        Assert.assertEquals(method.invoke(updateFlow, matchItemList),"The " + NEMOConstants.ip_address + " is not legal.");
-
-        when(matchItem.getMatchItemValue().getStringValue()).thenReturn(new String("110\\."));
-        //into checkip address
-        Assert.assertEquals(method.invoke(updateFlow, matchItemList),"The " + NEMOConstants.ip_address + " is not legal.");
-
-
-        when(matchItem.getMatchItemName().getValue()).thenReturn(new String("src-mac"));
-        when(matchItem.getMatchItemValue()).thenReturn(matchItemValue);
-        when(matchItem.getMatchItemValue().getStringValue()).thenReturn(new String("110:"));
-        //into valuecheck.checkMac
-        Assert.assertEquals(method.invoke(updateFlow, matchItemList), "The " + NEMOConstants.mac_address + " is not legal.");
-
-
-
-
-
-
-
-
-
-
-
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java
deleted file mode 100644 (file)
index 76cf7bf..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.SettableFuture;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-import java.util.LinkedList;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import java.util.*;
-import java.util.List;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import com.google.common.util.concurrent.CheckedFuture;
-
-/**
- * Created by ldzd11 on 2015/12/18.
- */
-public class UpdateNodeTest {
-
-    private UpdateNode updateNode;
-    private Node node;
-    private Node node2;
-    private NodeName nodeName;
-    private NodeName nodeName2;
-    private List<Node> nodeList;
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private Property property;
-    private List<Property> propertyList;
-    private PropertyName propertyName;
-    private PropertyName propertyName2;
-    private StringValue stringValue;
-    private List<StringValue> stringValues;
-    private PropertyValues propertyValues;
-    private ValueCheck valueCheck;
-    private PropertyDefinition propertyDefinition;
-    private NodeType nodeType;
-    private NodeType nodeType2;
-    private List<PropertyDefinition> propertyDefinitions;
-    private UserId userId;
-    private WriteTransaction writeTransaction;
-    private User user;
-    private NodeId nodeId;
-    private NodeKey nodeKey;
-    private Objects objects;
-    @org.junit.Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-        propertyValues = mock(PropertyValues.class);
-        valueCheck = mock(ValueCheck.class);
-        nodeId = mock(NodeId.class);
-        nodeName = mock(NodeName.class);
-        nodeName2 = mock(NodeName.class);
-
-        propertyName = mock(PropertyName.class);
-        propertyName2 = mock(PropertyName.class);
-
-        property = mock(Property.class);
-        propertyList = new ArrayList<Property>(1);
-        propertyList.add(property);
-
-        stringValue = mock(StringValue.class);
-        stringValues = new ArrayList<StringValue>(1);
-        stringValues.add(stringValue);
-        nodeType = mock(NodeType.class);
-
-        propertyDefinition=  mock(PropertyDefinition.class);
-        propertyDefinitions = new ArrayList<PropertyDefinition>(1);
-        propertyDefinitions.add(propertyDefinition);
-
-        node = mock(Node.class);
-        node2 = mock(Node.class);
-        userId = mock(UserId.class);
-        user = mock(User.class);
-        objects = mock(Objects.class);
-        nodeKey = mock(NodeKey.class);
-
-        nodeList = new ArrayList<Node>(1);
-        nodeList.add(node2);
-        writeTransaction = mock(WriteTransaction.class);
-
-
-
-        updateNode = new UpdateNode(dataBroker,tenantManage);
-        nodeType2 = mock(NodeType.class);
-
-
-
-    }
-
-    @org.junit.Test
-    public void testNodeHandling() throws Exception {
-        //into checkDefinition
-        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
-
-        Class<UpdateNode> class1 = UpdateNode.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("nodeDefinitionList");
-        field1.setAccessible(true);
-
-
-        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
-        NodeDefinition nodeDefinition = mock(NodeDefinition.class);
-        when(nodeDefinition.getNodeType()).thenReturn(nodeType);
-        nodeDefinitionList.add(nodeDefinition);
-
-        field1.set(field.get(updateNode), nodeDefinitionList);
-        Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
-
-        when(node.getNodeType()).thenReturn(nodeType);
-        when(node.getProperty()).thenReturn(null);
-        when(nodeDefinition.getPropertyDefinition()).thenReturn(null);
-
-
-
-        when(tenantManage.getUser()).thenReturn(null);
-        //error = null  continue
-        when(node.getNodeId()).thenReturn(nodeId);
-        when(node.getKey()).thenReturn(nodeKey);
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        CheckedFuture<Void, TransactionCommitFailedException> f;
-        f=mock(CheckedFuture.class);
-        when(writeTransaction.submit()).thenReturn(f);
-        Assert.assertEquals(updateNode.NodeHandling(userId, node), null);
-        //verify(node).getProperty();
-        //Assert.assertEquals(updateNode.NodeHandling(userId,node),"The property propertyname has not been defined.")
-
-    }
-    @Test
-    public void testcheckInstance() throws Exception {
-        Class<UpdateNode> class1 = UpdateNode.class;
-        Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Node.class});
-        method.setAccessible(true);
-
-        when(tenantManage.getUser()).thenReturn(user);
-        when(user.getObjects()).thenReturn(objects);
-        when(user.getObjects().getNode()).thenReturn(nodeList);
-        when(node.getNodeId()).thenReturn(nodeId);
-        when(node2.getNodeId()).thenReturn(nodeId);
-        when(node.getNodeName()).thenReturn(nodeName);
-        when(node2.getNodeName()).thenReturn(nodeName2);
-        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");
-
-        when(node.getNodeName()).thenReturn(nodeName);
-        when(node2.getNodeName()).thenReturn(nodeName);
-        when(node.getNodeType()).thenReturn(nodeType);
-        when(node2.getNodeType()).thenReturn(nodeType2);
-        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");
-
-
-    }
-
-@Test
-    public void testcheckDefinition() throws Exception {
-
-        Class<UpdateNode> class3 = UpdateNode.class;
-        Method method = class3.getDeclaredMethod("checkDefinition", new Class[]{Node.class});
-        method.setAccessible(true);
-
-        CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);
-
-        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
-        List<NodeDefinition> nodeDefinitionListnull = new ArrayList<NodeDefinition>();
-        NodeDefinition nodeDefinition = mock(NodeDefinition.class);
-        nodeDefinitionList.add(nodeDefinition);
-        when(nodeDefinition.getNodeType()).thenReturn(nodeType);
-
-        Class<UpdateNode> class1 = UpdateNode.class;
-        Class<GetDefinitions> class2 = GetDefinitions.class;
-        Field field = class1.getDeclaredField("getDefinitions");
-        field.setAccessible(true);
-        Field field1 = class2.getDeclaredField("nodeDefinitionList");
-        field1.setAccessible(true);
-
-
-        System.out.println(field1.get(field.get(updateNode)));
-        field1.set(field.get(updateNode), nodeDefinitionList);
-        System.out.println(field1.get(field.get(updateNode)));
-        Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
-
-        when(node.getNodeType()).thenReturn(nodeType);
-        when(node.getProperty()).thenReturn(propertyList);
-        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitions);
-
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
-
-        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
-        Assert.assertEquals(method.invoke(updateNode, node), "The property propertyname has not been defined.");
-
-        field1.set(field.get(updateNode), nodeDefinitionList);
-        when(node.getNodeType()).thenReturn(nodeType);
-        List<Property> propertyListnull = new ArrayList<Property>();
-        List<PropertyDefinition> propertyDefinitionListnull = new ArrayList<PropertyDefinition>();
-
-        when(node.getProperty()).thenReturn(propertyListnull);
-        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionListnull);
-        Assert.assertEquals(method.invoke(updateNode, node), null);
-
-        field1.set(field.get(updateNode), nodeDefinitionListnull);
-        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
-
-        field1.set(field.get(updateNode), nodeDefinitionList);
-        when(node.getNodeType()).thenReturn(nodeType2);
-        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
-
-
-/*
-        (String)method.invoke(updateNode,node)*/
-    }
-
-    @Test
-    public void testcheckProperty() throws Exception {
-        Class<UpdateNode> class1 = UpdateNode.class;
-        Method method = class1.getDeclaredMethod("checkProperty", new Class[]{List.class, List.class});
-        method.setAccessible(true);
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
-        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
-        Assert.assertEquals(method.invoke(updateNode, propertyList,propertyDefinitions), "The property propertyname has not been defined.");
-
-    }
-
-
-    @Test
-    public void testcheckPredefine() throws Exception {
-        Class<UpdateNode> class1 = UpdateNode.class;
-        Method method = class1.getDeclaredMethod("checkPredefine", new Class[]{List.class});
-        method.setAccessible(true);
-
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(property.getPropertyName().getValue()).thenReturn(new String("mac-address"));
-        when(property.getPropertyValues()).thenReturn(propertyValues);
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
-        when(stringValue.getValue()).thenReturn(new String("test"));
-        when(valueCheck.checkMac(stringValue.getValue())).thenReturn(false);
-        Assert.assertEquals(method.invoke(updateNode, propertyList), "The mac-address is not legal.");
-
-        when(property.getPropertyName().getValue()).thenReturn(new String("ip-address"));
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
-        when(stringValue.getValue()).thenReturn(new String("/"));
-        when(valueCheck.checkIpPrefix(stringValue.getValue())).thenReturn(false);
-        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ip-address is not legal.");
-
-        when(property.getPropertyName().getValue()).thenReturn(new String("gateway-ip"));
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
-        when(valueCheck.checkIpAddress(stringValue.getValue())).thenReturn(false);
-        Assert.assertEquals(method.invoke(updateNode, propertyList), "The gateway-ip is not legal.");
-
-        when(property.getPropertyName().getValue()).thenReturn(new String("ac-info-network"));
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
-        when(stringValue.getValue()).thenReturn(new String("layer4"));
-        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ac-info-network is not legal.");
-
-        when(property.getPropertyName().getValue()).thenReturn(new String("operating-mode"));
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
-        when(stringValue.getValue()).thenReturn(new String("layer4"));
-        Assert.assertEquals(method.invoke(updateNode, propertyList), "The operating-mode is not legal.");
-
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java
deleted file mode 100644 (file)
index c5070c3..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateOperation;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.*;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;
-
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-
-public class UpdateOperationTest {
-
-    private UpdateOperation updateOperation;
-
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private UserId userId;
-    private Operation operation;
-    
-    @org.junit.Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-        userId = mock(UserId.class);
-        operation = mock(Operation.class);
-        
-        updateOperation = new UpdateOperation(dataBroker, tenantManage);
-
-    }
-    
-    @org.junit.Test
-    public void testOperationHandling() throws Exception {
-       
-       CheckedFuture operationdefinitionFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(operationdefinitionFuture); 
-       Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The action type has not been defined.");
-       
-       
-       when(operation.getAction()).thenReturn(null);
-       when(operation.getConditionSegment()).thenReturn(null);
-       
-       ObjectId objectId = mock(ObjectId.class);
-       when(operation.getTargetObject()).thenReturn(objectId);
-       
-       Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The target object is not exist.");
-       
-       when(operation.getTargetObject()).thenReturn(null);
-       
-       WriteTransaction writeTransaction = mock(WriteTransaction.class);
-       when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-       
-       Assert.assertEquals(updateOperation.OperationHandling(userId,operation),"The target should not be empty.");
-       
-    }
-}
\ No newline at end of file