From c0433f1ea880f7dc5b478abadfad9af2e24279e1 Mon Sep 17 00:00:00 2001 From: Zhang Yali Date: Fri, 4 Dec 2015 19:45:06 +0800 Subject: [PATCH] Implement nemo language style RPC. Change-Id: Iee21e027513d482d6e5c12b7aeec5a526e037fa9 Signed-off-by: Zhang Yali --- nemo-impl/pom.xml | 5 +- .../opendaylight/nemo/user/UserManager.java | 148 +- .../user/advancedquery/AdvancedQuery.java | 18 +- .../advancedquery/QueryDefinitionCheck.java | 18 +- .../nemo/user/tenantmanager/AAA.java | 6 +- .../nemo/user/tenantmanager/RegisterUser.java | 6 +- .../nemo/user/tenantmanager/TenantManage.java | 146 +- .../transactionmanager/TransactionBegin.java | 8 +- .../transactionmanager/TransactionEnd.java | 7 +- .../languagestyle/LanguageIntent.java | 19 +- .../languagestyle/NEMOConstants.java | 80 + .../languagestyle/NEMOParse/LanguageStyle.jj | 807 +++++++ .../languagestyle/NEMOParse/NEMOparser.java | 1499 +++++++++++++ .../NEMOParse/NEMOparserConstants.java | 234 +++ .../NEMOParse/NEMOparserTokenManager.java | 1855 +++++++++++++++++ .../NEMOParse/ParseException.java | 194 ++ .../NEMOParse/SimpleCharStream.java | 482 +++++ .../languagestyle/NEMOParse/Token.java | 138 ++ .../NEMOParse/TokenMgrError.java | 154 ++ .../vnspacemanager/languagestyle/Query.java | 783 +++++++ .../DeleteConnectionLang.java | 58 + .../deleteintentlang/DeleteFlowLang.java | 59 + .../deleteintentlang/DeleteNodeLang.java | 59 + .../deleteintentlang/DeleteOperationLang.java | 58 + .../UpdateConnectionLang.java | 209 ++ .../updateintentlang/UpdateFlowLang.java | 251 +++ .../updateintentlang/UpdateNodeLang.java | 233 +++ .../updateintentlang/UpdateOperationLang.java | 361 ++++ .../deleteintent/DeleteConnection.java | 41 +- .../deleteintent/DeleteFlow.java | 39 +- .../deleteintent/DeleteIntent.java | 66 +- .../deleteintent/DeleteNode.java | 77 +- .../deleteintent/DeleteOperation.java | 41 +- .../updateintent/UpdateConnection.java | 308 ++- .../updateintent/UpdateFlow.java | 238 ++- .../updateintent/UpdateIntent.java | 63 +- .../updateintent/UpdateNode.java | 335 ++- .../updateintent/UpdateOperation.java | 404 +++- .../updateintent/UpdateResult.java | 26 +- .../updateintent/ValueCheck.java | 141 ++ .../nemo/user/UserManagerTest.java | 98 - .../nemo/user/tenantmanager/AAATest.java | 57 - .../user/tenantmanager/RegisterUserTest.java | 69 - .../user/tenantmanager/TenantManageTest.java | 131 -- .../TransactionBeginTest.java | 48 - .../TransactionEndTest.java | 47 - .../vnspacemanager/VNSpaceManagementTest.java | 43 - .../ConnectionInstanceCheckTest.java | 192 -- .../instancecheck/FlowInstanceCheckTest.java | 109 - .../instancecheck/NodeInstanceCheckTest.java | 101 - .../OperationInstanceCheckTest.java | 266 --- .../ResultInstanceCheckTest.java | 41 - .../languagestyle/LanguageIntentTest.java | 39 - .../deleteintent/DeleteConnectionTest.java | 102 - .../deleteintent/DeleteFlowTest.java | 95 - .../deleteintent/DeleteIntentTest.java | 44 - .../deleteintent/DeleteNodeTest.java | 93 - .../deleteintent/DeleteOperationTest.java | 93 - .../deleteintent/DeleteResultTest.java | 33 - .../updateintent/UpdateConnectionTest.java | 55 - .../updateintent/UpdateFlowTest.java | 52 - .../updateintent/UpdateIntentTest.java | 55 - .../updateintent/UpdateNodeTest.java | 53 - .../updateintent/UpdateOperationTest.java | 50 - .../updateintent/UpdateResultTest.java | 52 - .../ConnectionDefinitionCheckTest.java | 126 -- .../syntaxcheck/FlowDefinitionCheckTest.java | 89 - .../syntaxcheck/NodeDefinitionCheckTest.java | 122 -- .../OperationDefinitionCheckTest.java | 99 - .../ResultDefinitionCheckTest.java | 35 - 70 files changed, 9068 insertions(+), 3095 deletions(-) create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserConstants.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/Query.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateFlowLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateNodeLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateOperationLang.java create mode 100644 nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/ValueCheck.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/UserManagerTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/AAATest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/RegisterUserTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/TenantManageTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionBeginTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionEndTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/VNSpaceManagementTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ConnectionInstanceCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/FlowInstanceCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/NodeInstanceCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/OperationInstanceCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ResultInstanceCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntentTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteResultTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntentTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResultTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ConnectionDefinitionCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/FlowDefinitionCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/NodeDefinitionCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/OperationDefinitionCheckTest.java delete mode 100644 nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ResultDefinitionCheckTest.java diff --git a/nemo-impl/pom.xml b/nemo-impl/pom.xml index d952461..a0a6d92 100644 --- a/nemo-impl/pom.xml +++ b/nemo-impl/pom.xml @@ -26,7 +26,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html 0.7.2.201409121644 target/code-coverage/jacoco.exec target/code-coverage/jacoco-it.exec - 1.4.10 + 1.4.10 @@ -80,7 +80,7 @@ and is available at http://www.eclipse.org/legal/epl-v10.html org.codehaus.jettison jettison - + org.mockito mockito-all test @@ -89,7 +89,6 @@ and is available at http://www.eclipse.org/legal/epl-v10.html junit junit - org.powermock powermock-module-junit4 diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java index 2d4ca33..b088ef7 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/UserManager.java @@ -7,9 +7,6 @@ */ package org.opendaylight.nemo.user; -import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error; -import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok; - import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.nemo.intent.IntentResolutionException; import org.opendaylight.nemo.intent.IntentResolver; @@ -21,15 +18,19 @@ import org.opendaylight.nemo.user.tenantmanager.TenantManage; import org.opendaylight.nemo.user.transactionmanager.TransactionBegin; import org.opendaylight.nemo.user.transactionmanager.TransactionEnd; import org.opendaylight.nemo.user.vnspacemanager.languagestyle.LanguageIntent; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException; import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteIntent; import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent; -import org.opendaylight.nemo.user.vnspacemanager.VNSpaceManagement; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.*; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import java.util.concurrent.Future; +import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error; +import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok; + /** * Created by z00293636 on 2015/9/7. */ @@ -37,7 +38,6 @@ public class UserManager implements NemoIntentService { private final DataBroker dataBroker; - private VNSpaceManagement vnSpaceManagement; private RegisterUser registerUser; private UpdateIntent updateIntent; private DeleteIntent deleteIntent; @@ -57,183 +57,167 @@ public class UserManager implements NemoIntentService { this.dataBroker = dataBroker0; this.intentResolver = intentResolver0; - vnSpaceManagement = new VNSpaceManagement(dataBroker); tenantManage = new TenantManage(dataBroker); aaa = new AAA(tenantManage); registerUser = new RegisterUser(tenantManage); updateIntent = new UpdateIntent(dataBroker,tenantManage); deleteIntent = new DeleteIntent(dataBroker, tenantManage); - languageIntent = new LanguageIntent(dataBroker); + languageIntent = new LanguageIntent(dataBroker,tenantManage); advancedQuery = new AdvancedQuery(dataBroker, tenantManage); - transactionBegin = new TransactionBegin(); transactionEnd = new TransactionEnd(); transaction = false; informresolver = false; } - @Override public Future> advancedNemoQuery(AdvancedNemoQueryInput input) { - final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder(); + final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder(); String errorInfo = advancedQuery.advancedQuery(aaa, input); - if (errorInfo != null) - { + + if (errorInfo != null){ outputBuilder.setResultCode(Error).setMessage(errorInfo); } - else - { + else{ outputBuilder.setResultCode(Ok).setMessage(advancedQuery.getAdvancedQueryReuslt(input)); } - return RpcResultBuilder.success(outputBuilder).buildFuture(); + return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> beginTransaction(BeginTransactionInput input) { - final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder(); - if (transaction) - { + final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder(); + if (transaction){ outputBuilder.setResultCode(Error).setMessage("The previous transaction has not been finished."); } - else - { + else{ String errorInfo = transactionBegin.transactionbegin(aaa,input); - if (errorInfo != null) - { + if (errorInfo != null){ outputBuilder.setResultCode(Error).setMessage(errorInfo); } - else - { + else{ transaction = true; outputBuilder.setResultCode(Ok).setMessage("Transaction Begin."); } } - return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> endTransaction(EndTransactionInput input) { + final EndTransactionOutputBuilder outputBuilder = new EndTransactionOutputBuilder(); - if (!transaction) - { + if (!transaction){ outputBuilder.setResultCode(Error).setMessage("The transaction has not started."); } - else - { + else{ String errorInfo = transactionEnd.transactionend(aaa,input); - if (errorInfo != null) - { + if (errorInfo != null){ outputBuilder.setResultCode(Error).setMessage(errorInfo); } - else - { + else{ transaction = false; - if (informresolver) - { + if (informresolver){ informresolver = false; - try - { + try{ intentResolver.resolveIntent(input.getUserId()); outputBuilder.setResultCode(Ok).setMessage("The transaction ends."); } - catch (IntentResolutionException | VNMappingException e) - { + catch (IntentResolutionException | VNMappingException e){ e.printStackTrace(); outputBuilder.setResultCode(Error).setMessage(e.getMessage()); } - catch (Exception e) - { + catch (Exception e){ e.printStackTrace(); } } - else - { + else{ outputBuilder.setResultCode(Ok).setMessage("The transaction ends."); } - } } - return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> languageStyleNemoRequest(LanguageStyleNemoRequestInput input) { - final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder(); - String errorInfo = languageIntent.LanIntentHandler(aaa,input); - - if (errorInfo != null) - { - outputBuilder.setResultCode(Error).setMessage(errorInfo); + final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder(); + try { + String errorInfo = languageIntent.LanIntentHandler(aaa,input); + if (errorInfo != null){ + if (errorInfo.contains(NEMOConstants.Results)){ + outputBuilder.setResultCode(Ok).setMessage(errorInfo); + } + else{ + outputBuilder.setResultCode(Error).setMessage(errorInfo); + } + } + else{ + outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction."); + informresolver = true; + } } - else - { - outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction."); - informresolver = true; + catch (ParseException | NumberFormatException e) { + e.printStackTrace(); + outputBuilder.setResultCode(Error).setMessage(e.getMessage()); } - return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> registerUser(RegisterUserInput input) { - final RegisterUserOutputBuilder registerUserOutputBuilder = new RegisterUserOutputBuilder(); + final RegisterUserOutputBuilder outputBuilder = new RegisterUserOutputBuilder(); String errorInfo = registerUser.registerUser(input); - if (errorInfo != null) - { - registerUserOutputBuilder.setResultCode(Error).setMessage(errorInfo); + if (errorInfo != null){ + outputBuilder.setResultCode(Error).setMessage(errorInfo); } - else - { - registerUserOutputBuilder.setResultCode(Ok).setMessage("Register user successfully."); + else{ + outputBuilder.setResultCode(Ok).setMessage("Register user successfully."); } - - return RpcResultBuilder.success(registerUserOutputBuilder).buildFuture(); + return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> structureStyleNemoDelete(StructureStyleNemoDeleteInput input) { - final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder(); + final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder(); String errorInfo = deleteIntent.styleNemoDeleteOutput(aaa,input); - if (errorInfo != null) - { + if (errorInfo != null){ outputBuilder.setResultCode(Error).setMessage(errorInfo); } - else - { + else{ outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully."); informresolver = true; } - return RpcResultBuilder.success(outputBuilder).buildFuture(); } @Override public Future> structureStyleNemoUpdate(StructureStyleNemoUpdateInput input) { - final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder(); - - String erroInfo = updateIntent.updateIntent(aaa,input); - if (erroInfo != null) - { - outputBuilder.setResultCode(Error).setMessage(erroInfo); + final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder(); + try { + String erroInfo = updateIntent.updateIntent(aaa,input); + if (erroInfo != null){ + outputBuilder.setResultCode(Error).setMessage(erroInfo); + } + else{ + outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully."); + informresolver = true; + } } - else - { - outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully."); - informresolver = true; + catch (NumberFormatException e){ + e.printStackTrace(); + outputBuilder.setResultCode(Error).setMessage(e.getMessage()); } - return RpcResultBuilder.success(outputBuilder).buildFuture(); } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/AdvancedQuery.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/AdvancedQuery.java index e0b5d70..c06afcc 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/AdvancedQuery.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/AdvancedQuery.java @@ -7,10 +7,6 @@ */ package org.opendaylight.nemo.user.advancedquery; -import java.util.List; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; 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.common.rev151010.UserId; @@ -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; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.common.base.Optional; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +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.binding.InstanceIdentifier; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * Created by z00293636 on 2015/8/29. diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/QueryDefinitionCheck.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/QueryDefinitionCheck.java index 9561908..c47efbe 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/QueryDefinitionCheck.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/advancedquery/QueryDefinitionCheck.java @@ -7,22 +7,24 @@ */ package org.opendaylight.nemo.user.advancedquery; -import java.util.List; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.QueryConditionDefinitions; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.advanced.nemo.query.input.QueryCondition; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.QueryConditionDefinition; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.query.condition.definition.QueryConditionMatchPatterns; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.common.base.Optional; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; +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.binding.InstanceIdentifier; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; /** * Created by z00293636 on 2015/9/16. diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/AAA.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/AAA.java index 3af90fc..51e693e 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/AAA.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/AAA.java @@ -36,11 +36,12 @@ public class AAA { private String checkUser(UserId userId, UserName userName, UserPassword userPassword, UserRoleName userRoleName) { + tenantManage.fetchUsers(); final Map users = tenantManage.getUsers(); String errorInfo = null; - final User user = (users != null) ? users.get(userId) : null; + final User user = users.get(userId); - if (user != null) { + if (users.containsKey(userId) && user != null) { if (!user.getUserName().equals(userName)) { errorInfo = "The user name is not right."; } else if (!user.getUserPassword().equals(userPassword)) { @@ -48,7 +49,6 @@ public class AAA { } else if (!user.getUserRole().equals(userRoleName)) { errorInfo = "The role is not right."; } - } else { errorInfo = "The user is not exist."; } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/RegisterUser.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/RegisterUser.java index 4559649..5dbf6a0 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/RegisterUser.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/RegisterUser.java @@ -30,10 +30,12 @@ public class RegisterUser { { String errorInfo = null; + tenantManage.fetchUserRoles(); Map userRoles = tenantManage.getUserRoles(); + tenantManage.fetchUsers(); Map users = tenantManage.getUsers(); - if (userRoles == null || userRoles.isEmpty()) + if (userRoles.isEmpty()) { errorInfo = "There are no roles be defined."; } @@ -41,7 +43,7 @@ public class RegisterUser { { if (userRoles.containsKey(input.getUserRole())) { - if (users != null && users.containsKey(input.getUserId())) + if (users.containsKey(input.getUserId())) { errorInfo = "The user has been registered."; } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java index 6bacfb9..cbf22e1 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/tenantmanager/TenantManage.java @@ -8,8 +8,11 @@ package org.opendaylight.nemo.user.tenantmanager; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; @@ -28,13 +31,12 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; import com.google.common.base.Optional; -import com.google.common.collect.Maps; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; /** * Created by z00293636 on 2015/8/29. @@ -44,6 +46,8 @@ import com.google.common.util.concurrent.ListenableFuture; public class TenantManage { private static final Logger LOG = LoggerFactory.getLogger(TenantManage.class); private DataBroker dataBroker; + private final SettableFuture> userRoleListFuture = SettableFuture.create(); + private final SettableFuture> usersListFuture = SettableFuture.create(); private User user; public TenantManage(DataBroker dataBroker) @@ -51,87 +55,121 @@ public class TenantManage { this.dataBroker = dataBroker; } + private void setUserRoleList(List userRoleList) + { + this.userRoleListFuture.set(userRoleList); + } + + private void setUserList(List userList) + { + this.usersListFuture.set(userList); + } + private void setUser(User user) { this.user = user; } - public User getUser() - { - return user; + public List getUserRoleList() { + try { + return userRoleListFuture.get(1, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } } /** * - * @return null if an error was encountered, or an empty map if there was no - * error but no data was retrieved. + * @return Map from UserRoleName to UserRole. If no roles exist, an empty (not-null) map is returned. */ public Map getUserRoles() { + final Map map = new HashMap<>(); + final List userRoleList = getUserRoleList(); + if (userRoleList != null) { + for (UserRole role : userRoleList) { + map.put(role.getRoleName(), role); + } + } + return map; + } - InstanceIdentifier userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build(); - ListenableFuture> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read( - LogicalDatastoreType.CONFIGURATION, userRolesInsId); - - final Optional userRolesOpt; + public List getUsersList() { try { - // TODO: consider time out here? - userRolesOpt = userRolesFuture.get(); - } catch (InterruptedException | ExecutionException e) { - LOG.error("Cannot read role information.", e); + return usersListFuture.get(1, TimeUnit.SECONDS); + } catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read user information.", e); return null; } + } + + /** + * + * @return Map from UserId to User. If no users exist, an empty (not-null) map is returned. + */ + public Map getUsers() + { + final Map map = new HashMap<>(); + final List userList = getUsersList(); + if (userList != null) { + for (User user : userList) { + map.put(user.getUserId(), user); + } + } + return map; + } + + public User getUser() + { + return user; + } + + public void fetchUserRoles(){ + + InstanceIdentifier userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build(); + ListenableFuture> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, userRolesInsId); + Futures.addCallback(userRolesFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) + { + setUserRoleList(result.get().getUserRole()); + } - // TODO: change to Java 8 lambda expressions - return userRolesOpt.transform(new Function>() { @Override - public Map apply(UserRoles input) { - return Maps.uniqueIndex(input.getUserRole(), new Function() { - @Override - public UserRoleName apply(UserRole role) { - return role.getRoleName(); - } - }); + public void onFailure(Throwable t) + { + LOG.error("Can not read role information.", t); } - }).or(new HashMap()); + }); } - /** - * - * @return null if an error was encountered, or an empty map if there was no - * error but no data was retrieved. - */ - public Map getUsers() { + public void fetchUsers(){ InstanceIdentifier usersInsId = InstanceIdentifier.builder(Users.class).build(); - ListenableFuture> usersFuture = dataBroker.newReadOnlyTransaction().read( - LogicalDatastoreType.CONFIGURATION, usersInsId); - - final Optional usersOpt; - try { - // TODO: consider time out here? - usersOpt = usersFuture.get(); - } catch (InterruptedException | ExecutionException e) { - LOG.error("Cannot read user information.", e); - return null; - } + ListenableFuture> usersFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, usersInsId); + Futures.addCallback(usersFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) + { + setUserList(result.get().getUser()); + } - // TODO: change to Java 8 lambda expressions - return usersOpt.transform(new Function>() { @Override - public Map apply(Users input) { - return Maps.uniqueIndex(input.getUser(), new Function() { - @Override - public UserId apply(User user) { - return user.getUserId(); - } - }); + public void onFailure(Throwable t) + { + LOG.error("Can not read users information.", t); } - }).or(new HashMap()); + }); } public void fetchVNSpace(UserId userId) { + fetchUsers(); final Map users = getUsers(); - setUser((users != null) ? users.get(userId) : null); + + User user = users.get(userId); + if (users.containsKey(userId) && user != null) { + setUser(user); + } } public void addUser(RegisterUserInput registerUserInput){ diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionBegin.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionBegin.java index c8ed4e2..bfef299 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionBegin.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionBegin.java @@ -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. */ public class TransactionBegin { - - public String transactionbegin(AAA aaa,BeginTransactionInput input) - { - String errorInfo = null; - errorInfo = aaa.checkUser(input); - return errorInfo; + public String transactionbegin(AAA aaa,BeginTransactionInput input){ + return aaa.checkUser(input); } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionEnd.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionEnd.java index 910cbf3..e85df63 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionEnd.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/transactionmanager/TransactionEnd.java @@ -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. */ public class TransactionEnd { - public String transactionend(AAA aaa,EndTransactionInput input) - { - String errorInfo = null; - errorInfo = aaa.checkUser(input); - return errorInfo; + public String transactionend(AAA aaa,EndTransactionInput input){ + return aaa.checkUser(input); } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java index 1f226e2..90ef52a 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntent.java @@ -9,21 +9,30 @@ package org.opendaylight.nemo.user.vnspacemanager.languagestyle; 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.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput; +import java.io.StringReader; + /** * Created by z00293636 on 2015/8/31. */ public class LanguageIntent { private DataBroker dataBroker; + private TenantManage tenantManage; + private NEMOparser nemOparser; - public LanguageIntent(DataBroker dataBroker) + public LanguageIntent(DataBroker dataBroker, TenantManage tenantManage) { - this.dataBroker = dataBroker; + this.dataBroker = dataBroker; + this.tenantManage = tenantManage; + nemOparser = new NEMOparser(new StringReader("")); } - public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput){ + public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput) throws ParseException { String errorInfo = null; @@ -34,9 +43,9 @@ public class LanguageIntent { } else { - //TODO language parse + errorInfo = nemOparser.parseNEMO(languageStyleNemoRequestInput.getUserId(),languageStyleNemoRequestInput.getNemoStatement(),dataBroker,tenantManage); } - return null; + return errorInfo; } } 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 index 0000000..03d1522 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOConstants.java @@ -0,0 +1,80 @@ +/* + * 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; + +/** + * Created by z00293636 on 2015/11/25. + */ +public interface NEMOConstants { + String range = "range"; + String string = "string"; + String integer = "int"; + String ethaddr = "ethaddr"; + String ipv4pref = "ipv4pref"; + String ipv4addr = "ipv4addr"; + String mac_address = "mac-address"; + String ip_address = "ip-address"; + String ip_prefix = "ip-prefix"; + String gateway_ip = "gateway-ip"; + String ac_info_network = "ac-info-network"; + String operating_mode = "operating-mode"; + String layer2 = "layer2"; + String layer3 = "layer3"; + String host = "host"; + String src_mac = "src-mac"; + String dst_mac = "dst-mac"; + String src_ip = "src-ip"; + String dst_ip = "dst_ip"; + String colon = ":"; + String not = "!"; + String and = "&&"; + String or = "||"; + String lparen = "("; + String rparen = ")"; + String lbracket = "["; + String rbracket = "]"; + String equal = "=="; + String not_equal = "!="; + String greater_than = ">"; + String less_than = "<"; + String not_greater_than = "<="; + String not_less_than = ">="; + String between = "*"; + String comma = ","; + String time = "time"; + String node = "Node"; + String connection = "Connection"; + String flow = "Flow"; + String operation = "Operation"; + String AllNodes = "nodes"; + String AllConnections = "connections"; + String AllFlows = "flows"; + String AllOperations = "operations"; + String Type = "Type"; + String Contain = "Contain"; + String SubNodes = "Subnodes"; + String Property = "Property"; + String Endnodes = "Endnodes"; + String Match = "Match"; + String Priority = "Priority"; + String Target = "Target"; + String Condition = "Condition"; + String Action = "Action"; + String Id = "Id"; + String Name = "Name"; + String Results = "Results"; + String create = "CREATE"; + String delete = "DELETE"; + String update = "UPDATE"; + String Import = "IMPORT"; + String query = "query"; + String from = "From"; + String transaction = "Transaction"; + String begin = "Begin"; + String end = "End"; +} 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 index 0000000..aaea0ed --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/LanguageStyle.jj @@ -0,0 +1,807 @@ +/* + * 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 + */ +/** + * JavaCC file + */ + + +options { + JDK_VERSION = "1.7"; +} + +PARSER_BEGIN(NEMOparser) + +package org.opendaylight.nemo.parser; + +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowlang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang; + +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.UserId; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ArrayList; +import java.io.StringReader; + public class NEMOparser +{ + public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException + { + String strReturn = null ; + ReInit(new StringReader(strNEMO)); + try + { + strReturn = NEMO(userId,dataBroker,tenantManage); + } + catch ( ParseException objException ) + { + throw objException; + } + catch ( TokenMgrError objError ) + { + throw new ParseException(objError.getMessage()); + } + return strReturn; + } +} +PARSER_END(NEMOparser) + +SKIP : +{ + " " +| "\r" +| "\t" +| "\n" +} +TOKEN : +{ + < COLON: ":" > +| < COMMA: "," > +| < SEMICOLON: ";" > +| < LPAREN: "(" > +| < RPAREN: ")" > +| < LBRACKET: "[" > +| < RBRACKET: "]" > +| < AND: "&&" > +| < OR: "||" > +| < NOT: "!" > +| < EQUAL: "==" > +| < GTHAN: ">" > +| < LTHAN: "<" > +| < NLTHAN: ">=" > +| < NMTHAN: "<=" > +| < #UNDERSCORE: "_" > +| < #JOINER: "-" > +| < #FSLASH: "/" > +| < #DOT: "." > +} + +TOKEN : +{ + < CREATE: "CREATE" > +| < IMPORT: "IMPORT" > +| < UPDATE: "UPDATE" > +| < DELETE: "DELETE" > +| < NODE: "Node" > +| < TYPE: "Type" > +| < CONTAIN: "Contain" > +| < PROPERTY: "Property" > +| < CONNECTION: "Connection" > +| < ENDNODES: "Endnodes" > +| < FLOW: "Flow" > +| < MATCH: "Match" > +| < OPERATION: "Operation" > +| < TARGET: "Target" > +| < CONDITION: "Condition" > +| < ACTION: "Action" > +| < QUERY: "Query" > +| < FROM: "From" > +| < PRIORITY: "Priority" > +| < TRUE: "true" > +| < FALSE: "false" > +| < TRANSACTION: "Transaction" > +| < BEGIN: "Begin" > +| < END: "End" > +} +TOKEN : +{ + < UNUMBER: "0" | ["1" - "9"]()* > +| < ID: ( | ( | | |< JOINER >)*( | )+) > +| < #DIGIT: ["0" - "9"] > +| < #LETTER: ["a" - "z"] > +| < ETHPREF: ((["1" - "9"] | ["1" - "3"] | "4"["0" - "8"]))? > +| < IPV4PREF: ((["1" - "9"] | ["1" - "2"] | "3"["0" - "2"]))? > +| < #ETHADDR: ((){2}){5}(){2} > +| < #IPV4ADDR: ("."){3} > +| < #UBYTE: (["0" - "9"] | ["1" - "9"] | "1"(){2} | "2"["0" - "4"] | "25"["0" - "5"]) > +| < #HEXDIGIT: ["0" - "9", "a" - "f"] > +} + +String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage ): +{ +} +{ + (< CREATE > | < IMPORT > |< UPDATE>) + { + return UpdateIntent(userId,dataBroker,tenantManage); } +| < DELETE > + { + return DeleteIntent(userId,dataBroker,tenantManage); } +| < QUERY > + { + return Query(userId,dataBroker,tenantManage); } +} + +String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ } +{ + < NODE > + { + return UpdateNode(userId,dataBroker,tenantManage); + } +| < CONNECTION > + { + return UpdateConnection(userId,dataBroker,tenantManage); + } +| < FLOW > + { + return UpdateFlow(userId,dataBroker,tenantManage); + } +| < OPERATION > + { + return UpdateOperation(userId,dataBroker,tenantManage); + } } + +String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ } +{ + < NODE > + { + return DeleteNode(userId,dataBroker,tenantManage); + } +| < CONNECTION > + { + return DeleteConnection(userId,dataBroker,tenantManage); + } +| < FLOW > + { + return DeleteFlow(userId,dataBroker,tenantManage); + } +| < OPERATION > + { + return DeleteOperation(userId,dataBroker,tenantManage); + } } + +String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objNodeNameToken = null; + Token objNodeTypeToken = null; + Token objContainNodeToken = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + Boolean typeRight=false; + List subNodeNameList = new ArrayList(); + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage); +} +{ + objNodeNameToken = < ID > + < TYPE > + objNodeTypeToken = < ID > + ( < CONTAIN > + ( + objContainNodeToken = < ID > + { + subNodeNameList.add(objContainNodeToken.image); } ) + ( + < COMMA > + objContainNodeToken = < ID > + { + subNodeNameList.add(objContainNodeToken.image); + } )* + )? + ( < PROPERTY > + ( + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue = new LinkedHashMap(); } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); } + | objPropertyValueToken=< ETHPREF > + { + propertyvalue.put(objPropertyValueToken.image, "string"); } + | objPropertyValueToken=< IPV4PREF > + { + propertyvalue.put(objPropertyValueToken.image, "string"); } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image, "int"); } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); })) + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ETHPREF > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< IPV4PREF > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue); }) + ) + + ( + < COMMA > + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue1 = new LinkedHashMap(); + } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< ETHPREF > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< IPV4PREF > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image, "int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ETHPREF > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< IPV4PREF > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + | objPropertyValueToken=< ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue1); + }) + )* + )? + < SEMICOLON > + { + strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties); return strReturn; + } +} + +String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objNodeNameToken = null; + DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage); +} +{ + objNodeNameToken = < ID > + < SEMICOLON > + { + strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image); + return strReturn; } +} + +String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage): + { + String strReturn = null; + Token objConnNameToken = null; + Token objConnTypeToken = null; + Token objConnEndNodeToken = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + List endNodes = new ArrayList(); + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage); } + { + objConnNameToken = < ID > + < TYPE > + objConnTypeToken = < ID > + ( + < ENDNODES > + ( + objConnEndNodeToken = < ID > + { + endNodes.add(objConnEndNodeToken.image); } ) + ( + < COMMA > + objConnEndNodeToken = < ID > + { + endNodes.add(objConnEndNodeToken.image); } )+ )? + ( + < PROPERTY > + ( + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue = new LinkedHashMap(); } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image, "int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + ) + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue); + } + ) + + ( + < COMMA > + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue1 = new LinkedHashMap(); } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image, "int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + ) + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue1); + } + )* )? + < SEMICOLON > + { + strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties); + return strReturn; } } + +String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objConnNameToken = null; + DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage); +} +{ + objConnNameToken = < ID > + < SEMICOLON > + { + strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image); + return strReturn; + } +} + +String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objFlowNameToken = null; + Token objFlowMatchItem = null; + Token objFlowMatchValue = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + LinkedHashMap> matchItems = new LinkedHashMap>(); + + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage); } +{ + objFlowNameToken = < ID > + ( + < MATCH > + objFlowMatchItem = < ID > + < COLON > + { + LinkedHashMap matchvalue = new LinkedHashMap(); } + ( (objFlowMatchValue = < ID > + { + matchvalue.put(objFlowMatchValue.image,"string"); } + | objFlowMatchValue = < ETHPREF > + { + matchvalue.put(objFlowMatchValue.image,"string"); } + | objFlowMatchValue = < IPV4PREF > + { + matchvalue.put(objFlowMatchValue.image,"string"); } + | objFlowMatchValue = < UNUMBER > + { + matchvalue.put(objFlowMatchValue.image,"int"); } + | (< LPAREN >(objRangeLeft=< UNUMBER >)(objRangeRight=< UNUMBER >) + { + matchvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); })) + { + matchItems.put(objFlowMatchItem.image,matchvalue); } + ) + ( + < COMMA > + objFlowMatchItem = < ID > + { + LinkedHashMap matchvalue1 = new LinkedHashMap(); } + < COLON > + (objFlowMatchValue = < ID > + { + matchvalue1.put(objFlowMatchValue.image,"string"); + } + | objFlowMatchValue = < ETHPREF > + { + matchvalue1.put(objFlowMatchValue.image,"string"); } + | objFlowMatchValue = < IPV4PREF > + { + matchvalue1.put(objFlowMatchValue.image,"string"); } + | objFlowMatchValue = < UNUMBER > + { + matchvalue1.put(objFlowMatchValue.image,"int"); + } + | (< LPAREN >(objRangeLeft=< UNUMBER >)(objRangeRight=< UNUMBER >) + { + matchvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + { + matchItems.put(objFlowMatchItem.image,matchvalue1); + } )* + ) + ( + < PROPERTY > + ( + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue = new LinkedHashMap(); } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image, "int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + ) + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ID > + { + propertyvalue.put(objPropertyValueToken.image, "string"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue); + } + ) + + ( + < COMMA > + objPropertyNameToken = < ID > + < COLON > + { + LinkedHashMap propertyvalue1 = new LinkedHashMap(); } + < LBRACKET > + ((objPropertyValueToken = < ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |objPropertyValueToken=< UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image, "int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + ) + (< COMMA > + (objPropertyValueToken = < UNUMBER > + { + propertyvalue1.put(objPropertyValueToken.image,"int"); + } + | objPropertyValueToken=< ID > + { + propertyvalue1.put(objPropertyValueToken.image, "string"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + )* + < RBRACKET > + { + properties.put(objPropertyNameToken.image, propertyvalue1); + } + )* + )? + < SEMICOLON > + { + strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties); + return strReturn; } } + +String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objFlowNameToken = null; + DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage); +} +{ + objFlowNameToken = < ID > + < SEMICOLON > + { + strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image); + return strReturn; + } +} + +String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objOperNameToken = null; + Token objOperTargetToken = null; + Token objOperPrioToken = null; + Token objCondRelationToken = null; + Token objCondNameToken = null; + Token objCondMatchPattern = null; + Token objCondTarget = null; + Token objActionNameToken = null; + Token objActionValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + LinkedHashMap> conditions = new LinkedHashMap>(); + + LinkedHashMap> actions = new LinkedHashMap>(); + UpdateOperationLang updateOperationLang = new UpdateOperationLang(dataBroker, tenantManage); } +{ + objOperNameToken = < ID > + < TARGET > + objOperTargetToken = < ID > + < PRIORITY > + objOperPrioToken = < UNUMBER > + ( + < CONDITION > + ( + (objCondRelationToken=< NOT >)? + < LPAREN > + objCondNameToken=< ID > + (objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=) + { + LinkedHashMap targetValue = new LinkedHashMap(); } + ( objCondTarget= + { + targetValue.put(objCondTarget.image,"string"); } + | objCondTarget= + { + targetValue.put(objCondTarget.image,"int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + targetValue.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + < RPAREN > + { + conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue); } ) + ( + (objCondRelationToken=< NOT >|objCondRelationToken=< AND >|objCondRelationToken=< OR >) + < LPAREN > + objCondNameToken=< ID > + (objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=|objCondMatchPattern=) + { + LinkedHashMap targetValue1 = new LinkedHashMap(); } + ( objCondTarget= + { + targetValue1.put(objCondTarget.image,"string"); + } + | objCondTarget= + { + targetValue1.put(objCondTarget.image,"int"); + } + |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + targetValue1.put(objRangeLeft.image+","+objRangeRight.image,"range"); + })) + < RPAREN > + { + conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue1); + } )* )? + ( + < ACTION > + ( ( + objActionNameToken = < ID > + ( < COLON > + { + LinkedHashMap actionvalues = new LinkedHashMap(); } + ( + < LBRACKET > objActionValueToken = < ID > + { + actionvalues.put(objActionValueToken.image, "string"); } + | objActionValueToken = < UNUMBER > + { + actionvalues.put(objActionValueToken.image, "int"); } + | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range"); } )) + ( + < COMMA > + objActionValueToken = < ID > + { + actionvalues.put(objActionValueToken.image, "string"); + } + | objActionValueToken = < UNUMBER > + { + actionvalues.put(objActionValueToken.image, "int"); + } + | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range"); + }))* + < RBRACKET > + { + actions.put(objActionNameToken.image,actionvalues); } + )? + ) + ( + < COMMA > + ( + objActionNameToken = < ID > + ( < COLON > + { + LinkedHashMap actionvalues1 = new LinkedHashMap(); } + ( + < LBRACKET > + objActionValueToken = < ID > + { + actionvalues1.put(objActionValueToken.image, "string"); + } + | objActionValueToken = < UNUMBER > + { + actionvalues1.put(objActionValueToken.image, "int"); + } + | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range"); + } )) + ( + < COMMA > + objActionValueToken = < ID > + { + actionvalues1.put(objActionValueToken.image, "string"); + } + | objActionValueToken = < UNUMBER > + { + actionvalues1.put(objActionValueToken.image, "int"); + } + | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN > + { + actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range"); + }))* + < RBRACKET > + { + actions.put(objActionNameToken.image,actionvalues1); + } + )? + ) )* ) +)? + < SEMICOLON > + { + strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions); + return strReturn; } } + +String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage): +{ + String strReturn = null; + Token objOperationNameToken = null; + DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage); +} +{ + objOperationNameToken = < ID > + < SEMICOLON > + { + strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image); + return strReturn; + } +} + 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 index 0000000..11660a5 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparser.java @@ -0,0 +1,1499 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. NEMOparser.java */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; + +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.Query; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; + +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.UserId; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ArrayList; +import java.io.StringReader; + +public class NEMOparser implements NEMOparserConstants { + public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException + { + String strReturn = null ; + ReInit(new StringReader(strNEMO)); + try + { + strReturn = NEMO(userId,dataBroker,tenantManage); + } + catch ( ParseException objException ) + { + throw objException; + } + catch ( TokenMgrError objError ) + { + throw new ParseException(objError.getMessage()); + } + return strReturn; + } + + static final public String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CREATE: + case IMPORT: + case UPDATE: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CREATE: + jj_consume_token(CREATE); + break; + case IMPORT: + jj_consume_token(IMPORT); + break; + case UPDATE: + jj_consume_token(UPDATE); + break; + default: + jj_la1[0] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + {if (true) return UpdateIntent(userId,dataBroker,tenantManage);} + break; + case DELETE: + jj_consume_token(DELETE); + {if (true) return DeleteIntent(userId,dataBroker,tenantManage);} + break; + case QUERY: + jj_consume_token(QUERY); + {if (true) return Query(userId,dataBroker,tenantManage);} + break; + default: + jj_la1[1] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + + static final public String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NODE: + jj_consume_token(NODE); + {if (true) return UpdateNode(userId,dataBroker,tenantManage);} + break; + case CONNECTION: + jj_consume_token(CONNECTION); + {if (true) return UpdateConnection(userId,dataBroker,tenantManage);} + break; + case FLOW: + jj_consume_token(FLOW); + {if (true) return UpdateFlow(userId,dataBroker,tenantManage);} + break; + case OPERATION: + jj_consume_token(OPERATION); + {if (true) return UpdateOperation(userId,dataBroker,tenantManage);} + break; + default: + jj_la1[2] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + + static final public String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NODE: + jj_consume_token(NODE); + {if (true) return DeleteNode(userId,dataBroker,tenantManage);} + break; + case CONNECTION: + jj_consume_token(CONNECTION); + {if (true) return DeleteConnection(userId,dataBroker,tenantManage);} + break; + case FLOW: + jj_consume_token(FLOW); + {if (true) return DeleteFlow(userId,dataBroker,tenantManage);} + break; + case OPERATION: + jj_consume_token(OPERATION); + {if (true) return DeleteOperation(userId,dataBroker,tenantManage);} + break; + default: + jj_la1[3] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + + static final public String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objNodeNameToken = null; + Token objNodeTypeToken = null; + Token objContainNodeToken = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + Boolean typeRight=false; + List subNodeNameList = new ArrayList(); + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage); + objNodeNameToken = jj_consume_token(ID); + jj_consume_token(TYPE); + objNodeTypeToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CONTAIN: + jj_consume_token(CONTAIN); + objContainNodeToken = jj_consume_token(ID); + subNodeNameList.add(objContainNodeToken.image); + label_1: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[4] = jj_gen; + break label_1; + } + jj_consume_token(COMMA); + objContainNodeToken = jj_consume_token(ID); + subNodeNameList.add(objContainNodeToken.image); + } + break; + default: + jj_la1[5] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PROPERTY: + jj_consume_token(PROPERTY); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case ETHADDR: + objPropertyValueToken = jj_consume_token(ETHADDR); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4PREF: + objPropertyValueToken = jj_consume_token(IPV4PREF); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4ADDR: + objPropertyValueToken = jj_consume_token(IPV4ADDR); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[6] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_2: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[7] = jj_gen; + break label_2; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ETHADDR: + objPropertyValueToken = jj_consume_token(ETHADDR); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4PREF: + objPropertyValueToken = jj_consume_token(IPV4PREF); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4ADDR: + objPropertyValueToken = jj_consume_token(IPV4ADDR); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[8] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue); + label_3: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[9] = jj_gen; + break label_3; + } + jj_consume_token(COMMA); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue1 = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case ETHADDR: + objPropertyValueToken = jj_consume_token(ETHADDR); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4PREF: + objPropertyValueToken = jj_consume_token(IPV4PREF); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[10] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_4: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[11] = jj_gen; + break label_4; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ETHADDR: + objPropertyValueToken = jj_consume_token(ETHADDR); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case IPV4PREF: + objPropertyValueToken = jj_consume_token(IPV4PREF); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[12] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue1); + } + break; + default: + jj_la1[13] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objNodeNameToken = null; + DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage); + objNodeNameToken = jj_consume_token(ID); + jj_consume_token(SEMICOLON); + strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objConnNameToken = null; + Token objConnTypeToken = null; + Token objConnEndNodeToken = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + List endNodes = new ArrayList(); + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage); + objConnNameToken = jj_consume_token(ID); + jj_consume_token(TYPE); + objConnTypeToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ENDNODES: + jj_consume_token(ENDNODES); + objConnEndNodeToken = jj_consume_token(ID); + endNodes.add(objConnEndNodeToken.image); + label_5: + while (true) { + jj_consume_token(COMMA); + objConnEndNodeToken = jj_consume_token(ID); + endNodes.add(objConnEndNodeToken.image); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[14] = jj_gen; + break label_5; + } + } + break; + default: + jj_la1[15] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PROPERTY: + jj_consume_token(PROPERTY); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[16] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_6: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[17] = jj_gen; + break label_6; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[18] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue); + label_7: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[19] = jj_gen; + break label_7; + } + jj_consume_token(COMMA); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue1 = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[20] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_8: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[21] = jj_gen; + break label_8; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[22] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue1); + } + break; + default: + jj_la1[23] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objConnNameToken = null; + DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage); + objConnNameToken = jj_consume_token(ID); + jj_consume_token(SEMICOLON); + strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objFlowNameToken = null; + Token objFlowMatchItem = null; + Token objFlowMatchValue = null; + Token objPropertyNameToken = null; + Token objPropertyValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + LinkedHashMap> matchItems = new LinkedHashMap>(); + + LinkedHashMap> properties = new LinkedHashMap>(); + UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage); + objFlowNameToken = jj_consume_token(ID); + jj_consume_token(MATCH); + objFlowMatchItem = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap matchvalue = new LinkedHashMap(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objFlowMatchValue = jj_consume_token(ID); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case ETHADDR: + objFlowMatchValue = jj_consume_token(ETHADDR); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case IPV4PREF: + objFlowMatchValue = jj_consume_token(IPV4PREF); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case IPV4ADDR: + objFlowMatchValue = jj_consume_token(IPV4ADDR); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case UNUMBER: + objFlowMatchValue = jj_consume_token(UNUMBER); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + matchvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[24] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + matchItems.put(objFlowMatchItem.image,matchvalue); + label_9: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[25] = jj_gen; + break label_9; + } + jj_consume_token(COMMA); + objFlowMatchItem = jj_consume_token(ID); + LinkedHashMap matchvalue1 = new LinkedHashMap(); + jj_consume_token(COLON); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objFlowMatchValue = jj_consume_token(ID); + matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case ETHADDR: + objFlowMatchValue = jj_consume_token(ETHADDR); + matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case IPV4PREF: + objFlowMatchValue = jj_consume_token(IPV4PREF); + matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case IPV4ADDR: + objFlowMatchValue = jj_consume_token(IPV4ADDR); + matchvalue.put(objFlowMatchValue.image,NEMOConstants.string); + break; + case UNUMBER: + objFlowMatchValue = jj_consume_token(UNUMBER); + matchvalue1.put(objFlowMatchValue.image,NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + matchvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[26] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + matchItems.put(objFlowMatchItem.image,matchvalue1); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PROPERTY: + jj_consume_token(PROPERTY); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[27] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_10: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[28] = jj_gen; + break label_10; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[29] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue); + label_11: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[30] = jj_gen; + break label_11; + } + jj_consume_token(COMMA); + objPropertyNameToken = jj_consume_token(ID); + jj_consume_token(COLON); + LinkedHashMap propertyvalue1 = new LinkedHashMap(); + jj_consume_token(LBRACKET); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[31] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_12: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[32] = jj_gen; + break label_12; + } + jj_consume_token(COMMA); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case UNUMBER: + objPropertyValueToken = jj_consume_token(UNUMBER); + propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer); + break; + case ID: + objPropertyValueToken = jj_consume_token(ID); + propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[33] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + properties.put(objPropertyNameToken.image, propertyvalue1); + } + break; + default: + jj_la1[34] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objFlowNameToken = null; + DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage); + objFlowNameToken = jj_consume_token(ID); + jj_consume_token(SEMICOLON); + strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objOperNameToken = null; + Token objOperTargetToken = null; + Token objOperPrioToken = null; + Token objCondRelationToken = null; + Token objCondNameToken = null; + Token objCondMatchPattern = null; + Token objCondTarget = null; + Token objCondTarget1 = null; + Token objActionNameToken = null; + Token objActionValueToken = null; + Token objRangeLeft = null; + Token objRangeRight = null; + LinkedHashMap> conditions = new LinkedHashMap>(); + + LinkedHashMap> actions = new LinkedHashMap>(); + UpdateOperationLang updateOperationLang = new UpdateOperationLang(dataBroker, tenantManage); + objOperNameToken = jj_consume_token(ID); + jj_consume_token(TARGET); + objOperTargetToken = jj_consume_token(ID); + jj_consume_token(PRIORITY); + objOperPrioToken = jj_consume_token(UNUMBER); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CONDITION: + jj_consume_token(CONDITION); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NOT: + objCondRelationToken = jj_consume_token(NOT); + break; + default: + jj_la1[35] = jj_gen; + ; + } + jj_consume_token(LPAREN); + objCondNameToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EQUAL: + objCondMatchPattern = jj_consume_token(EQUAL); + break; + case GTHAN: + objCondMatchPattern = jj_consume_token(GTHAN); + break; + case LTHAN: + objCondMatchPattern = jj_consume_token(LTHAN); + break; + case NLTHAN: + objCondMatchPattern = jj_consume_token(NLTHAN); + break; + case NMTHAN: + objCondMatchPattern = jj_consume_token(NMTHAN); + break; + case BETWEEN: + objCondMatchPattern = jj_consume_token(BETWEEN); + break; + default: + jj_la1[36] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + LinkedHashMap targetValue = new LinkedHashMap(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objCondTarget = jj_consume_token(ID); + targetValue.put(objCondTarget.image,NEMOConstants.string); + break; + case TIMEVAL: + objCondTarget = jj_consume_token(TIMEVAL); + targetValue.put(objCondTarget.image,NEMOConstants.string); + break; + case FULLTIME: + objCondTarget = jj_consume_token(FULLTIME); + targetValue.put(objCondTarget.image,NEMOConstants.string); + break; + case UNUMBER: + objCondTarget = jj_consume_token(UNUMBER); + targetValue.put(objCondTarget.image,NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + targetValue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[37] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(RPAREN); + if (objCondRelationToken == null) + { + String s = null; + conditions.put(s+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma + +objCondMatchPattern.image,targetValue); + } + else + { + conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma + +objCondMatchPattern.image,targetValue); + } + label_13: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case AND: + case OR: + case NOT: + ; + break; + default: + jj_la1[38] = jj_gen; + break label_13; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NOT: + objCondRelationToken = jj_consume_token(NOT); + break; + case AND: + objCondRelationToken = jj_consume_token(AND); + break; + case OR: + objCondRelationToken = jj_consume_token(OR); + break; + default: + jj_la1[39] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(LPAREN); + objCondNameToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EQUAL: + objCondMatchPattern = jj_consume_token(EQUAL); + break; + case GTHAN: + objCondMatchPattern = jj_consume_token(GTHAN); + break; + case LTHAN: + objCondMatchPattern = jj_consume_token(LTHAN); + break; + case NLTHAN: + objCondMatchPattern = jj_consume_token(NLTHAN); + break; + case NMTHAN: + objCondMatchPattern = jj_consume_token(NMTHAN); + break; + default: + jj_la1[40] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + LinkedHashMap targetValue1 = new LinkedHashMap(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ID: + objCondTarget = jj_consume_token(ID); + targetValue1.put(objCondTarget.image,NEMOConstants.string); + break; + case TIMEVAL: + objCondTarget = jj_consume_token(TIMEVAL); + targetValue1.put(objCondTarget.image,NEMOConstants.string); + break; + case FULLTIME: + objCondTarget = jj_consume_token(FULLTIME); + targetValue1.put(objCondTarget.image,NEMOConstants.string); + break; + case UNUMBER: + objCondTarget = jj_consume_token(UNUMBER); + targetValue1.put(objCondTarget.image,NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + targetValue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range); + break; + default: + jj_la1[41] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(RPAREN); + conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma + +objCondMatchPattern.image,targetValue1); + } + break; + default: + jj_la1[42] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ACTION: + jj_consume_token(ACTION); + objActionNameToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + LinkedHashMap actionvalues = new LinkedHashMap(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + jj_consume_token(LBRACKET); + objActionValueToken = jj_consume_token(ID); + actionvalues.put(objActionValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objActionValueToken = jj_consume_token(UNUMBER); + actionvalues.put(objActionValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range); + break; + default: + jj_la1[43] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_14: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + case LPAREN: + case UNUMBER: + ; + break; + default: + jj_la1[44] = jj_gen; + break label_14; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + jj_consume_token(COMMA); + objActionValueToken = jj_consume_token(ID); + actionvalues.put(objActionValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objActionValueToken = jj_consume_token(UNUMBER); + actionvalues.put(objActionValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range); + break; + default: + jj_la1[45] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + actions.put(objActionNameToken.image,actionvalues); + break; + default: + jj_la1[46] = jj_gen; + ; + } + label_15: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[47] = jj_gen; + break label_15; + } + jj_consume_token(COMMA); + objActionNameToken = jj_consume_token(ID); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + LinkedHashMap actionvalues1 = new LinkedHashMap(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + jj_consume_token(LBRACKET); + objActionValueToken = jj_consume_token(ID); + actionvalues1.put(objActionValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objActionValueToken = jj_consume_token(UNUMBER); + actionvalues1.put(objActionValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range); + break; + default: + jj_la1[48] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_16: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + case LPAREN: + case UNUMBER: + ; + break; + default: + jj_la1[49] = jj_gen; + break label_16; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + jj_consume_token(COMMA); + objActionValueToken = jj_consume_token(ID); + actionvalues1.put(objActionValueToken.image, NEMOConstants.string); + break; + case UNUMBER: + objActionValueToken = jj_consume_token(UNUMBER); + actionvalues1.put(objActionValueToken.image, NEMOConstants.integer); + break; + case LPAREN: + jj_consume_token(LPAREN); + objRangeLeft = jj_consume_token(UNUMBER); + jj_consume_token(COMMA); + objRangeRight = jj_consume_token(UNUMBER); + jj_consume_token(RPAREN); + actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range); + break; + default: + jj_la1[50] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACKET); + actions.put(objActionNameToken.image,actionvalues1); + break; + default: + jj_la1[51] = jj_gen; + ; + } + } + break; + default: + jj_la1[52] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objOperationNameToken = null; + DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage); + objOperationNameToken = jj_consume_token(ID); + jj_consume_token(SEMICOLON); + strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image); + {if (true) return strReturn;} + throw new Error("Missing return statement in function"); + } + + static final public String Query(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException { + String strReturn = null; + Token objItemToken = null; + Token objTargetToken = null; + Query query = new Query(tenantManage); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TYPE: + objItemToken = jj_consume_token(TYPE); + break; + case CONTAIN: + objItemToken = jj_consume_token(CONTAIN); + break; + case PROPERTY: + objItemToken = jj_consume_token(PROPERTY); + break; + case ENDNODES: + objItemToken = jj_consume_token(ENDNODES); + break; + case MATCH: + objItemToken = jj_consume_token(MATCH); + break; + case PRIORITY: + objItemToken = jj_consume_token(PRIORITY); + break; + case TARGET: + objItemToken = jj_consume_token(TARGET); + break; + case CONDITION: + objItemToken = jj_consume_token(CONDITION); + break; + case ACTION: + objItemToken = jj_consume_token(ACTION); + break; + case ID: + objItemToken = jj_consume_token(ID); + break; + case NODES: + objItemToken = jj_consume_token(NODES); + break; + case CONNECTIONS: + objItemToken = jj_consume_token(CONNECTIONS); + break; + case FLOWS: + objItemToken = jj_consume_token(FLOWS); + break; + case OPERATIONS: + objItemToken = jj_consume_token(OPERATIONS); + break; + default: + jj_la1[53] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case FROM: + jj_consume_token(FROM); + objTargetToken = jj_consume_token(ID); + break; + default: + jj_la1[54] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + if (objTargetToken == null) + { + String target = null; + {if (true) return query.query(userId,objItemToken.image,target);} + } + else + { + {if (true) return query.query(userId,objItemToken.image,objTargetToken.image);} + } + throw new Error("Missing return statement in function"); + } + + static private boolean jj_initialized_once = false; + /** Generated Token Manager. */ + static public NEMOparserTokenManager token_source; + static SimpleCharStream jj_input_stream; + /** Current token. */ + static public Token token; + /** Next token. */ + static public Token jj_nt; + static private int jj_ntk; + static private int jj_gen; + static final private int[] jj_la1 = new int[55]; + static private int[] jj_la1_0; + static private int[] jj_la1_1; + static private int[] jj_la1_2; + static { + jj_la1_init_0(); + jj_la1_init_1(); + jj_la1_init_2(); + } + private static void jj_la1_init_0() { + 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,}; + } + private static void jj_la1_init_1() { + 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,}; + } + private static void jj_la1_init_2() { + 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,}; + } + + /** Constructor with InputStream. */ + public NEMOparser(java.io.InputStream stream) { + this(stream, null); + } + /** Constructor with InputStream and supplied encoding */ + public NEMOparser(java.io.InputStream stream, String encoding) { + if (jj_initialized_once) { + System.out.println("ERROR: Second call to constructor of static parser. "); + System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false"); + System.out.println(" during parser generation."); + throw new Error(); + } + jj_initialized_once = true; + try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source = new NEMOparserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + /** Reinitialise. */ + static public void ReInit(java.io.InputStream stream) { + ReInit(stream, null); + } + /** Reinitialise. */ + static public void ReInit(java.io.InputStream stream, String encoding) { + try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); } + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + /** Constructor. */ + public NEMOparser(java.io.Reader stream) { + if (jj_initialized_once) { + System.out.println("ERROR: Second call to constructor of static parser. "); + System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false"); + System.out.println(" during parser generation."); + throw new Error(); + } + jj_initialized_once = true; + jj_input_stream = new SimpleCharStream(stream, 1, 1); + token_source = new NEMOparserTokenManager(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + /** Reinitialise. */ + static public void ReInit(java.io.Reader stream) { + jj_input_stream.ReInit(stream, 1, 1); + token_source.ReInit(jj_input_stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + /** Constructor with generated Token Manager. */ + public NEMOparser(NEMOparserTokenManager tm) { + if (jj_initialized_once) { + System.out.println("ERROR: Second call to constructor of static parser. "); + System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false"); + System.out.println(" during parser generation."); + throw new Error(); + } + jj_initialized_once = true; + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + /** Reinitialise. */ + public void ReInit(NEMOparserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 55; i++) jj_la1[i] = -1; + } + + static private Token jj_consume_token(int kind) throws ParseException { + Token oldToken; + if ((oldToken = token).next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + if (token.kind == kind) { + jj_gen++; + return token; + } + token = oldToken; + jj_kind = kind; + throw generateParseException(); + } + + +/** Get the next Token. */ + static final public Token getNextToken() { + if (token.next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + jj_gen++; + return token; + } + +/** Get the specific Token. */ + static final public Token getToken(int index) { + Token t = token; + for (int i = 0; i < index; i++) { + if (t.next != null) t = t.next; + else t = t.next = token_source.getNextToken(); + } + return t; + } + + static private int jj_ntk() { + if ((jj_nt=token.next) == null) + return (jj_ntk = (token.next=token_source.getNextToken()).kind); + else + return (jj_ntk = jj_nt.kind); + } + + static private List jj_expentries = new ArrayList(); + static private int[] jj_expentry; + static private int jj_kind = -1; + + /** Generate ParseException. */ + static public ParseException generateParseException() { + jj_expentries.clear(); + boolean[] la1tokens = new boolean[72]; + if (jj_kind >= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 55; i++) { + if (jj_la1[i] == jj_gen) { + for (int j = 0; j < 32; j++) { + if ((jj_la1_0[i] & (1<", + "\" \"", + "\"\\r\"", + "\"\\t\"", + "\"\\n\"", + "\":\"", + "\",\"", + "\";\"", + "\"(\"", + "\")\"", + "\"[\"", + "\"]\"", + "\"&&\"", + "\"||\"", + "\"!\"", + "\"==\"", + "\">\"", + "\"<\"", + "\">=\"", + "\"<=\"", + "\"*\"", + "\"_\"", + "\"-\"", + "\"/\"", + "\".\"", + "\"CREATE\"", + "\"IMPORT\"", + "\"UPDATE\"", + "\"DELETE\"", + "\"User\"", + "\"Node\"", + "\"Type\"", + "\"Contain\"", + "\"Property\"", + "\"Connection\"", + "\"Endnodes\"", + "\"Flow\"", + "\"Match\"", + "\"Operation\"", + "\"Target\"", + "\"Condition\"", + "\"Action\"", + "\"Query\"", + "\"From\"", + "\"Priority\"", + "\"Transaction\"", + "\"Begin\"", + "\"End\"", + "\"nodes\"", + "\"connections\"", + "\"flows\"", + "\"operations\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + }; + +} 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 index 0000000..f29731c --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/NEMOparserTokenManager.java @@ -0,0 +1,1855 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. NEMOparserTokenManager.java */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; +/** Token Manager. */ +public class NEMOparserTokenManager implements NEMOparserConstants +{ + + /** Debug output. */ + public static java.io.PrintStream debugStream = System.out; + /** Set debug output. */ + public static void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private static final int jjStopStringLiteralDfa_0(int pos, long active0) +{ + switch (pos) + { + case 0: + if ((active0 & 0x9000000000000L) != 0L) + { + jjmatchedKind = 53; + return 203; + } + if ((active0 & 0x6000000000000L) != 0L) + { + jjmatchedKind = 53; + return 84; + } + return -1; + case 1: + if ((active0 & 0xf000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 1; + return 203; + } + return -1; + case 2: + if ((active0 & 0xf000000000000L) != 0L) + { + if (jjmatchedPos != 2) + { + jjmatchedKind = 53; + jjmatchedPos = 2; + } + return 203; + } + return -1; + case 3: + if ((active0 & 0xf000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 3; + return 203; + } + return -1; + case 4: + if ((active0 & 0xa000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 4; + return 203; + } + if ((active0 & 0x5000000000000L) != 0L) + return 203; + return -1; + case 5: + if ((active0 & 0xa000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 5; + return 203; + } + return -1; + case 6: + if ((active0 & 0xa000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 6; + return 203; + } + return -1; + case 7: + if ((active0 & 0xa000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 7; + return 203; + } + return -1; + case 8: + if ((active0 & 0xa000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 8; + return 203; + } + return -1; + case 9: + if ((active0 & 0x2000000000000L) != 0L) + { + jjmatchedKind = 53; + jjmatchedPos = 9; + return 203; + } + if ((active0 & 0x8000000000000L) != 0L) + return 203; + return -1; + default : + return -1; + } +} +private static final int jjStartNfa_0(int pos, long active0) +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1); +} +static private int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +static private int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 33: + return jjStopAtPos(0, 14); + case 38: + return jjMoveStringLiteralDfa1_0(0x1000L); + case 40: + return jjStopAtPos(0, 8); + case 41: + return jjStopAtPos(0, 9); + case 42: + return jjStopAtPos(0, 20); + case 44: + return jjStopAtPos(0, 6); + case 58: + return jjStopAtPos(0, 5); + case 59: + return jjStopAtPos(0, 7); + case 60: + jjmatchedKind = 17; + return jjMoveStringLiteralDfa1_0(0x80000L); + case 61: + return jjMoveStringLiteralDfa1_0(0x8000L); + case 62: + jjmatchedKind = 16; + return jjMoveStringLiteralDfa1_0(0x40000L); + case 65: + return jjMoveStringLiteralDfa1_0(0x20000000000L); + case 66: + return jjMoveStringLiteralDfa1_0(0x400000000000L); + case 67: + return jjMoveStringLiteralDfa1_0(0x10502000000L); + case 68: + return jjMoveStringLiteralDfa1_0(0x10000000L); + case 69: + return jjMoveStringLiteralDfa1_0(0x800800000000L); + case 70: + return jjMoveStringLiteralDfa1_0(0x81000000000L); + case 73: + return jjMoveStringLiteralDfa1_0(0x4000000L); + case 77: + return jjMoveStringLiteralDfa1_0(0x2000000000L); + case 78: + return jjMoveStringLiteralDfa1_0(0x40000000L); + case 79: + return jjMoveStringLiteralDfa1_0(0x4000000000L); + case 80: + return jjMoveStringLiteralDfa1_0(0x100200000000L); + case 81: + return jjMoveStringLiteralDfa1_0(0x40000000000L); + case 84: + return jjMoveStringLiteralDfa1_0(0x208080000000L); + case 85: + return jjMoveStringLiteralDfa1_0(0x28000000L); + case 91: + return jjStopAtPos(0, 10); + case 93: + return jjStopAtPos(0, 11); + case 99: + return jjMoveStringLiteralDfa1_0(0x2000000000000L); + case 102: + return jjMoveStringLiteralDfa1_0(0x4000000000000L); + case 110: + return jjMoveStringLiteralDfa1_0(0x1000000000000L); + case 111: + return jjMoveStringLiteralDfa1_0(0x8000000000000L); + case 124: + return jjMoveStringLiteralDfa1_0(0x2000L); + default : + return jjMoveNfa_0(0, 0); + } +} +static private int jjMoveStringLiteralDfa1_0(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0); + return 1; + } + switch(curChar) + { + case 38: + if ((active0 & 0x1000L) != 0L) + return jjStopAtPos(1, 12); + break; + case 61: + if ((active0 & 0x8000L) != 0L) + return jjStopAtPos(1, 15); + else if ((active0 & 0x40000L) != 0L) + return jjStopAtPos(1, 18); + else if ((active0 & 0x80000L) != 0L) + return jjStopAtPos(1, 19); + break; + case 69: + return jjMoveStringLiteralDfa2_0(active0, 0x10000000L); + case 77: + return jjMoveStringLiteralDfa2_0(active0, 0x4000000L); + case 80: + return jjMoveStringLiteralDfa2_0(active0, 0x8000000L); + case 82: + return jjMoveStringLiteralDfa2_0(active0, 0x2000000L); + case 97: + return jjMoveStringLiteralDfa2_0(active0, 0xa000000000L); + case 99: + return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L); + case 101: + return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L); + case 108: + return jjMoveStringLiteralDfa2_0(active0, 0x4001000000000L); + case 110: + return jjMoveStringLiteralDfa2_0(active0, 0x800800000000L); + case 111: + return jjMoveStringLiteralDfa2_0(active0, 0x3010540000000L); + case 112: + return jjMoveStringLiteralDfa2_0(active0, 0x8004000000000L); + case 114: + return jjMoveStringLiteralDfa2_0(active0, 0x380200000000L); + case 115: + return jjMoveStringLiteralDfa2_0(active0, 0x20000000L); + case 117: + return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L); + case 121: + return jjMoveStringLiteralDfa2_0(active0, 0x80000000L); + case 124: + if ((active0 & 0x2000L) != 0L) + return jjStopAtPos(1, 13); + break; + default : + break; + } + return jjStartNfa_0(0, active0); +} +static private int jjMoveStringLiteralDfa2_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(0, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0); + return 2; + } + switch(curChar) + { + case 68: + return jjMoveStringLiteralDfa3_0(active0, 0x8000000L); + case 69: + return jjMoveStringLiteralDfa3_0(active0, 0x2000000L); + case 76: + return jjMoveStringLiteralDfa3_0(active0, 0x10000000L); + case 80: + return jjMoveStringLiteralDfa3_0(active0, 0x4000000L); + case 97: + return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L); + case 100: + if ((active0 & 0x800000000000L) != 0L) + { + jjmatchedKind = 47; + jjmatchedPos = 2; + } + return jjMoveStringLiteralDfa3_0(active0, 0x1000840000000L); + case 101: + return jjMoveStringLiteralDfa3_0(active0, 0x8044020000000L); + case 103: + return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L); + case 105: + return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L); + case 110: + return jjMoveStringLiteralDfa3_0(active0, 0x2010500000000L); + case 111: + return jjMoveStringLiteralDfa3_0(active0, 0x4081200000000L); + case 112: + return jjMoveStringLiteralDfa3_0(active0, 0x80000000L); + case 114: + return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L); + case 116: + return jjMoveStringLiteralDfa3_0(active0, 0x22000000000L); + default : + break; + } + return jjStartNfa_0(1, active0); +} +static private int jjMoveStringLiteralDfa3_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(1, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0); + return 3; + } + switch(curChar) + { + case 65: + return jjMoveStringLiteralDfa4_0(active0, 0xa000000L); + case 69: + return jjMoveStringLiteralDfa4_0(active0, 0x10000000L); + case 79: + return jjMoveStringLiteralDfa4_0(active0, 0x4000000L); + case 99: + return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L); + case 100: + return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L); + case 101: + if ((active0 & 0x40000000L) != 0L) + return jjStopAtPos(3, 30); + else if ((active0 & 0x80000000L) != 0L) + return jjStopAtPos(3, 31); + return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L); + case 103: + return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L); + case 105: + return jjMoveStringLiteralDfa4_0(active0, 0x420000000000L); + case 109: + if ((active0 & 0x80000000000L) != 0L) + return jjStopAtPos(3, 43); + break; + case 110: + return jjMoveStringLiteralDfa4_0(active0, 0x2200c00000000L); + case 111: + return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L); + case 112: + return jjMoveStringLiteralDfa4_0(active0, 0x200000000L); + case 114: + if ((active0 & 0x20000000L) != 0L) + return jjStopAtPos(3, 29); + return jjMoveStringLiteralDfa4_0(active0, 0x8044000000000L); + case 116: + return jjMoveStringLiteralDfa4_0(active0, 0x100000000L); + case 119: + if ((active0 & 0x1000000000L) != 0L) + return jjStopAtPos(3, 36); + return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L); + default : + break; + } + return jjStartNfa_0(2, active0); +} +static private int jjMoveStringLiteralDfa4_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(2, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0); + return 4; + } + switch(curChar) + { + case 82: + return jjMoveStringLiteralDfa5_0(active0, 0x4000000L); + case 84: + return jjMoveStringLiteralDfa5_0(active0, 0x1a000000L); + case 97: + return jjMoveStringLiteralDfa5_0(active0, 0x8004100000000L); + case 101: + return jjMoveStringLiteralDfa5_0(active0, 0x2008600000000L); + case 104: + if ((active0 & 0x2000000000L) != 0L) + return jjStopAtPos(4, 37); + break; + case 105: + return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L); + case 110: + if ((active0 & 0x400000000000L) != 0L) + return jjStopAtPos(4, 46); + break; + case 111: + return jjMoveStringLiteralDfa5_0(active0, 0x20800000000L); + case 114: + return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L); + case 115: + if ((active0 & 0x1000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 48, 203); + else if ((active0 & 0x4000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 50, 203); + return jjMoveStringLiteralDfa5_0(active0, 0x200000000000L); + case 121: + if ((active0 & 0x40000000000L) != 0L) + return jjStopAtPos(4, 42); + break; + default : + break; + } + return jjStartNfa_0(3, active0); +} +static private int jjMoveStringLiteralDfa5_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(3, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(4, active0); + return 5; + } + switch(curChar) + { + case 69: + if ((active0 & 0x2000000L) != 0L) + return jjStopAtPos(5, 25); + else if ((active0 & 0x8000000L) != 0L) + return jjStopAtPos(5, 27); + else if ((active0 & 0x10000000L) != 0L) + return jjStopAtPos(5, 28); + break; + case 84: + if ((active0 & 0x4000000L) != 0L) + return jjStopAtPos(5, 26); + break; + case 97: + return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L); + case 99: + return jjMoveStringLiteralDfa6_0(active0, 0x2000400000000L); + case 100: + return jjMoveStringLiteralDfa6_0(active0, 0x800000000L); + case 105: + return jjMoveStringLiteralDfa6_0(active0, 0x100100000000L); + case 110: + if ((active0 & 0x20000000000L) != 0L) + return jjStopAtPos(5, 41); + break; + case 114: + return jjMoveStringLiteralDfa6_0(active0, 0x200000000L); + case 116: + if ((active0 & 0x8000000000L) != 0L) + return jjStopAtPos(5, 39); + return jjMoveStringLiteralDfa6_0(active0, 0x8014000000000L); + default : + break; + } + return jjStartNfa_0(4, active0); +} +static private int jjMoveStringLiteralDfa6_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(4, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(5, active0); + return 6; + } + switch(curChar) + { + case 99: + return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L); + case 101: + return jjMoveStringLiteralDfa7_0(active0, 0x800000000L); + case 105: + return jjMoveStringLiteralDfa7_0(active0, 0x8014000000000L); + case 110: + if ((active0 & 0x100000000L) != 0L) + return jjStopAtPos(6, 32); + break; + case 116: + return jjMoveStringLiteralDfa7_0(active0, 0x2100600000000L); + default : + break; + } + return jjStartNfa_0(5, active0); +} +static private int jjMoveStringLiteralDfa7_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(5, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(6, active0); + return 7; + } + switch(curChar) + { + case 105: + return jjMoveStringLiteralDfa8_0(active0, 0x2000400000000L); + case 111: + return jjMoveStringLiteralDfa8_0(active0, 0x8014000000000L); + case 115: + if ((active0 & 0x800000000L) != 0L) + return jjStopAtPos(7, 35); + break; + case 116: + return jjMoveStringLiteralDfa8_0(active0, 0x200000000000L); + case 121: + if ((active0 & 0x200000000L) != 0L) + return jjStopAtPos(7, 33); + else if ((active0 & 0x100000000000L) != 0L) + return jjStopAtPos(7, 44); + break; + default : + break; + } + return jjStartNfa_0(6, active0); +} +static private int jjMoveStringLiteralDfa8_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(6, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(7, active0); + return 8; + } + switch(curChar) + { + case 105: + return jjMoveStringLiteralDfa9_0(active0, 0x200000000000L); + case 110: + if ((active0 & 0x4000000000L) != 0L) + return jjStopAtPos(8, 38); + else if ((active0 & 0x10000000000L) != 0L) + return jjStopAtPos(8, 40); + return jjMoveStringLiteralDfa9_0(active0, 0x8000000000000L); + case 111: + return jjMoveStringLiteralDfa9_0(active0, 0x2000400000000L); + default : + break; + } + return jjStartNfa_0(7, active0); +} +static private int jjMoveStringLiteralDfa9_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(7, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(8, active0); + return 9; + } + switch(curChar) + { + case 110: + if ((active0 & 0x400000000L) != 0L) + return jjStopAtPos(9, 34); + return jjMoveStringLiteralDfa10_0(active0, 0x2000000000000L); + case 111: + return jjMoveStringLiteralDfa10_0(active0, 0x200000000000L); + case 115: + if ((active0 & 0x8000000000000L) != 0L) + return jjStartNfaWithStates_0(9, 51, 203); + break; + default : + break; + } + return jjStartNfa_0(8, active0); +} +static private int jjMoveStringLiteralDfa10_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(8, old0); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(9, active0); + return 10; + } + switch(curChar) + { + case 110: + if ((active0 & 0x200000000000L) != 0L) + return jjStopAtPos(10, 45); + break; + case 115: + if ((active0 & 0x2000000000000L) != 0L) + return jjStartNfaWithStates_0(10, 49, 203); + break; + default : + break; + } + return jjStartNfa_0(9, active0); +} +static private int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +static private int jjMoveNfa_0(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 203; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 84: + if ((0x3ff200000000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 107; + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 85; + if ((0x3ff000000000000L & l) != 0L) + { + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + } + break; + case 203: + if ((0x3ff200000000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + if ((0x3ff000000000000L & l) != 0L) + { + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + } + break; + case 0: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(0, 4); + if ((0x3ff000000000000L & l) != 0L) + jjAddStates(5, 6); + if ((0x3fe000000000000L & l) != 0L) + { + if (kind > 52) + kind = 52; + jjCheckNAddStates(7, 9); + } + else if (curChar == 48) + { + if (kind > 52) + kind = 52; + jjCheckNAdd(4); + } + if (curChar == 50) + jjAddStates(10, 11); + else if (curChar == 49) + jjCheckNAddStates(12, 14); + if (curChar == 50) + jjAddStates(15, 17); + break; + case 1: + if ((0x3ff200000000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + break; + case 2: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + break; + case 3: + if (curChar != 48) + break; + if (kind > 52) + kind = 52; + jjCheckNAdd(4); + break; + case 4: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(5); + break; + case 5: + if (curChar == 58) + jjCheckNAddStates(18, 20); + break; + case 6: + if (curChar == 48) + jjCheckNAdd(7); + break; + case 7: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 8; + break; + case 8: + if (curChar == 58) + jjCheckNAddStates(21, 23); + break; + case 9: + if (curChar == 48) + jjCheckNAdd(10); + break; + case 10: + if ((0x3ff000000000000L & l) != 0L && kind > 57) + kind = 57; + break; + case 11: + if ((0x3e000000000000L & l) != 0L) + jjCheckNAdd(10); + break; + case 12: + if ((0x3e000000000000L & l) != 0L) + jjCheckNAdd(7); + break; + case 13: + if ((0x3fe000000000000L & l) == 0L) + break; + if (kind > 52) + kind = 52; + jjCheckNAddStates(7, 9); + break; + case 14: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 52) + kind = 52; + jjCheckNAdd(14); + break; + case 15: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(16); + break; + case 16: + if (curChar == 46) + jjCheckNAddStates(24, 28); + break; + case 17: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(18); + break; + case 18: + if (curChar == 46) + jjCheckNAddStates(29, 33); + break; + case 19: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(20); + break; + case 20: + if (curChar == 46) + jjCheckNAddStates(34, 38); + break; + case 21: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 55) + kind = 55; + jjCheckNAdd(22); + break; + case 22: + if (curChar == 47) + jjAddStates(39, 41); + break; + case 23: + if ((0x3fe000000000000L & l) != 0L && kind > 55) + kind = 55; + break; + case 24: + if ((0x6000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 25; + break; + case 25: + if ((0x3ff000000000000L & l) != 0L && kind > 55) + kind = 55; + break; + case 26: + if (curChar == 51) + jjstateSet[jjnewStateCnt++] = 27; + break; + case 27: + if ((0x7000000000000L & l) != 0L && kind > 55) + kind = 55; + break; + case 28: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(21); + break; + case 29: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 30; + break; + case 30: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(21); + break; + case 31: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 32; + break; + case 32: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(21); + break; + case 33: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 34; + break; + case 34: + if ((0x3f000000000000L & l) == 0L) + break; + if (kind > 55) + kind = 55; + jjCheckNAdd(22); + break; + case 35: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 33; + break; + case 36: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(19); + break; + case 37: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 38; + break; + case 38: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(19); + break; + case 39: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 40; + break; + case 40: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(19); + break; + case 41: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 42; + break; + case 42: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(20); + break; + case 43: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 41; + break; + case 44: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(17); + break; + case 45: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 46; + break; + case 46: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(17); + break; + case 47: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 48; + break; + case 48: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(17); + break; + case 49: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 50; + break; + case 50: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(18); + break; + case 51: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 49; + break; + case 52: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(53); + break; + case 53: + if (curChar == 46) + jjCheckNAddStates(42, 46); + break; + case 54: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(55); + break; + case 55: + if (curChar == 46) + jjCheckNAddStates(47, 51); + break; + case 56: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(57); + break; + case 57: + if (curChar == 46) + jjCheckNAddStates(52, 56); + break; + case 58: + if ((0x3ff000000000000L & l) != 0L && kind > 60) + kind = 60; + break; + case 59: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(58); + break; + case 60: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 61; + break; + case 61: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(58); + break; + case 62: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 63; + break; + case 63: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(58); + break; + case 64: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 65; + break; + case 65: + if ((0x3f000000000000L & l) != 0L && kind > 60) + kind = 60; + break; + case 66: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 64; + break; + case 67: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(56); + break; + case 68: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 69; + break; + case 69: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(56); + break; + case 70: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 71; + break; + case 71: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(56); + break; + case 72: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 73; + break; + case 73: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(57); + break; + case 74: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 72; + break; + case 75: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(54); + break; + case 76: + if (curChar == 49) + jjstateSet[jjnewStateCnt++] = 77; + break; + case 77: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(54); + break; + case 78: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 79; + break; + case 79: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(54); + break; + case 80: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 81; + break; + case 81: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(55); + break; + case 82: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 80; + break; + case 83: + if ((0x3ff000000000000L & l) != 0L) + jjAddStates(5, 6); + break; + case 85: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 86; + break; + case 86: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 87; + break; + case 87: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 88; + break; + case 88: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 89; + break; + case 89: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 90; + break; + case 90: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 91; + break; + case 91: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 92; + break; + case 92: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 93; + break; + case 93: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 94; + break; + case 94: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 95; + break; + case 95: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 96; + break; + case 96: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 97; + break; + case 97: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 98; + break; + case 98: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 99; + break; + case 99: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 54) + kind = 54; + jjstateSet[jjnewStateCnt++] = 100; + break; + case 100: + if (curChar == 47) + jjAddStates(57, 59); + break; + case 101: + if ((0x3fe000000000000L & l) != 0L && kind > 54) + kind = 54; + break; + case 102: + if ((0xe000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 103; + break; + case 103: + if ((0x3ff000000000000L & l) != 0L && kind > 54) + kind = 54; + break; + case 104: + if (curChar == 52) + jjstateSet[jjnewStateCnt++] = 105; + break; + case 105: + if ((0x1ff000000000000L & l) != 0L && kind > 54) + kind = 54; + break; + case 106: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 107; + break; + case 107: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 108; + break; + case 108: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 109; + break; + case 109: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 110; + break; + case 110: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 111; + break; + case 111: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 112; + break; + case 112: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 113; + break; + case 113: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 114; + break; + case 114: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 115; + break; + case 115: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 116; + break; + case 116: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 117; + break; + case 117: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 118; + break; + case 118: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 119; + break; + case 119: + if (curChar == 58) + jjstateSet[jjnewStateCnt++] = 120; + break; + case 120: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 121; + break; + case 121: + if ((0x3ff000000000000L & l) != 0L && kind > 59) + kind = 59; + break; + case 122: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(0, 4); + break; + case 123: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 124; + break; + case 124: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 125; + break; + case 125: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 126; + break; + case 126: + if (curChar == 45) + jjCheckNAddStates(60, 64); + break; + case 127: + if ((0x1aa000000000000L & l) != 0L) + jjCheckNAdd(128); + break; + case 128: + if (curChar == 45) + jjCheckNAddStates(65, 68); + break; + case 129: + case 137: + case 142: + if (curChar == 48) + jjCheckNAdd(130); + break; + case 130: + if ((0x3fe000000000000L & l) != 0L && kind > 56) + kind = 56; + break; + case 131: + case 138: + case 143: + if ((0x6000000000000L & l) != 0L) + jjCheckNAdd(132); + break; + case 132: + if ((0x3ff000000000000L & l) != 0L && kind > 56) + kind = 56; + break; + case 133: + if (curChar == 51) + jjstateSet[jjnewStateCnt++] = 134; + break; + case 134: + if ((0x3000000000000L & l) != 0L && kind > 56) + kind = 56; + break; + case 135: + if ((0x250000000000000L & l) != 0L) + jjCheckNAdd(136); + break; + case 136: + if (curChar == 45) + jjCheckNAddStates(69, 72); + break; + case 139: + if (curChar == 48 && kind > 56) + kind = 56; + break; + case 140: + if (curChar == 51) + jjstateSet[jjnewStateCnt++] = 139; + break; + case 141: + if (curChar == 45) + jjCheckNAddStates(73, 75); + break; + case 144: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 141; + break; + case 145: + if (curChar == 48) + jjCheckNAddStates(76, 78); + break; + case 146: + if (curChar == 49) + jjAddStates(79, 81); + break; + case 147: + if (curChar == 48) + jjCheckNAdd(128); + break; + case 148: + if (curChar == 50) + jjCheckNAdd(128); + break; + case 149: + if (curChar == 49) + jjCheckNAdd(136); + break; + case 150: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 151; + break; + case 151: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 152; + break; + case 152: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 153; + break; + case 153: + if (curChar == 45) + jjCheckNAddStates(82, 86); + break; + case 154: + if ((0x1aa000000000000L & l) != 0L) + jjCheckNAdd(155); + break; + case 155: + if (curChar == 45) + jjCheckNAddStates(87, 90); + break; + case 156: + case 178: + case 183: + if (curChar == 48) + jjCheckNAdd(157); + break; + case 157: + if ((0x3fe000000000000L & l) != 0L) + jjCheckNAdd(158); + break; + case 158: + if (curChar == 44) + jjCheckNAddStates(91, 94); + break; + case 159: + if (curChar == 48) + jjCheckNAdd(160); + break; + case 160: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(161); + break; + case 161: + if (curChar == 58) + jjCheckNAddStates(95, 97); + break; + case 162: + if (curChar == 48) + jjCheckNAdd(163); + break; + case 163: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 164; + break; + case 164: + if (curChar == 58) + jjCheckNAddStates(98, 100); + break; + case 165: + if (curChar == 48) + jjCheckNAdd(166); + break; + case 166: + if ((0x3ff000000000000L & l) != 0L && kind > 58) + kind = 58; + break; + case 167: + if ((0x3e000000000000L & l) != 0L) + jjCheckNAdd(166); + break; + case 168: + if ((0x3e000000000000L & l) != 0L) + jjCheckNAdd(163); + break; + case 169: + if (curChar == 49) + jjCheckNAdd(160); + break; + case 170: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 171; + break; + case 171: + if ((0xf000000000000L & l) != 0L) + jjCheckNAdd(161); + break; + case 172: + case 179: + case 184: + if ((0x6000000000000L & l) != 0L) + jjCheckNAdd(173); + break; + case 173: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(158); + break; + case 174: + if (curChar == 51) + jjstateSet[jjnewStateCnt++] = 175; + break; + case 175: + if ((0x3000000000000L & l) != 0L) + jjCheckNAdd(158); + break; + case 176: + if ((0x250000000000000L & l) != 0L) + jjCheckNAdd(177); + break; + case 177: + if (curChar == 45) + jjCheckNAddStates(101, 104); + break; + case 180: + if (curChar == 48) + jjCheckNAdd(158); + break; + case 181: + if (curChar == 51) + jjstateSet[jjnewStateCnt++] = 180; + break; + case 182: + if (curChar == 45) + jjCheckNAddStates(105, 107); + break; + case 185: + if (curChar == 50) + jjstateSet[jjnewStateCnt++] = 182; + break; + case 186: + if (curChar == 48) + jjCheckNAddStates(108, 110); + break; + case 187: + if (curChar == 49) + jjAddStates(111, 113); + break; + case 188: + if (curChar == 48) + jjCheckNAdd(155); + break; + case 189: + if (curChar == 50) + jjCheckNAdd(155); + break; + case 190: + if (curChar == 49) + jjCheckNAdd(177); + break; + case 191: + if (curChar == 49) + jjCheckNAddStates(12, 14); + break; + case 192: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(15); + break; + case 193: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(52); + break; + case 194: + if (curChar == 50) + jjAddStates(15, 17); + break; + case 195: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(15); + break; + case 196: + if ((0xf000000000000L & l) != 0L) + jjCheckNAdd(5); + break; + case 197: + if ((0x1f000000000000L & l) != 0L) + jjCheckNAdd(52); + break; + case 198: + if (curChar == 50) + jjAddStates(10, 11); + break; + case 199: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 200; + break; + case 200: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(16); + break; + case 201: + if (curChar == 53) + jjstateSet[jjnewStateCnt++] = 202; + break; + case 202: + if ((0x3f000000000000L & l) != 0L) + jjCheckNAdd(53); + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 84: + if ((0x7fffffe80000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + if ((0x7fffffe00000000L & l) != 0L) + { + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + } + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 107; + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 85; + break; + case 203: + if ((0x7fffffe80000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + if ((0x7fffffe00000000L & l) != 0L) + { + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + } + break; + case 0: + if ((0x7fffffe00000000L & l) != 0L) + { + if (kind > 53) + kind = 53; + jjCheckNAddTwoStates(1, 2); + } + if ((0x7e00000000L & l) != 0L) + jjAddStates(5, 6); + break; + case 1: + if ((0x7fffffe80000000L & l) != 0L) + jjCheckNAddTwoStates(1, 2); + break; + case 2: + if ((0x7fffffe00000000L & l) == 0L) + break; + if (kind > 53) + kind = 53; + jjCheckNAdd(2); + break; + case 83: + if ((0x7e00000000L & l) != 0L) + jjAddStates(5, 6); + break; + case 86: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 87; + break; + case 87: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 88; + break; + case 89: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 90; + break; + case 90: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 91; + break; + case 92: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 93; + break; + case 93: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 94; + break; + case 95: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 96; + break; + case 96: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 97; + break; + case 98: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 99; + break; + case 99: + if ((0x7e00000000L & l) == 0L) + break; + if (kind > 54) + kind = 54; + jjstateSet[jjnewStateCnt++] = 100; + break; + case 106: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 107; + break; + case 108: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 109; + break; + case 109: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 110; + break; + case 111: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 112; + break; + case 112: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 113; + break; + case 114: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 115; + break; + case 115: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 116; + break; + case 117: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 118; + break; + case 118: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 119; + break; + case 120: + if ((0x7e00000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 121; + break; + case 121: + if ((0x7e00000000L & l) != 0L && kind > 59) + kind = 59; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 203 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +static final int[] jjnextStates = { + 16, 123, 5, 150, 53, 84, 106, 14, 15, 52, 199, 201, 192, 4, 193, 195, + 196, 197, 6, 7, 12, 9, 10, 11, 17, 44, 45, 47, 51, 19, 36, 37, + 39, 43, 21, 28, 29, 31, 35, 23, 24, 26, 54, 75, 76, 78, 82, 56, + 67, 68, 70, 74, 58, 59, 60, 62, 66, 101, 102, 104, 127, 135, 144, 145, + 146, 129, 130, 131, 133, 137, 130, 138, 140, 142, 130, 143, 127, 135, 144, 147, + 148, 149, 154, 176, 185, 186, 187, 156, 157, 172, 174, 159, 160, 169, 170, 162, + 163, 168, 165, 166, 167, 178, 157, 179, 181, 183, 157, 184, 154, 176, 185, 188, + 189, 190, +}; + +/** Token literal values. */ +public static final String[] jjstrLiteralImages = { +"", null, null, null, null, "\72", "\54", "\73", "\50", "\51", "\133", "\135", +"\46\46", "\174\174", "\41", "\75\75", "\76", "\74", "\76\75", "\74\75", "\52", null, +null, null, null, "\103\122\105\101\124\105", "\111\115\120\117\122\124", +"\125\120\104\101\124\105", "\104\105\114\105\124\105", "\125\163\145\162", "\116\157\144\145", +"\124\171\160\145", "\103\157\156\164\141\151\156", "\120\162\157\160\145\162\164\171", +"\103\157\156\156\145\143\164\151\157\156", "\105\156\144\156\157\144\145\163", "\106\154\157\167", +"\115\141\164\143\150", "\117\160\145\162\141\164\151\157\156", "\124\141\162\147\145\164", +"\103\157\156\144\151\164\151\157\156", "\101\143\164\151\157\156", "\121\165\145\162\171", "\106\162\157\155", +"\120\162\151\157\162\151\164\171", "\124\162\141\156\163\141\143\164\151\157\156", "\102\145\147\151\156", +"\105\156\144", "\156\157\144\145\163", "\143\157\156\156\145\143\164\151\157\156\163", +"\146\154\157\167\163", "\157\160\145\162\141\164\151\157\156\163", null, null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, null, null, null, }; + +/** Lexer state names. */ +public static final String[] lexStateNames = { + "DEFAULT", +}; +static final long[] jjtoToken = { + 0x1ffffffffe1fffe1L, 0x0L, +}; +static final long[] jjtoSkip = { + 0x1eL, 0x0L, +}; +static protected SimpleCharStream input_stream; +static private final int[] jjrounds = new int[203]; +static private final int[] jjstateSet = new int[406]; +static protected char curChar; +/** Constructor. */ +public NEMOparserTokenManager(SimpleCharStream stream){ + if (input_stream != null) + throw new TokenMgrError("ERROR: Second call to constructor of static lexer. You must use ReInit() to initialize the static variables.", TokenMgrError.STATIC_LEXER_ERROR); + input_stream = stream; +} + +/** Constructor. */ +public NEMOparserTokenManager(SimpleCharStream stream, int lexState){ + this(stream); + SwitchTo(lexState); +} + +/** Reinitialise parser. */ +static public void ReInit(SimpleCharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +static private void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 203; i-- > 0;) + jjrounds[i] = 0x80000000; +} + +/** Reinitialise parser. */ +static public void ReInit(SimpleCharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} + +/** Switch to specified lex state. */ +static public void SwitchTo(int lexState) +{ + if (lexState >= 1 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +static protected Token jjFillToken() +{ + final Token t; + final String curTokenImage; + final int beginLine; + final int endLine; + final int beginColumn; + final int endColumn; + String im = jjstrLiteralImages[jjmatchedKind]; + curTokenImage = (im == null) ? input_stream.GetImage() : im; + beginLine = input_stream.getBeginLine(); + beginColumn = input_stream.getBeginColumn(); + endLine = input_stream.getEndLine(); + endColumn = input_stream.getEndColumn(); + t = Token.newToken(jjmatchedKind, curTokenImage); + + t.beginLine = beginLine; + t.endLine = endLine; + t.beginColumn = beginColumn; + t.endColumn = endColumn; + + return t; +} + +static int curLexState = 0; +static int defaultLexState = 0; +static int jjnewStateCnt; +static int jjround; +static int jjmatchedPos; +static int jjmatchedKind; + +/** Get the next Token. */ +public static Token getNextToken() +{ + Token matchedToken; + int curPos = 0; + + EOFLoop : + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + return matchedToken; + } + + try { input_stream.backup(0); + while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L) + curChar = input_stream.BeginToken(); + } + catch (java.io.IOException e1) { continue EOFLoop; } + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_0(); + if (jjmatchedKind != 0x7fffffff) + { + if (jjmatchedPos + 1 < curPos) + input_stream.backup(curPos - jjmatchedPos - 1); + if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + return matchedToken; + } + else + { + continue EOFLoop; + } + } + int error_line = input_stream.getEndLine(); + int error_column = input_stream.getEndColumn(); + String error_after = null; + boolean EOFSeen = false; + try { input_stream.readChar(); input_stream.backup(1); } + catch (java.io.IOException e1) { + EOFSeen = true; + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + if (curChar == '\n' || curChar == '\r') { + error_line++; + error_column = 0; + } + else + error_column++; + } + if (!EOFSeen) { + input_stream.backup(1); + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + } + throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); + } +} + +static private void jjCheckNAdd(int state) +{ + if (jjrounds[state] != jjround) + { + jjstateSet[jjnewStateCnt++] = state; + jjrounds[state] = jjround; + } +} +static private void jjAddStates(int start, int end) +{ + do { + jjstateSet[jjnewStateCnt++] = jjnextStates[start]; + } while (start++ != end); +} +static private void jjCheckNAddTwoStates(int state1, int state2) +{ + jjCheckNAdd(state1); + jjCheckNAdd(state2); +} + +static private void jjCheckNAddStates(int start, int end) +{ + do { + jjCheckNAdd(jjnextStates[start]); + } while (start++ != end); +} + +} 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 index 0000000..d6ed531 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/ParseException.java @@ -0,0 +1,194 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */ +/* JavaCCOptions:KEEP_LINE_COL=null */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; + +/** + * This exception is thrown when parse errors are encountered. + * You can explicitly create objects of this exception type by + * calling the method generateParseException in the generated + * parser. + * + * You can modify this class to customize your error reporting + * mechanisms so long as you retain the public fields. + */ +public class ParseException extends Exception { + + /** + * The version identifier for this Serializable class. + * Increment only if the serialized form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /** + * This constructor is used by the method "generateParseException" + * in the generated parser. Calling this constructor generates + * a new object of this type with the fields "currentToken", + * "expectedTokenSequences", and "tokenImage" set. + */ + public ParseException(Token currentTokenVal, + int[][] expectedTokenSequencesVal, + String[] tokenImageVal + ) + { + super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal)); + currentToken = currentTokenVal; + expectedTokenSequences = expectedTokenSequencesVal; + tokenImage = tokenImageVal; + } + + /** + * The following constructors are for use by you for whatever + * purpose you can think of. Constructing the exception in this + * manner makes the exception behave in the normal way - i.e., as + * documented in the class "Throwable". The fields "errorToken", + * "expectedTokenSequences", and "tokenImage" do not contain + * relevant information. The JavaCC generated code does not use + * these constructors. + */ + + public ParseException() { + super(); + } + + /** Constructor with message. */ + public ParseException(String message) { + super(message); + } + + + /** + * This is the last token that has been consumed successfully. If + * this object has been created due to a parse error, the token + * followng this token will (therefore) be the first error token. + */ + public Token currentToken; + + /** + * Each entry in this array is an array of integers. Each array + * of integers represents a sequence of tokens (by their ordinal + * values) that is expected at this point of the parse. + */ + public int[][] expectedTokenSequences; + + /** + * This is a reference to the "tokenImage" array of the generated + * parser within which the parse error occurred. This array is + * defined in the generated ...Constants interface. + */ + public String[] tokenImage; + + /** + * It uses "currentToken" and "expectedTokenSequences" to generate a parse + * error message and returns it. If this object has been created + * due to a parse error, and you do not catch it (it gets thrown + * from the parser) the correct error message + * gets displayed. + */ + private static String initialise(Token currentToken, + int[][] expectedTokenSequences, + String[] tokenImage) { + String eol = System.getProperty("line.separator", "\n"); + StringBuffer expected = new StringBuffer(); + int maxSize = 0; + for (int i = 0; i < expectedTokenSequences.length; i++) { + if (maxSize < expectedTokenSequences[i].length) { + maxSize = expectedTokenSequences[i].length; + } + for (int j = 0; j < expectedTokenSequences[i].length; j++) { + expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' '); + } + if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { + expected.append("..."); + } + expected.append(eol).append(" "); + } + String retval = "Encountered \""; + Token tok = currentToken.next; + for (int i = 0; i < maxSize; i++) { + if (i != 0) retval += " "; + if (tok.kind == 0) { + retval += tokenImage[0]; + break; + } + retval += " " + tokenImage[tok.kind]; + retval += " \""; + retval += add_escapes(tok.image); + retval += " \""; + tok = tok.next; + } + retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn; + retval += "." + eol; + if (expectedTokenSequences.length == 1) { + retval += "Was expecting:" + eol + " "; + } else { + retval += "Was expecting one of:" + eol + " "; + } + retval += expected.toString(); + return retval; + } + + /** + * The end of line string for this machine. + */ + protected String eol = System.getProperty("line.separator", "\n"); + + /** + * Used to convert raw characters to their escaped version + * when these raw version cannot be used as part of an ASCII + * string literal. + */ + static String add_escapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) + { + case 0 : + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + +} +/* JavaCC - OriginalChecksum=48271970a2f1022a0ad80acb4577d14d (do not edit this line) */ 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 index 0000000..a54f3ee --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/SimpleCharStream.java @@ -0,0 +1,482 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */ +/* JavaCCOptions:STATIC=true,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; + +/** + * An implementation of interface CharStream, where the stream is assumed to + * contain only ASCII characters (without unicode processing). + */ + +public class SimpleCharStream +{ +/** Whether parser is static. */ + public static final boolean staticFlag = true; + static int bufsize; + static int available; + static int tokenBegin; +/** Position in buffer. */ + static public int bufpos = -1; + static protected int bufline[]; + static protected int bufcolumn[]; + + static protected int column = 0; + static protected int line = 1; + + static protected boolean prevCharIsCR = false; + static protected boolean prevCharIsLF = false; + + static protected java.io.Reader inputStream; + + static protected char[] buffer; + static protected int maxNextCharInd = 0; + static protected int inBuf = 0; + static protected int tabSize = 8; + + static protected void setTabSize(int i) { tabSize = i; } + static protected int getTabSize(int i) { return tabSize; } + + + static protected void ExpandBuff(boolean wrapAround) + { + char[] newbuffer = new char[bufsize + 2048]; + int newbufline[] = new int[bufsize + 2048]; + int newbufcolumn[] = new int[bufsize + 2048]; + + try + { + if (wrapAround) + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); + bufcolumn = newbufcolumn; + + maxNextCharInd = (bufpos += (bufsize - tokenBegin)); + } + else + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + bufcolumn = newbufcolumn; + + maxNextCharInd = (bufpos -= tokenBegin); + } + } + catch (Throwable t) + { + throw new Error(t.getMessage()); + } + + + bufsize += 2048; + available = bufsize; + tokenBegin = 0; + } + + static protected void FillBuff() throws java.io.IOException + { + if (maxNextCharInd == available) + { + if (available == bufsize) + { + if (tokenBegin > 2048) + { + bufpos = maxNextCharInd = 0; + available = tokenBegin; + } + else if (tokenBegin < 0) + bufpos = maxNextCharInd = 0; + else + ExpandBuff(false); + } + else if (available > tokenBegin) + available = bufsize; + else if ((tokenBegin - available) < 2048) + ExpandBuff(true); + else + available = tokenBegin; + } + + int i; + try { + if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1) + { + inputStream.close(); + throw new java.io.IOException(); + } + else + maxNextCharInd += i; + return; + } + catch(java.io.IOException e) { + --bufpos; + backup(0); + if (tokenBegin == -1) + tokenBegin = bufpos; + throw e; + } + } + +/** Start. */ + static public char BeginToken() throws java.io.IOException + { + tokenBegin = -1; + char c = readChar(); + tokenBegin = bufpos; + + return c; + } + + static protected void UpdateLineColumn(char c) + { + column++; + + if (prevCharIsLF) + { + prevCharIsLF = false; + line += (column = 1); + } + else if (prevCharIsCR) + { + prevCharIsCR = false; + if (c == '\n') + { + prevCharIsLF = true; + } + else + line += (column = 1); + } + + switch (c) + { + case '\r' : + prevCharIsCR = true; + break; + case '\n' : + prevCharIsLF = true; + break; + case '\t' : + column--; + column += (tabSize - (column % tabSize)); + break; + default : + break; + } + + bufline[bufpos] = line; + bufcolumn[bufpos] = column; + } + +/** Read a character. */ + static public char readChar() throws java.io.IOException + { + if (inBuf > 0) + { + --inBuf; + + if (++bufpos == bufsize) + bufpos = 0; + + return buffer[bufpos]; + } + + if (++bufpos >= maxNextCharInd) + FillBuff(); + + char c = buffer[bufpos]; + + UpdateLineColumn(c); + return c; + } + + @Deprecated + /** + * @deprecated + * @see #getEndColumn + */ + + static public int getColumn() { + return bufcolumn[bufpos]; + } + + @Deprecated + /** + * @deprecated + * @see #getEndLine + */ + + static public int getLine() { + return bufline[bufpos]; + } + + /** Get token end column number. */ + static public int getEndColumn() { + return bufcolumn[bufpos]; + } + + /** Get token end line number. */ + static public int getEndLine() { + return bufline[bufpos]; + } + + /** Get token beginning column number. */ + static public int getBeginColumn() { + return bufcolumn[tokenBegin]; + } + + /** Get token beginning line number. */ + static public int getBeginLine() { + return bufline[tokenBegin]; + } + +/** Backup a number of characters. */ + static public void backup(int amount) { + + inBuf += amount; + if ((bufpos -= amount) < 0) + bufpos += bufsize; + } + + /** Constructor. */ + public SimpleCharStream(java.io.Reader dstream, int startline, + int startcolumn, int buffersize) + { + if (inputStream != null) + throw new Error("\n ERROR: Second call to the constructor of a static SimpleCharStream.\n" + + " You must either use ReInit() or set the JavaCC option STATIC to false\n" + + " during the generation of this class."); + inputStream = dstream; + line = startline; + column = startcolumn - 1; + + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + } + + /** Constructor. */ + public SimpleCharStream(java.io.Reader dstream, int startline, + int startcolumn) + { + this(dstream, startline, startcolumn, 4096); + } + + /** Constructor. */ + public SimpleCharStream(java.io.Reader dstream) + { + this(dstream, 1, 1, 4096); + } + + /** Reinitialise. */ + public void ReInit(java.io.Reader dstream, int startline, + int startcolumn, int buffersize) + { + inputStream = dstream; + line = startline; + column = startcolumn - 1; + + if (buffer == null || buffersize != buffer.length) + { + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + } + prevCharIsLF = prevCharIsCR = false; + tokenBegin = inBuf = maxNextCharInd = 0; + bufpos = -1; + } + + /** Reinitialise. */ + public void ReInit(java.io.Reader dstream, int startline, + int startcolumn) + { + ReInit(dstream, startline, startcolumn, 4096); + } + + /** Reinitialise. */ + public void ReInit(java.io.Reader dstream) + { + ReInit(dstream, 1, 1, 4096); + } + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, + int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException + { + this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); + } + + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream, int startline, + int startcolumn, int buffersize) + { + this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); + } + + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline, + int startcolumn) throws java.io.UnsupportedEncodingException + { + this(dstream, encoding, startline, startcolumn, 4096); + } + + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream, int startline, + int startcolumn) + { + this(dstream, startline, startcolumn, 4096); + } + + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException + { + this(dstream, encoding, 1, 1, 4096); + } + + /** Constructor. */ + public SimpleCharStream(java.io.InputStream dstream) + { + this(dstream, 1, 1, 4096); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream, String encoding, int startline, + int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException + { + ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream, int startline, + int startcolumn, int buffersize) + { + ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException + { + ReInit(dstream, encoding, 1, 1, 4096); + } + + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream) + { + ReInit(dstream, 1, 1, 4096); + } + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream, String encoding, int startline, + int startcolumn) throws java.io.UnsupportedEncodingException + { + ReInit(dstream, encoding, startline, startcolumn, 4096); + } + /** Reinitialise. */ + public void ReInit(java.io.InputStream dstream, int startline, + int startcolumn) + { + ReInit(dstream, startline, startcolumn, 4096); + } + /** Get token literal value. */ + static public String GetImage() + { + if (bufpos >= tokenBegin) + return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); + else + return new String(buffer, tokenBegin, bufsize - tokenBegin) + + new String(buffer, 0, bufpos + 1); + } + + /** Get the suffix. */ + static public char[] GetSuffix(int len) + { + char[] ret = new char[len]; + + if ((bufpos + 1) >= len) + System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); + else + { + System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, + len - bufpos - 1); + System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); + } + + return ret; + } + + /** Reset buffer when finished. */ + static public void Done() + { + buffer = null; + bufline = null; + bufcolumn = null; + } + + /** + * Method to adjust line and column numbers for the start of a token. + */ + static public void adjustBeginLineColumn(int newLine, int newCol) + { + int start = tokenBegin; + int len; + + if (bufpos >= tokenBegin) + { + len = bufpos - tokenBegin + inBuf + 1; + } + else + { + len = bufsize - tokenBegin + bufpos + 1 + inBuf; + } + + int i = 0, j = 0, k = 0; + int nextColDiff = 0, columnDiff = 0; + + while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) + { + bufline[j] = newLine; + nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; + bufcolumn[j] = newCol + columnDiff; + columnDiff = nextColDiff; + i++; + } + + if (i < len) + { + bufline[j] = newLine++; + bufcolumn[j] = newCol + columnDiff; + + while (i++ < len) + { + if (bufline[j = start % bufsize] != bufline[++start % bufsize]) + bufline[j] = newLine++; + else + bufline[j] = newLine; + } + } + + line = bufline[j]; + column = bufcolumn[j]; + } + +} +/* JavaCC - OriginalChecksum=3d5e5b74f810fa0f4ef70d18e9bc8601 (do not edit this line) */ 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 index 0000000..e52c95d --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/Token.java @@ -0,0 +1,138 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ +/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; + +/** + * Describes the input token stream. + */ + +public class Token implements java.io.Serializable { + + /** + * The version identifier for this Serializable class. + * Increment only if the serialized form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /** + * An integer that describes the kind of this token. This numbering + * system is determined by JavaCCParser, and a table of these numbers is + * stored in the file ...Constants.java. + */ + public int kind; + + /** The line number of the first character of this Token. */ + public int beginLine; + /** The column number of the first character of this Token. */ + public int beginColumn; + /** The line number of the last character of this Token. */ + public int endLine; + /** The column number of the last character of this Token. */ + public int endColumn; + + /** + * The string image of the token. + */ + public String image; + + /** + * A reference to the next regular (non-special) token from the input + * stream. If this is the last token from the input stream, or if the + * token manager has not read tokens beyond this one, this field is + * set to null. This is true only if this token is also a regular + * token. Otherwise, see below for a description of the contents of + * this field. + */ + public Token next; + + /** + * This field is used to access special tokens that occur prior to this + * token, but after the immediately preceding regular (non-special) token. + * If there are no such special tokens, this field is set to null. + * When there are more than one such special token, this field refers + * to the last of these special tokens, which in turn refers to the next + * previous special token through its specialToken field, and so on + * until the first special token (whose specialToken field is null). + * The next fields of special tokens refer to other special tokens that + * immediately follow it (without an intervening regular token). If there + * is no such token, this field is null. + */ + public Token specialToken; + + /** + * An optional attribute value of the Token. + * Tokens which are not used as syntactic sugar will often contain + * meaningful values that will be used later on by the compiler or + * interpreter. This attribute value is often different from the image. + * Any subclass of Token that actually wants to return a non-null value can + * override this method as appropriate. + */ + public Object getValue() { + return null; + } + + /** + * No-argument constructor + */ + public Token() {} + + /** + * Constructs a new token for the specified Image. + */ + public Token(int kind) + { + this(kind, null); + } + + /** + * Constructs a new token for the specified Image and Kind. + */ + public Token(int kind, String image) + { + this.kind = kind; + this.image = image; + } + + /** + * Returns the image. + */ + public String toString() + { + return image; + } + + /** + * Returns a new Token object, by default. However, if you want, you + * can create and return subclass objects based on the value of ofKind. + * Simply add the cases to the switch for all those special cases. + * For example, if you have a subclass of Token called IDToken that + * you want to create if ofKind is ID, simply add something like : + * + * case MyParserConstants.ID : return new IDToken(ofKind, image); + * + * to the following switch statement. Then you can cast matchedToken + * variable to the appropriate type and use sit in your lexical actions. + */ + public static Token newToken(int ofKind, String image) + { + switch(ofKind) + { + default : return new Token(ofKind, image); + } + } + + public static Token newToken(int ofKind) + { + return newToken(ofKind, null); + } + +} +/* JavaCC - OriginalChecksum=dc8b83e991d3e41cf255b23a7a4d3774 (do not edit this line) */ 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 index 0000000..8ae30d9 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/NEMOParse/TokenMgrError.java @@ -0,0 +1,154 @@ +/* + * 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 + */ +/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ +/* JavaCCOptions: */ +package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse; + +/** Token Manager Error. */ +public class TokenMgrError extends Error +{ + + /** + * The version identifier for this Serializable class. + * Increment only if the serialized form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /* + * Ordinals for various reasons why an Error of this type can be thrown. + */ + + /** + * Lexical error occurred. + */ + static final int LEXICAL_ERROR = 0; + + /** + * An attempt was made to create a second instance of a static token manager. + */ + static final int STATIC_LEXER_ERROR = 1; + + /** + * Tried to change to an invalid lexical state. + */ + static final int INVALID_LEXICAL_STATE = 2; + + /** + * Detected (and bailed out of) an infinite loop in the token manager. + */ + static final int LOOP_DETECTED = 3; + + /** + * Indicates the reason why the exception is thrown. It will have + * one of the above 4 values. + */ + int errorCode; + + /** + * Replaces unprintable characters by their escaped (or unicode escaped) + * equivalents in the given string + */ + protected static final String addEscapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) + { + case 0 : + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + + /** + * Returns a detailed message for the Error when it is thrown by the + * token manager to indicate a lexical error. + * Parameters : + * EOFSeen : indicates if EOF caused the lexical error + * curLexState : lexical state in which this error occurred + * errorLine : line number when the error occurred + * errorColumn : column number when the error occurred + * errorAfter : prefix that was seen before this error occurred + * curchar : the offending character + * Note: You can customize the lexical error message by modifying this method. + */ + protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { + return("Lexical error at line " + + errorLine + ", column " + + errorColumn + ". Encountered: " + + (EOFSeen ? " " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + + "after : \"" + addEscapes(errorAfter) + "\""); + } + + /** + * You can also modify the body of this method to customize your error messages. + * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not + * of end-users concern, so you can return something like : + * + * "Internal Error : Please file a bug report .... " + * + * from this method for such cases in the release version of your parser. + */ + public String getMessage() { + return super.getMessage(); + } + + /* + * Constructors of various flavors follow. + */ + + /** No arg constructor. */ + public TokenMgrError() { + } + + /** Constructor with message and reason. */ + public TokenMgrError(String message, int reason) { + super(message); + errorCode = reason; + } + + /** Full Constructor. */ + public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { + this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); + } +} +/* JavaCC - OriginalChecksum=ba2e47c01c2fe7ef735d03301bf06ea2 (do not edit this line) */ 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 index 0000000..2eb3b29 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/Query.java @@ -0,0 +1,783 @@ +/* + * 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 org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; +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.object.rev151010.connection.instance.EndNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action; + +import java.util.List; + + +/** + * Created by z00293636 on 2015/11/24. + */ +public class Query { + private TenantManage tenantManage; + + public Query(TenantManage tenantManage){ + this.tenantManage = tenantManage; + } + + public String query(UserId userId,String item, String target){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + + if (target!=null){ + Boolean targetExist = false; + if (user!=null){ + if (user.getObjects()!=null){ + if (user.getObjects().getNode()!=null){ + List nodeList = user.getObjects().getNode(); + for (Node node : nodeList){ + if (node.getNodeName().getValue().equals(target)){ + targetExist = true; + errorInfo = queryNode(user,item, node); + } + } + } + if (user.getObjects().getConnection()!=null){ + List connectionList = user.getObjects().getConnection(); + for (Connection connection : connectionList){ + if (connection.getConnectionName().getValue().equals(target)){ + targetExist = true; + errorInfo = queryConnection(user,item,connection); + } + } + } + if (user.getObjects().getFlow()!=null){ + List flowList = user.getObjects().getFlow(); + for (Flow flow : flowList){ + if (flow.getFlowName().getValue().equals(target)){ + targetExist = true; + errorInfo = queryFlow(item,flow); + } + } + } + } + if (user.getOperations()!=null){ + if (user.getOperations().getOperation()!=null){ + List operationList = user.getOperations().getOperation(); + for (Operation operation : operationList){ + if (operation.getOperationName().getValue().equals(target)){ + targetExist = true; + errorInfo = queryOperation(user,item,operation); + } + } + } + } + } + if (!targetExist){ + return "The target " + target + " is not exist in user vn space."; + } + } + else { + if (item.equals(NEMOConstants.AllNodes)){ + errorInfo = queryAllNode(user); + } + else if (item.equals(NEMOConstants.AllConnections)){ + errorInfo = queryAllConnection(user); + } + else if (item.equals(NEMOConstants.AllFlows)){ + errorInfo = queryAllFlow(user); + } + else if (item.equals(NEMOConstants.AllOperations)){ + errorInfo = queryAllOperation(user); + } + else { + return "The item is not supported."; + } + } + return errorInfo; + } + + private String queryNode(User user,String item, Node node){ + String errorInfo = NEMOConstants.Results+":"; + if (item.equals(NEMOConstants.Type)){ + errorInfo += node.getNodeType().getValue(); + } + else if (item.equals(NEMOConstants.SubNodes)||item.equals(NEMOConstants.Contain)){ + List subNodeList = node.getSubNode(); + if (subNodeList != null){ + for (SubNode subNode : subNodeList){ + for (Node node1:user.getObjects().getNode()){ + if (subNode.getNodeId().equals(node1.getNodeId())){ + errorInfo += node1.getNodeName().getValue() + ","; + } + } + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + } + else if (item.equals(NEMOConstants.Property)){ + List properties = node.getProperty(); + if (properties!=null){ + for (Property property : properties){ + errorInfo += property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + else { + List properties = node.getProperty(); + Boolean itemExist = false; + if (properties != null){ + for (Property property : properties){ + if (property.getPropertyName().getValue().equals(item)){ + itemExist = true; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + if (!itemExist){ + return "The item " + item + " is not included in "+node.getNodeName().getValue()+";"; + } + } + return errorInfo; + } + + private String queryConnection( User user, String item, Connection connection){ + String errorInfo =NEMOConstants.Results+":"; + if (item.equals(NEMOConstants.Type)){ + errorInfo += connection.getConnectionType().getValue(); + } + else if (item.equals(NEMOConstants.Endnodes)){ + List endNodeList = connection.getEndNode(); + if (endNodeList != null){ + for (EndNode endNode : endNodeList){ + for (Node node : user.getObjects().getNode()){ + if (endNode.getNodeId().equals(node.getNodeId())){ + errorInfo+=node.getNodeName().getValue()+","; + } + } + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + } + else if (item.equals(NEMOConstants.Property)){ + List properties = connection.getProperty(); + if (properties!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){ + errorInfo += property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + else { + List properties = connection.getProperty(); + Boolean itemExist = false; + if (properties!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){ + if (property.getPropertyName().getValue().equals(item)){ + itemExist = true; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + if (!itemExist){ + return "The item " + item + " is not included in "+connection.getConnectionName().getValue()+";"; + } + } + return errorInfo; + } + + private String queryFlow( String item, Flow flow){ + String errorInfo =NEMOConstants.Results+":"; + if (item.equals(NEMOConstants.Match)){ + List matchItems = flow.getMatchItem(); + for (MatchItem matchItem: matchItems){ + errorInfo += matchItem.getMatchItemName().getValue()+":"; + Long intValue = matchItem.getMatchItemValue().getIntValue(); + String stringValue = matchItem.getMatchItemValue().getStringValue(); + 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(); + if (intValue!=null){ + errorInfo +=intValue; + } + if (stringValue!=null){ + errorInfo += stringValue; + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + else if (item.equals(NEMOConstants.Property)){ + List properties = flow.getProperty(); + if (properties!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){ + errorInfo += property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + else { + List properties = flow.getProperty(); + Boolean itemExist = false; + if (properties!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){ + if (property.getPropertyName().getValue().equals(item)){ + itemExist = true; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + } + } + } + if (!itemExist){ + return "The item " + item + " is not included in "+flow.getFlowName().getValue()+";"; + } + } + return errorInfo; + } + + private String queryOperation(User user, String item, Operation operation){ + String errorInfo =NEMOConstants.Results+":"; + if (item.equals(NEMOConstants.Priority)){ + errorInfo += operation.getPriority(); + } + else if (item.equals(NEMOConstants.Target)){ + if (user.getObjects().getNode()!=null){ + for (Node node:user.getObjects().getNode()){ + if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){ + errorInfo += node.getNodeName().getValue(); + } + } + } + if (user.getObjects().getConnection()!=null){ + for (Connection connection : user.getObjects().getConnection()){ + if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){ + errorInfo += connection.getConnectionName().getValue(); + } + } + } + if (user.getObjects().getFlow()!=null){ + for (Flow flow : user.getObjects().getFlow()){ + if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){ + errorInfo += flow.getFlowName().getValue(); + } + } + } + } + else if (item.equals(NEMOConstants.Condition)){ + List conditionSegments = operation.getConditionSegment(); + if (conditionSegments!=null){ + for (ConditionSegment conditionSegment : conditionSegments){ + if (conditionSegment.getPrecursorRelationOperator()!=null){ + int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue(); + switch (preRelation) { + case 0: + break; + case 1: + errorInfo += NEMOConstants.and+"("; + break; + case 2: + errorInfo += NEMOConstants.or+"("; + break; + case 3: + errorInfo += NEMOConstants.not+"("; + break; + } + } + else { + errorInfo += "("; + } + errorInfo += conditionSegment.getConditionParameterName().getValue(); + int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue(); + switch (matchPattern){ + case 0: + errorInfo += NEMOConstants.less_than; + break; + case 1: + errorInfo += NEMOConstants.not_less_than; + break; + case 2: + errorInfo += NEMOConstants.equal; + break; + case 3: + errorInfo += NEMOConstants.not_equal; + break; + case 4: + errorInfo += NEMOConstants.greater_than; + break; + case 5: + errorInfo += NEMOConstants.not_greater_than; + break; + case 6: + errorInfo += NEMOConstants.between; + break; + } + Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue(); + String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue(); + //todo rangevalue + if (intValue!=null){ + errorInfo +=intValue; + } + if (stringValue!=null){ + errorInfo+=stringValue; + } + errorInfo += ")"; + } + } + } + else if (item.equals(NEMOConstants.Action)) { + List actions = operation.getAction(); + if (actions!=null){ + for (Action action : actions) { + errorInfo += action.getActionName().getValue() + ":"; + List intValues = action.getParameterValues().getIntValue(); + List stringValues = action.getParameterValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue(); + if (intValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue != null) { + errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]"; + } + } + } + } + else { + List actions = operation.getAction(); + Boolean itemExist = false; + if (actions!=null){ + for (Action action : actions){ + if (action.getActionName().getValue().equals(item)){ + itemExist = true; + errorInfo += action.getActionName().getValue() + ":"; + List intValues = action.getParameterValues().getIntValue(); + List stringValues = action.getParameterValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue(); + if (intValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue != null) { + errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]"; + } + } + } + } + if (!itemExist){ + return "The item " + item + " is not included in the target " +operation.getOperationName().getValue(); + } + } + return errorInfo; + } + + private String queryAllNode(User user){ + String errorInfo =NEMOConstants.Results+":"; + if (user.getObjects()!=null){ + if (user.getObjects().getNode()!=null){ + List nodeList = user.getObjects().getNode(); + for (Node node : nodeList){ + errorInfo += NEMOConstants.Id +":" + node.getNodeId().getValue()+" "; + errorInfo += NEMOConstants.Name +":" + node.getNodeName().getValue()+" "; + errorInfo += NEMOConstants.Type +":" + node.getNodeType().getValue()+" "; + if (node.getSubNode()!=null){ + errorInfo+=NEMOConstants.SubNodes+":"; + List subNodeList = node.getSubNode(); + for (SubNode subNode :subNodeList){ + for (Node node1:nodeList){ + if (node1.getNodeId().equals(subNode.getNodeId())){ + errorInfo+=node1.getNodeName().getValue()+","; + } + } + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (node.getProperty()!=null){ + errorInfo += NEMOConstants.Property+":"; + for (Property property:node.getProperty()){ + errorInfo+=property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + errorInfo +=" "; + } + } + } + } + } + return errorInfo; + } + + private String queryAllConnection(User user){ + String errorInfo =NEMOConstants.Results+":"; + if (user.getObjects()!=null){ + if (user.getObjects().getConnection()!=null){ + List connectionList = user.getObjects().getConnection(); + for (Connection connection : connectionList){ + errorInfo += NEMOConstants.Id +":" +connection.getConnectionId().getValue()+ " "; + errorInfo+= NEMOConstants.Name +":" + connection.getConnectionName().getValue()+" "; + errorInfo += NEMOConstants.Type +":"+connection.getConnectionType().getValue()+" "; + if (connection.getEndNode()!=null){ + errorInfo += NEMOConstants.Endnodes +":"; + List endNodeList = connection.getEndNode(); + for (EndNode endNode:endNodeList){ + for (Node node:user.getObjects().getNode()){ + if (endNode.getNodeId().equals(node.getNodeId())){ + errorInfo+=node.getNodeName().getValue()+","; + } + } + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1) + " "; + } + if (connection.getProperty()!=null){ + errorInfo += NEMOConstants.Property +":"; + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property:connection.getProperty()){ + errorInfo+=property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + errorInfo +=" "; + } + } + } + } + } + return errorInfo; + } + + private String queryAllFlow(User user){ + String errorInfo =NEMOConstants.Results+":"; + if (user.getObjects()!=null){ + if (user.getObjects().getFlow()!=null){ + List flowList = user.getObjects().getFlow(); + for (Flow flow : flowList){ + errorInfo += NEMOConstants.Id +":" + flow.getFlowId().getValue()+" "; + errorInfo += NEMOConstants.Name +":" +flow.getFlowName().getValue()+" "; + if (flow.getMatchItem()!=null){ + errorInfo += NEMOConstants.Match+": "; + List matchItemList = flow.getMatchItem(); + for (MatchItem matchItem : matchItemList){ + errorInfo += matchItem.getMatchItemName().getValue()+";"; + Long intValues = matchItem.getMatchItemValue().getIntValue(); + String stringValues = matchItem.getMatchItemValue().getStringValue(); + 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(); + if (intValues!=null){ + errorInfo+=intValues; + } + if (stringValues!=null){ + errorInfo += stringValues; + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMin()+"]"; + } + } + } + if (flow.getProperty()!=null){ + errorInfo += NEMOConstants.Property+": "; + List properties = flow.getProperty(); + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property :properties){ + errorInfo+=property.getPropertyName().getValue()+":"; + List intValues = property.getPropertyValues().getIntValue(); + List stringValues = property.getPropertyValues().getStringValue(); + RangeValue rangeValue = property.getPropertyValues().getRangeValue(); + if (intValues!=null){ + for (IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]"; + } + errorInfo +=" "; + } + } + } + } + } + return errorInfo; + } + + private String queryAllOperation(User user){ + String errorInfo =NEMOConstants.Results+":"; + if (user.getOperations()!=null){ + if (user.getOperations().getOperation()!=null){ + List operationList = user.getOperations().getOperation(); + for (Operation operation : operationList){ + errorInfo += NEMOConstants.Id+":" + operation.getOperationId().getValue() +" "; + errorInfo += NEMOConstants.Name+":" + operation.getOperationName().getValue()+" "; + errorInfo += NEMOConstants.Priority+":" + operation.getPriority()+" "; + errorInfo += NEMOConstants.Target+":"; + if (user.getObjects().getNode()!=null){ + for (Node node:user.getObjects().getNode()){ + if (node.getNodeId().equals(operation.getTargetObject())){ + errorInfo+=node.getNodeName().getValue()+" "; + } + } + } + if (user.getObjects().getConnection()!=null){ + for (Connection connection:user.getObjects().getConnection()){ + if (connection.getConnectionId().equals(operation.getTargetObject())){ + errorInfo+=connection.getConnectionName().getValue()+" "; + } + } + } + if (user.getObjects().getFlow()!=null){ + for (Flow flow:user.getObjects().getFlow()){ + if (flow.getFlowId().equals(operation.getTargetObject())){ + errorInfo += flow.getFlowName().getValue()+" "; + } + } + } + if (operation.getConditionSegment()!=null){ + errorInfo += NEMOConstants.Condition+": "; + List conditionSegmentList = operation.getConditionSegment(); + for (ConditionSegment conditionSegment : conditionSegmentList){ + int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue(); + switch (preRelation) { + case 0: + break; + case 1: + errorInfo += NEMOConstants.and+"("; + break; + case 2: + errorInfo += NEMOConstants.or+"("; + break; + case 3: + errorInfo += NEMOConstants.not+"("; + break; + } + errorInfo += conditionSegment.getConditionParameterName().getValue(); + int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue(); + switch (matchPattern){ + case 0: + errorInfo += NEMOConstants.less_than; + break; + case 1: + errorInfo += NEMOConstants.not_less_than; + break; + case 2: + errorInfo += NEMOConstants.equal; + break; + case 3: + errorInfo += NEMOConstants.not_equal; + break; + case 4: + errorInfo += NEMOConstants.greater_than; + break; + case 5: + errorInfo += NEMOConstants.not_greater_than; + break; + case 6: + errorInfo += NEMOConstants.between; + break; + } + Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue(); + String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue(); + //todo rangevalue + if (intValue!=null){ + errorInfo +=intValue; + } + if (stringValue!=null){ + errorInfo+=stringValue; + } + } + + } + if (operation.getAction()!=null){ + errorInfo += NEMOConstants.Action+": "; + List actionList = operation.getAction(); + for (Action action : actionList){ + errorInfo += action.getActionName().getValue() +":"; + List intValues = action.getParameterValues().getIntValue(); + List stringValues = action.getParameterValues().getStringValue(); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue(); + if (intValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){ + errorInfo += intValue.getValue()+","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (stringValues!=null){ + for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){ + errorInfo += stringValue.getValue() +","; + } + errorInfo = errorInfo.substring(0,errorInfo.length()-1); + } + if (rangeValue!=null){ + errorInfo += "["+rangeValue.getMin()+","+ rangeValue.getMax()+"]"; + } + errorInfo +=")"; + } + } + } + } + } + return errorInfo; + } +} 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 index 0000000..02fa513 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteConnectionLang.java @@ -0,0 +1,58 @@ +/* + * 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.deleteintentlang; + +import org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteConnection; +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; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; + +import java.util.List; + +/** + * Created by z00293636 on 2015/11/6. + */ +public class DeleteConnectionLang { + private TenantManage tenantManage; + private DeleteConnection deleteConnection; + + public DeleteConnectionLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + deleteConnection = new DeleteConnection(dataBroker, tenantManage); + } + + public String DeleteConnectionHandling(UserId userId, String connectionname){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user =tenantManage.getUser(); + if (user.getObjects()!=null){ + if (!user.getObjects().getConnection().isEmpty()){ + List connectionList = user.getObjects().getConnection(); + Boolean connExit = false; + for (Connection connection1 : connectionList){ + if (connection1.getConnectionName().getValue().equals(connectionname)){ + connExit = true; + errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection1.getConnectionId()); + } + } + if (!connExit){ + errorInfo = "The connection "+connectionname + " is not exist in this user vn space."; + } + } + else { + errorInfo = "The connection "+connectionname + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The connection "+connectionname + " is not exist in this user vn space."; + } + return errorInfo; + } +} 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 index 0000000..a32d7bf --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteFlowLang.java @@ -0,0 +1,59 @@ +/* + * 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.deleteintentlang; + +import org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteFlow; +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.Flow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; + +import java.util.List; + +/** + * Created by z00293636 on 2015/11/6. + */ +public class DeleteFlowLang { + private TenantManage tenantManage; + private DeleteFlow deleteFlow; + + public DeleteFlowLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + deleteFlow = new DeleteFlow(dataBroker, tenantManage); + } + + public String DeleteFlowHandling(UserId userId, String flowname){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + if (user.getObjects()!=null){ + if (!user.getObjects().getFlow().isEmpty()){ + List flowList = user.getObjects().getFlow(); + Boolean flowExist = false; + for (Flow flow : flowList){ + if (flow.getFlowName().getValue().equals(flowname)){ + flowExist = true; + errorInfo = deleteFlow.DeleteFlowHandling(userId,flow.getFlowId()); + } + } + if (!flowExist){ + errorInfo = "The flow "+flowname + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The flow "+flowname + " is not exist in this user vn space."; + } + } + else + { + errorInfo = "The flow "+flowname + " is not exist in this user vn space."; + } + return errorInfo; + } +} 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 index 0000000..cab3e14 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteNodeLang.java @@ -0,0 +1,59 @@ +/* + * 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.deleteintentlang; + +import org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteNode; +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.Node; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; + +import java.util.List; + +/** + * Created by z00293636 on 2015/11/6. + */ +public class DeleteNodeLang { + private TenantManage tenantManage; + private DeleteNode deleteNode; + + public DeleteNodeLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + deleteNode = new DeleteNode(dataBroker,tenantManage); + } + + public String DeleteNodeHandling(UserId userId, String nodename){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user =tenantManage.getUser(); + if (user.getObjects()!=null){ + if (!user.getObjects().getNode().isEmpty()){ + List nodeList = user.getObjects().getNode(); + Boolean nodeExist = false; + for (Node node1 : nodeList){ + if (node1.getNodeName().getValue().equals(nodename)){ + nodeExist = true; + errorInfo = deleteNode.DeleNodeHandling(userId,node1.getNodeId()); + } + } + if (!nodeExist){ + errorInfo = "The node "+nodename + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The node "+nodename + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The node "+nodename + " is not exist in this user vn space."; + } + + return errorInfo; + } +} 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 index 0000000..028c1c5 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/deleteintentlang/DeleteOperationLang.java @@ -0,0 +1,58 @@ +/* + * 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.deleteintentlang; + +import org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteOperation; +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.operations.Operation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; + +import java.util.List; + +/** + * Created by z00293636 on 2015/11/6. + */ +public class DeleteOperationLang { + private TenantManage tenantManage; + private DeleteOperation deleteOperation; + + public DeleteOperationLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + deleteOperation = new DeleteOperation(dataBroker,tenantManage); + } + + public String DeleteOperationHandling(UserId userId, String operationname){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + if (user.getOperations()!=null){ + if (!user.getOperations().getOperation().isEmpty()){ + List operationList = user.getOperations().getOperation(); + Boolean operationExist = false; + for (Operation operation : operationList){ + if (operation.getOperationName().getValue().equals(operationname)){ + operationExist = true; + errorInfo = deleteOperation.DeleteOperationhandling(userId,operation.getOperationId()); + } + } + if (!operationExist) { + errorInfo = "The operation "+operationname + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The operation "+operationname + " is not exist in this user vn space."; + } + } + else{ + errorInfo = "The operation "+operationname + " is not exist in this user vn space."; + } + return errorInfo; + } +} 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 index 0000000..91609f4 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateConnectionLang.java @@ -0,0 +1,209 @@ +/* + * 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.updateintentlang; + +import org.opendaylight.nemo.user.tenantmanager.TenantManage; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; +import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateConnection; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*; +import org.opendaylight.controller.md.sal.binding.api.DataBroker; + + +import java.util.*; + +/** + * Created by z00293636 on 2015/11/5. + */ +public class UpdateConnectionLang { + private TenantManage tenantManage; + private Connection connection; + private UpdateConnection updateConnection; + + public UpdateConnectionLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + updateConnection = new UpdateConnection(dataBroker,tenantManage); + } + + public String ConnectionHandling(UserId userId,String connectionname, String connectiontype, List endnodes, LinkedHashMap> propertyList){ + String errorInfo = null; + if (!propertyList.isEmpty()){ + errorInfo = checkProperty(propertyList); + } + if (errorInfo==null){ + errorInfo = createConnection(userId,connectionname,connectiontype,endnodes,propertyList); + if (errorInfo == null){ + return updateConnection.ConnectionHandling(userId,this.connection); + } + } + return errorInfo; + } + + private String checkProperty(LinkedHashMap> propertyList){ + String errorInfo = null; + for (String propertyName : propertyList.keySet()){ + LinkedHashMap propertyValues = propertyList.get(propertyName); + Iterator iterator = propertyValues.values().iterator(); + String valueType = iterator.next(); + + while (iterator.hasNext()){ + if (valueType.equals(NEMOConstants.range)) { + errorInfo = "The property should just has one range value."; + return errorInfo; + } + else if (valueType.equals(NEMOConstants.string)){ + if (!iterator.next().equals(NEMOConstants.string)){ + return "The property " + propertyValues.get(iterator.next()) + " should be string."; + } + } + else if (valueType.equals(NEMOConstants.integer)){ + if (!iterator.next().equals(NEMOConstants.integer)){ + return "The property " + propertyValues.get(iterator.next()) + " should be int."; + } + } + } + } + return errorInfo; + } + + private String createConnection(UserId userId, String connectionname, String connectiontype, List endnodes, LinkedHashMap> propertyList){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + List connectionList = new ArrayList(); + List nodeList = new ArrayList(); + Boolean ConnExist = false; + + if (user.getObjects()!=null){ + if (user.getObjects().getNode()!=null){ + nodeList = user.getObjects().getNode(); + } + if (user.getObjects().getConnection()!=null){ + connectionList = user.getObjects().getConnection(); + } + } + ConnectionBuilder connectionBuilder = new ConnectionBuilder(); + if (!connectionList.isEmpty()){ + for (Connection connection1:connectionList) { + if (connection1.getConnectionName().getValue().equals(connectionname)){ + ConnExist = true; + connectionBuilder.setKey(connection1.getKey()); + connectionBuilder.setConnectionId(connection1.getConnectionId()); + } + } + } + if (!ConnExist){ + ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString()); + connectionBuilder.setKey(new ConnectionKey(connectionId)); + connectionBuilder.setConnectionId(connectionId); + } + + connectionBuilder.setConnectionName(new ConnectionName(connectionname)); + connectionBuilder.setConnectionType(new ConnectionType(connectiontype)); + + if (!endnodes.isEmpty() && errorInfo==null){ + List endNodeList = new ArrayList(); + + if (nodeList.isEmpty()){ + errorInfo = "The EndNode is not exist in the user vn space."; + return errorInfo; + } + else{ + int order = 0; + for (String endnode : endnodes){ + Boolean endnodeexist = false; + for (Node node : nodeList) { + if (node.getNodeName().getValue().equals(endnode)){ + endnodeexist = true; + EndNodeBuilder endNodeBuilder = new EndNodeBuilder(); + endNodeBuilder.setKey(new EndNodeKey(node.getNodeId())); + endNodeBuilder.setNodeId(node.getNodeId()); + endNodeBuilder.setOrder((long) order); + endNodeList.add(endNodeBuilder.build()); + } + } + if (!endnodeexist) { + errorInfo = "The EndNode is not exist in the user vn space."; + return errorInfo; + } + order ++; + } + } + connectionBuilder.setEndNode(endNodeList); + } + + if (!propertyList.isEmpty() && errorInfo==null){ + PropertyBuilder propertyBuilder = new PropertyBuilder(); + List connectionproperty = new ArrayList(); + for (String propertyname : propertyList.keySet()){ + propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname))); + propertyBuilder.setPropertyName(new PropertyName(propertyname)); + + PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder(); + LinkedHashMap valuetype = propertyList.get(propertyname); + List intValueList = new ArrayList(); + List stringValueList = new ArrayList(); + RangeValue Rangevalue = null; + int order = 0; + for (String value : valuetype.keySet()){ + if (valuetype.get(value).equals(NEMOConstants.string)){ + StringValueBuilder stringValueBuilder = new StringValueBuilder(); + stringValueBuilder.setKey(new StringValueKey((long)order,value)); + stringValueBuilder.setValue(value); + stringValueBuilder.setOrder((long)order); + stringValueList.add(stringValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.integer)){ + IntValueBuilder intValueBuilder = new IntValueBuilder(); + intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value))); + intValueBuilder.setValue(Long.parseLong(value)); + intValueBuilder.setOrder((long)order); + intValueList.add(intValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.range)){ + String[] rangevalue = new String[2]; + rangevalue = value.split(","); + RangeValueBuilder rangeValueBuilder = new RangeValueBuilder(); + if (Long.parseLong(rangevalue[0])> flowmatch,LinkedHashMap> propertyList){ + String errorInfo = null; + if (!propertyList.isEmpty()){ + errorInfo = checkProperty(propertyList); + } + if (errorInfo==null){ + errorInfo = createFlow(userId,flowname,flowmatch,propertyList); + if (errorInfo==null) + { + return updateFlow.FlowHandling(userId,this.flow); + } + } + return errorInfo; + } + + private String checkProperty(LinkedHashMap> flowproperty){ + String errorInfo = null; + for (String propertyName : flowproperty.keySet()){ + LinkedHashMap propertyValues= flowproperty.get(propertyName); + Iterator iterator = propertyValues.values().iterator(); + String valueType = iterator.next(); + + while (iterator.hasNext()){ + if (valueType.equals(NEMOConstants.range)) { + errorInfo = "The property should just has one range value."; + return errorInfo; + } + else if (valueType.equals(NEMOConstants.string)){ + if (!iterator.next().equals(NEMOConstants.string)){ + return "The property " + propertyValues.get(iterator.next()) + " should be string."; + } + } +// else if (valueType.equals(NEMOConstants.ethaddr)){ +// if (!iterator.next().equals(NEMOConstants.ethaddr)){ +// return "The property " + propertyValues.get(iterator.next()) + " should be an legal mac address."; +// } +// } +// else if (valueType.equals(NEMOConstants.ipv4pref)){ +// if (!iterator.next().equals(NEMOConstants.ipv4pref)){ +// return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip prefix."; +// } +// } +// else if (valueType.equals(NEMOConstants.ipv4addr)){ +// if (!iterator.next().equals(NEMOConstants.ipv4addr)){ +// return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip address."; +// } +// } + else if (valueType.equals(NEMOConstants.integer)){ + if (!iterator.next().equals(NEMOConstants.integer)){ + return "The property " + propertyValues.get(iterator.next()) + " should be int."; + } + } + } + +// if (propertyName.equals(NEMOConstants.src_mac)){ +// if (!valueType.equals(NEMOConstants.ethaddr)){ +// return "The property " + propertyName +"'s value should be an legal mac address."; +// } +// } +// if (propertyName.equals(NEMOConstants.dst_mac)){ +// if (!valueType.equals(NEMOConstants.ethaddr)){ +// return "The property " + propertyName +"'s value should be an legal mac address."; +// } +// } +// if (propertyName.equals(NEMOConstants.src_ip)){ +// if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){ +// return "The property " + propertyName +"'s value should be an legal ip address."; +// } +// } +// if (propertyName.equals(NEMOConstants.dst_ip)){ +// if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){ +// return "The property " + propertyName +"'s value should be an legal ip address."; +// } +// } + } + return errorInfo; + } + + private String createFlow(UserId userId, String flowname,LinkedHashMap> flowmatch,LinkedHashMap> propertyList ){ + String errorInfo = null; + FlowBuilder flowBuilder = new FlowBuilder(); + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + List flowList = new ArrayList(); + Boolean FlowExist = false; + if (user.getObjects()!=null){ + if (user.getObjects().getFlow()!=null){ + flowList = user.getObjects().getFlow(); + } + } + if (!flowList.isEmpty()){ + for (Flow flow1:flowList){ + if (flow1.getFlowName().getValue().equals(flowname)){ + FlowExist = true; + flowBuilder.setKey(flow1.getKey()); + flowBuilder.setFlowId(flow1.getFlowId()); + } + } + } + if (!FlowExist){ + FlowId flowId = new FlowId(UUID.randomUUID().toString()); + flowBuilder.setKey(new FlowKey(flowId)); + flowBuilder.setFlowId(flowId); + } + + flowBuilder.setFlowName(new FlowName(flowname)); + + if (!flowmatch.isEmpty() && errorInfo==null){ + List matchItemList = new ArrayList(); + MatchItemBuilder matchItemBuilder = new MatchItemBuilder(); + for (String matchname : flowmatch.keySet()){ + matchItemBuilder.setMatchItemName(new MatchItemName(matchname)); + LinkedHashMap matchvalue = flowmatch.get(matchname); + MatchItemValueBuilder matchItemValueBuilder = new MatchItemValueBuilder(); + for (String value : matchvalue.keySet()){ +// if ((matchvalue.get(value).equals(NEMOConstants.string))||matchvalue.get(value).equals(NEMOConstants.ethaddr) +// ||matchvalue.get(value).equals(NEMOConstants.ipv4addr)||matchvalue.get(value).equals(NEMOConstants.ipv4pref)){ + if (matchvalue.get(value).equals(NEMOConstants.string)){ + matchItemValueBuilder.setStringValue(value); + } + if (matchvalue.get(value).equals(NEMOConstants.integer)){ + matchItemValueBuilder.setIntValue(Long.parseLong(value)); + } + if (matchvalue.get(value).equals(NEMOConstants.range)){ + String[] rangevalue = new String[2]; + rangevalue = value.split(","); + RangeValueBuilder rangeValueBuilder = new RangeValueBuilder(); + if (Long.parseLong(rangevalue[0]) flowproperty = new ArrayList(); + for (String propertyname : propertyList.keySet()){ + propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname))); + propertyBuilder.setPropertyName(new PropertyName(propertyname)); + + PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder(); + LinkedHashMap valuetype = propertyList.get(propertyname); + List intValueList = new ArrayList(); + List stringValueList = new ArrayList(); + RangeValue Rangevalue = null; + int order = 0; + for (String value : valuetype.keySet()){ + if (valuetype.get(value).equals(NEMOConstants.string)){ + StringValueBuilder stringValueBuilder = new StringValueBuilder(); + stringValueBuilder.setKey(new StringValueKey((long)order,value)); + stringValueBuilder.setValue(value); + stringValueBuilder.setOrder((long)order); + stringValueList.add(stringValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.integer)) { + IntValueBuilder intValueBuilder = new IntValueBuilder(); + intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value))); + intValueBuilder.setValue(Long.parseLong(value)); + intValueBuilder.setOrder((long)order); + intValueList.add(intValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.range)){ + String[] rangevalue = new String[2]; + rangevalue = value.split(","); + org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValueBuilder rangeValueBuilder + = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValueBuilder(); + if (Long.parseLong(rangevalue[0]) subnodes, LinkedHashMap> propertyList){ + String errorInfo = null; + if (nodetype.equals(NEMOConstants.host)&&!subnodes.isEmpty()){ + errorInfo = "the node "+nodename+ " is a " + NEMOConstants.host +", it could not contain other nodes."; + return errorInfo; + } + if (!propertyList.isEmpty()){ + errorInfo = checkProperty(propertyList); + } + if (errorInfo==null){ + errorInfo = createNode(userId, nodename, nodetype, subnodes, propertyList); + if (errorInfo == null){ + return updateNode.NodeHandling(userId,this.node); + } + } + return errorInfo; + } + + private String checkProperty(LinkedHashMap> propertyList){ + String errorInfo = null; + for (String propertyName : propertyList.keySet()) { + LinkedHashMap propertyValues = propertyList.get(propertyName); + Iterator iterator = propertyValues.values().iterator(); + String valueType = iterator.next(); + + while (iterator.hasNext()) { + if (valueType.equals(NEMOConstants.range)) { + errorInfo = "The property should just has one range value."; + return errorInfo; + } + else if (valueType.equals(NEMOConstants.string)){ + if (!iterator.next().equals(NEMOConstants.string)){ + return "The property " + propertyValues.get(iterator.next()) + " should be string."; + } + } + else if (valueType.equals(NEMOConstants.integer)){ + if (!iterator.next().equals(NEMOConstants.integer)){ + return "The property " + propertyValues.get(iterator.next()) + " should be int."; + } + } + } + } + return errorInfo; + } + + private String createNode(UserId userId, String nodename, String nodetype, List subnodes, LinkedHashMap> propertyList){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user =tenantManage.getUser(); + List nodeList = new ArrayList(); + if (user.getObjects()!=null) + { + if (user.getObjects().getNode()!=null) + { + nodeList = user.getObjects().getNode(); + } + } + NodeBuilder nodeBuilder = new NodeBuilder(); + Boolean NodeExist = false; + if (!nodeList.isEmpty()) + { + for (Node node1:nodeList) + { + if (node1.getNodeName().getValue().equals(nodename)) + { + NodeExist = true; + nodeBuilder.setKey(node1.getKey()); + nodeBuilder.setNodeId(node1.getNodeId()); + } + } + } + if (!NodeExist) + { + NodeId nodeId = new NodeId(UUID.randomUUID().toString()); + nodeBuilder.setKey(new NodeKey(nodeId)); + nodeBuilder.setNodeId(nodeId); + } + + nodeBuilder.setNodeName(new NodeName(nodename)); + nodeBuilder.setNodeType(new NodeType(nodetype)); + + List subNodeList = new ArrayList(); + Boolean subnodeexist = false; + if (errorInfo==null && !subnodes.isEmpty()) + { + for (String subnodename : subnodes) + { + int order = 0; + if (!nodeList.isEmpty()) + { + for (Node node : nodeList) + { + if (node.getNodeName().getValue().equals(subnodename)) + { + subnodeexist = true; + SubNodeBuilder subNodeBuilder = new SubNodeBuilder(); + subNodeBuilder.setKey(new SubNodeKey(node.getNodeId())); + subNodeBuilder.setNodeId(node.getNodeId()); + subNodeBuilder.setOrder((long)order); + subNodeList.add(subNodeBuilder.build()); + } + } + if (!subnodeexist) + { + errorInfo = "The subnode is not exist."; + return errorInfo; + } + } + else + { + errorInfo = "The subnode is not exist."; + return errorInfo; + } + order ++; + } + nodeBuilder.setSubNode(subNodeList); + } + + if (errorInfo==null && !propertyList.isEmpty()) + { + PropertyBuilder propertyBuilder = new PropertyBuilder(); + List nodeproperty = new ArrayList(); + for (String propertyname : propertyList.keySet()) + { + propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname))); + propertyBuilder.setPropertyName(new PropertyName(propertyname)); + + PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder(); + LinkedHashMap valuetype = propertyList.get(propertyname); + List intValueList = new ArrayList(); + List stringValueList = new ArrayList(); + RangeValue RangeValue = null; + + int order = 0; + for (String value : valuetype.keySet()) + { +// if ((valuetype.get(value).equals(NEMOConstants.string))||valuetype.get(value).equals(NEMOConstants.ipv4addr)||valuetype.get(value).equals(NEMOConstants.ipv4pref) +// ||valuetype.get(value).equals(NEMOConstants.ethaddr)) + if (valuetype.get(value).equals(NEMOConstants.string)) + { + StringValueBuilder stringValueBuilder = new StringValueBuilder(); + stringValueBuilder.setKey(new StringValueKey((long)order,value)); + stringValueBuilder.setValue(value); + stringValueBuilder.setOrder((long)order); + stringValueList.add(stringValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.integer)) + { + IntValueBuilder intValueBuilder = new IntValueBuilder(); + intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value))); + intValueBuilder.setValue(Long.parseLong(value)); + intValueBuilder.setOrder((long)order); + intValueList.add(intValueBuilder.build()); + } + if (valuetype.get(value).equals(NEMOConstants.range)) + { + String[] rangevalue = new String[2]; + rangevalue = value.split(","); + RangeValueBuilder rangeValueBuilder = new RangeValueBuilder(); + if (Long.parseLong(rangevalue[0]) conditionSegmentList = new ArrayList(); + List actionList = new ArrayList(); + + public UpdateOperationLang(DataBroker dataBroker, TenantManage tenantManage){ + this.tenantManage = tenantManage; + updateOperation = new UpdateOperation(dataBroker, tenantManage); + } + + public String OperationHandling(UserId userId, String operationname, String target, String priority, + LinkedHashMap> conditions,LinkedHashMap>actions){ + String errorInfo = null; + errorInfo = createOperation(userId,operationname,target,priority,conditions,actions); + if (errorInfo==null){ + errorInfo = updateOperation.OperationHandling(userId,this.operation); + } + return errorInfo; + } + + private String createOperation(UserId userId, String operationname, String target, String priority, + LinkedHashMap> conditions,LinkedHashMap>actions){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + List operationList = new ArrayList(); + Boolean OperationExist = false; + Boolean TargetExist = false; + OperationBuilder operationBuilder = new OperationBuilder(); + + + if (user.getOperations()!=null){ + if (user.getOperations().getOperation()!=null){ + operationList = user.getOperations().getOperation(); + } + } + if (!operationList.isEmpty()){ + for (Operation operation1:operationList){ + if (operation1.getOperationName().getValue().equals(operationname)){ + OperationExist = true; + operationBuilder.setKey(operation1.getKey()); + operationBuilder.setOperationId(operation1.getOperationId()); + } + } + } + if (!OperationExist) { + OperationId operationId = new OperationId(UUID.randomUUID().toString()); + operationBuilder.setKey(new OperationKey(operationId)); + operationBuilder.setOperationId(operationId); + } + + if (user.getObjects()!=null){ + if (user.getObjects().getNode()!=null){ + for(Node node : user.getObjects().getNode()){ + if (node.getNodeName().getValue().equals(target)){ + TargetExist = true; + operationBuilder.setTargetObject(node.getNodeId()); + } + } + } + if (user.getObjects().getConnection()!=null){ + for (Connection connection : user.getObjects().getConnection()){ + if (connection.getConnectionName().getValue().equals(target)){ + TargetExist = true; + operationBuilder.setTargetObject(connection.getConnectionId()); + } + } + } + if (user.getObjects().getFlow()!=null){ + for (Flow flow: user.getObjects().getFlow()){ + if (flow.getFlowName().getValue().equals(target)){ + TargetExist = true; + operationBuilder.setTargetObject(flow.getFlowId()); + } + } + } + } + if (!TargetExist){ + errorInfo = "The target "+target+" is not exist in user vn space."; + return errorInfo; + } + operationBuilder.setOperationName(new OperationName(operationname)); + operationBuilder.setPriority(Long.parseLong(priority)); + + if (!conditions.isEmpty() && errorInfo==null){ +// for (String condtionName : conditions.keySet()){ +// if (condtionName.equals(NEMOConstants.time)){ +// LinkedHashMap values = conditions.get(condtionName); +// Iterator iterator = values.values().iterator(); +// while (iterator.hasNext()){ +// if (!((iterator.next().equals(NEMOConstants.y_m_d))||iterator.next().equals(NEMOConstants.h_m_s))){ +// return "The target value is not a legal time"; +// } +// } +// } +// } + errorInfo = createCondition(conditions); + if (errorInfo==null) { + operationBuilder.setConditionSegment(conditionSegmentList); + } + } + + if (!actions.isEmpty() && errorInfo ==null){ + errorInfo = createAction(user,actions); + if (errorInfo==null){ + operationBuilder.setAction(actionList); + } + } + operation = operationBuilder.build(); + return errorInfo; + } + + private String createCondition(LinkedHashMap> conditions){ + String errorInfo = null; + + for (String conditionname : conditions.keySet()){ + String[] condition = conditionname.split(NEMOConstants.comma); + ConditionSegmentBuilder conditionSegmentBuilder = new ConditionSegmentBuilder(); + ConditionSegmentId conditionSegmentId = new ConditionSegmentId(UUID.randomUUID().toString()); + conditionSegmentBuilder.setKey(new ConditionSegmentKey(conditionSegmentId)); + conditionSegmentBuilder.setConditionSegmentId(conditionSegmentId); + + String preRelationOperator = condition[0]; + if (preRelationOperator == null){ + conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.None); + } + else if (preRelationOperator.equals(NEMOConstants.not)){ + conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Not); + } + else if (preRelationOperator.equals(NEMOConstants.and)){ + conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.And); + } + else if (preRelationOperator.equals(NEMOConstants.or)){ + conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Or); + } + + String condtionName = condition[1]; + conditionSegmentBuilder.setConditionParameterName(new ConditionParameterName(condtionName)); + + String matchPattern = condition[2]; + if (matchPattern.equals(NEMOConstants.equal)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Equal); + } + else if (matchPattern.equals(NEMOConstants.not_equal)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotEqual); + } + else if (matchPattern.equals(NEMOConstants.greater_than)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.GreaterThan); + } + else if (matchPattern.equals(NEMOConstants.less_than)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.LessThan); + } + else if (matchPattern.equals(NEMOConstants.not_less_than)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotLessThan); + } + else if (matchPattern.equals(NEMOConstants.not_greater_than)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotGreaterThan); + } + else if (matchPattern.equals(NEMOConstants.between)){ + conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Between); + } + + LinkedHashMap targetValue = conditions.get(conditionname); + ConditionParameterTargetValueBuilder conditionParameterTargetValueBuilder = new ConditionParameterTargetValueBuilder(); + Iterator iterator = targetValue.keySet().iterator(); + String value = iterator.next(); + + if (targetValue.get(value).equals(NEMOConstants.string)){ + conditionParameterTargetValueBuilder.setStringValue(value); + } + else if (targetValue.get(value).equals(NEMOConstants.integer)){ + conditionParameterTargetValueBuilder.setIntValue(Long.parseLong(value)); + } + else if (targetValue.get(value).equals(NEMOConstants.range)){ + RangeValueBuilder rangeValueBuilder = new RangeValueBuilder(); + String[] values = value.split(NEMOConstants.comma); + if (Long.parseLong(values[0])>Long.parseLong(values[1])){ + rangeValueBuilder.setMax(Long.valueOf(values[0])); + rangeValueBuilder.setMin(Long.parseLong(values[1])); + } + else if (Long.parseLong(values[0])>actions){ + String errorInfo = null; + int order = 0; + for (String actionname : actions.keySet()) + { + ActionBuilder actionBuilder = new ActionBuilder(); + actionBuilder.setKey(new ActionKey(new ActionName(actionname))); + actionBuilder.setActionName(new ActionName(actionname)); + actionBuilder.setOrder((long) order); + + ParameterValuesBuilder parameterValuesBuilder = new ParameterValuesBuilder(); + LinkedHashMap actionvalues = actions.get(actionname); + List intValueList = new ArrayList(); + List stringValueList = new ArrayList(); + RangeValue rangeValue = null; + + int actionorder = 0; + for (String actionvalue : actionvalues.keySet()) + { + if (actionvalues.get(actionvalue).equals(NEMOConstants.string)) + { + if (intValueList.isEmpty()&&rangeValue==null) { + Boolean ParaExist = false; + StringValueBuilder stringValueBuilder = new StringValueBuilder(); + if (user.getObjects() != null) { + if (user.getObjects().getNode() != null) { + for (Node node : user.getObjects().getNode()) { + if (node.getNodeName().getValue().equals(actionvalue)) { + ParaExist = true; + stringValueBuilder.setKey(new StringValueKey((long) actionorder, node.getNodeId().getValue())); + stringValueBuilder.setValue(node.getNodeId().getValue()); + } + } + } + if (user.getObjects().getConnection() != null) { + for (Connection connection : user.getObjects().getConnection()) { + if (connection.getConnectionName().getValue().equals(actionvalue)) { + ParaExist = true; + stringValueBuilder.setKey(new StringValueKey((long) actionorder, connection.getConnectionId().getValue())); + stringValueBuilder.setValue(connection.getConnectionId().getValue()); + } + } + } + if (user.getObjects().getFlow() != null) { + for (Flow flow : user.getObjects().getFlow()) { + if (flow.getFlowName().getValue().equals(actionvalue)) { + ParaExist = true; + stringValueBuilder.setKey(new StringValueKey((long) actionorder, flow.getFlowId().getValue())); + stringValueBuilder.setValue(flow.getFlowId().getValue()); + } + } + } + if (!ParaExist){ + errorInfo = "The parameter object is not exist in user vn space."; + } + + stringValueBuilder.setOrder((long) actionorder); + stringValueList.add(stringValueBuilder.build()); + actionorder++; + } + } + + else{ + errorInfo = "The parameter"+actionvalue +" in action should be string"; + return errorInfo; + } + } + if (actionvalues.get(actionvalue).equals(NEMOConstants.integer)) { + if (stringValueList.isEmpty()&&rangeValue==null){ + IntValueBuilder intValueBuilder = new IntValueBuilder(); + intValueBuilder.setKey(new IntValueKey((long)actionorder,Long.parseLong(actionvalue))); + intValueBuilder.setOrder((long)actionorder); + intValueBuilder.setValue(Long.parseLong(actionvalue)); + intValueList.add(intValueBuilder.build()); + actionorder ++; + } + else{ + errorInfo = "The parameter"+actionvalue +" in action should be int"; + return errorInfo; + } + } + if (actionvalues.get(actionvalue).equals(NEMOConstants.range)){ + if (intValueList.isEmpty()&&stringValueList.isEmpty()) + { + String[] rangevalue = new String[2]; + rangevalue = actionvalue.split(NEMOConstants.comma); + RangeValueBuilder rangeValueBuilder = new RangeValueBuilder(); + if (Long.parseLong(rangevalue[0]) connectionList = tenantManage.getUser().getObjects().getConnection(); - for (Connection connection : connectionList) - { - if (connection.getConnectionId().equals(connectionId)) - { + for (Connection connection : connectionList){ + if (connection.getConnectionId().equals(connectionId)){ ConnInstanceExist = true; break; } } - - if (ConnInstanceExist) - { + if (ConnInstanceExist){ DeleteConnInstance(userId, connectionId); } - else - { - errorInfo = "The connection instance"+connectionId.toString()+ "is not exit. Could not be deleted."; + else{ + errorInfo = "The connection instance "+connectionId.getValue()+ " is not exit. Could not be deleted."; } - } - else - { + else{ errorInfo = "There are no connection instances in data store."; } } } - else - { + else{ errorInfo = "There are no connection instances in data store."; } return errorInfo; } - private void DeleteConnInstance(UserId userId, ConnectionId connectionId) - { + private void DeleteConnInstance(UserId userId, ConnectionId connectionId){ WriteTransaction t = dataBroker.newWriteOnlyTransaction(); UserKey userKey = new UserKey(userId); ConnectionKey connectionKey = new ConnectionKey(connectionId); diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java index 6a45e31..84d304f 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlow.java @@ -38,59 +38,46 @@ public class DeleteFlow { private TenantManage tenantManage; private static final Logger LOG = LoggerFactory.getLogger(DeleteFlow.class); - public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage) - { + public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage){ this.dataBroker = dataBroker; this.tenantManage = tenantManage; } - public String DeleteFlowHandling(UserId userId, FlowId flowId) - { + public String DeleteFlowHandling(UserId userId, FlowId flowId){ Boolean FlowInsExist = false; tenantManage.fetchVNSpace(userId); String errorInfo = null; User user = tenantManage.getUser(); - if (user != null) - { - if (user.getObjects() != null) - { - if (user.getObjects().getFlow() != null) - { + if (user != null){ + if (user.getObjects() != null){ + if (user.getObjects().getFlow() != null){ List flowList = tenantManage.getUser().getObjects().getFlow(); - for (Flow flow : flowList) - { - if (flow.getFlowId().equals(flowId)) - { + for (Flow flow : flowList){ + if (flow.getFlowId().equals(flowId)){ FlowInsExist = true; break; } } - - if (FlowInsExist) - { + if (FlowInsExist) { DeleteFlowInstance(userId,flowId); } - else - { - errorInfo = "The flow instance" +flowId.toString()+"is not exist. Could not be deleted."; + else{ + errorInfo = "The flow instance " +flowId.getValue()+" is not exist. Could not be deleted."; } } - else - { + else{ errorInfo = "There are no flow instances in the data store."; } } } - else - { + else{ errorInfo = "There are no user in the data store."; } return errorInfo; } - private void DeleteFlowInstance(UserId userId, FlowId flowId) - { + private void DeleteFlowInstance(UserId userId, FlowId flowId){ WriteTransaction t = dataBroker.newWriteOnlyTransaction(); UserKey userKey = new UserKey(userId); FlowKey flowKey = new FlowKey(flowId); diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntent.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntent.java index 03fb29e..bc9614b 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntent.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntent.java @@ -24,7 +24,6 @@ import java.util.List; */ public class DeleteIntent { - private DataBroker dataBroker; private TenantManage tenantManage; private DeleteNode deleteNode; private DeleteConnection deleteConnection; @@ -32,9 +31,7 @@ public class DeleteIntent { private DeleteOperation deleteOperation; private DeleteResult deleteResult; - public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage) - { - this.dataBroker = dataBroker; + public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage){ this.tenantManage = tenantManage; deleteNode = new DeleteNode(dataBroker, tenantManage); deleteConnection = new DeleteConnection(dataBroker,tenantManage); @@ -43,26 +40,18 @@ public class DeleteIntent { deleteResult = new DeleteResult(); } - public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput) - { + public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput){ String errorInfo = null; errorInfo = aaa.checkUser(styleNemoDeleteInput); - - if (errorInfo != null) - { + if (errorInfo != null){ return errorInfo; } - - else - { - if (styleNemoDeleteInput.getObjects() != null) - { - if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null) - { + else{ + if (styleNemoDeleteInput.getObjects() != null){ + if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null){ List nodeIdList= styleNemoDeleteInput.getObjects().getNode(); - for (NodeId nodeId : nodeIdList) - { + for (NodeId nodeId : nodeIdList){ errorInfo = deleteNode.DeleNodeHandling(styleNemoDeleteInput.getUserId(), nodeId); if (errorInfo != null) { break; @@ -70,61 +59,46 @@ public class DeleteIntent { } return errorInfo; } - - if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null) - { + if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null){ List connectionIdList = styleNemoDeleteInput.getObjects().getConnection(); - for (ConnectionId connectionId : connectionIdList) - { + for (ConnectionId connectionId : connectionIdList){ errorInfo = deleteConnection.DeleteConnectionHandling(styleNemoDeleteInput.getUserId(),connectionId); - if (errorInfo != null) - { + if (errorInfo != null){ break; } } return errorInfo; } - - if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null) - { + if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null){ List flowIdList = styleNemoDeleteInput.getObjects().getFlow(); - for (FlowId flowId : flowIdList ) - { + for (FlowId flowId : flowIdList ){ errorInfo = deleteFlow.DeleteFlowHandling(styleNemoDeleteInput.getUserId(),flowId); - if (errorInfo != null) - { + if (errorInfo != null){ break; } } return errorInfo; } } - if (styleNemoDeleteInput.getOperations() != null) - { - if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null) - { + if (styleNemoDeleteInput.getOperations() != null){ + if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null){ List operationIdList = styleNemoDeleteInput.getOperations().getOperation(); - for (OperationId operationId : operationIdList) - { + for (OperationId operationId : operationIdList){ errorInfo = deleteOperation.DeleteOperationhandling(styleNemoDeleteInput.getUserId(),operationId); - if (errorInfo != null) - { + if (errorInfo != null){ break; } } return errorInfo; } } - - if (styleNemoDeleteInput.getResults() != null) - { + if (styleNemoDeleteInput.getResults() != null){ Results results = styleNemoDeleteInput.getResults(); errorInfo = deleteResult.DeleteResultHandling(styleNemoDeleteInput.getUserId(),results); - if (errorInfo != null) - { + if (errorInfo != null){ return errorInfo; } - } + } } return null; } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java index 7088f4f..b924deb 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNode.java @@ -7,23 +7,25 @@ */ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.nemo.user.tenantmanager.TenantManage; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.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.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.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; -import org.opendaylight.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.object.rev151010.connection.instance.EndNode; 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; @@ -37,62 +39,63 @@ public class DeleteNode { private DataBroker dataBroker; private TenantManage tenantManage; private static final Logger LOG = LoggerFactory.getLogger(DeleteNode.class); + private DeleteConnection deleteConnection; - public DeleteNode(DataBroker dataBroker, TenantManage tenantManage) - { + public DeleteNode(DataBroker dataBroker, TenantManage tenantManage){ this.dataBroker = dataBroker; this.tenantManage = tenantManage; + deleteConnection = new DeleteConnection(dataBroker, tenantManage); } - public String DeleNodeHandling(UserId userId,NodeId nodeId) - { + public String DeleNodeHandling(UserId userId,NodeId nodeId){ String errorInfo = null; Boolean NodeInstanceExist = false; - tenantManage.fetchVNSpace(userId); - User user = tenantManage.getUser(); - if (user != null) - { - if (user.getObjects() != null) - { - if (user.getObjects().getNode() != null) - { + if (user != null){ + if (user.getObjects() != null){ + if (user.getObjects().getNode() != null){ List nodeList = tenantManage.getUser().getObjects().getNode(); - - for (Node node : nodeList) - { - if (node.getNodeId().equals(nodeId)) - { + for (Node node : nodeList){ + if (node.getNodeId().equals(nodeId)){ NodeInstanceExist = true; - break; + DeleteNodeInstance(userId,nodeId); + + if (user.getObjects().getConnection()!=null) { + Boolean nodeconn = false; + List connectionList = user.getObjects().getConnection(); + for (Connection connection : connectionList){ + if (connection.getEndNode() != null){ + for (EndNode endNode : connection.getEndNode()){ + if (endNode.getNodeId().equals(nodeId)){ + nodeconn = true; + } + } + if (nodeconn){ + errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection.getConnectionId()); + } + } + } + } } } - if (NodeInstanceExist) - { - DeleteNodeInstance(userId,nodeId); - } - else - { - errorInfo = "The node instance" +nodeId.toString()+"is not exist.Could not be deleted"; + if (!NodeInstanceExist) { + errorInfo = "The node instance " +nodeId.getValue()+" is not exist.Could not be deleted"; } } - else - { + else{ errorInfo = "There are no nodes instances in data store."; } } } - else - { + else{ errorInfo = "There are no user in data store."; } return errorInfo; } - private void DeleteNodeInstance(UserId userId,NodeId nodeId) - { + private void DeleteNodeInstance(UserId userId,NodeId nodeId){ WriteTransaction t = dataBroker.newWriteOnlyTransaction(); UserKey userKey = new UserKey(userId); NodeKey nodeKey = new NodeKey(nodeId); diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java index 81cb365..5d9a0c9 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperation.java @@ -38,61 +38,46 @@ public class DeleteOperation { private TenantManage tenantManage; private static final Logger LOG = LoggerFactory.getLogger(DeleteOperation.class); - public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage) - { + public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage){ this.dataBroker = dataBroker; this.tenantManage = tenantManage; } - public String DeleteOperationhandling(UserId userId, OperationId operationId) - { + public String DeleteOperationhandling(UserId userId, OperationId operationId){ Boolean OperationExist = false; String errorInfo = null; tenantManage.fetchVNSpace(userId); - User user = tenantManage.getUser(); - if (user != null) - { - if (user.getOperations() != null) - { - if (user.getOperations().getOperation() != null) - { + if (user != null){ + if (user.getOperations() != null){ + if (user.getOperations().getOperation() != null){ List operationList = tenantManage.getUser().getOperations().getOperation(); - - for (Operation operation : operationList) - { - if (operation.getOperationId().equals(operationId)) - { + for (Operation operation : operationList){ + if (operation.getOperationId().equals(operationId)){ OperationExist = true; break; } } - - if (OperationExist) - { + if (OperationExist){ DeleteOperationInstance(userId,operationId); } - else - { - errorInfo = "The operation instance" +operationId.toString()+"is not exist. Could not be deleted."; + else{ + errorInfo = "The operation instance " +operationId.getValue()+" is not exist. Could not be deleted."; } } - else - { + else{ errorInfo = "There are no operation instances in the data store."; } } } - else - { + else{ errorInfo = "There are no user in the data store."; } return errorInfo; } - private void DeleteOperationInstance(UserId userId, OperationId operationId) - { + private void DeleteOperationInstance(UserId userId, OperationId operationId){ WriteTransaction t = dataBroker.newWriteOnlyTransaction(); UserKey userKey = new UserKey(userId); OperationKey operationKey = new OperationKey(operationId); diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java index cac2067..f70f2fe 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnection.java @@ -7,28 +7,43 @@ */ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.nemo.user.vnspacemanager.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.ConnectionType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; /** * Created by z00293636 on 2015/8/31. @@ -37,65 +52,260 @@ public class UpdateConnection { private DataBroker dataBroker; private TenantManage tenantManage; - private ConnectionDefinitionCheck connectionDefinitionCheck; - private ConnectionInstanceCheck connectionInstanceCheck; + private final SettableFuture> connectionDefinitionListFuture = SettableFuture.create(); private static final Logger LOG = LoggerFactory.getLogger(UpdateConnection.class); - public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage) - { + public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage){ this.dataBroker = dataBroker; this.tenantManage = tenantManage; - connectionDefinitionCheck = new ConnectionDefinitionCheck(dataBroker); - connectionInstanceCheck = new ConnectionInstanceCheck(tenantManage); } - public String ConnectionHandling(UserId userId, Connection connection) - { - String errorDefinition = connectionDefinitionCheck.CheckConnectionDefinition(connection); - String errorInstance = connectionInstanceCheck.checkConnInstance(userId,connection); - if (errorDefinition != null) - { - return errorDefinition; + public String ConnectionHandling(UserId userId, Connection connection){ + String errorInfo = null; + errorInfo =checkDefinition(connection); + if (errorInfo != null){ + return errorInfo; } - if (errorInstance != null) - { - return errorInstance; + else { + errorInfo = checkInstance(userId,connection); + if (errorInfo != null){ + return errorInfo; + } + else { + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + if (userId != null && connection != null){ + Connection connection1 = new ConnectionBuilder(connection).build(); + ConnectionKey connectionKey = new ConnectionKey(connection.getConnectionId()); + + UserKey userKey = new UserKey(userId); + + InstanceIdentifier connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build(); + t.put(LogicalDatastoreType.CONFIGURATION, connectionid, connection1,true); + CheckedFuture f = t.submit(); + Futures.addCallback(f, new FutureCallback() { + @Override + public void onFailure(Throwable t) { + LOG.error("Could not write endpoint base container", t); + } + + @Override + public void onSuccess(Void result) { + } + }); + } + } + } + return errorInfo; + } + + private String checkInstance(UserId userId, Connection connection){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + + if (user!=null){ + if (user.getObjects()!=null){ + if (user.getObjects().getConnection()!=null){ + List connectionList = tenantManage.getUser().getObjects().getConnection(); + + for (Connection connection1 : connectionList){ + if (connection1.getConnectionId().equals(connection.getConnectionId())){ + if (!connection1.getConnectionType().equals(connection.getConnectionType())){ + errorInfo = "The connection type should not be changed."; + break; + } + if (!connection1.getConnectionName().equals(connection.getConnectionName())){ + errorInfo = "The End node should not be changed."; + break; + } + + } + } + } + if (connection.getEndNode()!=null){ + if (user.getObjects().getNode()!=null){ + List endnodeList = connection.getEndNode(); + List nodeList = user.getObjects().getNode(); + Boolean nodeExist = false; + + for (EndNode endNode : endnodeList){ + for (Node node : nodeList){ + if (endNode.getNodeId().equals(node.getNodeId())){ + nodeExist = true; + } + } + if (!nodeExist){ + errorInfo = "The endnode is not exist in user vn space."; + } + } + } + else + { + errorInfo = "The endnodes are not exist in the user vn space."; + } + } + } + else { + if (connection.getEndNode() != null){ + errorInfo = "There are no nodes in user vn space."; + } + } + } + else { + if (connection.getEndNode() != null){ + errorInfo = "There are no nodes in user vn space."; + } + } + return errorInfo; + } + + private String checkDefinition(Connection connection){ + String errorInfo = null; + fetchConnectionDefinitionList(); + Map connectionDefinitionMap = getConnectionDefinition(); + if (connectionDefinitionMap.isEmpty()){ + return "This type of connection has not been defined."; } - else + else { + if (connectionDefinitionMap.containsKey(connection.getConnectionType())){ + List connectionProperties = connection.getProperty(); + List propertyDefinitions = connectionDefinitionMap.get(connection.getConnectionType()).getPropertyDefinition(); + if (connectionProperties != null && propertyDefinitions ==null) + { + errorInfo = "There are no properties for this type of connection."; + } + else if (connectionProperties != null && propertyDefinitions != null) + { + errorInfo = CheckProperty(connection.getProperty(), propertyDefinitions); + } + } + else { + return "This type of connection has not been defined."; + } + } + return errorInfo; + } + + private String CheckProperty(List connectionProperty, List propertyDefinitionList ){ + String errorInfo = null; + for (Property property : connectionProperty) { - WriteTransaction t = dataBroker.newWriteOnlyTransaction(); - if (userId != null && connection != null) + Boolean properyHasDefine = false; + if (errorInfo != null) { -// ConnectionBuilder connectionBuilder = new ConnectionBuilder(); -// connectionBuilder.setConnectionId(connection.getConnectionId()); -// connectionBuilder.setConnectionName(connection.getConnectionName()); -// connectionBuilder.setConnectionType(connection.getConnectionType()); -// connectionBuilder.setEndNode(connection.getEndNode()); -// connectionBuilder.setProperty(connection.getProperty()); -// -// Connection connection1 = connectionBuilder.build(); - - Connection connection1 = new ConnectionBuilder(connection).build(); - ConnectionKey connectionKey = new ConnectionKey(connection.getConnectionId()); - - UserKey userKey = new UserKey(userId); - - InstanceIdentifier connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build(); - t.put(LogicalDatastoreType.CONFIGURATION, connectionid, connection1,true); - CheckedFuture f = t.submit(); - Futures.addCallback(f, new FutureCallback() { - @Override - public void onFailure(Throwable t) { - LOG.error("Could not write endpoint base container", t); + break; + } + else + { + for (PropertyDefinition propertyDefinition : propertyDefinitionList) + { + if (property.getPropertyName().equals(propertyDefinition.getPropertyName())) + { + properyHasDefine = true; + PropertyValues propertyValues = property.getPropertyValues(); + PropertyDefinition.PropertyValueType propertyValueType = propertyDefinition.getPropertyValueType(); + + if (propertyValues != null && propertyValueType != null) + { + if (propertyDefinition.getIsReadOnly()!=null + && PropertyDefinition.IsReadOnly.ReadOnly == propertyDefinition.getIsReadOnly()) + { + if (propertyDefinition.getIsRequired().getIntValue() == 1) + { + errorInfo = "The property value type of " + property.getPropertyName().toString() + " is read only."; + break; + } + } + else + { + if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)) { + errorInfo = "The property value type of " + property.getPropertyName().toString() + " should be string."; + break; + } + if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)) { + errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be integer."; + break; + } + if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)) { + errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be range."; + break; + } + } + } } + } + if (!properyHasDefine) { + errorInfo = "This type of property" + property.getPropertyName().toString() + " has not been defined."; + } + } + } - @Override - public void onSuccess(Void result) { + if (errorInfo == null) + { + Boolean requiredProperty = false; + for (PropertyDefinition propertyDefinition : propertyDefinitionList) + { + if (propertyDefinition.getIsRequired()!=null) + { + if (propertyDefinition.getIsRequired().getIntValue() == 0) + { + for (Property property : connectionProperty) + { + if (property.getPropertyName().equals(propertyDefinition.getPropertyName())) + { + requiredProperty = true; + } + } + if (!requiredProperty) + { + errorInfo = "The required property" + propertyDefinition.getPropertyName().toString() + "is not included in the intent."; + } } - }); + } } } - return null; + return errorInfo; } + private void fetchConnectionDefinitionList(){ + InstanceIdentifier connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build(); + ListenableFuture> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId); + Futures.addCallback(connectiondefinitionFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) { + setConnectionDefinitionListFuture(result.get().getConnectionDefinition()); + + } + + @Override + public void onFailure(Throwable t) { + LOG.error("Can not read connection definition information.", t); + } + }); + return; + } + + private void setConnectionDefinitionListFuture(List connectionDefinitionList){ + this.connectionDefinitionListFuture.set(connectionDefinitionList); + } + + private List getConnectionDefinitionList(){ + try{ + return connectionDefinitionListFuture.get(1, TimeUnit.SECONDS); + }catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } + } + + private Map getConnectionDefinition(){ + List connectionDefinitionList = getConnectionDefinitionList(); + Map connectionDefinitionMap = new HashMap(); + if (connectionDefinitionList!=null){ + for (ConnectionDefinition connectionDefinition : connectionDefinitionList){ + connectionDefinitionMap.put(connectionDefinition.getConnectionType(),connectionDefinition); + } + } + return connectionDefinitionMap; + } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java index f6b382c..275cf91 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlow.java @@ -7,13 +7,19 @@ */ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.nemo.user.vnspacemanager.instancecheck.FlowInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.MatchItemName; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; @@ -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; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + /** * Created by z00293636 on 2015/8/31. */ @@ -36,64 +50,194 @@ public class UpdateFlow { private DataBroker dataBroker; private TenantManage tenantManage; - private FlowDefinitionCheck flowDefinitionCheck; - private FlowInstanceCheck flowInstanceCheck; + private ValueCheck valueCheck; + private final SettableFuture> matchItemDefinitionListFuture = SettableFuture.create(); private static final Logger LOG = LoggerFactory.getLogger(UpdateFlow.class); public UpdateFlow(DataBroker dataBroker, TenantManage tenantManage) { this.dataBroker = dataBroker; this.tenantManage = tenantManage; - flowDefinitionCheck = new FlowDefinitionCheck(dataBroker); - flowInstanceCheck = new FlowInstanceCheck(tenantManage); + valueCheck = new ValueCheck(); } - public String FlowHandling(UserId userId, Flow flow) - { - String errorDefinition = flowDefinitionCheck.CheckDefinition(flow); - String errorInstance = flowInstanceCheck.checkFlowInstance(userId,flow); + public String FlowHandling(UserId userId, Flow flow){ + String errorInfo = null; + errorInfo = checkDefinition(flow); + if (errorInfo!=null){ + return errorInfo; + } + else { + errorInfo = checkInstance(userId,flow); + if (errorInfo!=null){ + return errorInfo; + } + else { + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + if (userId!=null && flow!=null){ + Flow flow1 = new FlowBuilder(flow).build(); + FlowKey flowKey = new FlowKey(flow.getFlowId()); + UserKey userKey = new UserKey(userId); - if (errorDefinition != null) - { - return errorDefinition; + InstanceIdentifier flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build(); + t.put(LogicalDatastoreType.CONFIGURATION, flowid, flow1,true); + CheckedFuture f = t.submit(); + Futures.addCallback(f, new FutureCallback() { + @Override + public void onFailure(Throwable t) { + LOG.error("Could not write endpoint base container", t); + } + + @Override + public void onSuccess(Void result) { + } + }); + } + } } - if (errorInstance != null) - { - return errorInstance; + return null; + } + + private String checkInstance(UserId userId, Flow flow){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + if (user != null){ + if (user.getObjects() != null){ + if (user.getObjects().getFlow() != null){ + List flowList = tenantManage.getUser().getObjects().getFlow(); + for (Flow flow1 : flowList){ + if (flow1.getFlowId().equals(flow.getFlowId())){ + if (!flow1.getFlowName().equals(flow.getFlowName())){ + errorInfo = "The flow name should not be changed."; + break; + } + } + } + } + } + } + return errorInfo; + } + + private String checkPredefine(List matchItems){ + String errorInfo = null; + for (MatchItem matchItem :matchItems){ + if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_ip)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_ip)){ + String stringValues = matchItem.getMatchItemValue().getStringValue(); + Boolean legalValue = true; + if (stringValues.contains("/")){ + legalValue = valueCheck.checkIpPrefix(stringValues); + } + else { + legalValue = valueCheck.checkIpAddress(stringValues); + } + if (!legalValue){ + errorInfo = "The " + NEMOConstants.ip_address + " is not legal."; + } + } + if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_mac)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_mac)){ + String stringValues = matchItem.getMatchItemValue().getStringValue(); + Boolean legalValue = valueCheck.checkMac(stringValues); + if (!legalValue){ + errorInfo = "The " + NEMOConstants.mac_address + " is not legal."; + } + } } - else + return errorInfo; + } + + private String checkDefinition(Flow flow){ + String errorInfo = null; + fetchMatchItemDefinitions(); + Map matchItemDefinitionMap =getMatchItemDefinition(); + + if (flow.getMatchItem() != null) { - WriteTransaction t = dataBroker.newWriteOnlyTransaction(); - if (userId!=null && flow!=null) - { -// FlowBuilder flowBuilder = new FlowBuilder(); -// flowBuilder.setFlowId(flow.getFlowId()); -// flowBuilder.setFlowName(flow.getFlowName()); -// flowBuilder.setMatchItem(flow.getMatchItem()); -// flowBuilder.setProperty(flow.getProperty()); -// -// Flow flow1 = flowBuilder.build(); - Flow flow1 = new FlowBuilder(flow).build(); - FlowKey flowKey = new FlowKey(flow.getFlowId()); - - UserKey userKey = new UserKey(userId); - - InstanceIdentifier flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build(); - t.put(LogicalDatastoreType.CONFIGURATION, flowid, flow1,true); - CheckedFuture f = t.submit(); - Futures.addCallback(f, new FutureCallback() { - @Override - public void onFailure(Throwable t) { - LOG.error("Could not write endpoint base container", t); - } + if (matchItemDefinitionMap.isEmpty()){ + return "The match item has not been defined."; + } + else { + for (MatchItem matchItem : flow.getMatchItem()) + { + if (matchItemDefinitionMap.containsKey(matchItem.getMatchItemName())){ + MatchItemValue matchItemValue = matchItem.getMatchItemValue(); + MatchItemDefinition.MatchItemValueType matchItemValueType = matchItemDefinitionMap.get(matchItem.getMatchItemName()).getMatchItemValueType(); + if (matchItemValue != null && matchItemValueType != null) + { + if (matchItemValueType.getIntValue()==0 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()!=null&&matchItemValue.getRangeValue()==null)) + { + errorInfo = "The match item value type for" +matchItem.getMatchItemName().toString()+"should be string."; + break; + } + + if (matchItemValueType.getIntValue()==1 && !(matchItemValue.getIntValue()!=null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()==null)) + { + errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be integer."; + break; + } - @Override - public void onSuccess(Void result) { + if (matchItemValueType.getIntValue()==2 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()!=null)) + { + errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be range."; + break; + } + } } - }); + else { + return "The match item has not been defined."; + } + + } + } + if (errorInfo==null){ + errorInfo = checkPredefine(flow.getMatchItem()); } } - return null; + return errorInfo; + } + + private void fetchMatchItemDefinitions(){ + InstanceIdentifier matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build(); + ListenableFuture> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId); + Futures.addCallback(matchitemdefinitionFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) { + setMatchItemDefinitionListFuture(result.get().getMatchItemDefinition()); + return; + } + + @Override + public void onFailure(Throwable t) { + LOG.error("Can not read match item definition information.", t); + + return; + } + }); + return ; + } + + private void setMatchItemDefinitionListFuture(List matchItemDefinitionList){ + this.matchItemDefinitionListFuture.set(matchItemDefinitionList); } + private List getMatchItemDefinitionList(){ + try{ + return matchItemDefinitionListFuture.get(1, TimeUnit.SECONDS); + }catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } + } + + private Map getMatchItemDefinition(){ + List matchItemDefinitions = getMatchItemDefinitionList(); + Map matchItemDefinitionMap = new HashMap(); + if (matchItemDefinitions!=null){ + for (MatchItemDefinition matchItemDefinition : matchItemDefinitions){ + matchItemDefinitionMap.put(matchItemDefinition.getMatchItemName(),matchItemDefinition); + } + } + return matchItemDefinitionMap; + } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java index ea9a7f1..57ebdfd 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntent.java @@ -24,7 +24,6 @@ import java.util.List; */ public class UpdateIntent { - private DataBroker dataBroker; private TenantManage tenantManage; private UpdateNode updateNode; private UpdateConnection updateConnection; @@ -32,9 +31,7 @@ public class UpdateIntent { private UpdateOperation updateOperation; private UpdateResult updateResult; - public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage) - { - this.dataBroker = dataBroker; + public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage){ this.tenantManage = tenantManage; updateNode = new UpdateNode(dataBroker,tenantManage); updateConnection = new UpdateConnection(dataBroker,tenantManage); @@ -44,82 +41,62 @@ public class UpdateIntent { } public String updateIntent(AAA aaa,StructureStyleNemoUpdateInput structureStyleNemoUpdateInput){ - String erroInfo = null; erroInfo = aaa.checkUser(structureStyleNemoUpdateInput); - if (erroInfo != null) - { + if (erroInfo != null){ return erroInfo; } - else - { - if(structureStyleNemoUpdateInput.getObjects() != null) - { - if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null) - { + else{ + if(structureStyleNemoUpdateInput.getObjects() != null){ + if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null){ List nodeList= structureStyleNemoUpdateInput.getObjects().getNode(); - for (Node node : nodeList ) - { + for (Node node : nodeList ){ erroInfo = updateNode.NodeHandling(structureStyleNemoUpdateInput.getUserId(), node); - if (erroInfo != null) - { + if (erroInfo != null){ break; } } } - if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null) - { + if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null){ List connectionList = structureStyleNemoUpdateInput.getObjects().getConnection(); - for (Connection connection : connectionList) - { + for (Connection connection : connectionList){ erroInfo = updateConnection.ConnectionHandling(structureStyleNemoUpdateInput.getUserId(), connection); - if (erroInfo != null) - { + if (erroInfo != null){ break; } } } - if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null) - { + if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null){ List flowList = structureStyleNemoUpdateInput.getObjects().getFlow(); - for (Flow flow : flowList) - { + for (Flow flow : flowList){ erroInfo = updateFlow.FlowHandling(structureStyleNemoUpdateInput.getUserId(),flow); - if (erroInfo != null) - { + if (erroInfo != null) { break; } } } } - if (structureStyleNemoUpdateInput.getOperations() != null) - { - if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null) - { + if (structureStyleNemoUpdateInput.getOperations() != null){ + if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null){ List operationList =structureStyleNemoUpdateInput.getOperations().getOperation(); - for (Operation operation : operationList) - { + for (Operation operation : operationList){ erroInfo = updateOperation.OperationHandling(structureStyleNemoUpdateInput.getUserId(), operation); - if (erroInfo !=null) - { + if (erroInfo !=null){ break; } } } } - else if (structureStyleNemoUpdateInput.getResults() != null) - { - if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null) - { + else if (structureStyleNemoUpdateInput.getResults() != null){ + if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null){ Results results = structureStyleNemoUpdateInput.getResults(); erroInfo = updateResult.ResultHandling(structureStyleNemoUpdateInput.getUserId(), results); - if (erroInfo != null) - { + if (erroInfo != null){ //todo } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java index 1739b5f..2c80ea1 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNode.java @@ -7,12 +7,19 @@ */ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.nemo.user.vnspacemanager.instancecheck.NodeInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; @@ -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; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue; import org.opendaylight.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.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + /** * Created by z00293636 on 2015/8/31. */ public class UpdateNode { private DataBroker dataBroker; - private NodeDefinitionCheck nodeCheck; - private NodeInstanceCheck nodeInstanceCheck; + private TenantManage tenantManage; + private final SettableFuture> nodeDefinitionListFuture = SettableFuture.create(); + private ValueCheck valueCheck; private static final Logger LOG = LoggerFactory.getLogger(UpdateNode.class); - public UpdateNode(DataBroker dataBroker,TenantManage tenantManage) - { + public UpdateNode(DataBroker dataBroker,TenantManage tenantManage){ this.dataBroker = dataBroker; - nodeCheck = new NodeDefinitionCheck(dataBroker); - nodeInstanceCheck = new NodeInstanceCheck(tenantManage); + this.tenantManage = tenantManage; + valueCheck = new ValueCheck(); } - public String NodeHandling(UserId userId,Node node) - { - String errorDefinition = nodeCheck.CheckNodeDefinition(node); - String errorInstance = nodeInstanceCheck.checkNodeInstance(userId,node); - if (errorDefinition != null) - { - return errorDefinition; + public String NodeHandling(UserId userId,Node node){ + String errorInfo = null; + errorInfo = checkDefinition(node); + if (errorInfo !=null){ + return errorInfo; } - if (errorInstance != null) - { - return errorInstance; + else{ + errorInfo = checkInstance(userId, node); + if (errorInfo!=null){ + return errorInfo; + } + else { + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + if (userId != null && node.getNodeId() !=null){ + Node node1 = new NodeBuilder(node).build(); + NodeKey nodeKey = new NodeKey(node.getKey()); + UserKey userKey = new UserKey(userId); + + InstanceIdentifier nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build(); + t.put(LogicalDatastoreType.CONFIGURATION, nodeid, node1,true); + CheckedFuture f = t.submit(); + Futures.addCallback(f, new FutureCallback() { + @Override + public void onFailure(Throwable t) { + LOG.error("Could not write endpoint base container", t); + } + + @Override + public void onSuccess(Void result) { + } + }); + } + } } - else - { - WriteTransaction t = dataBroker.newWriteOnlyTransaction(); - if (userId != null && node.getNodeId() !=null) - { -// NodeBuilder nodeBuilder = new NodeBuilder(); -// nodeBuilder.setNodeId(node.getNodeId()); -// nodeBuilder.setNodeId(node.getNodeId()); -// nodeBuilder.setNodeName(node.getNodeName()); -// nodeBuilder.setSubNode(node.getSubNode()); -// nodeBuilder.setProperty(node.getProperty()); -// Node node1 = nodeBuilder.build(); - - Node node1 = new NodeBuilder(node).build(); - NodeKey nodeKey = new NodeKey(node.getKey()); - - UserKey userKey = new UserKey(userId); - - InstanceIdentifier nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build(); - t.put(LogicalDatastoreType.CONFIGURATION, nodeid, node1,true); - CheckedFuture f = t.submit(); - Futures.addCallback(f, new FutureCallback() { - @Override - public void onFailure(Throwable t) { - LOG.error("Could not write endpoint base container", t); + return errorInfo; + } + + private String checkInstance(UserId userId, Node node){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + + if (user!=null){ + if (user.getObjects()!=null){ + if (user.getObjects().getNode()!=null){ + List nodeList = user.getObjects().getNode(); + for (Node node1 : nodeList){ + if (node1.getNodeId().equals(node.getNodeId())){ + if ( !node1.getNodeName().equals(node.getNodeName())) { + errorInfo = "The node name should not be changed."; + break; + } + if (!node1.getNodeType().equals(node.getNodeType())){ + errorInfo = "The node type should not be changed."; + break; + } + } } + } + } + } + return errorInfo; + } - @Override - public void onSuccess(Void result) { + private String checkDefinition(Node node){ + String errorInfo = null; + fetchNodeDefinitions(); + final Map map = getNodeDefinitions(); + if (map.isEmpty()){ + return "This type of Node has not been defined."; + } + else { + if (map.containsKey(node.getNodeType())){ + List nodeProperties = node.getProperty(); + List nodePropertyDefinitions = map.get(node.getNodeType()).getPropertyDefinition(); + + if (nodeProperties != null && nodePropertyDefinitions == null){ + errorInfo = "This type of node has no properties."; + } + else if (nodeProperties != null && nodePropertyDefinitions != null){ + errorInfo = checkProperty(nodeProperties, nodePropertyDefinitions); + if (errorInfo != null){ } - }); + else { + errorInfo = checkPredefine(nodeProperties); + } + } + } + else { + return "This type of Node has not been defined."; + } + } + return errorInfo; + } + + private String checkProperty(List nodeProperties, List nodePropertyDefinitions){ + Boolean propertyHasDefine = false; + String errorInfo = null; + + for (Property property : nodeProperties){ + if (errorInfo != null){ + break; + } + else{ + for (PropertyDefinition propertydefinition : nodePropertyDefinitions){ + if (property.getPropertyName().equals(propertydefinition.getPropertyName())){ + propertyHasDefine = true; + PropertyValues propertyValues = property.getPropertyValues(); + PropertyDefinition.PropertyValueType propertyValueType = propertydefinition.getPropertyValueType(); + + if (propertyValues != null && propertyValueType != null){ + if (propertydefinition.getIsReadOnly()!=null + && PropertyDefinition.IsReadOnly.ReadOnly == propertydefinition.getIsReadOnly()){ + if (propertydefinition.getIsRequired().getIntValue() == 1){ + errorInfo = "The property "+ property.getPropertyName().getValue()+" is readonly, can not be written."; + break; + } + } + else if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null + && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)){ + errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be string"; + break; + } + else if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null + && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)){ + errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be integer"; + break; + } + else if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null + && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)){ + errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be range"; + break; + } + } + } + } + + if (!propertyHasDefine){ + errorInfo = "The property "+property.getPropertyName().getValue()+" has not been defined."; + } + } + } + + if (errorInfo == null){ + Boolean requiredProperty = false; + for (PropertyDefinition propertyDefinition : nodePropertyDefinitions){ + if (propertyDefinition.getIsRequired()!=null){ + if (propertyDefinition.getIsRequired().getIntValue() ==0){ + for (Property property: nodeProperties){ + if (property.getPropertyName().equals(propertyDefinition.getPropertyName())){ + requiredProperty = true; + } + } + if (!requiredProperty){ + errorInfo = "The required property "+ propertyDefinition.getPropertyName().getValue() + "is not included in the intent."; + break; + } + } + } + } + } + return errorInfo; + } + + private String checkPredefine(List nodeProperties){ + String errorInfo = null; + for (Property property : nodeProperties){ + if (property.getPropertyName().getValue().equals(NEMOConstants.mac_address)){ + List stringValues = property.getPropertyValues().getStringValue(); + Boolean legalValue = true; + for (StringValue stringValue : stringValues){ + legalValue = valueCheck.checkMac(stringValue.getValue()); + } + if (!legalValue){ + errorInfo = "The " + NEMOConstants.mac_address + " is not legal."; + } + } + if (property.getPropertyName().getValue().equals(NEMOConstants.ip_address)){ + List stringValues = property.getPropertyValues().getStringValue(); + Boolean legalValue = true; + for (StringValue stringValue : stringValues){ + if (stringValue.getValue().contains("/")){ + legalValue = valueCheck.checkIpPrefix(stringValue.getValue()); + } + else { + legalValue = valueCheck.checkIpAddress(stringValue.getValue()); + } + } + if (!legalValue){ + errorInfo = "The " + NEMOConstants.ip_address + " is not legal."; + } + } + if (property.getPropertyName().getValue().equals(NEMOConstants.gateway_ip)){ + List stringValues = property.getPropertyValues().getStringValue(); + Boolean legalValue = true; + for (StringValue stringValue : stringValues){ + legalValue = valueCheck.checkIpAddress(stringValue.getValue()); + } + if (!legalValue){ + errorInfo = "The " + NEMOConstants.gateway_ip + " is not legal."; + } + } + if (property.getPropertyName().getValue().equals(NEMOConstants.ac_info_network)){ + List stringValues = property.getPropertyValues().getStringValue(); + Boolean legalValue = true; + for (StringValue stringValue : stringValues){ + if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){ + errorInfo = "The " + NEMOConstants.ac_info_network + " is not legal."; + } + } + } + if (property.getPropertyName().getValue().equals(NEMOConstants.operating_mode)){ + List stringValues = property.getPropertyValues().getStringValue(); + Boolean legalValue = true; + for (StringValue stringValue : stringValues){ + if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){ + errorInfo = "The " + NEMOConstants.operating_mode + " is not legal."; + } + } + } + } + return errorInfo; + } + + private void fetchNodeDefinitions(){ + InstanceIdentifier nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build(); + ListenableFuture> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId); + Futures.addCallback(nodedefinitionFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result){ + setNodeDefinitionListFuture(result.get().getNodeDefinition()); + } + + @Override + public void onFailure(Throwable t){ + LOG.error("Can not read node definitions information.", t); + } + }); + return ; + } + + private void setNodeDefinitionListFuture(List nodeDefinitionList) { + this.nodeDefinitionListFuture.set(nodeDefinitionList); + } + + private List getNodeDefinitionList(){ + try{ + return nodeDefinitionListFuture.get(1, TimeUnit.SECONDS); + }catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } + } + + private Map getNodeDefinitions(){ + final Map nodeDefinitionMap = new HashMap(); + final List nodeDefinitionList = getNodeDefinitionList(); + if (nodeDefinitionList!=null){ + for (NodeDefinition nodeDefinition : nodeDefinitionList){ + nodeDefinitionMap.put(nodeDefinition.getNodeType(),nodeDefinition); } } - return null; + return nodeDefinitionMap; } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java index 36a7eff..664ee65 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperation.java @@ -7,28 +7,52 @@ */ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.*; +import com.google.common.base.Optional; +import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.nemo.user.vnspacemanager.instancecheck.OperationInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck; +import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ActionName; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ParameterName; 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.Operations; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValue; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.condition.parameter.definition.ParameterMatchPatterns; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; /** * Created by z00293636 on 2015/8/31. @@ -37,66 +61,346 @@ public class UpdateOperation { private DataBroker dataBroker; private TenantManage tenantManage; - private OperationDefinitionCheck operationDefinitionCheck; - private OperationInstanceCheck operationInstanceCheck; + private final SettableFuture> actionDefinitionListFuture = SettableFuture.create(); + private final SettableFuture> conditionParameterDefinitionListFuture = SettableFuture.create(); + private ValueCheck valueCheck; private static final Logger LOG = LoggerFactory.getLogger(UpdateOperation.class); - public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage) - { + public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage){ this.dataBroker = dataBroker; this.tenantManage = tenantManage; - operationDefinitionCheck = new OperationDefinitionCheck(dataBroker); - operationInstanceCheck = new OperationInstanceCheck(tenantManage); + valueCheck = new ValueCheck(); } - public String OperationHandling(UserId userId, Operation operation) - { - String errorDefinition = operationDefinitionCheck.CheckDefinition(operation); - String errorInstance = operationInstanceCheck.checkOperationInstance(userId, operation); + public String OperationHandling(UserId userId, Operation operation){ + String errorInfo = null; + errorInfo = checkDefinition(operation); + if (errorInfo!=null){ + return errorInfo; + } + else { + errorInfo = checkInstance(userId,operation); + if (errorInfo!=null){ + return errorInfo; + } + else { + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); + if (userId != null && operation.getOperationId() != null) + { + Operation operation1 = new OperationBuilder(operation).build(); + OperationKey operationKey = new OperationKey(operation.getOperationId()); - if (errorDefinition != null) - { - return errorDefinition; + UserKey userKey = new UserKey(userId); + + InstanceIdentifier operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build(); + t.put(LogicalDatastoreType.CONFIGURATION, operationid, operation1,true); + CheckedFuture f = t.submit(); + Futures.addCallback(f, new FutureCallback() { + @Override + public void onFailure(Throwable t) { + LOG.error("Could not write endpoint base container", t); + } + + @Override + public void onSuccess(Void result) { + + } + }); + } + } + } + return null; + } + + private String checkInstance(UserId userId, Operation operation){ + String errorInfo = null; + tenantManage.fetchVNSpace(userId); + User user = tenantManage.getUser(); + + if (operation.getPriority()==null){ + errorInfo = "The priority should not be empty."; + } + if (operation.getTargetObject()==null){ + errorInfo = "The target should not be empty."; } - if (errorInstance != null) + if (operation.getTargetObject()!=null){ + if (user!=null){ + if (user.getObjects()!=null){ + Boolean targetExist = false; + if (user.getObjects().getNode()!=null){ + List nodeList = user.getObjects().getNode(); + for (Node node : nodeList){ + if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){ + targetExist = true; + } + } + } + if (user.getObjects().getConnection()!=null){ + List connectionList = user.getObjects().getConnection(); + for (Connection connection : connectionList){ + if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){ + targetExist = true; + } + } + } + if (user.getObjects().getFlow()!=null){ + List flowList = user.getObjects().getFlow(); + for (Flow flow : flowList){ + if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){ + targetExist = true; + } + } + } + if (!targetExist){ + errorInfo = "The target object is not exist."; + } + } + else { + errorInfo = "The target object is not exist."; + } + } + else { + errorInfo = "The target object is not exist."; + } + } + if (user!=null){ + if (user.getOperations()!=null){ + if (user.getOperations().getOperation()!=null){ + List operationList = user.getOperations().getOperation(); + for (Operation operation1 : operationList){ + if (operation.getOperationId().equals(operation1.getOperationId())){ + if (!operation.getOperationName().equals(operation1.getOperationName())){ + errorInfo="The operation name should not be changed."; + return errorInfo; + } + } + } + } + } + } + return errorInfo; + } + + private String checkDefinition(Operation operation){ + fetchActionDefinitions(); + fetchConditionParaDefinitions(); + String errorInfo = null; + + if (operation.getAction() != null ) { - return errorInstance; + errorInfo = checkAction(operation); } - else + if (errorInfo == null && operation.getConditionSegment() != null) { - WriteTransaction t = dataBroker.newWriteOnlyTransaction(); - if (userId != null && operation.getOperationId() != null) - { -// OperationBuilder operationBuilder = new OperationBuilder(); -// operationBuilder.setOperationId(operation.getOperationId()); -// operationBuilder.setOperationName(operation.getOperationName()); -// operationBuilder.setConditionSegment(operation.getConditionSegment()); -// operationBuilder.setTargetObject(operationBuilder.getTargetObject()); -// operationBuilder.setAction(operation.getAction()); -// operationBuilder.setPriority(operation.getPriority()); -// -// Operation operation1 = operationBuilder.build(); - Operation operation1 = new OperationBuilder(operation).build(); - OperationKey operationKey = new OperationKey(operation.getOperationId()); - - UserKey userKey = new UserKey(userId); - - InstanceIdentifier operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build(); - t.put(LogicalDatastoreType.CONFIGURATION, operationid, operation1,true); - CheckedFuture f = t.submit(); - Futures.addCallback(f, new FutureCallback() { - @Override - public void onFailure(Throwable t) { - LOG.error("Could not write endpoint base container", t); + errorInfo = checkCondition(operation); + } + return errorInfo; + } + + private String checkAction(Operation operation){ + String errorInfo = null; + + fetchActionDefinitions(); + Map actionDefinitionMap = getActionDefinition(); + if (operation.getAction()!=null){ + if (actionDefinitionMap.isEmpty()){ + return "The action type has not been defined."; + } + else { + for (Action action : operation.getAction()){ + if (actionDefinitionMap.containsKey(action.getActionName())){ + ParameterValues parameterValues = action.getParameterValues(); + ActionDefinition.ParameterValueType parameterValueType = actionDefinitionMap.get(action.getActionName()).getParameterValueType(); + + if (parameterValues != null && parameterValueType != null) + { + if (parameterValueType.getIntValue() == 0 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() != null && parameterValues.getRangeValue() == null)) { + errorInfo = "The value type of" + action.getActionName().toString() + "should be string."; + break; + } + if (parameterValueType.getIntValue() == 1 && !(parameterValues.getIntValue() != null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() == null)) { + errorInfo = "The value type of" + action.getActionName().toString() + "should be integer."; + break; + } + if (parameterValueType.getIntValue() == 2 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() != null)) { + errorInfo = "The value type of" + action.getActionName().toString() + "should be range."; + break; + } + } } + else { + return "The action type has not been defined."; + } + } + } + } + return errorInfo; + } + + private String checkCondition(Operation operation){ + String errorInfo = null; + fetchConditionParaDefinitions(); + Map conditionParameterDefinitionMap = getParameterMatchPattern(); + if (operation.getConditionSegment()!=null){ + if (conditionParameterDefinitionMap.isEmpty()){ + return "This condition has not been defined in data store."; + } + else { + for (ConditionSegment conditionSegment :operation.getConditionSegment()){ + if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){ + ConditionParameterDefinition conditionParameterDefinition = conditionParameterDefinitionMap.get(conditionSegment.getConditionParameterName()); + + if (conditionSegment.getConditionParameterMatchPattern() != null) + { + if (conditionParameterDefinition.getParameterMatchPatterns() != null) + { + List conditionParameterMatchPatterns = conditionParameterDefinition.getParameterMatchPatterns().getParameterMatchPattern(); + if (conditionParameterMatchPatterns != null) + { + Boolean matchpatternexist = false; + for (ParameterMatchPatterns.ParameterMatchPattern parameterMatchPattern : conditionParameterMatchPatterns) + { + if (parameterMatchPattern.getIntValue() == conditionSegment.getConditionParameterMatchPattern().getIntValue()) + { + matchpatternexist = true; + break; + } + } + if (!matchpatternexist) + { + errorInfo = "The match pattern has not defined in the condition."; + } + } + else + { + errorInfo = "There are no match pattern in match pattrn list."; + break; + } + } + else + { + errorInfo = "No match patterns have been defined in data store."; + break; + } + } + if (conditionSegment.getConditionParameterTargetValue() != null) + { + if (conditionParameterDefinition.getParameterValueType() != null) + { + ConditionParameterTargetValue conditionParameterTargetValue = conditionSegment.getConditionParameterTargetValue(); + ConditionParameterDefinition.ParameterValueType parameterValueType = conditionParameterDefinition.getParameterValueType(); + + if (parameterValueType.getIntValue() == 0 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() != null && conditionParameterTargetValue.getRangeValue() == null)) { + errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be string."; + break; + } + if (parameterValueType.getIntValue() == 1 && !(conditionParameterTargetValue.getIntValue() != null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() == null)) { + errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be integer."; + break; + } + if (parameterValueType.getIntValue() == 2 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() != null)) { + errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be range."; + break; + } - @Override - public void onSuccess(Void result) { - + } + } + if (conditionSegment.getConditionParameterName().getValue().equals(NEMOConstants.time)){ + Boolean legalValue = valueCheck.checkTime(conditionSegment.getConditionParameterTargetValue().getStringValue()); + if (!legalValue){ + errorInfo = "The " + NEMOConstants.time + " is not legal."; + break; + } + } } - }); + else { + return "This condition has not been defined in data store."; + } + } } } - return null; + return errorInfo; + } + + private void fetchActionDefinitions(){ + InstanceIdentifier actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build(); + ListenableFuture> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId); + Futures.addCallback(actiondefinitionFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) { + setActionDefinitionListFuture( result.get().getActionDefinition()); + } + + @Override + public void onFailure(Throwable t) { + LOG.error("Can not read action definition information.", t); + } + }); + return ; + } + + private void fetchConditionParaDefinitions(){ + InstanceIdentifier conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build(); + ListenableFuture> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId); + Futures.addCallback(conditionparadefinitionFuture, new FutureCallback>() { + @Override + public void onSuccess(Optional result) { + setConditionParameterDefinitionListFuture(result.get().getConditionParameterDefinition()); + } + + @Override + public void onFailure(Throwable t) { + LOG.error("Can not read condition parameter definition information.", t); + } + }); + return ; + } + + private void setConditionParameterDefinitionListFuture(List conditionParameterDefinitions){ + this.conditionParameterDefinitionListFuture.set(conditionParameterDefinitions); + } + + private void setActionDefinitionListFuture(List actionDefinitions){ + this.actionDefinitionListFuture.set(actionDefinitions); + } + + private List getConditionParameterDefinitionList(){ + try{ + return conditionParameterDefinitionListFuture.get(1, TimeUnit.SECONDS); + }catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } + } + + private List getActionDefinitionList(){ + try{ + return actionDefinitionListFuture.get(1, TimeUnit.SECONDS); + }catch (InterruptedException | ExecutionException | TimeoutException e) { + LOG.error("Cannot read role information.", e); + return null; + } + } + + private Map getParameterMatchPattern(){ + List conditionParameterDefinitions = getConditionParameterDefinitionList(); + Map conditionParameterDefinitionMap = new HashMap(); + if (conditionParameterDefinitions!=null){ + for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitions){ + conditionParameterDefinitionMap.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition); + } + } + return conditionParameterDefinitionMap; + } + + private Map getActionDefinition(){ + List actionDefinitions = getActionDefinitionList(); + Map actionDefinitionMap = new HashMap(); + if (actionDefinitionMap!=null){ + for (ActionDefinition actionDefinition : actionDefinitions){ + actionDefinitionMap.put(actionDefinition.getActionName(),actionDefinition); + } + } + return actionDefinitionMap; } } diff --git a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResult.java b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResult.java index ede89b7..d4899ed 100644 --- a/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResult.java +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResult.java @@ -9,8 +9,6 @@ package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.nemo.user.vnspacemanager.instancecheck.ResultInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck; 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.Results; @@ -19,36 +17,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int */ public class UpdateResult { - private DataBroker dataBroker; private TenantManage tenantManage; - private ResultDefinitionCheck resultDefinitionCheck; - private ResultInstanceCheck resultInstanceCheck; - public UpdateResult(DataBroker dataBroker, TenantManage tenantManage) - { - this.dataBroker = dataBroker; + public UpdateResult(DataBroker dataBroker, TenantManage tenantManage){ this.tenantManage = tenantManage; - resultDefinitionCheck = new ResultDefinitionCheck(); - resultInstanceCheck = new ResultInstanceCheck(tenantManage); } public String ResultHandling(UserId userId, Results results) { - String errorDefinition = resultDefinitionCheck.CheckDefinition(results); - String errorInstance = resultInstanceCheck.checkResultInstance(userId,results); - - if (errorDefinition!= null) - { - return errorDefinition; - } - else if (errorInstance != null) - { - return errorInstance; - } - else - { - //todo - } return null; } } 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 index 0000000..b36bd82 --- /dev/null +++ b/nemo-impl/src/main/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/ValueCheck.java @@ -0,0 +1,141 @@ +/* + * 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; + +/** + * Created by z00293636 on 2015/11/26. + */ +public class ValueCheck { + public boolean checkMac(String macAddress){ + Boolean legalValue = true; + String[] value = macAddress.split(":"); + if (value.length!=6){ + legalValue = false; + } + else { + for (int i=0; i32||Integer.parseInt(valuePrefix[1])<1){ + legalValue = false; + } + else { + legalValue = checkIpAddress(valuePrefix[0]); + } + } + return legalValue; + } + + public Boolean checkIpAddress(String ipAddress){ + Boolean legalValue = true; + String[] value = ipAddress.split("\\."); + if (value.length!=4){ + legalValue = false; + } + else { + for (int i=0;i255||Integer.parseInt(value[i])<0){ + legalValue = false; + } + } + } + return legalValue; + } + + public Boolean checkTime(String time){ + Boolean legalValue = true; + String[] value = time.split(","); + if (value.length == 1){ + String[] hourMS = value[0].split(":"); + if (hourMS.length!=3){ + legalValue = false; + } + else { + if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){ + legalValue = false; + } + if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){ + legalValue = false; + } + if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){ + legalValue = false; + } + } + } + if (value.length == 2){ + String[] yearMD = value[0].split("-"); + if (yearMD.length!=3){ + legalValue = false; + } + else { + if (Integer.parseInt(yearMD[0])<1){ + legalValue = false; + } + if (Integer.parseInt(yearMD[1])>12||Integer.parseInt(yearMD[1])<1){ + legalValue = false; + } + if (Integer.parseInt(yearMD[1])==1||Integer.parseInt(yearMD[1])==3||Integer.parseInt(yearMD[1])==5||Integer.parseInt(yearMD[1])==7 + ||Integer.parseInt(yearMD[1])==8||Integer.parseInt(yearMD[1])==10||Integer.parseInt(yearMD[1])==2){ + if (Integer.parseInt(yearMD[2])>31||Integer.parseInt(yearMD[2])<1){ + legalValue = false; + } + } + if (Integer.parseInt(yearMD[1])==4||Integer.parseInt(yearMD[1])==6||Integer.parseInt(yearMD[1])==9 + ||Integer.parseInt(yearMD[1])==11){ + if (Integer.parseInt(yearMD[2])>30||Integer.parseInt(yearMD[2])<1){ + legalValue = false; + } + } + if (Integer.parseInt(yearMD[1])==2){ + if (Integer.parseInt(yearMD[2])>28||Integer.parseInt(yearMD[2])<1){ + legalValue = false; + } + } + } + String[] hourMS = value[1].split(":"); + if (hourMS.length!=3){ + legalValue = false; + } + else { + if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){ + legalValue = false; + } + if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){ + legalValue = false; + } + if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){ + legalValue = false; + } + } + } + return legalValue; + } +} 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 index 11b0c66..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/UserManagerTest.java +++ /dev/null @@ -1,98 +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; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import junit.framework.TestCase; - -import org.junit.Assert; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.AdvancedNemoQueryInput; -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.intent.rev151010.EndTransactionInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput; -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.StructureStyleNemoDeleteInput; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoUpdateInput; - -/** - * Created by Thomas Liu on 2015/11/12. - */ -public class UserManagerTest extends TestCase { - private UserManager userManagerTest; - private AdvancedNemoQueryInput advancedNemoQueryInput; - private BeginTransactionInput beginTransactionInput; - private EndTransactionInput endTransactionInput; - private LanguageStyleNemoRequestInput languageStyleNemoRequestInput; - private RegisterUserInput registerUserInput; - private StructureStyleNemoDeleteInput structureStyleNemoDeleteInput; - private StructureStyleNemoUpdateInput structureStyleNemoUpdateInput; - - - @org.junit.Before - public void setUp() throws Exception { - userManagerTest = mock(UserManager.class); - advancedNemoQueryInput = mock(AdvancedNemoQueryInput.class); - beginTransactionInput = mock(BeginTransactionInput.class); - endTransactionInput = mock(EndTransactionInput.class); - languageStyleNemoRequestInput = mock(LanguageStyleNemoRequestInput.class); - registerUserInput = mock(RegisterUserInput.class); - structureStyleNemoDeleteInput = mock(StructureStyleNemoDeleteInput.class); - structureStyleNemoUpdateInput = mock(StructureStyleNemoUpdateInput.class); - } - - @org.junit.Test - public void testAdvancedNemoQuery() throws Exception { - userManagerTest.advancedNemoQuery(advancedNemoQueryInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).advancedNemoQuery(advancedNemoQueryInput); - } - - @org.junit.Test - public void testBeginTransaction() throws Exception { - userManagerTest.beginTransaction(beginTransactionInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).beginTransaction(beginTransactionInput); - - } - - @org.junit.Test - public void testEndTransaction() throws Exception { - userManagerTest.endTransaction(endTransactionInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).endTransaction(endTransactionInput); - } - - @org.junit.Test - public void testLanguageStyleNemoRequest() throws Exception { - userManagerTest.languageStyleNemoRequest(languageStyleNemoRequestInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).languageStyleNemoRequest(languageStyleNemoRequestInput); - } - - @org.junit.Test - public void testRegisterUser() throws Exception { - userManagerTest.registerUser(registerUserInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).registerUser(registerUserInput); - } - - @org.junit.Test - public void testStructureStyleNemoDelete() throws Exception { - userManagerTest.structureStyleNemoDelete(structureStyleNemoDeleteInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).structureStyleNemoDelete(structureStyleNemoDeleteInput); - } - - @org.junit.Test - public void structureStyleNemoUpdate() throws Exception { - userManagerTest.structureStyleNemoUpdate(structureStyleNemoUpdateInput); - Assert.assertNotNull(userManagerTest); - verify(userManagerTest).structureStyleNemoUpdate(structureStyleNemoUpdateInput); - } -} \ 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 index 7fd37f0..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/AAATest.java +++ /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()); - 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 index b98400b..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/RegisterUserTest.java +++ /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());//return nothing - when(tenantManage.getUsers()).thenReturn(new HashMap()); - 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 index 9d9b2df..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/tenantmanager/TenantManageTest.java +++ /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 userRoles; - private Map users ; - private User user; - @Override - @Before - public void setUp() throws Exception { - userRoles = new HashMap(); - users = new HashMap(); - 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> 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 index ca5eeea..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionBeginTest.java +++ /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 index 6aec7b9..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/transactionmanager/TransactionEndTest.java +++ /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 index 23413b9..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/VNSpaceManagementTest.java +++ /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 index 8b18cde..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ConnectionInstanceCheckTest.java +++ /dev/null @@ -1,192 +0,0 @@ -package org.opendaylight.nemo.user.vnspacemanager.instancecheck; - - -import junit.framework.TestCase; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; - - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.ListenableFuture; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -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; -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.UserBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; -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.ConnectionName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -//import java.sql.Connection; -import java.util.ArrayList; -import java.util.List; -/** - * Created by Thomas Liu on 2015/11/20. - */ -public class ConnectionInstanceCheckTest extends junit.framework.TestCase { - private ConnectionInstanceCheck connectionInstanceCheckTest; - private TenantManage tenantManage; - private DataBroker dataBroker; - private UserId userId,userId2; - private Connection connection; - private User user; - private List nodes; - private List endnodes;; - private Objects object; - private List connlist; - private ConnectionId connectionId,connectionId2; - private ConnectionType connectionType,connectionType2; - private ConnectionName connectionName,connectionName2; - private NodeId nodeId,nodeId2; - @org.junit.Before - public void setUp() throws Exception { - //dataBroker = mock(DataBroker.class); - //tenantManage = new TenantManage(dataBroker); - tenantManage = mock(TenantManage.class); - connectionInstanceCheckTest = new ConnectionInstanceCheck(tenantManage); - userId = mock(UserId.class); - userId2 = mock(UserId.class); - connection = mock(Connection.class); - user = mock(User.class); - nodes= new ArrayList(); - nodes.add(mock(Node.class)); - endnodes= new ArrayList(); - endnodes.add(mock(EndNode.class)); - object = mock(Objects.class); - connlist= new ArrayList(); - connlist.add(mock(Connection.class)); - connectionId = mock(ConnectionId.class); - connectionId2 = mock(ConnectionId.class); - connectionType = mock(ConnectionType.class); - connectionType2 = mock(ConnectionType.class); - connectionName = mock(ConnectionName.class); - connectionName2 = mock(ConnectionName.class); - nodeId = mock(NodeId.class); - nodeId2 = mock(NodeId.class); - } - - - @org.junit.Test - public void testCheckConnInstance() throws Exception { - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(user.getObjects().getConnection()).thenReturn(connlist); - when(tenantManage.getUser().getObjects().getConnection()).thenReturn(connlist); - when(connlist.get(0).getConnectionId()).thenReturn(connectionId); - when(connection.getConnectionId()).thenReturn(connectionId2); - //when(connectionId.equals(any(Class.class))).thenReturn(true); - when(connlist.get(0).getConnectionType()).thenReturn(connectionType); - when(connection.getConnectionType()).thenReturn(connectionType2); - //when(connectionId.equals(any(Class.class))).thenReturn(false); - when(connlist.get(0).getConnectionName()).thenReturn(connectionName); - when(connection.getConnectionName()).thenReturn(connectionName2); - //when(connectionId.equals(any(Class.class))).thenReturn(false); - when(user.getObjects().getNode()).thenReturn(null); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage).fetchVNSpace(userId); - verify(tenantManage,times(3)).getUser(); - verify(user,times(7)).getObjects(); - verify(user.getObjects(),times(2)).getConnection(); - verify(connlist.get(0)).getConnectionId(); - verify(connection).getConnectionId(); - - - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(user.getObjects().getConnection()).thenReturn(null); - when(user.getObjects().getNode()).thenReturn(nodes); - when(connection.getEndNode()).thenReturn(endnodes); - when(user.getObjects().getNode()).thenReturn(nodes); - when(nodes.get(0).getNodeId()).thenReturn(nodeId); - when(endnodes.get(0).getNodeId()).thenReturn(nodeId2); - //when(nodeId.equals(endnodes.get(0).getNodeId())).thenReturn(true); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage,times(2)).fetchVNSpace(userId); - verify(tenantManage,times(4)).getUser(); - verify(user,times(15)).getObjects(); - //verify(user,times(15)).getObjects().getConnection(); - //verify(user,times(15)).getObjects().getNode(); - verify(connection).getEndNode(); - //verify(user).getObjects().getNode(); - verify(nodes.get(0)).getNodeId(); - //verify(nodeId).equals(endnodes.get(0).getNodeId()); - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(null); - when(connection.getEndNode()).thenReturn(endnodes); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage,times(3)).fetchVNSpace(userId); - verify(tenantManage,times(5)).getUser(); - verify(user,times(16)).getObjects(); - verify(connection,times(2)).getEndNode(); - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(null); - when(connection.getEndNode()).thenReturn(null); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage,times(4)).fetchVNSpace(userId); - verify(tenantManage,times(6)).getUser(); - verify(user,times(17)).getObjects(); - verify(connection,times(3)).getEndNode(); - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - when(connection.getEndNode()).thenReturn(endnodes); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage,times(5)).fetchVNSpace(userId); - verify(tenantManage,times(7)).getUser(); - verify(connection,times(4)).getEndNode(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - when(connection.getEndNode()).thenReturn(null); - connectionInstanceCheckTest.checkConnInstance(userId,connection); - verify(tenantManage,times(6)).fetchVNSpace(userId); - verify(tenantManage,times(8)).getUser(); - verify(connection,times(5)).getEndNode(); - } -} \ 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 index 8c6ad57..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/FlowInstanceCheckTest.java +++ /dev/null @@ -1,109 +0,0 @@ -package org.opendaylight.nemo.user.vnspacemanager.instancecheck; - -import junit.framework.TestCase; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow; -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.user.intent.Objects; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Thomas Liu on 2015/11/20. - */ -public class FlowInstanceCheckTest extends junit.framework.TestCase { - private TenantManage tenantManage; - private FlowInstanceCheck flowInstanceCheckTest; - private UserId userId; - private Flow flow; - private Objects object; - private User user; - private List flowList; - private FlowId flowid; - private FlowName flowname; - - @org.junit.Before - public void setUp() throws Exception { - tenantManage = mock(TenantManage.class); - flowInstanceCheckTest = new FlowInstanceCheck(tenantManage); - userId = mock(UserId.class); - flow = mock(Flow.class); - object = mock(Objects.class); - user = mock(User.class); - flowList = new ArrayList(); - flowList.add(mock(Flow.class)); - flowid = mock(FlowId.class); - flowname = mock(FlowName.class); - - } - - @org.junit.Test - public void testCheckFlowInstance() throws Exception { - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(user.getObjects().getFlow()).thenReturn(flowList); - when(tenantManage.getUser().getObjects().getFlow()).thenReturn(flowList); - when(flowList.get(0).getFlowId()).thenReturn(flowid); - when(flow.getFlowId()).thenReturn(flowid); - when(flowList.get(0).getFlowName()).thenReturn(flowname); - when(flow.getFlowName()).thenReturn(flowname); - flowInstanceCheckTest.checkFlowInstance(userId,flow); - verify(tenantManage).fetchVNSpace(userId); - verify(tenantManage,times(3)).getUser(); - verify(user,times(5)).getObjects(); - verify(user.getObjects(),times(2)).getFlow(); - //verify(tenantManage,times(3)).getUser().getObjects().getFlow(); - verify(flowList.get(0)).getFlowId(); - verify(flow).getFlowId(); - verify(flowList.get(0)).getFlowName(); - verify(flow).getFlowName(); - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - flowInstanceCheckTest.checkFlowInstance(userId,flow); - verify(tenantManage,times(2)).fetchVNSpace(userId); - verify(tenantManage,times(4)).getUser(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(null); - flowInstanceCheckTest.checkFlowInstance(userId,flow); - verify(tenantManage,times(3)).fetchVNSpace(userId); - verify(tenantManage,times(5)).getUser(); - verify(user,times(7)).getObjects(); - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(user.getObjects().getFlow()).thenReturn(null); - flowInstanceCheckTest.checkFlowInstance(userId,flow); - verify(tenantManage,times(4)).fetchVNSpace(userId); - verify(tenantManage,times(6)).getUser(); - verify(user,times(10)).getObjects(); - verify(user.getObjects(),times(3)).getFlow(); - - - - - - - - - } -} \ 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 index 6cdfe51..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/NodeInstanceCheckTest.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.opendaylight.nemo.user.vnspacemanager.instancecheck; - -import junit.framework.TestCase; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.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.common.rev151010.NodeId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Thomas Liu on 2015/11/23. - */ -public class NodeInstanceCheckTest extends junit.framework.TestCase { - private NodeInstanceCheck nodeInstanceCheckTest; - private TenantManage tenantManage; - private UserId userId; - private Node node; - private User user; - private List nodeList; - private Objects object; - private NodeId nodeId,nodeId2; - private NodeType nodeType,nodeType2; - private NodeName nodeName,nodeName2; - - @org.junit.Before - public void setUp() throws Exception { - tenantManage = mock(TenantManage.class); - nodeInstanceCheckTest = new NodeInstanceCheck(tenantManage); - userId = mock(UserId.class); - node = mock(Node.class); - user = mock(User.class); - object = mock(Objects.class); - nodeList = new ArrayList(); - nodeType = mock(NodeType.class); - nodeType2 = mock(NodeType.class); - nodeId = mock(NodeId.class); - nodeId2 = mock(NodeId.class); - nodeName = mock(NodeName.class); - nodeName2 = mock(NodeName.class); - nodeList.add(mock(Node.class)); - - } - - @org.junit.Test - public void testCheckNodeInstance() throws Exception { - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(object.getNode()).thenReturn(nodeList); - when(object.getNode()).thenReturn(nodeList); - when(nodeList.get(0).getNodeId()).thenReturn(nodeId); - when(node.getNodeId()).thenReturn(nodeId2); - when(nodeList.get(0).getNodeName()).thenReturn(nodeName); - when(node.getNodeName()).thenReturn(nodeName2); - when(nodeList.get(0).getNodeType()).thenReturn(nodeType); - when(node.getNodeType()).thenReturn(nodeType2); - nodeInstanceCheckTest.checkNodeInstance(userId,node); - verify(tenantManage).getUser(); - verify(user).getObjects(); - verify(object,times(2)).getNode(); - verify(nodeList.get(0)).getNodeId(); - verify(node).getNodeId(); - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - nodeInstanceCheckTest.checkNodeInstance(userId,node); - verify(tenantManage,times(2)).getUser(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(null); - nodeInstanceCheckTest.checkNodeInstance(userId,node); - verify(tenantManage,times(3)).getUser(); - verify(user,times(2)).getObjects(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(object); - when(object.getNode()).thenReturn(null); - nodeInstanceCheckTest.checkNodeInstance(userId,node); - verify(tenantManage,times(4)).getUser(); - verify(user,times(3)).getObjects(); - verify(object,times(3)).getNode(); - - - } -} \ 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 index 39c4d55..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/OperationInstanceCheckTest.java +++ /dev/null @@ -1,266 +0,0 @@ -package org.opendaylight.nemo.user.vnspacemanager.instancecheck; - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; - - -import junit.framework.TestCase; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; -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.common.rev151010.ObjectId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId; -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.FlowId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationName; - - - -import java.lang.annotation.Target; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by Thomas Liu on 2015/11/23. - */ -public class OperationInstanceCheckTest extends junit.framework.TestCase { - private OperationInstanceCheck perationInstanceCheckTest; - private TenantManage tenantManage; - private UserId userId; - private Node node; - private User user; - private List connectionList; - private List flowList; - private Objects object; - //private Operation operation; - private ObjectId objectId; - private List nodeList; - private List operationList; - private Operation operation; - private NodeId nodeId,nodeId2; - private ConnectionId connectionId,connectionId2; - private FlowId flowId,flowId2; - private Operations operations; - private OperationId operationId; - private OperationName operationName; - - @org.junit.Before - public void setUp() throws Exception { - tenantManage = mock(TenantManage.class); - perationInstanceCheckTest = new OperationInstanceCheck(tenantManage); - userId = mock(UserId.class); - node = mock(Node.class); - user = mock(User.class); - object = mock(Objects.class); - operation = mock(Operation.class); - objectId = mock(ObjectId.class); - nodeList = new ArrayList(); - nodeList.add(mock(Node.class)); - connectionList = new ArrayList(); - connectionList.add(mock(Connection.class)); - flowList = new ArrayList(); - flowList.add(mock(Flow.class)); - operationList = new ArrayList(); - operationList.add(mock(Operation.class)); - nodeId = mock(NodeId.class); - nodeId2 = mock(NodeId.class); - connectionId = mock(ConnectionId.class); - connectionId2 = mock(ConnectionId.class); - flowId = mock(FlowId.class); - flowId2 = mock(FlowId.class); - operationId = mock(OperationId.class); - operationName = mock(OperationName.class); - - - } - - @org.junit.Test - public void testCheckOperationInstance() throws Exception { - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(objectId); - when(user.getObjects()).thenReturn(null); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage).fetchVNSpace(userId); - verify(tenantManage).getUser(); - verify(operation,times(2)).getTargetObject(); - verify(user,times(2)).getObjects(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(objectId); - when(user.getObjects()).thenReturn(object); - when(user.getObjects()).thenReturn(object); - - when(object.getNode()).thenReturn(nodeList); - when(object.getNode()).thenReturn(nodeList); - when(nodeList.get(0).getNodeId()).thenReturn(nodeId); - when(nodeId.getValue()).thenReturn(new String("1")); - when(operation.getTargetObject()).thenReturn(nodeId2); - when(nodeId2.getValue()).thenReturn(new String("1")); - - when(object.getConnection()).thenReturn(connectionList); - when(object.getConnection()).thenReturn(connectionList); - when(connectionList.get(0).getConnectionId()).thenReturn(connectionId); - when(connectionId.getValue()).thenReturn(new String("1")); - when(operation.getTargetObject()).thenReturn(connectionId2); - when(connectionId2.getValue()).thenReturn(new String("1")); - - when(object.getFlow()).thenReturn(flowList); - when(object.getFlow()).thenReturn(flowList); - when(flowList.get(0).getFlowId()).thenReturn(flowId); - when(flowId.getValue()).thenReturn(new String("1")); - when(operation.getTargetObject()).thenReturn(flowId2); - when(flowId2.getValue()).thenReturn(new String("1")); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(2)).fetchVNSpace(userId); - verify(tenantManage,times(2)).getUser(); - verify(operation,times(7)).getTargetObject(); - verify(user,times(5)).getObjects(); - verify(object,times(2)).getNode(); - verify(nodeList.get(0)).getNodeId(); - verify(nodeId).getValue(); - verify(object,times(2)).getConnection(); - verify(connectionList.get(0)).getConnectionId(); - verify(connectionId).getValue(); - verify(object,times(2)).getFlow(); - verify(flowList.get(0)).getFlowId(); - verify(flowId).getValue(); - verify(flowId2,times(3)).getValue(); - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(objectId); - when(user.getObjects()).thenReturn(object); - when(user.getObjects()).thenReturn(object); - - when(object.getNode()).thenReturn(nodeList); - when(object.getNode()).thenReturn(nodeList); - when(nodeList.get(0).getNodeId().getValue()).thenReturn(new String("1")); - when(operation.getTargetObject().getValue()).thenReturn(new String("2")); - - when(object.getConnection()).thenReturn(connectionList); - when(object.getConnection()).thenReturn(connectionList); - when(connectionList.get(0).getConnectionId().getValue()).thenReturn(new String("1")); - when(operation.getTargetObject().getValue()).thenReturn(new String("2")); - - when(object.getFlow()).thenReturn(flowList); - when(object.getFlow()).thenReturn(flowList); - when(flowList.get(0).getFlowId().getValue()).thenReturn(new String("1")); - when(operation.getTargetObject().getValue()).thenReturn(new String("2")); - - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(3)).fetchVNSpace(userId); - verify(tenantManage,times(3)).getUser(); - verify(operation,times(15)).getTargetObject(); - verify(user,times(8)).getObjects(); - verify(object,times(4)).getNode(); - verify(nodeList.get(0),times(3)).getNodeId(); - verify(nodeId,times(2)).getValue(); - verify(object,times(4)).getConnection(); - verify(connectionList.get(0),times(3)).getConnectionId(); - verify(connectionId,times(2)).getValue(); - verify(object,times(4)).getFlow(); - verify(flowList.get(0),times(3)).getFlowId(); - verify(flowId,times(2)).getValue(); - verify(flowId2,times(3)).getValue(); - -/* - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(null); - when(user.getObjects()).thenReturn(object); - when(user.getOperations()).thenReturn(operations); - when(user.getOperations().getOperation()).thenReturn(operationList); - when(tenantManage.getUser().getOperations().getOperation()).thenReturn(operationList); - when(operationList.get(0).getOperationId()).thenReturn(operationId); - when(operation.getOperationId()).thenReturn(operationId); - when(operationList.get(0).getOperationName()).thenReturn(operationName); - when(operation.getOperationName()).thenReturn(operationName); - perationInstanceCheckTest.checkOperationInstance(userId,operation);*/ - - - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - when(operation.getTargetObject()).thenReturn(objectId); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(4)).fetchVNSpace(userId); - verify(tenantManage,times(4)).getUser(); - verify(operation,times(16)).getTargetObject(); - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - when(operation.getTargetObject()).thenReturn(null); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(5)).fetchVNSpace(userId); - verify(tenantManage,times(5)).getUser(); - verify(operation,times(17)).getTargetObject(); - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(null); - when(operation.getTargetObject()).thenReturn(null); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(6)).fetchVNSpace(userId); - verify(tenantManage,times(6)).getUser(); - verify(operation,times(18)).getTargetObject(); - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(null); - when(user.getObjects()).thenReturn(object); - when(user.getOperations()).thenReturn(null); - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(7)).fetchVNSpace(userId); - verify(tenantManage,times(7)).getUser(); - verify(operation,times(20)).getTargetObject(); - verify(user,times(8)).getObjects(); - verify(user,times(2)).getOperations(); - - - - - doNothing().when(tenantManage).fetchVNSpace(userId); - when(tenantManage.getUser()).thenReturn(user); - when(operation.getTargetObject()).thenReturn(objectId); - when(user.getObjects()).thenReturn(object); - when(user.getObjects()).thenReturn(object); - - when(object.getNode()).thenReturn(null); - when(object.getConnection()).thenReturn(null); - when(object.getFlow()).thenReturn(null); - - perationInstanceCheckTest.checkOperationInstance(userId,operation); - verify(tenantManage,times(8)).fetchVNSpace(userId); - verify(tenantManage,times(8)).getUser(); - verify(operation,times(22)).getTargetObject(); - verify(user,times(11)).getObjects(); - verify(object,times(5)).getNode(); - verify(object,times(5)).getConnection(); - verify(object,times(5)).getFlow(); - - - - } -} \ 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 index b6127da..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/instancecheck/ResultInstanceCheckTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.opendaylight.nemo.user.vnspacemanager.instancecheck; - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; - -import junit.framework.TestCase; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import static org.mockito.Mockito.*; -import static org.junit.Assert.*; - - -import org.opendaylight.nemo.user.tenantmanager.TenantManage; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results; - -import javax.xml.transform.Result; - -/** - * Created by Thomas Liu on 2015/11/26. - */ -public class ResultInstanceCheckTest extends junit.framework.TestCase { - - private ResultInstanceCheck resultInstanceCheckTest; - private TenantManage tenantManage; - private Results results; - private UserId userId; - @org.junit.Before - public void setUp() throws Exception { - tenantManage = mock(TenantManage.class); - resultInstanceCheckTest = new ResultInstanceCheck(tenantManage); - results = mock(Results.class); - userId = mock(UserId.class); - } - - @org.junit.Test - public void testCheckResultInstance() throws Exception { - resultInstanceCheckTest.checkResultInstance(userId,results); - - } -} \ 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 index 9057916..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/LanguageIntentTest.java +++ /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 index 5eecf5b..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteConnectionTest.java +++ /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 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(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 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 index 3a5daa5..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteFlowTest.java +++ /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 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(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 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 index 0982587..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteIntentTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent; -import 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.StructureStyleNemoDeleteInput; -public class DeleteIntentTest{ - private DataBroker dataBroker; - private TenantManage tenantManage; - private DeleteNode deleteNode; - private DeleteConnection deleteConnection; - private DeleteFlow deleteFlow; - private DeleteOperation deleteOperation; - private DeleteResult deleteResult; - private AAA aaa; - private StructureStyleNemoDeleteInput styleNemoDeleteInput; - private DeleteIntent deleteintent; -@org.junit.Before -public void setUp() throws Exception{ - dataBroker=mock(DataBroker.class); - tenantManage=mock(TenantManage.class); - deleteNode=mock(DeleteNode.class); - deleteConnection=mock(DeleteConnection.class); - deleteFlow=mock(DeleteFlow.class); - deleteOperation=mock(DeleteOperation.class); - deleteResult=mock(DeleteResult.class); - aaa=mock(AAA.class); - styleNemoDeleteInput=mock(StructureStyleNemoDeleteInput.class); - deleteintent=mock(DeleteIntent.class); -} -@org.junit.Test -public void styleNemoDeleteOutputTest(){ - Assert.assertNull(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput)); -} -} \ 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 index 264bf59..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteNodeTest.java +++ /dev/null @@ -1,93 +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.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.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.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; -import org.opendaylight.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 org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; -import java.util.*; -public class DeleteNodeTest{ - private DataBroker dataBroker; - private TenantManage tenantManage; - private UserId userid; - private NodeId nodeid; - private DeleteNode deletenode; - private User user; - private Objects objects; - private Node node; - private NodeId notnodeid; - private List nodeList; - private WriteTransaction writetransaction; - @org.junit.Before - public void setUp() throws Exception{ - dataBroker=mock(DataBroker.class); - tenantManage=mock(TenantManage.class); - userid=mock(UserId.class); - nodeid=mock(NodeId.class); - deletenode=new DeleteNode(dataBroker,tenantManage); - user=mock(User.class); - objects=mock(Objects.class); - node=mock(Node.class); - notnodeid=mock(NodeId.class); - nodeList=new ArrayList(1); - nodeList.add(node); - writetransaction=mock(WriteTransaction.class); - } - @org.junit.Test - public void DeleNodeHandlingTest(){ - CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class); - ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class); - when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction); - //branch 1 - when(tenantManage.getUser()).thenReturn(null); - Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no user in data store."); - //branch 2 - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(null); - Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null); - //branch 3 - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(objects); - when(objects.getNode()).thenReturn(null); - Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no nodes instances in data store."); - //branch 4 - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(objects); - when(objects.getNode()).thenReturn(nodeList); - when(node.getNodeId()).thenReturn(notnodeid); - Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"The node instance" +nodeid.toString()+"is not exist.Could not be deleted"); - //branch 5 - when(tenantManage.getUser()).thenReturn(user); - when(user.getObjects()).thenReturn(objects); - when(objects.getNode()).thenReturn(nodeList); - when(node.getNodeId()).thenReturn(nodeid); - when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction); - CheckedFuture f; - f=mock(CheckedFuture.class); - when(writetransaction.submit()).thenReturn(f); - Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null); - } -} 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 index 4c97735..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteOperationTest.java +++ /dev/null @@ -1,93 +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.OperationId; -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.Operations; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.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 org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import static org.junit.Assert.*; -import static org.mockito.Mockito.*; -import java.util.*; -public class DeleteOperationTest{ - private DataBroker dataBroker; - private TenantManage tenantManage; - private UserId userId; - private User user; - private OperationId operationId; - private DeleteOperation deleteoperation; - private Operations operations; - private Operation operation; - private OperationId notoperationId; - private List operationList; - private WriteTransaction writetransaction; - @org.junit.Before - public void setUp() throws Exception{ - dataBroker=mock(DataBroker.class); - tenantManage=mock(TenantManage.class); - userId=mock(UserId.class); - operationId=mock(OperationId.class); - user=mock(User.class); - operation=mock(Operation.class); - notoperationId=mock(OperationId.class); - deleteoperation=new DeleteOperation(dataBroker,tenantManage); - operations=mock(Operations.class); - operationList=new ArrayList(1); - operationList.add(operation); - writetransaction=mock(WriteTransaction.class); - } - @org.junit.Test - public void DeleteOperationhandlingTest(){ - CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class); - ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class); - when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction); - //branch 1 - when(tenantManage.getUser()).thenReturn(null); - Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no user in the data store."); - //branch 2 - when(tenantManage.getUser()).thenReturn(user); - when(user.getOperations()).thenReturn(null); - Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null); - //branch 3 - when(tenantManage.getUser()).thenReturn(user); - when(user.getOperations()).thenReturn(operations); - when(operations.getOperation()).thenReturn(null); - Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no operation instances in the data store."); - //branch 4 - when(tenantManage.getUser()).thenReturn(user); - when(user.getOperations()).thenReturn(operations); - when(operations.getOperation()).thenReturn(operationList); - when(operation.getOperationId()).thenReturn(notoperationId); - Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"The operation instance" +operationId.toString()+"is not exist. Could not be deleted."); - //branch 5 - when(tenantManage.getUser()).thenReturn(user); - when(user.getOperations()).thenReturn(operations); - when(operations.getOperation()).thenReturn(operationList); - when(operation.getOperationId()).thenReturn(operationId); - when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction); - CheckedFuture f; - f=mock(CheckedFuture.class); - when(writetransaction.submit()).thenReturn(f); - Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null); - } -} \ 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 index df3733f..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/deleteintent/DeleteResultTest.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent; -import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*; -import static org.mockito.Mockito.mock; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.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.structure.style.nemo.delete.input.Results; -import java.util.*; -import static org.mockito.Mockito.*; -public class DeleteResultTest{ - private UserId userId; - private Results results; - private DeleteResult deleteresult; - @org.junit.Before - public void setUp()throws Exception{ - userId=mock(UserId.class); - results=mock(Results.class); - deleteresult=new DeleteResult(); - - } - @org.junit.Test - public void DeleteResultHandlingTest() throws Exception{ - Assert.assertNull(deleteresult.DeleteResultHandling(userId,results)); - } -} \ 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 index 63508c6..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java +++ /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 index 3595389..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateFlowTest.java +++ /dev/null @@ -1,52 +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.FlowInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck; -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.Flow; - -/** - * Created by ldzd11 on 2015/11/9. - */ -public class UpdateFlowTest { - - private UpdateFlow updateFlow; - - private DataBroker dataBroker; - private TenantManage tenantManage; - private FlowDefinitionCheck flowDefinitionCheck; - private FlowInstanceCheck flowInstanceCheck; - private UserId userId; - private Flow flow; - @org.junit.Before - public void setUp() throws Exception { - dataBroker = mock(DataBroker.class); - tenantManage = mock(TenantManage.class); - flowDefinitionCheck = mock(FlowDefinitionCheck.class); - flowInstanceCheck = mock(FlowInstanceCheck.class); - userId = mock(UserId.class); - flow = mock(Flow.class); - - - updateFlow = mock(UpdateFlow.class); - - } - - @org.junit.Test - public void testFlowHandling() throws Exception { - - Assert.assertNull(updateFlow.FlowHandling(userId, flow)); - - } -} \ 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 index fb934f5..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateIntentTest.java +++ /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 index b3bcf0d..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java +++ /dev/null @@ -1,53 +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.NodeInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck; -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.Node; -/** - * Created by ldzd11 on 2015/11/9. - */ -public class UpdateNodeTest { - - - private UpdateNode updateNode; - - private DataBroker dataBroker; - private NodeDefinitionCheck nodeCheck; - private NodeInstanceCheck nodeInstanceCheck; - private UserId userId; - private Node node; - - private TenantManage tenantManage; - @org.junit.Before - public void setUp() throws Exception { - dataBroker = mock(DataBroker.class); - nodeCheck = mock(NodeDefinitionCheck.class); - nodeInstanceCheck = mock(NodeInstanceCheck.class); - - tenantManage = mock(TenantManage.class); - userId = mock(UserId.class); - node = mock(Node.class); - - - updateNode = mock(UpdateNode.class); - - } - - @org.junit.Test - public void testNodeHandling() throws Exception { - Assert.assertNull(updateNode.NodeHandling(userId, node)); - - } -} \ 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 index 2666ae4..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateOperationTest.java +++ /dev/null @@ -1,50 +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.OperationInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck; -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.operations.Operation; -/** - * Created by ldzd11 on 2015/11/9. - */ -public class UpdateOperationTest { - - private UpdateOperation updateOperation; - - private DataBroker dataBroker; - private TenantManage tenantManage; - private OperationDefinitionCheck operationDefinitionCheck; - private OperationInstanceCheck operationInstanceCheck; - - private UserId userId; - private Operation operation; - @org.junit.Before - public void setUp() throws Exception { - dataBroker = mock(DataBroker.class); - tenantManage = mock(TenantManage.class); - operationDefinitionCheck = mock(OperationDefinitionCheck.class); - operationInstanceCheck = mock(OperationInstanceCheck.class); - userId = mock(UserId.class); - operation = mock(Operation.class); - - updateOperation = mock(UpdateOperation.class); - - } - - @org.junit.Test - public void testOperationHandling() throws Exception { - Assert.assertNull(updateOperation.OperationHandling(userId, operation)); - - } -} \ 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 index fca411b..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateResultTest.java +++ /dev/null @@ -1,52 +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.ResultInstanceCheck; -import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck; -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.Results; -/** - * Created by ldzd11 on 2015/11/9. - */ -public class UpdateResultTest { - - - private UpdateResult updateResult; - - private DataBroker dataBroker; - private TenantManage tenantManage; - private ResultDefinitionCheck resultDefinitionCheck; - private ResultInstanceCheck resultInstanceCheck; - private UserId userId; - private Results results; - - @org.junit.Before - public void setUp() throws Exception { - dataBroker = mock(DataBroker.class); - tenantManage = mock(TenantManage.class); - resultDefinitionCheck = mock(ResultDefinitionCheck.class); - resultInstanceCheck = mock(ResultInstanceCheck.class); - userId = mock(UserId.class); - results = mock(Results.class); - - updateResult = mock(UpdateResult.class); - - - } - - @org.junit.Test - public void testResultHandling() throws Exception { - Assert.assertNull(updateResult.ResultHandling(userId, results)); - - } -} \ 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 index 20e0fda..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ConnectionDefinitionCheckTest.java +++ /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 connectionDefinitionList; - private Connection connection; - private List connectionProperty; - private List 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(3); - property = mock(Property.class); - propertyDefinition = mock(PropertyDefinition.class); - connectionProperty = new ArrayList(3); - propertyDefinitionList = new ArrayList(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 index 27390f6..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/FlowDefinitionCheckTest.java +++ /dev/null @@ -1,89 +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.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.object.rev151010.FlowPropertyDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue; -import org.opendaylight.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.List; - -import java.util.Collection; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.ListIterator; - - -import static org.mockito.Mockito.*; - -@RunWith(PowerMockRunner.class) -@PrepareForTest(ConnectionDefinitionCheck.class) -public class FlowDefinitionCheckTest{ - private FlowDefinitionCheck flowDefinitionCheck; - private DataBroker dataBroker; - private List matchItemDefinitionList; - private Flow flow; - // private static final Logger LOG; - @org.junit.Before - public void setUp() throws Exception { - matchItemDefinitionList = new LinkedList(); - // LOG = mock(Logger.class); - - dataBroker = mock(DataBroker.class); - flow = mock(Flow.class); - flowDefinitionCheck = new FlowDefinitionCheck(dataBroker); - } - @org.junit.Test - public void testcheckConnectionDefinition() throws Exception { - CheckedFuture matchitemdefinitionFuture = mock(CheckedFuture.class); - ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class); - when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction); - when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(matchitemdefinitionFuture); - Assert.assertNotNull(flow.getMatchItem()); - Assert.assertEquals(flowDefinitionCheck.CheckDefinition(flow),"The match item has not been defined."); - //dataBroker test - verify(dataBroker).newReadOnlyTransaction(); - verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)); - verifyPrivate(flowDefinitionCheck).invoke("fetchMatchItemDefinitions"); - - } - -} \ 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 index b201081..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/NodeDefinitionCheckTest.java +++ /dev/null @@ -1,122 +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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition; - -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.List; - -import java.util.Collection; -import java.util.Iterator; -import java.util.ArrayList; -import java.util.ListIterator; - -import java.lang.reflect.Method; -import static org.mockito.Mockito.*; - -@RunWith(PowerMockRunner.class) -@PrepareForTest(NodeDefinitionCheck.class) -public class NodeDefinitionCheckTest{ - private NodeDefinitionCheck nodeDefinitionCheck; - private DataBroker dataBroker; - private List nodeDefinitionList; - private Node node; - private NodeDefinition nodeDefinition; - private List nodeProperties; - private List nodePropertyDefinitions; - private Property property; - private PropertyDefinition propertyDefinition; - //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class); - @org.junit.Before - public void setUp() throws Exception { - nodeDefinition = mock(NodeDefinition.class); - nodeDefinitionList = new ArrayList(3); - // LOG = mock(Logger.class); - node = mock(Node.class); - dataBroker = mock(DataBroker.class); - nodeDefinitionCheck = new NodeDefinitionCheck(dataBroker); - property = mock(Property.class); - propertyDefinition = mock(PropertyDefinition.class); - nodeProperties = new ArrayList(3); - nodePropertyDefinitions = new ArrayList(3); - } - @org.junit.Test - public void testcheckConnectionDefinition() throws Exception { - CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class); - ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class); - when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction); - when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture); - //branch nodeDefinitionList null - Assert.assertEquals(nodeDefinitionCheck.CheckNodeDefinition(node),"This type of Node has not been defined."); - - //use reflact test private checkProperty - Method testcheckProperty = nodeDefinitionCheck.getClass().getDeclaredMethod("checkProperty",List.class,List.class); - testcheckProperty.setAccessible(true); - //branch1 nodeProperties null, nodePropertyDefinition null - Assert.assertNull(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions)); - //branch2 - nodeProperties.add(property); - nodePropertyDefinitions.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(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions),"The property"+property.getPropertyName().toString()+"has not been defined."); - //branch3 - 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(nodeDefinitionCheck).invoke("fetchNodeDefinitions"); - } -} \ 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 index b759b94..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/OperationDefinitionCheckTest.java +++ /dev/null @@ -1,99 +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 com.google.common.base.Optional; -import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.ListenableFuture; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -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.Function; -import com.google.common.util.concurrent.CheckedFuture; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ParameterName; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.condition.parameter.definition.ParameterMatchPatterns; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import java.util.List; - -import java.util.Collection; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.ListIterator; - -import static org.mockito.Mockito.*; -@RunWith(PowerMockRunner.class) -@PrepareForTest(ConnectionDefinitionCheck.class) -public class OperationDefinitionCheckTest{ - private OperationDefinitionCheck operationDefinitionCheck; - private DataBroker dataBroker; - private ActionDefinition actionDefinition; - private ConditionParameterDefinition conditionParameterDefinition; - private List actionDefinitionList; - private List conditionParameterDefinitionList; - private Operation operation; - //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class); - - @org.junit.Before - public void setUp() throws Exception { - actionDefinitionList = new LinkedList(); - conditionParameterDefinitionList = new LinkedList(); - // LOG = mock(Logger.class); - operation = mock(Operation.class); - dataBroker = mock(DataBroker.class); - operationDefinitionCheck = new OperationDefinitionCheck(dataBroker); - } - @org.junit.Test - public void testcheckConnectionDefinition() throws Exception { - CheckedFuture actiondefinitionFuture = mock(CheckedFuture.class); - CheckedFuture conditionparadefinitionFuture = mock(CheckedFuture.class); - ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class); - when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction); - when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(actiondefinitionFuture); - when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(conditionparadefinitionFuture); - //branch null - Assert.assertNotNull(operation.getAction()); - Assert.assertNotNull(operation.getConditionSegment()); - Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"There are no actions has been defined in the data store."); - when(operation.getAction()).thenReturn(null); - Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"This condition has not been defined in data store."); - // - - verify(dataBroker,times(4)).newReadOnlyTransaction(); - verify(readOnlyTransaction,times(4)).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)); - - } -} \ 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 index 919d49c..0000000 --- a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/syntaxcheck/ResultDefinitionCheckTest.java +++ /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 -- 2.36.6