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