Implement nemo language style RPC. 10/30710/8
authorZhang Yali <zhangyali369@huawei.com>
Fri, 4 Dec 2015 11:45:06 +0000 (19:45 +0800)
committerZhang Yali <zhangyali369@huawei.com>
Fri, 4 Dec 2015 13:14:13 +0000 (21:14 +0800)
Change-Id: Iee21e027513d482d6e5c12b7aeec5a526e037fa9
Signed-off-by: Zhang Yali <zhangyali369@huawei.com>
70 files changed:
nemo-impl/pom.xml
nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/AdvancedQuery.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/QueryDefinitionCheck.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/AAA.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/RegisterUser.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionBegin.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionEnd.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserConstants.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/Query.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateFlowLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateNodeLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateOperationLang.java [new file with mode: 0644]
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnection.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntent.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResult.java
nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/ValueCheck.java [new file with mode: 0644]
nemo-impl/src/test/java/org/opendaylight/nemo/user/UserManagerTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/AAATest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/RegisterUserTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/TenantManageTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionBeginTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionEndTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/VNSpaceManagementTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ConnectionInstanceCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/FlowInstanceCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/NodeInstanceCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/OperationInstanceCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ResultInstanceCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntentTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteResultTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntentTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResultTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ConnectionDefinitionCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/FlowDefinitionCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/NodeDefinitionCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/OperationDefinitionCheckTest.java [deleted file]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ResultDefinitionCheckTest.java [deleted file]

index d9524610f6393eda547924205be0c1629f1145d5..a0a6d9281fce3f30cf2fa29411ff91c333b3e444 100644 (file)
@@ -26,7 +26,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
     <jacoco.version>0.7.2.201409121644</jacoco.version>
     <sonar.jacoco.reportPath>target/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
     <sonar.jacoco.itReportPath>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
-        <powermock.version>1.4.10</powermock.version>
+    <powermock.version>1.4.10</powermock.version>
   </properties>
 
   <dependencies>
@@ -80,7 +80,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>org.codehaus.jettison</groupId>
       <artifactId>jettison</artifactId>
     </dependency>
-       <dependency>
+    <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-all</artifactId>
       <scope>test</scope>
@@ -89,7 +89,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
     </dependency>
-
     <dependency>
       <groupId>org.powermock</groupId>
       <artifactId>powermock-module-junit4</artifactId>
index 2d4ca33217ddb1b8c9cdfa9af9dc8de8e6116ff6..b088ef76245e09b8c1a2bf4e959da427b5869754 100644 (file)
@@ -7,9 +7,6 @@
  */\r
 package org.opendaylight.nemo.user;\r
 \r
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error; \r
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok; \r
-\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.nemo.intent.IntentResolutionException;\r
 import org.opendaylight.nemo.intent.IntentResolver;\r
@@ -21,15 +18,19 @@ import org.opendaylight.nemo.user.tenantmanager.TenantManage;
 import org.opendaylight.nemo.user.transactionmanager.TransactionBegin;\r
 import org.opendaylight.nemo.user.transactionmanager.TransactionEnd;\r
 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.LanguageIntent;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException;\r
 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteIntent;\r
 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;\r
-import org.opendaylight.nemo.user.vnspacemanager.VNSpaceManagement;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.*;\r
 import org.opendaylight.yangtools.yang.common.RpcResult;\r
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
 \r
 import java.util.concurrent.Future;\r
 \r
+import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error;\r
+import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok;\r
+\r
 /**\r
  * Created by z00293636 on 2015/9/7.\r
  */\r
@@ -37,7 +38,6 @@ public class UserManager implements NemoIntentService {
 \r
     private final DataBroker dataBroker;\r
 \r
-    private VNSpaceManagement vnSpaceManagement;\r
     private RegisterUser registerUser;\r
     private UpdateIntent updateIntent;\r
     private DeleteIntent deleteIntent;\r
@@ -57,183 +57,167 @@ public class UserManager implements NemoIntentService {
         this.dataBroker = dataBroker0;\r
 \r
         this.intentResolver = intentResolver0;\r
-        vnSpaceManagement = new VNSpaceManagement(dataBroker);\r
         tenantManage = new TenantManage(dataBroker);\r
         aaa = new AAA(tenantManage);\r
         registerUser = new RegisterUser(tenantManage);\r
         updateIntent = new UpdateIntent(dataBroker,tenantManage);\r
         deleteIntent = new DeleteIntent(dataBroker, tenantManage);\r
-        languageIntent = new LanguageIntent(dataBroker);\r
+        languageIntent = new LanguageIntent(dataBroker,tenantManage);\r
         advancedQuery = new AdvancedQuery(dataBroker, tenantManage);\r
-\r
         transactionBegin = new TransactionBegin();\r
         transactionEnd = new TransactionEnd();\r
 \r
         transaction = false;\r
         informresolver = false;\r
     }\r
-\r
     @Override\r
     public Future<RpcResult<AdvancedNemoQueryOutput>> advancedNemoQuery(AdvancedNemoQueryInput input) {\r
-        final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();\r
 \r
+        final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();\r
         String errorInfo = advancedQuery.advancedQuery(aaa, input);\r
-        if (errorInfo != null)\r
-        {\r
+\r
+        if (errorInfo != null){\r
             outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
         }\r
-        else\r
-        {\r
+        else{\r
             outputBuilder.setResultCode(Ok).setMessage(advancedQuery.getAdvancedQueryReuslt(input));\r
         }\r
 \r
-        return RpcResultBuilder.success(outputBuilder).buildFuture();\r
+        return  RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<BeginTransactionOutput>> beginTransaction(BeginTransactionInput input) {\r
-        final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();\r
 \r
-        if (transaction)\r
-        {\r
+        final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();\r
+        if (transaction){\r
             outputBuilder.setResultCode(Error).setMessage("The previous transaction has not been finished.");\r
         }\r
-        else\r
-        {\r
+        else{\r
             String errorInfo = transactionBegin.transactionbegin(aaa,input);\r
-            if (errorInfo != null)\r
-            {\r
+            if (errorInfo != null){\r
                 outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
             }\r
-            else\r
-            {\r
+            else{\r
                 transaction = true;\r
                 outputBuilder.setResultCode(Ok).setMessage("Transaction Begin.");\r
             }\r
         }\r
-\r
         return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<EndTransactionOutput>> endTransaction(EndTransactionInput input) {\r
+\r
         final EndTransactionOutputBuilder outputBuilder = new EndTransactionOutputBuilder();\r
 \r
-        if (!transaction)\r
-        {\r
+        if (!transaction){\r
             outputBuilder.setResultCode(Error).setMessage("The transaction has not started.");\r
         }\r
-        else\r
-        {\r
+        else{\r
             String errorInfo = transactionEnd.transactionend(aaa,input);\r
-            if (errorInfo != null)\r
-            {\r
+            if (errorInfo != null){\r
                 outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
             }\r
-            else\r
-            {\r
+            else{\r
                 transaction = false;\r
-                if (informresolver)\r
-                {\r
+                if (informresolver){\r
                     informresolver = false;\r
-                    try\r
-                    {\r
+                    try{\r
                         intentResolver.resolveIntent(input.getUserId());\r
                         outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");\r
                     }\r
-                    catch (IntentResolutionException | VNMappingException e)\r
-                    {\r
+                    catch (IntentResolutionException | VNMappingException e){\r
                         e.printStackTrace();\r
                         outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
                     }\r
-                    catch (Exception e)\r
-                    {\r
+                    catch (Exception e){\r
                         e.printStackTrace();\r
                     }\r
                 }\r
-                else\r
-                {\r
+                else{\r
                     outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");\r
                 }\r
-\r
             }\r
         }\r
-\r
         return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<LanguageStyleNemoRequestOutput>> languageStyleNemoRequest(LanguageStyleNemoRequestInput input) {\r
-        final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder();\r
 \r
-        String errorInfo = languageIntent.LanIntentHandler(aaa,input);\r
-\r
-        if (errorInfo != null)\r
-        {\r
-            outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+        final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder();\r
+        try {\r
+            String errorInfo = languageIntent.LanIntentHandler(aaa,input);\r
+            if (errorInfo != null){\r
+                if (errorInfo.contains(NEMOConstants.Results)){\r
+                    outputBuilder.setResultCode(Ok).setMessage(errorInfo);\r
+                }\r
+                else{\r
+                    outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+                }\r
+            }\r
+            else{\r
+                outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction.");\r
+                informresolver = true;\r
+            }\r
         }\r
-        else\r
-        {\r
-            outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction.");\r
-            informresolver = true;\r
+        catch (ParseException | NumberFormatException e) {\r
+            e.printStackTrace();\r
+            outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
         }\r
-\r
         return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<RegisterUserOutput>> registerUser(RegisterUserInput input) {\r
-        final RegisterUserOutputBuilder registerUserOutputBuilder = new RegisterUserOutputBuilder();\r
 \r
+        final RegisterUserOutputBuilder outputBuilder = new RegisterUserOutputBuilder();\r
         String errorInfo = registerUser.registerUser(input);\r
 \r
-        if (errorInfo != null)\r
-        {\r
-            registerUserOutputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+        if (errorInfo != null){\r
+            outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
         }\r
-        else\r
-        {\r
-            registerUserOutputBuilder.setResultCode(Ok).setMessage("Register user successfully.");\r
+        else{\r
+            outputBuilder.setResultCode(Ok).setMessage("Register user successfully.");\r
         }\r
-\r
-        return RpcResultBuilder.success(registerUserOutputBuilder).buildFuture();\r
+        return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<StructureStyleNemoDeleteOutput>> structureStyleNemoDelete(StructureStyleNemoDeleteInput input) {\r
-        final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder();\r
 \r
+        final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder();\r
         String errorInfo = deleteIntent.styleNemoDeleteOutput(aaa,input);\r
 \r
-        if (errorInfo != null)\r
-        {\r
+        if (errorInfo != null){\r
             outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
         }\r
-        else\r
-        {\r
+        else{\r
             outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
             informresolver = true;\r
         }\r
-\r
         return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 \r
     @Override\r
     public Future<RpcResult<StructureStyleNemoUpdateOutput>> structureStyleNemoUpdate(StructureStyleNemoUpdateInput input) {\r
-        final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder();\r
-\r
-        String erroInfo = updateIntent.updateIntent(aaa,input);\r
 \r
-        if (erroInfo != null)\r
-        {\r
-            outputBuilder.setResultCode(Error).setMessage(erroInfo);\r
+        final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder();\r
+        try {\r
+            String erroInfo = updateIntent.updateIntent(aaa,input);\r
+            if (erroInfo != null){\r
+                outputBuilder.setResultCode(Error).setMessage(erroInfo);\r
+            }\r
+            else{\r
+                outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
+                informresolver = true;\r
+            }\r
         }\r
-        else\r
-        {\r
-            outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
-            informresolver = true;\r
+        catch (NumberFormatException e){\r
+            e.printStackTrace();\r
+            outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
         }\r
-\r
         return RpcResultBuilder.success(outputBuilder).buildFuture();\r
     }\r
 }\r
index e0b5d70a0553f295b6476ae979f28d8792505370..c06afcc62e330ed50a9055c57596ac665fcb4ac6 100644 (file)
@@ -7,10 +7,6 @@
  */\r
 package org.opendaylight.nemo.user.advancedquery;\r
 \r
-import java.util.List;\r
-\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.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.common.rev151010.UserId;\r
@@ -29,14 +25,20 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
 import com.google.common.base.Optional;\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.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.util.List;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/29.\r
index 9561908240a9e506dff7bc99e03cfff7d3184561..c47efbe1a5f614edac5aa552383a6484242c17c6 100644 (file)
@@ -7,22 +7,24 @@
  */\r
 package org.opendaylight.nemo.user.advancedquery;\r
 \r
-import java.util.List;\r
-\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.nemo.intent.rev151010.QueryConditionDefinitions;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.advanced.nemo.query.input.QueryCondition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.QueryConditionDefinition;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.query.condition.definition.QueryConditionMatchPatterns;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
 import com.google.common.base.Optional;\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.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+\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/16.\r
index 3af90fcf2a8e95d7195aa816b4e7c9a661ccea9a..51e693e035fbef15188a3c56a21cc467491d01a8 100644 (file)
@@ -36,11 +36,12 @@ public class AAA {
 \r
     private String checkUser(UserId userId, UserName userName, UserPassword userPassword, UserRoleName userRoleName)\r
     {\r
+        tenantManage.fetchUsers();\r
         final Map<UserId, User> users = tenantManage.getUsers();\r
         String errorInfo = null;\r
-        final User user = (users != null) ? users.get(userId) : null;\r
+        final User user = users.get(userId);\r
 \r
-        if (user != null) {\r
+        if (users.containsKey(userId) && user != null) {\r
             if (!user.getUserName().equals(userName)) {\r
                 errorInfo = "The user name is not right.";\r
             } else if (!user.getUserPassword().equals(userPassword)) {\r
@@ -48,7 +49,6 @@ public class AAA {
             } else if (!user.getUserRole().equals(userRoleName)) {\r
                 errorInfo = "The role is not right.";\r
             }\r
-\r
         } else {\r
             errorInfo = "The user is not exist.";\r
         }\r
index 4559649f0b38de384dfe58f46ff3d2278d72e54e..5dbf6a04aa6339b94ee925ee331fbca2a3da845b 100644 (file)
@@ -30,10 +30,12 @@ public class RegisterUser {
     {\r
         String errorInfo = null;\r
 \r
+        tenantManage.fetchUserRoles();\r
         Map<UserRoleName, UserRole> userRoles = tenantManage.getUserRoles();\r
+        tenantManage.fetchUsers();\r
         Map<UserId, User> users = tenantManage.getUsers();\r
 \r
-        if (userRoles == null || userRoles.isEmpty())\r
+        if (userRoles.isEmpty())\r
         {\r
             errorInfo = "There are no roles be defined.";\r
         }\r
@@ -41,7 +43,7 @@ public class RegisterUser {
         {\r
             if (userRoles.containsKey(input.getUserRole()))\r
             {\r
-                if (users != null && users.containsKey(input.getUserId()))\r
+                if (users.containsKey(input.getUserId()))\r
                 {\r
                     errorInfo = "The user has been registered.";\r
                 }\r
index 6bacfb9357f13170634ca9b5088f1effffc02f89..cbf22e1fe1fc180fece9eea91e5e13407a7e15ef 100644 (file)
@@ -8,8 +8,11 @@
 package org.opendaylight.nemo.user.tenantmanager;\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
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
@@ -28,13 +31,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
-import com.google.common.base.Function;\r
 import com.google.common.base.Optional;\r
-import com.google.common.collect.Maps;\r
 import com.google.common.util.concurrent.CheckedFuture;\r
 import com.google.common.util.concurrent.FutureCallback;\r
 import com.google.common.util.concurrent.Futures;\r
 import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
 \r
 /**\r
  * Created by z00293636 on 2015/8/29.\r
@@ -44,6 +46,8 @@ import com.google.common.util.concurrent.ListenableFuture;
 public class TenantManage {\r
     private static final Logger LOG = LoggerFactory.getLogger(TenantManage.class);\r
     private DataBroker dataBroker;\r
+    private final SettableFuture<List<UserRole>> userRoleListFuture = SettableFuture.create();\r
+    private final SettableFuture<List<User>> usersListFuture = SettableFuture.create();\r
     private User user;\r
 \r
     public TenantManage(DataBroker dataBroker)\r
@@ -51,87 +55,121 @@ public class TenantManage {
         this.dataBroker = dataBroker;\r
     }\r
 \r
+    private void setUserRoleList(List<UserRole> userRoleList)\r
+    {\r
+        this.userRoleListFuture.set(userRoleList);\r
+    }\r
+\r
+    private void setUserList(List<User> userList)\r
+    {\r
+        this.usersListFuture.set(userList);\r
+    }\r
+\r
     private void setUser(User user)\r
     {\r
         this.user = user;\r
     }\r
 \r
-    public User getUser()\r
-    {\r
-        return user;\r
+    public List<UserRole> getUserRoleList() {\r
+        try {\r
+            return userRoleListFuture.get(1, TimeUnit.SECONDS);\r
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read role information.", e);\r
+            return null;\r
+        }\r
     }\r
 \r
     /**\r
      *\r
-     * @return null if an error was encountered, or an empty map if there was no\r
-     *         error but no data was retrieved.\r
+     * @return Map from UserRoleName to UserRole.  If no roles exist, an empty (not-null) map is returned.\r
      */\r
     public Map<UserRoleName, UserRole> getUserRoles() {\r
+        final Map<UserRoleName, UserRole> map = new HashMap<>();\r
+        final List<UserRole> userRoleList = getUserRoleList();\r
+        if (userRoleList != null) {\r
+            for (UserRole role : userRoleList) {\r
+                map.put(role.getRoleName(), role);\r
+            }\r
+        }\r
+        return map;\r
+    }\r
 \r
-        InstanceIdentifier<UserRoles> userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build();\r
-        ListenableFuture<Optional<UserRoles>> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read(\r
-                LogicalDatastoreType.CONFIGURATION, userRolesInsId);\r
-\r
-        final Optional<UserRoles> userRolesOpt;\r
+    public List<User> getUsersList() {\r
         try {\r
-            // TODO: consider time out here?\r
-            userRolesOpt = userRolesFuture.get();\r
-        } catch (InterruptedException | ExecutionException e) {\r
-            LOG.error("Cannot read role information.", e);\r
+            return usersListFuture.get(1, TimeUnit.SECONDS);\r
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read user information.", e);\r
             return null;\r
         }\r
+    }\r
+\r
+    /**\r
+     *\r
+     * @return Map from UserId to User.  If no users exist, an empty (not-null) map is returned.\r
+     */\r
+    public Map<UserId, User> getUsers()\r
+    {\r
+        final Map<UserId, User> map = new HashMap<>();\r
+        final List<User> userList = getUsersList();\r
+        if (userList != null) {\r
+            for (User user : userList) {\r
+                map.put(user.getUserId(), user);\r
+            }\r
+        }\r
+        return map;\r
+    }\r
+\r
+    public User getUser()\r
+    {\r
+        return user;\r
+    }\r
+\r
+    public void fetchUserRoles(){\r
+\r
+        InstanceIdentifier<UserRoles> userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build();\r
+        ListenableFuture<Optional<UserRoles>> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, userRolesInsId);\r
+        Futures.addCallback(userRolesFuture, new FutureCallback<Optional<UserRoles>>() {\r
+            @Override\r
+            public void onSuccess(Optional<UserRoles> result)\r
+            {\r
+                setUserRoleList(result.get().getUserRole());\r
+            }\r
 \r
-        // TODO: change to Java 8 lambda expressions\r
-        return userRolesOpt.transform(new Function<UserRoles, Map<UserRoleName, UserRole>>() {\r
             @Override\r
-            public Map<UserRoleName, UserRole> apply(UserRoles input) {\r
-                return Maps.uniqueIndex(input.getUserRole(), new Function<UserRole, UserRoleName>() {\r
-                    @Override\r
-                    public UserRoleName apply(UserRole role) {\r
-                        return role.getRoleName();\r
-                    }\r
-                });\r
+            public void onFailure(Throwable t)\r
+            {\r
+                LOG.error("Can not read role information.", t);\r
             }\r
-        }).or(new HashMap<UserRoleName, UserRole>());\r
+        });\r
     }\r
 \r
-    /**\r
-    *\r
-    * @return null if an error was encountered, or an empty map if there was no\r
-    *         error but no data was retrieved.\r
-    */\r
-    public Map<UserId, User> getUsers() {\r
+    public void fetchUsers(){\r
         InstanceIdentifier<Users> usersInsId = InstanceIdentifier.builder(Users.class).build();\r
-        ListenableFuture<Optional<Users>> usersFuture = dataBroker.newReadOnlyTransaction().read(\r
-                LogicalDatastoreType.CONFIGURATION, usersInsId);\r
-\r
-        final Optional<Users> usersOpt;\r
-        try {\r
-            // TODO: consider time out here?\r
-            usersOpt = usersFuture.get();\r
-        } catch (InterruptedException | ExecutionException e) {\r
-            LOG.error("Cannot read user information.", e);\r
-            return null;\r
-        }\r
+        ListenableFuture<Optional<Users>> usersFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, usersInsId);\r
+        Futures.addCallback(usersFuture, new FutureCallback<Optional<Users>>() {\r
+            @Override\r
+            public void onSuccess(Optional<Users> result)\r
+            {\r
+                setUserList(result.get().getUser());\r
+            }\r
 \r
-        // TODO: change to Java 8 lambda expressions\r
-        return usersOpt.transform(new Function<Users, Map<UserId, User>>() {\r
             @Override\r
-            public Map<UserId, User> apply(Users input) {\r
-                return Maps.uniqueIndex(input.getUser(), new Function<User, UserId>() {\r
-                    @Override\r
-                    public UserId apply(User user) {\r
-                        return user.getUserId();\r
-                    }\r
-                });\r
+            public void onFailure(Throwable t)\r
+            {\r
+                LOG.error("Can not read users information.", t);\r
             }\r
-        }).or(new HashMap<UserId, User>());\r
+        });\r
     }\r
 \r
     public void fetchVNSpace(UserId userId)\r
     {\r
+        fetchUsers();\r
         final Map<UserId, User> users = getUsers();\r
-        setUser((users != null) ? users.get(userId) : null);\r
+\r
+        User user = users.get(userId);\r
+        if (users.containsKey(userId) && user != null) {\r
+            setUser(user);\r
+        }\r
     }\r
 \r
     public void addUser(RegisterUserInput registerUserInput){\r
index c8ed4e26dbc2b8165fa10a06746fbe6c9aca7d2b..bfef2992301915c51e2a790423d81972d53e53f5 100644 (file)
@@ -14,11 +14,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class TransactionBegin {\r
-\r
-    public String transactionbegin(AAA aaa,BeginTransactionInput input)\r
-    {\r
-        String errorInfo = null;\r
-        errorInfo = aaa.checkUser(input);\r
-        return errorInfo;\r
+    public String transactionbegin(AAA aaa,BeginTransactionInput input){\r
+        return aaa.checkUser(input);\r
     }\r
 }\r
index 910cbf3b8adcb4024836140fe4be4579e6f05547..e85df636d6317f7b56af89f31cfbb636bf88e86e 100644 (file)
@@ -14,10 +14,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
  * Created by z00293636 on 2015/9/2.\r
  */\r
 public class TransactionEnd {\r
-    public String transactionend(AAA aaa,EndTransactionInput input)\r
-    {\r
-        String errorInfo = null;\r
-        errorInfo = aaa.checkUser(input);\r
-        return errorInfo;\r
+    public String transactionend(AAA aaa,EndTransactionInput input){\r
+        return aaa.checkUser(input);\r
     }\r
 }\r
index 1f226e2c7a83ae179e3b859492a8c42b55cc191b..90ef52a158ae4869b52779abceff318fcef54b4f 100644 (file)
@@ -9,21 +9,30 @@ package org.opendaylight.nemo.user.vnspacemanager.languagestyle;
 \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.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput;\r
 \r
+import java.io.StringReader;\r
+\r
 /**\r
  * Created by z00293636 on 2015/8/31.\r
  */\r
 public class LanguageIntent {\r
 \r
     private DataBroker dataBroker;\r
+    private TenantManage tenantManage;\r
+    private NEMOparser nemOparser;\r
 \r
-    public LanguageIntent(DataBroker dataBroker)\r
+    public LanguageIntent(DataBroker dataBroker, TenantManage tenantManage)\r
     {\r
-       this.dataBroker = dataBroker;\r
+        this.dataBroker = dataBroker;\r
+        this.tenantManage = tenantManage;\r
+        nemOparser = new NEMOparser(new StringReader(""));\r
     }\r
 \r
-    public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput){\r
+    public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput) throws ParseException {\r
 \r
         String errorInfo = null;\r
 \r
@@ -34,9 +43,9 @@ public class LanguageIntent {
         }\r
         else\r
         {\r
-            //TODO language parse\r
+            errorInfo = nemOparser.parseNEMO(languageStyleNemoRequestInput.getUserId(),languageStyleNemoRequestInput.getNemoStatement(),dataBroker,tenantManage);\r
         }\r
 \r
-       return null;\r
+       return errorInfo;\r
     }\r
 }\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java
new file mode 100644 (file)
index 0000000..03d1522
--- /dev/null
@@ -0,0 +1,80 @@
+/*\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;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/25.\r
+ */\r
+public interface NEMOConstants {\r
+    String range = "range";\r
+    String string = "string";\r
+    String integer = "int";\r
+    String ethaddr = "ethaddr";\r
+    String ipv4pref = "ipv4pref";\r
+    String ipv4addr = "ipv4addr";\r
+    String mac_address = "mac-address";\r
+    String ip_address = "ip-address";\r
+    String ip_prefix = "ip-prefix";\r
+    String gateway_ip = "gateway-ip";\r
+    String ac_info_network = "ac-info-network";\r
+    String operating_mode = "operating-mode";\r
+    String layer2 = "layer2";\r
+    String layer3 = "layer3";\r
+    String host = "host";\r
+    String src_mac = "src-mac";\r
+    String dst_mac = "dst-mac";\r
+    String src_ip = "src-ip";\r
+    String dst_ip = "dst_ip";\r
+    String colon = ":";\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 less_than = "<";\r
+    String not_greater_than = "<=";\r
+    String not_less_than = ">=";\r
+    String between = "*";\r
+    String comma = ",";\r
+    String time = "time";\r
+    String node = "Node";\r
+    String connection = "Connection";\r
+    String flow = "Flow";\r
+    String operation = "Operation";\r
+    String AllNodes = "nodes";\r
+    String AllConnections = "connections";\r
+    String AllFlows = "flows";\r
+    String AllOperations = "operations";\r
+    String Type = "Type";\r
+    String Contain = "Contain";\r
+    String SubNodes = "Subnodes";\r
+    String Property = "Property";\r
+    String Endnodes = "Endnodes";\r
+    String Match = "Match";\r
+    String Priority = "Priority";\r
+    String Target = "Target";\r
+    String Condition = "Condition";\r
+    String Action = "Action";\r
+    String Id = "Id";\r
+    String Name = "Name";\r
+    String Results = "Results";\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
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj
new file mode 100644 (file)
index 0000000..aaea0ed
--- /dev/null
@@ -0,0 +1,807 @@
+/*\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
+ * JavaCC file\r
+ */\r
+\r
+\r
+options {\r
+  JDK_VERSION = "1.7";\r
+}\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.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
+\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
+import java.io.StringReader;\r
+\rpublic class NEMOparser\r
+{\r
+  public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException\r
+       {\r
+           String strReturn = null ;     \r
+           ReInit(new StringReader(strNEMO));                          \r
+           try\r
+               {\r
+           strReturn = NEMO(userId,dataBroker,tenantManage);\r
+               }\r
+               catch ( ParseException objException )\r
+               {\r
+                       throw objException;\r
+               }\r
+               catch ( TokenMgrError objError )\r
+               {\r
+                       throw new ParseException(objError.getMessage());\r
+               }                                                               \r
+                return strReturn;\r
+       }\r
+}\r
+PARSER_END(NEMOparser)\r
+\r
+SKIP :\r
+{\r
+       " "\r
+|      "\r"\r
+|      "\t"\r
+|      "\n"\r
+}\r
+TOKEN :\r
+{\r
+       < COLON: ":" >\r
+|      < COMMA: "," >\r
+|      < SEMICOLON: ";" >\r
+|      < LPAREN: "(" >\r
+|      < RPAREN: ")" >\r
+|   < LBRACKET: "[" >\r
+|   < RBRACKET: "]" >\r
+|      < AND: "&&" >\r
+|      < OR: "||" >\r
+|      < NOT: "!" >\r
+|      < EQUAL: "==" >\r
+|      < GTHAN: ">" >\r
+|      < LTHAN: "<" >\r
+|      < NLTHAN: ">=" >\r
+|      < NMTHAN: "<=" >\r
+|      < #UNDERSCORE: "_" >\r
+|   < #JOINER: "-" >\r
+|      < #FSLASH: "/" >\r
+|      < #DOT: "." >\r
+}\r
+\r
+TOKEN :\r
+{\r
+   < CREATE: "CREATE" >\r
+|   < IMPORT: "IMPORT" >\r
+|   < UPDATE: "UPDATE" >\r
+|   < DELETE: "DELETE" >  \r
+|      < NODE: "Node" >\r
+|      < TYPE: "Type" >\r
+|      < CONTAIN: "Contain" >\r
+|      < PROPERTY: "Property" >\r
+|      < CONNECTION: "Connection" >\r
+|      < ENDNODES: "Endnodes" >\r
+|      < FLOW: "Flow" >\r
+|      < MATCH: "Match" >\r
+|      < OPERATION: "Operation" >\r
+|      < TARGET: "Target" >\r
+|      < CONDITION: "Condition" >\r
+|      < ACTION: "Action" >\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
+}\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
+|      < 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
+|      < #UBYTE: (["0" - "9"] | ["1" - "9"]<DIGIT> | "1"(<DIGIT>){2} | "2"["0" - "4"]<DIGIT> | "25"["0" - "5"]) >\r
+|      < #HEXDIGIT: ["0" - "9", "a" - "f"] >\r
+}\r
+\r
+String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage ):\r
+{\r
+}\r
+{\r
+  (< CREATE > | < IMPORT > |< UPDATE>)\r
+  {\r
+    return UpdateIntent(userId,dataBroker,tenantManage);\r  }\r
+| < DELETE >\r
+       {\r
+         return DeleteIntent(userId,dataBroker,tenantManage);\r }\r
+| < QUERY >\r
+       {\r
+         return Query(userId,dataBroker,tenantManage);\r        }\r
+}\r
+\r
+String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r}\r
+{\r
+  < NODE >\r
+       {\r
+         return UpdateNode(userId,dataBroker,tenantManage);\r
+       }\r
+| < CONNECTION >\r
+       {\r
+         return UpdateConnection(userId,dataBroker,tenantManage);\r
+       }\r
+| < FLOW >\r
+       {\r
+         return  UpdateFlow(userId,dataBroker,tenantManage);\r
+       }\r
+| < OPERATION >\r
+       {\r
+         return UpdateOperation(userId,dataBroker,tenantManage);\r
+       }\r}\r
+\r
+String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r}\r
+{\r
+  < NODE >\r
+       {\r
+         return DeleteNode(userId,dataBroker,tenantManage);\r
+       }\r
+| < CONNECTION >\r
+       {\r
+         return DeleteConnection(userId,dataBroker,tenantManage);\r
+       }\r
+| < FLOW >\r
+       {\r
+         return  DeleteFlow(userId,dataBroker,tenantManage);\r
+       }\r
+| < OPERATION >\r
+       {\r
+         return DeleteOperation(userId,dataBroker,tenantManage);\r
+       }\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
+}\r
+{\r
+  objNodeNameToken = < ID >\r
+  < SEMICOLON >\r
+  {\r
+    strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
+    return strReturn;\r  }\r
+}\r
+\r
+String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+  {\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
+    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
+    < 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
+      (\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
+    {\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
+  < SEMICOLON >\r
+  {\r
+    strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
+    return strReturn;\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 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
+  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
+    < COLON >\r
+    {\r
+      LinkedHashMap<String,String> matchvalue = new LinkedHashMap<String,String>();\r    }\r
+    (\r      (objFlowMatchValue = < ID >\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
+  (\r
+    < COMMA >\r
+    objFlowMatchItem = < ID >\r
+    {\r
+      LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\r    }\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
+         (\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
+  {\r
+    strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
+    return strReturn;\r  }\r}\r
+\r
+String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+       String strReturn = null;\r
+       Token objFlowNameToken = null;\r
+       DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);   \r
+}\r
+{\r
+  objFlowNameToken = < ID >\r
+  < SEMICOLON >\r
+  {\r
+    strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
+    return strReturn;\r
+  }\r
+}\r
+\r
+String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\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>> 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
+    (\r
+      (objCondRelationToken=< NOT >)?\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
+           {\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
+           }\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
+    (\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
+       < 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
+  < SEMICOLON >\r
+  {\r
+    strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r
+    return strReturn;\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
+{\r
+  objOperationNameToken = < ID >\r
+  < SEMICOLON >\r
+  {\r
+    strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
+    return strReturn;\r
+  }\r
+}\r
+\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java
new file mode 100644 (file)
index 0000000..11660a5
--- /dev/null
@@ -0,0 +1,1499 @@
+/*\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
+/* 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.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
+\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
+import java.io.StringReader;\r
+\r
+public class NEMOparser implements NEMOparserConstants {\r
+  public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException\r
+        {\r
+            String strReturn = null ;\r
+            ReInit(new StringReader(strNEMO));\r
+            try\r
+                {\r
+           strReturn = NEMO(userId,dataBroker,tenantManage);\r
+                }\r
+                catch ( ParseException objException )\r
+                {\r
+                        throw objException;\r
+                }\r
+                catch ( TokenMgrError objError )\r
+                {\r
+                        throw new ParseException(objError.getMessage());\r
+                }\r
+                 return strReturn;\r
+        }\r
+\r
+  static final public String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case CREATE:\r
+    case IMPORT:\r
+    case UPDATE:\r
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+      case CREATE:\r
+        jj_consume_token(CREATE);\r
+        break;\r
+      case IMPORT:\r
+        jj_consume_token(IMPORT);\r
+        break;\r
+      case UPDATE:\r
+        jj_consume_token(UPDATE);\r
+        break;\r
+      default:\r
+        jj_la1[0] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\r
+    {if (true) return UpdateIntent(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case DELETE:\r
+      jj_consume_token(DELETE);\r
+          {if (true) return DeleteIntent(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case QUERY:\r
+      jj_consume_token(QUERY);\r
+          {if (true) return Query(userId,dataBroker,tenantManage);}\r
+      break;\r
+    default:\r
+      jj_la1[1] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case NODE:\r
+      jj_consume_token(NODE);\r
+          {if (true) return UpdateNode(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case CONNECTION:\r
+      jj_consume_token(CONNECTION);\r
+          {if (true) return UpdateConnection(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case FLOW:\r
+      jj_consume_token(FLOW);\r
+          {if (true) return  UpdateFlow(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case OPERATION:\r
+      jj_consume_token(OPERATION);\r
+          {if (true) return UpdateOperation(userId,dataBroker,tenantManage);}\r
+      break;\r
+    default:\r
+      jj_la1[2] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case NODE:\r
+      jj_consume_token(NODE);\r
+          {if (true) return DeleteNode(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case CONNECTION:\r
+      jj_consume_token(CONNECTION);\r
+          {if (true) return DeleteConnection(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case FLOW:\r
+      jj_consume_token(FLOW);\r
+          {if (true) return  DeleteFlow(userId,dataBroker,tenantManage);}\r
+      break;\r
+    case OPERATION:\r
+      jj_consume_token(OPERATION);\r
+          {if (true) return DeleteOperation(userId,dataBroker,tenantManage);}\r
+      break;\r
+    default:\r
+      jj_la1[3] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    throw new Error("Missing return statement in function");\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
+    jj_consume_token(TYPE);\r
+    objNodeTypeToken = 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
+      label_1:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[4] = jj_gen;\r
+          break label_1;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objContainNodeToken = jj_consume_token(ID);\r
+              subNodeNameList.add(objContainNodeToken.image);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[5] = 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 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
+      label_2:\r
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case COMMA:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[7] = 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
+        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
+      }\r
+      break;\r
+    default:\r
+      jj_la1[13] = 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
+    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
+    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
+    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_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
+        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[16] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\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[17] = 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[18] = 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
+      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
+        }\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
+          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
+      }\r
+      break;\r
+    default:\r
+      jj_la1[23] = 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
+    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 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
+  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
+    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
+      }\r
+      jj_consume_token(COMMA);\r
+      objFlowMatchItem = jj_consume_token(ID);\r
+      LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\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
+    }\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
+      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
+        }\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
+      }\r
+      jj_consume_token(RBRACKET);\r
+             properties.put(objPropertyNameToken.image, propertyvalue);\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[30] = jj_gen;\r
+          break label_11;\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
+          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[31] = 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
+          }\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
+          }\r
+        }\r
+        jj_consume_token(RBRACKET);\r
+             properties.put(objPropertyNameToken.image, propertyvalue1);\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[34] = jj_gen;\r
+      ;\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
+    {if (true) return strReturn;}\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
+    objFlowNameToken = jj_consume_token(ID);\r
+    jj_consume_token(SEMICOLON);\r
+    strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
+    {if (true) return strReturn;}\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
+  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
+    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[35] = 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[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
+        break;\r
+      default:\r
+        jj_la1[37] = jj_gen;\r
+        jj_consume_token(-1);\r
+        throw new ParseException();\r
+      }\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
+      while (true) {\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+        case AND:\r
+        case OR:\r
+        case NOT:\r
+          ;\r
+          break;\r
+        default:\r
+          jj_la1[38] = jj_gen;\r
+          break label_13;\r
+        }\r
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\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[39] = jj_gen;\r
+          jj_consume_token(-1);\r
+          throw new ParseException();\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
+        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
+          break;\r
+        default:\r
+          jj_la1[41] = jj_gen;\r
+          jj_consume_token(-1);\r
+          throw new ParseException();\r
+        }\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
+      ;\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
+      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
+        break;\r
+      default:\r
+        jj_la1[46] = jj_gen;\r
+        ;\r
+      }\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[47] = jj_gen;\r
+          break label_15;\r
+        }\r
+        jj_consume_token(COMMA);\r
+        objActionNameToken = jj_consume_token(ID);\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
+          break;\r
+        default:\r
+          jj_la1[51] = jj_gen;\r
+          ;\r
+        }\r
+      }\r
+      break;\r
+    default:\r
+      jj_la1[52] = jj_gen;\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
+    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
+    throw new Error("Missing return statement in function");\r
+  }\r
+\r
+  static final public String Query(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+  String strReturn = null;\r
+  Token objItemToken = null;\r
+  Token objTargetToken = null;\r
+  Query query = new Query(tenantManage);\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case TYPE:\r
+      objItemToken = jj_consume_token(TYPE);\r
+      break;\r
+    case CONTAIN:\r
+      objItemToken = jj_consume_token(CONTAIN);\r
+      break;\r
+    case PROPERTY:\r
+      objItemToken = jj_consume_token(PROPERTY);\r
+      break;\r
+    case ENDNODES:\r
+      objItemToken = jj_consume_token(ENDNODES);\r
+      break;\r
+    case MATCH:\r
+      objItemToken = jj_consume_token(MATCH);\r
+      break;\r
+    case PRIORITY:\r
+      objItemToken = jj_consume_token(PRIORITY);\r
+      break;\r
+    case TARGET:\r
+      objItemToken = jj_consume_token(TARGET);\r
+      break;\r
+    case CONDITION:\r
+      objItemToken = jj_consume_token(CONDITION);\r
+      break;\r
+    case ACTION:\r
+      objItemToken = jj_consume_token(ACTION);\r
+      break;\r
+    case ID:\r
+      objItemToken = jj_consume_token(ID);\r
+      break;\r
+    case NODES:\r
+      objItemToken = jj_consume_token(NODES);\r
+      break;\r
+    case CONNECTIONS:\r
+      objItemToken = jj_consume_token(CONNECTIONS);\r
+      break;\r
+    case FLOWS:\r
+      objItemToken = jj_consume_token(FLOWS);\r
+      break;\r
+    case OPERATIONS:\r
+      objItemToken = jj_consume_token(OPERATIONS);\r
+      break;\r
+    default:\r
+      jj_la1[53] = jj_gen;\r
+      jj_consume_token(-1);\r
+      throw new ParseException();\r
+    }\r
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+    case FROM:\r
+      jj_consume_token(FROM);\r
+      objTargetToken = jj_consume_token(ID);\r
+      break;\r
+    default:\r
+      jj_la1[54] = jj_gen;\r
+      ;\r
+    }\r
+    jj_consume_token(SEMICOLON);\r
+    if (objTargetToken == null)\r
+    {\r
+      String target = null;\r
+      {if (true) return query.query(userId,objItemToken.image,target);}\r
+    }\r
+    else\r
+    {\r
+      {if (true) return query.query(userId,objItemToken.image,objTargetToken.image);}\r
+    }\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 SimpleCharStream jj_input_stream;\r
+  /** Current token. */\r
+  static public Token token;\r
+  /** Next token. */\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 private int[] jj_la1_0;\r
+  static private int[] jj_la1_1;\r
+  static private int[] jj_la1_2;\r
+  static {\r
+      jj_la1_init_0();\r
+      jj_la1_init_1();\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
+   }\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
+   }\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
+   }\r
+\r
+  /** Constructor with InputStream. */\r
+  public NEMOparser(java.io.InputStream stream) {\r
+     this(stream, null);\r
+  }\r
+  /** Constructor with InputStream and supplied encoding */\r
+  public NEMOparser(java.io.InputStream stream, String encoding) {\r
+    if (jj_initialized_once) {\r
+      System.out.println("ERROR: Second call to constructor of static parser.  ");\r
+      System.out.println("       You must either use ReInit() or set the JavaCC option STATIC to false");\r
+      System.out.println("       during parser generation.");\r
+      throw new Error();\r
+    }\r
+    jj_initialized_once = true;\r
+    try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
+    token_source = new NEMOparserTokenManager(jj_input_stream);\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
+  }\r
+\r
+  /** Reinitialise. */\r
+  static public void ReInit(java.io.InputStream stream) {\r
+     ReInit(stream, null);\r
+  }\r
+  /** Reinitialise. */\r
+  static public void ReInit(java.io.InputStream stream, String encoding) {\r
+    try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
+    token_source.ReInit(jj_input_stream);\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
+  }\r
+\r
+  /** Constructor. */\r
+  public NEMOparser(java.io.Reader stream) {\r
+    if (jj_initialized_once) {\r
+      System.out.println("ERROR: Second call to constructor of static parser. ");\r
+      System.out.println("       You must either use ReInit() or set the JavaCC option STATIC to false");\r
+      System.out.println("       during parser generation.");\r
+      throw new Error();\r
+    }\r
+    jj_initialized_once = true;\r
+    jj_input_stream = new SimpleCharStream(stream, 1, 1);\r
+    token_source = new NEMOparserTokenManager(jj_input_stream);\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
+  }\r
+\r
+  /** Reinitialise. */\r
+  static public void ReInit(java.io.Reader stream) {\r
+    jj_input_stream.ReInit(stream, 1, 1);\r
+    token_source.ReInit(jj_input_stream);\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
+  }\r
+\r
+  /** Constructor with generated Token Manager. */\r
+  public NEMOparser(NEMOparserTokenManager tm) {\r
+    if (jj_initialized_once) {\r
+      System.out.println("ERROR: Second call to constructor of static parser. ");\r
+      System.out.println("       You must either use ReInit() or set the JavaCC option STATIC to false");\r
+      System.out.println("       during parser generation.");\r
+      throw new Error();\r
+    }\r
+    jj_initialized_once = true;\r
+    token_source = tm;\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
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(NEMOparserTokenManager tm) {\r
+    token_source = tm;\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
+  }\r
+\r
+  static private Token jj_consume_token(int kind) throws ParseException {\r
+    Token oldToken;\r
+    if ((oldToken = token).next != null) token = token.next;\r
+    else token = token.next = token_source.getNextToken();\r
+    jj_ntk = -1;\r
+    if (token.kind == kind) {\r
+      jj_gen++;\r
+      return token;\r
+    }\r
+    token = oldToken;\r
+    jj_kind = kind;\r
+    throw generateParseException();\r
+  }\r
+\r
+\r
+/** Get the next Token. */\r
+  static final public Token getNextToken() {\r
+    if (token.next != null) token = token.next;\r
+    else token = token.next = token_source.getNextToken();\r
+    jj_ntk = -1;\r
+    jj_gen++;\r
+    return token;\r
+  }\r
+\r
+/** Get the specific Token. */\r
+  static final public Token getToken(int index) {\r
+    Token t = token;\r
+    for (int i = 0; i < index; i++) {\r
+      if (t.next != null) t = t.next;\r
+      else t = t.next = token_source.getNextToken();\r
+    }\r
+    return t;\r
+  }\r
+\r
+  static private int jj_ntk() {\r
+    if ((jj_nt=token.next) == null)\r
+      return (jj_ntk = (token.next=token_source.getNextToken()).kind);\r
+    else\r
+      return (jj_ntk = jj_nt.kind);\r
+  }\r
+\r
+  static private List<int[]> jj_expentries = new ArrayList<int[]>();\r
+  static private int[] jj_expentry;\r
+  static private int jj_kind = -1;\r
+\r
+  /** Generate ParseException. */\r
+  static public ParseException generateParseException() {\r
+    jj_expentries.clear();\r
+    boolean[] la1tokens = new boolean[72];\r
+    if (jj_kind >= 0) {\r
+      la1tokens[jj_kind] = true;\r
+      jj_kind = -1;\r
+    }\r
+    for (int i = 0; i < 55; 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
+            la1tokens[j] = true;\r
+          }\r
+          if ((jj_la1_1[i] & (1<<j)) != 0) {\r
+            la1tokens[32+j] = true;\r
+          }\r
+          if ((jj_la1_2[i] & (1<<j)) != 0) {\r
+            la1tokens[64+j] = true;\r
+          }\r
+        }\r
+      }\r
+    }\r
+    for (int i = 0; i < 72; i++) {\r
+      if (la1tokens[i]) {\r
+        jj_expentry = new int[1];\r
+        jj_expentry[0] = i;\r
+        jj_expentries.add(jj_expentry);\r
+      }\r
+    }\r
+    int[][] exptokseq = new int[jj_expentries.size()][];\r
+    for (int i = 0; i < jj_expentries.size(); i++) {\r
+      exptokseq[i] = jj_expentries.get(i);\r
+    }\r
+    return new ParseException(token, exptokseq, tokenImage);\r
+  }\r
+\r
+  /** Enable tracing. */\r
+  static final public void enable_tracing() {\r
+  }\r
+\r
+  /** Disable tracing. */\r
+  static final public void disable_tracing() {\r
+  }\r
+\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserConstants.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserConstants.java
new file mode 100644 (file)
index 0000000..c77f449
--- /dev/null
@@ -0,0 +1,234 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. NEMOparserConstants.java */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+\r
+/**\r
+ * Token literal values and constants.\r
+ * Generated by org.javacc.parser.OtherFilesGen#start()\r
+ */\r
+public interface NEMOparserConstants {\r
+\r
+  /** End of File. */\r
+  int EOF = 0;\r
+  /** RegularExpression Id. */\r
+  int COLON = 5;\r
+  /** RegularExpression Id. */\r
+  int COMMA = 6;\r
+  /** RegularExpression Id. */\r
+  int SEMICOLON = 7;\r
+  /** RegularExpression Id. */\r
+  int LPAREN = 8;\r
+  /** RegularExpression Id. */\r
+  int RPAREN = 9;\r
+  /** RegularExpression Id. */\r
+  int LBRACKET = 10;\r
+  /** RegularExpression Id. */\r
+  int RBRACKET = 11;\r
+  /** RegularExpression Id. */\r
+  int AND = 12;\r
+  /** RegularExpression Id. */\r
+  int OR = 13;\r
+  /** RegularExpression Id. */\r
+  int NOT = 14;\r
+  /** RegularExpression Id. */\r
+  int EQUAL = 15;\r
+  /** RegularExpression Id. */\r
+  int GTHAN = 16;\r
+  /** RegularExpression Id. */\r
+  int LTHAN = 17;\r
+  /** RegularExpression Id. */\r
+  int NLTHAN = 18;\r
+  /** RegularExpression Id. */\r
+  int NMTHAN = 19;\r
+  /** RegularExpression Id. */\r
+  int BETWEEN = 20;\r
+  /** RegularExpression Id. */\r
+  int UNDERSCORE = 21;\r
+  /** RegularExpression Id. */\r
+  int JOINER = 22;\r
+  /** RegularExpression Id. */\r
+  int FSLASH = 23;\r
+  /** RegularExpression Id. */\r
+  int DOT = 24;\r
+  /** RegularExpression Id. */\r
+  int CREATE = 25;\r
+  /** RegularExpression Id. */\r
+  int IMPORT = 26;\r
+  /** RegularExpression Id. */\r
+  int UPDATE = 27;\r
+  /** RegularExpression Id. */\r
+  int DELETE = 28;\r
+  /** RegularExpression Id. */\r
+  int USER = 29;\r
+  /** RegularExpression Id. */\r
+  int NODE = 30;\r
+  /** RegularExpression Id. */\r
+  int TYPE = 31;\r
+  /** RegularExpression Id. */\r
+  int CONTAIN = 32;\r
+  /** RegularExpression Id. */\r
+  int PROPERTY = 33;\r
+  /** RegularExpression Id. */\r
+  int CONNECTION = 34;\r
+  /** RegularExpression Id. */\r
+  int ENDNODES = 35;\r
+  /** RegularExpression Id. */\r
+  int FLOW = 36;\r
+  /** RegularExpression Id. */\r
+  int MATCH = 37;\r
+  /** RegularExpression Id. */\r
+  int OPERATION = 38;\r
+  /** RegularExpression Id. */\r
+  int TARGET = 39;\r
+  /** RegularExpression Id. */\r
+  int CONDITION = 40;\r
+  /** RegularExpression Id. */\r
+  int ACTION = 41;\r
+  /** RegularExpression Id. */\r
+  int QUERY = 42;\r
+  /** RegularExpression Id. */\r
+  int FROM = 43;\r
+  /** RegularExpression Id. */\r
+  int PRIORITY = 44;\r
+  /** RegularExpression Id. */\r
+  int TRANSACTION = 45;\r
+  /** RegularExpression Id. */\r
+  int BEGIN = 46;\r
+  /** RegularExpression Id. */\r
+  int END = 47;\r
+  /** RegularExpression Id. */\r
+  int NODES = 48;\r
+  /** RegularExpression Id. */\r
+  int CONNECTIONS = 49;\r
+  /** RegularExpression Id. */\r
+  int FLOWS = 50;\r
+  /** RegularExpression Id. */\r
+  int OPERATIONS = 51;\r
+  /** RegularExpression Id. */\r
+  int UNUMBER = 52;\r
+  /** RegularExpression Id. */\r
+  int ID = 53;\r
+  /** RegularExpression Id. */\r
+  int ETHPREF = 54;\r
+  /** RegularExpression Id. */\r
+  int IPV4PREF = 55;\r
+  /** RegularExpression Id. */\r
+  int DATEVAL = 56;\r
+  /** RegularExpression Id. */\r
+  int TIMEVAL = 57;\r
+  /** RegularExpression Id. */\r
+  int FULLTIME = 58;\r
+  /** RegularExpression Id. */\r
+  int ETHADDR = 59;\r
+  /** RegularExpression Id. */\r
+  int IPV4ADDR = 60;\r
+  /** RegularExpression Id. */\r
+  int UBYTE = 61;\r
+  /** RegularExpression Id. */\r
+  int HEXDIGIT = 62;\r
+  /** RegularExpression Id. */\r
+  int YEAR = 63;\r
+  /** RegularExpression Id. */\r
+  int SMONDAY = 64;\r
+  /** RegularExpression Id. */\r
+  int LMONDAY = 65;\r
+  /** RegularExpression Id. */\r
+  int FEBDAY = 66;\r
+  /** RegularExpression Id. */\r
+  int HOUR = 67;\r
+  /** RegularExpression Id. */\r
+  int MINUTE = 68;\r
+  /** RegularExpression Id. */\r
+  int SECOND = 69;\r
+  /** RegularExpression Id. */\r
+  int DIGIT = 70;\r
+  /** RegularExpression Id. */\r
+  int LETTER = 71;\r
+\r
+  /** Lexical state. */\r
+  int DEFAULT = 0;\r
+\r
+  /** Literal token values. */\r
+  String[] tokenImage = {\r
+    "<EOF>",\r
+    "\" \"",\r
+    "\"\\r\"",\r
+    "\"\\t\"",\r
+    "\"\\n\"",\r
+    "\":\"",\r
+    "\",\"",\r
+    "\";\"",\r
+    "\"(\"",\r
+    "\")\"",\r
+    "\"[\"",\r
+    "\"]\"",\r
+    "\"&&\"",\r
+    "\"||\"",\r
+    "\"!\"",\r
+    "\"==\"",\r
+    "\">\"",\r
+    "\"<\"",\r
+    "\">=\"",\r
+    "\"<=\"",\r
+    "\"*\"",\r
+    "\"_\"",\r
+    "\"-\"",\r
+    "\"/\"",\r
+    "\".\"",\r
+    "\"CREATE\"",\r
+    "\"IMPORT\"",\r
+    "\"UPDATE\"",\r
+    "\"DELETE\"",\r
+    "\"User\"",\r
+    "\"Node\"",\r
+    "\"Type\"",\r
+    "\"Contain\"",\r
+    "\"Property\"",\r
+    "\"Connection\"",\r
+    "\"Endnodes\"",\r
+    "\"Flow\"",\r
+    "\"Match\"",\r
+    "\"Operation\"",\r
+    "\"Target\"",\r
+    "\"Condition\"",\r
+    "\"Action\"",\r
+    "\"Query\"",\r
+    "\"From\"",\r
+    "\"Priority\"",\r
+    "\"Transaction\"",\r
+    "\"Begin\"",\r
+    "\"End\"",\r
+    "\"nodes\"",\r
+    "\"connections\"",\r
+    "\"flows\"",\r
+    "\"operations\"",\r
+    "<UNUMBER>",\r
+    "<ID>",\r
+    "<ETHPREF>",\r
+    "<IPV4PREF>",\r
+    "<DATEVAL>",\r
+    "<TIMEVAL>",\r
+    "<FULLTIME>",\r
+    "<ETHADDR>",\r
+    "<IPV4ADDR>",\r
+    "<UBYTE>",\r
+    "<HEXDIGIT>",\r
+    "<YEAR>",\r
+    "<SMONDAY>",\r
+    "<LMONDAY>",\r
+    "<FEBDAY>",\r
+    "<HOUR>",\r
+    "<MINUTE>",\r
+    "<SECOND>",\r
+    "<DIGIT>",\r
+    "<LETTER>",\r
+  };\r
+\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java
new file mode 100644 (file)
index 0000000..f29731c
--- /dev/null
@@ -0,0 +1,1855 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. NEMOparserTokenManager.java */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+/** Token Manager. */\r
+public class NEMOparserTokenManager implements NEMOparserConstants\r
+{\r
+\r
+  /** Debug output. */\r
+  public static  java.io.PrintStream debugStream = System.out;\r
+  /** Set debug output. */\r
+  public static  void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }\r
+private static final int jjStopStringLiteralDfa_0(int pos, long active0)\r
+{\r
+   switch (pos)\r
+   {\r
+      case 0:\r
+         if ((active0 & 0x9000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            return 203;\r
+         }\r
+         if ((active0 & 0x6000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            return 84;\r
+         }\r
+         return -1;\r
+      case 1:\r
+         if ((active0 & 0xf000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 1;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 2:\r
+         if ((active0 & 0xf000000000000L) != 0L)\r
+         {\r
+            if (jjmatchedPos != 2)\r
+            {\r
+               jjmatchedKind = 53;\r
+               jjmatchedPos = 2;\r
+            }\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 3:\r
+         if ((active0 & 0xf000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 3;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 4:\r
+         if ((active0 & 0xa000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 4;\r
+            return 203;\r
+         }\r
+         if ((active0 & 0x5000000000000L) != 0L)\r
+            return 203;\r
+         return -1;\r
+      case 5:\r
+         if ((active0 & 0xa000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 5;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 6:\r
+         if ((active0 & 0xa000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 6;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 7:\r
+         if ((active0 & 0xa000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 7;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 8:\r
+         if ((active0 & 0xa000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 8;\r
+            return 203;\r
+         }\r
+         return -1;\r
+      case 9:\r
+         if ((active0 & 0x2000000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 53;\r
+            jjmatchedPos = 9;\r
+            return 203;\r
+         }\r
+         if ((active0 & 0x8000000000000L) != 0L)\r
+            return 203;\r
+         return -1;\r
+      default :\r
+         return -1;\r
+   }\r
+}\r
+private static final int jjStartNfa_0(int pos, long active0)\r
+{\r
+   return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);\r
+}\r
+static private int jjStopAtPos(int pos, int kind)\r
+{\r
+   jjmatchedKind = kind;\r
+   jjmatchedPos = pos;\r
+   return pos + 1;\r
+}\r
+static private int jjMoveStringLiteralDfa0_0()\r
+{\r
+   switch(curChar)\r
+   {\r
+      case 33:\r
+         return jjStopAtPos(0, 14);\r
+      case 38:\r
+         return jjMoveStringLiteralDfa1_0(0x1000L);\r
+      case 40:\r
+         return jjStopAtPos(0, 8);\r
+      case 41:\r
+         return jjStopAtPos(0, 9);\r
+      case 42:\r
+         return jjStopAtPos(0, 20);\r
+      case 44:\r
+         return jjStopAtPos(0, 6);\r
+      case 58:\r
+         return jjStopAtPos(0, 5);\r
+      case 59:\r
+         return jjStopAtPos(0, 7);\r
+      case 60:\r
+         jjmatchedKind = 17;\r
+         return jjMoveStringLiteralDfa1_0(0x80000L);\r
+      case 61:\r
+         return jjMoveStringLiteralDfa1_0(0x8000L);\r
+      case 62:\r
+         jjmatchedKind = 16;\r
+         return jjMoveStringLiteralDfa1_0(0x40000L);\r
+      case 65:\r
+         return jjMoveStringLiteralDfa1_0(0x20000000000L);\r
+      case 66:\r
+         return jjMoveStringLiteralDfa1_0(0x400000000000L);\r
+      case 67:\r
+         return jjMoveStringLiteralDfa1_0(0x10502000000L);\r
+      case 68:\r
+         return jjMoveStringLiteralDfa1_0(0x10000000L);\r
+      case 69:\r
+         return jjMoveStringLiteralDfa1_0(0x800800000000L);\r
+      case 70:\r
+         return jjMoveStringLiteralDfa1_0(0x81000000000L);\r
+      case 73:\r
+         return jjMoveStringLiteralDfa1_0(0x4000000L);\r
+      case 77:\r
+         return jjMoveStringLiteralDfa1_0(0x2000000000L);\r
+      case 78:\r
+         return jjMoveStringLiteralDfa1_0(0x40000000L);\r
+      case 79:\r
+         return jjMoveStringLiteralDfa1_0(0x4000000000L);\r
+      case 80:\r
+         return jjMoveStringLiteralDfa1_0(0x100200000000L);\r
+      case 81:\r
+         return jjMoveStringLiteralDfa1_0(0x40000000000L);\r
+      case 84:\r
+         return jjMoveStringLiteralDfa1_0(0x208080000000L);\r
+      case 85:\r
+         return jjMoveStringLiteralDfa1_0(0x28000000L);\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
+      case 102:\r
+         return jjMoveStringLiteralDfa1_0(0x4000000000000L);\r
+      case 110:\r
+         return jjMoveStringLiteralDfa1_0(0x1000000000000L);\r
+      case 111:\r
+         return jjMoveStringLiteralDfa1_0(0x8000000000000L);\r
+      case 124:\r
+         return jjMoveStringLiteralDfa1_0(0x2000L);\r
+      default :\r
+         return jjMoveNfa_0(0, 0);\r
+   }\r
+}\r
+static private int jjMoveStringLiteralDfa1_0(long active0)\r
+{\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(0, active0);\r
+      return 1;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 38:\r
+         if ((active0 & 0x1000L) != 0L)\r
+            return jjStopAtPos(1, 12);\r
+         break;\r
+      case 61:\r
+         if ((active0 & 0x8000L) != 0L)\r
+            return jjStopAtPos(1, 15);\r
+         else if ((active0 & 0x40000L) != 0L)\r
+            return jjStopAtPos(1, 18);\r
+         else if ((active0 & 0x80000L) != 0L)\r
+            return jjStopAtPos(1, 19);\r
+         break;\r
+      case 69:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x10000000L);\r
+      case 77:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);\r
+      case 80:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x8000000L);\r
+      case 82:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x2000000L);\r
+      case 97:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0xa000000000L);\r
+      case 99:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L);\r
+      case 101:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);\r
+      case 108:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x4001000000000L);\r
+      case 110:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x800800000000L);\r
+      case 111:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x3010540000000L);\r
+      case 112:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x8004000000000L);\r
+      case 114:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x380200000000L);\r
+      case 115:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x20000000L);\r
+      case 117:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L);\r
+      case 121:\r
+         return jjMoveStringLiteralDfa2_0(active0, 0x80000000L);\r
+      case 124:\r
+         if ((active0 & 0x2000L) != 0L)\r
+            return jjStopAtPos(1, 13);\r
+         break;\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(0, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa2_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(0, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(1, active0);\r
+      return 2;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 68:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000000L);\r
+      case 69:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x2000000L);\r
+      case 76:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x10000000L);\r
+      case 80:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x4000000L);\r
+      case 97:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);\r
+      case 100:\r
+         if ((active0 & 0x800000000000L) != 0L)\r
+         {\r
+            jjmatchedKind = 47;\r
+            jjmatchedPos = 2;\r
+         }\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x1000840000000L);\r
+      case 101:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x8044020000000L);\r
+      case 103:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);\r
+      case 105:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);\r
+      case 110:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x2010500000000L);\r
+      case 111:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x4081200000000L);\r
+      case 112:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x80000000L);\r
+      case 114:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L);\r
+      case 116:\r
+         return jjMoveStringLiteralDfa3_0(active0, 0x22000000000L);\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(1, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa3_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(1, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(2, active0);\r
+      return 3;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 65:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0xa000000L);\r
+      case 69:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x10000000L);\r
+      case 79:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x4000000L);\r
+      case 99:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L);\r
+      case 100:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);\r
+      case 101:\r
+         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
+      case 103:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);\r
+      case 105:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x420000000000L);\r
+      case 109:\r
+         if ((active0 & 0x80000000000L) != 0L)\r
+            return jjStopAtPos(3, 43);\r
+         break;\r
+      case 110:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x2200c00000000L);\r
+      case 111:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L);\r
+      case 112:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x200000000L);\r
+      case 114:\r
+         if ((active0 & 0x20000000L) != 0L)\r
+            return jjStopAtPos(3, 29);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x8044000000000L);\r
+      case 116:\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x100000000L);\r
+      case 119:\r
+         if ((active0 & 0x1000000000L) != 0L)\r
+            return jjStopAtPos(3, 36);\r
+         return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L);\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(2, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa4_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(2, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(3, active0);\r
+      return 4;\r
+   }\r
+   switch(curChar)\r
+   {\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
+      case 101:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x2008600000000L);\r
+      case 104:\r
+         if ((active0 & 0x2000000000L) != 0L)\r
+            return jjStopAtPos(4, 37);\r
+         break;\r
+      case 105:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L);\r
+      case 110:\r
+         if ((active0 & 0x400000000000L) != 0L)\r
+            return jjStopAtPos(4, 46);\r
+         break;\r
+      case 111:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x20800000000L);\r
+      case 114:\r
+         return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L);\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
+      case 121:\r
+         if ((active0 & 0x40000000000L) != 0L)\r
+            return jjStopAtPos(4, 42);\r
+         break;\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(3, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa5_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(3, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(4, active0);\r
+      return 5;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 69:\r
+         if ((active0 & 0x2000000L) != 0L)\r
+            return jjStopAtPos(5, 25);\r
+         else if ((active0 & 0x8000000L) != 0L)\r
+            return jjStopAtPos(5, 27);\r
+         else if ((active0 & 0x10000000L) != 0L)\r
+            return jjStopAtPos(5, 28);\r
+         break;\r
+      case 84:\r
+         if ((active0 & 0x4000000L) != 0L)\r
+            return jjStopAtPos(5, 26);\r
+         break;\r
+      case 97:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L);\r
+      case 99:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x2000400000000L);\r
+      case 100:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x800000000L);\r
+      case 105:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x100100000000L);\r
+      case 110:\r
+         if ((active0 & 0x20000000000L) != 0L)\r
+            return jjStopAtPos(5, 41);\r
+         break;\r
+      case 114:\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x200000000L);\r
+      case 116:\r
+         if ((active0 & 0x8000000000L) != 0L)\r
+            return jjStopAtPos(5, 39);\r
+         return jjMoveStringLiteralDfa6_0(active0, 0x8014000000000L);\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(4, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa6_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(4, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(5, active0);\r
+      return 6;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 99:\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L);\r
+      case 101:\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x800000000L);\r
+      case 105:\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x8014000000000L);\r
+      case 110:\r
+         if ((active0 & 0x100000000L) != 0L)\r
+            return jjStopAtPos(6, 32);\r
+         break;\r
+      case 116:\r
+         return jjMoveStringLiteralDfa7_0(active0, 0x2100600000000L);\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(5, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa7_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(5, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(6, active0);\r
+      return 7;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 105:\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x2000400000000L);\r
+      case 111:\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x8014000000000L);\r
+      case 115:\r
+         if ((active0 & 0x800000000L) != 0L)\r
+            return jjStopAtPos(7, 35);\r
+         break;\r
+      case 116:\r
+         return jjMoveStringLiteralDfa8_0(active0, 0x200000000000L);\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
+         break;\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(6, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa8_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(6, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(7, active0);\r
+      return 8;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 105:\r
+         return jjMoveStringLiteralDfa9_0(active0, 0x200000000000L);\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
+      case 111:\r
+         return jjMoveStringLiteralDfa9_0(active0, 0x2000400000000L);\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(7, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa9_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(7, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(8, active0);\r
+      return 9;\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
+      case 111:\r
+         return jjMoveStringLiteralDfa10_0(active0, 0x200000000000L);\r
+      case 115:\r
+         if ((active0 & 0x8000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(9, 51, 203);\r
+         break;\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(8, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa10_0(long old0, long active0)\r
+{\r
+   if (((active0 &= old0)) == 0L)\r
+      return jjStartNfa_0(8, old0);\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) {\r
+      jjStopStringLiteralDfa_0(9, active0);\r
+      return 10;\r
+   }\r
+   switch(curChar)\r
+   {\r
+      case 110:\r
+         if ((active0 & 0x200000000000L) != 0L)\r
+            return jjStopAtPos(10, 45);\r
+         break;\r
+      case 115:\r
+         if ((active0 & 0x2000000000000L) != 0L)\r
+            return jjStartNfaWithStates_0(10, 49, 203);\r
+         break;\r
+      default :\r
+         break;\r
+   }\r
+   return jjStartNfa_0(9, active0);\r
+}\r
+static private int jjStartNfaWithStates_0(int pos, int kind, int state)\r
+{\r
+   jjmatchedKind = kind;\r
+   jjmatchedPos = pos;\r
+   try { curChar = input_stream.readChar(); }\r
+   catch(java.io.IOException e) { return pos + 1; }\r
+   return jjMoveNfa_0(state, pos + 1);\r
+}\r
+static private int jjMoveNfa_0(int startState, int curPos)\r
+{\r
+   int startsAt = 0;\r
+   jjnewStateCnt = 203;\r
+   int i = 1;\r
+   jjstateSet[0] = startState;\r
+   int kind = 0x7fffffff;\r
+   for (;;)\r
+   {\r
+      if (++jjround == 0x7fffffff)\r
+         ReInitRounds();\r
+      if (curChar < 64)\r
+      {\r
+         long l = 1L << curChar;\r
+         do\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
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjAddStates(5, 6);\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 52)\r
+                        kind = 52;\r
+                     jjCheckNAddStates(7, 9);\r
+                  }\r
+                  else if (curChar == 48)\r
+                  {\r
+                     if (kind > 52)\r
+                        kind = 52;\r
+                     jjCheckNAdd(4);\r
+                  }\r
+                  if (curChar == 50)\r
+                     jjAddStates(10, 11);\r
+                  else if (curChar == 49)\r
+                     jjCheckNAddStates(12, 14);\r
+                  if (curChar == 50)\r
+                     jjAddStates(15, 17);\r
+                  break;\r
+               case 1:\r
+                  if ((0x3ff200000000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(1, 2);\r
+                  break;\r
+               case 2:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 53)\r
+                     kind = 53;\r
+                  jjCheckNAdd(2);\r
+                  break;\r
+               case 3:\r
+                  if (curChar != 48)\r
+                     break;\r
+                  if (kind > 52)\r
+                     kind = 52;\r
+                  jjCheckNAdd(4);\r
+                  break;\r
+               case 4:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(5);\r
+                  break;\r
+               case 5:\r
+                  if (curChar == 58)\r
+                     jjCheckNAddStates(18, 20);\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
+                  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
+                  break;\r
+               case 12:\r
+                  if ((0x3e000000000000L & l) != 0L)\r
+                     jjCheckNAdd(7);\r
+                  break;\r
+               case 13:\r
+                  if ((0x3fe000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 52)\r
+                     kind = 52;\r
+                  jjCheckNAddStates(7, 9);\r
+                  break;\r
+               case 14:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 52)\r
+                     kind = 52;\r
+                  jjCheckNAdd(14);\r
+                  break;\r
+               case 15:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(16);\r
+                  break;\r
+               case 16:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(24, 28);\r
+                  break;\r
+               case 17:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(18);\r
+                  break;\r
+               case 18:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(29, 33);\r
+                  break;\r
+               case 19:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(20);\r
+                  break;\r
+               case 20:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(34, 38);\r
+                  break;\r
+               case 21:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 55)\r
+                     kind = 55;\r
+                  jjCheckNAdd(22);\r
+                  break;\r
+               case 22:\r
+                  if (curChar == 47)\r
+                     jjAddStates(39, 41);\r
+                  break;\r
+               case 23:\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 55)\r
+                     kind = 55;\r
+                  break;\r
+               case 24:\r
+                  if ((0x6000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 25;\r
+                  break;\r
+               case 25:\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 55)\r
+                     kind = 55;\r
+                  break;\r
+               case 26:\r
+                  if (curChar == 51)\r
+                     jjstateSet[jjnewStateCnt++] = 27;\r
+                  break;\r
+               case 27:\r
+                  if ((0x7000000000000L & l) != 0L && kind > 55)\r
+                     kind = 55;\r
+                  break;\r
+               case 28:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(21);\r
+                  break;\r
+               case 29:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 30;\r
+                  break;\r
+               case 30:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(21);\r
+                  break;\r
+               case 31:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 32;\r
+                  break;\r
+               case 32:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(21);\r
+                  break;\r
+               case 33:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 34;\r
+                  break;\r
+               case 34:\r
+                  if ((0x3f000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 55)\r
+                     kind = 55;\r
+                  jjCheckNAdd(22);\r
+                  break;\r
+               case 35:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 33;\r
+                  break;\r
+               case 36:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(19);\r
+                  break;\r
+               case 37:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 38;\r
+                  break;\r
+               case 38:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(19);\r
+                  break;\r
+               case 39:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 40;\r
+                  break;\r
+               case 40:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(19);\r
+                  break;\r
+               case 41:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 42;\r
+                  break;\r
+               case 42:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(20);\r
+                  break;\r
+               case 43:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 41;\r
+                  break;\r
+               case 44:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(17);\r
+                  break;\r
+               case 45:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 46;\r
+                  break;\r
+               case 46:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(17);\r
+                  break;\r
+               case 47:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 48;\r
+                  break;\r
+               case 48:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(17);\r
+                  break;\r
+               case 49:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 50;\r
+                  break;\r
+               case 50:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(18);\r
+                  break;\r
+               case 51:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 49;\r
+                  break;\r
+               case 52:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(53);\r
+                  break;\r
+               case 53:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(42, 46);\r
+                  break;\r
+               case 54:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(55);\r
+                  break;\r
+               case 55:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(47, 51);\r
+                  break;\r
+               case 56:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(57);\r
+                  break;\r
+               case 57:\r
+                  if (curChar == 46)\r
+                     jjCheckNAddStates(52, 56);\r
+                  break;\r
+               case 58:\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 60)\r
+                     kind = 60;\r
+                  break;\r
+               case 59:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(58);\r
+                  break;\r
+               case 60:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 61;\r
+                  break;\r
+               case 61:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(58);\r
+                  break;\r
+               case 62:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 63;\r
+                  break;\r
+               case 63:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(58);\r
+                  break;\r
+               case 64:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 65;\r
+                  break;\r
+               case 65:\r
+                  if ((0x3f000000000000L & l) != 0L && kind > 60)\r
+                     kind = 60;\r
+                  break;\r
+               case 66:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 64;\r
+                  break;\r
+               case 67:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(56);\r
+                  break;\r
+               case 68:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 69;\r
+                  break;\r
+               case 69:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(56);\r
+                  break;\r
+               case 70:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 71;\r
+                  break;\r
+               case 71:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(56);\r
+                  break;\r
+               case 72:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 73;\r
+                  break;\r
+               case 73:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(57);\r
+                  break;\r
+               case 74:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 72;\r
+                  break;\r
+               case 75:\r
+                  if ((0x3fe000000000000L & l) != 0L)\r
+                     jjCheckNAdd(54);\r
+                  break;\r
+               case 76:\r
+                  if (curChar == 49)\r
+                     jjstateSet[jjnewStateCnt++] = 77;\r
+                  break;\r
+               case 77:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(54);\r
+                  break;\r
+               case 78:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 79;\r
+                  break;\r
+               case 79:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(54);\r
+                  break;\r
+               case 80:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 81;\r
+                  break;\r
+               case 81:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(55);\r
+                  break;\r
+               case 82:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 80;\r
+                  break;\r
+               case 83:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjAddStates(5, 6);\r
+                  break;\r
+               case 85:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 86;\r
+                  break;\r
+               case 86:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 87;\r
+                  break;\r
+               case 87:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 88;\r
+                  break;\r
+               case 88:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 89;\r
+                  break;\r
+               case 89:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 90;\r
+                  break;\r
+               case 90:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 91;\r
+                  break;\r
+               case 91:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 92;\r
+                  break;\r
+               case 92:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 93;\r
+                  break;\r
+               case 93:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 94;\r
+                  break;\r
+               case 94:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 95;\r
+                  break;\r
+               case 95:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 96;\r
+                  break;\r
+               case 96:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 97;\r
+                  break;\r
+               case 97:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 98;\r
+                  break;\r
+               case 98:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 99;\r
+                  break;\r
+               case 99:\r
+                  if ((0x3ff000000000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 54)\r
+                     kind = 54;\r
+                  jjstateSet[jjnewStateCnt++] = 100;\r
+                  break;\r
+               case 100:\r
+                  if (curChar == 47)\r
+                     jjAddStates(57, 59);\r
+                  break;\r
+               case 101:\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 54)\r
+                     kind = 54;\r
+                  break;\r
+               case 102:\r
+                  if ((0xe000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 103;\r
+                  break;\r
+               case 103:\r
+                  if ((0x3ff000000000000L & l) != 0L && kind > 54)\r
+                     kind = 54;\r
+                  break;\r
+               case 104:\r
+                  if (curChar == 52)\r
+                     jjstateSet[jjnewStateCnt++] = 105;\r
+                  break;\r
+               case 105:\r
+                  if ((0x1ff000000000000L & l) != 0L && kind > 54)\r
+                     kind = 54;\r
+                  break;\r
+               case 106:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 107;\r
+                  break;\r
+               case 107:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 108;\r
+                  break;\r
+               case 108:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 109;\r
+                  break;\r
+               case 109:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 110;\r
+                  break;\r
+               case 110:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 111;\r
+                  break;\r
+               case 111:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 112;\r
+                  break;\r
+               case 112:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 113;\r
+                  break;\r
+               case 113:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 114;\r
+                  break;\r
+               case 114:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 115;\r
+                  break;\r
+               case 115:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 116;\r
+                  break;\r
+               case 116:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 117;\r
+                  break;\r
+               case 117:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 118;\r
+                  break;\r
+               case 118:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 119;\r
+                  break;\r
+               case 119:\r
+                  if (curChar == 58)\r
+                     jjstateSet[jjnewStateCnt++] = 120;\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
+                  break;\r
+               case 122:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAddStates(0, 4);\r
+                  break;\r
+               case 123:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 124;\r
+                  break;\r
+               case 124:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 125;\r
+                  break;\r
+               case 125:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 126;\r
+                  break;\r
+               case 126:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(60, 64);\r
+                  break;\r
+               case 127:\r
+                  if ((0x1aa000000000000L & l) != 0L)\r
+                     jjCheckNAdd(128);\r
+                  break;\r
+               case 128:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(65, 68);\r
+                  break;\r
+               case 129:\r
+               case 137:\r
+               case 142:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(130);\r
+                  break;\r
+               case 130:\r
+                  if ((0x3fe000000000000L & l) != 0L && kind > 56)\r
+                     kind = 56;\r
+                  break;\r
+               case 131:\r
+               case 138:\r
+               case 143:\r
+                  if ((0x6000000000000L & l) != 0L)\r
+                     jjCheckNAdd(132);\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
+                  break;\r
+               case 136:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(69, 72);\r
+                  break;\r
+               case 139:\r
+                  if (curChar == 48 && kind > 56)\r
+                     kind = 56;\r
+                  break;\r
+               case 140:\r
+                  if (curChar == 51)\r
+                     jjstateSet[jjnewStateCnt++] = 139;\r
+                  break;\r
+               case 141:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(73, 75);\r
+                  break;\r
+               case 144:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 141;\r
+                  break;\r
+               case 145:\r
+                  if (curChar == 48)\r
+                     jjCheckNAddStates(76, 78);\r
+                  break;\r
+               case 146:\r
+                  if (curChar == 49)\r
+                     jjAddStates(79, 81);\r
+                  break;\r
+               case 147:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(128);\r
+                  break;\r
+               case 148:\r
+                  if (curChar == 50)\r
+                     jjCheckNAdd(128);\r
+                  break;\r
+               case 149:\r
+                  if (curChar == 49)\r
+                     jjCheckNAdd(136);\r
+                  break;\r
+               case 150:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 151;\r
+                  break;\r
+               case 151:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 152;\r
+                  break;\r
+               case 152:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 153;\r
+                  break;\r
+               case 153:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(82, 86);\r
+                  break;\r
+               case 154:\r
+                  if ((0x1aa000000000000L & l) != 0L)\r
+                     jjCheckNAdd(155);\r
+                  break;\r
+               case 155:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(87, 90);\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
+                     jjCheckNAdd(158);\r
+                  break;\r
+               case 158:\r
+                  if (curChar == 44)\r
+                     jjCheckNAddStates(91, 94);\r
+                  break;\r
+               case 159:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(160);\r
+                  break;\r
+               case 160:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(161);\r
+                  break;\r
+               case 161:\r
+                  if (curChar == 58)\r
+                     jjCheckNAddStates(95, 97);\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
+                  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
+                  break;\r
+               case 168:\r
+                  if ((0x3e000000000000L & l) != 0L)\r
+                     jjCheckNAdd(163);\r
+                  break;\r
+               case 169:\r
+                  if (curChar == 49)\r
+                     jjCheckNAdd(160);\r
+                  break;\r
+               case 170:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 171;\r
+                  break;\r
+               case 171:\r
+                  if ((0xf000000000000L & l) != 0L)\r
+                     jjCheckNAdd(161);\r
+                  break;\r
+               case 172:\r
+               case 179:\r
+               case 184:\r
+                  if ((0x6000000000000L & l) != 0L)\r
+                     jjCheckNAdd(173);\r
+                  break;\r
+               case 173:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(158);\r
+                  break;\r
+               case 174:\r
+                  if (curChar == 51)\r
+                     jjstateSet[jjnewStateCnt++] = 175;\r
+                  break;\r
+               case 175:\r
+                  if ((0x3000000000000L & l) != 0L)\r
+                     jjCheckNAdd(158);\r
+                  break;\r
+               case 176:\r
+                  if ((0x250000000000000L & l) != 0L)\r
+                     jjCheckNAdd(177);\r
+                  break;\r
+               case 177:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(101, 104);\r
+                  break;\r
+               case 180:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(158);\r
+                  break;\r
+               case 181:\r
+                  if (curChar == 51)\r
+                     jjstateSet[jjnewStateCnt++] = 180;\r
+                  break;\r
+               case 182:\r
+                  if (curChar == 45)\r
+                     jjCheckNAddStates(105, 107);\r
+                  break;\r
+               case 185:\r
+                  if (curChar == 50)\r
+                     jjstateSet[jjnewStateCnt++] = 182;\r
+                  break;\r
+               case 186:\r
+                  if (curChar == 48)\r
+                     jjCheckNAddStates(108, 110);\r
+                  break;\r
+               case 187:\r
+                  if (curChar == 49)\r
+                     jjAddStates(111, 113);\r
+                  break;\r
+               case 188:\r
+                  if (curChar == 48)\r
+                     jjCheckNAdd(155);\r
+                  break;\r
+               case 189:\r
+                  if (curChar == 50)\r
+                     jjCheckNAdd(155);\r
+                  break;\r
+               case 190:\r
+                  if (curChar == 49)\r
+                     jjCheckNAdd(177);\r
+                  break;\r
+               case 191:\r
+                  if (curChar == 49)\r
+                     jjCheckNAddStates(12, 14);\r
+                  break;\r
+               case 192:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(15);\r
+                  break;\r
+               case 193:\r
+                  if ((0x3ff000000000000L & l) != 0L)\r
+                     jjCheckNAdd(52);\r
+                  break;\r
+               case 194:\r
+                  if (curChar == 50)\r
+                     jjAddStates(15, 17);\r
+                  break;\r
+               case 195:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(15);\r
+                  break;\r
+               case 196:\r
+                  if ((0xf000000000000L & l) != 0L)\r
+                     jjCheckNAdd(5);\r
+                  break;\r
+               case 197:\r
+                  if ((0x1f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(52);\r
+                  break;\r
+               case 198:\r
+                  if (curChar == 50)\r
+                     jjAddStates(10, 11);\r
+                  break;\r
+               case 199:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 200;\r
+                  break;\r
+               case 200:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(16);\r
+                  break;\r
+               case 201:\r
+                  if (curChar == 53)\r
+                     jjstateSet[jjnewStateCnt++] = 202;\r
+                  break;\r
+               case 202:\r
+                  if ((0x3f000000000000L & l) != 0L)\r
+                     jjCheckNAdd(53);\r
+                  break;\r
+               default : break;\r
+            }\r
+         } while(i != startsAt);\r
+      }\r
+      else if (curChar < 128)\r
+      {\r
+         long l = 1L << (curChar & 077);\r
+         do\r
+         {\r
+            switch(jjstateSet[--i])\r
+            {\r
+               case 84:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(1, 2);\r
+                  if ((0x7fffffe00000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 53)\r
+                        kind = 53;\r
+                     jjCheckNAdd(2);\r
+                  }\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 107;\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 85;\r
+                  break;\r
+               case 203:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(1, 2);\r
+                  if ((0x7fffffe00000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 53)\r
+                        kind = 53;\r
+                     jjCheckNAdd(2);\r
+                  }\r
+                  break;\r
+               case 0:\r
+                  if ((0x7fffffe00000000L & l) != 0L)\r
+                  {\r
+                     if (kind > 53)\r
+                        kind = 53;\r
+                     jjCheckNAddTwoStates(1, 2);\r
+                  }\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjAddStates(5, 6);\r
+                  break;\r
+               case 1:\r
+                  if ((0x7fffffe80000000L & l) != 0L)\r
+                     jjCheckNAddTwoStates(1, 2);\r
+                  break;\r
+               case 2:\r
+                  if ((0x7fffffe00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 53)\r
+                     kind = 53;\r
+                  jjCheckNAdd(2);\r
+                  break;\r
+               case 83:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjAddStates(5, 6);\r
+                  break;\r
+               case 86:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 87;\r
+                  break;\r
+               case 87:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 88;\r
+                  break;\r
+               case 89:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 90;\r
+                  break;\r
+               case 90:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 91;\r
+                  break;\r
+               case 92:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 93;\r
+                  break;\r
+               case 93:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 94;\r
+                  break;\r
+               case 95:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 96;\r
+                  break;\r
+               case 96:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 97;\r
+                  break;\r
+               case 98:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 99;\r
+                  break;\r
+               case 99:\r
+                  if ((0x7e00000000L & l) == 0L)\r
+                     break;\r
+                  if (kind > 54)\r
+                     kind = 54;\r
+                  jjstateSet[jjnewStateCnt++] = 100;\r
+                  break;\r
+               case 106:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 107;\r
+                  break;\r
+               case 108:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 109;\r
+                  break;\r
+               case 109:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 110;\r
+                  break;\r
+               case 111:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 112;\r
+                  break;\r
+               case 112:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 113;\r
+                  break;\r
+               case 114:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 115;\r
+                  break;\r
+               case 115:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 116;\r
+                  break;\r
+               case 117:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 118;\r
+                  break;\r
+               case 118:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 119;\r
+                  break;\r
+               case 120:\r
+                  if ((0x7e00000000L & l) != 0L)\r
+                     jjstateSet[jjnewStateCnt++] = 121;\r
+                  break;\r
+               case 121:\r
+                  if ((0x7e00000000L & l) != 0L && kind > 59)\r
+                     kind = 59;\r
+                  break;\r
+               default : break;\r
+            }\r
+         } while(i != startsAt);\r
+      }\r
+      else\r
+      {\r
+         int i2 = (curChar & 0xff) >> 6;\r
+         long l2 = 1L << (curChar & 077);\r
+         do\r
+         {\r
+            switch(jjstateSet[--i])\r
+            {\r
+               default : break;\r
+            }\r
+         } while(i != startsAt);\r
+      }\r
+      if (kind != 0x7fffffff)\r
+      {\r
+         jjmatchedKind = kind;\r
+         jjmatchedPos = curPos;\r
+         kind = 0x7fffffff;\r
+      }\r
+      ++curPos;\r
+      if ((i = jjnewStateCnt) == (startsAt = 203 - (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
+};\r
+\r
+/** Token literal values. */\r
+public static final String[] jjstrLiteralImages = {\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
+"\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
+\r
+/** Lexer state names. */\r
+public static final String[] lexStateNames = {\r
+   "DEFAULT",\r
+};\r
+static final long[] jjtoToken = {\r
+   0x1ffffffffe1fffe1L, 0x0L, \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 protected char curChar;\r
+/** Constructor. */\r
+public NEMOparserTokenManager(SimpleCharStream stream){\r
+   if (input_stream != null)\r
+      throw new TokenMgrError("ERROR: Second call to constructor of static lexer. You must use ReInit() to initialize the static variables.", TokenMgrError.STATIC_LEXER_ERROR);\r
+   input_stream = stream;\r
+}\r
+\r
+/** Constructor. */\r
+public NEMOparserTokenManager(SimpleCharStream stream, int lexState){\r
+   this(stream);\r
+   SwitchTo(lexState);\r
+}\r
+\r
+/** Reinitialise parser. */\r
+static public void ReInit(SimpleCharStream stream)\r
+{\r
+   jjmatchedPos = jjnewStateCnt = 0;\r
+   curLexState = defaultLexState;\r
+   input_stream = stream;\r
+   ReInitRounds();\r
+}\r
+static private void ReInitRounds()\r
+{\r
+   int i;\r
+   jjround = 0x80000001;\r
+   for (i = 203; i-- > 0;)\r
+      jjrounds[i] = 0x80000000;\r
+}\r
+\r
+/** Reinitialise parser. */\r
+static public void ReInit(SimpleCharStream stream, int lexState)\r
+{\r
+   ReInit(stream);\r
+   SwitchTo(lexState);\r
+}\r
+\r
+/** Switch to specified lex state. */\r
+static public void SwitchTo(int lexState)\r
+{\r
+   if (lexState >= 1 || lexState < 0)\r
+      throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);\r
+   else\r
+      curLexState = lexState;\r
+}\r
+\r
+static protected Token jjFillToken()\r
+{\r
+   final Token t;\r
+   final String curTokenImage;\r
+   final int beginLine;\r
+   final int endLine;\r
+   final int beginColumn;\r
+   final int endColumn;\r
+   String im = jjstrLiteralImages[jjmatchedKind];\r
+   curTokenImage = (im == null) ? input_stream.GetImage() : im;\r
+   beginLine = input_stream.getBeginLine();\r
+   beginColumn = input_stream.getBeginColumn();\r
+   endLine = input_stream.getEndLine();\r
+   endColumn = input_stream.getEndColumn();\r
+   t = Token.newToken(jjmatchedKind, curTokenImage);\r
+\r
+   t.beginLine = beginLine;\r
+   t.endLine = endLine;\r
+   t.beginColumn = beginColumn;\r
+   t.endColumn = endColumn;\r
+\r
+   return t;\r
+}\r
+\r
+static int curLexState = 0;\r
+static int defaultLexState = 0;\r
+static int jjnewStateCnt;\r
+static int jjround;\r
+static int jjmatchedPos;\r
+static int jjmatchedKind;\r
+\r
+/** Get the next Token. */\r
+public static Token getNextToken() \r
+{\r
+  Token matchedToken;\r
+  int curPos = 0;\r
+\r
+  EOFLoop :\r
+  for (;;)\r
+  {\r
+   try\r
+   {\r
+      curChar = input_stream.BeginToken();\r
+   }\r
+   catch(java.io.IOException e)\r
+   {\r
+      jjmatchedKind = 0;\r
+      matchedToken = jjFillToken();\r
+      return matchedToken;\r
+   }\r
+\r
+   try { input_stream.backup(0);\r
+      while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L)\r
+         curChar = input_stream.BeginToken();\r
+   }\r
+   catch (java.io.IOException e1) { continue EOFLoop; }\r
+   jjmatchedKind = 0x7fffffff;\r
+   jjmatchedPos = 0;\r
+   curPos = jjMoveStringLiteralDfa0_0();\r
+   if (jjmatchedKind != 0x7fffffff)\r
+   {\r
+      if (jjmatchedPos + 1 < curPos)\r
+         input_stream.backup(curPos - jjmatchedPos - 1);\r
+      if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)\r
+      {\r
+         matchedToken = jjFillToken();\r
+         return matchedToken;\r
+      }\r
+      else\r
+      {\r
+         continue EOFLoop;\r
+      }\r
+   }\r
+   int error_line = input_stream.getEndLine();\r
+   int error_column = input_stream.getEndColumn();\r
+   String error_after = null;\r
+   boolean EOFSeen = false;\r
+   try { input_stream.readChar(); input_stream.backup(1); }\r
+   catch (java.io.IOException e1) {\r
+      EOFSeen = true;\r
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();\r
+      if (curChar == '\n' || curChar == '\r') {\r
+         error_line++;\r
+         error_column = 0;\r
+      }\r
+      else\r
+         error_column++;\r
+   }\r
+   if (!EOFSeen) {\r
+      input_stream.backup(1);\r
+      error_after = curPos <= 1 ? "" : input_stream.GetImage();\r
+   }\r
+   throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);\r
+  }\r
+}\r
+\r
+static private void jjCheckNAdd(int state)\r
+{\r
+   if (jjrounds[state] != jjround)\r
+   {\r
+      jjstateSet[jjnewStateCnt++] = state;\r
+      jjrounds[state] = jjround;\r
+   }\r
+}\r
+static private void jjAddStates(int start, int end)\r
+{\r
+   do {\r
+      jjstateSet[jjnewStateCnt++] = jjnextStates[start];\r
+   } while (start++ != end);\r
+}\r
+static private void jjCheckNAddTwoStates(int state1, int state2)\r
+{\r
+   jjCheckNAdd(state1);\r
+   jjCheckNAdd(state2);\r
+}\r
+\r
+static private void jjCheckNAddStates(int start, int end)\r
+{\r
+   do {\r
+      jjCheckNAdd(jjnextStates[start]);\r
+   } while (start++ != end);\r
+}\r
+\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java
new file mode 100644 (file)
index 0000000..d6ed531
--- /dev/null
@@ -0,0 +1,194 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */\r
+/* JavaCCOptions:KEEP_LINE_COL=null */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * This exception is thrown when parse errors are encountered.\r
+ * You can explicitly create objects of this exception type by\r
+ * calling the method generateParseException in the generated\r
+ * parser.\r
+ *\r
+ * You can modify this class to customize your error reporting\r
+ * mechanisms so long as you retain the public fields.\r
+ */\r
+public class ParseException extends Exception {\r
+\r
+  /**\r
+   * The version identifier for this Serializable class.\r
+   * Increment only if the <i>serialized</i> form of the\r
+   * class changes.\r
+   */\r
+  private static final long serialVersionUID = 1L;\r
+\r
+  /**\r
+   * This constructor is used by the method "generateParseException"\r
+   * in the generated parser.  Calling this constructor generates\r
+   * a new object of this type with the fields "currentToken",\r
+   * "expectedTokenSequences", and "tokenImage" set.\r
+   */\r
+  public ParseException(Token currentTokenVal,\r
+                        int[][] expectedTokenSequencesVal,\r
+                        String[] tokenImageVal\r
+                       )\r
+  {\r
+    super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));\r
+    currentToken = currentTokenVal;\r
+    expectedTokenSequences = expectedTokenSequencesVal;\r
+    tokenImage = tokenImageVal;\r
+  }\r
+\r
+  /**\r
+   * The following constructors are for use by you for whatever\r
+   * purpose you can think of.  Constructing the exception in this\r
+   * manner makes the exception behave in the normal way - i.e., as\r
+   * documented in the class "Throwable".  The fields "errorToken",\r
+   * "expectedTokenSequences", and "tokenImage" do not contain\r
+   * relevant information.  The JavaCC generated code does not use\r
+   * these constructors.\r
+   */\r
+\r
+  public ParseException() {\r
+    super();\r
+  }\r
+\r
+  /** Constructor with message. */\r
+  public ParseException(String message) {\r
+    super(message);\r
+  }\r
+\r
+\r
+  /**\r
+   * This is the last token that has been consumed successfully.  If\r
+   * this object has been created due to a parse error, the token\r
+   * followng this token will (therefore) be the first error token.\r
+   */\r
+  public Token currentToken;\r
+\r
+  /**\r
+   * Each entry in this array is an array of integers.  Each array\r
+   * of integers represents a sequence of tokens (by their ordinal\r
+   * values) that is expected at this point of the parse.\r
+   */\r
+  public int[][] expectedTokenSequences;\r
+\r
+  /**\r
+   * This is a reference to the "tokenImage" array of the generated\r
+   * parser within which the parse error occurred.  This array is\r
+   * defined in the generated ...Constants interface.\r
+   */\r
+  public String[] tokenImage;\r
+\r
+  /**\r
+   * It uses "currentToken" and "expectedTokenSequences" to generate a parse\r
+   * error message and returns it.  If this object has been created\r
+   * due to a parse error, and you do not catch it (it gets thrown\r
+   * from the parser) the correct error message\r
+   * gets displayed.\r
+   */\r
+  private static String initialise(Token currentToken,\r
+                           int[][] expectedTokenSequences,\r
+                           String[] tokenImage) {\r
+    String eol = System.getProperty("line.separator", "\n");\r
+    StringBuffer expected = new StringBuffer();\r
+    int maxSize = 0;\r
+    for (int i = 0; i < expectedTokenSequences.length; i++) {\r
+      if (maxSize < expectedTokenSequences[i].length) {\r
+        maxSize = expectedTokenSequences[i].length;\r
+      }\r
+      for (int j = 0; j < expectedTokenSequences[i].length; j++) {\r
+        expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');\r
+      }\r
+      if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {\r
+        expected.append("...");\r
+      }\r
+      expected.append(eol).append("    ");\r
+    }\r
+    String retval = "Encountered \"";\r
+    Token tok = currentToken.next;\r
+    for (int i = 0; i < maxSize; i++) {\r
+      if (i != 0) retval += " ";\r
+      if (tok.kind == 0) {\r
+        retval += tokenImage[0];\r
+        break;\r
+      }\r
+      retval += " " + tokenImage[tok.kind];\r
+      retval += " \"";\r
+      retval += add_escapes(tok.image);\r
+      retval += " \"";\r
+      tok = tok.next;\r
+    }\r
+    retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;\r
+    retval += "." + eol;\r
+    if (expectedTokenSequences.length == 1) {\r
+      retval += "Was expecting:" + eol + "    ";\r
+    } else {\r
+      retval += "Was expecting one of:" + eol + "    ";\r
+    }\r
+    retval += expected.toString();\r
+    return retval;\r
+  }\r
+\r
+  /**\r
+   * The end of line string for this machine.\r
+   */\r
+  protected String eol = System.getProperty("line.separator", "\n");\r
+\r
+  /**\r
+   * Used to convert raw characters to their escaped version\r
+   * when these raw version cannot be used as part of an ASCII\r
+   * string literal.\r
+   */\r
+  static String add_escapes(String str) {\r
+      StringBuffer retval = new StringBuffer();\r
+      char ch;\r
+      for (int i = 0; i < str.length(); i++) {\r
+        switch (str.charAt(i))\r
+        {\r
+           case 0 :\r
+              continue;\r
+           case '\b':\r
+              retval.append("\\b");\r
+              continue;\r
+           case '\t':\r
+              retval.append("\\t");\r
+              continue;\r
+           case '\n':\r
+              retval.append("\\n");\r
+              continue;\r
+           case '\f':\r
+              retval.append("\\f");\r
+              continue;\r
+           case '\r':\r
+              retval.append("\\r");\r
+              continue;\r
+           case '\"':\r
+              retval.append("\\\"");\r
+              continue;\r
+           case '\'':\r
+              retval.append("\\\'");\r
+              continue;\r
+           case '\\':\r
+              retval.append("\\\\");\r
+              continue;\r
+           default:\r
+              if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {\r
+                 String s = "0000" + Integer.toString(ch, 16);\r
+                 retval.append("\\u" + s.substring(s.length() - 4, s.length()));\r
+              } else {\r
+                 retval.append(ch);\r
+              }\r
+              continue;\r
+        }\r
+      }\r
+      return retval.toString();\r
+   }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=48271970a2f1022a0ad80acb4577d14d (do not edit this line) */\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java
new file mode 100644 (file)
index 0000000..a54f3ee
--- /dev/null
@@ -0,0 +1,482 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */\r
+/* JavaCCOptions:STATIC=true,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * An implementation of interface CharStream, where the stream is assumed to\r
+ * contain only ASCII characters (without unicode processing).\r
+ */\r
+\r
+public class SimpleCharStream\r
+{\r
+/** Whether parser is static. */\r
+  public static final boolean staticFlag = true;\r
+  static int bufsize;\r
+  static int available;\r
+  static int tokenBegin;\r
+/** Position in buffer. */\r
+  static public int bufpos = -1;\r
+  static protected int bufline[];\r
+  static protected int bufcolumn[];\r
+\r
+  static protected int column = 0;\r
+  static protected int line = 1;\r
+\r
+  static protected boolean prevCharIsCR = false;\r
+  static protected boolean prevCharIsLF = false;\r
+\r
+  static protected java.io.Reader inputStream;\r
+\r
+  static protected char[] buffer;\r
+  static protected int maxNextCharInd = 0;\r
+  static protected int inBuf = 0;\r
+  static protected int tabSize = 8;\r
+\r
+  static protected void setTabSize(int i) { tabSize = i; }\r
+  static protected int getTabSize(int i) { return tabSize; }\r
+\r
+\r
+  static protected void ExpandBuff(boolean wrapAround)\r
+  {\r
+    char[] newbuffer = new char[bufsize + 2048];\r
+    int newbufline[] = new int[bufsize + 2048];\r
+    int newbufcolumn[] = new int[bufsize + 2048];\r
+\r
+    try\r
+    {\r
+      if (wrapAround)\r
+      {\r
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+        System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);\r
+        buffer = newbuffer;\r
+\r
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+        System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);\r
+        bufline = newbufline;\r
+\r
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+        System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);\r
+        bufcolumn = newbufcolumn;\r
+\r
+        maxNextCharInd = (bufpos += (bufsize - tokenBegin));\r
+      }\r
+      else\r
+      {\r
+        System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+        buffer = newbuffer;\r
+\r
+        System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+        bufline = newbufline;\r
+\r
+        System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+        bufcolumn = newbufcolumn;\r
+\r
+        maxNextCharInd = (bufpos -= tokenBegin);\r
+      }\r
+    }\r
+    catch (Throwable t)\r
+    {\r
+      throw new Error(t.getMessage());\r
+    }\r
+\r
+\r
+    bufsize += 2048;\r
+    available = bufsize;\r
+    tokenBegin = 0;\r
+  }\r
+\r
+  static protected void FillBuff() throws java.io.IOException\r
+  {\r
+    if (maxNextCharInd == available)\r
+    {\r
+      if (available == bufsize)\r
+      {\r
+        if (tokenBegin > 2048)\r
+        {\r
+          bufpos = maxNextCharInd = 0;\r
+          available = tokenBegin;\r
+        }\r
+        else if (tokenBegin < 0)\r
+          bufpos = maxNextCharInd = 0;\r
+        else\r
+          ExpandBuff(false);\r
+      }\r
+      else if (available > tokenBegin)\r
+        available = bufsize;\r
+      else if ((tokenBegin - available) < 2048)\r
+        ExpandBuff(true);\r
+      else\r
+        available = tokenBegin;\r
+    }\r
+\r
+    int i;\r
+    try {\r
+      if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1)\r
+      {\r
+        inputStream.close();\r
+        throw new java.io.IOException();\r
+      }\r
+      else\r
+        maxNextCharInd += i;\r
+      return;\r
+    }\r
+    catch(java.io.IOException e) {\r
+      --bufpos;\r
+      backup(0);\r
+      if (tokenBegin == -1)\r
+        tokenBegin = bufpos;\r
+      throw e;\r
+    }\r
+  }\r
+\r
+/** Start. */\r
+  static public char BeginToken() throws java.io.IOException\r
+  {\r
+    tokenBegin = -1;\r
+    char c = readChar();\r
+    tokenBegin = bufpos;\r
+\r
+    return c;\r
+  }\r
+\r
+  static protected void UpdateLineColumn(char c)\r
+  {\r
+    column++;\r
+\r
+    if (prevCharIsLF)\r
+    {\r
+      prevCharIsLF = false;\r
+      line += (column = 1);\r
+    }\r
+    else if (prevCharIsCR)\r
+    {\r
+      prevCharIsCR = false;\r
+      if (c == '\n')\r
+      {\r
+        prevCharIsLF = true;\r
+      }\r
+      else\r
+        line += (column = 1);\r
+    }\r
+\r
+    switch (c)\r
+    {\r
+      case '\r' :\r
+        prevCharIsCR = true;\r
+        break;\r
+      case '\n' :\r
+        prevCharIsLF = true;\r
+        break;\r
+      case '\t' :\r
+        column--;\r
+        column += (tabSize - (column % tabSize));\r
+        break;\r
+      default :\r
+        break;\r
+    }\r
+\r
+    bufline[bufpos] = line;\r
+    bufcolumn[bufpos] = column;\r
+  }\r
+\r
+/** Read a character. */\r
+  static public char readChar() throws java.io.IOException\r
+  {\r
+    if (inBuf > 0)\r
+    {\r
+      --inBuf;\r
+\r
+      if (++bufpos == bufsize)\r
+        bufpos = 0;\r
+\r
+      return buffer[bufpos];\r
+    }\r
+\r
+    if (++bufpos >= maxNextCharInd)\r
+      FillBuff();\r
+\r
+    char c = buffer[bufpos];\r
+\r
+    UpdateLineColumn(c);\r
+    return c;\r
+  }\r
+\r
+  @Deprecated\r
+  /**\r
+   * @deprecated\r
+   * @see #getEndColumn\r
+   */\r
+\r
+  static public int getColumn() {\r
+    return bufcolumn[bufpos];\r
+  }\r
+\r
+  @Deprecated\r
+  /**\r
+   * @deprecated\r
+   * @see #getEndLine\r
+   */\r
+\r
+  static public int getLine() {\r
+    return bufline[bufpos];\r
+  }\r
+\r
+  /** Get token end column number. */\r
+  static public int getEndColumn() {\r
+    return bufcolumn[bufpos];\r
+  }\r
+\r
+  /** Get token end line number. */\r
+  static public int getEndLine() {\r
+     return bufline[bufpos];\r
+  }\r
+\r
+  /** Get token beginning column number. */\r
+  static public int getBeginColumn() {\r
+    return bufcolumn[tokenBegin];\r
+  }\r
+\r
+  /** Get token beginning line number. */\r
+  static public int getBeginLine() {\r
+    return bufline[tokenBegin];\r
+  }\r
+\r
+/** Backup a number of characters. */\r
+  static public void backup(int amount) {\r
+\r
+    inBuf += amount;\r
+    if ((bufpos -= amount) < 0)\r
+      bufpos += bufsize;\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    if (inputStream != null)\r
+      throw new Error("\n   ERROR: Second call to the constructor of a static SimpleCharStream.\n" +\r
+      "       You must either use ReInit() or set the JavaCC option STATIC to false\n" +\r
+      "       during the generation of this class.");\r
+    inputStream = dstream;\r
+    line = startline;\r
+    column = startcolumn - 1;\r
+\r
+    available = bufsize = buffersize;\r
+    buffer = new char[buffersize];\r
+    bufline = new int[buffersize];\r
+    bufcolumn = new int[buffersize];\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream, int startline,\r
+                          int startcolumn)\r
+  {\r
+    this(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.Reader dstream)\r
+  {\r
+    this(dstream, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    inputStream = dstream;\r
+    line = startline;\r
+    column = startcolumn - 1;\r
+\r
+    if (buffer == null || buffersize != buffer.length)\r
+    {\r
+      available = bufsize = buffersize;\r
+      buffer = new char[buffersize];\r
+      bufline = new int[buffersize];\r
+      bufcolumn = new int[buffersize];\r
+    }\r
+    prevCharIsLF = prevCharIsCR = false;\r
+    tokenBegin = inBuf = maxNextCharInd = 0;\r
+    bufpos = -1;\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream, int startline,\r
+                     int startcolumn)\r
+  {\r
+    ReInit(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.Reader dstream)\r
+  {\r
+    ReInit(dstream, 1, 1, 4096);\r
+  }\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+  int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+  int startcolumn, int buffersize)\r
+  {\r
+    this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+                          int startcolumn) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(dstream, encoding, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+                          int startcolumn)\r
+  {\r
+    this(dstream, startline, startcolumn, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+  {\r
+    this(dstream, encoding, 1, 1, 4096);\r
+  }\r
+\r
+  /** Constructor. */\r
+  public SimpleCharStream(java.io.InputStream dstream)\r
+  {\r
+    this(dstream, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+                          int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, int startline,\r
+                          int startcolumn, int buffersize)\r
+  {\r
+    ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(dstream, encoding, 1, 1, 4096);\r
+  }\r
+\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream)\r
+  {\r
+    ReInit(dstream, 1, 1, 4096);\r
+  }\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+                     int startcolumn) throws java.io.UnsupportedEncodingException\r
+  {\r
+    ReInit(dstream, encoding, startline, startcolumn, 4096);\r
+  }\r
+  /** Reinitialise. */\r
+  public void ReInit(java.io.InputStream dstream, int startline,\r
+                     int startcolumn)\r
+  {\r
+    ReInit(dstream, startline, startcolumn, 4096);\r
+  }\r
+  /** Get token literal value. */\r
+  static public String GetImage()\r
+  {\r
+    if (bufpos >= tokenBegin)\r
+      return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);\r
+    else\r
+      return new String(buffer, tokenBegin, bufsize - tokenBegin) +\r
+                            new String(buffer, 0, bufpos + 1);\r
+  }\r
+\r
+  /** Get the suffix. */\r
+  static public char[] GetSuffix(int len)\r
+  {\r
+    char[] ret = new char[len];\r
+\r
+    if ((bufpos + 1) >= len)\r
+      System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);\r
+    else\r
+    {\r
+      System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,\r
+                                                        len - bufpos - 1);\r
+      System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);\r
+    }\r
+\r
+    return ret;\r
+  }\r
+\r
+  /** Reset buffer when finished. */\r
+  static public void Done()\r
+  {\r
+    buffer = null;\r
+    bufline = null;\r
+    bufcolumn = null;\r
+  }\r
+\r
+  /**\r
+   * Method to adjust line and column numbers for the start of a token.\r
+   */\r
+  static public void adjustBeginLineColumn(int newLine, int newCol)\r
+  {\r
+    int start = tokenBegin;\r
+    int len;\r
+\r
+    if (bufpos >= tokenBegin)\r
+    {\r
+      len = bufpos - tokenBegin + inBuf + 1;\r
+    }\r
+    else\r
+    {\r
+      len = bufsize - tokenBegin + bufpos + 1 + inBuf;\r
+    }\r
+\r
+    int i = 0, j = 0, k = 0;\r
+    int nextColDiff = 0, columnDiff = 0;\r
+\r
+    while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])\r
+    {\r
+      bufline[j] = newLine;\r
+      nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];\r
+      bufcolumn[j] = newCol + columnDiff;\r
+      columnDiff = nextColDiff;\r
+      i++;\r
+    }\r
+\r
+    if (i < len)\r
+    {\r
+      bufline[j] = newLine++;\r
+      bufcolumn[j] = newCol + columnDiff;\r
+\r
+      while (i++ < len)\r
+      {\r
+        if (bufline[j = start % bufsize] != bufline[++start % bufsize])\r
+          bufline[j] = newLine++;\r
+        else\r
+          bufline[j] = newLine;\r
+      }\r
+    }\r
+\r
+    line = bufline[j];\r
+    column = bufcolumn[j];\r
+  }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=3d5e5b74f810fa0f4ef70d18e9bc8601 (do not edit this line) */\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java
new file mode 100644 (file)
index 0000000..e52c95d
--- /dev/null
@@ -0,0 +1,138 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */\r
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * Describes the input token stream.\r
+ */\r
+\r
+public class Token implements java.io.Serializable {\r
+\r
+  /**\r
+   * The version identifier for this Serializable class.\r
+   * Increment only if the <i>serialized</i> form of the\r
+   * class changes.\r
+   */\r
+  private static final long serialVersionUID = 1L;\r
+\r
+  /**\r
+   * An integer that describes the kind of this token.  This numbering\r
+   * system is determined by JavaCCParser, and a table of these numbers is\r
+   * stored in the file ...Constants.java.\r
+   */\r
+  public int kind;\r
+\r
+  /** The line number of the first character of this Token. */\r
+  public int beginLine;\r
+  /** The column number of the first character of this Token. */\r
+  public int beginColumn;\r
+  /** The line number of the last character of this Token. */\r
+  public int endLine;\r
+  /** The column number of the last character of this Token. */\r
+  public int endColumn;\r
+\r
+  /**\r
+   * The string image of the token.\r
+   */\r
+  public String image;\r
+\r
+  /**\r
+   * A reference to the next regular (non-special) token from the input\r
+   * stream.  If this is the last token from the input stream, or if the\r
+   * token manager has not read tokens beyond this one, this field is\r
+   * set to null.  This is true only if this token is also a regular\r
+   * token.  Otherwise, see below for a description of the contents of\r
+   * this field.\r
+   */\r
+  public Token next;\r
+\r
+  /**\r
+   * This field is used to access special tokens that occur prior to this\r
+   * token, but after the immediately preceding regular (non-special) token.\r
+   * If there are no such special tokens, this field is set to null.\r
+   * When there are more than one such special token, this field refers\r
+   * to the last of these special tokens, which in turn refers to the next\r
+   * previous special token through its specialToken field, and so on\r
+   * until the first special token (whose specialToken field is null).\r
+   * The next fields of special tokens refer to other special tokens that\r
+   * immediately follow it (without an intervening regular token).  If there\r
+   * is no such token, this field is null.\r
+   */\r
+  public Token specialToken;\r
+\r
+  /**\r
+   * An optional attribute value of the Token.\r
+   * Tokens which are not used as syntactic sugar will often contain\r
+   * meaningful values that will be used later on by the compiler or\r
+   * interpreter. This attribute value is often different from the image.\r
+   * Any subclass of Token that actually wants to return a non-null value can\r
+   * override this method as appropriate.\r
+   */\r
+  public Object getValue() {\r
+    return null;\r
+  }\r
+\r
+  /**\r
+   * No-argument constructor\r
+   */\r
+  public Token() {}\r
+\r
+  /**\r
+   * Constructs a new token for the specified Image.\r
+   */\r
+  public Token(int kind)\r
+  {\r
+    this(kind, null);\r
+  }\r
+\r
+  /**\r
+   * Constructs a new token for the specified Image and Kind.\r
+   */\r
+  public Token(int kind, String image)\r
+  {\r
+    this.kind = kind;\r
+    this.image = image;\r
+  }\r
+\r
+  /**\r
+   * Returns the image.\r
+   */\r
+  public String toString()\r
+  {\r
+    return image;\r
+  }\r
+\r
+  /**\r
+   * Returns a new Token object, by default. However, if you want, you\r
+   * can create and return subclass objects based on the value of ofKind.\r
+   * Simply add the cases to the switch for all those special cases.\r
+   * For example, if you have a subclass of Token called IDToken that\r
+   * you want to create if ofKind is ID, simply add something like :\r
+   *\r
+   *    case MyParserConstants.ID : return new IDToken(ofKind, image);\r
+   *\r
+   * to the following switch statement. Then you can cast matchedToken\r
+   * variable to the appropriate type and use sit in your lexical actions.\r
+   */\r
+  public static Token newToken(int ofKind, String image)\r
+  {\r
+    switch(ofKind)\r
+    {\r
+      default : return new Token(ofKind, image);\r
+    }\r
+  }\r
+\r
+  public static Token newToken(int ofKind)\r
+  {\r
+    return newToken(ofKind, null);\r
+  }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=dc8b83e991d3e41cf255b23a7a4d3774 (do not edit this line) */\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java
new file mode 100644 (file)
index 0000000..8ae30d9
--- /dev/null
@@ -0,0 +1,154 @@
+/*\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
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */\r
+/* JavaCCOptions: */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/** Token Manager Error. */\r
+public class TokenMgrError extends Error\r
+{\r
+\r
+  /**\r
+   * The version identifier for this Serializable class.\r
+   * Increment only if the <i>serialized</i> form of the\r
+   * class changes.\r
+   */\r
+  private static final long serialVersionUID = 1L;\r
+\r
+  /*\r
+   * Ordinals for various reasons why an Error of this type can be thrown.\r
+   */\r
+\r
+  /**\r
+   * Lexical error occurred.\r
+   */\r
+  static final int LEXICAL_ERROR = 0;\r
+\r
+  /**\r
+   * An attempt was made to create a second instance of a static token manager.\r
+   */\r
+  static final int STATIC_LEXER_ERROR = 1;\r
+\r
+  /**\r
+   * Tried to change to an invalid lexical state.\r
+   */\r
+  static final int INVALID_LEXICAL_STATE = 2;\r
+\r
+  /**\r
+   * Detected (and bailed out of) an infinite loop in the token manager.\r
+   */\r
+  static final int LOOP_DETECTED = 3;\r
+\r
+  /**\r
+   * Indicates the reason why the exception is thrown. It will have\r
+   * one of the above 4 values.\r
+   */\r
+  int errorCode;\r
+\r
+  /**\r
+   * Replaces unprintable characters by their escaped (or unicode escaped)\r
+   * equivalents in the given string\r
+   */\r
+  protected static final String addEscapes(String str) {\r
+    StringBuffer retval = new StringBuffer();\r
+    char ch;\r
+    for (int i = 0; i < str.length(); i++) {\r
+      switch (str.charAt(i))\r
+      {\r
+        case 0 :\r
+          continue;\r
+        case '\b':\r
+          retval.append("\\b");\r
+          continue;\r
+        case '\t':\r
+          retval.append("\\t");\r
+          continue;\r
+        case '\n':\r
+          retval.append("\\n");\r
+          continue;\r
+        case '\f':\r
+          retval.append("\\f");\r
+          continue;\r
+        case '\r':\r
+          retval.append("\\r");\r
+          continue;\r
+        case '\"':\r
+          retval.append("\\\"");\r
+          continue;\r
+        case '\'':\r
+          retval.append("\\\'");\r
+          continue;\r
+        case '\\':\r
+          retval.append("\\\\");\r
+          continue;\r
+        default:\r
+          if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {\r
+            String s = "0000" + Integer.toString(ch, 16);\r
+            retval.append("\\u" + s.substring(s.length() - 4, s.length()));\r
+          } else {\r
+            retval.append(ch);\r
+          }\r
+          continue;\r
+      }\r
+    }\r
+    return retval.toString();\r
+  }\r
+\r
+  /**\r
+   * Returns a detailed message for the Error when it is thrown by the\r
+   * token manager to indicate a lexical error.\r
+   * Parameters :\r
+   *    EOFSeen     : indicates if EOF caused the lexical error\r
+   *    curLexState : lexical state in which this error occurred\r
+   *    errorLine   : line number when the error occurred\r
+   *    errorColumn : column number when the error occurred\r
+   *    errorAfter  : prefix that was seen before this error occurred\r
+   *    curchar     : the offending character\r
+   * Note: You can customize the lexical error message by modifying this method.\r
+   */\r
+  protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {\r
+    return("Lexical error at line " +\r
+          errorLine + ", column " +\r
+          errorColumn + ".  Encountered: " +\r
+          (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +\r
+          "after : \"" + addEscapes(errorAfter) + "\"");\r
+  }\r
+\r
+  /**\r
+   * You can also modify the body of this method to customize your error messages.\r
+   * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not\r
+   * of end-users concern, so you can return something like :\r
+   *\r
+   *     "Internal Error : Please file a bug report .... "\r
+   *\r
+   * from this method for such cases in the release version of your parser.\r
+   */\r
+  public String getMessage() {\r
+    return super.getMessage();\r
+  }\r
+\r
+  /*\r
+   * Constructors of various flavors follow.\r
+   */\r
+\r
+  /** No arg constructor. */\r
+  public TokenMgrError() {\r
+  }\r
+\r
+  /** Constructor with message and reason. */\r
+  public TokenMgrError(String message, int reason) {\r
+    super(message);\r
+    errorCode = reason;\r
+  }\r
+\r
+  /** Full Constructor. */\r
+  public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {\r
+    this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);\r
+  }\r
+}\r
+/* JavaCC - OriginalChecksum=ba2e47c01c2fe7ef735d03301bf06ea2 (do not edit this line) */\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/Query.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/Query.java
new file mode 100644 (file)
index 0000000..2eb3b29
--- /dev/null
@@ -0,0 +1,783 @@
+/*\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;\r
+\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 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.users.User;\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.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.instance.property.values.IntValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue;\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.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
+\r
+import java.util.List;\r
+\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/24.\r
+ */\r
+public class Query {\r
+    private TenantManage tenantManage;\r
+\r
+    public Query(TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+    }\r
+\r
+    public String query(UserId userId,String item, String target){\r
+        String errorInfo = null;\r
+        tenantManage.fetchVNSpace(userId);\r
+        User user = tenantManage.getUser();\r
+\r
+        if (target!=null){\r
+            Boolean targetExist = false;\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 node : nodeList){\r
+                            if (node.getNodeName().getValue().equals(target)){\r
+                                targetExist = true;\r
+                                errorInfo = queryNode(user,item, node);\r
+                            }\r
+                        }\r
+                    }\r
+                    if (user.getObjects().getConnection()!=null){\r
+                        List<Connection> connectionList = user.getObjects().getConnection();\r
+                        for (Connection connection : connectionList){\r
+                            if (connection.getConnectionName().getValue().equals(target)){\r
+                                targetExist = true;\r
+                                errorInfo = queryConnection(user,item,connection);\r
+                            }\r
+                        }\r
+                    }\r
+                    if (user.getObjects().getFlow()!=null){\r
+                        List<Flow> flowList = user.getObjects().getFlow();\r
+                        for (Flow flow : flowList){\r
+                            if (flow.getFlowName().getValue().equals(target)){\r
+                                targetExist = true;\r
+                                errorInfo = queryFlow(item,flow);\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+                if (user.getOperations()!=null){\r
+                    if (user.getOperations().getOperation()!=null){\r
+                        List<Operation> operationList = user.getOperations().getOperation();\r
+                        for (Operation operation : operationList){\r
+                            if (operation.getOperationName().getValue().equals(target)){\r
+                                targetExist = true;\r
+                                errorInfo = queryOperation(user,item,operation);\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (!targetExist){\r
+                return "The target " + target + " is not exist in user vn space.";\r
+            }\r
+        }\r
+        else {\r
+           if (item.equals(NEMOConstants.AllNodes)){\r
+               errorInfo = queryAllNode(user);\r
+           }\r
+            else if (item.equals(NEMOConstants.AllConnections)){\r
+               errorInfo = queryAllConnection(user);\r
+           }\r
+            else if (item.equals(NEMOConstants.AllFlows)){\r
+               errorInfo = queryAllFlow(user);\r
+           }\r
+            else if (item.equals(NEMOConstants.AllOperations)){\r
+               errorInfo = queryAllOperation(user);\r
+           }\r
+            else {\r
+               return "The item is not supported.";\r
+           }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryNode(User user,String item, Node node){\r
+        String errorInfo = NEMOConstants.Results+":";\r
+        if (item.equals(NEMOConstants.Type)){\r
+            errorInfo += node.getNodeType().getValue();\r
+        }\r
+        else if (item.equals(NEMOConstants.SubNodes)||item.equals(NEMOConstants.Contain)){\r
+            List<SubNode> subNodeList = node.getSubNode();\r
+            if (subNodeList != null){\r
+                for (SubNode subNode : subNodeList){\r
+                    for (Node node1:user.getObjects().getNode()){\r
+                        if (subNode.getNodeId().equals(node1.getNodeId())){\r
+                            errorInfo += node1.getNodeName().getValue() + ",";\r
+                        }\r
+                    }\r
+                }\r
+                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+            }\r
+        }\r
+       else if (item.equals(NEMOConstants.Property)){\r
+            List<Property> properties = node.getProperty();\r
+           if (properties!=null){\r
+                for (Property property : properties){\r
+                    errorInfo += property.getPropertyName().getValue()+":";\r
+                    List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                    List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                    if (intValues!=null){\r
+                        for (IntValue intValue : intValues){\r
+                            errorInfo += intValue.getValue()+",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (stringValues!=null){\r
+                        for (StringValue stringValue : stringValues){\r
+                            errorInfo += stringValue.getValue() +",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (rangeValue!=null){\r
+                        errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                    }\r
+                }\r
+            }\r
+       }\r
+        else {\r
+            List<Property> properties = node.getProperty();\r
+           Boolean itemExist = false;\r
+            if (properties != null){\r
+                for (Property property : properties){\r
+                    if (property.getPropertyName().getValue().equals(item)){\r
+                        itemExist = true;\r
+                        List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                        List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                        if (intValues!=null){\r
+                            for (IntValue intValue : intValues){\r
+                                errorInfo += intValue.getValue()+",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (stringValues!=null){\r
+                            for (StringValue stringValue : stringValues){\r
+                                errorInfo += stringValue.getValue() +",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (rangeValue!=null){\r
+                            errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+           if (!itemExist){\r
+               return "The item " + item + " is not included in "+node.getNodeName().getValue()+";";\r
+           }\r
+       }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryConnection( User user, String item, Connection connection){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (item.equals(NEMOConstants.Type)){\r
+            errorInfo += connection.getConnectionType().getValue();\r
+        }\r
+        else if (item.equals(NEMOConstants.Endnodes)){\r
+            List<EndNode> endNodeList = connection.getEndNode();\r
+            if (endNodeList != null){\r
+                for (EndNode endNode : endNodeList){\r
+                    for (Node node : user.getObjects().getNode()){\r
+                        if (endNode.getNodeId().equals(node.getNodeId())){\r
+                            errorInfo+=node.getNodeName().getValue()+",";\r
+                        }\r
+                    }\r
+                }\r
+                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+            }\r
+        }\r
+        else if (item.equals(NEMOConstants.Property)){\r
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> properties = connection.getProperty();\r
+            if (properties!=null){\r
+                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){\r
+                    errorInfo += property.getPropertyName().getValue()+":";\r
+                    List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                    List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                    if (intValues!=null){\r
+                        for (IntValue intValue : intValues){\r
+                            errorInfo += intValue.getValue()+",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (stringValues!=null){\r
+                        for (StringValue stringValue : stringValues){\r
+                            errorInfo += stringValue.getValue() +",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (rangeValue!=null){\r
+                        errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> properties = connection.getProperty();\r
+            Boolean itemExist = false;\r
+            if (properties!=null){\r
+                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){\r
+                    if (property.getPropertyName().getValue().equals(item)){\r
+                        itemExist = true;\r
+                        List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                        List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                        if (intValues!=null){\r
+                            for (IntValue intValue : intValues){\r
+                                errorInfo += intValue.getValue()+",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (stringValues!=null){\r
+                            for (StringValue stringValue : stringValues){\r
+                                errorInfo += stringValue.getValue() +",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (rangeValue!=null){\r
+                            errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (!itemExist){\r
+                return "The item " + item + " is not included in "+connection.getConnectionName().getValue()+";";\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryFlow( String item, Flow flow){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (item.equals(NEMOConstants.Match)){\r
+            List<MatchItem> matchItems = flow.getMatchItem();\r
+            for (MatchItem matchItem: matchItems){\r
+                errorInfo += matchItem.getMatchItemName().getValue()+":";\r
+                Long intValue = matchItem.getMatchItemValue().getIntValue();\r
+                String stringValue = matchItem.getMatchItemValue().getStringValue();\r
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValue rangeValue = matchItem.getMatchItemValue().getRangeValue();\r
+                if (intValue!=null){\r
+                    errorInfo +=intValue;\r
+                }\r
+                if (stringValue!=null){\r
+                    errorInfo += stringValue;\r
+                }\r
+                if (rangeValue!=null){\r
+                    errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                }\r
+            }\r
+        }\r
+        else if (item.equals(NEMOConstants.Property)){\r
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+            if (properties!=null){\r
+                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){\r
+                    errorInfo += property.getPropertyName().getValue()+":";\r
+                    List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                    List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                    if (intValues!=null){\r
+                        for (IntValue intValue : intValues){\r
+                            errorInfo += intValue.getValue()+",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (stringValues!=null){\r
+                        for (StringValue stringValue : stringValues){\r
+                            errorInfo += stringValue.getValue() +",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (rangeValue!=null){\r
+                        errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+            Boolean itemExist = false;\r
+            if (properties!=null){\r
+                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){\r
+                    if (property.getPropertyName().getValue().equals(item)){\r
+                        itemExist = true;\r
+                        List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                        List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                        if (intValues!=null){\r
+                            for (IntValue intValue : intValues){\r
+                                errorInfo += intValue.getValue()+",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (stringValues!=null){\r
+                            for (StringValue stringValue : stringValues){\r
+                                errorInfo += stringValue.getValue() +",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (rangeValue!=null){\r
+                            errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (!itemExist){\r
+                return "The item " + item + " is not included in "+flow.getFlowName().getValue()+";";\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryOperation(User user, String item, Operation operation){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (item.equals(NEMOConstants.Priority)){\r
+            errorInfo += operation.getPriority();\r
+        }\r
+        else if (item.equals(NEMOConstants.Target)){\r
+            if (user.getObjects().getNode()!=null){\r
+                for (Node node:user.getObjects().getNode()){\r
+                    if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){\r
+                        errorInfo += node.getNodeName().getValue();\r
+                    }\r
+                }\r
+            }\r
+            if (user.getObjects().getConnection()!=null){\r
+                for (Connection connection : user.getObjects().getConnection()){\r
+                    if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){\r
+                        errorInfo += connection.getConnectionName().getValue();\r
+                    }\r
+                }\r
+            }\r
+            if (user.getObjects().getFlow()!=null){\r
+                for (Flow flow : user.getObjects().getFlow()){\r
+                    if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){\r
+                        errorInfo += flow.getFlowName().getValue();\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else if (item.equals(NEMOConstants.Condition)){\r
+            List<ConditionSegment> conditionSegments = operation.getConditionSegment();\r
+            if (conditionSegments!=null){\r
+                for (ConditionSegment conditionSegment : conditionSegments){\r
+                    if (conditionSegment.getPrecursorRelationOperator()!=null){\r
+                        int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue();\r
+                        switch (preRelation) {\r
+                            case 0:\r
+                                break;\r
+                            case 1:\r
+                                errorInfo += NEMOConstants.and+"(";\r
+                                break;\r
+                            case 2:\r
+                                errorInfo += NEMOConstants.or+"(";\r
+                                break;\r
+                            case 3:\r
+                                errorInfo += NEMOConstants.not+"(";\r
+                                break;\r
+                        }\r
+                   }\r
+                    else {\r
+                        errorInfo += "(";\r
+                    }\r
+                    errorInfo += conditionSegment.getConditionParameterName().getValue();\r
+                    int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue();\r
+                    switch (matchPattern){\r
+                        case 0:\r
+                            errorInfo += NEMOConstants.less_than;\r
+                            break;\r
+                        case 1:\r
+                            errorInfo += NEMOConstants.not_less_than;\r
+                            break;\r
+                        case 2:\r
+                            errorInfo += NEMOConstants.equal;\r
+                            break;\r
+                        case 3:\r
+                            errorInfo += NEMOConstants.not_equal;\r
+                            break;\r
+                        case 4:\r
+                            errorInfo += NEMOConstants.greater_than;\r
+                            break;\r
+                        case 5:\r
+                            errorInfo += NEMOConstants.not_greater_than;\r
+                            break;\r
+                        case 6:\r
+                            errorInfo += NEMOConstants.between;\r
+                            break;\r
+                    }\r
+                    Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue();\r
+                    String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+                    //todo rangevalue\r
+                    if (intValue!=null){\r
+                        errorInfo +=intValue;\r
+                    }\r
+                    if (stringValue!=null){\r
+                        errorInfo+=stringValue;\r
+                    }\r
+                    errorInfo += ")";\r
+                }\r
+            }\r
+        }\r
+       else if (item.equals(NEMOConstants.Action)) {\r
+            List<Action> actions = operation.getAction();\r
+            if (actions!=null){\r
+                for (Action action : actions) {\r
+                    errorInfo += action.getActionName().getValue() + ":";\r
+                    List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\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
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+                    if (intValues!=null){\r
+                        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+                            errorInfo += intValue.getValue()+",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (stringValues!=null){\r
+                        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+                            errorInfo += stringValue.getValue() +",";\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (rangeValue != null) {\r
+                        errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            List<Action> actions = operation.getAction();\r
+            Boolean itemExist = false;\r
+            if (actions!=null){\r
+                for (Action action : actions){\r
+                    if (action.getActionName().getValue().equals(item)){\r
+                        itemExist = true;\r
+                        errorInfo += action.getActionName().getValue() + ":";\r
+                        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\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
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+                        if (intValues!=null){\r
+                            for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+                                errorInfo += intValue.getValue()+",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (stringValues!=null){\r
+                            for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+                                errorInfo += stringValue.getValue() +",";\r
+                            }\r
+                            errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                        }\r
+                        if (rangeValue != null) {\r
+                            errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+            if (!itemExist){\r
+                return "The item " + item + " is not included in the target " +operation.getOperationName().getValue();\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryAllNode(User user){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (user.getObjects()!=null){\r
+            if (user.getObjects().getNode()!=null){\r
+                List<Node> nodeList = user.getObjects().getNode();\r
+                for (Node node : nodeList){\r
+                    errorInfo += NEMOConstants.Id +":" + node.getNodeId().getValue()+" ";\r
+                    errorInfo += NEMOConstants.Name +":" + node.getNodeName().getValue()+" ";\r
+                    errorInfo += NEMOConstants.Type +":" + node.getNodeType().getValue()+" ";\r
+                    if (node.getSubNode()!=null){\r
+                        errorInfo+=NEMOConstants.SubNodes+":";\r
+                        List<SubNode> subNodeList = node.getSubNode();\r
+                        for (SubNode subNode :subNodeList){\r
+                            for (Node node1:nodeList){\r
+                                if (node1.getNodeId().equals(subNode.getNodeId())){\r
+                                    errorInfo+=node1.getNodeName().getValue()+",";\r
+                                }\r
+                            }\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                    }\r
+                    if (node.getProperty()!=null){\r
+                        errorInfo += NEMOConstants.Property+":";\r
+                        for (Property property:node.getProperty()){\r
+                            errorInfo+=property.getPropertyName().getValue()+":";\r
+                            List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                            List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                            RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                            if (intValues!=null){\r
+                                for (IntValue intValue : intValues){\r
+                                    errorInfo += intValue.getValue()+",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (stringValues!=null){\r
+                                for (StringValue stringValue : stringValues){\r
+                                    errorInfo += stringValue.getValue() +",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (rangeValue!=null){\r
+                                errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                            }\r
+                            errorInfo +=" ";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryAllConnection(User user){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (user.getObjects()!=null){\r
+            if (user.getObjects().getConnection()!=null){\r
+                List<Connection> connectionList = user.getObjects().getConnection();\r
+                for (Connection connection : connectionList){\r
+                    errorInfo += NEMOConstants.Id +":" +connection.getConnectionId().getValue()+ " ";\r
+                    errorInfo+= NEMOConstants.Name +":" + connection.getConnectionName().getValue()+" ";\r
+                    errorInfo += NEMOConstants.Type +":"+connection.getConnectionType().getValue()+" ";\r
+                    if (connection.getEndNode()!=null){\r
+                        errorInfo += NEMOConstants.Endnodes +":";\r
+                        List<EndNode> endNodeList = connection.getEndNode();\r
+                        for (EndNode endNode:endNodeList){\r
+                            for (Node node:user.getObjects().getNode()){\r
+                                if (endNode.getNodeId().equals(node.getNodeId())){\r
+                                    errorInfo+=node.getNodeName().getValue()+",";\r
+                                }\r
+                            }\r
+                        }\r
+                        errorInfo = errorInfo.substring(0,errorInfo.length()-1) + " ";\r
+                    }\r
+                    if (connection.getProperty()!=null){\r
+                        errorInfo += NEMOConstants.Property +":";\r
+                        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property:connection.getProperty()){\r
+                            errorInfo+=property.getPropertyName().getValue()+":";\r
+                            List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                            List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                            RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                            if (intValues!=null){\r
+                                for (IntValue intValue : intValues){\r
+                                    errorInfo += intValue.getValue()+",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (stringValues!=null){\r
+                                for (StringValue stringValue : stringValues){\r
+                                    errorInfo += stringValue.getValue() +",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (rangeValue!=null){\r
+                                errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                            }\r
+                            errorInfo +=" ";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryAllFlow(User user){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (user.getObjects()!=null){\r
+            if (user.getObjects().getFlow()!=null){\r
+                List<Flow> flowList = user.getObjects().getFlow();\r
+                for (Flow flow : flowList){\r
+                    errorInfo += NEMOConstants.Id +":" + flow.getFlowId().getValue()+" ";\r
+                    errorInfo += NEMOConstants.Name +":" +flow.getFlowName().getValue()+" ";\r
+                    if (flow.getMatchItem()!=null){\r
+                        errorInfo += NEMOConstants.Match+": ";\r
+                        List<MatchItem> matchItemList = flow.getMatchItem();\r
+                        for (MatchItem matchItem : matchItemList){\r
+                            errorInfo += matchItem.getMatchItemName().getValue()+";";\r
+                            Long intValues = matchItem.getMatchItemValue().getIntValue();\r
+                            String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValue rangeValue = matchItem.getMatchItemValue().getRangeValue();\r
+                            if (intValues!=null){\r
+                                errorInfo+=intValues;\r
+                            }\r
+                            if (stringValues!=null){\r
+                                errorInfo += stringValues;\r
+                            }\r
+                            if (rangeValue!=null){\r
+                                errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMin()+"]";\r
+                            }\r
+                        }\r
+                    }\r
+                    if (flow.getProperty()!=null){\r
+                        errorInfo += NEMOConstants.Property+": ";\r
+                        List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+                        for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property :properties){\r
+                            errorInfo+=property.getPropertyName().getValue()+":";\r
+                            List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+                            List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                            RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+                            if (intValues!=null){\r
+                                for (IntValue intValue : intValues){\r
+                                    errorInfo += intValue.getValue()+",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (stringValues!=null){\r
+                                for (StringValue stringValue : stringValues){\r
+                                    errorInfo += stringValue.getValue() +",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (rangeValue!=null){\r
+                                errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+                            }\r
+                            errorInfo +=" ";\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String queryAllOperation(User user){\r
+        String errorInfo =NEMOConstants.Results+":";\r
+        if (user.getOperations()!=null){\r
+            if (user.getOperations().getOperation()!=null){\r
+                List<Operation> operationList = user.getOperations().getOperation();\r
+                for (Operation operation : operationList){\r
+                    errorInfo += NEMOConstants.Id+":" + operation.getOperationId().getValue() +" ";\r
+                    errorInfo += NEMOConstants.Name+":" + operation.getOperationName().getValue()+" ";\r
+                    errorInfo += NEMOConstants.Priority+":" + operation.getPriority()+" ";\r
+                    errorInfo += NEMOConstants.Target+":";\r
+                    if (user.getObjects().getNode()!=null){\r
+                        for (Node node:user.getObjects().getNode()){\r
+                            if (node.getNodeId().equals(operation.getTargetObject())){\r
+                                errorInfo+=node.getNodeName().getValue()+" ";\r
+                            }\r
+                        }\r
+                    }\r
+                    if (user.getObjects().getConnection()!=null){\r
+                        for (Connection connection:user.getObjects().getConnection()){\r
+                            if (connection.getConnectionId().equals(operation.getTargetObject())){\r
+                                errorInfo+=connection.getConnectionName().getValue()+" ";\r
+                            }\r
+                        }\r
+                    }\r
+                    if (user.getObjects().getFlow()!=null){\r
+                        for (Flow flow:user.getObjects().getFlow()){\r
+                            if (flow.getFlowId().equals(operation.getTargetObject())){\r
+                                errorInfo += flow.getFlowName().getValue()+" ";\r
+                            }\r
+                        }\r
+                    }\r
+                    if (operation.getConditionSegment()!=null){\r
+                        errorInfo += NEMOConstants.Condition+": ";\r
+                        List<ConditionSegment> conditionSegmentList = operation.getConditionSegment();\r
+                        for (ConditionSegment conditionSegment : conditionSegmentList){\r
+                            int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue();\r
+                            switch (preRelation) {\r
+                                case 0:\r
+                                    break;\r
+                                case 1:\r
+                                    errorInfo += NEMOConstants.and+"(";\r
+                                    break;\r
+                                case 2:\r
+                                    errorInfo += NEMOConstants.or+"(";\r
+                                    break;\r
+                                case 3:\r
+                                    errorInfo += NEMOConstants.not+"(";\r
+                                    break;\r
+                            }\r
+                            errorInfo += conditionSegment.getConditionParameterName().getValue();\r
+                            int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue();\r
+                            switch (matchPattern){\r
+                                case 0:\r
+                                    errorInfo += NEMOConstants.less_than;\r
+                                    break;\r
+                                case 1:\r
+                                    errorInfo += NEMOConstants.not_less_than;\r
+                                    break;\r
+                                case 2:\r
+                                    errorInfo += NEMOConstants.equal;\r
+                                    break;\r
+                                case 3:\r
+                                    errorInfo += NEMOConstants.not_equal;\r
+                                    break;\r
+                                case 4:\r
+                                    errorInfo += NEMOConstants.greater_than;\r
+                                    break;\r
+                                case 5:\r
+                                    errorInfo += NEMOConstants.not_greater_than;\r
+                                    break;\r
+                                case 6:\r
+                                    errorInfo += NEMOConstants.between;\r
+                                    break;\r
+                            }\r
+                            Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue();\r
+                            String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+                            //todo rangevalue\r
+                            if (intValue!=null){\r
+                                errorInfo +=intValue;\r
+                            }\r
+                            if (stringValue!=null){\r
+                                errorInfo+=stringValue;\r
+                            }\r
+                        }\r
+\r
+                        }\r
+                    if (operation.getAction()!=null){\r
+                        errorInfo += NEMOConstants.Action+": ";\r
+                        List<Action> actionList = operation.getAction();\r
+                        for (Action action : actionList){\r
+                            errorInfo += action.getActionName().getValue() +":";\r
+                            List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\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
+                            org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+                            if (intValues!=null){\r
+                                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+                                    errorInfo += intValue.getValue()+",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (stringValues!=null){\r
+                                for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+                                    errorInfo += stringValue.getValue() +",";\r
+                                }\r
+                                errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+                            }\r
+                            if (rangeValue!=null){\r
+                                errorInfo += "["+rangeValue.getMin()+","+ rangeValue.getMax()+"]";\r
+                            }\r
+                            errorInfo +=")";\r
+                        }\r
+                    }\r
+                    }\r
+                }\r
+            }\r
+        return errorInfo;\r
+        }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java
new file mode 100644 (file)
index 0000000..02fa513
--- /dev/null
@@ -0,0 +1,58 @@
+/*\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.deleteintentlang;\r
+\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.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
+public class DeleteConnectionLang {\r
+    private TenantManage tenantManage;\r
+    private DeleteConnection deleteConnection;\r
+\r
+    public DeleteConnectionLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        deleteConnection = new DeleteConnection(dataBroker, tenantManage);\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
+        }\r
+        else{\r
+            errorInfo =  "The connection "+connectionname + " is not exist in this user vn space.";\r
+        }\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java
new file mode 100644 (file)
index 0000000..a32d7bf
--- /dev/null
@@ -0,0 +1,59 @@
+/*\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.deleteintentlang;\r
+\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
+\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class DeleteFlowLang {\r
+    private TenantManage tenantManage;\r
+    private DeleteFlow deleteFlow;\r
+\r
+    public DeleteFlowLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        deleteFlow = new DeleteFlow(dataBroker, tenantManage);\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
+        }\r
+        else\r
+        {\r
+            errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
+        }\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java
new file mode 100644 (file)
index 0000000..cab3e14
--- /dev/null
@@ -0,0 +1,59 @@
+/*\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.deleteintentlang;\r
+\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.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
+public class DeleteNodeLang {\r
+    private TenantManage tenantManage;\r
+    private DeleteNode deleteNode;\r
+\r
+    public DeleteNodeLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        deleteNode = new DeleteNode(dataBroker,tenantManage);\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
+        }\r
+        else{\r
+            errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
+        }\r
+\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java
new file mode 100644 (file)
index 0000000..028c1c5
--- /dev/null
@@ -0,0 +1,58 @@
+/*\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.deleteintentlang;\r
+\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.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
+public class DeleteOperationLang {\r
+    private TenantManage tenantManage;\r
+    private DeleteOperation deleteOperation;\r
+\r
+    public DeleteOperationLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        deleteOperation = new DeleteOperation(dataBroker,tenantManage);\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
+        }\r
+        else{\r
+            errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
+        }\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java
new file mode 100644 (file)
index 0000000..91609f4
--- /dev/null
@@ -0,0 +1,209 @@
+/*\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.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.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.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
+ * Created by z00293636 on 2015/11/5.\r
+ */\r
+public class UpdateConnectionLang {\r
+    private TenantManage tenantManage;\r
+    private Connection connection;\r
+    private UpdateConnection updateConnection;\r
+\r
+    public UpdateConnectionLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
+    }\r
+\r
+    public String ConnectionHandling(UserId userId,String connectionname, String connectiontype, List<String> endnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        String errorInfo = null;\r
+        if (!propertyList.isEmpty()){\r
+            errorInfo = checkProperty(propertyList);\r
+        }\r
+        if (errorInfo==null){\r
+            errorInfo = createConnection(userId,connectionname,connectiontype,endnodes,propertyList);\r
+            if (errorInfo == null){\r
+                return updateConnection.ConnectionHandling(userId,this.connection);\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkProperty(LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        String errorInfo = null;\r
+        for (String propertyName : propertyList.keySet()){\r
+            LinkedHashMap<String, String> propertyValues = propertyList.get(propertyName);\r
+            Iterator<String> iterator = propertyValues.values().iterator();\r
+            String valueType = iterator.next();\r
+\r
+            while (iterator.hasNext()){\r
+                if (valueType.equals(NEMOConstants.range)) {\r
+                    errorInfo = "The property should just has one range value.";\r
+                    return errorInfo;\r
+                }\r
+                else if (valueType.equals(NEMOConstants.string)){\r
+                    if (!iterator.next().equals(NEMOConstants.string)){\r
+                        return "The property " + propertyValues.get(iterator.next()) + " should be string.";\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
+        return errorInfo;\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
+            }\r
+        }\r
+        if (!ConnExist){\r
+            ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString());\r
+            connectionBuilder.setKey(new ConnectionKey(connectionId));\r
+            connectionBuilder.setConnectionId(connectionId);\r
+        }\r
+\r
+        connectionBuilder.setConnectionName(new ConnectionName(connectionname));\r
+        connectionBuilder.setConnectionType(new ConnectionType(connectiontype));\r
+\r
+        if (!endnodes.isEmpty() && errorInfo==null){\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
+                }\r
+            }\r
+            connectionBuilder.setEndNode(endNodeList);\r
+        }\r
+\r
+        if (!propertyList.isEmpty() && errorInfo==null){\r
+            PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+            List<Property> connectionproperty = new ArrayList<Property>();\r
+            for (String propertyname : propertyList.keySet()){\r
+                propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+                propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+                PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+                LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+                List<IntValue> intValueList = new ArrayList<IntValue>();\r
+                List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+                RangeValue Rangevalue = null;\r
+                int order = 0;\r
+                for (String value : valuetype.keySet()){\r
+                    if (valuetype.get(value).equals(NEMOConstants.string)){\r
+                        StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                        stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+                        stringValueBuilder.setValue(value);\r
+                        stringValueBuilder.setOrder((long)order);\r
+                        stringValueList.add(stringValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.integer)){\r
+                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                        intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+                        intValueBuilder.setValue(Long.parseLong(value));\r
+                        intValueBuilder.setOrder((long)order);\r
+                        intValueList.add(intValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.range)){\r
+                        String[] rangevalue = new String[2];\r
+                        rangevalue = value.split(",");\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
+                        propertyValuesBuilder.setRangeValue(Rangevalue);\r
+                    }\r
+                    order++;\r
+                }\r
+                if (intValueList.isEmpty()){\r
+                    intValueList = null;\r
+                    propertyValuesBuilder.setIntValue(intValueList);\r
+                }\r
+                if (stringValueList.isEmpty()){\r
+                    stringValueList = null;\r
+                    propertyValuesBuilder.setStringValue(stringValueList);\r
+                }\r
+                propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(Rangevalue);\r
+                propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+                connectionproperty.add(propertyBuilder.build());\r
+            }\r
+            connectionBuilder.setProperty(connectionproperty);\r
+        }\r
+        this.connection = connectionBuilder.build();\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateFlowLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateFlowLang.java
new file mode 100644 (file)
index 0000000..ec065da
--- /dev/null
@@ -0,0 +1,251 @@
+/*\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.UpdateFlow;\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.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
+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
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/5.\r
+ */\r
+public class UpdateFlowLang {\r
+    private TenantManage tenantManage;\r
+    private UpdateFlow updateFlow;\r
+    private Flow flow;\r
+\r
+    public UpdateFlowLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        updateFlow = new UpdateFlow(dataBroker,tenantManage);\r
+    }\r
+\r
+    public String FlowHandling(UserId userId, String flowname,LinkedHashMap<String,LinkedHashMap<String,String>> flowmatch,LinkedHashMap<String,LinkedHashMap<String,String>> propertyList){\r
+        String errorInfo = null;\r
+        if (!propertyList.isEmpty()){\r
+            errorInfo = checkProperty(propertyList);\r
+        }\r
+        if (errorInfo==null){\r
+            errorInfo = createFlow(userId,flowname,flowmatch,propertyList);\r
+            if (errorInfo==null)\r
+            {\r
+                return updateFlow.FlowHandling(userId,this.flow);\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkProperty(LinkedHashMap<String,LinkedHashMap<String,String>> flowproperty){\r
+        String errorInfo = null;\r
+        for (String propertyName : flowproperty.keySet()){\r
+            LinkedHashMap<String,String> propertyValues= flowproperty.get(propertyName);\r
+            Iterator<String> iterator = propertyValues.values().iterator();\r
+            String valueType = iterator.next();\r
+\r
+            while (iterator.hasNext()){\r
+                if (valueType.equals(NEMOConstants.range)) {\r
+                    errorInfo = "The property should just has one range value.";\r
+                    return errorInfo;\r
+                }\r
+                else if (valueType.equals(NEMOConstants.string)){\r
+                    if (!iterator.next().equals(NEMOConstants.string)){\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
+\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
+            }\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
+            }\r
+        }\r
+        if (!FlowExist){\r
+            FlowId flowId = new FlowId(UUID.randomUUID().toString());\r
+            flowBuilder.setKey(new FlowKey(flowId));\r
+            flowBuilder.setFlowId(flowId);\r
+        }\r
+\r
+        flowBuilder.setFlowName(new FlowName(flowname));\r
+\r
+        if (!flowmatch.isEmpty() && errorInfo==null){\r
+            List<MatchItem> matchItemList = new ArrayList<MatchItem>();\r
+            MatchItemBuilder matchItemBuilder = new MatchItemBuilder();\r
+            for (String matchname : flowmatch.keySet()){\r
+                matchItemBuilder.setMatchItemName(new MatchItemName(matchname));\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
+                    if (matchvalue.get(value).equals(NEMOConstants.integer)){\r
+                        matchItemValueBuilder.setIntValue(Long.parseLong(value));\r
+                    }\r
+                    if (matchvalue.get(value).equals(NEMOConstants.range)){\r
+                        String[] rangevalue = new String[2];\r
+                        rangevalue = value.split(",");\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
+                        matchItemValueBuilder.setRangeValue(rangeValueBuilder.build());\r
+                    }\r
+                }\r
+                matchItemBuilder.setMatchItemValue(matchItemValueBuilder.build());\r
+                matchItemList.add(matchItemBuilder.build());\r
+            }\r
+            if (matchItemList.isEmpty()){\r
+                matchItemList=null;\r
+                flowBuilder.setMatchItem(matchItemList);\r
+            }\r
+            flowBuilder.setMatchItem(matchItemList);\r
+        }\r
+\r
+        if (errorInfo==null && ! propertyList.isEmpty()) {\r
+            PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+            List<Property> flowproperty = new ArrayList<Property>();\r
+            for (String propertyname : propertyList.keySet()){\r
+                propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+                propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+                PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+                LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+                List<IntValue> intValueList = new ArrayList<IntValue>();\r
+                List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+                RangeValue Rangevalue = null;\r
+                int order = 0;\r
+                for (String value : valuetype.keySet()){\r
+                    if (valuetype.get(value).equals(NEMOConstants.string)){\r
+                        StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+                        stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+                        stringValueBuilder.setValue(value);\r
+                        stringValueBuilder.setOrder((long)order);\r
+                        stringValueList.add(stringValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.integer)) {\r
+                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                        intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+                        intValueBuilder.setValue(Long.parseLong(value));\r
+                        intValueBuilder.setOrder((long)order);\r
+                        intValueList.add(intValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.range)){\r
+                        String[] rangevalue = new String[2];\r
+                        rangevalue = value.split(",");\r
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValueBuilder rangeValueBuilder\r
+                                = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.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
+                        propertyValuesBuilder.setRangeValue(Rangevalue);\r
+                    }\r
+                    order++;\r
+                }\r
+                if (intValueList.isEmpty()){\r
+                    intValueList = null;\r
+                    propertyValuesBuilder.setIntValue(intValueList);\r
+                }\r
+                if (stringValueList.isEmpty()){\r
+                    stringValueList = null;\r
+                    propertyValuesBuilder.setStringValue(stringValueList);\r
+                }\r
+                propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(Rangevalue);\r
+                propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+                flowproperty.add(propertyBuilder.build());\r
+            }\r
+            flowBuilder.setProperty(flowproperty);\r
+        }\r
+        this.flow = flowBuilder.build();\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateNodeLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateNodeLang.java
new file mode 100644 (file)
index 0000000..819d7f2
--- /dev/null
@@ -0,0 +1,233 @@
+/*\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.languagestyle.NEMOParse.NEMOparser;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;\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.users.User;\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
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/10/31.\r
+ */\r
+public class UpdateNodeLang {\r
+    private TenantManage tenantManage;\r
+    private UpdateNode updateNode;\r
+    private Node node;\r
+\r
+    public UpdateNodeLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        updateNode = new UpdateNode(dataBroker,tenantManage);\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
+        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
+        }\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
+        return errorInfo;\r
+    }\r
+\r
+    private String checkProperty(LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+        String errorInfo = null;\r
+       for (String propertyName : propertyList.keySet()) {\r
+           LinkedHashMap<String, String> propertyValues = propertyList.get(propertyName);\r
+           Iterator<String> iterator = propertyValues.values().iterator();\r
+           String valueType = iterator.next();\r
+\r
+           while (iterator.hasNext()) {\r
+               if (valueType.equals(NEMOConstants.range)) {\r
+                   errorInfo = "The property should just has one range value.";\r
+                   return errorInfo;\r
+               }\r
+               else if (valueType.equals(NEMOConstants.string)){\r
+                   if (!iterator.next().equals(NEMOConstants.string)){\r
+                       return "The property " + propertyValues.get(iterator.next()) + " should be string.";\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
+        return errorInfo;\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
+            }\r
+        }\r
+        NodeBuilder nodeBuilder = new NodeBuilder();\r
+        Boolean NodeExist = false;\r
+        if (!nodeList.isEmpty())\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
+                }\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
+        }\r
+\r
+        nodeBuilder.setNodeName(new NodeName(nodename));\r
+        nodeBuilder.setNodeType(new NodeType(nodetype));\r
+\r
+        List<SubNode> subNodeList = new ArrayList<SubNode>();\r
+        Boolean subnodeexist = false;\r
+        if (errorInfo==null && !subnodes.isEmpty())\r
+        {\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
+                }\r
+                else\r
+                {\r
+                    errorInfo = "The subnode is not exist.";\r
+                    return errorInfo;\r
+                }\r
+                order ++;\r
+            }\r
+            nodeBuilder.setSubNode(subNodeList);\r
+        }\r
+\r
+        if (errorInfo==null && !propertyList.isEmpty())\r
+        {\r
+            PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+            List<Property> nodeproperty = new ArrayList<Property>();\r
+            for (String propertyname : propertyList.keySet())\r
+            {\r
+                propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+                propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+                PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+                LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+                List<IntValue> intValueList = new ArrayList<IntValue>();\r
+                List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+                RangeValue RangeValue = null;\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
+                        stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+                        stringValueBuilder.setValue(value);\r
+                        stringValueBuilder.setOrder((long)order);\r
+                        stringValueList.add(stringValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.integer))\r
+                    {\r
+                        IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+                        intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+                        intValueBuilder.setValue(Long.parseLong(value));\r
+                        intValueBuilder.setOrder((long)order);\r
+                        intValueList.add(intValueBuilder.build());\r
+                    }\r
+                    if (valuetype.get(value).equals(NEMOConstants.range))\r
+                    {\r
+                        String[] rangevalue = new String[2];\r
+                        rangevalue = value.split(",");\r
+                        RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                        if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1]))\r
+                        {\r
+                            rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+                        }\r
+                       else\r
+                        {\r
+                            rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+                            rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+                        }\r
+                        RangeValue = rangeValueBuilder.build();\r
+                        propertyValuesBuilder.setRangeValue(RangeValue);\r
+                    }\r
+                    order++;\r
+                }\r
+                if (intValueList.isEmpty())\r
+                {\r
+                    intValueList = null;\r
+                    propertyValuesBuilder.setIntValue(intValueList);\r
+                }\r
+                if (stringValueList.isEmpty())\r
+                {\r
+                    stringValueList = null;\r
+                    propertyValuesBuilder.setStringValue(stringValueList);\r
+                }\r
+\r
+                propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(RangeValue);\r
+                propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+                nodeproperty.add(propertyBuilder.build());\r
+            }\r
+            nodeBuilder.setProperty(nodeproperty);\r
+        }\r
+        this.node = nodeBuilder.build();\r
+        return errorInfo;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateOperationLang.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateOperationLang.java
new file mode 100644 (file)
index 0000000..4926310
--- /dev/null
@@ -0,0 +1,361 @@
+/*\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.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.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
+\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class UpdateOperationLang {\r
+    private TenantManage tenantManage;\r
+    private Operation operation;\r
+    private UpdateOperation updateOperation;\r
+    List<ConditionSegment> conditionSegmentList = new ArrayList<ConditionSegment>();\r
+    List<Action> actionList = new ArrayList<Action>();\r
+\r
+    public UpdateOperationLang(DataBroker dataBroker, TenantManage tenantManage){\r
+        this.tenantManage = tenantManage;\r
+        updateOperation = new UpdateOperation(dataBroker, tenantManage);\r
+    }\r
+\r
+    public String OperationHandling(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
+        errorInfo = createOperation(userId,operationname,target,priority,conditions,actions);\r
+        if (errorInfo==null){\r
+            errorInfo = updateOperation.OperationHandling(userId,this.operation);\r
+        }\r
+        return errorInfo;\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
+            }\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
+            }\r
+        }\r
+        if (!OperationExist) {\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
+        }\r
+        if (!TargetExist){\r
+            errorInfo = "The target "+target+" is not exist in user vn space.";\r
+            return errorInfo;\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
+\r
+        if (!actions.isEmpty() && errorInfo ==null){\r
+            errorInfo = createAction(user,actions);\r
+            if (errorInfo==null){\r
+                operationBuilder.setAction(actionList);\r
+            }\r
+        }\r
+        operation = operationBuilder.build();\r
+        return  errorInfo;\r
+    }\r
+\r
+    private String createCondition(LinkedHashMap<String,LinkedHashMap<String,String>> conditions){\r
+        String errorInfo = null;\r
+\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
+            conditionSegmentBuilder.setConditionSegmentId(conditionSegmentId);\r
+\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
+            LinkedHashMap<String, String> targetValue = conditions.get(conditionname);\r
+            ConditionParameterTargetValueBuilder conditionParameterTargetValueBuilder = new ConditionParameterTargetValueBuilder();\r
+            Iterator<String> iterator = targetValue.keySet().iterator();\r
+            String value = iterator.next();\r
+\r
+            if (targetValue.get(value).equals(NEMOConstants.string)){\r
+                conditionParameterTargetValueBuilder.setStringValue(value);\r
+            }\r
+            else if (targetValue.get(value).equals(NEMOConstants.integer)){\r
+                conditionParameterTargetValueBuilder.setIntValue(Long.parseLong(value));\r
+            }\r
+            else if (targetValue.get(value).equals(NEMOConstants.range)){\r
+                RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+                String[] values = value.split(NEMOConstants.comma);\r
+                if (Long.parseLong(values[0])>Long.parseLong(values[1])){\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
+                    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
+            conditionSegmentList.add(conditionSegmentBuilder.build());\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String createAction(User user,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+        String errorInfo = null;\r
+        int order = 0;\r
+        for (String actionname : actions.keySet())\r
+        {\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
+\r
+            int actionorder = 0;\r
+            for (String actionvalue : actionvalues.keySet())\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 (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
+                            }\r
+                            if (!ParaExist){\r
+                                errorInfo = "The parameter object is not exist in user vn space.";\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
+                        }\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
+            actionList.add(actionBuilder.build());\r
+        }\r
+        return errorInfo;\r
+    }\r
+}\r
index 9e8baf5a55312d54dcda57b4686bb48bd0ba3ef1..758b625d499c6a7b39ddac023e0bfdaca83f7002 100644 (file)
@@ -38,63 +38,48 @@ public class DeleteConnection {
     private TenantManage tenantManage;\r
     private static final Logger LOG = LoggerFactory.getLogger(DeleteConnection.class);\r
 \r
-    public DeleteConnection(DataBroker dataBroker, TenantManage tenantManage)\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
-    {\r
+    public String DeleteConnectionHandling(UserId userId, ConnectionId connectionId){\r
         Boolean ConnInstanceExist = false;\r
         String errorInfo = null;\r
-\r
         tenantManage.fetchVNSpace(userId);\r
         User user = tenantManage.getUser();\r
 \r
-        if (user != null)\r
-        {\r
-            if (user.getObjects() != null)\r
-            {\r
-                if (user.getObjects().getConnection() != null)\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 connection : connectionList)\r
-                    {\r
-                        if (connection.getConnectionId().equals(connectionId))\r
-                        {\r
+                    for (Connection connection : connectionList){\r
+                        if (connection.getConnectionId().equals(connectionId)){\r
                             ConnInstanceExist = true;\r
                             break;\r
                         }\r
                     }\r
-\r
-                    if (ConnInstanceExist)\r
-                    {\r
+                    if (ConnInstanceExist){\r
                         DeleteConnInstance(userId, connectionId);\r
                     }\r
-                    else\r
-                    {\r
-                        errorInfo = "The connection instance"+connectionId.toString()+ "is not exit. Could not be deleted.";\r
+                    else{\r
+                        errorInfo = "The connection instance "+connectionId.getValue()+ " is not exit. Could not be deleted.";\r
                     }\r
-\r
                 }\r
-                else\r
-                {\r
+                else{\r
                     errorInfo = "There are no connection instances in data store.";\r
                 }\r
             }\r
         }\r
-        else\r
-        {\r
+        else{\r
             errorInfo = "There are no connection instances in data store.";\r
         }\r
 \r
         return errorInfo;\r
     }\r
 \r
-    private void DeleteConnInstance(UserId userId, ConnectionId connectionId)\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
index 6a45e31e3c696685f2996005cc130669969635e3..84d304f693de4bf59ede62aae68dfc651b6926e5 100644 (file)
@@ -38,59 +38,46 @@ public class DeleteFlow {
     private TenantManage tenantManage;\r
     private static final Logger LOG = LoggerFactory.getLogger(DeleteFlow.class);\r
 \r
-    public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage)\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
-    {\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
 \r
-        if (user != null)\r
-        {\r
-            if (user.getObjects() != null)\r
-            {\r
-                if (user.getObjects().getFlow() != null)\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
-                    {\r
-                        if (flow.getFlowId().equals(flowId))\r
-                        {\r
+                    for (Flow flow : flowList){\r
+                        if (flow.getFlowId().equals(flowId)){\r
                             FlowInsExist = true;\r
                             break;\r
                         }\r
                     }\r
-\r
-                    if (FlowInsExist)\r
-                    {\r
+                    if (FlowInsExist) {\r
                         DeleteFlowInstance(userId,flowId);\r
                     }\r
-                    else\r
-                    {\r
-                        errorInfo = "The flow instance" +flowId.toString()+"is not exist. Could not be deleted.";\r
+                    else{\r
+                        errorInfo = "The flow instance " +flowId.getValue()+" is not exist. Could not be deleted.";\r
                     }\r
                 }\r
-                else\r
-                {\r
+                else{\r
                     errorInfo = "There are no flow instances in the data store.";\r
                 }\r
             }\r
         }\r
-        else\r
-        {\r
+        else{\r
             errorInfo = "There are no user in the data store.";\r
         }\r
         return errorInfo;\r
     }\r
 \r
-    private void DeleteFlowInstance(UserId userId, FlowId flowId)\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
index 03fb29e3c4a17d917d1f3ec8a9297f571c282a0e..bc9614b7b5fdc356926e78eb588712b965713f23 100644 (file)
@@ -24,7 +24,6 @@ import java.util.List;
  */\r
 public class DeleteIntent {\r
 \r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
     private DeleteNode deleteNode;\r
     private DeleteConnection deleteConnection;\r
@@ -32,9 +31,7 @@ public class DeleteIntent {
     private DeleteOperation deleteOperation;\r
     private DeleteResult deleteResult;\r
 \r
-    public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage)\r
-    {\r
-       this.dataBroker = dataBroker;\r
+    public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage){\r
         this.tenantManage = tenantManage;\r
         deleteNode = new DeleteNode(dataBroker, tenantManage);\r
         deleteConnection = new DeleteConnection(dataBroker,tenantManage);\r
@@ -43,26 +40,18 @@ public class DeleteIntent {
         deleteResult = new DeleteResult();\r
     }\r
 \r
-    public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput)\r
-    {\r
+    public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput){\r
         String errorInfo = null;\r
 \r
         errorInfo = aaa.checkUser(styleNemoDeleteInput);\r
-\r
-        if (errorInfo != null)\r
-        {\r
+        if (errorInfo != null){\r
             return errorInfo;\r
         }\r
-\r
-        else\r
-        {\r
-            if (styleNemoDeleteInput.getObjects() != null)\r
-            {\r
-                if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null)\r
-                {\r
+        else{\r
+            if (styleNemoDeleteInput.getObjects() != null){\r
+                if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null){\r
                     List<NodeId> nodeIdList= styleNemoDeleteInput.getObjects().getNode();\r
-                    for (NodeId nodeId : nodeIdList)\r
-                    {\r
+                    for (NodeId nodeId : nodeIdList){\r
                         errorInfo = deleteNode.DeleNodeHandling(styleNemoDeleteInput.getUserId(), nodeId);\r
                         if (errorInfo != null) {\r
                             break;\r
@@ -70,61 +59,46 @@ public class DeleteIntent {
                     }\r
                     return errorInfo;\r
                 }\r
-\r
-                if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null)\r
-                {\r
+                if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null){\r
                     List<ConnectionId> connectionIdList = styleNemoDeleteInput.getObjects().getConnection();\r
-                    for (ConnectionId connectionId : connectionIdList)\r
-                    {\r
+                    for (ConnectionId connectionId : connectionIdList){\r
                         errorInfo = deleteConnection.DeleteConnectionHandling(styleNemoDeleteInput.getUserId(),connectionId);\r
-                        if (errorInfo != null)\r
-                        {\r
+                        if (errorInfo != null){\r
                             break;\r
                         }\r
                     }\r
                     return errorInfo;\r
                 }\r
-\r
-                if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null)\r
-                {\r
+                if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null){\r
                     List<FlowId> flowIdList = styleNemoDeleteInput.getObjects().getFlow();\r
-                    for (FlowId flowId : flowIdList )\r
-                    {\r
+                    for (FlowId flowId : flowIdList ){\r
                         errorInfo = deleteFlow.DeleteFlowHandling(styleNemoDeleteInput.getUserId(),flowId);\r
-                        if (errorInfo != null)\r
-                        {\r
+                        if (errorInfo != null){\r
                             break;\r
                         }\r
                     }\r
                     return errorInfo;\r
                 }\r
             }\r
-        if (styleNemoDeleteInput.getOperations() != null)\r
-        {\r
-            if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null)\r
-            {\r
+        if (styleNemoDeleteInput.getOperations() != null){\r
+            if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null){\r
                 List<OperationId> operationIdList = styleNemoDeleteInput.getOperations().getOperation();\r
-                for (OperationId operationId : operationIdList)\r
-                {\r
+                for (OperationId operationId : operationIdList){\r
                     errorInfo = deleteOperation.DeleteOperationhandling(styleNemoDeleteInput.getUserId(),operationId);\r
-                    if (errorInfo != null)\r
-                    {\r
+                    if (errorInfo != null){\r
                         break;\r
                     }\r
                 }\r
                 return errorInfo;\r
             }\r
         }\r
-\r
-        if (styleNemoDeleteInput.getResults() != null)\r
-        {\r
+        if (styleNemoDeleteInput.getResults() != null){\r
             Results results = styleNemoDeleteInput.getResults();\r
             errorInfo = deleteResult.DeleteResultHandling(styleNemoDeleteInput.getUserId(),results);\r
-            if (errorInfo != null)\r
-            {\r
+            if (errorInfo != null){\r
                 return errorInfo;\r
             }\r
-        }\r
+           }\r
         }\r
         return null;\r
     }\r
index 7088f4fb44710a2e2336169530690531c46ec3fe..b924deb9f3f9aabfcf257a85aa7676a2f966804d 100644 (file)
@@ -7,23 +7,25 @@
  */\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.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.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\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.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
@@ -37,62 +39,63 @@ public class DeleteNode {
     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
-    {\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
-    {\r
+    public String DeleNodeHandling(UserId userId,NodeId nodeId){\r
         String errorInfo = null;\r
         Boolean NodeInstanceExist = false;\r
-\r
         tenantManage.fetchVNSpace(userId);\r
-\r
         User user = tenantManage.getUser();\r
-        if (user != null)\r
-        {\r
-            if (user.getObjects() != null)\r
-            {\r
-                if (user.getObjects().getNode() != null)\r
-                {\r
+        if (user != null){\r
+            if (user.getObjects() != null){\r
+                if (user.getObjects().getNode() != null){\r
                     List<Node> nodeList = tenantManage.getUser().getObjects().getNode();\r
-\r
-                    for (Node node : nodeList)\r
-                    {\r
-                        if (node.getNodeId().equals(nodeId))\r
-                        {\r
+                    for (Node node : nodeList){\r
+                        if (node.getNodeId().equals(nodeId)){\r
                             NodeInstanceExist = true;\r
-                            break;\r
+                            DeleteNodeInstance(userId,nodeId);\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
                         }\r
                     }\r
-                    if (NodeInstanceExist)\r
-                    {\r
-                        DeleteNodeInstance(userId,nodeId);\r
-                    }\r
-                    else\r
-                    {\r
-                        errorInfo = "The node instance" +nodeId.toString()+"is not exist.Could not be deleted";\r
+                    if (!NodeInstanceExist) {\r
+                        errorInfo = "The node instance " +nodeId.getValue()+" is not exist.Could not be deleted";\r
                     }\r
                 }\r
-                else\r
-                {\r
+                else{\r
                     errorInfo = "There are no nodes instances in data store.";\r
                 }\r
             }\r
         }\r
-        else\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
-    {\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
index 81cb365106ecd3f4f533e79c8c8553a427ba918a..5d9a0c9aed8bb7225361c45367d0d8b06e74ae51 100644 (file)
@@ -38,61 +38,46 @@ public class DeleteOperation {
     private TenantManage tenantManage;\r
     private static final Logger LOG = LoggerFactory.getLogger(DeleteOperation.class);\r
 \r
-    public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage)\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
-    {\r
+    public String DeleteOperationhandling(UserId userId, OperationId operationId){\r
         Boolean OperationExist = false;\r
         String errorInfo = null;\r
         tenantManage.fetchVNSpace(userId);\r
-\r
         User user = tenantManage.getUser();\r
 \r
-        if (user != null)\r
-        {\r
-            if (user.getOperations() != null)\r
-            {\r
-                if (user.getOperations().getOperation() != null)\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
-\r
-                    for (Operation operation : operationList)\r
-                    {\r
-                        if (operation.getOperationId().equals(operationId))\r
-                        {\r
+                    for (Operation operation : operationList){\r
+                        if (operation.getOperationId().equals(operationId)){\r
                             OperationExist = true;\r
                             break;\r
                         }\r
                     }\r
-\r
-                    if (OperationExist)\r
-                    {\r
+                    if (OperationExist){\r
                         DeleteOperationInstance(userId,operationId);\r
                     }\r
-                    else\r
-                    {\r
-                        errorInfo = "The operation instance" +operationId.toString()+"is not exist. Could not be deleted.";\r
+                    else{\r
+                        errorInfo = "The operation instance " +operationId.getValue()+" is not exist. Could not be deleted.";\r
                     }\r
                 }\r
-                else\r
-                {\r
+                else{\r
                     errorInfo = "There are no operation instances in the data store.";\r
                 }\r
             }\r
         }\r
-        else\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
-    {\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
index cac2067f4027cdbccbda2aa924874cd467ffef31..f70f2fe8ca0e45525833ef4f0b8689f4d7d1c54b 100644 (file)
@@ -7,28 +7,43 @@
  */\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.instancecheck.ConnectionInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ConnectionDefinitionCheck;\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 com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\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
@@ -37,65 +52,260 @@ public class UpdateConnection {
 \r
     private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private ConnectionDefinitionCheck connectionDefinitionCheck;\r
-    private ConnectionInstanceCheck connectionInstanceCheck;\r
+    private final SettableFuture<List<ConnectionDefinition>> connectionDefinitionListFuture = SettableFuture.create();\r
     private static final Logger LOG = LoggerFactory.getLogger(UpdateConnection.class);\r
 \r
-    public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage)\r
-    {\r
+    public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage){\r
         this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
-        connectionDefinitionCheck = new ConnectionDefinitionCheck(dataBroker);\r
-        connectionInstanceCheck = new ConnectionInstanceCheck(tenantManage);\r
     }\r
 \r
-    public String ConnectionHandling(UserId userId, Connection connection)\r
-    {\r
-        String errorDefinition = connectionDefinitionCheck.CheckConnectionDefinition(connection);\r
-        String errorInstance = connectionInstanceCheck.checkConnInstance(userId,connection);\r
-        if (errorDefinition != null)\r
-        {\r
-            return errorDefinition;\r
+    public String ConnectionHandling(UserId userId, Connection connection){\r
+        String errorInfo = null;\r
+        errorInfo =checkDefinition(connection);\r
+        if (errorInfo != null){\r
+            return errorInfo;\r
         }\r
-        if (errorInstance != null)\r
-        {\r
-            return errorInstance;\r
+        else {\r
+            errorInfo = checkInstance(userId,connection);\r
+            if (errorInfo != null){\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
+            }\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
+\r
+                        }\r
+                    }\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
+\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
+                }\r
+            }\r
+            else {\r
+                if (connection.getEndNode() != null){\r
+                    errorInfo = "There are no nodes in user vn space.";\r
+                }\r
+            }\r
+        }\r
+        else {\r
+            if (connection.getEndNode() != null){\r
+                errorInfo = "There are no nodes in user vn space.";\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkDefinition(Connection connection){\r
+        String errorInfo = null;\r
+        fetchConnectionDefinitionList();\r
+        Map<ConnectionType, ConnectionDefinition> connectionDefinitionMap = getConnectionDefinition();\r
+        if (connectionDefinitionMap.isEmpty()){\r
+            return "This type of connection has not been defined.";\r
         }\r
-        else\r
+        else {\r
+            if (connectionDefinitionMap.containsKey(connection.getConnectionType())){\r
+                List<Property> connectionProperties = connection.getProperty();\r
+                List<PropertyDefinition> propertyDefinitions = connectionDefinitionMap.get(connection.getConnectionType()).getPropertyDefinition();\r
+                if (connectionProperties != null && propertyDefinitions ==null)\r
+                {\r
+                    errorInfo = "There are no properties for this type of connection.";\r
+                }\r
+                else if (connectionProperties != null && propertyDefinitions != null)\r
+                {\r
+                    errorInfo = CheckProperty(connection.getProperty(), propertyDefinitions);\r
+                }\r
+            }\r
+            else {\r
+                return "This type of connection has not been defined.";\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String CheckProperty(List<Property> connectionProperty, List<PropertyDefinition> propertyDefinitionList ){\r
+        String errorInfo = null;\r
+        for (Property property : connectionProperty)\r
         {\r
-            WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-            if (userId != null && connection != null)\r
+            Boolean properyHasDefine = false;\r
+            if (errorInfo != null)\r
             {\r
-//                ConnectionBuilder connectionBuilder = new ConnectionBuilder();\r
-//                connectionBuilder.setConnectionId(connection.getConnectionId());\r
-//                connectionBuilder.setConnectionName(connection.getConnectionName());\r
-//                connectionBuilder.setConnectionType(connection.getConnectionType());\r
-//                connectionBuilder.setEndNode(connection.getEndNode());\r
-//                connectionBuilder.setProperty(connection.getProperty());\r
-//\r
-//                Connection connection1 = connectionBuilder.build();\r
-\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
+                break;\r
+            }\r
+            else\r
+            {\r
+                for (PropertyDefinition propertyDefinition : propertyDefinitionList)\r
+                {\r
+                    if (property.getPropertyName().equals(propertyDefinition.getPropertyName()))\r
+                    {\r
+                        properyHasDefine = true;\r
+                        PropertyValues propertyValues = property.getPropertyValues();\r
+                        PropertyDefinition.PropertyValueType propertyValueType = propertyDefinition.getPropertyValueType();\r
+\r
+                        if (propertyValues != null && propertyValueType != null)\r
+                        {\r
+                            if (propertyDefinition.getIsReadOnly()!=null\r
+                                    && PropertyDefinition.IsReadOnly.ReadOnly == propertyDefinition.getIsReadOnly())\r
+                            {\r
+                                if (propertyDefinition.getIsRequired().getIntValue() == 1)\r
+                                {\r
+                                    errorInfo = "The property value type of " + property.getPropertyName().toString() + " is read only.";\r
+                                    break;\r
+                                }\r
+                            }\r
+                            else\r
+                            {\r
+                                if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)) {\r
+                                    errorInfo = "The property value type of " + property.getPropertyName().toString() + " should be string.";\r
+                                    break;\r
+                                }\r
+                                if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)) {\r
+                                    errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be integer.";\r
+                                    break;\r
+                                }\r
+                                if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)) {\r
+                                    errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be range.";\r
+                                    break;\r
+                                }\r
+                            }\r
+                        }\r
                     }\r
+                }\r
+                if (!properyHasDefine) {\r
+                    errorInfo = "This type of property" + property.getPropertyName().toString() + " has not been defined.";\r
+                }\r
+            }\r
+        }\r
 \r
-                    @Override\r
-                    public void onSuccess(Void result) {\r
+        if (errorInfo == null)\r
+        {\r
+            Boolean requiredProperty = false;\r
+            for (PropertyDefinition propertyDefinition : propertyDefinitionList)\r
+            {\r
+                if (propertyDefinition.getIsRequired()!=null)\r
+                {\r
+                    if (propertyDefinition.getIsRequired().getIntValue() == 0)\r
+                    {\r
+                        for (Property property : connectionProperty)\r
+                        {\r
+                            if (property.getPropertyName().equals(propertyDefinition.getPropertyName()))\r
+                            {\r
+                                requiredProperty = true;\r
+                            }\r
+                        }\r
+                        if (!requiredProperty)\r
+                        {\r
+                            errorInfo = "The required property" + propertyDefinition.getPropertyName().toString() + "is not included in the intent.";\r
+                        }\r
                     }\r
-                });\r
+                }\r
             }\r
         }\r
-        return null;\r
+        return errorInfo;\r
     }\r
 \r
+    private void fetchConnectionDefinitionList(){\r
+        InstanceIdentifier<ConnectionDefinitions> connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build();\r
+        ListenableFuture<Optional<ConnectionDefinitions>> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId);\r
+        Futures.addCallback(connectiondefinitionFuture, new FutureCallback<Optional<ConnectionDefinitions>>() {\r
+            @Override\r
+            public void onSuccess(Optional<ConnectionDefinitions> result) {\r
+                setConnectionDefinitionListFuture(result.get().getConnectionDefinition());\r
+\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t) {\r
+                LOG.error("Can not read connection definition information.", t);\r
+            }\r
+        });\r
+        return;\r
+    }\r
+\r
+    private void setConnectionDefinitionListFuture(List<ConnectionDefinition> connectionDefinitionList){\r
+        this.connectionDefinitionListFuture.set(connectionDefinitionList);\r
+    }\r
+\r
+    private List<ConnectionDefinition> getConnectionDefinitionList(){\r
+        try{\r
+            return connectionDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+        }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read role information.", e);\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private Map<ConnectionType, ConnectionDefinition> getConnectionDefinition(){\r
+        List<ConnectionDefinition> connectionDefinitionList = getConnectionDefinitionList();\r
+        Map<ConnectionType, ConnectionDefinition> connectionDefinitionMap = new HashMap<ConnectionType, ConnectionDefinition>();\r
+        if (connectionDefinitionList!=null){\r
+            for (ConnectionDefinition connectionDefinition : connectionDefinitionList){\r
+                connectionDefinitionMap.put(connectionDefinition.getConnectionType(),connectionDefinition);\r
+            }\r
+        }\r
+        return connectionDefinitionMap;\r
+    }\r
 }\r
index f6b382c0a8c93df0c9b7da9f87308348e3a45cbf..275cf917760860b0e3d0d80c9a9014807741f637 100644 (file)
@@ -7,13 +7,19 @@
  */\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.instancecheck.FlowInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck;\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
@@ -22,13 +28,21 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.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 com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\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
@@ -36,64 +50,194 @@ public class UpdateFlow {
 \r
     private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private FlowDefinitionCheck flowDefinitionCheck;\r
-    private FlowInstanceCheck flowInstanceCheck;\r
+    private ValueCheck valueCheck;\r
+    private final SettableFuture<List<MatchItemDefinition>> matchItemDefinitionListFuture = SettableFuture.create();\r
     private static final Logger LOG = LoggerFactory.getLogger(UpdateFlow.class);\r
 \r
     public UpdateFlow(DataBroker dataBroker, TenantManage tenantManage)\r
     {\r
         this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
-        flowDefinitionCheck = new FlowDefinitionCheck(dataBroker);\r
-        flowInstanceCheck = new FlowInstanceCheck(tenantManage);\r
+        valueCheck = new ValueCheck();\r
     }\r
 \r
-    public String FlowHandling(UserId userId, Flow flow)\r
-    {\r
-        String errorDefinition = flowDefinitionCheck.CheckDefinition(flow);\r
-        String errorInstance = flowInstanceCheck.checkFlowInstance(userId,flow);\r
+    public String FlowHandling(UserId userId, Flow flow){\r
+        String errorInfo = null;\r
+        errorInfo = checkDefinition(flow);\r
+        if (errorInfo!=null){\r
+            return errorInfo;\r
+        }\r
+        else {\r
+            errorInfo = checkInstance(userId,flow);\r
+            if (errorInfo!=null){\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
-        if (errorDefinition != null)\r
-        {\r
-            return errorDefinition;\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
+            }\r
         }\r
-        if (errorInstance != null)\r
-        {\r
-            return errorInstance;\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
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkPredefine(List<MatchItem> matchItems){\r
+        String errorInfo = null;\r
+        for (MatchItem matchItem :matchItems){\r
+            if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_ip)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_ip)){\r
+               String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+                Boolean legalValue = true;\r
+                if (stringValues.contains("/")){\r
+                    legalValue = valueCheck.checkIpPrefix(stringValues);\r
+                }\r
+                else {\r
+                    legalValue = valueCheck.checkIpAddress(stringValues);\r
+                }\r
+                if (!legalValue){\r
+                    errorInfo = "The " + NEMOConstants.ip_address + " is not legal.";\r
+                }\r
+            }\r
+            if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_mac)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_mac)){\r
+                String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+                Boolean legalValue = valueCheck.checkMac(stringValues);\r
+                if (!legalValue){\r
+                    errorInfo = "The " + NEMOConstants.mac_address + " is not legal.";\r
+                }\r
+            }\r
         }\r
-        else\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkDefinition(Flow flow){\r
+        String errorInfo = null;\r
+        fetchMatchItemDefinitions();\r
+        Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap =getMatchItemDefinition();\r
+\r
+        if (flow.getMatchItem() != null)\r
         {\r
-            WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-            if (userId!=null && flow!=null)\r
-            {\r
-//                FlowBuilder flowBuilder = new FlowBuilder();\r
-//                flowBuilder.setFlowId(flow.getFlowId());\r
-//                flowBuilder.setFlowName(flow.getFlowName());\r
-//                flowBuilder.setMatchItem(flow.getMatchItem());\r
-//                flowBuilder.setProperty(flow.getProperty());\r
-//\r
-//                Flow flow1 = flowBuilder.build();\r
-                Flow flow1 = new FlowBuilder(flow).build();\r
-                FlowKey flowKey = new FlowKey(flow.getFlowId());\r
-\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
+            if (matchItemDefinitionMap.isEmpty()){\r
+                return "The match item has not been defined.";\r
+            }\r
+            else {\r
+                for (MatchItem matchItem : flow.getMatchItem())\r
+                {\r
+                    if (matchItemDefinitionMap.containsKey(matchItem.getMatchItemName())){\r
+                        MatchItemValue matchItemValue = matchItem.getMatchItemValue();\r
+                        MatchItemDefinition.MatchItemValueType matchItemValueType = matchItemDefinitionMap.get(matchItem.getMatchItemName()).getMatchItemValueType();\r
+                        if (matchItemValue != null && matchItemValueType != null)\r
+                        {\r
+                            if (matchItemValueType.getIntValue()==0 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()!=null&&matchItemValue.getRangeValue()==null))\r
+                            {\r
+                                errorInfo = "The match item value type for" +matchItem.getMatchItemName().toString()+"should be string.";\r
+                                break;\r
+                            }\r
+\r
+                            if (matchItemValueType.getIntValue()==1 && !(matchItemValue.getIntValue()!=null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()==null))\r
+                            {\r
+                                errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be integer.";\r
+                                break;\r
+                            }\r
 \r
-                    @Override\r
-                    public void onSuccess(Void result) {\r
+                            if (matchItemValueType.getIntValue()==2 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()!=null))\r
+                            {\r
+                                errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be range.";\r
+                                break;\r
+                            }\r
+                        }\r
                     }\r
-                });\r
+                    else {\r
+                        return "The match item has not been defined.";\r
+                    }\r
+\r
+                }\r
+            }\r
+            if (errorInfo==null){\r
+                errorInfo = checkPredefine(flow.getMatchItem());\r
             }\r
         }\r
-        return null;\r
+        return errorInfo;\r
+    }\r
+\r
+    private void fetchMatchItemDefinitions(){\r
+        InstanceIdentifier<MatchItemDefinitions> matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build();\r
+        ListenableFuture<Optional<MatchItemDefinitions>> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId);\r
+        Futures.addCallback(matchitemdefinitionFuture, new FutureCallback<Optional<MatchItemDefinitions>>() {\r
+            @Override\r
+            public void onSuccess(Optional<MatchItemDefinitions> result) {\r
+                setMatchItemDefinitionListFuture(result.get().getMatchItemDefinition());\r
+                return;\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t) {\r
+                LOG.error("Can not read match item definition information.", t);\r
+\r
+                return;\r
+            }\r
+        });\r
+        return ;\r
+    }\r
+\r
+    private void setMatchItemDefinitionListFuture(List<MatchItemDefinition> matchItemDefinitionList){\r
+        this.matchItemDefinitionListFuture.set(matchItemDefinitionList);\r
     }\r
 \r
+    private List<MatchItemDefinition> getMatchItemDefinitionList(){\r
+        try{\r
+            return matchItemDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+        }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read role information.", e);\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private Map<MatchItemName, MatchItemDefinition> getMatchItemDefinition(){\r
+        List<MatchItemDefinition> matchItemDefinitions = getMatchItemDefinitionList();\r
+        Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap = new HashMap<MatchItemName, MatchItemDefinition>();\r
+        if (matchItemDefinitions!=null){\r
+            for (MatchItemDefinition matchItemDefinition : matchItemDefinitions){\r
+                matchItemDefinitionMap.put(matchItemDefinition.getMatchItemName(),matchItemDefinition);\r
+            }\r
+        }\r
+        return matchItemDefinitionMap;\r
+    }\r
 }\r
index ea9a7f1f5aac282958c50ae3cb1a028d27b67b13..57ebdfd4b2427c01842972a6f03776f1ffe52ebb 100644 (file)
@@ -24,7 +24,6 @@ import java.util.List;
  */\r
 public class UpdateIntent {\r
 \r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
     private UpdateNode updateNode;\r
     private UpdateConnection updateConnection;\r
@@ -32,9 +31,7 @@ public class UpdateIntent {
     private UpdateOperation updateOperation;\r
     private UpdateResult updateResult;\r
 \r
-    public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage)\r
-    {\r
-        this.dataBroker = dataBroker;\r
+    public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage){\r
         this.tenantManage = tenantManage;\r
         updateNode = new UpdateNode(dataBroker,tenantManage);\r
         updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
@@ -44,82 +41,62 @@ public class UpdateIntent {
     }\r
 \r
     public String updateIntent(AAA aaa,StructureStyleNemoUpdateInput structureStyleNemoUpdateInput){\r
-\r
         String erroInfo = null;\r
 \r
         erroInfo = aaa.checkUser(structureStyleNemoUpdateInput);\r
 \r
-        if (erroInfo != null)\r
-        {\r
+        if (erroInfo != null){\r
             return erroInfo;\r
         }\r
-        else\r
-        {\r
-            if(structureStyleNemoUpdateInput.getObjects() != null)\r
-            {\r
-                if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null)\r
-                {\r
+        else{\r
+            if(structureStyleNemoUpdateInput.getObjects() != null){\r
+                if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null){\r
                     List<Node> nodeList= structureStyleNemoUpdateInput.getObjects().getNode();\r
-                    for (Node node : nodeList )\r
-                    {\r
+                    for (Node node : nodeList ){\r
                         erroInfo = updateNode.NodeHandling(structureStyleNemoUpdateInput.getUserId(), node);\r
-                        if (erroInfo != null)\r
-                        {\r
+                        if (erroInfo != null){\r
                             break;\r
                         }\r
                     }\r
                 }\r
-                if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null)\r
-                {\r
+                if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null){\r
                     List<Connection> connectionList = structureStyleNemoUpdateInput.getObjects().getConnection();\r
-                    for (Connection connection : connectionList)\r
-                    {\r
+                    for (Connection connection : connectionList){\r
                         erroInfo = updateConnection.ConnectionHandling(structureStyleNemoUpdateInput.getUserId(), connection);\r
-                        if (erroInfo != null)\r
-                        {\r
+                        if (erroInfo != null){\r
                             break;\r
                         }\r
                     }\r
                 }\r
 \r
-                if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null)\r
-                {\r
+                if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null){\r
                     List<Flow> flowList = structureStyleNemoUpdateInput.getObjects().getFlow();\r
-                    for (Flow flow : flowList)\r
-                    {\r
+                    for (Flow flow : flowList){\r
                         erroInfo = updateFlow.FlowHandling(structureStyleNemoUpdateInput.getUserId(),flow);\r
-                        if (erroInfo != null)\r
-                        {\r
+                        if (erroInfo != null) {\r
                             break;\r
                         }\r
                     }\r
                 }\r
             }\r
 \r
-        if (structureStyleNemoUpdateInput.getOperations() != null)\r
-            {\r
-                if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null)\r
-                {\r
+        if (structureStyleNemoUpdateInput.getOperations() != null){\r
+                if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null){\r
                     List<Operation> operationList =structureStyleNemoUpdateInput.getOperations().getOperation();\r
-                    for (Operation operation : operationList)\r
-                    {\r
+                    for (Operation operation : operationList){\r
                         erroInfo = updateOperation.OperationHandling(structureStyleNemoUpdateInput.getUserId(), operation);\r
-                        if (erroInfo !=null)\r
-                        {\r
+                        if (erroInfo !=null){\r
                             break;\r
                         }\r
                     }\r
                 }\r
             }\r
 \r
-        else if (structureStyleNemoUpdateInput.getResults() != null)\r
-            {\r
-                if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null)\r
-                {\r
+        else if (structureStyleNemoUpdateInput.getResults() != null){\r
+                if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null){\r
                     Results results = structureStyleNemoUpdateInput.getResults();\r
                     erroInfo = updateResult.ResultHandling(structureStyleNemoUpdateInput.getUserId(), results);\r
-                    if (erroInfo != null)\r
-                    {\r
+                    if (erroInfo != null){\r
                         //todo\r
                     }\r
                 }\r
index 1739b5f314822f1dddd3601063a02bc0b9909997..2c80ea12e4f7c3d9344303dcf61ba3023e3c1017 100644 (file)
@@ -7,12 +7,19 @@
  */\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.instancecheck.NodeInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck;\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
@@ -21,78 +28,304 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.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.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.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.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 UpdateNode {\r
 \r
     private DataBroker dataBroker;\r
-    private NodeDefinitionCheck nodeCheck;\r
-    private NodeInstanceCheck nodeInstanceCheck;\r
+    private TenantManage tenantManage;\r
+    private final SettableFuture<List<NodeDefinition>> nodeDefinitionListFuture = SettableFuture.create();\r
+    private ValueCheck valueCheck;\r
     private static final Logger LOG = LoggerFactory.getLogger(UpdateNode.class);\r
 \r
-    public UpdateNode(DataBroker dataBroker,TenantManage tenantManage)\r
-    {\r
+    public UpdateNode(DataBroker dataBroker,TenantManage tenantManage){\r
         this.dataBroker = dataBroker;\r
-        nodeCheck = new NodeDefinitionCheck(dataBroker);\r
-        nodeInstanceCheck = new NodeInstanceCheck(tenantManage);\r
+        this.tenantManage = tenantManage;\r
+        valueCheck = new ValueCheck();\r
     }\r
 \r
-    public String NodeHandling(UserId userId,Node node)\r
-    {\r
-        String errorDefinition = nodeCheck.CheckNodeDefinition(node);\r
-        String errorInstance = nodeInstanceCheck.checkNodeInstance(userId,node);\r
 \r
-        if (errorDefinition != null)\r
-        {\r
-            return errorDefinition;\r
+    public String NodeHandling(UserId userId,Node node){\r
+        String errorInfo = null;\r
+        errorInfo = checkDefinition(node);\r
+        if (errorInfo !=null){\r
+            return errorInfo;\r
         }\r
-        if (errorInstance != null)\r
-        {\r
-            return errorInstance;\r
+        else{\r
+            errorInfo = checkInstance(userId, node);\r
+            if (errorInfo!=null){\r
+                return errorInfo;\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
+\r
+                        @Override\r
+                        public void onSuccess(Void result) {\r
+                        }\r
+                    });\r
+                }\r
+            }\r
         }\r
-        else\r
-        {\r
-            WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-            if (userId != null && node.getNodeId() !=null)\r
-            {\r
-//                NodeBuilder nodeBuilder = new NodeBuilder();\r
-//                nodeBuilder.setNodeId(node.getNodeId());\r
-//                nodeBuilder.setNodeId(node.getNodeId());\r
-//                nodeBuilder.setNodeName(node.getNodeName());\r
-//                nodeBuilder.setSubNode(node.getSubNode());\r
-//                nodeBuilder.setProperty(node.getProperty());\r
-//                Node node1 = nodeBuilder.build();\r
-\r
-                Node node1 = new NodeBuilder(node).build();\r
-                NodeKey nodeKey = new NodeKey(node.getKey());\r
-\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
+        return errorInfo;\r
+    }\r
+\r
+    private String checkInstance(UserId userId, Node node){\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().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
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
 \r
-                    @Override\r
-                    public void onSuccess(Void result) {\r
+    private String checkDefinition(Node node){\r
+        String errorInfo = null;\r
+        fetchNodeDefinitions();\r
+        final Map<NodeType, NodeDefinition> map = getNodeDefinitions();\r
+        if (map.isEmpty()){\r
+            return "This type of Node has not been defined.";\r
+        }\r
+        else {\r
+            if (map.containsKey(node.getNodeType())){\r
+                List<Property> nodeProperties = node.getProperty();\r
+                List<PropertyDefinition> nodePropertyDefinitions = map.get(node.getNodeType()).getPropertyDefinition();\r
+\r
+                if (nodeProperties != null && nodePropertyDefinitions == null){\r
+                    errorInfo = "This type of node has no properties.";\r
+                }\r
+                else if (nodeProperties != null && nodePropertyDefinitions != null){\r
+                    errorInfo = checkProperty(nodeProperties, nodePropertyDefinitions);\r
+                    if (errorInfo != null){\r
                     }\r
-                });\r
+                    else {\r
+                        errorInfo = checkPredefine(nodeProperties);\r
+                    }\r
+                }\r
+            }\r
+            else {\r
+                return "This type of Node has not been defined.";\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkProperty(List<Property> nodeProperties, List<PropertyDefinition> nodePropertyDefinitions){\r
+        Boolean propertyHasDefine = false;\r
+        String errorInfo = null;\r
+\r
+        for (Property property : nodeProperties){\r
+            if (errorInfo != null){\r
+                break;\r
+            }\r
+            else{\r
+                for (PropertyDefinition propertydefinition : nodePropertyDefinitions){\r
+                    if (property.getPropertyName().equals(propertydefinition.getPropertyName())){\r
+                        propertyHasDefine = true;\r
+                        PropertyValues propertyValues = property.getPropertyValues();\r
+                        PropertyDefinition.PropertyValueType propertyValueType = propertydefinition.getPropertyValueType();\r
+\r
+                        if (propertyValues != null && propertyValueType != null){\r
+                            if (propertydefinition.getIsReadOnly()!=null\r
+                                    && PropertyDefinition.IsReadOnly.ReadOnly == propertydefinition.getIsReadOnly()){\r
+                                if (propertydefinition.getIsRequired().getIntValue() == 1){\r
+                                    errorInfo = "The property "+ property.getPropertyName().getValue()+" is readonly, can not be written.";\r
+                                    break;\r
+                                }\r
+                            }\r
+                            else if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null\r
+                                    && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)){\r
+                                errorInfo =  "The property value type "+property.getPropertyName().getValue()+" should be string";\r
+                                break;\r
+                            }\r
+                            else if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null\r
+                                    && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)){\r
+                                errorInfo =  "The property value type "+property.getPropertyName().getValue()+" should be integer";\r
+                                break;\r
+                            }\r
+                            else if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null\r
+                                    && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)){\r
+                                errorInfo =  "The property value type "+property.getPropertyName().getValue()+" should be range";\r
+                                break;\r
+                            }\r
+                        }\r
+                    }\r
+                }\r
+\r
+                if (!propertyHasDefine){\r
+                    errorInfo = "The property "+property.getPropertyName().getValue()+" has not been defined.";\r
+                }\r
+            }\r
+        }\r
+\r
+        if (errorInfo == null){\r
+            Boolean requiredProperty = false;\r
+            for (PropertyDefinition propertyDefinition : nodePropertyDefinitions){\r
+                if (propertyDefinition.getIsRequired()!=null){\r
+                    if (propertyDefinition.getIsRequired().getIntValue() ==0){\r
+                        for (Property property: nodeProperties){\r
+                            if (property.getPropertyName().equals(propertyDefinition.getPropertyName())){\r
+                                requiredProperty = true;\r
+                            }\r
+                        }\r
+                        if (!requiredProperty){\r
+                            errorInfo = "The required property "+ propertyDefinition.getPropertyName().getValue() + "is not included in the intent.";\r
+                            break;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkPredefine(List<Property> nodeProperties){\r
+        String errorInfo = null;\r
+        for (Property property : nodeProperties){\r
+            if (property.getPropertyName().getValue().equals(NEMOConstants.mac_address)){\r
+                List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                Boolean legalValue = true;\r
+                for (StringValue stringValue : stringValues){\r
+                   legalValue = valueCheck.checkMac(stringValue.getValue());\r
+                }\r
+                if (!legalValue){\r
+                    errorInfo = "The " + NEMOConstants.mac_address + " is not legal.";\r
+                }\r
+            }\r
+            if (property.getPropertyName().getValue().equals(NEMOConstants.ip_address)){\r
+                List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                Boolean legalValue = true;\r
+                for (StringValue stringValue : stringValues){\r
+                    if (stringValue.getValue().contains("/")){\r
+                        legalValue = valueCheck.checkIpPrefix(stringValue.getValue());\r
+                    }\r
+                    else {\r
+                        legalValue = valueCheck.checkIpAddress(stringValue.getValue());\r
+                    }\r
+                }\r
+                if (!legalValue){\r
+                    errorInfo = "The " + NEMOConstants.ip_address + " is not legal.";\r
+                }\r
+            }\r
+            if (property.getPropertyName().getValue().equals(NEMOConstants.gateway_ip)){\r
+                List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                Boolean legalValue = true;\r
+                for (StringValue stringValue : stringValues){\r
+                    legalValue = valueCheck.checkIpAddress(stringValue.getValue());\r
+                }\r
+                if (!legalValue){\r
+                    errorInfo = "The " + NEMOConstants.gateway_ip + " is not legal.";\r
+                }\r
+            }\r
+            if (property.getPropertyName().getValue().equals(NEMOConstants.ac_info_network)){\r
+                List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                Boolean legalValue = true;\r
+                for (StringValue stringValue : stringValues){\r
+                   if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){\r
+                       errorInfo = "The " + NEMOConstants.ac_info_network + " is not legal.";\r
+                   }\r
+                }\r
+            }\r
+            if (property.getPropertyName().getValue().equals(NEMOConstants.operating_mode)){\r
+                List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+                Boolean legalValue = true;\r
+                for (StringValue stringValue : stringValues){\r
+                    if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){\r
+                        errorInfo = "The " + NEMOConstants.operating_mode + " is not legal.";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\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
+        Futures.addCallback(nodedefinitionFuture, new FutureCallback<Optional<NodeDefinitions>>() {\r
+            @Override\r
+            public void onSuccess(Optional<NodeDefinitions> result){\r
+               setNodeDefinitionListFuture(result.get().getNodeDefinition());\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t){\r
+                LOG.error("Can not read node definitions information.", t);\r
+            }\r
+        });\r
+        return ;\r
+    }\r
+\r
+    private void setNodeDefinitionListFuture(List<NodeDefinition> nodeDefinitionList) {\r
+        this.nodeDefinitionListFuture.set(nodeDefinitionList);\r
+    }\r
+\r
+   private List<NodeDefinition> getNodeDefinitionList(){\r
+       try{\r
+           return nodeDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+       }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+           LOG.error("Cannot read role information.", e);\r
+           return null;\r
+       }\r
+   }\r
+\r
+    private Map<NodeType, NodeDefinition> getNodeDefinitions(){\r
+        final Map<NodeType, NodeDefinition> nodeDefinitionMap = new HashMap<NodeType, NodeDefinition>();\r
+        final List<NodeDefinition> nodeDefinitionList = getNodeDefinitionList();\r
+        if (nodeDefinitionList!=null){\r
+            for (NodeDefinition nodeDefinition : nodeDefinitionList){\r
+                nodeDefinitionMap.put(nodeDefinition.getNodeType(),nodeDefinition);\r
             }\r
         }\r
-        return null;\r
+        return nodeDefinitionMap;\r
     }\r
 \r
 }\r
index 36a7effbfede4b0a35501cac2e848365da100be1..664ee65b85a57123abce846bac4a5d406a7a8901 100644 (file)
@@ -7,28 +7,52 @@
  */\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.instancecheck.OperationInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck;\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.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.instance.condition.segment.ConditionParameterTargetValue;\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 com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\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
@@ -37,66 +61,346 @@ public class UpdateOperation {
 \r
     private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private OperationDefinitionCheck operationDefinitionCheck;\r
-    private OperationInstanceCheck operationInstanceCheck;\r
+    private final SettableFuture<List<ActionDefinition>> actionDefinitionListFuture =  SettableFuture.create();\r
+    private final SettableFuture<List<ConditionParameterDefinition>> conditionParameterDefinitionListFuture = SettableFuture.create();\r
+    private ValueCheck valueCheck;\r
     private static final Logger LOG = LoggerFactory.getLogger(UpdateOperation.class);\r
 \r
-    public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage)\r
-    {\r
+    public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage){\r
         this.dataBroker = dataBroker;\r
         this.tenantManage = tenantManage;\r
-        operationDefinitionCheck = new OperationDefinitionCheck(dataBroker);\r
-        operationInstanceCheck = new OperationInstanceCheck(tenantManage);\r
+        valueCheck = new ValueCheck();\r
     }\r
 \r
-    public String OperationHandling(UserId userId, Operation operation)\r
-    {\r
-        String errorDefinition = operationDefinitionCheck.CheckDefinition(operation);\r
-        String errorInstance = operationInstanceCheck.checkOperationInstance(userId, operation);\r
+    public String OperationHandling(UserId userId, Operation operation){\r
+        String errorInfo = null;\r
+        errorInfo = checkDefinition(operation);\r
+        if (errorInfo!=null){\r
+            return errorInfo;\r
+        }\r
+        else {\r
+            errorInfo = checkInstance(userId,operation);\r
+            if (errorInfo!=null){\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
-        if (errorDefinition != null)\r
-        {\r
-            return errorDefinition;\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
+            }\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
+        }\r
+        if (operation.getTargetObject()==null){\r
+            errorInfo = "The target should not be empty.";\r
         }\r
-        if (errorInstance != null)\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
+                else {\r
+                    errorInfo = "The target object is not exist.";\r
+                }\r
+            }\r
+            else {\r
+                errorInfo = "The target object is not exist.";\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
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkDefinition(Operation operation){\r
+        fetchActionDefinitions();\r
+        fetchConditionParaDefinitions();\r
+        String errorInfo = null;\r
+\r
+        if (operation.getAction() != null )\r
         {\r
-            return errorInstance;\r
+            errorInfo = checkAction(operation);\r
         }\r
-        else\r
+        if (errorInfo == null && operation.getConditionSegment() != null)\r
         {\r
-            WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
-            if (userId != null && operation.getOperationId() != null)\r
-            {\r
-//                OperationBuilder operationBuilder = new OperationBuilder();\r
-//                operationBuilder.setOperationId(operation.getOperationId());\r
-//                operationBuilder.setOperationName(operation.getOperationName());\r
-//                operationBuilder.setConditionSegment(operation.getConditionSegment());\r
-//                operationBuilder.setTargetObject(operationBuilder.getTargetObject());\r
-//                operationBuilder.setAction(operation.getAction());\r
-//                operationBuilder.setPriority(operation.getPriority());\r
-//\r
-//                Operation operation1 = operationBuilder.build();\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
+            errorInfo = checkCondition(operation);\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkAction(Operation operation){\r
+        String errorInfo = null;\r
+\r
+        fetchActionDefinitions();\r
+        Map<ActionName, ActionDefinition> actionDefinitionMap = getActionDefinition();\r
+        if (operation.getAction()!=null){\r
+            if (actionDefinitionMap.isEmpty()){\r
+                return "The action type has not been defined.";\r
+            }\r
+            else {\r
+                for (Action action : operation.getAction()){\r
+                    if (actionDefinitionMap.containsKey(action.getActionName())){\r
+                        ParameterValues parameterValues = action.getParameterValues();\r
+                        ActionDefinition.ParameterValueType parameterValueType = actionDefinitionMap.get(action.getActionName()).getParameterValueType();\r
+\r
+                        if (parameterValues != null && parameterValueType != null)\r
+                        {\r
+                            if (parameterValueType.getIntValue() == 0 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() != null && parameterValues.getRangeValue() == null)) {\r
+                                errorInfo = "The value type of" + action.getActionName().toString() + "should be string.";\r
+                                break;\r
+                            }\r
+                            if (parameterValueType.getIntValue() == 1 && !(parameterValues.getIntValue() != null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() == null)) {\r
+                                errorInfo = "The value type of" + action.getActionName().toString() + "should be integer.";\r
+                                break;\r
+                            }\r
+                            if (parameterValueType.getIntValue() == 2 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() != null)) {\r
+                                errorInfo = "The value type of" + action.getActionName().toString() + "should be range.";\r
+                                break;\r
+                            }\r
+                        }\r
                     }\r
+                    else {\r
+                        return "The action type has not been defined.";\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return errorInfo;\r
+    }\r
+\r
+    private String checkCondition(Operation operation){\r
+        String errorInfo = null;\r
+        fetchConditionParaDefinitions();\r
+        Map<ParameterName, ConditionParameterDefinition> conditionParameterDefinitionMap = getParameterMatchPattern();\r
+        if (operation.getConditionSegment()!=null){\r
+            if (conditionParameterDefinitionMap.isEmpty()){\r
+                return "This condition has not been defined in data store.";\r
+            }\r
+            else {\r
+                for (ConditionSegment conditionSegment :operation.getConditionSegment()){\r
+                    if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){\r
+                        ConditionParameterDefinition conditionParameterDefinition = conditionParameterDefinitionMap.get(conditionSegment.getConditionParameterName());\r
+\r
+                        if (conditionSegment.getConditionParameterMatchPattern() != null)\r
+                        {\r
+                            if (conditionParameterDefinition.getParameterMatchPatterns() != null)\r
+                            {\r
+                                List<ParameterMatchPatterns.ParameterMatchPattern> conditionParameterMatchPatterns = conditionParameterDefinition.getParameterMatchPatterns().getParameterMatchPattern();\r
+                                if (conditionParameterMatchPatterns != null)\r
+                                {\r
+                                    Boolean matchpatternexist = false;\r
+                                    for (ParameterMatchPatterns.ParameterMatchPattern parameterMatchPattern : conditionParameterMatchPatterns)\r
+                                    {\r
+                                        if (parameterMatchPattern.getIntValue() == conditionSegment.getConditionParameterMatchPattern().getIntValue())\r
+                                        {\r
+                                            matchpatternexist = true;\r
+                                            break;\r
+                                        }\r
+                                    }\r
+                                    if (!matchpatternexist)\r
+                                    {\r
+                                        errorInfo = "The match pattern has not defined in the condition.";\r
+                                    }\r
+                                }\r
+                                else\r
+                                {\r
+                                    errorInfo = "There are no match pattern in match pattrn list.";\r
+                                    break;\r
+                                }\r
+                            }\r
+                            else\r
+                            {\r
+                                errorInfo = "No match patterns have been defined in data store.";\r
+                                break;\r
+                            }\r
+                        }\r
+                        if (conditionSegment.getConditionParameterTargetValue() != null)\r
+                        {\r
+                            if (conditionParameterDefinition.getParameterValueType() != null)\r
+                            {\r
+                                ConditionParameterTargetValue conditionParameterTargetValue = conditionSegment.getConditionParameterTargetValue();\r
+                                ConditionParameterDefinition.ParameterValueType  parameterValueType = conditionParameterDefinition.getParameterValueType();\r
+\r
+                                if (parameterValueType.getIntValue() == 0 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() != null && conditionParameterTargetValue.getRangeValue() == null)) {\r
+                                    errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be string.";\r
+                                    break;\r
+                                }\r
+                                if (parameterValueType.getIntValue() == 1 && !(conditionParameterTargetValue.getIntValue() != null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() == null)) {\r
+                                    errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be integer.";\r
+                                    break;\r
+                                }\r
+                                if (parameterValueType.getIntValue() == 2 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() != null)) {\r
+                                    errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be range.";\r
+                                    break;\r
+                                }\r
 \r
-                    @Override\r
-                    public void onSuccess(Void result) {\r
-                       \r
+                            }\r
+                        }\r
+                        if (conditionSegment.getConditionParameterName().getValue().equals(NEMOConstants.time)){\r
+                            Boolean legalValue = valueCheck.checkTime(conditionSegment.getConditionParameterTargetValue().getStringValue());\r
+                            if (!legalValue){\r
+                                errorInfo = "The " + NEMOConstants.time + " is not legal.";\r
+                                break;\r
+                            }\r
+                        }\r
                     }\r
-                });\r
+                    else {\r
+                        return "This condition has not been defined in data store.";\r
+                    }\r
+                }\r
             }\r
         }\r
-        return null;\r
+        return errorInfo;\r
+    }\r
+\r
+    private void fetchActionDefinitions(){\r
+        InstanceIdentifier<ActionDefinitions> actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build();\r
+        ListenableFuture<Optional<ActionDefinitions>> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId);\r
+        Futures.addCallback(actiondefinitionFuture, new FutureCallback<Optional<ActionDefinitions>>() {\r
+            @Override\r
+            public void onSuccess(Optional<ActionDefinitions> result) {\r
+                setActionDefinitionListFuture( result.get().getActionDefinition());\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t) {\r
+                LOG.error("Can not read action definition information.", t);\r
+            }\r
+        });\r
+        return ;\r
+    }\r
+\r
+    private void fetchConditionParaDefinitions(){\r
+        InstanceIdentifier<ConditionParameterDefinitions> conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build();\r
+        ListenableFuture<Optional<ConditionParameterDefinitions>> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId);\r
+        Futures.addCallback(conditionparadefinitionFuture, new FutureCallback<Optional<ConditionParameterDefinitions>>() {\r
+            @Override\r
+            public void onSuccess(Optional<ConditionParameterDefinitions> result) {\r
+               setConditionParameterDefinitionListFuture(result.get().getConditionParameterDefinition());\r
+            }\r
+\r
+            @Override\r
+            public void onFailure(Throwable t) {\r
+                LOG.error("Can not read condition parameter definition information.", t);\r
+            }\r
+        });\r
+        return ;\r
+    }\r
+\r
+    private void setConditionParameterDefinitionListFuture(List<ConditionParameterDefinition> conditionParameterDefinitions){\r
+        this.conditionParameterDefinitionListFuture.set(conditionParameterDefinitions);\r
+    }\r
+\r
+    private void setActionDefinitionListFuture(List<ActionDefinition> actionDefinitions){\r
+        this.actionDefinitionListFuture.set(actionDefinitions);\r
+    }\r
+\r
+    private List<ConditionParameterDefinition> getConditionParameterDefinitionList(){\r
+        try{\r
+            return conditionParameterDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+        }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read role information.", e);\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private List<ActionDefinition> getActionDefinitionList(){\r
+        try{\r
+            return actionDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+        }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+            LOG.error("Cannot read role information.", e);\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private Map<ParameterName, ConditionParameterDefinition> getParameterMatchPattern(){\r
+        List<ConditionParameterDefinition> conditionParameterDefinitions = getConditionParameterDefinitionList();\r
+        Map<ParameterName, ConditionParameterDefinition> conditionParameterDefinitionMap = new HashMap<ParameterName, ConditionParameterDefinition>();\r
+        if (conditionParameterDefinitions!=null){\r
+            for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitions){\r
+                conditionParameterDefinitionMap.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition);\r
+            }\r
+        }\r
+        return conditionParameterDefinitionMap;\r
+    }\r
+\r
+    private Map<ActionName, ActionDefinition> getActionDefinition(){\r
+        List<ActionDefinition> actionDefinitions = getActionDefinitionList();\r
+        Map<ActionName,ActionDefinition> actionDefinitionMap = new HashMap<ActionName, ActionDefinition>();\r
+        if (actionDefinitionMap!=null){\r
+            for (ActionDefinition actionDefinition : actionDefinitions){\r
+                actionDefinitionMap.put(actionDefinition.getActionName(),actionDefinition);\r
+            }\r
+        }\r
+        return actionDefinitionMap;\r
     }\r
 }\r
index ede89b763595a1887b6b09e2f5a9e4e8c19e68cf..d4899edece714690316b81fd83e923a1246175e2 100644 (file)
@@ -9,8 +9,6 @@ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
 \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.instancecheck.ResultInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck;\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.Results;\r
 \r
@@ -19,36 +17,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
  */\r
 public class UpdateResult {\r
 \r
-    private DataBroker dataBroker;\r
     private TenantManage tenantManage;\r
-    private ResultDefinitionCheck resultDefinitionCheck;\r
-    private ResultInstanceCheck resultInstanceCheck;\r
 \r
-    public UpdateResult(DataBroker dataBroker, TenantManage tenantManage)\r
-    {\r
-        this.dataBroker = dataBroker;\r
+    public UpdateResult(DataBroker dataBroker, TenantManage tenantManage){\r
         this.tenantManage = tenantManage;\r
-        resultDefinitionCheck = new ResultDefinitionCheck();\r
-        resultInstanceCheck = new ResultInstanceCheck(tenantManage);\r
     }\r
 \r
     public String ResultHandling(UserId userId, Results results)\r
     {\r
-        String errorDefinition = resultDefinitionCheck.CheckDefinition(results);\r
-        String errorInstance = resultInstanceCheck.checkResultInstance(userId,results);\r
-\r
-        if (errorDefinition!= null)\r
-        {\r
-            return errorDefinition;\r
-        }\r
-        else if (errorInstance != null)\r
-        {\r
-            return errorInstance;\r
-        }\r
-        else\r
-        {\r
-            //todo\r
-        }\r
         return null;\r
     }\r
 }\r
diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/ValueCheck.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/ValueCheck.java
new file mode 100644 (file)
index 0000000..b36bd82
--- /dev/null
@@ -0,0 +1,141 @@
+/*\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
+/**\r
+ * Created by z00293636 on 2015/11/26.\r
+ */\r
+public class ValueCheck {\r
+    public boolean checkMac(String macAddress){\r
+        Boolean legalValue = true;\r
+        String[] value = macAddress.split(":");\r
+        if (value.length!=6){\r
+            legalValue = false;\r
+        }\r
+        else {\r
+            for (int i=0; i<value.length;i++){\r
+                if (value[i].length()!=2){\r
+                    legalValue= false;\r
+                }\r
+                else {\r
+                    for (int j=0;j<value[i].length();j++){\r
+                        char cc = value[i].charAt(j);\r
+                        if(!(cc=='0'||cc=='1'||cc=='2'||cc=='3'||cc=='4'||cc=='5'||cc=='6'||cc=='7'||cc=='8'||cc=='9'\r
+                                ||cc=='A'||cc=='B'||cc=='C'||cc=='D'||cc=='E'||cc=='F'\r
+                                ||cc=='a'||cc=='b'||cc=='c'||cc=='c'||cc=='d'||cc=='e'||cc=='f')){\r
+                            legalValue = false;\r
+                        }\r
+                    }\r
+                }\r
+            }\r
+        }\r
+        return legalValue;\r
+    }\r
+\r
+    public Boolean checkIpPrefix(String ipPrefix){\r
+        Boolean legalValue = true;\r
+        String[] valuePrefix = ipPrefix.split("/");\r
+        if (valuePrefix.length!=2){\r
+            legalValue = false;\r
+        }\r
+        else {\r
+            if (Integer.parseInt(valuePrefix[1])>32||Integer.parseInt(valuePrefix[1])<1){\r
+                legalValue = false;\r
+            }\r
+            else {\r
+                legalValue = checkIpAddress(valuePrefix[0]);\r
+            }\r
+        }\r
+        return legalValue;\r
+    }\r
+\r
+    public Boolean checkIpAddress(String ipAddress){\r
+        Boolean legalValue = true;\r
+        String[] value = ipAddress.split("\\.");\r
+        if (value.length!=4){\r
+            legalValue = false;\r
+        }\r
+        else {\r
+            for (int i=0;i<value.length;i++){\r
+                if (Integer.parseInt(value[i])>255||Integer.parseInt(value[i])<0){\r
+                    legalValue = false;\r
+                }\r
+            }\r
+        }\r
+        return legalValue;\r
+    }\r
+\r
+    public Boolean checkTime(String time){\r
+        Boolean legalValue = true;\r
+        String[] value = time.split(",");\r
+        if (value.length == 1){\r
+            String[] hourMS = value[0].split(":");\r
+            if (hourMS.length!=3){\r
+                legalValue = false;\r
+            }\r
+            else {\r
+                if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){\r
+                    legalValue = false;\r
+                }\r
+            }\r
+        }\r
+        if (value.length == 2){\r
+            String[] yearMD = value[0].split("-");\r
+            if (yearMD.length!=3){\r
+                legalValue = false;\r
+            }\r
+            else {\r
+                if (Integer.parseInt(yearMD[0])<1){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(yearMD[1])>12||Integer.parseInt(yearMD[1])<1){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(yearMD[1])==1||Integer.parseInt(yearMD[1])==3||Integer.parseInt(yearMD[1])==5||Integer.parseInt(yearMD[1])==7\r
+                        ||Integer.parseInt(yearMD[1])==8||Integer.parseInt(yearMD[1])==10||Integer.parseInt(yearMD[1])==2){\r
+                    if (Integer.parseInt(yearMD[2])>31||Integer.parseInt(yearMD[2])<1){\r
+                        legalValue = false;\r
+                    }\r
+                }\r
+                if (Integer.parseInt(yearMD[1])==4||Integer.parseInt(yearMD[1])==6||Integer.parseInt(yearMD[1])==9\r
+                        ||Integer.parseInt(yearMD[1])==11){\r
+                    if (Integer.parseInt(yearMD[2])>30||Integer.parseInt(yearMD[2])<1){\r
+                        legalValue = false;\r
+                    }\r
+                }\r
+                if (Integer.parseInt(yearMD[1])==2){\r
+                    if (Integer.parseInt(yearMD[2])>28||Integer.parseInt(yearMD[2])<1){\r
+                        legalValue = false;\r
+                    }\r
+                }\r
+            }\r
+            String[] hourMS = value[1].split(":");\r
+            if (hourMS.length!=3){\r
+                legalValue = false;\r
+            }\r
+            else {\r
+                if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){\r
+                    legalValue = false;\r
+                }\r
+                if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){\r
+                    legalValue = false;\r
+                }\r
+            }\r
+        }\r
+        return legalValue;\r
+    }\r
+}\r
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/UserManagerTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/UserManagerTest.java
deleted file mode 100644 (file)
index 11b0c66..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user;\r
-\r
-import static org.mockito.Mockito.mock;\r
-import static org.mockito.Mockito.verify;\r
-import junit.framework.TestCase;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.AdvancedNemoQueryInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.BeginTransactionInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.EndTransactionInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput;\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.StructureStyleNemoDeleteInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoUpdateInput;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/12.\r
- */\r
-public class UserManagerTest extends TestCase {\r
-    private UserManager userManagerTest;\r
-    private AdvancedNemoQueryInput advancedNemoQueryInput;\r
-    private BeginTransactionInput beginTransactionInput;\r
-    private EndTransactionInput endTransactionInput;\r
-    private LanguageStyleNemoRequestInput languageStyleNemoRequestInput;\r
-    private  RegisterUserInput registerUserInput;\r
-    private  StructureStyleNemoDeleteInput structureStyleNemoDeleteInput;\r
-    private  StructureStyleNemoUpdateInput structureStyleNemoUpdateInput;\r
-\r
-\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        userManagerTest = mock(UserManager.class);\r
-        advancedNemoQueryInput = mock(AdvancedNemoQueryInput.class);\r
-        beginTransactionInput = mock(BeginTransactionInput.class);\r
-        endTransactionInput = mock(EndTransactionInput.class);\r
-        languageStyleNemoRequestInput = mock(LanguageStyleNemoRequestInput.class);\r
-        registerUserInput = mock(RegisterUserInput.class);\r
-        structureStyleNemoDeleteInput = mock(StructureStyleNemoDeleteInput.class);\r
-        structureStyleNemoUpdateInput = mock(StructureStyleNemoUpdateInput.class);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testAdvancedNemoQuery() throws Exception {\r
-        userManagerTest.advancedNemoQuery(advancedNemoQueryInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).advancedNemoQuery(advancedNemoQueryInput);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testBeginTransaction() throws Exception {\r
-        userManagerTest.beginTransaction(beginTransactionInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).beginTransaction(beginTransactionInput);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testEndTransaction() throws Exception {\r
-        userManagerTest.endTransaction(endTransactionInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).endTransaction(endTransactionInput);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testLanguageStyleNemoRequest() throws Exception {\r
-        userManagerTest.languageStyleNemoRequest(languageStyleNemoRequestInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).languageStyleNemoRequest(languageStyleNemoRequestInput);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testRegisterUser() throws Exception {\r
-        userManagerTest.registerUser(registerUserInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).registerUser(registerUserInput);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testStructureStyleNemoDelete() throws Exception {\r
-        userManagerTest.structureStyleNemoDelete(structureStyleNemoDeleteInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).structureStyleNemoDelete(structureStyleNemoDeleteInput);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void structureStyleNemoUpdate() throws Exception {\r
-        userManagerTest.structureStyleNemoUpdate(structureStyleNemoUpdateInput);\r
-        Assert.assertNotNull(userManagerTest);\r
-        verify(userManagerTest).structureStyleNemoUpdate(structureStyleNemoUpdateInput);\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/AAATest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/AAATest.java
deleted file mode 100644 (file)
index 7fd37f0..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-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.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserInstance;
-
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class AAATest extends TestCase {
-    private AAA aaa;
-    private TenantManage tenantManage;
-    private UserInstance userInstance;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        tenantManage = mock(TenantManage.class);
-        aaa = new AAA(tenantManage);
-
-        userInstance = mock(UserInstance.class);
-    }
-
-    @Test
-    public void testCheckUser() throws Exception {
-        when(tenantManage.getUsers()).thenReturn(new HashMap<UserId, User>());
-        String acutal = aaa.checkUser(userInstance);
-        String expected = "The user is not exist.";
-        verify(tenantManage).getUsers();
-        Assert.assertNotNull(aaa);
-        Assert.assertEquals(expected,acutal);
-    }
-}
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/RegisterUserTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/RegisterUserTest.java
deleted file mode 100644 (file)
index b98400b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-
-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 java.util.HashMap;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-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.common.rev151010.UserRoleName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
-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.user.rev151010.user.roles.UserRole;
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class RegisterUserTest extends TestCase {
-    private RegisterUser registerUser;
-    private TenantManage tenantManage;
-    private RegisterUserInput input;
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        tenantManage = mock(TenantManage.class);
-        registerUser = new RegisterUser(tenantManage);
-
-        input = mock(RegisterUserInput.class);
-    }
-
-    @Test
-    public void testRegisterUser() throws Exception {
-
-        //no data test
-        when(tenantManage.getUserRoles()).thenReturn(null);//return nothing
-        when(tenantManage.getUsers()).thenReturn(null);
-        registerUser.registerUser(input);
-
-        //data exists . and test other branch
-        when(tenantManage.getUserRoles()).thenReturn(new HashMap<UserRoleName, UserRole>());//return nothing
-        when(tenantManage.getUsers()).thenReturn(new HashMap<UserId, User>());
-        when(input.getUserRole()).thenReturn(mock(UserRoleName.class));
-        registerUser.registerUser(input);
-
-        verify(tenantManage,times(2)).getUserRoles();
-        verify(tenantManage,times(2)).getUsers();
-        Assert.assertNotNull(tenantManage);
-        Assert.assertNotNull(registerUser);
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/TenantManageTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/TenantManageTest.java
deleted file mode 100644 (file)
index 9d9b2df..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-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 java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-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.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
-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.user.rev151010.user.roles.UserRole;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class TenantManageTest extends TestCase {
-    private TenantManage tenantManage;
-    private DataBroker dataBroker;
-    private Map<UserRoleName, UserRole> userRoles;
-    private Map<UserId, User> users ;
-    private User user;
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        userRoles = new HashMap<UserRoleName, UserRole>();
-        users = new HashMap<UserId, User>();
-        user = mock(User.class);
-
-        dataBroker = mock(DataBroker.class);
-        tenantManage = new TenantManage(dataBroker);
-    }
-
-    @Test
-    public void testGetUser() throws Exception {
-        user = tenantManage.getUser();
-        Assert.assertNotEquals(mock(User.class),user);
-    }
-
-    @Test
-    public void testGetUserRoles() throws Exception {
-        //ListenableFuture<Optional<UserRoles>> userRolesFuture = mock(ListenableFuture.class);
-        CheckedFuture userRolesFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-//      when(dataBroker.newReadOnlyTransaction().read(any(LogicalDatastoreType.class),
-//      any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
-        when(userRolesFuture.get()).thenReturn(Optional.absent());
-        tenantManage.getUserRoles();
-        verify(dataBroker).newReadOnlyTransaction();
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-        Assert.assertNotNull(tenantManage);
-    }
-
-    @Test
-    public void testGetUsers() throws Exception {
-        CheckedFuture usersFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
-        when(usersFuture.get()).thenReturn(Optional.absent());
-        tenantManage.getUsers();
-        verify(dataBroker).newReadOnlyTransaction();
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-        Assert.assertNotNull(tenantManage);
-    }
-
-    @Test
-    public void testFetchVNSpace() throws Exception {
-        CheckedFuture usersFuture = mock(CheckedFuture.class);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
-        when(usersFuture.get()).thenReturn(Optional.absent());
-        tenantManage.fetchVNSpace(mock(UserId.class));
-        verify(dataBroker).newReadOnlyTransaction();
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-        Assert.assertNotNull(tenantManage);
-    }
-
-    @Test // As a parameter registerUserInput has no data , so the test case just test a small part
-    public void testAddUser() throws Exception {
-        RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
-        WriteTransaction writeTransaction = mock(WriteTransaction.class);
-
-        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
-        when(registerUserInput.getUserId()).thenReturn(null);
-        tenantManage.addUser(registerUserInput);
-
-        CheckedFuture f = mock(CheckedFuture.class);
-        when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
-        when(writeTransaction.submit()).thenReturn(f);
-        tenantManage.addUser(registerUserInput);
-
-        verify(dataBroker,times(2)).newWriteOnlyTransaction();
-        verify(registerUserInput,times(4)).getUserId();
-        Assert.assertNotNull(tenantManage);
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionBeginTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionBeginTest.java
deleted file mode 100644 (file)
index ca5eeea..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.transactionmanager;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.nemo.user.tenantmanager.AAA;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.BeginTransactionInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserInstance;
-
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class TransactionBeginTest extends TestCase {
-    private TransactionBegin transactionBegin;
-    @Before
-    public void setUp() throws Exception {
-        transactionBegin = new TransactionBegin();
-    }
-
-    @Test
-    public void testTransactionbegin() throws Exception {
-        AAA aaa = mock(AAA.class);
-        BeginTransactionInput input = mock(BeginTransactionInput.class);
-        when(aaa.checkUser(any(UserInstance.class))).thenReturn(new String("test"));
-        String flag = transactionBegin.transactionbegin(aaa,input);
-        verify(aaa).checkUser(any(UserInstance.class));
-        Assert.assertEquals("test",flag);
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionEndTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionEndTest.java
deleted file mode 100644 (file)
index 6aec7b9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.transactionmanager;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.nemo.user.tenantmanager.AAA;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.EndTransactionInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserInstance;
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class TransactionEndTest extends TestCase {
-    private TransactionEnd transactionEnd;
-    @Before
-    public void setUp() throws Exception {
-        transactionEnd = new TransactionEnd();
-    }
-
-    @Test
-    public void testTransactionend() throws Exception {
-        AAA aaa = mock(AAA.class);
-        EndTransactionInput input = mock(EndTransactionInput.class);
-        when(aaa.checkUser(any(UserInstance.class))).thenReturn(new String("test"));
-        String flag = transactionEnd.transactionend(aaa,input);
-        verify(aaa).checkUser(any(UserInstance.class));
-        Assert.assertEquals("test", flag);
-    }
-}
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/VNSpaceManagementTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/VNSpaceManagementTest.java
deleted file mode 100644 (file)
index 23413b9..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager;
-
-import static org.mockito.Mockito.mock;
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-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.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeInstance;
-/**
- * Created by zhangmeng on 2015/11/12.
- */
-public class VNSpaceManagementTest extends TestCase {
-    private VNSpaceManagement vnSpaceManagement;
-    private DataBroker dataBroker;
-    private UserId userId;
-    private NodeId nodeId;
-    private NodeInstance nodeInstance;
-    @Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        userId = mock(UserId.class);
-        nodeId = mock(NodeId.class);
-        nodeInstance = mock(NodeInstance.class);
-        vnSpaceManagement = new VNSpaceManagement(dataBroker);
-    }
-
-    @Test
-    public void testGetNodeInstance() throws Exception {
-        nodeInstance = vnSpaceManagement.getNodeInstance(userId,nodeId);
-        Assert.assertNotSame(mock(NodeInstance.class),nodeInstance);
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ConnectionInstanceCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ConnectionInstanceCheckTest.java
deleted file mode 100644 (file)
index 8b18cde..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-\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 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.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.CheckedFuture;\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.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.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.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;\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.PropertyName;\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.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.intent.rev151010.user.intent.Objects;\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.ConnectionName;\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.NodeId;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-//import java.sql.Connection;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-/**\r
- * Created by Thomas Liu on 2015/11/20.\r
- */\r
-public class ConnectionInstanceCheckTest extends junit.framework.TestCase {\r
-    private ConnectionInstanceCheck connectionInstanceCheckTest;\r
-    private TenantManage tenantManage;\r
-    private DataBroker dataBroker;\r
-    private UserId userId,userId2;\r
-    private Connection connection;\r
-    private User user;\r
-    private List<Node> nodes;\r
-    private List<EndNode> endnodes;;\r
-    private Objects object;\r
-    private List<Connection> connlist;\r
-    private ConnectionId connectionId,connectionId2;\r
-    private ConnectionType connectionType,connectionType2;\r
-    private ConnectionName connectionName,connectionName2;\r
-    private NodeId nodeId,nodeId2;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        //dataBroker = mock(DataBroker.class);\r
-        //tenantManage = new TenantManage(dataBroker);\r
-        tenantManage = mock(TenantManage.class);\r
-        connectionInstanceCheckTest = new ConnectionInstanceCheck(tenantManage);\r
-        userId = mock(UserId.class);\r
-        userId2 = mock(UserId.class);\r
-        connection = mock(Connection.class);\r
-        user = mock(User.class);\r
-        nodes= new ArrayList<Node>();\r
-        nodes.add(mock(Node.class));\r
-        endnodes= new ArrayList<EndNode>();\r
-        endnodes.add(mock(EndNode.class));\r
-        object = mock(Objects.class);\r
-        connlist= new ArrayList<Connection>();\r
-        connlist.add(mock(Connection.class));\r
-        connectionId = mock(ConnectionId.class);\r
-        connectionId2 = mock(ConnectionId.class);\r
-        connectionType = mock(ConnectionType.class);\r
-        connectionType2 = mock(ConnectionType.class);\r
-        connectionName = mock(ConnectionName.class);\r
-        connectionName2 = mock(ConnectionName.class);\r
-        nodeId = mock(NodeId.class);\r
-        nodeId2 = mock(NodeId.class);\r
-    }\r
-\r
-\r
-    @org.junit.Test\r
-    public void testCheckConnInstance() throws Exception {\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects().getConnection()).thenReturn(connlist);\r
-        when(tenantManage.getUser().getObjects().getConnection()).thenReturn(connlist);\r
-        when(connlist.get(0).getConnectionId()).thenReturn(connectionId);\r
-        when(connection.getConnectionId()).thenReturn(connectionId2);\r
-        //when(connectionId.equals(any(Class.class))).thenReturn(true);\r
-        when(connlist.get(0).getConnectionType()).thenReturn(connectionType);\r
-        when(connection.getConnectionType()).thenReturn(connectionType2);\r
-        //when(connectionId.equals(any(Class.class))).thenReturn(false);\r
-        when(connlist.get(0).getConnectionName()).thenReturn(connectionName);\r
-        when(connection.getConnectionName()).thenReturn(connectionName2);\r
-        //when(connectionId.equals(any(Class.class))).thenReturn(false);\r
-        when(user.getObjects().getNode()).thenReturn(null);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage).fetchVNSpace(userId);\r
-        verify(tenantManage,times(3)).getUser();\r
-        verify(user,times(7)).getObjects();\r
-        verify(user.getObjects(),times(2)).getConnection();\r
-        verify(connlist.get(0)).getConnectionId();\r
-        verify(connection).getConnectionId();\r
-\r
-\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects().getConnection()).thenReturn(null);\r
-        when(user.getObjects().getNode()).thenReturn(nodes);\r
-        when(connection.getEndNode()).thenReturn(endnodes);\r
-        when(user.getObjects().getNode()).thenReturn(nodes);\r
-        when(nodes.get(0).getNodeId()).thenReturn(nodeId);\r
-        when(endnodes.get(0).getNodeId()).thenReturn(nodeId2);\r
-        //when(nodeId.equals(endnodes.get(0).getNodeId())).thenReturn(true);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage,times(2)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(4)).getUser();\r
-        verify(user,times(15)).getObjects();\r
-        //verify(user,times(15)).getObjects().getConnection();\r
-        //verify(user,times(15)).getObjects().getNode();\r
-        verify(connection).getEndNode();\r
-        //verify(user).getObjects().getNode();\r
-        verify(nodes.get(0)).getNodeId();\r
-        //verify(nodeId).equals(endnodes.get(0).getNodeId());\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(null);\r
-        when(connection.getEndNode()).thenReturn(endnodes);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage,times(3)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(5)).getUser();\r
-        verify(user,times(16)).getObjects();\r
-        verify(connection,times(2)).getEndNode();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(null);\r
-        when(connection.getEndNode()).thenReturn(null);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage,times(4)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(6)).getUser();\r
-        verify(user,times(17)).getObjects();\r
-        verify(connection,times(3)).getEndNode();\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        when(connection.getEndNode()).thenReturn(endnodes);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage,times(5)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(7)).getUser();\r
-        verify(connection,times(4)).getEndNode();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        when(connection.getEndNode()).thenReturn(null);\r
-        connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
-        verify(tenantManage,times(6)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(8)).getUser();\r
-        verify(connection,times(5)).getEndNode();\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/FlowInstanceCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/FlowInstanceCheckTest.java
deleted file mode 100644 (file)
index 8c6ad57..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\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 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.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.FlowId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/20.\r
- */\r
-public class FlowInstanceCheckTest extends junit.framework.TestCase {\r
-    private TenantManage tenantManage;\r
-    private FlowInstanceCheck flowInstanceCheckTest;\r
-    private UserId userId;\r
-    private Flow flow;\r
-    private Objects object;\r
-    private User user;\r
-    private List<Flow> flowList;\r
-    private FlowId flowid;\r
-    private FlowName flowname;\r
-\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        tenantManage = mock(TenantManage.class);\r
-        flowInstanceCheckTest = new FlowInstanceCheck(tenantManage);\r
-        userId = mock(UserId.class);\r
-        flow = mock(Flow.class);\r
-        object = mock(Objects.class);\r
-        user = mock(User.class);\r
-        flowList = new ArrayList<Flow>();\r
-        flowList.add(mock(Flow.class));\r
-        flowid = mock(FlowId.class);\r
-        flowname = mock(FlowName.class);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testCheckFlowInstance() throws Exception {\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects().getFlow()).thenReturn(flowList);\r
-        when(tenantManage.getUser().getObjects().getFlow()).thenReturn(flowList);\r
-        when(flowList.get(0).getFlowId()).thenReturn(flowid);\r
-        when(flow.getFlowId()).thenReturn(flowid);\r
-        when(flowList.get(0).getFlowName()).thenReturn(flowname);\r
-        when(flow.getFlowName()).thenReturn(flowname);\r
-        flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
-        verify(tenantManage).fetchVNSpace(userId);\r
-        verify(tenantManage,times(3)).getUser();\r
-        verify(user,times(5)).getObjects();\r
-        verify(user.getObjects(),times(2)).getFlow();\r
-        //verify(tenantManage,times(3)).getUser().getObjects().getFlow();\r
-        verify(flowList.get(0)).getFlowId();\r
-        verify(flow).getFlowId();\r
-        verify(flowList.get(0)).getFlowName();\r
-        verify(flow).getFlowName();\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
-        verify(tenantManage,times(2)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(4)).getUser();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(null);\r
-        flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
-        verify(tenantManage,times(3)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(5)).getUser();\r
-        verify(user,times(7)).getObjects();\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects().getFlow()).thenReturn(null);\r
-        flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
-        verify(tenantManage,times(4)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(6)).getUser();\r
-        verify(user,times(10)).getObjects();\r
-        verify(user.getObjects(),times(3)).getFlow();\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/NodeInstanceCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/NodeInstanceCheckTest.java
deleted file mode 100644 (file)
index 6cdfe51..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\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 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.users.User;\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.NodeName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/23.\r
- */\r
-public class NodeInstanceCheckTest extends junit.framework.TestCase {\r
-    private NodeInstanceCheck nodeInstanceCheckTest;\r
-    private TenantManage tenantManage;\r
-    private UserId userId;\r
-    private Node node;\r
-    private User user;\r
-    private List<Node> nodeList;\r
-    private Objects object;\r
-    private NodeId nodeId,nodeId2;\r
-    private NodeType nodeType,nodeType2;\r
-    private NodeName nodeName,nodeName2;\r
-\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        tenantManage = mock(TenantManage.class);\r
-        nodeInstanceCheckTest = new NodeInstanceCheck(tenantManage);\r
-        userId = mock(UserId.class);\r
-        node = mock(Node.class);\r
-        user = mock(User.class);\r
-        object = mock(Objects.class);\r
-        nodeList = new ArrayList<Node>();\r
-        nodeType = mock(NodeType.class);\r
-        nodeType2 = mock(NodeType.class);\r
-        nodeId = mock(NodeId.class);\r
-        nodeId2 = mock(NodeId.class);\r
-        nodeName = mock(NodeName.class);\r
-        nodeName2 = mock(NodeName.class);\r
-       nodeList.add(mock(Node.class));\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testCheckNodeInstance() throws Exception {\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(nodeList.get(0).getNodeId()).thenReturn(nodeId);\r
-        when(node.getNodeId()).thenReturn(nodeId2);\r
-        when(nodeList.get(0).getNodeName()).thenReturn(nodeName);\r
-        when(node.getNodeName()).thenReturn(nodeName2);\r
-        when(nodeList.get(0).getNodeType()).thenReturn(nodeType);\r
-        when(node.getNodeType()).thenReturn(nodeType2);\r
-        nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
-        verify(tenantManage).getUser();\r
-        verify(user).getObjects();\r
-        verify(object,times(2)).getNode();\r
-        verify(nodeList.get(0)).getNodeId();\r
-        verify(node).getNodeId();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
-        verify(tenantManage,times(2)).getUser();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(null);\r
-        nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
-        verify(tenantManage,times(3)).getUser();\r
-        verify(user,times(2)).getObjects();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(object.getNode()).thenReturn(null);\r
-        nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
-        verify(tenantManage,times(4)).getUser();\r
-        verify(user,times(3)).getObjects();\r
-        verify(object,times(3)).getNode();\r
-\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/OperationInstanceCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/OperationInstanceCheckTest.java
deleted file mode 100644 (file)
index 39c4d55..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\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 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.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.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ObjectId;\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.common.rev151010.NodeId;\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.OperationId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationName;\r
-\r
-\r
-\r
-import java.lang.annotation.Target;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/23.\r
- */\r
-public class OperationInstanceCheckTest extends junit.framework.TestCase {\r
-    private OperationInstanceCheck perationInstanceCheckTest;\r
-    private TenantManage tenantManage;\r
-    private UserId userId;\r
-    private Node node;\r
-    private User user;\r
-    private List<Connection> connectionList;\r
-    private List<Flow> flowList;\r
-    private Objects object;\r
-    //private Operation operation;\r
-    private ObjectId objectId;\r
-    private List<Node> nodeList;\r
-    private List<Operation> operationList;\r
-    private Operation operation;\r
-    private NodeId nodeId,nodeId2;\r
-    private ConnectionId connectionId,connectionId2;\r
-    private FlowId flowId,flowId2;\r
-    private Operations operations;\r
-    private OperationId operationId;\r
-    private OperationName operationName;\r
-\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        tenantManage = mock(TenantManage.class);\r
-        perationInstanceCheckTest = new OperationInstanceCheck(tenantManage);\r
-        userId = mock(UserId.class);\r
-        node = mock(Node.class);\r
-        user = mock(User.class);\r
-        object = mock(Objects.class);\r
-        operation = mock(Operation.class);\r
-        objectId = mock(ObjectId.class);\r
-        nodeList = new ArrayList<Node>();\r
-        nodeList.add(mock(Node.class));\r
-        connectionList = new ArrayList<Connection>();\r
-        connectionList.add(mock(Connection.class));\r
-        flowList = new ArrayList<Flow>();\r
-        flowList.add(mock(Flow.class));\r
-        operationList = new ArrayList<Operation>();\r
-        operationList.add(mock(Operation.class));\r
-        nodeId = mock(NodeId.class);\r
-        nodeId2 = mock(NodeId.class);\r
-        connectionId = mock(ConnectionId.class);\r
-        connectionId2 = mock(ConnectionId.class);\r
-        flowId = mock(FlowId.class);\r
-        flowId2 = mock(FlowId.class);\r
-        operationId = mock(OperationId.class);\r
-        operationName = mock(OperationName.class);\r
-\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testCheckOperationInstance() throws Exception {\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(objectId);\r
-        when(user.getObjects()).thenReturn(null);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage).fetchVNSpace(userId);\r
-        verify(tenantManage).getUser();\r
-        verify(operation,times(2)).getTargetObject();\r
-        verify(user,times(2)).getObjects();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(objectId);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects()).thenReturn(object);\r
-\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(nodeList.get(0).getNodeId()).thenReturn(nodeId);\r
-        when(nodeId.getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject()).thenReturn(nodeId2);\r
-        when(nodeId2.getValue()).thenReturn(new String("1"));\r
-\r
-        when(object.getConnection()).thenReturn(connectionList);\r
-        when(object.getConnection()).thenReturn(connectionList);\r
-        when(connectionList.get(0).getConnectionId()).thenReturn(connectionId);\r
-        when(connectionId.getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject()).thenReturn(connectionId2);\r
-        when(connectionId2.getValue()).thenReturn(new String("1"));\r
-\r
-        when(object.getFlow()).thenReturn(flowList);\r
-        when(object.getFlow()).thenReturn(flowList);\r
-        when(flowList.get(0).getFlowId()).thenReturn(flowId);\r
-        when(flowId.getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject()).thenReturn(flowId2);\r
-        when(flowId2.getValue()).thenReturn(new String("1"));\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(2)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(2)).getUser();\r
-        verify(operation,times(7)).getTargetObject();\r
-        verify(user,times(5)).getObjects();\r
-        verify(object,times(2)).getNode();\r
-        verify(nodeList.get(0)).getNodeId();\r
-        verify(nodeId).getValue();\r
-        verify(object,times(2)).getConnection();\r
-        verify(connectionList.get(0)).getConnectionId();\r
-        verify(connectionId).getValue();\r
-        verify(object,times(2)).getFlow();\r
-        verify(flowList.get(0)).getFlowId();\r
-        verify(flowId).getValue();\r
-        verify(flowId2,times(3)).getValue();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(objectId);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects()).thenReturn(object);\r
-\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(object.getNode()).thenReturn(nodeList);\r
-        when(nodeList.get(0).getNodeId().getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
-        when(object.getConnection()).thenReturn(connectionList);\r
-        when(object.getConnection()).thenReturn(connectionList);\r
-        when(connectionList.get(0).getConnectionId().getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
-        when(object.getFlow()).thenReturn(flowList);\r
-        when(object.getFlow()).thenReturn(flowList);\r
-        when(flowList.get(0).getFlowId().getValue()).thenReturn(new String("1"));\r
-        when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(3)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(3)).getUser();\r
-        verify(operation,times(15)).getTargetObject();\r
-        verify(user,times(8)).getObjects();\r
-        verify(object,times(4)).getNode();\r
-        verify(nodeList.get(0),times(3)).getNodeId();\r
-        verify(nodeId,times(2)).getValue();\r
-        verify(object,times(4)).getConnection();\r
-        verify(connectionList.get(0),times(3)).getConnectionId();\r
-        verify(connectionId,times(2)).getValue();\r
-        verify(object,times(4)).getFlow();\r
-        verify(flowList.get(0),times(3)).getFlowId();\r
-        verify(flowId,times(2)).getValue();\r
-        verify(flowId2,times(3)).getValue();\r
-\r
-/*\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(null);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getOperations()).thenReturn(operations);\r
-        when(user.getOperations().getOperation()).thenReturn(operationList);\r
-        when(tenantManage.getUser().getOperations().getOperation()).thenReturn(operationList);\r
-        when(operationList.get(0).getOperationId()).thenReturn(operationId);\r
-        when(operation.getOperationId()).thenReturn(operationId);\r
-        when(operationList.get(0).getOperationName()).thenReturn(operationName);\r
-        when(operation.getOperationName()).thenReturn(operationName);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);*/\r
-\r
-\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        when(operation.getTargetObject()).thenReturn(objectId);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(4)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(4)).getUser();\r
-        verify(operation,times(16)).getTargetObject();\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        when(operation.getTargetObject()).thenReturn(null);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(5)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(5)).getUser();\r
-        verify(operation,times(17)).getTargetObject();\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(null);\r
-        when(operation.getTargetObject()).thenReturn(null);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(6)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(6)).getUser();\r
-        verify(operation,times(18)).getTargetObject();\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(null);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getOperations()).thenReturn(null);\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(7)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(7)).getUser();\r
-        verify(operation,times(20)).getTargetObject();\r
-        verify(user,times(8)).getObjects();\r
-        verify(user,times(2)).getOperations();\r
-\r
-\r
-\r
-\r
-        doNothing().when(tenantManage).fetchVNSpace(userId);\r
-        when(tenantManage.getUser()).thenReturn(user);\r
-        when(operation.getTargetObject()).thenReturn(objectId);\r
-        when(user.getObjects()).thenReturn(object);\r
-        when(user.getObjects()).thenReturn(object);\r
-\r
-        when(object.getNode()).thenReturn(null);\r
-        when(object.getConnection()).thenReturn(null);\r
-        when(object.getFlow()).thenReturn(null);\r
-\r
-        perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
-        verify(tenantManage,times(8)).fetchVNSpace(userId);\r
-        verify(tenantManage,times(8)).getUser();\r
-        verify(operation,times(22)).getTargetObject();\r
-        verify(user,times(11)).getObjects();\r
-        verify(object,times(5)).getNode();\r
-        verify(object,times(5)).getConnection();\r
-        verify(object,times(5)).getFlow();\r
-\r
-\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ResultInstanceCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ResultInstanceCheckTest.java
deleted file mode 100644 (file)
index b6127da..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-\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 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;\r
-\r
-import javax.xml.transform.Result;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/26.\r
- */\r
-public class ResultInstanceCheckTest extends junit.framework.TestCase {\r
-\r
-    private ResultInstanceCheck  resultInstanceCheckTest;\r
-    private TenantManage tenantManage;\r
-    private Results results;\r
-    private UserId userId;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        tenantManage = mock(TenantManage.class);\r
-        resultInstanceCheckTest = new ResultInstanceCheck(tenantManage);\r
-        results = mock(Results.class);\r
-        userId = mock(UserId.class);\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testCheckResultInstance() throws Exception {\r
-        resultInstanceCheckTest.checkResultInstance(userId,results);\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntentTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntentTest.java
deleted file mode 100644 (file)
index 9057916..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.languagestyle;
-
-import static org.mockito.Mockito.mock;
-import junit.framework.TestCase;
-
-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.AAA;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput;
-/**
- * Created by zhangmeng on 2015/11/12.
- */
-public class LanguageIntentTest extends TestCase {
-    private DataBroker dataBroker;
-    private LanguageIntent languageIntent;
-
-    @Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        languageIntent = new LanguageIntent(dataBroker);
-
-    }
-
-    @Test
-    public void testLanIntentHandler() throws Exception {
-        AAA aaa = mock(AAA.class);
-        LanguageStyleNemoRequestInput languageStyleNemoRequestInput = mock(LanguageStyleNemoRequestInput.class);
-        Assert.assertEquals(null,languageIntent.LanIntentHandler(aaa,languageStyleNemoRequestInput));
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java
deleted file mode 100644 (file)
index 5eecf5b..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-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.toString()+ "is not exit. Could not be deleted.");
-       //branch 4
-          when(tenantManage.getUser()).thenReturn(user);
-          when(user.getObjects()).thenReturn(objects);
-          when(objects.getConnection()).thenReturn(connectionList);
-          when(connection.getConnectionId()).thenReturn(connectionID);
-          when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
-          CheckedFuture<Void, TransactionCommitFailedException> f;
-          f=mock(CheckedFuture.class);
-          when(writetransaction.submit()).thenReturn(f);
-          Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),null);
-       //-------
-               Assert.assertNotNull(deleteconnection);
-               Assert.assertNotNull(tenantManage);
-        //Assert.assertNull(deleteconnection.DeleteConnectionHandling(userId,connectionID));
-        }
-        }
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java
deleted file mode 100644 (file)
index 3a5daa5..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-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.toString()+"is not exist. Could not be deleted.");
-       //branch 4
-       when(tenantManage.getUser()).thenReturn(user);
-       when(user.getObjects()).thenReturn(objects);
-       when(user.getObjects().getFlow()).thenReturn(flowlist);
-       when(flow.getFlowId()).thenReturn(flowId);
-       when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
-       CheckedFuture<Void, TransactionCommitFailedException> f;
-       f=mock(CheckedFuture.class);
-       when(writetransaction.submit()).thenReturn(f);
-       Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),null);
-       }
-}
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java
deleted file mode 100644 (file)
index 0982587..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\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.StructureStyleNemoDeleteInput;\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 StructureStyleNemoDeleteInput styleNemoDeleteInput;\r
-       private DeleteIntent deleteintent;\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
-       styleNemoDeleteInput=mock(StructureStyleNemoDeleteInput.class);\r
-       deleteintent=mock(DeleteIntent.class);\r
-}\r
-@org.junit.Test\r
-public void styleNemoDeleteOutputTest(){\r
-       Assert.assertNull(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput));\r
-}\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java
deleted file mode 100644 (file)
index 264bf59..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-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.toString()+"is not exist.Could not be deleted");\r
-       //branch 5\r
-       when(tenantManage.getUser()).thenReturn(user);\r
-       when(user.getObjects()).thenReturn(objects);\r
-       when(objects.getNode()).thenReturn(nodeList);\r
-       when(node.getNodeId()).thenReturn(nodeid);\r
-       when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
-       CheckedFuture<Void, TransactionCommitFailedException> f;\r
-       f=mock(CheckedFuture.class);\r
-       when(writetransaction.submit()).thenReturn(f);\r
-       Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null);\r
-       }\r
-}\r
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java
deleted file mode 100644 (file)
index 4c97735..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-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.toString()+"is not exist. Could not be deleted.");\r
-           //branch 5\r
-               when(tenantManage.getUser()).thenReturn(user);\r
-               when(user.getOperations()).thenReturn(operations);      \r
-        when(operations.getOperation()).thenReturn(operationList);\r
-               when(operation.getOperationId()).thenReturn(operationId);\r
-               when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
-           CheckedFuture<Void, TransactionCommitFailedException> f;\r
-           f=mock(CheckedFuture.class);\r
-           when(writetransaction.submit()).thenReturn(f);\r
-               Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null);\r
-       }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteResultTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteResultTest.java
deleted file mode 100644 (file)
index df3733f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-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.structure.style.nemo.delete.input.Results;\r
-import java.util.*;\r
-import static org.mockito.Mockito.*;\r
-public class DeleteResultTest{\r
-       private UserId userId;\r
-    private    Results results;\r
-       private DeleteResult deleteresult;\r
-       @org.junit.Before\r
-       public void setUp()throws Exception{\r
-               userId=mock(UserId.class);\r
-               results=mock(Results.class);\r
-               deleteresult=new DeleteResult();\r
-               \r
-       }\r
-       @org.junit.Test\r
-       public void DeleteResultHandlingTest() throws Exception{\r
-               Assert.assertNull(deleteresult.DeleteResultHandling(userId,results));\r
-       }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java
deleted file mode 100644 (file)
index 63508c6..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-
-import static org.mockito.Mockito.mock;
-
-import org.junit.Assert;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.ConnectionInstanceCheck;
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ConnectionDefinitionCheck;
-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.user.intent.objects.Connection;
-/**
- * Created by ldzd11 on 2015/11/9.
- */
-public class UpdateConnectionTest {
-
-
-    private UpdateConnection updateConnection;
-
-    private UserId userId;
-    private Connection connection;
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private ConnectionDefinitionCheck connectionDefinitionCheck;
-    private ConnectionInstanceCheck connectionInstanceCheck;
-
-
-
-    @org.junit.Before
-    public void setUp() throws Exception {
-
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-        connectionDefinitionCheck = mock(ConnectionDefinitionCheck.class);
-        connectionInstanceCheck = mock(ConnectionInstanceCheck.class);
-
-        userId = mock(UserId.class);
-        connection = mock(Connection.class);
-        updateConnection = mock(UpdateConnection.class);
-    }
-
-    @org.junit.Test
-    public void testConnectionHandling() throws Exception {
-
-        Assert.assertNull(updateConnection.ConnectionHandling(userId, connection));
-
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java
deleted file mode 100644 (file)
index 3595389..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\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.instancecheck.FlowInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck;\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
-\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateFlowTest {\r
-\r
-    private UpdateFlow updateFlow;\r
-\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private FlowDefinitionCheck flowDefinitionCheck;\r
-    private FlowInstanceCheck flowInstanceCheck;\r
-    private UserId userId;\r
-    private Flow flow;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        flowDefinitionCheck = mock(FlowDefinitionCheck.class);\r
-        flowInstanceCheck = mock(FlowInstanceCheck.class);\r
-        userId = mock(UserId.class);\r
-        flow = mock(Flow.class);\r
-\r
-\r
-        updateFlow = mock(UpdateFlow.class);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testFlowHandling() throws Exception {\r
-\r
-        Assert.assertNull(updateFlow.FlowHandling(userId, flow));\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntentTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntentTest.java
deleted file mode 100644 (file)
index fb934f5..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-import static org.mockito.Mockito.mock;
-
-import org.junit.Assert;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.AAA;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoUpdateInput;
-
-/**
- * Created by ldzd11 on 2015/11/9.
- */
-public class UpdateIntentTest {
-
-
-    UpdateIntent updateIntent;
-    private DataBroker dataBroker;
-    private TenantManage tenantManage;
-    private UpdateNode updateNode;
-    private UpdateConnection updateConnection;
-    private UpdateFlow updateFlow;
-    private UpdateOperation updateOperation;
-    private UpdateResult updateResult;
-    private AAA aaa;
-    private StructureStyleNemoUpdateInput structureStyleNemoUpdateInput;
-
-
-    @org.junit.Before
-    public void setUp() throws Exception {
-
-        dataBroker = mock(DataBroker.class);
-        tenantManage = mock(TenantManage.class);
-        updateNode = mock(UpdateNode.class);
-        updateConnection = mock(UpdateConnection.class);
-        updateFlow = mock(UpdateFlow.class);
-        updateOperation = mock(UpdateOperation.class);
-        updateResult = mock(UpdateResult.class);
-        aaa = mock(AAA.class);
-        structureStyleNemoUpdateInput = mock(StructureStyleNemoUpdateInput.class);
-
-        updateIntent = mock(UpdateIntent.class);
-    }
-
-    @org.junit.Test
-    public void testUpdateIntent() throws Exception {
-        Assert.assertNull(updateIntent.updateIntent(aaa,structureStyleNemoUpdateInput));
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java
deleted file mode 100644 (file)
index b3bcf0d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\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.instancecheck.NodeInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck;\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
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateNodeTest {\r
-\r
-\r
-    private  UpdateNode updateNode;\r
-\r
-    private DataBroker dataBroker;\r
-    private NodeDefinitionCheck nodeCheck;\r
-    private NodeInstanceCheck nodeInstanceCheck;\r
-    private UserId userId;\r
-    private Node node;\r
-\r
-    private  TenantManage tenantManage;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        nodeCheck = mock(NodeDefinitionCheck.class);\r
-        nodeInstanceCheck = mock(NodeInstanceCheck.class);\r
-\r
-        tenantManage = mock(TenantManage.class);\r
-        userId = mock(UserId.class);\r
-        node = mock(Node.class);\r
-\r
-\r
-        updateNode = mock(UpdateNode.class);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testNodeHandling() throws Exception {\r
-        Assert.assertNull(updateNode.NodeHandling(userId, node));\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java
deleted file mode 100644 (file)
index 2666ae4..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\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.instancecheck.OperationInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck;\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
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateOperationTest {\r
-\r
-    private UpdateOperation updateOperation;\r
-\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private OperationDefinitionCheck operationDefinitionCheck;\r
-    private OperationInstanceCheck operationInstanceCheck;\r
-\r
-    private UserId userId;\r
-    private Operation operation;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        operationDefinitionCheck = mock(OperationDefinitionCheck.class);\r
-        operationInstanceCheck = mock(OperationInstanceCheck.class);\r
-        userId = mock(UserId.class);\r
-        operation = mock(Operation.class);\r
-\r
-        updateOperation = mock(UpdateOperation.class);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testOperationHandling() throws Exception {\r
-        Assert.assertNull(updateOperation.OperationHandling(userId, operation));\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResultTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResultTest.java
deleted file mode 100644 (file)
index fca411b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\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.instancecheck.ResultInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck;\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.Results;\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateResultTest {\r
-\r
-\r
-    private UpdateResult updateResult;\r
-\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private ResultDefinitionCheck resultDefinitionCheck;\r
-    private ResultInstanceCheck resultInstanceCheck;\r
-    private UserId userId;\r
-    private Results results;\r
-\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        resultDefinitionCheck = mock(ResultDefinitionCheck.class);\r
-        resultInstanceCheck = mock(ResultInstanceCheck.class);\r
-        userId = mock(UserId.class);\r
-        results = mock(Results.class);\r
-\r
-        updateResult = mock(UpdateResult.class);\r
-\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testResultHandling() throws Exception {\r
-        Assert.assertNull(updateResult.ResultHandling(userId, results));\r
-\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ConnectionDefinitionCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ConnectionDefinitionCheckTest.java
deleted file mode 100644 (file)
index 20e0fda..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;
-
-import org.junit.runner.RunWith;
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;
-import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import junit.framework.TestCase;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-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.PropertyName;
-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.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.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.definitions.PropertyDefinition.PropertyValueType;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import com.google.common.base.Optional;
-import com.google.common.base.Function;
-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 org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import java.lang.reflect.Method; 
-import static org.mockito.Mockito.*;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(ConnectionDefinitionCheck.class)
-public class ConnectionDefinitionCheckTest {
-    private ConnectionDefinitionCheck connectionDefinitionCheck;
-    private DataBroker dataBroker;
-       private ConnectionDefinition connectionDefinition;
-    private List<ConnectionDefinition> connectionDefinitionList;
-    private Connection connection;
-       private List<Property> connectionProperty;
-       private List<PropertyDefinition> propertyDefinitionList;
-       private Property property;
-       private PropertyDefinition propertyDefinition;
-               
-    // private static final Logger LOG;
-    @org.junit.Before
-    public void setUp() throws Exception {
-               ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
-               connectionDefinitionList=new ArrayList<ConnectionDefinition>(3);
-               property = mock(Property.class);
-               propertyDefinition = mock(PropertyDefinition.class);
-               connectionProperty = new ArrayList<Property>(3);
-               propertyDefinitionList = new ArrayList<PropertyDefinition>(3);
-               connectionDefinitionList.add(connectionDefinition);
-        connection = mock(Connection.class);
-        // LOG = mock(Logger.class);
-               dataBroker = mock(DataBroker.class);
-        connectionDefinitionCheck =new ConnectionDefinitionCheck(dataBroker);
-    }
-
-    @org.junit.Test
-    public void testcheckConnectionDefinition() 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);
-               
-               //branch  connectionDefinitionList null
-               Assert.assertEquals(connectionDefinitionCheck.CheckConnectionDefinition(connection),"This type of connection has not been defined.");
-               
-               //use reflact to test private CheckProperty
-               Method testCheckProperty = connectionDefinitionCheck.getClass().getDeclaredMethod("CheckProperty",List.class,List.class);  
-               testCheckProperty.setAccessible(true);
-               //branch1 connectionProperty null,propertyDefinitionList null
-               Assert.assertNull(testCheckProperty.invoke(connectionDefinitionCheck,connectionProperty,propertyDefinitionList));
-               //branch2 property.getPropertyName() not equals(propertyDefinition.getPropertyName())
-               connectionProperty.add(property);
-               propertyDefinitionList.add(propertyDefinition); 
-               PropertyName propertyName1 = mock(PropertyName.class);
-               PropertyName propertyName2 = mock(PropertyName.class);
-               when(property.getPropertyName()).thenReturn(propertyName1);
-               when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
-               Assert.assertEquals(testCheckProperty.invoke(connectionDefinitionCheck,connectionProperty,propertyDefinitionList),"This type of property" + property.getPropertyName().toString() + " has not been defined.");
-               //branch3  property.getPropertyName()equals(propertyDefinition.getPropertyName()),but can not mock PropertyValueType
-               when(property.getPropertyName()).thenReturn(propertyName1);
-               PropertyName propertyName3 = propertyName1;
-               when(propertyDefinition.getPropertyName()).thenReturn(propertyName3);
-               PropertyValues propertyValues = mock(PropertyValues.class);
-               when(property.getPropertyValues()).thenReturn(propertyValues);
-               Assert.assertNotNull(property.getPropertyValues());
-               Assert.assertNull(propertyDefinition.getPropertyValueType());
-               
-               //dataBroker test
-               verify(dataBroker).newReadOnlyTransaction();
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
-               verifyPrivate(connectionDefinitionCheck).invoke("fetchConnectionDefinitionList");
-               
-    }
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/FlowDefinitionCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/FlowDefinitionCheckTest.java
deleted file mode 100644 (file)
index 27390f6..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\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.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.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.FlowPropertyDefinitions;\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.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Optional;\r
-import com.google.common.base.Function;\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
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-import java.util.ListIterator;\r
-\r
-\r
-import static org.mockito.Mockito.*;\r
-\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(ConnectionDefinitionCheck.class) \r
-public class FlowDefinitionCheckTest{\r
-       private FlowDefinitionCheck flowDefinitionCheck;\r
-    private DataBroker dataBroker;\r
-    private List<MatchItemDefinition> matchItemDefinitionList; \r
-       private Flow flow;\r
-   // private static final Logger LOG;\r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        matchItemDefinitionList = new LinkedList<MatchItemDefinition>();\r
-       // LOG = mock(Logger.class);\r
-\r
-        dataBroker = mock(DataBroker.class);\r
-               flow = mock(Flow.class);\r
-        flowDefinitionCheck = new FlowDefinitionCheck(dataBroker);\r
-    }\r
-        @org.junit.Test\r
-    public void testcheckConnectionDefinition() throws Exception {\r
-        CheckedFuture matchitemdefinitionFuture = mock(CheckedFuture.class);\r
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(matchitemdefinitionFuture);\r
-               Assert.assertNotNull(flow.getMatchItem());\r
-               Assert.assertEquals(flowDefinitionCheck.CheckDefinition(flow),"The match item has not been defined.");\r
-               //dataBroker test \r
-        verify(dataBroker).newReadOnlyTransaction();\r
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
-               verifyPrivate(flowDefinitionCheck).invoke("fetchMatchItemDefinitions");\r
-               \r
-    }\r
-\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/NodeDefinitionCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/NodeDefinitionCheckTest.java
deleted file mode 100644 (file)
index b201081..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\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.controller.md.sal.binding.api.DataBroker;\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.PropertyName;\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.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.node.instance.Property;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Optional;\r
-import com.google.common.base.Function;\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
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.ArrayList;\r
-import java.util.ListIterator;\r
-\r
-import java.lang.reflect.Method; \r
-import static org.mockito.Mockito.*;\r
-\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(NodeDefinitionCheck.class) \r
-public class NodeDefinitionCheckTest{\r
-       private NodeDefinitionCheck nodeDefinitionCheck;\r
-       private DataBroker dataBroker;\r
-    private List<NodeDefinition> nodeDefinitionList;\r
-       private Node node;\r
-       private NodeDefinition nodeDefinition;\r
-       private List<Property> nodeProperties;\r
-       private List<PropertyDefinition> nodePropertyDefinitions;\r
-       private Property property;\r
-       private PropertyDefinition propertyDefinition;\r
-    //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class);\r
-        @org.junit.Before\r
-    public void setUp() throws Exception {\r
-               nodeDefinition = mock(NodeDefinition.class);\r
-               nodeDefinitionList = new ArrayList<NodeDefinition>(3);\r
-        // LOG = mock(Logger.class);\r
-           node = mock(Node.class);\r
-        dataBroker = mock(DataBroker.class);\r
-        nodeDefinitionCheck = new NodeDefinitionCheck(dataBroker);\r
-               property = mock(Property.class);\r
-               propertyDefinition = mock(PropertyDefinition.class);\r
-               nodeProperties = new ArrayList<Property>(3);\r
-               nodePropertyDefinitions = new ArrayList<PropertyDefinition>(3);\r
-    }\r
-        @org.junit.Test\r
-    public void testcheckConnectionDefinition() throws Exception {\r
-        CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);\r
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);\r
-        //branch nodeDefinitionList null\r
-               Assert.assertEquals(nodeDefinitionCheck.CheckNodeDefinition(node),"This type of Node has not been defined.");\r
-               \r
-               //use reflact test private checkProperty\r
-               Method testcheckProperty = nodeDefinitionCheck.getClass().getDeclaredMethod("checkProperty",List.class,List.class);  \r
-               testcheckProperty.setAccessible(true);\r
-               //branch1 nodeProperties null, nodePropertyDefinition null\r
-               Assert.assertNull(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions));\r
-               //branch2 \r
-               nodeProperties.add(property);\r
-               nodePropertyDefinitions.add(propertyDefinition);\r
-               PropertyName propertyName1 = mock(PropertyName.class);\r
-               PropertyName propertyName2 = mock(PropertyName.class);\r
-               when(property.getPropertyName()).thenReturn(propertyName1);\r
-               when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
-               Assert.assertEquals(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions),"The property"+property.getPropertyName().toString()+"has not been defined.");\r
-               //branch3\r
-               when(property.getPropertyName()).thenReturn(propertyName1);\r
-               PropertyName propertyName3 = propertyName1;\r
-               when(propertyDefinition.getPropertyName()).thenReturn(propertyName3);\r
-               PropertyValues propertyValues = mock(PropertyValues.class);\r
-               when(property.getPropertyValues()).thenReturn(propertyValues);\r
-               Assert.assertNotNull(property.getPropertyValues());\r
-               Assert.assertNull(propertyDefinition.getPropertyValueType());\r
-               //dataBroker test\r
-        verify(dataBroker).newReadOnlyTransaction();\r
-        verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
-               verifyPrivate(nodeDefinitionCheck).invoke("fetchNodeDefinitions");\r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/OperationDefinitionCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/OperationDefinitionCheckTest.java
deleted file mode 100644 (file)
index b759b94..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.CheckedFuture;\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.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Function;\r
-import com.google.common.util.concurrent.CheckedFuture;\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.intent.rev151010.user.intent.operations.Operation;\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.instance.condition.segment.ConditionParameterTargetValue;\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.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.LinkedList;\r
-import java.util.ListIterator;\r
-\r
-import static org.mockito.Mockito.*;\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(ConnectionDefinitionCheck.class) \r
-public class OperationDefinitionCheckTest{\r
-       private OperationDefinitionCheck operationDefinitionCheck;\r
-       private DataBroker dataBroker;\r
-       private ActionDefinition actionDefinition;\r
-       private ConditionParameterDefinition conditionParameterDefinition;\r
-       private List<ActionDefinition> actionDefinitionList;\r
-    private List<ConditionParameterDefinition> conditionParameterDefinitionList;\r
-       private Operation operation;\r
-    //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class);\r
-       \r
-       @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        actionDefinitionList = new LinkedList<ActionDefinition>();\r
-               conditionParameterDefinitionList = new LinkedList<ConditionParameterDefinition>();\r
-       // LOG = mock(Logger.class);\r
-               operation = mock(Operation.class);\r
-        dataBroker = mock(DataBroker.class);\r
-        operationDefinitionCheck = new OperationDefinitionCheck(dataBroker);\r
-    }\r
-       @org.junit.Test\r
-    public void testcheckConnectionDefinition() throws Exception {\r
-        CheckedFuture actiondefinitionFuture = mock(CheckedFuture.class);\r
-               CheckedFuture conditionparadefinitionFuture = mock(CheckedFuture.class);\r
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(actiondefinitionFuture);\r
-               when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(conditionparadefinitionFuture);\r
-               //branch null\r
-               Assert.assertNotNull(operation.getAction());\r
-               Assert.assertNotNull(operation.getConditionSegment());\r
-        Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"There are no actions has been defined in the data store.");\r
-               when(operation.getAction()).thenReturn(null);\r
-               Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"This condition has not been defined in data store.");\r
-               //\r
-\r
-        verify(dataBroker,times(4)).newReadOnlyTransaction();\r
-        verify(readOnlyTransaction,times(4)).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
-               \r
-    }\r
-}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ResultDefinitionCheckTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ResultDefinitionCheckTest.java
deleted file mode 100644 (file)
index 919d49c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;
-import static org.junit.Assert.*;
-import junit.framework.TestCase;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.mockito.Mockito.*;
-
-/**
- * Created by wjf on 2015/11/25.
- */
-public class ResultDefinitionCheckTest {
-    private ResultDefinitionCheck resultDefinitionCheck;
-    private Results results;
-    @org.junit.Before
-    public void setUp() throws Exception {
-        results = mock(Results.class);
-        resultDefinitionCheck = new ResultDefinitionCheck();
-    }
-
-    @org.junit.Test
-    public void testCheckDefinition() throws Exception {
-        Assert.assertNull(resultDefinitionCheck.CheckDefinition(results));
-    }
-}
\ No newline at end of file