<jacoco.version>0.7.2.201409121644</jacoco.version>
<sonar.jacoco.reportPath>target/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
<sonar.jacoco.itReportPath>target/code-coverage/jacoco-it.exec</sonar.jacoco.itReportPath>
- <powermock.version>1.4.10</powermock.version>
+ <powermock.version>1.4.10</powermock.version>
</properties>
<dependencies>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<scope>test</scope>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
-
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
*/\r
package org.opendaylight.nemo.user;\r
\r
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error; \r
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok; \r
-\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.nemo.intent.IntentResolutionException;\r
import org.opendaylight.nemo.intent.IntentResolver;\r
import org.opendaylight.nemo.user.transactionmanager.TransactionBegin;\r
import org.opendaylight.nemo.user.transactionmanager.TransactionEnd;\r
import org.opendaylight.nemo.user.vnspacemanager.languagestyle.LanguageIntent;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException;\r
import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteIntent;\r
import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;\r
-import org.opendaylight.nemo.user.vnspacemanager.VNSpaceManagement;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.*;\r
import org.opendaylight.yangtools.yang.common.RpcResult;\r
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
\r
import java.util.concurrent.Future;\r
\r
+import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Error;\r
+import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.CommonRpcResult.ResultCode.Ok;\r
+\r
/**\r
* Created by z00293636 on 2015/9/7.\r
*/\r
\r
private final DataBroker dataBroker;\r
\r
- private VNSpaceManagement vnSpaceManagement;\r
private RegisterUser registerUser;\r
private UpdateIntent updateIntent;\r
private DeleteIntent deleteIntent;\r
this.dataBroker = dataBroker0;\r
\r
this.intentResolver = intentResolver0;\r
- vnSpaceManagement = new VNSpaceManagement(dataBroker);\r
tenantManage = new TenantManage(dataBroker);\r
aaa = new AAA(tenantManage);\r
registerUser = new RegisterUser(tenantManage);\r
updateIntent = new UpdateIntent(dataBroker,tenantManage);\r
deleteIntent = new DeleteIntent(dataBroker, tenantManage);\r
- languageIntent = new LanguageIntent(dataBroker);\r
+ languageIntent = new LanguageIntent(dataBroker,tenantManage);\r
advancedQuery = new AdvancedQuery(dataBroker, tenantManage);\r
-\r
transactionBegin = new TransactionBegin();\r
transactionEnd = new TransactionEnd();\r
\r
transaction = false;\r
informresolver = false;\r
}\r
-\r
@Override\r
public Future<RpcResult<AdvancedNemoQueryOutput>> advancedNemoQuery(AdvancedNemoQueryInput input) {\r
- final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();\r
\r
+ final AdvancedNemoQueryOutputBuilder outputBuilder = new AdvancedNemoQueryOutputBuilder();\r
String errorInfo = advancedQuery.advancedQuery(aaa, input);\r
- if (errorInfo != null)\r
- {\r
+\r
+ if (errorInfo != null){\r
outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
}\r
- else\r
- {\r
+ else{\r
outputBuilder.setResultCode(Ok).setMessage(advancedQuery.getAdvancedQueryReuslt(input));\r
}\r
\r
- return RpcResultBuilder.success(outputBuilder).buildFuture();\r
+ return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<BeginTransactionOutput>> beginTransaction(BeginTransactionInput input) {\r
- final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();\r
\r
- if (transaction)\r
- {\r
+ final BeginTransactionOutputBuilder outputBuilder = new BeginTransactionOutputBuilder();\r
+ if (transaction){\r
outputBuilder.setResultCode(Error).setMessage("The previous transaction has not been finished.");\r
}\r
- else\r
- {\r
+ else{\r
String errorInfo = transactionBegin.transactionbegin(aaa,input);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
}\r
- else\r
- {\r
+ else{\r
transaction = true;\r
outputBuilder.setResultCode(Ok).setMessage("Transaction Begin.");\r
}\r
}\r
-\r
return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<EndTransactionOutput>> endTransaction(EndTransactionInput input) {\r
+\r
final EndTransactionOutputBuilder outputBuilder = new EndTransactionOutputBuilder();\r
\r
- if (!transaction)\r
- {\r
+ if (!transaction){\r
outputBuilder.setResultCode(Error).setMessage("The transaction has not started.");\r
}\r
- else\r
- {\r
+ else{\r
String errorInfo = transactionEnd.transactionend(aaa,input);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
}\r
- else\r
- {\r
+ else{\r
transaction = false;\r
- if (informresolver)\r
- {\r
+ if (informresolver){\r
informresolver = false;\r
- try\r
- {\r
+ try{\r
intentResolver.resolveIntent(input.getUserId());\r
outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");\r
}\r
- catch (IntentResolutionException | VNMappingException e)\r
- {\r
+ catch (IntentResolutionException | VNMappingException e){\r
e.printStackTrace();\r
outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
}\r
- catch (Exception e)\r
- {\r
+ catch (Exception e){\r
e.printStackTrace();\r
}\r
}\r
- else\r
- {\r
+ else{\r
outputBuilder.setResultCode(Ok).setMessage("The transaction ends.");\r
}\r
-\r
}\r
}\r
-\r
return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<LanguageStyleNemoRequestOutput>> languageStyleNemoRequest(LanguageStyleNemoRequestInput input) {\r
- final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder();\r
\r
- String errorInfo = languageIntent.LanIntentHandler(aaa,input);\r
-\r
- if (errorInfo != null)\r
- {\r
- outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+ final LanguageStyleNemoRequestOutputBuilder outputBuilder = new LanguageStyleNemoRequestOutputBuilder();\r
+ try {\r
+ String errorInfo = languageIntent.LanIntentHandler(aaa,input);\r
+ if (errorInfo != null){\r
+ if (errorInfo.contains(NEMOConstants.Results)){\r
+ outputBuilder.setResultCode(Ok).setMessage(errorInfo);\r
+ }\r
+ else{\r
+ outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+ }\r
+ }\r
+ else{\r
+ outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction.");\r
+ informresolver = true;\r
+ }\r
}\r
- else\r
- {\r
- outputBuilder.setResultCode(Ok).setMessage("The intent has been stored in this transaction.");\r
- informresolver = true;\r
+ catch (ParseException | NumberFormatException e) {\r
+ e.printStackTrace();\r
+ outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
}\r
-\r
return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<RegisterUserOutput>> registerUser(RegisterUserInput input) {\r
- final RegisterUserOutputBuilder registerUserOutputBuilder = new RegisterUserOutputBuilder();\r
\r
+ final RegisterUserOutputBuilder outputBuilder = new RegisterUserOutputBuilder();\r
String errorInfo = registerUser.registerUser(input);\r
\r
- if (errorInfo != null)\r
- {\r
- registerUserOutputBuilder.setResultCode(Error).setMessage(errorInfo);\r
+ if (errorInfo != null){\r
+ outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
}\r
- else\r
- {\r
- registerUserOutputBuilder.setResultCode(Ok).setMessage("Register user successfully.");\r
+ else{\r
+ outputBuilder.setResultCode(Ok).setMessage("Register user successfully.");\r
}\r
-\r
- return RpcResultBuilder.success(registerUserOutputBuilder).buildFuture();\r
+ return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<StructureStyleNemoDeleteOutput>> structureStyleNemoDelete(StructureStyleNemoDeleteInput input) {\r
- final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder();\r
\r
+ final StructureStyleNemoDeleteOutputBuilder outputBuilder = new StructureStyleNemoDeleteOutputBuilder();\r
String errorInfo = deleteIntent.styleNemoDeleteOutput(aaa,input);\r
\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
outputBuilder.setResultCode(Error).setMessage(errorInfo);\r
}\r
- else\r
- {\r
+ else{\r
outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
informresolver = true;\r
}\r
-\r
return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
\r
@Override\r
public Future<RpcResult<StructureStyleNemoUpdateOutput>> structureStyleNemoUpdate(StructureStyleNemoUpdateInput input) {\r
- final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder();\r
-\r
- String erroInfo = updateIntent.updateIntent(aaa,input);\r
\r
- if (erroInfo != null)\r
- {\r
- outputBuilder.setResultCode(Error).setMessage(erroInfo);\r
+ final StructureStyleNemoUpdateOutputBuilder outputBuilder = new StructureStyleNemoUpdateOutputBuilder();\r
+ try {\r
+ String erroInfo = updateIntent.updateIntent(aaa,input);\r
+ if (erroInfo != null){\r
+ outputBuilder.setResultCode(Error).setMessage(erroInfo);\r
+ }\r
+ else{\r
+ outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
+ informresolver = true;\r
+ }\r
}\r
- else\r
- {\r
- outputBuilder.setResultCode(Ok).setMessage("The intent has been handled by user manager successfully.");\r
- informresolver = true;\r
+ catch (NumberFormatException e){\r
+ e.printStackTrace();\r
+ outputBuilder.setResultCode(Error).setMessage(e.getMessage());\r
}\r
-\r
return RpcResultBuilder.success(outputBuilder).buildFuture();\r
}\r
}\r
*/\r
package org.opendaylight.nemo.user.advancedquery;\r
\r
-import java.util.List;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.nemo.user.tenantmanager.AAA;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
import com.google.common.base.Optional;\r
import com.google.common.util.concurrent.FutureCallback;\r
import com.google.common.util.concurrent.Futures;\r
import com.google.common.util.concurrent.ListenableFuture;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.util.List;\r
\r
/**\r
* Created by z00293636 on 2015/8/29.\r
*/\r
package org.opendaylight.nemo.user.advancedquery;\r
\r
-import java.util.List;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.QueryConditionDefinitions;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.advanced.nemo.query.input.QueryCondition;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.QueryConditionDefinition;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.query.condition.definitions.query.condition.definition.QueryConditionMatchPatterns;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
import com.google.common.base.Optional;\r
import com.google.common.util.concurrent.FutureCallback;\r
import com.google.common.util.concurrent.Futures;\r
import com.google.common.util.concurrent.ListenableFuture;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.util.List;\r
\r
/**\r
* Created by z00293636 on 2015/9/16.\r
\r
private String checkUser(UserId userId, UserName userName, UserPassword userPassword, UserRoleName userRoleName)\r
{\r
+ tenantManage.fetchUsers();\r
final Map<UserId, User> users = tenantManage.getUsers();\r
String errorInfo = null;\r
- final User user = (users != null) ? users.get(userId) : null;\r
+ final User user = users.get(userId);\r
\r
- if (user != null) {\r
+ if (users.containsKey(userId) && user != null) {\r
if (!user.getUserName().equals(userName)) {\r
errorInfo = "The user name is not right.";\r
} else if (!user.getUserPassword().equals(userPassword)) {\r
} else if (!user.getUserRole().equals(userRoleName)) {\r
errorInfo = "The role is not right.";\r
}\r
-\r
} else {\r
errorInfo = "The user is not exist.";\r
}\r
{\r
String errorInfo = null;\r
\r
+ tenantManage.fetchUserRoles();\r
Map<UserRoleName, UserRole> userRoles = tenantManage.getUserRoles();\r
+ tenantManage.fetchUsers();\r
Map<UserId, User> users = tenantManage.getUsers();\r
\r
- if (userRoles == null || userRoles.isEmpty())\r
+ if (userRoles.isEmpty())\r
{\r
errorInfo = "There are no roles be defined.";\r
}\r
{\r
if (userRoles.containsKey(input.getUserRole()))\r
{\r
- if (users != null && users.containsKey(input.getUserId()))\r
+ if (users.containsKey(input.getUserId()))\r
{\r
errorInfo = "The user has been registered.";\r
}\r
package org.opendaylight.nemo.user.tenantmanager;\r
\r
import java.util.HashMap;\r
+import java.util.List;\r
import java.util.Map;\r
import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import com.google.common.base.Function;\r
import com.google.common.base.Optional;\r
-import com.google.common.collect.Maps;\r
import com.google.common.util.concurrent.CheckedFuture;\r
import com.google.common.util.concurrent.FutureCallback;\r
import com.google.common.util.concurrent.Futures;\r
import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
\r
/**\r
* Created by z00293636 on 2015/8/29.\r
public class TenantManage {\r
private static final Logger LOG = LoggerFactory.getLogger(TenantManage.class);\r
private DataBroker dataBroker;\r
+ private final SettableFuture<List<UserRole>> userRoleListFuture = SettableFuture.create();\r
+ private final SettableFuture<List<User>> usersListFuture = SettableFuture.create();\r
private User user;\r
\r
public TenantManage(DataBroker dataBroker)\r
this.dataBroker = dataBroker;\r
}\r
\r
+ private void setUserRoleList(List<UserRole> userRoleList)\r
+ {\r
+ this.userRoleListFuture.set(userRoleList);\r
+ }\r
+\r
+ private void setUserList(List<User> userList)\r
+ {\r
+ this.usersListFuture.set(userList);\r
+ }\r
+\r
private void setUser(User user)\r
{\r
this.user = user;\r
}\r
\r
- public User getUser()\r
- {\r
- return user;\r
+ public List<UserRole> getUserRoleList() {\r
+ try {\r
+ return userRoleListFuture.get(1, TimeUnit.SECONDS);\r
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
}\r
\r
/**\r
*\r
- * @return null if an error was encountered, or an empty map if there was no\r
- * error but no data was retrieved.\r
+ * @return Map from UserRoleName to UserRole. If no roles exist, an empty (not-null) map is returned.\r
*/\r
public Map<UserRoleName, UserRole> getUserRoles() {\r
+ final Map<UserRoleName, UserRole> map = new HashMap<>();\r
+ final List<UserRole> userRoleList = getUserRoleList();\r
+ if (userRoleList != null) {\r
+ for (UserRole role : userRoleList) {\r
+ map.put(role.getRoleName(), role);\r
+ }\r
+ }\r
+ return map;\r
+ }\r
\r
- InstanceIdentifier<UserRoles> userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build();\r
- ListenableFuture<Optional<UserRoles>> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read(\r
- LogicalDatastoreType.CONFIGURATION, userRolesInsId);\r
-\r
- final Optional<UserRoles> userRolesOpt;\r
+ public List<User> getUsersList() {\r
try {\r
- // TODO: consider time out here?\r
- userRolesOpt = userRolesFuture.get();\r
- } catch (InterruptedException | ExecutionException e) {\r
- LOG.error("Cannot read role information.", e);\r
+ return usersListFuture.get(1, TimeUnit.SECONDS);\r
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read user information.", e);\r
return null;\r
}\r
+ }\r
+\r
+ /**\r
+ *\r
+ * @return Map from UserId to User. If no users exist, an empty (not-null) map is returned.\r
+ */\r
+ public Map<UserId, User> getUsers()\r
+ {\r
+ final Map<UserId, User> map = new HashMap<>();\r
+ final List<User> userList = getUsersList();\r
+ if (userList != null) {\r
+ for (User user : userList) {\r
+ map.put(user.getUserId(), user);\r
+ }\r
+ }\r
+ return map;\r
+ }\r
+\r
+ public User getUser()\r
+ {\r
+ return user;\r
+ }\r
+\r
+ public void fetchUserRoles(){\r
+\r
+ InstanceIdentifier<UserRoles> userRolesInsId = InstanceIdentifier.builder(UserRoles.class).build();\r
+ ListenableFuture<Optional<UserRoles>> userRolesFuture = this.dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, userRolesInsId);\r
+ Futures.addCallback(userRolesFuture, new FutureCallback<Optional<UserRoles>>() {\r
+ @Override\r
+ public void onSuccess(Optional<UserRoles> result)\r
+ {\r
+ setUserRoleList(result.get().getUserRole());\r
+ }\r
\r
- // TODO: change to Java 8 lambda expressions\r
- return userRolesOpt.transform(new Function<UserRoles, Map<UserRoleName, UserRole>>() {\r
@Override\r
- public Map<UserRoleName, UserRole> apply(UserRoles input) {\r
- return Maps.uniqueIndex(input.getUserRole(), new Function<UserRole, UserRoleName>() {\r
- @Override\r
- public UserRoleName apply(UserRole role) {\r
- return role.getRoleName();\r
- }\r
- });\r
+ public void onFailure(Throwable t)\r
+ {\r
+ LOG.error("Can not read role information.", t);\r
}\r
- }).or(new HashMap<UserRoleName, UserRole>());\r
+ });\r
}\r
\r
- /**\r
- *\r
- * @return null if an error was encountered, or an empty map if there was no\r
- * error but no data was retrieved.\r
- */\r
- public Map<UserId, User> getUsers() {\r
+ public void fetchUsers(){\r
InstanceIdentifier<Users> usersInsId = InstanceIdentifier.builder(Users.class).build();\r
- ListenableFuture<Optional<Users>> usersFuture = dataBroker.newReadOnlyTransaction().read(\r
- LogicalDatastoreType.CONFIGURATION, usersInsId);\r
-\r
- final Optional<Users> usersOpt;\r
- try {\r
- // TODO: consider time out here?\r
- usersOpt = usersFuture.get();\r
- } catch (InterruptedException | ExecutionException e) {\r
- LOG.error("Cannot read user information.", e);\r
- return null;\r
- }\r
+ ListenableFuture<Optional<Users>> usersFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, usersInsId);\r
+ Futures.addCallback(usersFuture, new FutureCallback<Optional<Users>>() {\r
+ @Override\r
+ public void onSuccess(Optional<Users> result)\r
+ {\r
+ setUserList(result.get().getUser());\r
+ }\r
\r
- // TODO: change to Java 8 lambda expressions\r
- return usersOpt.transform(new Function<Users, Map<UserId, User>>() {\r
@Override\r
- public Map<UserId, User> apply(Users input) {\r
- return Maps.uniqueIndex(input.getUser(), new Function<User, UserId>() {\r
- @Override\r
- public UserId apply(User user) {\r
- return user.getUserId();\r
- }\r
- });\r
+ public void onFailure(Throwable t)\r
+ {\r
+ LOG.error("Can not read users information.", t);\r
}\r
- }).or(new HashMap<UserId, User>());\r
+ });\r
}\r
\r
public void fetchVNSpace(UserId userId)\r
{\r
+ fetchUsers();\r
final Map<UserId, User> users = getUsers();\r
- setUser((users != null) ? users.get(userId) : null);\r
+\r
+ User user = users.get(userId);\r
+ if (users.containsKey(userId) && user != null) {\r
+ setUser(user);\r
+ }\r
}\r
\r
public void addUser(RegisterUserInput registerUserInput){\r
* Created by z00293636 on 2015/9/2.\r
*/\r
public class TransactionBegin {\r
-\r
- public String transactionbegin(AAA aaa,BeginTransactionInput input)\r
- {\r
- String errorInfo = null;\r
- errorInfo = aaa.checkUser(input);\r
- return errorInfo;\r
+ public String transactionbegin(AAA aaa,BeginTransactionInput input){\r
+ return aaa.checkUser(input);\r
}\r
}\r
* Created by z00293636 on 2015/9/2.\r
*/\r
public class TransactionEnd {\r
- public String transactionend(AAA aaa,EndTransactionInput input)\r
- {\r
- String errorInfo = null;\r
- errorInfo = aaa.checkUser(input);\r
- return errorInfo;\r
+ public String transactionend(AAA aaa,EndTransactionInput input){\r
+ return aaa.checkUser(input);\r
}\r
}\r
\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.nemo.user.tenantmanager.AAA;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.ParseException;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput;\r
\r
+import java.io.StringReader;\r
+\r
/**\r
* Created by z00293636 on 2015/8/31.\r
*/\r
public class LanguageIntent {\r
\r
private DataBroker dataBroker;\r
+ private TenantManage tenantManage;\r
+ private NEMOparser nemOparser;\r
\r
- public LanguageIntent(DataBroker dataBroker)\r
+ public LanguageIntent(DataBroker dataBroker, TenantManage tenantManage)\r
{\r
- this.dataBroker = dataBroker;\r
+ this.dataBroker = dataBroker;\r
+ this.tenantManage = tenantManage;\r
+ nemOparser = new NEMOparser(new StringReader(""));\r
}\r
\r
- public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput){\r
+ public String LanIntentHandler(AAA aaa, LanguageStyleNemoRequestInput languageStyleNemoRequestInput) throws ParseException {\r
\r
String errorInfo = null;\r
\r
}\r
else\r
{\r
- //TODO language parse\r
+ errorInfo = nemOparser.parseNEMO(languageStyleNemoRequestInput.getUserId(),languageStyleNemoRequestInput.getNemoStatement(),dataBroker,tenantManage);\r
}\r
\r
- return null;\r
+ return errorInfo;\r
}\r
}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/25.\r
+ */\r
+public interface NEMOConstants {\r
+ String range = "range";\r
+ String string = "string";\r
+ String integer = "int";\r
+ String ethaddr = "ethaddr";\r
+ String ipv4pref = "ipv4pref";\r
+ String ipv4addr = "ipv4addr";\r
+ String mac_address = "mac-address";\r
+ String ip_address = "ip-address";\r
+ String ip_prefix = "ip-prefix";\r
+ String gateway_ip = "gateway-ip";\r
+ String ac_info_network = "ac-info-network";\r
+ String operating_mode = "operating-mode";\r
+ String layer2 = "layer2";\r
+ String layer3 = "layer3";\r
+ String host = "host";\r
+ String src_mac = "src-mac";\r
+ String dst_mac = "dst-mac";\r
+ String src_ip = "src-ip";\r
+ String dst_ip = "dst_ip";\r
+ String colon = ":";\r
+ String not = "!";\r
+ String and = "&&";\r
+ String or = "||";\r
+ String lparen = "(";\r
+ String rparen = ")";\r
+ String lbracket = "[";\r
+ String rbracket = "]";\r
+ String equal = "==";\r
+ String not_equal = "!=";\r
+ String greater_than = ">";\r
+ String less_than = "<";\r
+ String not_greater_than = "<=";\r
+ String not_less_than = ">=";\r
+ String between = "*";\r
+ String comma = ",";\r
+ String time = "time";\r
+ String node = "Node";\r
+ String connection = "Connection";\r
+ String flow = "Flow";\r
+ String operation = "Operation";\r
+ String AllNodes = "nodes";\r
+ String AllConnections = "connections";\r
+ String AllFlows = "flows";\r
+ String AllOperations = "operations";\r
+ String Type = "Type";\r
+ String Contain = "Contain";\r
+ String SubNodes = "Subnodes";\r
+ String Property = "Property";\r
+ String Endnodes = "Endnodes";\r
+ String Match = "Match";\r
+ String Priority = "Priority";\r
+ String Target = "Target";\r
+ String Condition = "Condition";\r
+ String Action = "Action";\r
+ String Id = "Id";\r
+ String Name = "Name";\r
+ String Results = "Results";\r
+ String create = "CREATE";\r
+ String delete = "DELETE";\r
+ String update = "UPDATE";\r
+ String Import = "IMPORT";\r
+ String query = "query";\r
+ String from = "From";\r
+ String transaction = "Transaction";\r
+ String begin = "Begin";\r
+ String end = "End";\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/**\r
+ * JavaCC file\r
+ */\r
+\r
+\r
+options {\r
+ JDK_VERSION = "1.7";\r
+}\r
+\r
+PARSER_BEGIN(NEMOparser)\r
+\r
+package org.opendaylight.nemo.parser;\r
+\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowlang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.ArrayList;\r
+import java.io.StringReader;\r
+\rpublic class NEMOparser\r
+{\r
+ public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException\r
+ {\r
+ String strReturn = null ; \r
+ ReInit(new StringReader(strNEMO)); \r
+ try\r
+ {\r
+ strReturn = NEMO(userId,dataBroker,tenantManage);\r
+ }\r
+ catch ( ParseException objException )\r
+ {\r
+ throw objException;\r
+ }\r
+ catch ( TokenMgrError objError )\r
+ {\r
+ throw new ParseException(objError.getMessage());\r
+ } \r
+ return strReturn;\r
+ }\r
+}\r
+PARSER_END(NEMOparser)\r
+\r
+SKIP :\r
+{\r
+ " "\r
+| "\r"\r
+| "\t"\r
+| "\n"\r
+}\r
+TOKEN :\r
+{\r
+ < COLON: ":" >\r
+| < COMMA: "," >\r
+| < SEMICOLON: ";" >\r
+| < LPAREN: "(" >\r
+| < RPAREN: ")" >\r
+| < LBRACKET: "[" >\r
+| < RBRACKET: "]" >\r
+| < AND: "&&" >\r
+| < OR: "||" >\r
+| < NOT: "!" >\r
+| < EQUAL: "==" >\r
+| < GTHAN: ">" >\r
+| < LTHAN: "<" >\r
+| < NLTHAN: ">=" >\r
+| < NMTHAN: "<=" >\r
+| < #UNDERSCORE: "_" >\r
+| < #JOINER: "-" >\r
+| < #FSLASH: "/" >\r
+| < #DOT: "." >\r
+}\r
+\r
+TOKEN :\r
+{\r
+ < CREATE: "CREATE" >\r
+| < IMPORT: "IMPORT" >\r
+| < UPDATE: "UPDATE" >\r
+| < DELETE: "DELETE" > \r
+| < NODE: "Node" >\r
+| < TYPE: "Type" >\r
+| < CONTAIN: "Contain" >\r
+| < PROPERTY: "Property" >\r
+| < CONNECTION: "Connection" >\r
+| < ENDNODES: "Endnodes" >\r
+| < FLOW: "Flow" >\r
+| < MATCH: "Match" >\r
+| < OPERATION: "Operation" >\r
+| < TARGET: "Target" >\r
+| < CONDITION: "Condition" >\r
+| < ACTION: "Action" >\r
+| < QUERY: "Query" >\r
+| < FROM: "From" >\r
+| < PRIORITY: "Priority" >\r
+| < TRUE: "true" >\r
+| < FALSE: "false" >\r
+| < TRANSACTION: "Transaction" >\r
+| < BEGIN: "Begin" >\r
+| < END: "End" >\r
+}\r
+TOKEN :\r
+{\r
+ < UNUMBER: "0" | ["1" - "9"](<DIGIT>)* >\r
+| < ID: (<LETTER> | <LETTER>(<LETTER> | <DIGIT> | <UNDERSCORE>|< JOINER >)*(<LETTER> | <DIGIT>)+) > \r
+| < #DIGIT: ["0" - "9"] >\r
+| < #LETTER: ["a" - "z"] >\r
+| < ETHPREF: <ETHADDR>(<FSLASH>(["1" - "9"] | ["1" - "3"]<DIGIT> | "4"["0" - "8"]))? >\r
+| < IPV4PREF: <IPV4ADDR>(<FSLASH>(["1" - "9"] | ["1" - "2"]<DIGIT> | "3"["0" - "2"]))? >\r
+| < #ETHADDR: ((<HEXDIGIT>){2}<COLON>){5}(<HEXDIGIT>){2} >\r
+| < #IPV4ADDR: (<UBYTE>"."){3}<UBYTE> >\r
+| < #UBYTE: (["0" - "9"] | ["1" - "9"]<DIGIT> | "1"(<DIGIT>){2} | "2"["0" - "4"]<DIGIT> | "25"["0" - "5"]) >\r
+| < #HEXDIGIT: ["0" - "9", "a" - "f"] >\r
+}\r
+\r
+String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage ):\r
+{\r
+}\r
+{\r
+ (< CREATE > | < IMPORT > |< UPDATE>)\r
+ {\r
+ return UpdateIntent(userId,dataBroker,tenantManage);\r }\r
+| < DELETE >\r
+ {\r
+ return DeleteIntent(userId,dataBroker,tenantManage);\r }\r
+| < QUERY >\r
+ {\r
+ return Query(userId,dataBroker,tenantManage);\r }\r
+}\r
+\r
+String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r}\r
+{\r
+ < NODE >\r
+ {\r
+ return UpdateNode(userId,dataBroker,tenantManage);\r
+ }\r
+| < CONNECTION >\r
+ {\r
+ return UpdateConnection(userId,dataBroker,tenantManage);\r
+ }\r
+| < FLOW >\r
+ {\r
+ return UpdateFlow(userId,dataBroker,tenantManage);\r
+ }\r
+| < OPERATION >\r
+ {\r
+ return UpdateOperation(userId,dataBroker,tenantManage);\r
+ }\r}\r
+\r
+String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r}\r
+{\r
+ < NODE >\r
+ {\r
+ return DeleteNode(userId,dataBroker,tenantManage);\r
+ }\r
+| < CONNECTION >\r
+ {\r
+ return DeleteConnection(userId,dataBroker,tenantManage);\r
+ }\r
+| < FLOW >\r
+ {\r
+ return DeleteFlow(userId,dataBroker,tenantManage);\r
+ }\r
+| < OPERATION >\r
+ {\r
+ return DeleteOperation(userId,dataBroker,tenantManage);\r
+ }\r}\r
+\r
+String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objNodeNameToken = null;\r
+ Token objNodeTypeToken = null;\r
+ Token objContainNodeToken = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ Boolean typeRight=false;\r
+ List<String> subNodeNameList = new ArrayList<String>(); \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage); \r
+}\r
+{ \r
+ objNodeNameToken = < ID > \r
+ < TYPE >\r
+ objNodeTypeToken = < ID > \r
+ (\r < CONTAIN >\r
+ (\r
+ objContainNodeToken = < ID >\r
+ {\r
+ subNodeNameList.add(objContainNodeToken.image);\r } \r )\r
+ (\r
+ < COMMA >\r
+ objContainNodeToken = < ID >\r
+ {\r
+ subNodeNameList.add(objContainNodeToken.image); \r
+ }\r )*\r
+ )?\r
+ (\r < PROPERTY >\r
+ (\r
+ objPropertyNameToken = < ID > \r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r }\r
+ | objPropertyValueToken=< ETHPREF >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r }\r
+ | objPropertyValueToken=< IPV4PREF >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "int");\r }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r }))\r \r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ETHPREF >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< IPV4PREF >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r })\r
+ )\r
+\r
+ (\r
+ < COMMA >\r
+ objPropertyNameToken = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
+ }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< ETHPREF >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< IPV4PREF >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ \r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ETHPREF >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< IPV4PREF >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ })\r
+ )*\r
+ )?\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties);\r return strReturn;\r
+ }\r
+}\r
+\r
+String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objNodeNameToken = null;\r
+ DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage); \r
+}\r
+{\r
+ objNodeNameToken = < ID >\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
+ return strReturn;\r }\r
+}\r
+\r
+String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+ {\r
+ String strReturn = null;\r
+ Token objConnNameToken = null;\r
+ Token objConnTypeToken = null;\r
+ Token objConnEndNodeToken = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ List<String> endNodes = new ArrayList<String>(); \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage);\r }\r
+ {\r
+ objConnNameToken = < ID >\r
+ < TYPE >\r
+ objConnTypeToken = < ID >\r
+ (\r
+ < ENDNODES >\r
+ (\r
+ objConnEndNodeToken = < ID >\r
+ {\r
+ endNodes.add(objConnEndNodeToken.image);\r }\r )\r
+ (\r
+ < COMMA >\r
+ objConnEndNodeToken = < ID >\r
+ {\r
+ endNodes.add(objConnEndNodeToken.image);\r }\r )+\r )?\r
+ (\r
+ < PROPERTY >\r
+ (\r
+ objPropertyNameToken = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )\r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r
+ }\r
+ )\r
+\r
+ (\r
+ < COMMA >\r
+ objPropertyNameToken = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )\r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ }\r
+ )*\r )?\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
+ return strReturn;\r }\r}\r
+\r
+String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objConnNameToken = null;\r
+ DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage); \r
+}\r
+{\r
+ objConnNameToken = < ID >\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
+ return strReturn;\r
+ }\r
+}\r
+\r
+String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objFlowNameToken = null;\r
+ Token objFlowMatchItem = null;\r
+ Token objFlowMatchValue = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null; \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage);\r}\r
+{\r
+ objFlowNameToken = < ID >\r
+ (\r
+ < MATCH >\r
+ objFlowMatchItem = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> matchvalue = new LinkedHashMap<String,String>();\r }\r
+ (\r (objFlowMatchValue = < ID >\r
+ {\r
+ matchvalue.put(objFlowMatchValue.image,"string");\r }\r
+ | objFlowMatchValue = < ETHPREF >\r
+ {\r
+ matchvalue.put(objFlowMatchValue.image,"string");\r }\r
+ | objFlowMatchValue = < IPV4PREF >\r
+ {\r
+ matchvalue.put(objFlowMatchValue.image,"string");\r }\r
+ | objFlowMatchValue = < UNUMBER >\r
+ {\r
+ matchvalue.put(objFlowMatchValue.image,"int");\r }\r
+ | (< LPAREN >(objRangeLeft=< UNUMBER >)<COMMA >(objRangeRight=< UNUMBER >)<RPAREN >\r
+ {\r
+ matchvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r }))\r
+ {\r
+ matchItems.put(objFlowMatchItem.image,matchvalue);\r }\r
+ ) \r
+ (\r
+ < COMMA >\r
+ objFlowMatchItem = < ID >\r
+ {\r
+ LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\r }\r
+ < COLON >\r
+ (objFlowMatchValue = < ID >\r
+ {\r
+ matchvalue1.put(objFlowMatchValue.image,"string");\r
+ }\r
+ | objFlowMatchValue = < ETHPREF >\r
+ {\r
+ matchvalue1.put(objFlowMatchValue.image,"string");\r }\r
+ | objFlowMatchValue = < IPV4PREF >\r
+ {\r
+ matchvalue1.put(objFlowMatchValue.image,"string");\r }\r
+ | objFlowMatchValue = < UNUMBER >\r
+ {\r
+ matchvalue1.put(objFlowMatchValue.image,"int");\r
+ }\r
+ | (< LPAREN >(objRangeLeft=< UNUMBER >)<COMMA >(objRangeRight=< UNUMBER >)<RPAREN >\r
+ {\r
+ matchvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ {\r
+ matchItems.put(objFlowMatchItem.image,matchvalue1);\r
+ } \r )*\r
+ )\r
+ (\r
+ < PROPERTY >\r
+ (\r
+ objPropertyNameToken = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )\r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r
+ }\r
+ )\r
+\r
+ (\r
+ < COMMA >\r
+ objPropertyNameToken = < ID >\r
+ < COLON >\r
+ {\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r }\r
+ < LBRACKET >\r
+ ((objPropertyValueToken = < ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |objPropertyValueToken=< UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )\r
+ (< COMMA >\r
+ (objPropertyValueToken = < UNUMBER >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image,"int");\r
+ }\r
+ | objPropertyValueToken=< ID >\r
+ {\r
+ propertyvalue1.put(objPropertyValueToken.image, "string");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ propertyvalue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ )*\r
+ < RBRACKET >\r
+ {\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ }\r
+ )*\r
+ )?\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
+ return strReturn;\r }\r}\r
+\r
+String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objFlowNameToken = null;\r
+ DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage); \r
+}\r
+{\r
+ objFlowNameToken = < ID >\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
+ return strReturn;\r
+ }\r
+}\r
+\r
+String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objOperNameToken = null;\r
+ Token objOperTargetToken = null;\r
+ Token objOperPrioToken = null;\r
+ Token objCondRelationToken = null;\r
+ Token objCondNameToken = null;\r
+ Token objCondMatchPattern = null;\r
+ Token objCondTarget = null;\r
+ Token objActionNameToken = null;\r
+ Token objActionValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null; \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ \r
+ LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateOperationLang updateOperationLang = new UpdateOperationLang(dataBroker, tenantManage);\r}\r
+{\r
+ objOperNameToken = < ID >\r
+ < TARGET >\r
+ objOperTargetToken = < ID >\r
+ < PRIORITY >\r
+ objOperPrioToken = < UNUMBER >\r
+ (\r
+ < CONDITION >\r
+ (\r
+ (objCondRelationToken=< NOT >)?\r
+ < LPAREN >\r
+ objCondNameToken=< ID >\r
+ (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >|objCondMatchPattern=<NMTHAN >)\r
+ {\r
+ LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r }\r
+ ( objCondTarget=<ID>\r
+ {\r
+ targetValue.put(objCondTarget.image,"string");\r }\r
+ | objCondTarget=<UNUMBER>\r
+ {\r
+ targetValue.put(objCondTarget.image,"int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ targetValue.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ < RPAREN >\r
+ { \r
+ conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue);\r }\r )\r
+ (\r
+ (objCondRelationToken=< NOT >|objCondRelationToken=< AND >|objCondRelationToken=< OR >)\r
+ < LPAREN >\r
+ objCondNameToken=< ID >\r
+ (objCondMatchPattern=<EQUAL >|objCondMatchPattern=<GTHAN >|objCondMatchPattern=<LTHAN >|objCondMatchPattern=<NLTHAN >|objCondMatchPattern=<NMTHAN >)\r
+ {\r
+ LinkedHashMap<String,String> targetValue1 = new LinkedHashMap<String,String>();\r }\r
+ ( objCondTarget=<ID>\r
+ {\r
+ targetValue1.put(objCondTarget.image,"string");\r
+ }\r
+ | objCondTarget=<UNUMBER>\r
+ {\r
+ targetValue1.put(objCondTarget.image,"int");\r
+ }\r
+ |(< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ targetValue1.put(objRangeLeft.image+","+objRangeRight.image,"range");\r
+ }))\r
+ < RPAREN >\r
+ { \r
+ conditions.put(objCondRelationToken.image+","+objCondNameToken.image+","+objCondMatchPattern.image,targetValue1);\r
+ }\r )*\r )?\r
+ (\r
+ < ACTION >\r
+ (\r (\r
+ objActionNameToken = < ID >\r
+ (\r < COLON >\r
+ {\r
+ LinkedHashMap<String,String> actionvalues = new LinkedHashMap<String,String>();\r }\r
+ (\r
+ < LBRACKET >\r objActionValueToken = < ID >\r
+ {\r
+ actionvalues.put(objActionValueToken.image, "string");\r }\r
+ | objActionValueToken = < UNUMBER >\r
+ {\r
+ actionvalues.put(objActionValueToken.image, "int");\r }\r
+ | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range");\r } )) \r
+ (\r
+ < COMMA >\r
+ objActionValueToken = < ID >\r
+ {\r
+ actionvalues.put(objActionValueToken.image, "string");\r
+ }\r
+ | objActionValueToken = < UNUMBER >\r
+ {\r
+ actionvalues.put(objActionValueToken.image, "int");\r
+ }\r
+ | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ actionvalues.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
+ }))*\r
+ < RBRACKET >\r
+ {\r
+ actions.put(objActionNameToken.image,actionvalues);\r }\r
+ )?\r
+ )\r
+ (\r
+ < COMMA >\r
+ (\r
+ objActionNameToken = < ID >\r
+ ( \r < COLON >\r
+ {\r
+ LinkedHashMap<String,String> actionvalues1 = new LinkedHashMap<String,String>();\r }\r
+ (\r
+ < LBRACKET >\r
+ objActionValueToken = < ID >\r
+ {\r
+ actionvalues1.put(objActionValueToken.image, "string");\r
+ }\r
+ | objActionValueToken = < UNUMBER >\r
+ {\r
+ actionvalues1.put(objActionValueToken.image, "int");\r
+ }\r
+ | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
+ } )) \r
+ (\r
+ < COMMA >\r
+ objActionValueToken = < ID >\r
+ {\r
+ actionvalues1.put(objActionValueToken.image, "string");\r
+ }\r
+ | objActionValueToken = < UNUMBER >\r
+ {\r
+ actionvalues1.put(objActionValueToken.image, "int");\r
+ }\r
+ | (< LPAREN >(objRangeLeft = < UNUMBER >)< COMMA >(objRangeRight = < UNUMBER >)< RPAREN >\r
+ {\r
+ actionvalues1.put(objRangeLeft.image+","+objRangeRight.image, "range");\r
+ }))*\r
+ < RBRACKET >\r
+ {\r
+ actions.put(objActionNameToken.image,actionvalues1);\r
+ }\r
+ )?\r
+ )\r )*\r )\r
+)?\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r
+ return strReturn;\r }\r}\r
+\r
+String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage):\r
+{\r
+ String strReturn = null;\r
+ Token objOperationNameToken = null;\r
+ DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage); \r
+}\r
+{\r
+ objOperationNameToken = < ID >\r
+ < SEMICOLON >\r
+ {\r
+ strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
+ return strReturn;\r
+ }\r
+}\r
+\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. NEMOparser.java */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateFlowLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteNodeLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteConnectionLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteFlowLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang.DeleteOperationLang;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.Query;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.ArrayList;\r
+import java.io.StringReader;\r
+\r
+public class NEMOparser implements NEMOparserConstants {\r
+ public String parseNEMO(UserId userId,String strNEMO, DataBroker dataBroker, TenantManage tenantManage) throws ParseException\r
+ {\r
+ String strReturn = null ;\r
+ ReInit(new StringReader(strNEMO));\r
+ try\r
+ {\r
+ strReturn = NEMO(userId,dataBroker,tenantManage);\r
+ }\r
+ catch ( ParseException objException )\r
+ {\r
+ throw objException;\r
+ }\r
+ catch ( TokenMgrError objError )\r
+ {\r
+ throw new ParseException(objError.getMessage());\r
+ }\r
+ return strReturn;\r
+ }\r
+\r
+ static final public String NEMO(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case CREATE:\r
+ case IMPORT:\r
+ case UPDATE:\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case CREATE:\r
+ jj_consume_token(CREATE);\r
+ break;\r
+ case IMPORT:\r
+ jj_consume_token(IMPORT);\r
+ break;\r
+ case UPDATE:\r
+ jj_consume_token(UPDATE);\r
+ break;\r
+ default:\r
+ jj_la1[0] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ {if (true) return UpdateIntent(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case DELETE:\r
+ jj_consume_token(DELETE);\r
+ {if (true) return DeleteIntent(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case QUERY:\r
+ jj_consume_token(QUERY);\r
+ {if (true) return Query(userId,dataBroker,tenantManage);}\r
+ break;\r
+ default:\r
+ jj_la1[1] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String UpdateIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case NODE:\r
+ jj_consume_token(NODE);\r
+ {if (true) return UpdateNode(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case CONNECTION:\r
+ jj_consume_token(CONNECTION);\r
+ {if (true) return UpdateConnection(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case FLOW:\r
+ jj_consume_token(FLOW);\r
+ {if (true) return UpdateFlow(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case OPERATION:\r
+ jj_consume_token(OPERATION);\r
+ {if (true) return UpdateOperation(userId,dataBroker,tenantManage);}\r
+ break;\r
+ default:\r
+ jj_la1[2] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String DeleteIntent(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case NODE:\r
+ jj_consume_token(NODE);\r
+ {if (true) return DeleteNode(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case CONNECTION:\r
+ jj_consume_token(CONNECTION);\r
+ {if (true) return DeleteConnection(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case FLOW:\r
+ jj_consume_token(FLOW);\r
+ {if (true) return DeleteFlow(userId,dataBroker,tenantManage);}\r
+ break;\r
+ case OPERATION:\r
+ jj_consume_token(OPERATION);\r
+ {if (true) return DeleteOperation(userId,dataBroker,tenantManage);}\r
+ break;\r
+ default:\r
+ jj_la1[3] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String UpdateNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objNodeNameToken = null;\r
+ Token objNodeTypeToken = null;\r
+ Token objContainNodeToken = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ Boolean typeRight=false;\r
+ List<String> subNodeNameList = new ArrayList<String>();\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateNodeLang updateNodelang = new UpdateNodeLang(dataBroker, tenantManage);\r
+ objNodeNameToken = jj_consume_token(ID);\r
+ jj_consume_token(TYPE);\r
+ objNodeTypeToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case CONTAIN:\r
+ jj_consume_token(CONTAIN);\r
+ objContainNodeToken = jj_consume_token(ID);\r
+ subNodeNameList.add(objContainNodeToken.image);\r
+ label_1:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[4] = jj_gen;\r
+ break label_1;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objContainNodeToken = jj_consume_token(ID);\r
+ subNodeNameList.add(objContainNodeToken.image);\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[5] = jj_gen;\r
+ ;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case PROPERTY:\r
+ jj_consume_token(PROPERTY);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case ETHADDR:\r
+ objPropertyValueToken = jj_consume_token(ETHADDR);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4ADDR:\r
+ objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[6] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_2:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[7] = jj_gen;\r
+ break label_2;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ETHADDR:\r
+ objPropertyValueToken = jj_consume_token(ETHADDR);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4ADDR:\r
+ objPropertyValueToken = jj_consume_token(IPV4ADDR);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[8] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r
+ label_3:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[9] = jj_gen;\r
+ break label_3;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case ETHADDR:\r
+ objPropertyValueToken = jj_consume_token(ETHADDR);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[10] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_4:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[11] = jj_gen;\r
+ break label_4;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ETHADDR:\r
+ objPropertyValueToken = jj_consume_token(ETHADDR);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objPropertyValueToken = jj_consume_token(IPV4PREF);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[12] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[13] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = updateNodelang.NodeHandling(userId, objNodeNameToken.image, objNodeTypeToken.image,subNodeNameList, properties);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String DeleteNode(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objNodeNameToken = null;\r
+ DeleteNodeLang deleteNodelang = new DeleteNodeLang(dataBroker, tenantManage);\r
+ objNodeNameToken = jj_consume_token(ID);\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = deleteNodelang.DeleteNodeHandling(userId, objNodeNameToken.image);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String UpdateConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objConnNameToken = null;\r
+ Token objConnTypeToken = null;\r
+ Token objConnEndNodeToken = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ List<String> endNodes = new ArrayList<String>();\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateConnectionLang updateConnLang = new UpdateConnectionLang(dataBroker,tenantManage);\r
+ objConnNameToken = jj_consume_token(ID);\r
+ jj_consume_token(TYPE);\r
+ objConnTypeToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ENDNODES:\r
+ jj_consume_token(ENDNODES);\r
+ objConnEndNodeToken = jj_consume_token(ID);\r
+ endNodes.add(objConnEndNodeToken.image);\r
+ label_5:\r
+ while (true) {\r
+ jj_consume_token(COMMA);\r
+ objConnEndNodeToken = jj_consume_token(ID);\r
+ endNodes.add(objConnEndNodeToken.image);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[14] = jj_gen;\r
+ break label_5;\r
+ }\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[15] = jj_gen;\r
+ ;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case PROPERTY:\r
+ jj_consume_token(PROPERTY);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[16] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_6:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[17] = jj_gen;\r
+ break label_6;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[18] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r
+ label_7:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[19] = jj_gen;\r
+ break label_7;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[20] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_8:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[21] = jj_gen;\r
+ break label_8;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[22] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[23] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = updateConnLang.ConnectionHandling(userId, objConnNameToken.image, objConnTypeToken.image,endNodes, properties);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String DeleteConnection(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objConnNameToken = null;\r
+ DeleteConnectionLang deleteConnectionlang = new DeleteConnectionLang(dataBroker, tenantManage);\r
+ objConnNameToken = jj_consume_token(ID);\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = deleteConnectionlang.DeleteConnectionHandling(userId, objConnNameToken.image);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String UpdateFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objFlowNameToken = null;\r
+ Token objFlowMatchItem = null;\r
+ Token objFlowMatchValue = null;\r
+ Token objPropertyNameToken = null;\r
+ Token objPropertyValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> matchItems = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> properties = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateFlowLang updateFlowLang = new UpdateFlowLang(dataBroker, tenantManage);\r
+ objFlowNameToken = jj_consume_token(ID);\r
+ jj_consume_token(MATCH);\r
+ objFlowMatchItem = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> matchvalue = new LinkedHashMap<String,String>();\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objFlowMatchValue = jj_consume_token(ID);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case ETHADDR:\r
+ objFlowMatchValue = jj_consume_token(ETHADDR);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objFlowMatchValue = jj_consume_token(IPV4PREF);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case IPV4ADDR:\r
+ objFlowMatchValue = jj_consume_token(IPV4ADDR);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objFlowMatchValue = jj_consume_token(UNUMBER);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ matchvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[24] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ matchItems.put(objFlowMatchItem.image,matchvalue);\r
+ label_9:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[25] = jj_gen;\r
+ break label_9;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objFlowMatchItem = jj_consume_token(ID);\r
+ LinkedHashMap<String,String> matchvalue1 = new LinkedHashMap<String,String>();\r
+ jj_consume_token(COLON);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objFlowMatchValue = jj_consume_token(ID);\r
+ matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case ETHADDR:\r
+ objFlowMatchValue = jj_consume_token(ETHADDR);\r
+ matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case IPV4PREF:\r
+ objFlowMatchValue = jj_consume_token(IPV4PREF);\r
+ matchvalue1.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case IPV4ADDR:\r
+ objFlowMatchValue = jj_consume_token(IPV4ADDR);\r
+ matchvalue.put(objFlowMatchValue.image,NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objFlowMatchValue = jj_consume_token(UNUMBER);\r
+ matchvalue1.put(objFlowMatchValue.image,NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ matchvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[26] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ matchItems.put(objFlowMatchItem.image,matchvalue1);\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case PROPERTY:\r
+ jj_consume_token(PROPERTY);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[27] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_10:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[28] = jj_gen;\r
+ break label_10;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[29] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue);\r
+ label_11:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[30] = jj_gen;\r
+ break label_11;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objPropertyNameToken = jj_consume_token(ID);\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> propertyvalue1 = new LinkedHashMap<String,String>();\r
+ jj_consume_token(LBRACKET);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[31] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_12:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[32] = jj_gen;\r
+ break label_12;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case UNUMBER:\r
+ objPropertyValueToken = jj_consume_token(UNUMBER);\r
+ propertyvalue1.put(objPropertyValueToken.image,NEMOConstants.integer);\r
+ break;\r
+ case ID:\r
+ objPropertyValueToken = jj_consume_token(ID);\r
+ propertyvalue1.put(objPropertyValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ propertyvalue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[33] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ properties.put(objPropertyNameToken.image, propertyvalue1);\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[34] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = updateFlowLang.FlowHandling(userId, objFlowNameToken.image, matchItems, properties);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String DeleteFlow(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objFlowNameToken = null;\r
+ DeleteFlowLang deleteFlowlang = new DeleteFlowLang(dataBroker, tenantManage);\r
+ objFlowNameToken = jj_consume_token(ID);\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = deleteFlowlang.DeleteFlowHandling(userId, objFlowNameToken.image);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String UpdateOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objOperNameToken = null;\r
+ Token objOperTargetToken = null;\r
+ Token objOperPrioToken = null;\r
+ Token objCondRelationToken = null;\r
+ Token objCondNameToken = null;\r
+ Token objCondMatchPattern = null;\r
+ Token objCondTarget = null;\r
+ Token objCondTarget1 = null;\r
+ Token objActionNameToken = null;\r
+ Token objActionValueToken = null;\r
+ Token objRangeLeft = null;\r
+ Token objRangeRight = null;\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> actions = new LinkedHashMap<String,LinkedHashMap<String,String>>();\r
+ UpdateOperationLang updateOperationLang = new UpdateOperationLang(dataBroker, tenantManage);\r
+ objOperNameToken = jj_consume_token(ID);\r
+ jj_consume_token(TARGET);\r
+ objOperTargetToken = jj_consume_token(ID);\r
+ jj_consume_token(PRIORITY);\r
+ objOperPrioToken = jj_consume_token(UNUMBER);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case CONDITION:\r
+ jj_consume_token(CONDITION);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case NOT:\r
+ objCondRelationToken = jj_consume_token(NOT);\r
+ break;\r
+ default:\r
+ jj_la1[35] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(LPAREN);\r
+ objCondNameToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case EQUAL:\r
+ objCondMatchPattern = jj_consume_token(EQUAL);\r
+ break;\r
+ case GTHAN:\r
+ objCondMatchPattern = jj_consume_token(GTHAN);\r
+ break;\r
+ case LTHAN:\r
+ objCondMatchPattern = jj_consume_token(LTHAN);\r
+ break;\r
+ case NLTHAN:\r
+ objCondMatchPattern = jj_consume_token(NLTHAN);\r
+ break;\r
+ case NMTHAN:\r
+ objCondMatchPattern = jj_consume_token(NMTHAN);\r
+ break;\r
+ case BETWEEN:\r
+ objCondMatchPattern = jj_consume_token(BETWEEN);\r
+ break;\r
+ default:\r
+ jj_la1[36] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ LinkedHashMap<String,String> targetValue = new LinkedHashMap<String,String>();\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objCondTarget = jj_consume_token(ID);\r
+ targetValue.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case TIMEVAL:\r
+ objCondTarget = jj_consume_token(TIMEVAL);\r
+ targetValue.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case FULLTIME:\r
+ objCondTarget = jj_consume_token(FULLTIME);\r
+ targetValue.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objCondTarget = jj_consume_token(UNUMBER);\r
+ targetValue.put(objCondTarget.image,NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ targetValue.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[37] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ jj_consume_token(RPAREN);\r
+ if (objCondRelationToken == null)\r
+ {\r
+ String s = null;\r
+ conditions.put(s+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
+ +objCondMatchPattern.image,targetValue);\r
+ }\r
+ else\r
+ {\r
+ conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
+ +objCondMatchPattern.image,targetValue);\r
+ }\r
+ label_13:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case AND:\r
+ case OR:\r
+ case NOT:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[38] = jj_gen;\r
+ break label_13;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case NOT:\r
+ objCondRelationToken = jj_consume_token(NOT);\r
+ break;\r
+ case AND:\r
+ objCondRelationToken = jj_consume_token(AND);\r
+ break;\r
+ case OR:\r
+ objCondRelationToken = jj_consume_token(OR);\r
+ break;\r
+ default:\r
+ jj_la1[39] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ jj_consume_token(LPAREN);\r
+ objCondNameToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case EQUAL:\r
+ objCondMatchPattern = jj_consume_token(EQUAL);\r
+ break;\r
+ case GTHAN:\r
+ objCondMatchPattern = jj_consume_token(GTHAN);\r
+ break;\r
+ case LTHAN:\r
+ objCondMatchPattern = jj_consume_token(LTHAN);\r
+ break;\r
+ case NLTHAN:\r
+ objCondMatchPattern = jj_consume_token(NLTHAN);\r
+ break;\r
+ case NMTHAN:\r
+ objCondMatchPattern = jj_consume_token(NMTHAN);\r
+ break;\r
+ default:\r
+ jj_la1[40] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ LinkedHashMap<String,String> targetValue1 = new LinkedHashMap<String,String>();\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ID:\r
+ objCondTarget = jj_consume_token(ID);\r
+ targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case TIMEVAL:\r
+ objCondTarget = jj_consume_token(TIMEVAL);\r
+ targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case FULLTIME:\r
+ objCondTarget = jj_consume_token(FULLTIME);\r
+ targetValue1.put(objCondTarget.image,NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objCondTarget = jj_consume_token(UNUMBER);\r
+ targetValue1.put(objCondTarget.image,NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ targetValue1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image,NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[41] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ jj_consume_token(RPAREN);\r
+ conditions.put(objCondRelationToken.image+NEMOConstants.comma+objCondNameToken.image+NEMOConstants.comma\r
+ +objCondMatchPattern.image,targetValue1);\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[42] = jj_gen;\r
+ ;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case ACTION:\r
+ jj_consume_token(ACTION);\r
+ objActionNameToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COLON:\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> actionvalues = new LinkedHashMap<String,String>();\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case LBRACKET:\r
+ jj_consume_token(LBRACKET);\r
+ objActionValueToken = jj_consume_token(ID);\r
+ actionvalues.put(objActionValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objActionValueToken = jj_consume_token(UNUMBER);\r
+ actionvalues.put(objActionValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[43] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_14:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ case LPAREN:\r
+ case UNUMBER:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[44] = jj_gen;\r
+ break label_14;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ jj_consume_token(COMMA);\r
+ objActionValueToken = jj_consume_token(ID);\r
+ actionvalues.put(objActionValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objActionValueToken = jj_consume_token(UNUMBER);\r
+ actionvalues.put(objActionValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ actionvalues.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[45] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ actions.put(objActionNameToken.image,actionvalues);\r
+ break;\r
+ default:\r
+ jj_la1[46] = jj_gen;\r
+ ;\r
+ }\r
+ label_15:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[47] = jj_gen;\r
+ break label_15;\r
+ }\r
+ jj_consume_token(COMMA);\r
+ objActionNameToken = jj_consume_token(ID);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COLON:\r
+ jj_consume_token(COLON);\r
+ LinkedHashMap<String,String> actionvalues1 = new LinkedHashMap<String,String>();\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case LBRACKET:\r
+ jj_consume_token(LBRACKET);\r
+ objActionValueToken = jj_consume_token(ID);\r
+ actionvalues1.put(objActionValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objActionValueToken = jj_consume_token(UNUMBER);\r
+ actionvalues1.put(objActionValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[48] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ label_16:\r
+ while (true) {\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ case LPAREN:\r
+ case UNUMBER:\r
+ ;\r
+ break;\r
+ default:\r
+ jj_la1[49] = jj_gen;\r
+ break label_16;\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case COMMA:\r
+ jj_consume_token(COMMA);\r
+ objActionValueToken = jj_consume_token(ID);\r
+ actionvalues1.put(objActionValueToken.image, NEMOConstants.string);\r
+ break;\r
+ case UNUMBER:\r
+ objActionValueToken = jj_consume_token(UNUMBER);\r
+ actionvalues1.put(objActionValueToken.image, NEMOConstants.integer);\r
+ break;\r
+ case LPAREN:\r
+ jj_consume_token(LPAREN);\r
+ objRangeLeft = jj_consume_token(UNUMBER);\r
+ jj_consume_token(COMMA);\r
+ objRangeRight = jj_consume_token(UNUMBER);\r
+ jj_consume_token(RPAREN);\r
+ actionvalues1.put(objRangeLeft.image+NEMOConstants.comma+objRangeRight.image, NEMOConstants.range);\r
+ break;\r
+ default:\r
+ jj_la1[50] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ }\r
+ jj_consume_token(RBRACKET);\r
+ actions.put(objActionNameToken.image,actionvalues1);\r
+ break;\r
+ default:\r
+ jj_la1[51] = jj_gen;\r
+ ;\r
+ }\r
+ }\r
+ break;\r
+ default:\r
+ jj_la1[52] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = updateOperationLang.OperationHandling(userId, objOperNameToken.image, objOperTargetToken.image, objOperPrioToken.image,conditions,actions);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String DeleteOperation(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objOperationNameToken = null;\r
+ DeleteOperationLang deleteOperationlang = new DeleteOperationLang(dataBroker, tenantManage);\r
+ objOperationNameToken = jj_consume_token(ID);\r
+ jj_consume_token(SEMICOLON);\r
+ strReturn = deleteOperationlang.DeleteOperationHandling(userId, objOperationNameToken.image);\r
+ {if (true) return strReturn;}\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static final public String Query(UserId userId, DataBroker dataBroker, TenantManage tenantManage) throws ParseException {\r
+ String strReturn = null;\r
+ Token objItemToken = null;\r
+ Token objTargetToken = null;\r
+ Query query = new Query(tenantManage);\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case TYPE:\r
+ objItemToken = jj_consume_token(TYPE);\r
+ break;\r
+ case CONTAIN:\r
+ objItemToken = jj_consume_token(CONTAIN);\r
+ break;\r
+ case PROPERTY:\r
+ objItemToken = jj_consume_token(PROPERTY);\r
+ break;\r
+ case ENDNODES:\r
+ objItemToken = jj_consume_token(ENDNODES);\r
+ break;\r
+ case MATCH:\r
+ objItemToken = jj_consume_token(MATCH);\r
+ break;\r
+ case PRIORITY:\r
+ objItemToken = jj_consume_token(PRIORITY);\r
+ break;\r
+ case TARGET:\r
+ objItemToken = jj_consume_token(TARGET);\r
+ break;\r
+ case CONDITION:\r
+ objItemToken = jj_consume_token(CONDITION);\r
+ break;\r
+ case ACTION:\r
+ objItemToken = jj_consume_token(ACTION);\r
+ break;\r
+ case ID:\r
+ objItemToken = jj_consume_token(ID);\r
+ break;\r
+ case NODES:\r
+ objItemToken = jj_consume_token(NODES);\r
+ break;\r
+ case CONNECTIONS:\r
+ objItemToken = jj_consume_token(CONNECTIONS);\r
+ break;\r
+ case FLOWS:\r
+ objItemToken = jj_consume_token(FLOWS);\r
+ break;\r
+ case OPERATIONS:\r
+ objItemToken = jj_consume_token(OPERATIONS);\r
+ break;\r
+ default:\r
+ jj_la1[53] = jj_gen;\r
+ jj_consume_token(-1);\r
+ throw new ParseException();\r
+ }\r
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {\r
+ case FROM:\r
+ jj_consume_token(FROM);\r
+ objTargetToken = jj_consume_token(ID);\r
+ break;\r
+ default:\r
+ jj_la1[54] = jj_gen;\r
+ ;\r
+ }\r
+ jj_consume_token(SEMICOLON);\r
+ if (objTargetToken == null)\r
+ {\r
+ String target = null;\r
+ {if (true) return query.query(userId,objItemToken.image,target);}\r
+ }\r
+ else\r
+ {\r
+ {if (true) return query.query(userId,objItemToken.image,objTargetToken.image);}\r
+ }\r
+ throw new Error("Missing return statement in function");\r
+ }\r
+\r
+ static private boolean jj_initialized_once = false;\r
+ /** Generated Token Manager. */\r
+ static public NEMOparserTokenManager token_source;\r
+ static SimpleCharStream jj_input_stream;\r
+ /** Current token. */\r
+ static public Token token;\r
+ /** Next token. */\r
+ static public Token jj_nt;\r
+ static private int jj_ntk;\r
+ static private int jj_gen;\r
+ static final private int[] jj_la1 = new int[55];\r
+ static private int[] jj_la1_0;\r
+ static private int[] jj_la1_1;\r
+ static private int[] jj_la1_2;\r
+ static {\r
+ jj_la1_init_0();\r
+ jj_la1_init_1();\r
+ jj_la1_init_2();\r
+ }\r
+ private static void jj_la1_init_0() {\r
+ jj_la1_0 = new int[] {0xe000000,0x1e000000,0x40000000,0x40000000,0x40,0x0,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x40,0x0,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x100,0x40,0x100,0x100,0x40,0x100,0x40,0x100,0x40,0x100,0x0,0x4000,0x1f8000,0x100,0x7000,0x7000,0xf8000,0x100,0x0,0x500,0x140,0x140,0x20,0x40,0x500,0x140,0x140,0x20,0x0,0x80000000,0x0,};\r
+ }\r
+ private static void jj_la1_init_1() {\r
+ jj_la1_1 = new int[] {0x0,0x400,0x54,0x54,0x0,0x1,0x18b00000,0x0,0x18b00000,0x0,0x8b00000,0x0,0x8b00000,0x2,0x0,0x8,0x300000,0x0,0x300000,0x0,0x300000,0x0,0x300000,0x2,0x18b00000,0x0,0x18b00000,0x300000,0x0,0x300000,0x0,0x300000,0x0,0x300000,0x2,0x0,0x0,0x6300000,0x0,0x0,0x0,0x6300000,0x100,0x100000,0x100000,0x100000,0x0,0x0,0x100000,0x100000,0x100000,0x0,0x200,0x2f13ab,0x800,};\r
+ }\r
+ private static void jj_la1_init_2() {\r
+ jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};\r
+ }\r
+\r
+ /** Constructor with InputStream. */\r
+ public NEMOparser(java.io.InputStream stream) {\r
+ this(stream, null);\r
+ }\r
+ /** Constructor with InputStream and supplied encoding */\r
+ public NEMOparser(java.io.InputStream stream, String encoding) {\r
+ if (jj_initialized_once) {\r
+ System.out.println("ERROR: Second call to constructor of static parser. ");\r
+ System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");\r
+ System.out.println(" during parser generation.");\r
+ throw new Error();\r
+ }\r
+ jj_initialized_once = true;\r
+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
+ token_source = new NEMOparserTokenManager(jj_input_stream);\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ static public void ReInit(java.io.InputStream stream) {\r
+ ReInit(stream, null);\r
+ }\r
+ /** Reinitialise. */\r
+ static public void ReInit(java.io.InputStream stream, String encoding) {\r
+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }\r
+ token_source.ReInit(jj_input_stream);\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ /** Constructor. */\r
+ public NEMOparser(java.io.Reader stream) {\r
+ if (jj_initialized_once) {\r
+ System.out.println("ERROR: Second call to constructor of static parser. ");\r
+ System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");\r
+ System.out.println(" during parser generation.");\r
+ throw new Error();\r
+ }\r
+ jj_initialized_once = true;\r
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);\r
+ token_source = new NEMOparserTokenManager(jj_input_stream);\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ static public void ReInit(java.io.Reader stream) {\r
+ jj_input_stream.ReInit(stream, 1, 1);\r
+ token_source.ReInit(jj_input_stream);\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ /** Constructor with generated Token Manager. */\r
+ public NEMOparser(NEMOparserTokenManager tm) {\r
+ if (jj_initialized_once) {\r
+ System.out.println("ERROR: Second call to constructor of static parser. ");\r
+ System.out.println(" You must either use ReInit() or set the JavaCC option STATIC to false");\r
+ System.out.println(" during parser generation.");\r
+ throw new Error();\r
+ }\r
+ jj_initialized_once = true;\r
+ token_source = tm;\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(NEMOparserTokenManager tm) {\r
+ token_source = tm;\r
+ token = new Token();\r
+ jj_ntk = -1;\r
+ jj_gen = 0;\r
+ for (int i = 0; i < 55; i++) jj_la1[i] = -1;\r
+ }\r
+\r
+ static private Token jj_consume_token(int kind) throws ParseException {\r
+ Token oldToken;\r
+ if ((oldToken = token).next != null) token = token.next;\r
+ else token = token.next = token_source.getNextToken();\r
+ jj_ntk = -1;\r
+ if (token.kind == kind) {\r
+ jj_gen++;\r
+ return token;\r
+ }\r
+ token = oldToken;\r
+ jj_kind = kind;\r
+ throw generateParseException();\r
+ }\r
+\r
+\r
+/** Get the next Token. */\r
+ static final public Token getNextToken() {\r
+ if (token.next != null) token = token.next;\r
+ else token = token.next = token_source.getNextToken();\r
+ jj_ntk = -1;\r
+ jj_gen++;\r
+ return token;\r
+ }\r
+\r
+/** Get the specific Token. */\r
+ static final public Token getToken(int index) {\r
+ Token t = token;\r
+ for (int i = 0; i < index; i++) {\r
+ if (t.next != null) t = t.next;\r
+ else t = t.next = token_source.getNextToken();\r
+ }\r
+ return t;\r
+ }\r
+\r
+ static private int jj_ntk() {\r
+ if ((jj_nt=token.next) == null)\r
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);\r
+ else\r
+ return (jj_ntk = jj_nt.kind);\r
+ }\r
+\r
+ static private List<int[]> jj_expentries = new ArrayList<int[]>();\r
+ static private int[] jj_expentry;\r
+ static private int jj_kind = -1;\r
+\r
+ /** Generate ParseException. */\r
+ static public ParseException generateParseException() {\r
+ jj_expentries.clear();\r
+ boolean[] la1tokens = new boolean[72];\r
+ if (jj_kind >= 0) {\r
+ la1tokens[jj_kind] = true;\r
+ jj_kind = -1;\r
+ }\r
+ for (int i = 0; i < 55; i++) {\r
+ if (jj_la1[i] == jj_gen) {\r
+ for (int j = 0; j < 32; j++) {\r
+ if ((jj_la1_0[i] & (1<<j)) != 0) {\r
+ la1tokens[j] = true;\r
+ }\r
+ if ((jj_la1_1[i] & (1<<j)) != 0) {\r
+ la1tokens[32+j] = true;\r
+ }\r
+ if ((jj_la1_2[i] & (1<<j)) != 0) {\r
+ la1tokens[64+j] = true;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ for (int i = 0; i < 72; i++) {\r
+ if (la1tokens[i]) {\r
+ jj_expentry = new int[1];\r
+ jj_expentry[0] = i;\r
+ jj_expentries.add(jj_expentry);\r
+ }\r
+ }\r
+ int[][] exptokseq = new int[jj_expentries.size()][];\r
+ for (int i = 0; i < jj_expentries.size(); i++) {\r
+ exptokseq[i] = jj_expentries.get(i);\r
+ }\r
+ return new ParseException(token, exptokseq, tokenImage);\r
+ }\r
+\r
+ /** Enable tracing. */\r
+ static final public void enable_tracing() {\r
+ }\r
+\r
+ /** Disable tracing. */\r
+ static final public void disable_tracing() {\r
+ }\r
+\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. NEMOparserConstants.java */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+\r
+/**\r
+ * Token literal values and constants.\r
+ * Generated by org.javacc.parser.OtherFilesGen#start()\r
+ */\r
+public interface NEMOparserConstants {\r
+\r
+ /** End of File. */\r
+ int EOF = 0;\r
+ /** RegularExpression Id. */\r
+ int COLON = 5;\r
+ /** RegularExpression Id. */\r
+ int COMMA = 6;\r
+ /** RegularExpression Id. */\r
+ int SEMICOLON = 7;\r
+ /** RegularExpression Id. */\r
+ int LPAREN = 8;\r
+ /** RegularExpression Id. */\r
+ int RPAREN = 9;\r
+ /** RegularExpression Id. */\r
+ int LBRACKET = 10;\r
+ /** RegularExpression Id. */\r
+ int RBRACKET = 11;\r
+ /** RegularExpression Id. */\r
+ int AND = 12;\r
+ /** RegularExpression Id. */\r
+ int OR = 13;\r
+ /** RegularExpression Id. */\r
+ int NOT = 14;\r
+ /** RegularExpression Id. */\r
+ int EQUAL = 15;\r
+ /** RegularExpression Id. */\r
+ int GTHAN = 16;\r
+ /** RegularExpression Id. */\r
+ int LTHAN = 17;\r
+ /** RegularExpression Id. */\r
+ int NLTHAN = 18;\r
+ /** RegularExpression Id. */\r
+ int NMTHAN = 19;\r
+ /** RegularExpression Id. */\r
+ int BETWEEN = 20;\r
+ /** RegularExpression Id. */\r
+ int UNDERSCORE = 21;\r
+ /** RegularExpression Id. */\r
+ int JOINER = 22;\r
+ /** RegularExpression Id. */\r
+ int FSLASH = 23;\r
+ /** RegularExpression Id. */\r
+ int DOT = 24;\r
+ /** RegularExpression Id. */\r
+ int CREATE = 25;\r
+ /** RegularExpression Id. */\r
+ int IMPORT = 26;\r
+ /** RegularExpression Id. */\r
+ int UPDATE = 27;\r
+ /** RegularExpression Id. */\r
+ int DELETE = 28;\r
+ /** RegularExpression Id. */\r
+ int USER = 29;\r
+ /** RegularExpression Id. */\r
+ int NODE = 30;\r
+ /** RegularExpression Id. */\r
+ int TYPE = 31;\r
+ /** RegularExpression Id. */\r
+ int CONTAIN = 32;\r
+ /** RegularExpression Id. */\r
+ int PROPERTY = 33;\r
+ /** RegularExpression Id. */\r
+ int CONNECTION = 34;\r
+ /** RegularExpression Id. */\r
+ int ENDNODES = 35;\r
+ /** RegularExpression Id. */\r
+ int FLOW = 36;\r
+ /** RegularExpression Id. */\r
+ int MATCH = 37;\r
+ /** RegularExpression Id. */\r
+ int OPERATION = 38;\r
+ /** RegularExpression Id. */\r
+ int TARGET = 39;\r
+ /** RegularExpression Id. */\r
+ int CONDITION = 40;\r
+ /** RegularExpression Id. */\r
+ int ACTION = 41;\r
+ /** RegularExpression Id. */\r
+ int QUERY = 42;\r
+ /** RegularExpression Id. */\r
+ int FROM = 43;\r
+ /** RegularExpression Id. */\r
+ int PRIORITY = 44;\r
+ /** RegularExpression Id. */\r
+ int TRANSACTION = 45;\r
+ /** RegularExpression Id. */\r
+ int BEGIN = 46;\r
+ /** RegularExpression Id. */\r
+ int END = 47;\r
+ /** RegularExpression Id. */\r
+ int NODES = 48;\r
+ /** RegularExpression Id. */\r
+ int CONNECTIONS = 49;\r
+ /** RegularExpression Id. */\r
+ int FLOWS = 50;\r
+ /** RegularExpression Id. */\r
+ int OPERATIONS = 51;\r
+ /** RegularExpression Id. */\r
+ int UNUMBER = 52;\r
+ /** RegularExpression Id. */\r
+ int ID = 53;\r
+ /** RegularExpression Id. */\r
+ int ETHPREF = 54;\r
+ /** RegularExpression Id. */\r
+ int IPV4PREF = 55;\r
+ /** RegularExpression Id. */\r
+ int DATEVAL = 56;\r
+ /** RegularExpression Id. */\r
+ int TIMEVAL = 57;\r
+ /** RegularExpression Id. */\r
+ int FULLTIME = 58;\r
+ /** RegularExpression Id. */\r
+ int ETHADDR = 59;\r
+ /** RegularExpression Id. */\r
+ int IPV4ADDR = 60;\r
+ /** RegularExpression Id. */\r
+ int UBYTE = 61;\r
+ /** RegularExpression Id. */\r
+ int HEXDIGIT = 62;\r
+ /** RegularExpression Id. */\r
+ int YEAR = 63;\r
+ /** RegularExpression Id. */\r
+ int SMONDAY = 64;\r
+ /** RegularExpression Id. */\r
+ int LMONDAY = 65;\r
+ /** RegularExpression Id. */\r
+ int FEBDAY = 66;\r
+ /** RegularExpression Id. */\r
+ int HOUR = 67;\r
+ /** RegularExpression Id. */\r
+ int MINUTE = 68;\r
+ /** RegularExpression Id. */\r
+ int SECOND = 69;\r
+ /** RegularExpression Id. */\r
+ int DIGIT = 70;\r
+ /** RegularExpression Id. */\r
+ int LETTER = 71;\r
+\r
+ /** Lexical state. */\r
+ int DEFAULT = 0;\r
+\r
+ /** Literal token values. */\r
+ String[] tokenImage = {\r
+ "<EOF>",\r
+ "\" \"",\r
+ "\"\\r\"",\r
+ "\"\\t\"",\r
+ "\"\\n\"",\r
+ "\":\"",\r
+ "\",\"",\r
+ "\";\"",\r
+ "\"(\"",\r
+ "\")\"",\r
+ "\"[\"",\r
+ "\"]\"",\r
+ "\"&&\"",\r
+ "\"||\"",\r
+ "\"!\"",\r
+ "\"==\"",\r
+ "\">\"",\r
+ "\"<\"",\r
+ "\">=\"",\r
+ "\"<=\"",\r
+ "\"*\"",\r
+ "\"_\"",\r
+ "\"-\"",\r
+ "\"/\"",\r
+ "\".\"",\r
+ "\"CREATE\"",\r
+ "\"IMPORT\"",\r
+ "\"UPDATE\"",\r
+ "\"DELETE\"",\r
+ "\"User\"",\r
+ "\"Node\"",\r
+ "\"Type\"",\r
+ "\"Contain\"",\r
+ "\"Property\"",\r
+ "\"Connection\"",\r
+ "\"Endnodes\"",\r
+ "\"Flow\"",\r
+ "\"Match\"",\r
+ "\"Operation\"",\r
+ "\"Target\"",\r
+ "\"Condition\"",\r
+ "\"Action\"",\r
+ "\"Query\"",\r
+ "\"From\"",\r
+ "\"Priority\"",\r
+ "\"Transaction\"",\r
+ "\"Begin\"",\r
+ "\"End\"",\r
+ "\"nodes\"",\r
+ "\"connections\"",\r
+ "\"flows\"",\r
+ "\"operations\"",\r
+ "<UNUMBER>",\r
+ "<ID>",\r
+ "<ETHPREF>",\r
+ "<IPV4PREF>",\r
+ "<DATEVAL>",\r
+ "<TIMEVAL>",\r
+ "<FULLTIME>",\r
+ "<ETHADDR>",\r
+ "<IPV4ADDR>",\r
+ "<UBYTE>",\r
+ "<HEXDIGIT>",\r
+ "<YEAR>",\r
+ "<SMONDAY>",\r
+ "<LMONDAY>",\r
+ "<FEBDAY>",\r
+ "<HOUR>",\r
+ "<MINUTE>",\r
+ "<SECOND>",\r
+ "<DIGIT>",\r
+ "<LETTER>",\r
+ };\r
+\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. NEMOparserTokenManager.java */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+/** Token Manager. */\r
+public class NEMOparserTokenManager implements NEMOparserConstants\r
+{\r
+\r
+ /** Debug output. */\r
+ public static java.io.PrintStream debugStream = System.out;\r
+ /** Set debug output. */\r
+ public static void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }\r
+private static final int jjStopStringLiteralDfa_0(int pos, long active0)\r
+{\r
+ switch (pos)\r
+ {\r
+ case 0:\r
+ if ((active0 & 0x9000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ return 203;\r
+ }\r
+ if ((active0 & 0x6000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ return 84;\r
+ }\r
+ return -1;\r
+ case 1:\r
+ if ((active0 & 0xf000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 1;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 2:\r
+ if ((active0 & 0xf000000000000L) != 0L)\r
+ {\r
+ if (jjmatchedPos != 2)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 2;\r
+ }\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 3:\r
+ if ((active0 & 0xf000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 3;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 4:\r
+ if ((active0 & 0xa000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 4;\r
+ return 203;\r
+ }\r
+ if ((active0 & 0x5000000000000L) != 0L)\r
+ return 203;\r
+ return -1;\r
+ case 5:\r
+ if ((active0 & 0xa000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 5;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 6:\r
+ if ((active0 & 0xa000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 6;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 7:\r
+ if ((active0 & 0xa000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 7;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 8:\r
+ if ((active0 & 0xa000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 8;\r
+ return 203;\r
+ }\r
+ return -1;\r
+ case 9:\r
+ if ((active0 & 0x2000000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 53;\r
+ jjmatchedPos = 9;\r
+ return 203;\r
+ }\r
+ if ((active0 & 0x8000000000000L) != 0L)\r
+ return 203;\r
+ return -1;\r
+ default :\r
+ return -1;\r
+ }\r
+}\r
+private static final int jjStartNfa_0(int pos, long active0)\r
+{\r
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);\r
+}\r
+static private int jjStopAtPos(int pos, int kind)\r
+{\r
+ jjmatchedKind = kind;\r
+ jjmatchedPos = pos;\r
+ return pos + 1;\r
+}\r
+static private int jjMoveStringLiteralDfa0_0()\r
+{\r
+ switch(curChar)\r
+ {\r
+ case 33:\r
+ return jjStopAtPos(0, 14);\r
+ case 38:\r
+ return jjMoveStringLiteralDfa1_0(0x1000L);\r
+ case 40:\r
+ return jjStopAtPos(0, 8);\r
+ case 41:\r
+ return jjStopAtPos(0, 9);\r
+ case 42:\r
+ return jjStopAtPos(0, 20);\r
+ case 44:\r
+ return jjStopAtPos(0, 6);\r
+ case 58:\r
+ return jjStopAtPos(0, 5);\r
+ case 59:\r
+ return jjStopAtPos(0, 7);\r
+ case 60:\r
+ jjmatchedKind = 17;\r
+ return jjMoveStringLiteralDfa1_0(0x80000L);\r
+ case 61:\r
+ return jjMoveStringLiteralDfa1_0(0x8000L);\r
+ case 62:\r
+ jjmatchedKind = 16;\r
+ return jjMoveStringLiteralDfa1_0(0x40000L);\r
+ case 65:\r
+ return jjMoveStringLiteralDfa1_0(0x20000000000L);\r
+ case 66:\r
+ return jjMoveStringLiteralDfa1_0(0x400000000000L);\r
+ case 67:\r
+ return jjMoveStringLiteralDfa1_0(0x10502000000L);\r
+ case 68:\r
+ return jjMoveStringLiteralDfa1_0(0x10000000L);\r
+ case 69:\r
+ return jjMoveStringLiteralDfa1_0(0x800800000000L);\r
+ case 70:\r
+ return jjMoveStringLiteralDfa1_0(0x81000000000L);\r
+ case 73:\r
+ return jjMoveStringLiteralDfa1_0(0x4000000L);\r
+ case 77:\r
+ return jjMoveStringLiteralDfa1_0(0x2000000000L);\r
+ case 78:\r
+ return jjMoveStringLiteralDfa1_0(0x40000000L);\r
+ case 79:\r
+ return jjMoveStringLiteralDfa1_0(0x4000000000L);\r
+ case 80:\r
+ return jjMoveStringLiteralDfa1_0(0x100200000000L);\r
+ case 81:\r
+ return jjMoveStringLiteralDfa1_0(0x40000000000L);\r
+ case 84:\r
+ return jjMoveStringLiteralDfa1_0(0x208080000000L);\r
+ case 85:\r
+ return jjMoveStringLiteralDfa1_0(0x28000000L);\r
+ case 91:\r
+ return jjStopAtPos(0, 10);\r
+ case 93:\r
+ return jjStopAtPos(0, 11);\r
+ case 99:\r
+ return jjMoveStringLiteralDfa1_0(0x2000000000000L);\r
+ case 102:\r
+ return jjMoveStringLiteralDfa1_0(0x4000000000000L);\r
+ case 110:\r
+ return jjMoveStringLiteralDfa1_0(0x1000000000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa1_0(0x8000000000000L);\r
+ case 124:\r
+ return jjMoveStringLiteralDfa1_0(0x2000L);\r
+ default :\r
+ return jjMoveNfa_0(0, 0);\r
+ }\r
+}\r
+static private int jjMoveStringLiteralDfa1_0(long active0)\r
+{\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(0, active0);\r
+ return 1;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 38:\r
+ if ((active0 & 0x1000L) != 0L)\r
+ return jjStopAtPos(1, 12);\r
+ break;\r
+ case 61:\r
+ if ((active0 & 0x8000L) != 0L)\r
+ return jjStopAtPos(1, 15);\r
+ else if ((active0 & 0x40000L) != 0L)\r
+ return jjStopAtPos(1, 18);\r
+ else if ((active0 & 0x80000L) != 0L)\r
+ return jjStopAtPos(1, 19);\r
+ break;\r
+ case 69:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x10000000L);\r
+ case 77:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000000L);\r
+ case 80:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x8000000L);\r
+ case 82:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x2000000L);\r
+ case 97:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0xa000000000L);\r
+ case 99:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x20000000000L);\r
+ case 101:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L);\r
+ case 108:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x4001000000000L);\r
+ case 110:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x800800000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x3010540000000L);\r
+ case 112:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x8004000000000L);\r
+ case 114:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x380200000000L);\r
+ case 115:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x20000000L);\r
+ case 117:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x40000000000L);\r
+ case 121:\r
+ return jjMoveStringLiteralDfa2_0(active0, 0x80000000L);\r
+ case 124:\r
+ if ((active0 & 0x2000L) != 0L)\r
+ return jjStopAtPos(1, 13);\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(0, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa2_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(0, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(1, active0);\r
+ return 2;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 68:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x8000000L);\r
+ case 69:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x2000000L);\r
+ case 76:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x10000000L);\r
+ case 80:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x4000000L);\r
+ case 97:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L);\r
+ case 100:\r
+ if ((active0 & 0x800000000000L) != 0L)\r
+ {\r
+ jjmatchedKind = 47;\r
+ jjmatchedPos = 2;\r
+ }\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x1000840000000L);\r
+ case 101:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x8044020000000L);\r
+ case 103:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L);\r
+ case 105:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);\r
+ case 110:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x2010500000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x4081200000000L);\r
+ case 112:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x80000000L);\r
+ case 114:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L);\r
+ case 116:\r
+ return jjMoveStringLiteralDfa3_0(active0, 0x22000000000L);\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(1, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa3_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(1, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(2, active0);\r
+ return 3;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 65:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0xa000000L);\r
+ case 69:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x10000000L);\r
+ case 79:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000000L);\r
+ case 99:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x2000000000L);\r
+ case 100:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x10000000000L);\r
+ case 101:\r
+ if ((active0 & 0x40000000L) != 0L)\r
+ return jjStopAtPos(3, 30);\r
+ else if ((active0 & 0x80000000L) != 0L)\r
+ return jjStopAtPos(3, 31);\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L);\r
+ case 103:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);\r
+ case 105:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x420000000000L);\r
+ case 109:\r
+ if ((active0 & 0x80000000000L) != 0L)\r
+ return jjStopAtPos(3, 43);\r
+ break;\r
+ case 110:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x2200c00000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x100000000000L);\r
+ case 112:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x200000000L);\r
+ case 114:\r
+ if ((active0 & 0x20000000L) != 0L)\r
+ return jjStopAtPos(3, 29);\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x8044000000000L);\r
+ case 116:\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x100000000L);\r
+ case 119:\r
+ if ((active0 & 0x1000000000L) != 0L)\r
+ return jjStopAtPos(3, 36);\r
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L);\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(2, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa4_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(2, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(3, active0);\r
+ return 4;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 82:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x4000000L);\r
+ case 84:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x1a000000L);\r
+ case 97:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x8004100000000L);\r
+ case 101:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x2008600000000L);\r
+ case 104:\r
+ if ((active0 & 0x2000000000L) != 0L)\r
+ return jjStopAtPos(4, 37);\r
+ break;\r
+ case 105:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x10000000000L);\r
+ case 110:\r
+ if ((active0 & 0x400000000000L) != 0L)\r
+ return jjStopAtPos(4, 46);\r
+ break;\r
+ case 111:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x20800000000L);\r
+ case 114:\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x100000000000L);\r
+ case 115:\r
+ if ((active0 & 0x1000000000000L) != 0L)\r
+ return jjStartNfaWithStates_0(4, 48, 203);\r
+ else if ((active0 & 0x4000000000000L) != 0L)\r
+ return jjStartNfaWithStates_0(4, 50, 203);\r
+ return jjMoveStringLiteralDfa5_0(active0, 0x200000000000L);\r
+ case 121:\r
+ if ((active0 & 0x40000000000L) != 0L)\r
+ return jjStopAtPos(4, 42);\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(3, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa5_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(3, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(4, active0);\r
+ return 5;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 69:\r
+ if ((active0 & 0x2000000L) != 0L)\r
+ return jjStopAtPos(5, 25);\r
+ else if ((active0 & 0x8000000L) != 0L)\r
+ return jjStopAtPos(5, 27);\r
+ else if ((active0 & 0x10000000L) != 0L)\r
+ return jjStopAtPos(5, 28);\r
+ break;\r
+ case 84:\r
+ if ((active0 & 0x4000000L) != 0L)\r
+ return jjStopAtPos(5, 26);\r
+ break;\r
+ case 97:\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x200000000000L);\r
+ case 99:\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x2000400000000L);\r
+ case 100:\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x800000000L);\r
+ case 105:\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x100100000000L);\r
+ case 110:\r
+ if ((active0 & 0x20000000000L) != 0L)\r
+ return jjStopAtPos(5, 41);\r
+ break;\r
+ case 114:\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x200000000L);\r
+ case 116:\r
+ if ((active0 & 0x8000000000L) != 0L)\r
+ return jjStopAtPos(5, 39);\r
+ return jjMoveStringLiteralDfa6_0(active0, 0x8014000000000L);\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(4, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa6_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(4, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(5, active0);\r
+ return 6;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 99:\r
+ return jjMoveStringLiteralDfa7_0(active0, 0x200000000000L);\r
+ case 101:\r
+ return jjMoveStringLiteralDfa7_0(active0, 0x800000000L);\r
+ case 105:\r
+ return jjMoveStringLiteralDfa7_0(active0, 0x8014000000000L);\r
+ case 110:\r
+ if ((active0 & 0x100000000L) != 0L)\r
+ return jjStopAtPos(6, 32);\r
+ break;\r
+ case 116:\r
+ return jjMoveStringLiteralDfa7_0(active0, 0x2100600000000L);\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(5, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa7_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(5, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(6, active0);\r
+ return 7;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 105:\r
+ return jjMoveStringLiteralDfa8_0(active0, 0x2000400000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa8_0(active0, 0x8014000000000L);\r
+ case 115:\r
+ if ((active0 & 0x800000000L) != 0L)\r
+ return jjStopAtPos(7, 35);\r
+ break;\r
+ case 116:\r
+ return jjMoveStringLiteralDfa8_0(active0, 0x200000000000L);\r
+ case 121:\r
+ if ((active0 & 0x200000000L) != 0L)\r
+ return jjStopAtPos(7, 33);\r
+ else if ((active0 & 0x100000000000L) != 0L)\r
+ return jjStopAtPos(7, 44);\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(6, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa8_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(6, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(7, active0);\r
+ return 8;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 105:\r
+ return jjMoveStringLiteralDfa9_0(active0, 0x200000000000L);\r
+ case 110:\r
+ if ((active0 & 0x4000000000L) != 0L)\r
+ return jjStopAtPos(8, 38);\r
+ else if ((active0 & 0x10000000000L) != 0L)\r
+ return jjStopAtPos(8, 40);\r
+ return jjMoveStringLiteralDfa9_0(active0, 0x8000000000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa9_0(active0, 0x2000400000000L);\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(7, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa9_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(7, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(8, active0);\r
+ return 9;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 110:\r
+ if ((active0 & 0x400000000L) != 0L)\r
+ return jjStopAtPos(9, 34);\r
+ return jjMoveStringLiteralDfa10_0(active0, 0x2000000000000L);\r
+ case 111:\r
+ return jjMoveStringLiteralDfa10_0(active0, 0x200000000000L);\r
+ case 115:\r
+ if ((active0 & 0x8000000000000L) != 0L)\r
+ return jjStartNfaWithStates_0(9, 51, 203);\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(8, active0);\r
+}\r
+static private int jjMoveStringLiteralDfa10_0(long old0, long active0)\r
+{\r
+ if (((active0 &= old0)) == 0L)\r
+ return jjStartNfa_0(8, old0);\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) {\r
+ jjStopStringLiteralDfa_0(9, active0);\r
+ return 10;\r
+ }\r
+ switch(curChar)\r
+ {\r
+ case 110:\r
+ if ((active0 & 0x200000000000L) != 0L)\r
+ return jjStopAtPos(10, 45);\r
+ break;\r
+ case 115:\r
+ if ((active0 & 0x2000000000000L) != 0L)\r
+ return jjStartNfaWithStates_0(10, 49, 203);\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+ return jjStartNfa_0(9, active0);\r
+}\r
+static private int jjStartNfaWithStates_0(int pos, int kind, int state)\r
+{\r
+ jjmatchedKind = kind;\r
+ jjmatchedPos = pos;\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) { return pos + 1; }\r
+ return jjMoveNfa_0(state, pos + 1);\r
+}\r
+static private int jjMoveNfa_0(int startState, int curPos)\r
+{\r
+ int startsAt = 0;\r
+ jjnewStateCnt = 203;\r
+ int i = 1;\r
+ jjstateSet[0] = startState;\r
+ int kind = 0x7fffffff;\r
+ for (;;)\r
+ {\r
+ if (++jjround == 0x7fffffff)\r
+ ReInitRounds();\r
+ if (curChar < 64)\r
+ {\r
+ long l = 1L << curChar;\r
+ do\r
+ {\r
+ switch(jjstateSet[--i])\r
+ {\r
+ case 84:\r
+ if ((0x3ff200000000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 107;\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 85;\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ {\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ }\r
+ break;\r
+ case 203:\r
+ if ((0x3ff200000000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ {\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ }\r
+ break;\r
+ case 0:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAddStates(0, 4);\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjAddStates(5, 6);\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ {\r
+ if (kind > 52)\r
+ kind = 52;\r
+ jjCheckNAddStates(7, 9);\r
+ }\r
+ else if (curChar == 48)\r
+ {\r
+ if (kind > 52)\r
+ kind = 52;\r
+ jjCheckNAdd(4);\r
+ }\r
+ if (curChar == 50)\r
+ jjAddStates(10, 11);\r
+ else if (curChar == 49)\r
+ jjCheckNAddStates(12, 14);\r
+ if (curChar == 50)\r
+ jjAddStates(15, 17);\r
+ break;\r
+ case 1:\r
+ if ((0x3ff200000000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ break;\r
+ case 2:\r
+ if ((0x3ff000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ break;\r
+ case 3:\r
+ if (curChar != 48)\r
+ break;\r
+ if (kind > 52)\r
+ kind = 52;\r
+ jjCheckNAdd(4);\r
+ break;\r
+ case 4:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(5);\r
+ break;\r
+ case 5:\r
+ if (curChar == 58)\r
+ jjCheckNAddStates(18, 20);\r
+ break;\r
+ case 6:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(7);\r
+ break;\r
+ case 7:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 8;\r
+ break;\r
+ case 8:\r
+ if (curChar == 58)\r
+ jjCheckNAddStates(21, 23);\r
+ break;\r
+ case 9:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(10);\r
+ break;\r
+ case 10:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 57)\r
+ kind = 57;\r
+ break;\r
+ case 11:\r
+ if ((0x3e000000000000L & l) != 0L)\r
+ jjCheckNAdd(10);\r
+ break;\r
+ case 12:\r
+ if ((0x3e000000000000L & l) != 0L)\r
+ jjCheckNAdd(7);\r
+ break;\r
+ case 13:\r
+ if ((0x3fe000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 52)\r
+ kind = 52;\r
+ jjCheckNAddStates(7, 9);\r
+ break;\r
+ case 14:\r
+ if ((0x3ff000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 52)\r
+ kind = 52;\r
+ jjCheckNAdd(14);\r
+ break;\r
+ case 15:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(16);\r
+ break;\r
+ case 16:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(24, 28);\r
+ break;\r
+ case 17:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(18);\r
+ break;\r
+ case 18:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(29, 33);\r
+ break;\r
+ case 19:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(20);\r
+ break;\r
+ case 20:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(34, 38);\r
+ break;\r
+ case 21:\r
+ if ((0x3ff000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 55)\r
+ kind = 55;\r
+ jjCheckNAdd(22);\r
+ break;\r
+ case 22:\r
+ if (curChar == 47)\r
+ jjAddStates(39, 41);\r
+ break;\r
+ case 23:\r
+ if ((0x3fe000000000000L & l) != 0L && kind > 55)\r
+ kind = 55;\r
+ break;\r
+ case 24:\r
+ if ((0x6000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 25;\r
+ break;\r
+ case 25:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 55)\r
+ kind = 55;\r
+ break;\r
+ case 26:\r
+ if (curChar == 51)\r
+ jjstateSet[jjnewStateCnt++] = 27;\r
+ break;\r
+ case 27:\r
+ if ((0x7000000000000L & l) != 0L && kind > 55)\r
+ kind = 55;\r
+ break;\r
+ case 28:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(21);\r
+ break;\r
+ case 29:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 30;\r
+ break;\r
+ case 30:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(21);\r
+ break;\r
+ case 31:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 32;\r
+ break;\r
+ case 32:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(21);\r
+ break;\r
+ case 33:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 34;\r
+ break;\r
+ case 34:\r
+ if ((0x3f000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 55)\r
+ kind = 55;\r
+ jjCheckNAdd(22);\r
+ break;\r
+ case 35:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 33;\r
+ break;\r
+ case 36:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(19);\r
+ break;\r
+ case 37:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 38;\r
+ break;\r
+ case 38:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(19);\r
+ break;\r
+ case 39:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 40;\r
+ break;\r
+ case 40:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(19);\r
+ break;\r
+ case 41:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 42;\r
+ break;\r
+ case 42:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(20);\r
+ break;\r
+ case 43:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 41;\r
+ break;\r
+ case 44:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(17);\r
+ break;\r
+ case 45:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 46;\r
+ break;\r
+ case 46:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(17);\r
+ break;\r
+ case 47:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 48;\r
+ break;\r
+ case 48:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(17);\r
+ break;\r
+ case 49:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 50;\r
+ break;\r
+ case 50:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(18);\r
+ break;\r
+ case 51:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 49;\r
+ break;\r
+ case 52:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(53);\r
+ break;\r
+ case 53:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(42, 46);\r
+ break;\r
+ case 54:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(55);\r
+ break;\r
+ case 55:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(47, 51);\r
+ break;\r
+ case 56:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(57);\r
+ break;\r
+ case 57:\r
+ if (curChar == 46)\r
+ jjCheckNAddStates(52, 56);\r
+ break;\r
+ case 58:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 60)\r
+ kind = 60;\r
+ break;\r
+ case 59:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(58);\r
+ break;\r
+ case 60:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 61;\r
+ break;\r
+ case 61:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(58);\r
+ break;\r
+ case 62:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 63;\r
+ break;\r
+ case 63:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(58);\r
+ break;\r
+ case 64:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 65;\r
+ break;\r
+ case 65:\r
+ if ((0x3f000000000000L & l) != 0L && kind > 60)\r
+ kind = 60;\r
+ break;\r
+ case 66:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 64;\r
+ break;\r
+ case 67:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(56);\r
+ break;\r
+ case 68:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 69;\r
+ break;\r
+ case 69:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(56);\r
+ break;\r
+ case 70:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 71;\r
+ break;\r
+ case 71:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(56);\r
+ break;\r
+ case 72:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 73;\r
+ break;\r
+ case 73:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(57);\r
+ break;\r
+ case 74:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 72;\r
+ break;\r
+ case 75:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(54);\r
+ break;\r
+ case 76:\r
+ if (curChar == 49)\r
+ jjstateSet[jjnewStateCnt++] = 77;\r
+ break;\r
+ case 77:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(54);\r
+ break;\r
+ case 78:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 79;\r
+ break;\r
+ case 79:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(54);\r
+ break;\r
+ case 80:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 81;\r
+ break;\r
+ case 81:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(55);\r
+ break;\r
+ case 82:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 80;\r
+ break;\r
+ case 83:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjAddStates(5, 6);\r
+ break;\r
+ case 85:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 86;\r
+ break;\r
+ case 86:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 87;\r
+ break;\r
+ case 87:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 88;\r
+ break;\r
+ case 88:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 89;\r
+ break;\r
+ case 89:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 90;\r
+ break;\r
+ case 90:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 91;\r
+ break;\r
+ case 91:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 92;\r
+ break;\r
+ case 92:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 93;\r
+ break;\r
+ case 93:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 94;\r
+ break;\r
+ case 94:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 95;\r
+ break;\r
+ case 95:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 96;\r
+ break;\r
+ case 96:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 97;\r
+ break;\r
+ case 97:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 98;\r
+ break;\r
+ case 98:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 99;\r
+ break;\r
+ case 99:\r
+ if ((0x3ff000000000000L & l) == 0L)\r
+ break;\r
+ if (kind > 54)\r
+ kind = 54;\r
+ jjstateSet[jjnewStateCnt++] = 100;\r
+ break;\r
+ case 100:\r
+ if (curChar == 47)\r
+ jjAddStates(57, 59);\r
+ break;\r
+ case 101:\r
+ if ((0x3fe000000000000L & l) != 0L && kind > 54)\r
+ kind = 54;\r
+ break;\r
+ case 102:\r
+ if ((0xe000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 103;\r
+ break;\r
+ case 103:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 54)\r
+ kind = 54;\r
+ break;\r
+ case 104:\r
+ if (curChar == 52)\r
+ jjstateSet[jjnewStateCnt++] = 105;\r
+ break;\r
+ case 105:\r
+ if ((0x1ff000000000000L & l) != 0L && kind > 54)\r
+ kind = 54;\r
+ break;\r
+ case 106:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 107;\r
+ break;\r
+ case 107:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 108;\r
+ break;\r
+ case 108:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 109;\r
+ break;\r
+ case 109:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 110;\r
+ break;\r
+ case 110:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 111;\r
+ break;\r
+ case 111:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 112;\r
+ break;\r
+ case 112:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 113;\r
+ break;\r
+ case 113:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 114;\r
+ break;\r
+ case 114:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 115;\r
+ break;\r
+ case 115:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 116;\r
+ break;\r
+ case 116:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 117;\r
+ break;\r
+ case 117:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 118;\r
+ break;\r
+ case 118:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 119;\r
+ break;\r
+ case 119:\r
+ if (curChar == 58)\r
+ jjstateSet[jjnewStateCnt++] = 120;\r
+ break;\r
+ case 120:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 121;\r
+ break;\r
+ case 121:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 59)\r
+ kind = 59;\r
+ break;\r
+ case 122:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAddStates(0, 4);\r
+ break;\r
+ case 123:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 124;\r
+ break;\r
+ case 124:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 125;\r
+ break;\r
+ case 125:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 126;\r
+ break;\r
+ case 126:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(60, 64);\r
+ break;\r
+ case 127:\r
+ if ((0x1aa000000000000L & l) != 0L)\r
+ jjCheckNAdd(128);\r
+ break;\r
+ case 128:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(65, 68);\r
+ break;\r
+ case 129:\r
+ case 137:\r
+ case 142:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(130);\r
+ break;\r
+ case 130:\r
+ if ((0x3fe000000000000L & l) != 0L && kind > 56)\r
+ kind = 56;\r
+ break;\r
+ case 131:\r
+ case 138:\r
+ case 143:\r
+ if ((0x6000000000000L & l) != 0L)\r
+ jjCheckNAdd(132);\r
+ break;\r
+ case 132:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 56)\r
+ kind = 56;\r
+ break;\r
+ case 133:\r
+ if (curChar == 51)\r
+ jjstateSet[jjnewStateCnt++] = 134;\r
+ break;\r
+ case 134:\r
+ if ((0x3000000000000L & l) != 0L && kind > 56)\r
+ kind = 56;\r
+ break;\r
+ case 135:\r
+ if ((0x250000000000000L & l) != 0L)\r
+ jjCheckNAdd(136);\r
+ break;\r
+ case 136:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(69, 72);\r
+ break;\r
+ case 139:\r
+ if (curChar == 48 && kind > 56)\r
+ kind = 56;\r
+ break;\r
+ case 140:\r
+ if (curChar == 51)\r
+ jjstateSet[jjnewStateCnt++] = 139;\r
+ break;\r
+ case 141:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(73, 75);\r
+ break;\r
+ case 144:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 141;\r
+ break;\r
+ case 145:\r
+ if (curChar == 48)\r
+ jjCheckNAddStates(76, 78);\r
+ break;\r
+ case 146:\r
+ if (curChar == 49)\r
+ jjAddStates(79, 81);\r
+ break;\r
+ case 147:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(128);\r
+ break;\r
+ case 148:\r
+ if (curChar == 50)\r
+ jjCheckNAdd(128);\r
+ break;\r
+ case 149:\r
+ if (curChar == 49)\r
+ jjCheckNAdd(136);\r
+ break;\r
+ case 150:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 151;\r
+ break;\r
+ case 151:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 152;\r
+ break;\r
+ case 152:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 153;\r
+ break;\r
+ case 153:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(82, 86);\r
+ break;\r
+ case 154:\r
+ if ((0x1aa000000000000L & l) != 0L)\r
+ jjCheckNAdd(155);\r
+ break;\r
+ case 155:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(87, 90);\r
+ break;\r
+ case 156:\r
+ case 178:\r
+ case 183:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(157);\r
+ break;\r
+ case 157:\r
+ if ((0x3fe000000000000L & l) != 0L)\r
+ jjCheckNAdd(158);\r
+ break;\r
+ case 158:\r
+ if (curChar == 44)\r
+ jjCheckNAddStates(91, 94);\r
+ break;\r
+ case 159:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(160);\r
+ break;\r
+ case 160:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(161);\r
+ break;\r
+ case 161:\r
+ if (curChar == 58)\r
+ jjCheckNAddStates(95, 97);\r
+ break;\r
+ case 162:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(163);\r
+ break;\r
+ case 163:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 164;\r
+ break;\r
+ case 164:\r
+ if (curChar == 58)\r
+ jjCheckNAddStates(98, 100);\r
+ break;\r
+ case 165:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(166);\r
+ break;\r
+ case 166:\r
+ if ((0x3ff000000000000L & l) != 0L && kind > 58)\r
+ kind = 58;\r
+ break;\r
+ case 167:\r
+ if ((0x3e000000000000L & l) != 0L)\r
+ jjCheckNAdd(166);\r
+ break;\r
+ case 168:\r
+ if ((0x3e000000000000L & l) != 0L)\r
+ jjCheckNAdd(163);\r
+ break;\r
+ case 169:\r
+ if (curChar == 49)\r
+ jjCheckNAdd(160);\r
+ break;\r
+ case 170:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 171;\r
+ break;\r
+ case 171:\r
+ if ((0xf000000000000L & l) != 0L)\r
+ jjCheckNAdd(161);\r
+ break;\r
+ case 172:\r
+ case 179:\r
+ case 184:\r
+ if ((0x6000000000000L & l) != 0L)\r
+ jjCheckNAdd(173);\r
+ break;\r
+ case 173:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(158);\r
+ break;\r
+ case 174:\r
+ if (curChar == 51)\r
+ jjstateSet[jjnewStateCnt++] = 175;\r
+ break;\r
+ case 175:\r
+ if ((0x3000000000000L & l) != 0L)\r
+ jjCheckNAdd(158);\r
+ break;\r
+ case 176:\r
+ if ((0x250000000000000L & l) != 0L)\r
+ jjCheckNAdd(177);\r
+ break;\r
+ case 177:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(101, 104);\r
+ break;\r
+ case 180:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(158);\r
+ break;\r
+ case 181:\r
+ if (curChar == 51)\r
+ jjstateSet[jjnewStateCnt++] = 180;\r
+ break;\r
+ case 182:\r
+ if (curChar == 45)\r
+ jjCheckNAddStates(105, 107);\r
+ break;\r
+ case 185:\r
+ if (curChar == 50)\r
+ jjstateSet[jjnewStateCnt++] = 182;\r
+ break;\r
+ case 186:\r
+ if (curChar == 48)\r
+ jjCheckNAddStates(108, 110);\r
+ break;\r
+ case 187:\r
+ if (curChar == 49)\r
+ jjAddStates(111, 113);\r
+ break;\r
+ case 188:\r
+ if (curChar == 48)\r
+ jjCheckNAdd(155);\r
+ break;\r
+ case 189:\r
+ if (curChar == 50)\r
+ jjCheckNAdd(155);\r
+ break;\r
+ case 190:\r
+ if (curChar == 49)\r
+ jjCheckNAdd(177);\r
+ break;\r
+ case 191:\r
+ if (curChar == 49)\r
+ jjCheckNAddStates(12, 14);\r
+ break;\r
+ case 192:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(15);\r
+ break;\r
+ case 193:\r
+ if ((0x3ff000000000000L & l) != 0L)\r
+ jjCheckNAdd(52);\r
+ break;\r
+ case 194:\r
+ if (curChar == 50)\r
+ jjAddStates(15, 17);\r
+ break;\r
+ case 195:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(15);\r
+ break;\r
+ case 196:\r
+ if ((0xf000000000000L & l) != 0L)\r
+ jjCheckNAdd(5);\r
+ break;\r
+ case 197:\r
+ if ((0x1f000000000000L & l) != 0L)\r
+ jjCheckNAdd(52);\r
+ break;\r
+ case 198:\r
+ if (curChar == 50)\r
+ jjAddStates(10, 11);\r
+ break;\r
+ case 199:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 200;\r
+ break;\r
+ case 200:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(16);\r
+ break;\r
+ case 201:\r
+ if (curChar == 53)\r
+ jjstateSet[jjnewStateCnt++] = 202;\r
+ break;\r
+ case 202:\r
+ if ((0x3f000000000000L & l) != 0L)\r
+ jjCheckNAdd(53);\r
+ break;\r
+ default : break;\r
+ }\r
+ } while(i != startsAt);\r
+ }\r
+ else if (curChar < 128)\r
+ {\r
+ long l = 1L << (curChar & 077);\r
+ do\r
+ {\r
+ switch(jjstateSet[--i])\r
+ {\r
+ case 84:\r
+ if ((0x7fffffe80000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ if ((0x7fffffe00000000L & l) != 0L)\r
+ {\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ }\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 107;\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 85;\r
+ break;\r
+ case 203:\r
+ if ((0x7fffffe80000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ if ((0x7fffffe00000000L & l) != 0L)\r
+ {\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ }\r
+ break;\r
+ case 0:\r
+ if ((0x7fffffe00000000L & l) != 0L)\r
+ {\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAddTwoStates(1, 2);\r
+ }\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjAddStates(5, 6);\r
+ break;\r
+ case 1:\r
+ if ((0x7fffffe80000000L & l) != 0L)\r
+ jjCheckNAddTwoStates(1, 2);\r
+ break;\r
+ case 2:\r
+ if ((0x7fffffe00000000L & l) == 0L)\r
+ break;\r
+ if (kind > 53)\r
+ kind = 53;\r
+ jjCheckNAdd(2);\r
+ break;\r
+ case 83:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjAddStates(5, 6);\r
+ break;\r
+ case 86:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 87;\r
+ break;\r
+ case 87:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 88;\r
+ break;\r
+ case 89:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 90;\r
+ break;\r
+ case 90:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 91;\r
+ break;\r
+ case 92:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 93;\r
+ break;\r
+ case 93:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 94;\r
+ break;\r
+ case 95:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 96;\r
+ break;\r
+ case 96:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 97;\r
+ break;\r
+ case 98:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 99;\r
+ break;\r
+ case 99:\r
+ if ((0x7e00000000L & l) == 0L)\r
+ break;\r
+ if (kind > 54)\r
+ kind = 54;\r
+ jjstateSet[jjnewStateCnt++] = 100;\r
+ break;\r
+ case 106:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 107;\r
+ break;\r
+ case 108:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 109;\r
+ break;\r
+ case 109:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 110;\r
+ break;\r
+ case 111:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 112;\r
+ break;\r
+ case 112:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 113;\r
+ break;\r
+ case 114:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 115;\r
+ break;\r
+ case 115:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 116;\r
+ break;\r
+ case 117:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 118;\r
+ break;\r
+ case 118:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 119;\r
+ break;\r
+ case 120:\r
+ if ((0x7e00000000L & l) != 0L)\r
+ jjstateSet[jjnewStateCnt++] = 121;\r
+ break;\r
+ case 121:\r
+ if ((0x7e00000000L & l) != 0L && kind > 59)\r
+ kind = 59;\r
+ break;\r
+ default : break;\r
+ }\r
+ } while(i != startsAt);\r
+ }\r
+ else\r
+ {\r
+ int i2 = (curChar & 0xff) >> 6;\r
+ long l2 = 1L << (curChar & 077);\r
+ do\r
+ {\r
+ switch(jjstateSet[--i])\r
+ {\r
+ default : break;\r
+ }\r
+ } while(i != startsAt);\r
+ }\r
+ if (kind != 0x7fffffff)\r
+ {\r
+ jjmatchedKind = kind;\r
+ jjmatchedPos = curPos;\r
+ kind = 0x7fffffff;\r
+ }\r
+ ++curPos;\r
+ if ((i = jjnewStateCnt) == (startsAt = 203 - (jjnewStateCnt = startsAt)))\r
+ return curPos;\r
+ try { curChar = input_stream.readChar(); }\r
+ catch(java.io.IOException e) { return curPos; }\r
+ }\r
+}\r
+static final int[] jjnextStates = {\r
+ 16, 123, 5, 150, 53, 84, 106, 14, 15, 52, 199, 201, 192, 4, 193, 195, \r
+ 196, 197, 6, 7, 12, 9, 10, 11, 17, 44, 45, 47, 51, 19, 36, 37, \r
+ 39, 43, 21, 28, 29, 31, 35, 23, 24, 26, 54, 75, 76, 78, 82, 56, \r
+ 67, 68, 70, 74, 58, 59, 60, 62, 66, 101, 102, 104, 127, 135, 144, 145, \r
+ 146, 129, 130, 131, 133, 137, 130, 138, 140, 142, 130, 143, 127, 135, 144, 147, \r
+ 148, 149, 154, 176, 185, 186, 187, 156, 157, 172, 174, 159, 160, 169, 170, 162, \r
+ 163, 168, 165, 166, 167, 178, 157, 179, 181, 183, 157, 184, 154, 176, 185, 188, \r
+ 189, 190, \r
+};\r
+\r
+/** Token literal values. */\r
+public static final String[] jjstrLiteralImages = {\r
+"", null, null, null, null, "\72", "\54", "\73", "\50", "\51", "\133", "\135", \r
+"\46\46", "\174\174", "\41", "\75\75", "\76", "\74", "\76\75", "\74\75", "\52", null, \r
+null, null, null, "\103\122\105\101\124\105", "\111\115\120\117\122\124", \r
+"\125\120\104\101\124\105", "\104\105\114\105\124\105", "\125\163\145\162", "\116\157\144\145", \r
+"\124\171\160\145", "\103\157\156\164\141\151\156", "\120\162\157\160\145\162\164\171", \r
+"\103\157\156\156\145\143\164\151\157\156", "\105\156\144\156\157\144\145\163", "\106\154\157\167", \r
+"\115\141\164\143\150", "\117\160\145\162\141\164\151\157\156", "\124\141\162\147\145\164", \r
+"\103\157\156\144\151\164\151\157\156", "\101\143\164\151\157\156", "\121\165\145\162\171", "\106\162\157\155", \r
+"\120\162\151\157\162\151\164\171", "\124\162\141\156\163\141\143\164\151\157\156", "\102\145\147\151\156", \r
+"\105\156\144", "\156\157\144\145\163", "\143\157\156\156\145\143\164\151\157\156\163", \r
+"\146\154\157\167\163", "\157\160\145\162\141\164\151\157\156\163", null, null, null, null, null, null, \r
+null, null, null, null, null, null, null, null, null, null, null, null, null, null, };\r
+\r
+/** Lexer state names. */\r
+public static final String[] lexStateNames = {\r
+ "DEFAULT",\r
+};\r
+static final long[] jjtoToken = {\r
+ 0x1ffffffffe1fffe1L, 0x0L, \r
+};\r
+static final long[] jjtoSkip = {\r
+ 0x1eL, 0x0L, \r
+};\r
+static protected SimpleCharStream input_stream;\r
+static private final int[] jjrounds = new int[203];\r
+static private final int[] jjstateSet = new int[406];\r
+static protected char curChar;\r
+/** Constructor. */\r
+public NEMOparserTokenManager(SimpleCharStream stream){\r
+ if (input_stream != null)\r
+ throw new TokenMgrError("ERROR: Second call to constructor of static lexer. You must use ReInit() to initialize the static variables.", TokenMgrError.STATIC_LEXER_ERROR);\r
+ input_stream = stream;\r
+}\r
+\r
+/** Constructor. */\r
+public NEMOparserTokenManager(SimpleCharStream stream, int lexState){\r
+ this(stream);\r
+ SwitchTo(lexState);\r
+}\r
+\r
+/** Reinitialise parser. */\r
+static public void ReInit(SimpleCharStream stream)\r
+{\r
+ jjmatchedPos = jjnewStateCnt = 0;\r
+ curLexState = defaultLexState;\r
+ input_stream = stream;\r
+ ReInitRounds();\r
+}\r
+static private void ReInitRounds()\r
+{\r
+ int i;\r
+ jjround = 0x80000001;\r
+ for (i = 203; i-- > 0;)\r
+ jjrounds[i] = 0x80000000;\r
+}\r
+\r
+/** Reinitialise parser. */\r
+static public void ReInit(SimpleCharStream stream, int lexState)\r
+{\r
+ ReInit(stream);\r
+ SwitchTo(lexState);\r
+}\r
+\r
+/** Switch to specified lex state. */\r
+static public void SwitchTo(int lexState)\r
+{\r
+ if (lexState >= 1 || lexState < 0)\r
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);\r
+ else\r
+ curLexState = lexState;\r
+}\r
+\r
+static protected Token jjFillToken()\r
+{\r
+ final Token t;\r
+ final String curTokenImage;\r
+ final int beginLine;\r
+ final int endLine;\r
+ final int beginColumn;\r
+ final int endColumn;\r
+ String im = jjstrLiteralImages[jjmatchedKind];\r
+ curTokenImage = (im == null) ? input_stream.GetImage() : im;\r
+ beginLine = input_stream.getBeginLine();\r
+ beginColumn = input_stream.getBeginColumn();\r
+ endLine = input_stream.getEndLine();\r
+ endColumn = input_stream.getEndColumn();\r
+ t = Token.newToken(jjmatchedKind, curTokenImage);\r
+\r
+ t.beginLine = beginLine;\r
+ t.endLine = endLine;\r
+ t.beginColumn = beginColumn;\r
+ t.endColumn = endColumn;\r
+\r
+ return t;\r
+}\r
+\r
+static int curLexState = 0;\r
+static int defaultLexState = 0;\r
+static int jjnewStateCnt;\r
+static int jjround;\r
+static int jjmatchedPos;\r
+static int jjmatchedKind;\r
+\r
+/** Get the next Token. */\r
+public static Token getNextToken() \r
+{\r
+ Token matchedToken;\r
+ int curPos = 0;\r
+\r
+ EOFLoop :\r
+ for (;;)\r
+ {\r
+ try\r
+ {\r
+ curChar = input_stream.BeginToken();\r
+ }\r
+ catch(java.io.IOException e)\r
+ {\r
+ jjmatchedKind = 0;\r
+ matchedToken = jjFillToken();\r
+ return matchedToken;\r
+ }\r
+\r
+ try { input_stream.backup(0);\r
+ while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L)\r
+ curChar = input_stream.BeginToken();\r
+ }\r
+ catch (java.io.IOException e1) { continue EOFLoop; }\r
+ jjmatchedKind = 0x7fffffff;\r
+ jjmatchedPos = 0;\r
+ curPos = jjMoveStringLiteralDfa0_0();\r
+ if (jjmatchedKind != 0x7fffffff)\r
+ {\r
+ if (jjmatchedPos + 1 < curPos)\r
+ input_stream.backup(curPos - jjmatchedPos - 1);\r
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)\r
+ {\r
+ matchedToken = jjFillToken();\r
+ return matchedToken;\r
+ }\r
+ else\r
+ {\r
+ continue EOFLoop;\r
+ }\r
+ }\r
+ int error_line = input_stream.getEndLine();\r
+ int error_column = input_stream.getEndColumn();\r
+ String error_after = null;\r
+ boolean EOFSeen = false;\r
+ try { input_stream.readChar(); input_stream.backup(1); }\r
+ catch (java.io.IOException e1) {\r
+ EOFSeen = true;\r
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();\r
+ if (curChar == '\n' || curChar == '\r') {\r
+ error_line++;\r
+ error_column = 0;\r
+ }\r
+ else\r
+ error_column++;\r
+ }\r
+ if (!EOFSeen) {\r
+ input_stream.backup(1);\r
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();\r
+ }\r
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);\r
+ }\r
+}\r
+\r
+static private void jjCheckNAdd(int state)\r
+{\r
+ if (jjrounds[state] != jjround)\r
+ {\r
+ jjstateSet[jjnewStateCnt++] = state;\r
+ jjrounds[state] = jjround;\r
+ }\r
+}\r
+static private void jjAddStates(int start, int end)\r
+{\r
+ do {\r
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];\r
+ } while (start++ != end);\r
+}\r
+static private void jjCheckNAddTwoStates(int state1, int state2)\r
+{\r
+ jjCheckNAdd(state1);\r
+ jjCheckNAdd(state2);\r
+}\r
+\r
+static private void jjCheckNAddStates(int start, int end)\r
+{\r
+ do {\r
+ jjCheckNAdd(jjnextStates[start]);\r
+ } while (start++ != end);\r
+}\r
+\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */\r
+/* JavaCCOptions:KEEP_LINE_COL=null */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * This exception is thrown when parse errors are encountered.\r
+ * You can explicitly create objects of this exception type by\r
+ * calling the method generateParseException in the generated\r
+ * parser.\r
+ *\r
+ * You can modify this class to customize your error reporting\r
+ * mechanisms so long as you retain the public fields.\r
+ */\r
+public class ParseException extends Exception {\r
+\r
+ /**\r
+ * The version identifier for this Serializable class.\r
+ * Increment only if the <i>serialized</i> form of the\r
+ * class changes.\r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ /**\r
+ * This constructor is used by the method "generateParseException"\r
+ * in the generated parser. Calling this constructor generates\r
+ * a new object of this type with the fields "currentToken",\r
+ * "expectedTokenSequences", and "tokenImage" set.\r
+ */\r
+ public ParseException(Token currentTokenVal,\r
+ int[][] expectedTokenSequencesVal,\r
+ String[] tokenImageVal\r
+ )\r
+ {\r
+ super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));\r
+ currentToken = currentTokenVal;\r
+ expectedTokenSequences = expectedTokenSequencesVal;\r
+ tokenImage = tokenImageVal;\r
+ }\r
+\r
+ /**\r
+ * The following constructors are for use by you for whatever\r
+ * purpose you can think of. Constructing the exception in this\r
+ * manner makes the exception behave in the normal way - i.e., as\r
+ * documented in the class "Throwable". The fields "errorToken",\r
+ * "expectedTokenSequences", and "tokenImage" do not contain\r
+ * relevant information. The JavaCC generated code does not use\r
+ * these constructors.\r
+ */\r
+\r
+ public ParseException() {\r
+ super();\r
+ }\r
+\r
+ /** Constructor with message. */\r
+ public ParseException(String message) {\r
+ super(message);\r
+ }\r
+\r
+\r
+ /**\r
+ * This is the last token that has been consumed successfully. If\r
+ * this object has been created due to a parse error, the token\r
+ * followng this token will (therefore) be the first error token.\r
+ */\r
+ public Token currentToken;\r
+\r
+ /**\r
+ * Each entry in this array is an array of integers. Each array\r
+ * of integers represents a sequence of tokens (by their ordinal\r
+ * values) that is expected at this point of the parse.\r
+ */\r
+ public int[][] expectedTokenSequences;\r
+\r
+ /**\r
+ * This is a reference to the "tokenImage" array of the generated\r
+ * parser within which the parse error occurred. This array is\r
+ * defined in the generated ...Constants interface.\r
+ */\r
+ public String[] tokenImage;\r
+\r
+ /**\r
+ * It uses "currentToken" and "expectedTokenSequences" to generate a parse\r
+ * error message and returns it. If this object has been created\r
+ * due to a parse error, and you do not catch it (it gets thrown\r
+ * from the parser) the correct error message\r
+ * gets displayed.\r
+ */\r
+ private static String initialise(Token currentToken,\r
+ int[][] expectedTokenSequences,\r
+ String[] tokenImage) {\r
+ String eol = System.getProperty("line.separator", "\n");\r
+ StringBuffer expected = new StringBuffer();\r
+ int maxSize = 0;\r
+ for (int i = 0; i < expectedTokenSequences.length; i++) {\r
+ if (maxSize < expectedTokenSequences[i].length) {\r
+ maxSize = expectedTokenSequences[i].length;\r
+ }\r
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {\r
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');\r
+ }\r
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {\r
+ expected.append("...");\r
+ }\r
+ expected.append(eol).append(" ");\r
+ }\r
+ String retval = "Encountered \"";\r
+ Token tok = currentToken.next;\r
+ for (int i = 0; i < maxSize; i++) {\r
+ if (i != 0) retval += " ";\r
+ if (tok.kind == 0) {\r
+ retval += tokenImage[0];\r
+ break;\r
+ }\r
+ retval += " " + tokenImage[tok.kind];\r
+ retval += " \"";\r
+ retval += add_escapes(tok.image);\r
+ retval += " \"";\r
+ tok = tok.next;\r
+ }\r
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;\r
+ retval += "." + eol;\r
+ if (expectedTokenSequences.length == 1) {\r
+ retval += "Was expecting:" + eol + " ";\r
+ } else {\r
+ retval += "Was expecting one of:" + eol + " ";\r
+ }\r
+ retval += expected.toString();\r
+ return retval;\r
+ }\r
+\r
+ /**\r
+ * The end of line string for this machine.\r
+ */\r
+ protected String eol = System.getProperty("line.separator", "\n");\r
+\r
+ /**\r
+ * Used to convert raw characters to their escaped version\r
+ * when these raw version cannot be used as part of an ASCII\r
+ * string literal.\r
+ */\r
+ static String add_escapes(String str) {\r
+ StringBuffer retval = new StringBuffer();\r
+ char ch;\r
+ for (int i = 0; i < str.length(); i++) {\r
+ switch (str.charAt(i))\r
+ {\r
+ case 0 :\r
+ continue;\r
+ case '\b':\r
+ retval.append("\\b");\r
+ continue;\r
+ case '\t':\r
+ retval.append("\\t");\r
+ continue;\r
+ case '\n':\r
+ retval.append("\\n");\r
+ continue;\r
+ case '\f':\r
+ retval.append("\\f");\r
+ continue;\r
+ case '\r':\r
+ retval.append("\\r");\r
+ continue;\r
+ case '\"':\r
+ retval.append("\\\"");\r
+ continue;\r
+ case '\'':\r
+ retval.append("\\\'");\r
+ continue;\r
+ case '\\':\r
+ retval.append("\\\\");\r
+ continue;\r
+ default:\r
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {\r
+ String s = "0000" + Integer.toString(ch, 16);\r
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));\r
+ } else {\r
+ retval.append(ch);\r
+ }\r
+ continue;\r
+ }\r
+ }\r
+ return retval.toString();\r
+ }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=48271970a2f1022a0ad80acb4577d14d (do not edit this line) */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */\r
+/* JavaCCOptions:STATIC=true,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * An implementation of interface CharStream, where the stream is assumed to\r
+ * contain only ASCII characters (without unicode processing).\r
+ */\r
+\r
+public class SimpleCharStream\r
+{\r
+/** Whether parser is static. */\r
+ public static final boolean staticFlag = true;\r
+ static int bufsize;\r
+ static int available;\r
+ static int tokenBegin;\r
+/** Position in buffer. */\r
+ static public int bufpos = -1;\r
+ static protected int bufline[];\r
+ static protected int bufcolumn[];\r
+\r
+ static protected int column = 0;\r
+ static protected int line = 1;\r
+\r
+ static protected boolean prevCharIsCR = false;\r
+ static protected boolean prevCharIsLF = false;\r
+\r
+ static protected java.io.Reader inputStream;\r
+\r
+ static protected char[] buffer;\r
+ static protected int maxNextCharInd = 0;\r
+ static protected int inBuf = 0;\r
+ static protected int tabSize = 8;\r
+\r
+ static protected void setTabSize(int i) { tabSize = i; }\r
+ static protected int getTabSize(int i) { return tabSize; }\r
+\r
+\r
+ static protected void ExpandBuff(boolean wrapAround)\r
+ {\r
+ char[] newbuffer = new char[bufsize + 2048];\r
+ int newbufline[] = new int[bufsize + 2048];\r
+ int newbufcolumn[] = new int[bufsize + 2048];\r
+\r
+ try\r
+ {\r
+ if (wrapAround)\r
+ {\r
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+ System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);\r
+ buffer = newbuffer;\r
+\r
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);\r
+ bufline = newbufline;\r
+\r
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);\r
+ bufcolumn = newbufcolumn;\r
+\r
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));\r
+ }\r
+ else\r
+ {\r
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);\r
+ buffer = newbuffer;\r
+\r
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);\r
+ bufline = newbufline;\r
+\r
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);\r
+ bufcolumn = newbufcolumn;\r
+\r
+ maxNextCharInd = (bufpos -= tokenBegin);\r
+ }\r
+ }\r
+ catch (Throwable t)\r
+ {\r
+ throw new Error(t.getMessage());\r
+ }\r
+\r
+\r
+ bufsize += 2048;\r
+ available = bufsize;\r
+ tokenBegin = 0;\r
+ }\r
+\r
+ static protected void FillBuff() throws java.io.IOException\r
+ {\r
+ if (maxNextCharInd == available)\r
+ {\r
+ if (available == bufsize)\r
+ {\r
+ if (tokenBegin > 2048)\r
+ {\r
+ bufpos = maxNextCharInd = 0;\r
+ available = tokenBegin;\r
+ }\r
+ else if (tokenBegin < 0)\r
+ bufpos = maxNextCharInd = 0;\r
+ else\r
+ ExpandBuff(false);\r
+ }\r
+ else if (available > tokenBegin)\r
+ available = bufsize;\r
+ else if ((tokenBegin - available) < 2048)\r
+ ExpandBuff(true);\r
+ else\r
+ available = tokenBegin;\r
+ }\r
+\r
+ int i;\r
+ try {\r
+ if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1)\r
+ {\r
+ inputStream.close();\r
+ throw new java.io.IOException();\r
+ }\r
+ else\r
+ maxNextCharInd += i;\r
+ return;\r
+ }\r
+ catch(java.io.IOException e) {\r
+ --bufpos;\r
+ backup(0);\r
+ if (tokenBegin == -1)\r
+ tokenBegin = bufpos;\r
+ throw e;\r
+ }\r
+ }\r
+\r
+/** Start. */\r
+ static public char BeginToken() throws java.io.IOException\r
+ {\r
+ tokenBegin = -1;\r
+ char c = readChar();\r
+ tokenBegin = bufpos;\r
+\r
+ return c;\r
+ }\r
+\r
+ static protected void UpdateLineColumn(char c)\r
+ {\r
+ column++;\r
+\r
+ if (prevCharIsLF)\r
+ {\r
+ prevCharIsLF = false;\r
+ line += (column = 1);\r
+ }\r
+ else if (prevCharIsCR)\r
+ {\r
+ prevCharIsCR = false;\r
+ if (c == '\n')\r
+ {\r
+ prevCharIsLF = true;\r
+ }\r
+ else\r
+ line += (column = 1);\r
+ }\r
+\r
+ switch (c)\r
+ {\r
+ case '\r' :\r
+ prevCharIsCR = true;\r
+ break;\r
+ case '\n' :\r
+ prevCharIsLF = true;\r
+ break;\r
+ case '\t' :\r
+ column--;\r
+ column += (tabSize - (column % tabSize));\r
+ break;\r
+ default :\r
+ break;\r
+ }\r
+\r
+ bufline[bufpos] = line;\r
+ bufcolumn[bufpos] = column;\r
+ }\r
+\r
+/** Read a character. */\r
+ static public char readChar() throws java.io.IOException\r
+ {\r
+ if (inBuf > 0)\r
+ {\r
+ --inBuf;\r
+\r
+ if (++bufpos == bufsize)\r
+ bufpos = 0;\r
+\r
+ return buffer[bufpos];\r
+ }\r
+\r
+ if (++bufpos >= maxNextCharInd)\r
+ FillBuff();\r
+\r
+ char c = buffer[bufpos];\r
+\r
+ UpdateLineColumn(c);\r
+ return c;\r
+ }\r
+\r
+ @Deprecated\r
+ /**\r
+ * @deprecated\r
+ * @see #getEndColumn\r
+ */\r
+\r
+ static public int getColumn() {\r
+ return bufcolumn[bufpos];\r
+ }\r
+\r
+ @Deprecated\r
+ /**\r
+ * @deprecated\r
+ * @see #getEndLine\r
+ */\r
+\r
+ static public int getLine() {\r
+ return bufline[bufpos];\r
+ }\r
+\r
+ /** Get token end column number. */\r
+ static public int getEndColumn() {\r
+ return bufcolumn[bufpos];\r
+ }\r
+\r
+ /** Get token end line number. */\r
+ static public int getEndLine() {\r
+ return bufline[bufpos];\r
+ }\r
+\r
+ /** Get token beginning column number. */\r
+ static public int getBeginColumn() {\r
+ return bufcolumn[tokenBegin];\r
+ }\r
+\r
+ /** Get token beginning line number. */\r
+ static public int getBeginLine() {\r
+ return bufline[tokenBegin];\r
+ }\r
+\r
+/** Backup a number of characters. */\r
+ static public void backup(int amount) {\r
+\r
+ inBuf += amount;\r
+ if ((bufpos -= amount) < 0)\r
+ bufpos += bufsize;\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.Reader dstream, int startline,\r
+ int startcolumn, int buffersize)\r
+ {\r
+ if (inputStream != null)\r
+ throw new Error("\n ERROR: Second call to the constructor of a static SimpleCharStream.\n" +\r
+ " You must either use ReInit() or set the JavaCC option STATIC to false\n" +\r
+ " during the generation of this class.");\r
+ inputStream = dstream;\r
+ line = startline;\r
+ column = startcolumn - 1;\r
+\r
+ available = bufsize = buffersize;\r
+ buffer = new char[buffersize];\r
+ bufline = new int[buffersize];\r
+ bufcolumn = new int[buffersize];\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.Reader dstream, int startline,\r
+ int startcolumn)\r
+ {\r
+ this(dstream, startline, startcolumn, 4096);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.Reader dstream)\r
+ {\r
+ this(dstream, 1, 1, 4096);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.Reader dstream, int startline,\r
+ int startcolumn, int buffersize)\r
+ {\r
+ inputStream = dstream;\r
+ line = startline;\r
+ column = startcolumn - 1;\r
+\r
+ if (buffer == null || buffersize != buffer.length)\r
+ {\r
+ available = bufsize = buffersize;\r
+ buffer = new char[buffersize];\r
+ bufline = new int[buffersize];\r
+ bufcolumn = new int[buffersize];\r
+ }\r
+ prevCharIsLF = prevCharIsCR = false;\r
+ tokenBegin = inBuf = maxNextCharInd = 0;\r
+ bufpos = -1;\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.Reader dstream, int startline,\r
+ int startcolumn)\r
+ {\r
+ ReInit(dstream, startline, startcolumn, 4096);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.Reader dstream)\r
+ {\r
+ ReInit(dstream, 1, 1, 4096);\r
+ }\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+ {\r
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+ int startcolumn, int buffersize)\r
+ {\r
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,\r
+ int startcolumn) throws java.io.UnsupportedEncodingException\r
+ {\r
+ this(dstream, encoding, startline, startcolumn, 4096);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream, int startline,\r
+ int startcolumn)\r
+ {\r
+ this(dstream, startline, startcolumn, 4096);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+ {\r
+ this(dstream, encoding, 1, 1, 4096);\r
+ }\r
+\r
+ /** Constructor. */\r
+ public SimpleCharStream(java.io.InputStream dstream)\r
+ {\r
+ this(dstream, 1, 1, 4096);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+ int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException\r
+ {\r
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream, int startline,\r
+ int startcolumn, int buffersize)\r
+ {\r
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException\r
+ {\r
+ ReInit(dstream, encoding, 1, 1, 4096);\r
+ }\r
+\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream)\r
+ {\r
+ ReInit(dstream, 1, 1, 4096);\r
+ }\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream, String encoding, int startline,\r
+ int startcolumn) throws java.io.UnsupportedEncodingException\r
+ {\r
+ ReInit(dstream, encoding, startline, startcolumn, 4096);\r
+ }\r
+ /** Reinitialise. */\r
+ public void ReInit(java.io.InputStream dstream, int startline,\r
+ int startcolumn)\r
+ {\r
+ ReInit(dstream, startline, startcolumn, 4096);\r
+ }\r
+ /** Get token literal value. */\r
+ static public String GetImage()\r
+ {\r
+ if (bufpos >= tokenBegin)\r
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);\r
+ else\r
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +\r
+ new String(buffer, 0, bufpos + 1);\r
+ }\r
+\r
+ /** Get the suffix. */\r
+ static public char[] GetSuffix(int len)\r
+ {\r
+ char[] ret = new char[len];\r
+\r
+ if ((bufpos + 1) >= len)\r
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);\r
+ else\r
+ {\r
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,\r
+ len - bufpos - 1);\r
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);\r
+ }\r
+\r
+ return ret;\r
+ }\r
+\r
+ /** Reset buffer when finished. */\r
+ static public void Done()\r
+ {\r
+ buffer = null;\r
+ bufline = null;\r
+ bufcolumn = null;\r
+ }\r
+\r
+ /**\r
+ * Method to adjust line and column numbers for the start of a token.\r
+ */\r
+ static public void adjustBeginLineColumn(int newLine, int newCol)\r
+ {\r
+ int start = tokenBegin;\r
+ int len;\r
+\r
+ if (bufpos >= tokenBegin)\r
+ {\r
+ len = bufpos - tokenBegin + inBuf + 1;\r
+ }\r
+ else\r
+ {\r
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;\r
+ }\r
+\r
+ int i = 0, j = 0, k = 0;\r
+ int nextColDiff = 0, columnDiff = 0;\r
+\r
+ while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])\r
+ {\r
+ bufline[j] = newLine;\r
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];\r
+ bufcolumn[j] = newCol + columnDiff;\r
+ columnDiff = nextColDiff;\r
+ i++;\r
+ }\r
+\r
+ if (i < len)\r
+ {\r
+ bufline[j] = newLine++;\r
+ bufcolumn[j] = newCol + columnDiff;\r
+\r
+ while (i++ < len)\r
+ {\r
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])\r
+ bufline[j] = newLine++;\r
+ else\r
+ bufline[j] = newLine;\r
+ }\r
+ }\r
+\r
+ line = bufline[j];\r
+ column = bufcolumn[j];\r
+ }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=3d5e5b74f810fa0f4ef70d18e9bc8601 (do not edit this line) */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */\r
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/**\r
+ * Describes the input token stream.\r
+ */\r
+\r
+public class Token implements java.io.Serializable {\r
+\r
+ /**\r
+ * The version identifier for this Serializable class.\r
+ * Increment only if the <i>serialized</i> form of the\r
+ * class changes.\r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ /**\r
+ * An integer that describes the kind of this token. This numbering\r
+ * system is determined by JavaCCParser, and a table of these numbers is\r
+ * stored in the file ...Constants.java.\r
+ */\r
+ public int kind;\r
+\r
+ /** The line number of the first character of this Token. */\r
+ public int beginLine;\r
+ /** The column number of the first character of this Token. */\r
+ public int beginColumn;\r
+ /** The line number of the last character of this Token. */\r
+ public int endLine;\r
+ /** The column number of the last character of this Token. */\r
+ public int endColumn;\r
+\r
+ /**\r
+ * The string image of the token.\r
+ */\r
+ public String image;\r
+\r
+ /**\r
+ * A reference to the next regular (non-special) token from the input\r
+ * stream. If this is the last token from the input stream, or if the\r
+ * token manager has not read tokens beyond this one, this field is\r
+ * set to null. This is true only if this token is also a regular\r
+ * token. Otherwise, see below for a description of the contents of\r
+ * this field.\r
+ */\r
+ public Token next;\r
+\r
+ /**\r
+ * This field is used to access special tokens that occur prior to this\r
+ * token, but after the immediately preceding regular (non-special) token.\r
+ * If there are no such special tokens, this field is set to null.\r
+ * When there are more than one such special token, this field refers\r
+ * to the last of these special tokens, which in turn refers to the next\r
+ * previous special token through its specialToken field, and so on\r
+ * until the first special token (whose specialToken field is null).\r
+ * The next fields of special tokens refer to other special tokens that\r
+ * immediately follow it (without an intervening regular token). If there\r
+ * is no such token, this field is null.\r
+ */\r
+ public Token specialToken;\r
+\r
+ /**\r
+ * An optional attribute value of the Token.\r
+ * Tokens which are not used as syntactic sugar will often contain\r
+ * meaningful values that will be used later on by the compiler or\r
+ * interpreter. This attribute value is often different from the image.\r
+ * Any subclass of Token that actually wants to return a non-null value can\r
+ * override this method as appropriate.\r
+ */\r
+ public Object getValue() {\r
+ return null;\r
+ }\r
+\r
+ /**\r
+ * No-argument constructor\r
+ */\r
+ public Token() {}\r
+\r
+ /**\r
+ * Constructs a new token for the specified Image.\r
+ */\r
+ public Token(int kind)\r
+ {\r
+ this(kind, null);\r
+ }\r
+\r
+ /**\r
+ * Constructs a new token for the specified Image and Kind.\r
+ */\r
+ public Token(int kind, String image)\r
+ {\r
+ this.kind = kind;\r
+ this.image = image;\r
+ }\r
+\r
+ /**\r
+ * Returns the image.\r
+ */\r
+ public String toString()\r
+ {\r
+ return image;\r
+ }\r
+\r
+ /**\r
+ * Returns a new Token object, by default. However, if you want, you\r
+ * can create and return subclass objects based on the value of ofKind.\r
+ * Simply add the cases to the switch for all those special cases.\r
+ * For example, if you have a subclass of Token called IDToken that\r
+ * you want to create if ofKind is ID, simply add something like :\r
+ *\r
+ * case MyParserConstants.ID : return new IDToken(ofKind, image);\r
+ *\r
+ * to the following switch statement. Then you can cast matchedToken\r
+ * variable to the appropriate type and use sit in your lexical actions.\r
+ */\r
+ public static Token newToken(int ofKind, String image)\r
+ {\r
+ switch(ofKind)\r
+ {\r
+ default : return new Token(ofKind, image);\r
+ }\r
+ }\r
+\r
+ public static Token newToken(int ofKind)\r
+ {\r
+ return newToken(ofKind, null);\r
+ }\r
+\r
+}\r
+/* JavaCC - OriginalChecksum=dc8b83e991d3e41cf255b23a7a4d3774 (do not edit this line) */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */\r
+/* JavaCCOptions: */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse;\r
+\r
+/** Token Manager Error. */\r
+public class TokenMgrError extends Error\r
+{\r
+\r
+ /**\r
+ * The version identifier for this Serializable class.\r
+ * Increment only if the <i>serialized</i> form of the\r
+ * class changes.\r
+ */\r
+ private static final long serialVersionUID = 1L;\r
+\r
+ /*\r
+ * Ordinals for various reasons why an Error of this type can be thrown.\r
+ */\r
+\r
+ /**\r
+ * Lexical error occurred.\r
+ */\r
+ static final int LEXICAL_ERROR = 0;\r
+\r
+ /**\r
+ * An attempt was made to create a second instance of a static token manager.\r
+ */\r
+ static final int STATIC_LEXER_ERROR = 1;\r
+\r
+ /**\r
+ * Tried to change to an invalid lexical state.\r
+ */\r
+ static final int INVALID_LEXICAL_STATE = 2;\r
+\r
+ /**\r
+ * Detected (and bailed out of) an infinite loop in the token manager.\r
+ */\r
+ static final int LOOP_DETECTED = 3;\r
+\r
+ /**\r
+ * Indicates the reason why the exception is thrown. It will have\r
+ * one of the above 4 values.\r
+ */\r
+ int errorCode;\r
+\r
+ /**\r
+ * Replaces unprintable characters by their escaped (or unicode escaped)\r
+ * equivalents in the given string\r
+ */\r
+ protected static final String addEscapes(String str) {\r
+ StringBuffer retval = new StringBuffer();\r
+ char ch;\r
+ for (int i = 0; i < str.length(); i++) {\r
+ switch (str.charAt(i))\r
+ {\r
+ case 0 :\r
+ continue;\r
+ case '\b':\r
+ retval.append("\\b");\r
+ continue;\r
+ case '\t':\r
+ retval.append("\\t");\r
+ continue;\r
+ case '\n':\r
+ retval.append("\\n");\r
+ continue;\r
+ case '\f':\r
+ retval.append("\\f");\r
+ continue;\r
+ case '\r':\r
+ retval.append("\\r");\r
+ continue;\r
+ case '\"':\r
+ retval.append("\\\"");\r
+ continue;\r
+ case '\'':\r
+ retval.append("\\\'");\r
+ continue;\r
+ case '\\':\r
+ retval.append("\\\\");\r
+ continue;\r
+ default:\r
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {\r
+ String s = "0000" + Integer.toString(ch, 16);\r
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));\r
+ } else {\r
+ retval.append(ch);\r
+ }\r
+ continue;\r
+ }\r
+ }\r
+ return retval.toString();\r
+ }\r
+\r
+ /**\r
+ * Returns a detailed message for the Error when it is thrown by the\r
+ * token manager to indicate a lexical error.\r
+ * Parameters :\r
+ * EOFSeen : indicates if EOF caused the lexical error\r
+ * curLexState : lexical state in which this error occurred\r
+ * errorLine : line number when the error occurred\r
+ * errorColumn : column number when the error occurred\r
+ * errorAfter : prefix that was seen before this error occurred\r
+ * curchar : the offending character\r
+ * Note: You can customize the lexical error message by modifying this method.\r
+ */\r
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {\r
+ return("Lexical error at line " +\r
+ errorLine + ", column " +\r
+ errorColumn + ". Encountered: " +\r
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +\r
+ "after : \"" + addEscapes(errorAfter) + "\"");\r
+ }\r
+\r
+ /**\r
+ * You can also modify the body of this method to customize your error messages.\r
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not\r
+ * of end-users concern, so you can return something like :\r
+ *\r
+ * "Internal Error : Please file a bug report .... "\r
+ *\r
+ * from this method for such cases in the release version of your parser.\r
+ */\r
+ public String getMessage() {\r
+ return super.getMessage();\r
+ }\r
+\r
+ /*\r
+ * Constructors of various flavors follow.\r
+ */\r
+\r
+ /** No arg constructor. */\r
+ public TokenMgrError() {\r
+ }\r
+\r
+ /** Constructor with message and reason. */\r
+ public TokenMgrError(String message, int reason) {\r
+ super(message);\r
+ errorCode = reason;\r
+ }\r
+\r
+ /** Full Constructor. */\r
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {\r
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);\r
+ }\r
+}\r
+/* JavaCC - OriginalChecksum=ba2e47c01c2fe7ef735d03301bf06ea2 (do not edit this line) */\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
+\r
+import java.util.List;\r
+\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/24.\r
+ */\r
+public class Query {\r
+ private TenantManage tenantManage;\r
+\r
+ public Query(TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ }\r
+\r
+ public String query(UserId userId,String item, String target){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+\r
+ if (target!=null){\r
+ Boolean targetExist = false;\r
+ if (user!=null){\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ for (Node node : nodeList){\r
+ if (node.getNodeName().getValue().equals(target)){\r
+ targetExist = true;\r
+ errorInfo = queryNode(user,item, node);\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ List<Connection> connectionList = user.getObjects().getConnection();\r
+ for (Connection connection : connectionList){\r
+ if (connection.getConnectionName().getValue().equals(target)){\r
+ targetExist = true;\r
+ errorInfo = queryConnection(user,item,connection);\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow()!=null){\r
+ List<Flow> flowList = user.getObjects().getFlow();\r
+ for (Flow flow : flowList){\r
+ if (flow.getFlowName().getValue().equals(target)){\r
+ targetExist = true;\r
+ errorInfo = queryFlow(item,flow);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (user.getOperations()!=null){\r
+ if (user.getOperations().getOperation()!=null){\r
+ List<Operation> operationList = user.getOperations().getOperation();\r
+ for (Operation operation : operationList){\r
+ if (operation.getOperationName().getValue().equals(target)){\r
+ targetExist = true;\r
+ errorInfo = queryOperation(user,item,operation);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!targetExist){\r
+ return "The target " + target + " is not exist in user vn space.";\r
+ }\r
+ }\r
+ else {\r
+ if (item.equals(NEMOConstants.AllNodes)){\r
+ errorInfo = queryAllNode(user);\r
+ }\r
+ else if (item.equals(NEMOConstants.AllConnections)){\r
+ errorInfo = queryAllConnection(user);\r
+ }\r
+ else if (item.equals(NEMOConstants.AllFlows)){\r
+ errorInfo = queryAllFlow(user);\r
+ }\r
+ else if (item.equals(NEMOConstants.AllOperations)){\r
+ errorInfo = queryAllOperation(user);\r
+ }\r
+ else {\r
+ return "The item is not supported.";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryNode(User user,String item, Node node){\r
+ String errorInfo = NEMOConstants.Results+":";\r
+ if (item.equals(NEMOConstants.Type)){\r
+ errorInfo += node.getNodeType().getValue();\r
+ }\r
+ else if (item.equals(NEMOConstants.SubNodes)||item.equals(NEMOConstants.Contain)){\r
+ List<SubNode> subNodeList = node.getSubNode();\r
+ if (subNodeList != null){\r
+ for (SubNode subNode : subNodeList){\r
+ for (Node node1:user.getObjects().getNode()){\r
+ if (subNode.getNodeId().equals(node1.getNodeId())){\r
+ errorInfo += node1.getNodeName().getValue() + ",";\r
+ }\r
+ }\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ }\r
+ else if (item.equals(NEMOConstants.Property)){\r
+ List<Property> properties = node.getProperty();\r
+ if (properties!=null){\r
+ for (Property property : properties){\r
+ errorInfo += property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ List<Property> properties = node.getProperty();\r
+ Boolean itemExist = false;\r
+ if (properties != null){\r
+ for (Property property : properties){\r
+ if (property.getPropertyName().getValue().equals(item)){\r
+ itemExist = true;\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!itemExist){\r
+ return "The item " + item + " is not included in "+node.getNodeName().getValue()+";";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryConnection( User user, String item, Connection connection){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (item.equals(NEMOConstants.Type)){\r
+ errorInfo += connection.getConnectionType().getValue();\r
+ }\r
+ else if (item.equals(NEMOConstants.Endnodes)){\r
+ List<EndNode> endNodeList = connection.getEndNode();\r
+ if (endNodeList != null){\r
+ for (EndNode endNode : endNodeList){\r
+ for (Node node : user.getObjects().getNode()){\r
+ if (endNode.getNodeId().equals(node.getNodeId())){\r
+ errorInfo+=node.getNodeName().getValue()+",";\r
+ }\r
+ }\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ }\r
+ else if (item.equals(NEMOConstants.Property)){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> properties = connection.getProperty();\r
+ if (properties!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){\r
+ errorInfo += property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property> properties = connection.getProperty();\r
+ Boolean itemExist = false;\r
+ if (properties!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property : properties){\r
+ if (property.getPropertyName().getValue().equals(item)){\r
+ itemExist = true;\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!itemExist){\r
+ return "The item " + item + " is not included in "+connection.getConnectionName().getValue()+";";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryFlow( String item, Flow flow){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (item.equals(NEMOConstants.Match)){\r
+ List<MatchItem> matchItems = flow.getMatchItem();\r
+ for (MatchItem matchItem: matchItems){\r
+ errorInfo += matchItem.getMatchItemName().getValue()+":";\r
+ Long intValue = matchItem.getMatchItemValue().getIntValue();\r
+ String stringValue = matchItem.getMatchItemValue().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValue rangeValue = matchItem.getMatchItemValue().getRangeValue();\r
+ if (intValue!=null){\r
+ errorInfo +=intValue;\r
+ }\r
+ if (stringValue!=null){\r
+ errorInfo += stringValue;\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ else if (item.equals(NEMOConstants.Property)){\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+ if (properties!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){\r
+ errorInfo += property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+ Boolean itemExist = false;\r
+ if (properties!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property:properties){\r
+ if (property.getPropertyName().getValue().equals(item)){\r
+ itemExist = true;\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!itemExist){\r
+ return "The item " + item + " is not included in "+flow.getFlowName().getValue()+";";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryOperation(User user, String item, Operation operation){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (item.equals(NEMOConstants.Priority)){\r
+ errorInfo += operation.getPriority();\r
+ }\r
+ else if (item.equals(NEMOConstants.Target)){\r
+ if (user.getObjects().getNode()!=null){\r
+ for (Node node:user.getObjects().getNode()){\r
+ if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){\r
+ errorInfo += node.getNodeName().getValue();\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ for (Connection connection : user.getObjects().getConnection()){\r
+ if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){\r
+ errorInfo += connection.getConnectionName().getValue();\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow()!=null){\r
+ for (Flow flow : user.getObjects().getFlow()){\r
+ if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){\r
+ errorInfo += flow.getFlowName().getValue();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else if (item.equals(NEMOConstants.Condition)){\r
+ List<ConditionSegment> conditionSegments = operation.getConditionSegment();\r
+ if (conditionSegments!=null){\r
+ for (ConditionSegment conditionSegment : conditionSegments){\r
+ if (conditionSegment.getPrecursorRelationOperator()!=null){\r
+ int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue();\r
+ switch (preRelation) {\r
+ case 0:\r
+ break;\r
+ case 1:\r
+ errorInfo += NEMOConstants.and+"(";\r
+ break;\r
+ case 2:\r
+ errorInfo += NEMOConstants.or+"(";\r
+ break;\r
+ case 3:\r
+ errorInfo += NEMOConstants.not+"(";\r
+ break;\r
+ }\r
+ }\r
+ else {\r
+ errorInfo += "(";\r
+ }\r
+ errorInfo += conditionSegment.getConditionParameterName().getValue();\r
+ int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue();\r
+ switch (matchPattern){\r
+ case 0:\r
+ errorInfo += NEMOConstants.less_than;\r
+ break;\r
+ case 1:\r
+ errorInfo += NEMOConstants.not_less_than;\r
+ break;\r
+ case 2:\r
+ errorInfo += NEMOConstants.equal;\r
+ break;\r
+ case 3:\r
+ errorInfo += NEMOConstants.not_equal;\r
+ break;\r
+ case 4:\r
+ errorInfo += NEMOConstants.greater_than;\r
+ break;\r
+ case 5:\r
+ errorInfo += NEMOConstants.not_greater_than;\r
+ break;\r
+ case 6:\r
+ errorInfo += NEMOConstants.between;\r
+ break;\r
+ }\r
+ Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue();\r
+ String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+ //todo rangevalue\r
+ if (intValue!=null){\r
+ errorInfo +=intValue;\r
+ }\r
+ if (stringValue!=null){\r
+ errorInfo+=stringValue;\r
+ }\r
+ errorInfo += ")";\r
+ }\r
+ }\r
+ }\r
+ else if (item.equals(NEMOConstants.Action)) {\r
+ List<Action> actions = operation.getAction();\r
+ if (actions!=null){\r
+ for (Action action : actions) {\r
+ errorInfo += action.getActionName().getValue() + ":";\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues = action.getParameterValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue != null) {\r
+ errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ List<Action> actions = operation.getAction();\r
+ Boolean itemExist = false;\r
+ if (actions!=null){\r
+ for (Action action : actions){\r
+ if (action.getActionName().getValue().equals(item)){\r
+ itemExist = true;\r
+ errorInfo += action.getActionName().getValue() + ":";\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues = action.getParameterValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue != null) {\r
+ errorInfo += "[" + rangeValue.getMin() + "," + rangeValue.getMax() + "]";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!itemExist){\r
+ return "The item " + item + " is not included in the target " +operation.getOperationName().getValue();\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryAllNode(User user){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ for (Node node : nodeList){\r
+ errorInfo += NEMOConstants.Id +":" + node.getNodeId().getValue()+" ";\r
+ errorInfo += NEMOConstants.Name +":" + node.getNodeName().getValue()+" ";\r
+ errorInfo += NEMOConstants.Type +":" + node.getNodeType().getValue()+" ";\r
+ if (node.getSubNode()!=null){\r
+ errorInfo+=NEMOConstants.SubNodes+":";\r
+ List<SubNode> subNodeList = node.getSubNode();\r
+ for (SubNode subNode :subNodeList){\r
+ for (Node node1:nodeList){\r
+ if (node1.getNodeId().equals(subNode.getNodeId())){\r
+ errorInfo+=node1.getNodeName().getValue()+",";\r
+ }\r
+ }\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (node.getProperty()!=null){\r
+ errorInfo += NEMOConstants.Property+":";\r
+ for (Property property:node.getProperty()){\r
+ errorInfo+=property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ errorInfo +=" ";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryAllConnection(User user){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getConnection()!=null){\r
+ List<Connection> connectionList = user.getObjects().getConnection();\r
+ for (Connection connection : connectionList){\r
+ errorInfo += NEMOConstants.Id +":" +connection.getConnectionId().getValue()+ " ";\r
+ errorInfo+= NEMOConstants.Name +":" + connection.getConnectionName().getValue()+" ";\r
+ errorInfo += NEMOConstants.Type +":"+connection.getConnectionType().getValue()+" ";\r
+ if (connection.getEndNode()!=null){\r
+ errorInfo += NEMOConstants.Endnodes +":";\r
+ List<EndNode> endNodeList = connection.getEndNode();\r
+ for (EndNode endNode:endNodeList){\r
+ for (Node node:user.getObjects().getNode()){\r
+ if (endNode.getNodeId().equals(node.getNodeId())){\r
+ errorInfo+=node.getNodeName().getValue()+",";\r
+ }\r
+ }\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1) + " ";\r
+ }\r
+ if (connection.getProperty()!=null){\r
+ errorInfo += NEMOConstants.Property +":";\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property property:connection.getProperty()){\r
+ errorInfo+=property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ errorInfo +=" ";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryAllFlow(User user){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getFlow()!=null){\r
+ List<Flow> flowList = user.getObjects().getFlow();\r
+ for (Flow flow : flowList){\r
+ errorInfo += NEMOConstants.Id +":" + flow.getFlowId().getValue()+" ";\r
+ errorInfo += NEMOConstants.Name +":" +flow.getFlowName().getValue()+" ";\r
+ if (flow.getMatchItem()!=null){\r
+ errorInfo += NEMOConstants.Match+": ";\r
+ List<MatchItem> matchItemList = flow.getMatchItem();\r
+ for (MatchItem matchItem : matchItemList){\r
+ errorInfo += matchItem.getMatchItemName().getValue()+";";\r
+ Long intValues = matchItem.getMatchItemValue().getIntValue();\r
+ String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValue rangeValue = matchItem.getMatchItemValue().getRangeValue();\r
+ if (intValues!=null){\r
+ errorInfo+=intValues;\r
+ }\r
+ if (stringValues!=null){\r
+ errorInfo += stringValues;\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMin()+"]";\r
+ }\r
+ }\r
+ }\r
+ if (flow.getProperty()!=null){\r
+ errorInfo += NEMOConstants.Property+": ";\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property> properties = flow.getProperty();\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.Property property :properties){\r
+ errorInfo+=property.getPropertyName().getValue()+":";\r
+ List<IntValue> intValues = property.getPropertyValues().getIntValue();\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ RangeValue rangeValue = property.getPropertyValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo+="["+rangeValue.getMin()+","+rangeValue.getMax()+"]";\r
+ }\r
+ errorInfo +=" ";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String queryAllOperation(User user){\r
+ String errorInfo =NEMOConstants.Results+":";\r
+ if (user.getOperations()!=null){\r
+ if (user.getOperations().getOperation()!=null){\r
+ List<Operation> operationList = user.getOperations().getOperation();\r
+ for (Operation operation : operationList){\r
+ errorInfo += NEMOConstants.Id+":" + operation.getOperationId().getValue() +" ";\r
+ errorInfo += NEMOConstants.Name+":" + operation.getOperationName().getValue()+" ";\r
+ errorInfo += NEMOConstants.Priority+":" + operation.getPriority()+" ";\r
+ errorInfo += NEMOConstants.Target+":";\r
+ if (user.getObjects().getNode()!=null){\r
+ for (Node node:user.getObjects().getNode()){\r
+ if (node.getNodeId().equals(operation.getTargetObject())){\r
+ errorInfo+=node.getNodeName().getValue()+" ";\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ for (Connection connection:user.getObjects().getConnection()){\r
+ if (connection.getConnectionId().equals(operation.getTargetObject())){\r
+ errorInfo+=connection.getConnectionName().getValue()+" ";\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow()!=null){\r
+ for (Flow flow:user.getObjects().getFlow()){\r
+ if (flow.getFlowId().equals(operation.getTargetObject())){\r
+ errorInfo += flow.getFlowName().getValue()+" ";\r
+ }\r
+ }\r
+ }\r
+ if (operation.getConditionSegment()!=null){\r
+ errorInfo += NEMOConstants.Condition+": ";\r
+ List<ConditionSegment> conditionSegmentList = operation.getConditionSegment();\r
+ for (ConditionSegment conditionSegment : conditionSegmentList){\r
+ int preRelation = conditionSegment.getPrecursorRelationOperator().getIntValue();\r
+ switch (preRelation) {\r
+ case 0:\r
+ break;\r
+ case 1:\r
+ errorInfo += NEMOConstants.and+"(";\r
+ break;\r
+ case 2:\r
+ errorInfo += NEMOConstants.or+"(";\r
+ break;\r
+ case 3:\r
+ errorInfo += NEMOConstants.not+"(";\r
+ break;\r
+ }\r
+ errorInfo += conditionSegment.getConditionParameterName().getValue();\r
+ int matchPattern = conditionSegment.getConditionParameterMatchPattern().getIntValue();\r
+ switch (matchPattern){\r
+ case 0:\r
+ errorInfo += NEMOConstants.less_than;\r
+ break;\r
+ case 1:\r
+ errorInfo += NEMOConstants.not_less_than;\r
+ break;\r
+ case 2:\r
+ errorInfo += NEMOConstants.equal;\r
+ break;\r
+ case 3:\r
+ errorInfo += NEMOConstants.not_equal;\r
+ break;\r
+ case 4:\r
+ errorInfo += NEMOConstants.greater_than;\r
+ break;\r
+ case 5:\r
+ errorInfo += NEMOConstants.not_greater_than;\r
+ break;\r
+ case 6:\r
+ errorInfo += NEMOConstants.between;\r
+ break;\r
+ }\r
+ Long intValue = conditionSegment.getConditionParameterTargetValue().getIntValue();\r
+ String stringValue = conditionSegment.getConditionParameterTargetValue().getStringValue();\r
+ //todo rangevalue\r
+ if (intValue!=null){\r
+ errorInfo +=intValue;\r
+ }\r
+ if (stringValue!=null){\r
+ errorInfo+=stringValue;\r
+ }\r
+ }\r
+\r
+ }\r
+ if (operation.getAction()!=null){\r
+ errorInfo += NEMOConstants.Action+": ";\r
+ List<Action> actionList = operation.getAction();\r
+ for (Action action : actionList){\r
+ errorInfo += action.getActionName().getValue() +":";\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> intValues = action.getParameterValues().getIntValue();\r
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValues = action.getParameterValues().getStringValue();\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue rangeValue = action.getParameterValues().getRangeValue();\r
+ if (intValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue : intValues){\r
+ errorInfo += intValue.getValue()+",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (stringValues!=null){\r
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue stringValue : stringValues){\r
+ errorInfo += stringValue.getValue() +",";\r
+ }\r
+ errorInfo = errorInfo.substring(0,errorInfo.length()-1);\r
+ }\r
+ if (rangeValue!=null){\r
+ errorInfo += "["+rangeValue.getMin()+","+ rangeValue.getMax()+"]";\r
+ }\r
+ errorInfo +=")";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteConnection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class DeleteConnectionLang {\r
+ private TenantManage tenantManage;\r
+ private DeleteConnection deleteConnection;\r
+\r
+ public DeleteConnectionLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ deleteConnection = new DeleteConnection(dataBroker, tenantManage);\r
+ }\r
+\r
+ public String DeleteConnectionHandling(UserId userId, String connectionname){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user =tenantManage.getUser();\r
+ if (user.getObjects()!=null){\r
+ if (!user.getObjects().getConnection().isEmpty()){\r
+ List<Connection> connectionList = user.getObjects().getConnection();\r
+ Boolean connExit = false;\r
+ for (Connection connection1 : connectionList){\r
+ if (connection1.getConnectionName().getValue().equals(connectionname)){\r
+ connExit = true;\r
+ errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection1.getConnectionId());\r
+ }\r
+ }\r
+ if (!connExit){\r
+ errorInfo = "The connection "+connectionname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else {\r
+ errorInfo = "The connection "+connectionname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The connection "+connectionname + " is not exist in this user vn space.";\r
+ }\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class DeleteFlowLang {\r
+ private TenantManage tenantManage;\r
+ private DeleteFlow deleteFlow;\r
+\r
+ public DeleteFlowLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ deleteFlow = new DeleteFlow(dataBroker, tenantManage);\r
+ }\r
+\r
+ public String DeleteFlowHandling(UserId userId, String flowname){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ if (user.getObjects()!=null){\r
+ if (!user.getObjects().getFlow().isEmpty()){\r
+ List<Flow> flowList = user.getObjects().getFlow();\r
+ Boolean flowExist = false;\r
+ for (Flow flow : flowList){\r
+ if (flow.getFlowName().getValue().equals(flowname)){\r
+ flowExist = true;\r
+ errorInfo = deleteFlow.DeleteFlowHandling(userId,flow.getFlowId());\r
+ }\r
+ }\r
+ if (!flowExist){\r
+ errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else\r
+ {\r
+ errorInfo = "The flow "+flowname + " is not exist in this user vn space.";\r
+ }\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class DeleteNodeLang {\r
+ private TenantManage tenantManage;\r
+ private DeleteNode deleteNode;\r
+\r
+ public DeleteNodeLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ deleteNode = new DeleteNode(dataBroker,tenantManage);\r
+ }\r
+\r
+ public String DeleteNodeHandling(UserId userId, String nodename){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user =tenantManage.getUser();\r
+ if (user.getObjects()!=null){\r
+ if (!user.getObjects().getNode().isEmpty()){\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ Boolean nodeExist = false;\r
+ for (Node node1 : nodeList){\r
+ if (node1.getNodeName().getValue().equals(nodename)){\r
+ nodeExist = true;\r
+ errorInfo = deleteNode.DeleNodeHandling(userId,node1.getNodeId());\r
+ }\r
+ }\r
+ if (!nodeExist){\r
+ errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The node "+nodename + " is not exist in this user vn space.";\r
+ }\r
+\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.deleteintentlang;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent.DeleteOperation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+\r
+import java.util.List;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class DeleteOperationLang {\r
+ private TenantManage tenantManage;\r
+ private DeleteOperation deleteOperation;\r
+\r
+ public DeleteOperationLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ deleteOperation = new DeleteOperation(dataBroker,tenantManage);\r
+ }\r
+\r
+ public String DeleteOperationHandling(UserId userId, String operationname){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ if (user.getOperations()!=null){\r
+ if (!user.getOperations().getOperation().isEmpty()){\r
+ List<Operation> operationList = user.getOperations().getOperation();\r
+ Boolean operationExist = false;\r
+ for (Operation operation : operationList){\r
+ if (operation.getOperationName().getValue().equals(operationname)){\r
+ operationExist = true;\r
+ errorInfo = deleteOperation.DeleteOperationhandling(userId,operation.getOperationId());\r
+ }\r
+ }\r
+ if (!operationExist) {\r
+ errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
+ }\r
+ }\r
+ else{\r
+ errorInfo = "The operation "+operationname + " is not exist in this user vn space.";\r
+ }\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateConnection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/5.\r
+ */\r
+public class UpdateConnectionLang {\r
+ private TenantManage tenantManage;\r
+ private Connection connection;\r
+ private UpdateConnection updateConnection;\r
+\r
+ public UpdateConnectionLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
+ }\r
+\r
+ public String ConnectionHandling(UserId userId,String connectionname, String connectiontype, List<String> endnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ if (!propertyList.isEmpty()){\r
+ errorInfo = checkProperty(propertyList);\r
+ }\r
+ if (errorInfo==null){\r
+ errorInfo = createConnection(userId,connectionname,connectiontype,endnodes,propertyList);\r
+ if (errorInfo == null){\r
+ return updateConnection.ConnectionHandling(userId,this.connection);\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkProperty(LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ for (String propertyName : propertyList.keySet()){\r
+ LinkedHashMap<String, String> propertyValues = propertyList.get(propertyName);\r
+ Iterator<String> iterator = propertyValues.values().iterator();\r
+ String valueType = iterator.next();\r
+\r
+ while (iterator.hasNext()){\r
+ if (valueType.equals(NEMOConstants.range)) {\r
+ errorInfo = "The property should just has one range value.";\r
+ return errorInfo;\r
+ }\r
+ else if (valueType.equals(NEMOConstants.string)){\r
+ if (!iterator.next().equals(NEMOConstants.string)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be string.";\r
+ }\r
+ }\r
+ else if (valueType.equals(NEMOConstants.integer)){\r
+ if (!iterator.next().equals(NEMOConstants.integer)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be int.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createConnection(UserId userId, String connectionname, String connectiontype, List<String> endnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ List<Connection> connectionList = new ArrayList<Connection>();\r
+ List<Node> nodeList = new ArrayList<Node>();\r
+ Boolean ConnExist = false;\r
+\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ nodeList = user.getObjects().getNode();\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ connectionList = user.getObjects().getConnection();\r
+ }\r
+ }\r
+ ConnectionBuilder connectionBuilder = new ConnectionBuilder();\r
+ if (!connectionList.isEmpty()){\r
+ for (Connection connection1:connectionList) {\r
+ if (connection1.getConnectionName().getValue().equals(connectionname)){\r
+ ConnExist = true;\r
+ connectionBuilder.setKey(connection1.getKey());\r
+ connectionBuilder.setConnectionId(connection1.getConnectionId());\r
+ }\r
+ }\r
+ }\r
+ if (!ConnExist){\r
+ ConnectionId connectionId = new ConnectionId(UUID.randomUUID().toString());\r
+ connectionBuilder.setKey(new ConnectionKey(connectionId));\r
+ connectionBuilder.setConnectionId(connectionId);\r
+ }\r
+\r
+ connectionBuilder.setConnectionName(new ConnectionName(connectionname));\r
+ connectionBuilder.setConnectionType(new ConnectionType(connectiontype));\r
+\r
+ if (!endnodes.isEmpty() && errorInfo==null){\r
+ List<EndNode> endNodeList = new ArrayList<EndNode>();\r
+\r
+ if (nodeList.isEmpty()){\r
+ errorInfo = "The EndNode is not exist in the user vn space.";\r
+ return errorInfo;\r
+ }\r
+ else{\r
+ int order = 0;\r
+ for (String endnode : endnodes){\r
+ Boolean endnodeexist = false;\r
+ for (Node node : nodeList) {\r
+ if (node.getNodeName().getValue().equals(endnode)){\r
+ endnodeexist = true;\r
+ EndNodeBuilder endNodeBuilder = new EndNodeBuilder();\r
+ endNodeBuilder.setKey(new EndNodeKey(node.getNodeId()));\r
+ endNodeBuilder.setNodeId(node.getNodeId());\r
+ endNodeBuilder.setOrder((long) order);\r
+ endNodeList.add(endNodeBuilder.build());\r
+ }\r
+ }\r
+ if (!endnodeexist) {\r
+ errorInfo = "The EndNode is not exist in the user vn space.";\r
+ return errorInfo;\r
+ }\r
+ order ++;\r
+ }\r
+ }\r
+ connectionBuilder.setEndNode(endNodeList);\r
+ }\r
+\r
+ if (!propertyList.isEmpty() && errorInfo==null){\r
+ PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+ List<Property> connectionproperty = new ArrayList<Property>();\r
+ for (String propertyname : propertyList.keySet()){\r
+ propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+ propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+ PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+ LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+ List<IntValue> intValueList = new ArrayList<IntValue>();\r
+ List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+ RangeValue Rangevalue = null;\r
+ int order = 0;\r
+ for (String value : valuetype.keySet()){\r
+ if (valuetype.get(value).equals(NEMOConstants.string)){\r
+ StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+ stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+ stringValueBuilder.setValue(value);\r
+ stringValueBuilder.setOrder((long)order);\r
+ stringValueList.add(stringValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.integer)){\r
+ IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+ intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+ intValueBuilder.setValue(Long.parseLong(value));\r
+ intValueBuilder.setOrder((long)order);\r
+ intValueList.add(intValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.range)){\r
+ String[] rangevalue = new String[2];\r
+ rangevalue = value.split(",");\r
+ RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+ if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+ }\r
+ else{\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+ }\r
+ Rangevalue = rangeValueBuilder.build();\r
+ propertyValuesBuilder.setRangeValue(Rangevalue);\r
+ }\r
+ order++;\r
+ }\r
+ if (intValueList.isEmpty()){\r
+ intValueList = null;\r
+ propertyValuesBuilder.setIntValue(intValueList);\r
+ }\r
+ if (stringValueList.isEmpty()){\r
+ stringValueList = null;\r
+ propertyValuesBuilder.setStringValue(stringValueList);\r
+ }\r
+ propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(Rangevalue);\r
+ propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+ connectionproperty.add(propertyBuilder.build());\r
+ }\r
+ connectionBuilder.setProperty(connectionproperty);\r
+ }\r
+ this.connection = connectionBuilder.build();\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.match.item.value.RangeValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/5.\r
+ */\r
+public class UpdateFlowLang {\r
+ private TenantManage tenantManage;\r
+ private UpdateFlow updateFlow;\r
+ private Flow flow;\r
+\r
+ public UpdateFlowLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ updateFlow = new UpdateFlow(dataBroker,tenantManage);\r
+ }\r
+\r
+ public String FlowHandling(UserId userId, String flowname,LinkedHashMap<String,LinkedHashMap<String,String>> flowmatch,LinkedHashMap<String,LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ if (!propertyList.isEmpty()){\r
+ errorInfo = checkProperty(propertyList);\r
+ }\r
+ if (errorInfo==null){\r
+ errorInfo = createFlow(userId,flowname,flowmatch,propertyList);\r
+ if (errorInfo==null)\r
+ {\r
+ return updateFlow.FlowHandling(userId,this.flow);\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkProperty(LinkedHashMap<String,LinkedHashMap<String,String>> flowproperty){\r
+ String errorInfo = null;\r
+ for (String propertyName : flowproperty.keySet()){\r
+ LinkedHashMap<String,String> propertyValues= flowproperty.get(propertyName);\r
+ Iterator<String> iterator = propertyValues.values().iterator();\r
+ String valueType = iterator.next();\r
+\r
+ while (iterator.hasNext()){\r
+ if (valueType.equals(NEMOConstants.range)) {\r
+ errorInfo = "The property should just has one range value.";\r
+ return errorInfo;\r
+ }\r
+ else if (valueType.equals(NEMOConstants.string)){\r
+ if (!iterator.next().equals(NEMOConstants.string)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be string.";\r
+ }\r
+ }\r
+// else if (valueType.equals(NEMOConstants.ethaddr)){\r
+// if (!iterator.next().equals(NEMOConstants.ethaddr)){\r
+// return "The property " + propertyValues.get(iterator.next()) + " should be an legal mac address.";\r
+// }\r
+// }\r
+// else if (valueType.equals(NEMOConstants.ipv4pref)){\r
+// if (!iterator.next().equals(NEMOConstants.ipv4pref)){\r
+// return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip prefix.";\r
+// }\r
+// }\r
+// else if (valueType.equals(NEMOConstants.ipv4addr)){\r
+// if (!iterator.next().equals(NEMOConstants.ipv4addr)){\r
+// return "The property " + propertyValues.get(iterator.next()) + " should be an legal ip address.";\r
+// }\r
+// }\r
+ else if (valueType.equals(NEMOConstants.integer)){\r
+ if (!iterator.next().equals(NEMOConstants.integer)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be int.";\r
+ }\r
+ }\r
+ }\r
+\r
+// if (propertyName.equals(NEMOConstants.src_mac)){\r
+// if (!valueType.equals(NEMOConstants.ethaddr)){\r
+// return "The property " + propertyName +"'s value should be an legal mac address.";\r
+// }\r
+// }\r
+// if (propertyName.equals(NEMOConstants.dst_mac)){\r
+// if (!valueType.equals(NEMOConstants.ethaddr)){\r
+// return "The property " + propertyName +"'s value should be an legal mac address.";\r
+// }\r
+// }\r
+// if (propertyName.equals(NEMOConstants.src_ip)){\r
+// if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){\r
+// return "The property " + propertyName +"'s value should be an legal ip address.";\r
+// }\r
+// }\r
+// if (propertyName.equals(NEMOConstants.dst_ip)){\r
+// if (!(valueType.equals(NEMOConstants.ipv4addr)||valueType.equals(NEMOConstants.ipv4pref))){\r
+// return "The property " + propertyName +"'s value should be an legal ip address.";\r
+// }\r
+// }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createFlow(UserId userId, String flowname,LinkedHashMap<String,LinkedHashMap<String,String>> flowmatch,LinkedHashMap<String,LinkedHashMap<String,String>> propertyList ){\r
+ String errorInfo = null;\r
+ FlowBuilder flowBuilder = new FlowBuilder();\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ List<Flow> flowList = new ArrayList<Flow>();\r
+ Boolean FlowExist = false;\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getFlow()!=null){\r
+ flowList = user.getObjects().getFlow();\r
+ }\r
+ }\r
+ if (!flowList.isEmpty()){\r
+ for (Flow flow1:flowList){\r
+ if (flow1.getFlowName().getValue().equals(flowname)){\r
+ FlowExist = true;\r
+ flowBuilder.setKey(flow1.getKey());\r
+ flowBuilder.setFlowId(flow1.getFlowId());\r
+ }\r
+ }\r
+ }\r
+ if (!FlowExist){\r
+ FlowId flowId = new FlowId(UUID.randomUUID().toString());\r
+ flowBuilder.setKey(new FlowKey(flowId));\r
+ flowBuilder.setFlowId(flowId);\r
+ }\r
+\r
+ flowBuilder.setFlowName(new FlowName(flowname));\r
+\r
+ if (!flowmatch.isEmpty() && errorInfo==null){\r
+ List<MatchItem> matchItemList = new ArrayList<MatchItem>();\r
+ MatchItemBuilder matchItemBuilder = new MatchItemBuilder();\r
+ for (String matchname : flowmatch.keySet()){\r
+ matchItemBuilder.setMatchItemName(new MatchItemName(matchname));\r
+ LinkedHashMap<String, String> matchvalue = flowmatch.get(matchname);\r
+ MatchItemValueBuilder matchItemValueBuilder = new MatchItemValueBuilder();\r
+ for (String value : matchvalue.keySet()){\r
+// if ((matchvalue.get(value).equals(NEMOConstants.string))||matchvalue.get(value).equals(NEMOConstants.ethaddr)\r
+// ||matchvalue.get(value).equals(NEMOConstants.ipv4addr)||matchvalue.get(value).equals(NEMOConstants.ipv4pref)){\r
+ if (matchvalue.get(value).equals(NEMOConstants.string)){\r
+ matchItemValueBuilder.setStringValue(value);\r
+ }\r
+ if (matchvalue.get(value).equals(NEMOConstants.integer)){\r
+ matchItemValueBuilder.setIntValue(Long.parseLong(value));\r
+ }\r
+ if (matchvalue.get(value).equals(NEMOConstants.range)){\r
+ String[] rangevalue = new String[2];\r
+ rangevalue = value.split(",");\r
+ RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+ if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+ }\r
+ else{\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+ }\r
+ matchItemValueBuilder.setRangeValue(rangeValueBuilder.build());\r
+ }\r
+ }\r
+ matchItemBuilder.setMatchItemValue(matchItemValueBuilder.build());\r
+ matchItemList.add(matchItemBuilder.build());\r
+ }\r
+ if (matchItemList.isEmpty()){\r
+ matchItemList=null;\r
+ flowBuilder.setMatchItem(matchItemList);\r
+ }\r
+ flowBuilder.setMatchItem(matchItemList);\r
+ }\r
+\r
+ if (errorInfo==null && ! propertyList.isEmpty()) {\r
+ PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+ List<Property> flowproperty = new ArrayList<Property>();\r
+ for (String propertyname : propertyList.keySet()){\r
+ propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+ propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+ PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+ LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+ List<IntValue> intValueList = new ArrayList<IntValue>();\r
+ List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+ RangeValue Rangevalue = null;\r
+ int order = 0;\r
+ for (String value : valuetype.keySet()){\r
+ if (valuetype.get(value).equals(NEMOConstants.string)){\r
+ StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+ stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+ stringValueBuilder.setValue(value);\r
+ stringValueBuilder.setOrder((long)order);\r
+ stringValueList.add(stringValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.integer)) {\r
+ IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+ intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+ intValueBuilder.setValue(Long.parseLong(value));\r
+ intValueBuilder.setOrder((long)order);\r
+ intValueList.add(intValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.range)){\r
+ String[] rangevalue = new String[2];\r
+ rangevalue = value.split(",");\r
+ org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValueBuilder rangeValueBuilder\r
+ = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValueBuilder();\r
+ if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+ }\r
+ else{\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+ }\r
+ Rangevalue = rangeValueBuilder.build();\r
+ propertyValuesBuilder.setRangeValue(Rangevalue);\r
+ }\r
+ order++;\r
+ }\r
+ if (intValueList.isEmpty()){\r
+ intValueList = null;\r
+ propertyValuesBuilder.setIntValue(intValueList);\r
+ }\r
+ if (stringValueList.isEmpty()){\r
+ stringValueList = null;\r
+ propertyValuesBuilder.setStringValue(stringValueList);\r
+ }\r
+ propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(Rangevalue);\r
+ propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+ flowproperty.add(propertyBuilder.build());\r
+ }\r
+ flowBuilder.setProperty(flowproperty);\r
+ }\r
+ this.flow = flowBuilder.build();\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOParse.NEMOparser;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/10/31.\r
+ */\r
+public class UpdateNodeLang {\r
+ private TenantManage tenantManage;\r
+ private UpdateNode updateNode;\r
+ private Node node;\r
+\r
+ public UpdateNodeLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ updateNode = new UpdateNode(dataBroker,tenantManage);\r
+ }\r
+\r
+ public String NodeHandling(UserId userId,String nodename, String nodetype, List<String> subnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ if (nodetype.equals(NEMOConstants.host)&&!subnodes.isEmpty()){\r
+ errorInfo = "the node "+nodename+ " is a " + NEMOConstants.host +", it could not contain other nodes.";\r
+ return errorInfo;\r
+ }\r
+ if (!propertyList.isEmpty()){\r
+ errorInfo = checkProperty(propertyList);\r
+ }\r
+ if (errorInfo==null){\r
+ errorInfo = createNode(userId, nodename, nodetype, subnodes, propertyList);\r
+ if (errorInfo == null){\r
+ return updateNode.NodeHandling(userId,this.node);\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkProperty(LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ for (String propertyName : propertyList.keySet()) {\r
+ LinkedHashMap<String, String> propertyValues = propertyList.get(propertyName);\r
+ Iterator<String> iterator = propertyValues.values().iterator();\r
+ String valueType = iterator.next();\r
+\r
+ while (iterator.hasNext()) {\r
+ if (valueType.equals(NEMOConstants.range)) {\r
+ errorInfo = "The property should just has one range value.";\r
+ return errorInfo;\r
+ }\r
+ else if (valueType.equals(NEMOConstants.string)){\r
+ if (!iterator.next().equals(NEMOConstants.string)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be string.";\r
+ }\r
+ }\r
+ else if (valueType.equals(NEMOConstants.integer)){\r
+ if (!iterator.next().equals(NEMOConstants.integer)){\r
+ return "The property " + propertyValues.get(iterator.next()) + " should be int.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createNode(UserId userId, String nodename, String nodetype, List<String> subnodes, LinkedHashMap<String, LinkedHashMap<String,String>> propertyList){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user =tenantManage.getUser();\r
+ List<Node> nodeList = new ArrayList<Node>();\r
+ if (user.getObjects()!=null)\r
+ {\r
+ if (user.getObjects().getNode()!=null)\r
+ {\r
+ nodeList = user.getObjects().getNode();\r
+ }\r
+ }\r
+ NodeBuilder nodeBuilder = new NodeBuilder();\r
+ Boolean NodeExist = false;\r
+ if (!nodeList.isEmpty())\r
+ {\r
+ for (Node node1:nodeList)\r
+ {\r
+ if (node1.getNodeName().getValue().equals(nodename))\r
+ {\r
+ NodeExist = true;\r
+ nodeBuilder.setKey(node1.getKey());\r
+ nodeBuilder.setNodeId(node1.getNodeId());\r
+ }\r
+ }\r
+ }\r
+ if (!NodeExist)\r
+ {\r
+ NodeId nodeId = new NodeId(UUID.randomUUID().toString());\r
+ nodeBuilder.setKey(new NodeKey(nodeId));\r
+ nodeBuilder.setNodeId(nodeId);\r
+ }\r
+\r
+ nodeBuilder.setNodeName(new NodeName(nodename));\r
+ nodeBuilder.setNodeType(new NodeType(nodetype));\r
+\r
+ List<SubNode> subNodeList = new ArrayList<SubNode>();\r
+ Boolean subnodeexist = false;\r
+ if (errorInfo==null && !subnodes.isEmpty())\r
+ {\r
+ for (String subnodename : subnodes)\r
+ {\r
+ int order = 0;\r
+ if (!nodeList.isEmpty())\r
+ {\r
+ for (Node node : nodeList)\r
+ {\r
+ if (node.getNodeName().getValue().equals(subnodename))\r
+ {\r
+ subnodeexist = true;\r
+ SubNodeBuilder subNodeBuilder = new SubNodeBuilder();\r
+ subNodeBuilder.setKey(new SubNodeKey(node.getNodeId()));\r
+ subNodeBuilder.setNodeId(node.getNodeId());\r
+ subNodeBuilder.setOrder((long)order);\r
+ subNodeList.add(subNodeBuilder.build());\r
+ }\r
+ }\r
+ if (!subnodeexist)\r
+ {\r
+ errorInfo = "The subnode is not exist.";\r
+ return errorInfo;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ errorInfo = "The subnode is not exist.";\r
+ return errorInfo;\r
+ }\r
+ order ++;\r
+ }\r
+ nodeBuilder.setSubNode(subNodeList);\r
+ }\r
+\r
+ if (errorInfo==null && !propertyList.isEmpty())\r
+ {\r
+ PropertyBuilder propertyBuilder = new PropertyBuilder();\r
+ List<Property> nodeproperty = new ArrayList<Property>();\r
+ for (String propertyname : propertyList.keySet())\r
+ {\r
+ propertyBuilder.setKey(new PropertyKey(new PropertyName(propertyname)));\r
+ propertyBuilder.setPropertyName(new PropertyName(propertyname));\r
+\r
+ PropertyValuesBuilder propertyValuesBuilder = new PropertyValuesBuilder();\r
+ LinkedHashMap<String, String> valuetype = propertyList.get(propertyname);\r
+ List<IntValue> intValueList = new ArrayList<IntValue>();\r
+ List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+ RangeValue RangeValue = null;\r
+\r
+ int order = 0;\r
+ for (String value : valuetype.keySet())\r
+ {\r
+// if ((valuetype.get(value).equals(NEMOConstants.string))||valuetype.get(value).equals(NEMOConstants.ipv4addr)||valuetype.get(value).equals(NEMOConstants.ipv4pref)\r
+// ||valuetype.get(value).equals(NEMOConstants.ethaddr))\r
+ if (valuetype.get(value).equals(NEMOConstants.string))\r
+ {\r
+ StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+ stringValueBuilder.setKey(new StringValueKey((long)order,value));\r
+ stringValueBuilder.setValue(value);\r
+ stringValueBuilder.setOrder((long)order);\r
+ stringValueList.add(stringValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.integer))\r
+ {\r
+ IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+ intValueBuilder.setKey(new IntValueKey((long)order,Long.parseLong(value)));\r
+ intValueBuilder.setValue(Long.parseLong(value));\r
+ intValueBuilder.setOrder((long)order);\r
+ intValueList.add(intValueBuilder.build());\r
+ }\r
+ if (valuetype.get(value).equals(NEMOConstants.range))\r
+ {\r
+ String[] rangevalue = new String[2];\r
+ rangevalue = value.split(",");\r
+ RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+ if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1]))\r
+ {\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+ }\r
+ else\r
+ {\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+ }\r
+ RangeValue = rangeValueBuilder.build();\r
+ propertyValuesBuilder.setRangeValue(RangeValue);\r
+ }\r
+ order++;\r
+ }\r
+ if (intValueList.isEmpty())\r
+ {\r
+ intValueList = null;\r
+ propertyValuesBuilder.setIntValue(intValueList);\r
+ }\r
+ if (stringValueList.isEmpty())\r
+ {\r
+ stringValueList = null;\r
+ propertyValuesBuilder.setStringValue(stringValueList);\r
+ }\r
+\r
+ propertyValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(RangeValue);\r
+ propertyBuilder.setPropertyValues(propertyValuesBuilder.build());\r
+ nodeproperty.add(propertyBuilder.build());\r
+ }\r
+ nodeBuilder.setProperty(nodeproperty);\r
+ }\r
+ this.node = nodeBuilder.build();\r
+ return errorInfo;\r
+ }\r
+}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang;\r
+\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateOperation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValueKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.RangeValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValueKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionKey;\r
+\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/6.\r
+ */\r
+public class UpdateOperationLang {\r
+ private TenantManage tenantManage;\r
+ private Operation operation;\r
+ private UpdateOperation updateOperation;\r
+ List<ConditionSegment> conditionSegmentList = new ArrayList<ConditionSegment>();\r
+ List<Action> actionList = new ArrayList<Action>();\r
+\r
+ public UpdateOperationLang(DataBroker dataBroker, TenantManage tenantManage){\r
+ this.tenantManage = tenantManage;\r
+ updateOperation = new UpdateOperation(dataBroker, tenantManage);\r
+ }\r
+\r
+ public String OperationHandling(UserId userId, String operationname, String target, String priority,\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> conditions,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+ String errorInfo = null;\r
+ errorInfo = createOperation(userId,operationname,target,priority,conditions,actions);\r
+ if (errorInfo==null){\r
+ errorInfo = updateOperation.OperationHandling(userId,this.operation);\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createOperation(UserId userId, String operationname, String target, String priority,\r
+ LinkedHashMap<String,LinkedHashMap<String,String>> conditions,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ List<Operation> operationList = new ArrayList<Operation>();\r
+ Boolean OperationExist = false;\r
+ Boolean TargetExist = false;\r
+ OperationBuilder operationBuilder = new OperationBuilder();\r
+\r
+\r
+ if (user.getOperations()!=null){\r
+ if (user.getOperations().getOperation()!=null){\r
+ operationList = user.getOperations().getOperation();\r
+ }\r
+ }\r
+ if (!operationList.isEmpty()){\r
+ for (Operation operation1:operationList){\r
+ if (operation1.getOperationName().getValue().equals(operationname)){\r
+ OperationExist = true;\r
+ operationBuilder.setKey(operation1.getKey());\r
+ operationBuilder.setOperationId(operation1.getOperationId());\r
+ }\r
+ }\r
+ }\r
+ if (!OperationExist) {\r
+ OperationId operationId = new OperationId(UUID.randomUUID().toString());\r
+ operationBuilder.setKey(new OperationKey(operationId));\r
+ operationBuilder.setOperationId(operationId);\r
+ }\r
+\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ for(Node node : user.getObjects().getNode()){\r
+ if (node.getNodeName().getValue().equals(target)){\r
+ TargetExist = true;\r
+ operationBuilder.setTargetObject(node.getNodeId());\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ for (Connection connection : user.getObjects().getConnection()){\r
+ if (connection.getConnectionName().getValue().equals(target)){\r
+ TargetExist = true;\r
+ operationBuilder.setTargetObject(connection.getConnectionId());\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow()!=null){\r
+ for (Flow flow: user.getObjects().getFlow()){\r
+ if (flow.getFlowName().getValue().equals(target)){\r
+ TargetExist = true;\r
+ operationBuilder.setTargetObject(flow.getFlowId());\r
+ }\r
+ }\r
+ }\r
+ }\r
+ if (!TargetExist){\r
+ errorInfo = "The target "+target+" is not exist in user vn space.";\r
+ return errorInfo;\r
+ }\r
+ operationBuilder.setOperationName(new OperationName(operationname));\r
+ operationBuilder.setPriority(Long.parseLong(priority));\r
+\r
+ if (!conditions.isEmpty() && errorInfo==null){\r
+// for (String condtionName : conditions.keySet()){\r
+// if (condtionName.equals(NEMOConstants.time)){\r
+// LinkedHashMap<String,String> values = conditions.get(condtionName);\r
+// Iterator<String> iterator = values.values().iterator();\r
+// while (iterator.hasNext()){\r
+// if (!((iterator.next().equals(NEMOConstants.y_m_d))||iterator.next().equals(NEMOConstants.h_m_s))){\r
+// return "The target value is not a legal time";\r
+// }\r
+// }\r
+// }\r
+// }\r
+ errorInfo = createCondition(conditions);\r
+ if (errorInfo==null) {\r
+ operationBuilder.setConditionSegment(conditionSegmentList);\r
+ }\r
+ }\r
+\r
+ if (!actions.isEmpty() && errorInfo ==null){\r
+ errorInfo = createAction(user,actions);\r
+ if (errorInfo==null){\r
+ operationBuilder.setAction(actionList);\r
+ }\r
+ }\r
+ operation = operationBuilder.build();\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createCondition(LinkedHashMap<String,LinkedHashMap<String,String>> conditions){\r
+ String errorInfo = null;\r
+\r
+ for (String conditionname : conditions.keySet()){\r
+ String[] condition = conditionname.split(NEMOConstants.comma);\r
+ ConditionSegmentBuilder conditionSegmentBuilder = new ConditionSegmentBuilder();\r
+ ConditionSegmentId conditionSegmentId = new ConditionSegmentId(UUID.randomUUID().toString());\r
+ conditionSegmentBuilder.setKey(new ConditionSegmentKey(conditionSegmentId));\r
+ conditionSegmentBuilder.setConditionSegmentId(conditionSegmentId);\r
+\r
+ String preRelationOperator = condition[0];\r
+ if (preRelationOperator == null){\r
+ conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.None);\r
+ }\r
+ else if (preRelationOperator.equals(NEMOConstants.not)){\r
+ conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Not);\r
+ }\r
+ else if (preRelationOperator.equals(NEMOConstants.and)){\r
+ conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.And);\r
+ }\r
+ else if (preRelationOperator.equals(NEMOConstants.or)){\r
+ conditionSegmentBuilder.setPrecursorRelationOperator(ConditionSegment.PrecursorRelationOperator.Or);\r
+ }\r
+\r
+ String condtionName = condition[1];\r
+ conditionSegmentBuilder.setConditionParameterName(new ConditionParameterName(condtionName));\r
+\r
+ String matchPattern = condition[2];\r
+ if (matchPattern.equals(NEMOConstants.equal)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Equal);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.not_equal)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotEqual);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.greater_than)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.GreaterThan);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.less_than)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.LessThan);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.not_less_than)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotLessThan);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.not_greater_than)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.NotGreaterThan);\r
+ }\r
+ else if (matchPattern.equals(NEMOConstants.between)){\r
+ conditionSegmentBuilder.setConditionParameterMatchPattern(ConditionSegment.ConditionParameterMatchPattern.Between);\r
+ }\r
+\r
+ LinkedHashMap<String, String> targetValue = conditions.get(conditionname);\r
+ ConditionParameterTargetValueBuilder conditionParameterTargetValueBuilder = new ConditionParameterTargetValueBuilder();\r
+ Iterator<String> iterator = targetValue.keySet().iterator();\r
+ String value = iterator.next();\r
+\r
+ if (targetValue.get(value).equals(NEMOConstants.string)){\r
+ conditionParameterTargetValueBuilder.setStringValue(value);\r
+ }\r
+ else if (targetValue.get(value).equals(NEMOConstants.integer)){\r
+ conditionParameterTargetValueBuilder.setIntValue(Long.parseLong(value));\r
+ }\r
+ else if (targetValue.get(value).equals(NEMOConstants.range)){\r
+ RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+ String[] values = value.split(NEMOConstants.comma);\r
+ if (Long.parseLong(values[0])>Long.parseLong(values[1])){\r
+ rangeValueBuilder.setMax(Long.valueOf(values[0]));\r
+ rangeValueBuilder.setMin(Long.parseLong(values[1]));\r
+ }\r
+ else if (Long.parseLong(values[0])<Long.parseLong(values[1])){\r
+ rangeValueBuilder.setMin(Long.parseLong(values[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(values[1]));\r
+ }\r
+ else {\r
+ errorInfo = "The value "+values[0]+" and "+values[1]+" should not be equal.";\r
+ return errorInfo;\r
+ }\r
+ }\r
+\r
+ conditionSegmentBuilder.setConditionParameterTargetValue(conditionParameterTargetValueBuilder.build());\r
+ conditionSegmentList.add(conditionSegmentBuilder.build());\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String createAction(User user,LinkedHashMap<String,LinkedHashMap<String,String>>actions){\r
+ String errorInfo = null;\r
+ int order = 0;\r
+ for (String actionname : actions.keySet())\r
+ {\r
+ ActionBuilder actionBuilder = new ActionBuilder();\r
+ actionBuilder.setKey(new ActionKey(new ActionName(actionname)));\r
+ actionBuilder.setActionName(new ActionName(actionname));\r
+ actionBuilder.setOrder((long) order);\r
+\r
+ ParameterValuesBuilder parameterValuesBuilder = new ParameterValuesBuilder();\r
+ LinkedHashMap<String, String> actionvalues = actions.get(actionname);\r
+ List<IntValue> intValueList = new ArrayList<IntValue>();\r
+ List<StringValue> stringValueList = new ArrayList<StringValue>();\r
+ RangeValue rangeValue = null;\r
+\r
+ int actionorder = 0;\r
+ for (String actionvalue : actionvalues.keySet())\r
+ {\r
+ if (actionvalues.get(actionvalue).equals(NEMOConstants.string))\r
+ {\r
+ if (intValueList.isEmpty()&&rangeValue==null) {\r
+ Boolean ParaExist = false;\r
+ StringValueBuilder stringValueBuilder = new StringValueBuilder();\r
+ if (user.getObjects() != null) {\r
+ if (user.getObjects().getNode() != null) {\r
+ for (Node node : user.getObjects().getNode()) {\r
+ if (node.getNodeName().getValue().equals(actionvalue)) {\r
+ ParaExist = true;\r
+ stringValueBuilder.setKey(new StringValueKey((long) actionorder, node.getNodeId().getValue()));\r
+ stringValueBuilder.setValue(node.getNodeId().getValue());\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection() != null) {\r
+ for (Connection connection : user.getObjects().getConnection()) {\r
+ if (connection.getConnectionName().getValue().equals(actionvalue)) {\r
+ ParaExist = true;\r
+ stringValueBuilder.setKey(new StringValueKey((long) actionorder, connection.getConnectionId().getValue()));\r
+ stringValueBuilder.setValue(connection.getConnectionId().getValue());\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow() != null) {\r
+ for (Flow flow : user.getObjects().getFlow()) {\r
+ if (flow.getFlowName().getValue().equals(actionvalue)) {\r
+ ParaExist = true;\r
+ stringValueBuilder.setKey(new StringValueKey((long) actionorder, flow.getFlowId().getValue()));\r
+ stringValueBuilder.setValue(flow.getFlowId().getValue());\r
+ }\r
+ }\r
+ }\r
+ if (!ParaExist){\r
+ errorInfo = "The parameter object is not exist in user vn space.";\r
+ }\r
+\r
+ stringValueBuilder.setOrder((long) actionorder);\r
+ stringValueList.add(stringValueBuilder.build());\r
+ actionorder++;\r
+ }\r
+ }\r
+\r
+ else{\r
+ errorInfo = "The parameter"+actionvalue +" in action should be string";\r
+ return errorInfo;\r
+ }\r
+ }\r
+ if (actionvalues.get(actionvalue).equals(NEMOConstants.integer)) {\r
+ if (stringValueList.isEmpty()&&rangeValue==null){\r
+ IntValueBuilder intValueBuilder = new IntValueBuilder();\r
+ intValueBuilder.setKey(new IntValueKey((long)actionorder,Long.parseLong(actionvalue)));\r
+ intValueBuilder.setOrder((long)actionorder);\r
+ intValueBuilder.setValue(Long.parseLong(actionvalue));\r
+ intValueList.add(intValueBuilder.build());\r
+ actionorder ++;\r
+ }\r
+ else{\r
+ errorInfo = "The parameter"+actionvalue +" in action should be int";\r
+ return errorInfo;\r
+ }\r
+ }\r
+ if (actionvalues.get(actionvalue).equals(NEMOConstants.range)){\r
+ if (intValueList.isEmpty()&&stringValueList.isEmpty())\r
+ {\r
+ String[] rangevalue = new String[2];\r
+ rangevalue = actionvalue.split(NEMOConstants.comma);\r
+ RangeValueBuilder rangeValueBuilder = new RangeValueBuilder();\r
+ if (Long.parseLong(rangevalue[0])<Long.parseLong(rangevalue[1])){\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[0]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[1]));\r
+ }\r
+ else{\r
+ rangeValueBuilder.setMin(Long.parseLong(rangevalue[1]));\r
+ rangeValueBuilder.setMax(Long.parseLong(rangevalue[0]));\r
+ }\r
+ rangeValue = rangeValueBuilder.build();\r
+ actionorder ++;\r
+ }\r
+ else{\r
+ errorInfo = "The parameter"+actionvalue +" in action should be range";\r
+ return errorInfo;\r
+ }\r
+ }\r
+ }\r
+ if (intValueList.isEmpty()) {\r
+ intValueList = null;\r
+ parameterValuesBuilder.setIntValue(intValueList);\r
+ }\r
+ if (stringValueList.isEmpty()){\r
+ stringValueList = null;\r
+ parameterValuesBuilder.setStringValue(stringValueList);\r
+ }\r
+ parameterValuesBuilder.setIntValue(intValueList).setStringValue(stringValueList).setRangeValue(rangeValue);\r
+ actionBuilder.setParameterValues(parameterValuesBuilder.build());\r
+ actionList.add(actionBuilder.build());\r
+ }\r
+ return errorInfo;\r
+ }\r
+}\r
private TenantManage tenantManage;\r
private static final Logger LOG = LoggerFactory.getLogger(DeleteConnection.class);\r
\r
- public DeleteConnection(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public DeleteConnection(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
}\r
\r
- public String DeleteConnectionHandling(UserId userId, ConnectionId connectionId)\r
- {\r
+ public String DeleteConnectionHandling(UserId userId, ConnectionId connectionId){\r
Boolean ConnInstanceExist = false;\r
String errorInfo = null;\r
-\r
tenantManage.fetchVNSpace(userId);\r
User user = tenantManage.getUser();\r
\r
- if (user != null)\r
- {\r
- if (user.getObjects() != null)\r
- {\r
- if (user.getObjects().getConnection() != null)\r
- {\r
+ if (user != null){\r
+ if (user.getObjects() != null){\r
+ if (user.getObjects().getConnection() != null){\r
List<Connection> connectionList = tenantManage.getUser().getObjects().getConnection();\r
\r
- for (Connection connection : connectionList)\r
- {\r
- if (connection.getConnectionId().equals(connectionId))\r
- {\r
+ for (Connection connection : connectionList){\r
+ if (connection.getConnectionId().equals(connectionId)){\r
ConnInstanceExist = true;\r
break;\r
}\r
}\r
-\r
- if (ConnInstanceExist)\r
- {\r
+ if (ConnInstanceExist){\r
DeleteConnInstance(userId, connectionId);\r
}\r
- else\r
- {\r
- errorInfo = "The connection instance"+connectionId.toString()+ "is not exit. Could not be deleted.";\r
+ else{\r
+ errorInfo = "The connection instance "+connectionId.getValue()+ " is not exit. Could not be deleted.";\r
}\r
-\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no connection instances in data store.";\r
}\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no connection instances in data store.";\r
}\r
\r
return errorInfo;\r
}\r
\r
- private void DeleteConnInstance(UserId userId, ConnectionId connectionId)\r
- {\r
+ private void DeleteConnInstance(UserId userId, ConnectionId connectionId){\r
WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
UserKey userKey = new UserKey(userId);\r
ConnectionKey connectionKey = new ConnectionKey(connectionId);\r
private TenantManage tenantManage;\r
private static final Logger LOG = LoggerFactory.getLogger(DeleteFlow.class);\r
\r
- public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public DeleteFlow(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
}\r
\r
- public String DeleteFlowHandling(UserId userId, FlowId flowId)\r
- {\r
+ public String DeleteFlowHandling(UserId userId, FlowId flowId){\r
Boolean FlowInsExist = false;\r
tenantManage.fetchVNSpace(userId);\r
String errorInfo = null;\r
User user = tenantManage.getUser();\r
\r
- if (user != null)\r
- {\r
- if (user.getObjects() != null)\r
- {\r
- if (user.getObjects().getFlow() != null)\r
- {\r
+ if (user != null){\r
+ if (user.getObjects() != null){\r
+ if (user.getObjects().getFlow() != null){\r
List<Flow> flowList = tenantManage.getUser().getObjects().getFlow();\r
- for (Flow flow : flowList)\r
- {\r
- if (flow.getFlowId().equals(flowId))\r
- {\r
+ for (Flow flow : flowList){\r
+ if (flow.getFlowId().equals(flowId)){\r
FlowInsExist = true;\r
break;\r
}\r
}\r
-\r
- if (FlowInsExist)\r
- {\r
+ if (FlowInsExist) {\r
DeleteFlowInstance(userId,flowId);\r
}\r
- else\r
- {\r
- errorInfo = "The flow instance" +flowId.toString()+"is not exist. Could not be deleted.";\r
+ else{\r
+ errorInfo = "The flow instance " +flowId.getValue()+" is not exist. Could not be deleted.";\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no flow instances in the data store.";\r
}\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no user in the data store.";\r
}\r
return errorInfo;\r
}\r
\r
- private void DeleteFlowInstance(UserId userId, FlowId flowId)\r
- {\r
+ private void DeleteFlowInstance(UserId userId, FlowId flowId){\r
WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
UserKey userKey = new UserKey(userId);\r
FlowKey flowKey = new FlowKey(flowId);\r
*/\r
public class DeleteIntent {\r
\r
- private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
private DeleteNode deleteNode;\r
private DeleteConnection deleteConnection;\r
private DeleteOperation deleteOperation;\r
private DeleteResult deleteResult;\r
\r
- public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
- this.dataBroker = dataBroker;\r
+ public DeleteIntent(DataBroker dataBroker, TenantManage tenantManage){\r
this.tenantManage = tenantManage;\r
deleteNode = new DeleteNode(dataBroker, tenantManage);\r
deleteConnection = new DeleteConnection(dataBroker,tenantManage);\r
deleteResult = new DeleteResult();\r
}\r
\r
- public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput)\r
- {\r
+ public String styleNemoDeleteOutput(AAA aaa,StructureStyleNemoDeleteInput styleNemoDeleteInput){\r
String errorInfo = null;\r
\r
errorInfo = aaa.checkUser(styleNemoDeleteInput);\r
-\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
return errorInfo;\r
}\r
-\r
- else\r
- {\r
- if (styleNemoDeleteInput.getObjects() != null)\r
- {\r
- if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null)\r
- {\r
+ else{\r
+ if (styleNemoDeleteInput.getObjects() != null){\r
+ if (styleNemoDeleteInput.getObjects().getNode() != null && errorInfo == null){\r
List<NodeId> nodeIdList= styleNemoDeleteInput.getObjects().getNode();\r
- for (NodeId nodeId : nodeIdList)\r
- {\r
+ for (NodeId nodeId : nodeIdList){\r
errorInfo = deleteNode.DeleNodeHandling(styleNemoDeleteInput.getUserId(), nodeId);\r
if (errorInfo != null) {\r
break;\r
}\r
return errorInfo;\r
}\r
-\r
- if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null)\r
- {\r
+ if (styleNemoDeleteInput.getObjects().getConnection() != null && errorInfo == null){\r
List<ConnectionId> connectionIdList = styleNemoDeleteInput.getObjects().getConnection();\r
- for (ConnectionId connectionId : connectionIdList)\r
- {\r
+ for (ConnectionId connectionId : connectionIdList){\r
errorInfo = deleteConnection.DeleteConnectionHandling(styleNemoDeleteInput.getUserId(),connectionId);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
break;\r
}\r
}\r
return errorInfo;\r
}\r
-\r
- if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null)\r
- {\r
+ if (styleNemoDeleteInput.getObjects().getFlow() != null && errorInfo == null){\r
List<FlowId> flowIdList = styleNemoDeleteInput.getObjects().getFlow();\r
- for (FlowId flowId : flowIdList )\r
- {\r
+ for (FlowId flowId : flowIdList ){\r
errorInfo = deleteFlow.DeleteFlowHandling(styleNemoDeleteInput.getUserId(),flowId);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
break;\r
}\r
}\r
return errorInfo;\r
}\r
}\r
- if (styleNemoDeleteInput.getOperations() != null)\r
- {\r
- if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null)\r
- {\r
+ if (styleNemoDeleteInput.getOperations() != null){\r
+ if (styleNemoDeleteInput.getOperations().getOperation() != null && errorInfo == null){\r
List<OperationId> operationIdList = styleNemoDeleteInput.getOperations().getOperation();\r
- for (OperationId operationId : operationIdList)\r
- {\r
+ for (OperationId operationId : operationIdList){\r
errorInfo = deleteOperation.DeleteOperationhandling(styleNemoDeleteInput.getUserId(),operationId);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
break;\r
}\r
}\r
return errorInfo;\r
}\r
}\r
-\r
- if (styleNemoDeleteInput.getResults() != null)\r
- {\r
+ if (styleNemoDeleteInput.getResults() != null){\r
Results results = styleNemoDeleteInput.getResults();\r
errorInfo = deleteResult.DeleteResultHandling(styleNemoDeleteInput.getUserId(),results);\r
- if (errorInfo != null)\r
- {\r
+ if (errorInfo != null){\r
return errorInfo;\r
}\r
- }\r
+ }\r
}\r
return null;\r
}\r
*/\r
package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
private static final Logger LOG = LoggerFactory.getLogger(DeleteNode.class);\r
+ private DeleteConnection deleteConnection;\r
\r
- public DeleteNode(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public DeleteNode(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
+ deleteConnection = new DeleteConnection(dataBroker, tenantManage);\r
}\r
\r
- public String DeleNodeHandling(UserId userId,NodeId nodeId)\r
- {\r
+ public String DeleNodeHandling(UserId userId,NodeId nodeId){\r
String errorInfo = null;\r
Boolean NodeInstanceExist = false;\r
-\r
tenantManage.fetchVNSpace(userId);\r
-\r
User user = tenantManage.getUser();\r
- if (user != null)\r
- {\r
- if (user.getObjects() != null)\r
- {\r
- if (user.getObjects().getNode() != null)\r
- {\r
+ if (user != null){\r
+ if (user.getObjects() != null){\r
+ if (user.getObjects().getNode() != null){\r
List<Node> nodeList = tenantManage.getUser().getObjects().getNode();\r
-\r
- for (Node node : nodeList)\r
- {\r
- if (node.getNodeId().equals(nodeId))\r
- {\r
+ for (Node node : nodeList){\r
+ if (node.getNodeId().equals(nodeId)){\r
NodeInstanceExist = true;\r
- break;\r
+ DeleteNodeInstance(userId,nodeId);\r
+\r
+ if (user.getObjects().getConnection()!=null) {\r
+ Boolean nodeconn = false;\r
+ List<Connection> connectionList = user.getObjects().getConnection();\r
+ for (Connection connection : connectionList){\r
+ if (connection.getEndNode() != null){\r
+ for (EndNode endNode : connection.getEndNode()){\r
+ if (endNode.getNodeId().equals(nodeId)){\r
+ nodeconn = true;\r
+ }\r
+ }\r
+ if (nodeconn){\r
+ errorInfo = deleteConnection.DeleteConnectionHandling(userId,connection.getConnectionId());\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
}\r
- if (NodeInstanceExist)\r
- {\r
- DeleteNodeInstance(userId,nodeId);\r
- }\r
- else\r
- {\r
- errorInfo = "The node instance" +nodeId.toString()+"is not exist.Could not be deleted";\r
+ if (!NodeInstanceExist) {\r
+ errorInfo = "The node instance " +nodeId.getValue()+" is not exist.Could not be deleted";\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no nodes instances in data store.";\r
}\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no user in data store.";\r
}\r
\r
return errorInfo;\r
}\r
\r
- private void DeleteNodeInstance(UserId userId,NodeId nodeId)\r
- {\r
+ private void DeleteNodeInstance(UserId userId,NodeId nodeId){\r
WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
UserKey userKey = new UserKey(userId);\r
NodeKey nodeKey = new NodeKey(nodeId);\r
private TenantManage tenantManage;\r
private static final Logger LOG = LoggerFactory.getLogger(DeleteOperation.class);\r
\r
- public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public DeleteOperation(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
}\r
\r
- public String DeleteOperationhandling(UserId userId, OperationId operationId)\r
- {\r
+ public String DeleteOperationhandling(UserId userId, OperationId operationId){\r
Boolean OperationExist = false;\r
String errorInfo = null;\r
tenantManage.fetchVNSpace(userId);\r
-\r
User user = tenantManage.getUser();\r
\r
- if (user != null)\r
- {\r
- if (user.getOperations() != null)\r
- {\r
- if (user.getOperations().getOperation() != null)\r
- {\r
+ if (user != null){\r
+ if (user.getOperations() != null){\r
+ if (user.getOperations().getOperation() != null){\r
List<Operation> operationList = tenantManage.getUser().getOperations().getOperation();\r
-\r
- for (Operation operation : operationList)\r
- {\r
- if (operation.getOperationId().equals(operationId))\r
- {\r
+ for (Operation operation : operationList){\r
+ if (operation.getOperationId().equals(operationId)){\r
OperationExist = true;\r
break;\r
}\r
}\r
-\r
- if (OperationExist)\r
- {\r
+ if (OperationExist){\r
DeleteOperationInstance(userId,operationId);\r
}\r
- else\r
- {\r
- errorInfo = "The operation instance" +operationId.toString()+"is not exist. Could not be deleted.";\r
+ else{\r
+ errorInfo = "The operation instance " +operationId.getValue()+" is not exist. Could not be deleted.";\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no operation instances in the data store.";\r
}\r
}\r
}\r
- else\r
- {\r
+ else{\r
errorInfo = "There are no user in the data store.";\r
}\r
return errorInfo;\r
}\r
\r
- private void DeleteOperationInstance(UserId userId, OperationId operationId)\r
- {\r
+ private void DeleteOperationInstance(UserId userId, OperationId operationId){\r
WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
UserKey userKey = new UserKey(userId);\r
OperationKey operationKey = new OperationKey(operationId);\r
*/\r
package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.ConnectionInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ConnectionDefinitionCheck;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
\r
/**\r
* Created by z00293636 on 2015/8/31.\r
\r
private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
- private ConnectionDefinitionCheck connectionDefinitionCheck;\r
- private ConnectionInstanceCheck connectionInstanceCheck;\r
+ private final SettableFuture<List<ConnectionDefinition>> connectionDefinitionListFuture = SettableFuture.create();\r
private static final Logger LOG = LoggerFactory.getLogger(UpdateConnection.class);\r
\r
- public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public UpdateConnection(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
- connectionDefinitionCheck = new ConnectionDefinitionCheck(dataBroker);\r
- connectionInstanceCheck = new ConnectionInstanceCheck(tenantManage);\r
}\r
\r
- public String ConnectionHandling(UserId userId, Connection connection)\r
- {\r
- String errorDefinition = connectionDefinitionCheck.CheckConnectionDefinition(connection);\r
- String errorInstance = connectionInstanceCheck.checkConnInstance(userId,connection);\r
- if (errorDefinition != null)\r
- {\r
- return errorDefinition;\r
+ public String ConnectionHandling(UserId userId, Connection connection){\r
+ String errorInfo = null;\r
+ errorInfo =checkDefinition(connection);\r
+ if (errorInfo != null){\r
+ return errorInfo;\r
}\r
- if (errorInstance != null)\r
- {\r
- return errorInstance;\r
+ else {\r
+ errorInfo = checkInstance(userId,connection);\r
+ if (errorInfo != null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+ if (userId != null && connection != null){\r
+ Connection connection1 = new ConnectionBuilder(connection).build();\r
+ ConnectionKey connectionKey = new ConnectionKey(connection.getConnectionId());\r
+\r
+ UserKey userKey = new UserKey(userId);\r
+\r
+ InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
+ t.put(LogicalDatastoreType.CONFIGURATION, connectionid, connection1,true);\r
+ CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+ Futures.addCallback(f, new FutureCallback<Void>() {\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Could not write endpoint base container", t);\r
+ }\r
+\r
+ @Override\r
+ public void onSuccess(Void result) {\r
+ }\r
+ });\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkInstance(UserId userId, Connection connection){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+\r
+ if (user!=null){\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getConnection()!=null){\r
+ List<Connection> connectionList = tenantManage.getUser().getObjects().getConnection();\r
+\r
+ for (Connection connection1 : connectionList){\r
+ if (connection1.getConnectionId().equals(connection.getConnectionId())){\r
+ if (!connection1.getConnectionType().equals(connection.getConnectionType())){\r
+ errorInfo = "The connection type should not be changed.";\r
+ break;\r
+ }\r
+ if (!connection1.getConnectionName().equals(connection.getConnectionName())){\r
+ errorInfo = "The End node should not be changed.";\r
+ break;\r
+ }\r
+\r
+ }\r
+ }\r
+ }\r
+ if (connection.getEndNode()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ List<EndNode> endnodeList = connection.getEndNode();\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ Boolean nodeExist = false;\r
+\r
+ for (EndNode endNode : endnodeList){\r
+ for (Node node : nodeList){\r
+ if (endNode.getNodeId().equals(node.getNodeId())){\r
+ nodeExist = true;\r
+ }\r
+ }\r
+ if (!nodeExist){\r
+ errorInfo = "The endnode is not exist in user vn space.";\r
+ }\r
+ }\r
+ }\r
+ else\r
+ {\r
+ errorInfo = "The endnodes are not exist in the user vn space.";\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ if (connection.getEndNode() != null){\r
+ errorInfo = "There are no nodes in user vn space.";\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ if (connection.getEndNode() != null){\r
+ errorInfo = "There are no nodes in user vn space.";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkDefinition(Connection connection){\r
+ String errorInfo = null;\r
+ fetchConnectionDefinitionList();\r
+ Map<ConnectionType, ConnectionDefinition> connectionDefinitionMap = getConnectionDefinition();\r
+ if (connectionDefinitionMap.isEmpty()){\r
+ return "This type of connection has not been defined.";\r
}\r
- else\r
+ else {\r
+ if (connectionDefinitionMap.containsKey(connection.getConnectionType())){\r
+ List<Property> connectionProperties = connection.getProperty();\r
+ List<PropertyDefinition> propertyDefinitions = connectionDefinitionMap.get(connection.getConnectionType()).getPropertyDefinition();\r
+ if (connectionProperties != null && propertyDefinitions ==null)\r
+ {\r
+ errorInfo = "There are no properties for this type of connection.";\r
+ }\r
+ else if (connectionProperties != null && propertyDefinitions != null)\r
+ {\r
+ errorInfo = CheckProperty(connection.getProperty(), propertyDefinitions);\r
+ }\r
+ }\r
+ else {\r
+ return "This type of connection has not been defined.";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String CheckProperty(List<Property> connectionProperty, List<PropertyDefinition> propertyDefinitionList ){\r
+ String errorInfo = null;\r
+ for (Property property : connectionProperty)\r
{\r
- WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
- if (userId != null && connection != null)\r
+ Boolean properyHasDefine = false;\r
+ if (errorInfo != null)\r
{\r
-// ConnectionBuilder connectionBuilder = new ConnectionBuilder();\r
-// connectionBuilder.setConnectionId(connection.getConnectionId());\r
-// connectionBuilder.setConnectionName(connection.getConnectionName());\r
-// connectionBuilder.setConnectionType(connection.getConnectionType());\r
-// connectionBuilder.setEndNode(connection.getEndNode());\r
-// connectionBuilder.setProperty(connection.getProperty());\r
-//\r
-// Connection connection1 = connectionBuilder.build();\r
-\r
- Connection connection1 = new ConnectionBuilder(connection).build();\r
- ConnectionKey connectionKey = new ConnectionKey(connection.getConnectionId());\r
-\r
- UserKey userKey = new UserKey(userId);\r
-\r
- InstanceIdentifier<Connection> connectionid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Connection.class,connectionKey).build();\r
- t.put(LogicalDatastoreType.CONFIGURATION, connectionid, connection1,true);\r
- CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
- Futures.addCallback(f, new FutureCallback<Void>() {\r
- @Override\r
- public void onFailure(Throwable t) {\r
- LOG.error("Could not write endpoint base container", t);\r
+ break;\r
+ }\r
+ else\r
+ {\r
+ for (PropertyDefinition propertyDefinition : propertyDefinitionList)\r
+ {\r
+ if (property.getPropertyName().equals(propertyDefinition.getPropertyName()))\r
+ {\r
+ properyHasDefine = true;\r
+ PropertyValues propertyValues = property.getPropertyValues();\r
+ PropertyDefinition.PropertyValueType propertyValueType = propertyDefinition.getPropertyValueType();\r
+\r
+ if (propertyValues != null && propertyValueType != null)\r
+ {\r
+ if (propertyDefinition.getIsReadOnly()!=null\r
+ && PropertyDefinition.IsReadOnly.ReadOnly == propertyDefinition.getIsReadOnly())\r
+ {\r
+ if (propertyDefinition.getIsRequired().getIntValue() == 1)\r
+ {\r
+ errorInfo = "The property value type of " + property.getPropertyName().toString() + " is read only.";\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)) {\r
+ errorInfo = "The property value type of " + property.getPropertyName().toString() + " should be string.";\r
+ break;\r
+ }\r
+ if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)) {\r
+ errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be integer.";\r
+ break;\r
+ }\r
+ if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)) {\r
+ errorInfo = "The property value type of" + property.getPropertyName().toString() + " should be range.";\r
+ break;\r
+ }\r
+ }\r
+ }\r
}\r
+ }\r
+ if (!properyHasDefine) {\r
+ errorInfo = "This type of property" + property.getPropertyName().toString() + " has not been defined.";\r
+ }\r
+ }\r
+ }\r
\r
- @Override\r
- public void onSuccess(Void result) {\r
+ if (errorInfo == null)\r
+ {\r
+ Boolean requiredProperty = false;\r
+ for (PropertyDefinition propertyDefinition : propertyDefinitionList)\r
+ {\r
+ if (propertyDefinition.getIsRequired()!=null)\r
+ {\r
+ if (propertyDefinition.getIsRequired().getIntValue() == 0)\r
+ {\r
+ for (Property property : connectionProperty)\r
+ {\r
+ if (property.getPropertyName().equals(propertyDefinition.getPropertyName()))\r
+ {\r
+ requiredProperty = true;\r
+ }\r
+ }\r
+ if (!requiredProperty)\r
+ {\r
+ errorInfo = "The required property" + propertyDefinition.getPropertyName().toString() + "is not included in the intent.";\r
+ }\r
}\r
- });\r
+ }\r
}\r
}\r
- return null;\r
+ return errorInfo;\r
}\r
\r
+ private void fetchConnectionDefinitionList(){\r
+ InstanceIdentifier<ConnectionDefinitions> connectiondefinitionId = InstanceIdentifier.builder(ConnectionDefinitions.class).build();\r
+ ListenableFuture<Optional<ConnectionDefinitions>> connectiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, connectiondefinitionId);\r
+ Futures.addCallback(connectiondefinitionFuture, new FutureCallback<Optional<ConnectionDefinitions>>() {\r
+ @Override\r
+ public void onSuccess(Optional<ConnectionDefinitions> result) {\r
+ setConnectionDefinitionListFuture(result.get().getConnectionDefinition());\r
+\r
+ }\r
+\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Can not read connection definition information.", t);\r
+ }\r
+ });\r
+ return;\r
+ }\r
+\r
+ private void setConnectionDefinitionListFuture(List<ConnectionDefinition> connectionDefinitionList){\r
+ this.connectionDefinitionListFuture.set(connectionDefinitionList);\r
+ }\r
+\r
+ private List<ConnectionDefinition> getConnectionDefinitionList(){\r
+ try{\r
+ return connectionDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+ }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ private Map<ConnectionType, ConnectionDefinition> getConnectionDefinition(){\r
+ List<ConnectionDefinition> connectionDefinitionList = getConnectionDefinitionList();\r
+ Map<ConnectionType, ConnectionDefinition> connectionDefinitionMap = new HashMap<ConnectionType, ConnectionDefinition>();\r
+ if (connectionDefinitionList!=null){\r
+ for (ConnectionDefinition connectionDefinition : connectionDefinitionList){\r
+ connectionDefinitionMap.put(connectionDefinition.getConnectionType(),connectionDefinition);\r
+ }\r
+ }\r
+ return connectionDefinitionMap;\r
+ }\r
}\r
*/\r
package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.FlowInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.MatchItemName;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
+\r
/**\r
* Created by z00293636 on 2015/8/31.\r
*/\r
\r
private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
- private FlowDefinitionCheck flowDefinitionCheck;\r
- private FlowInstanceCheck flowInstanceCheck;\r
+ private ValueCheck valueCheck;\r
+ private final SettableFuture<List<MatchItemDefinition>> matchItemDefinitionListFuture = SettableFuture.create();\r
private static final Logger LOG = LoggerFactory.getLogger(UpdateFlow.class);\r
\r
public UpdateFlow(DataBroker dataBroker, TenantManage tenantManage)\r
{\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
- flowDefinitionCheck = new FlowDefinitionCheck(dataBroker);\r
- flowInstanceCheck = new FlowInstanceCheck(tenantManage);\r
+ valueCheck = new ValueCheck();\r
}\r
\r
- public String FlowHandling(UserId userId, Flow flow)\r
- {\r
- String errorDefinition = flowDefinitionCheck.CheckDefinition(flow);\r
- String errorInstance = flowInstanceCheck.checkFlowInstance(userId,flow);\r
+ public String FlowHandling(UserId userId, Flow flow){\r
+ String errorInfo = null;\r
+ errorInfo = checkDefinition(flow);\r
+ if (errorInfo!=null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ errorInfo = checkInstance(userId,flow);\r
+ if (errorInfo!=null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+ if (userId!=null && flow!=null){\r
+ Flow flow1 = new FlowBuilder(flow).build();\r
+ FlowKey flowKey = new FlowKey(flow.getFlowId());\r
+ UserKey userKey = new UserKey(userId);\r
\r
- if (errorDefinition != null)\r
- {\r
- return errorDefinition;\r
+ InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
+ t.put(LogicalDatastoreType.CONFIGURATION, flowid, flow1,true);\r
+ CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+ Futures.addCallback(f, new FutureCallback<Void>() {\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Could not write endpoint base container", t);\r
+ }\r
+\r
+ @Override\r
+ public void onSuccess(Void result) {\r
+ }\r
+ });\r
+ }\r
+ }\r
}\r
- if (errorInstance != null)\r
- {\r
- return errorInstance;\r
+ return null;\r
+ }\r
+\r
+ private String checkInstance(UserId userId, Flow flow){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+ if (user != null){\r
+ if (user.getObjects() != null){\r
+ if (user.getObjects().getFlow() != null){\r
+ List<Flow> flowList = tenantManage.getUser().getObjects().getFlow();\r
+ for (Flow flow1 : flowList){\r
+ if (flow1.getFlowId().equals(flow.getFlowId())){\r
+ if (!flow1.getFlowName().equals(flow.getFlowName())){\r
+ errorInfo = "The flow name should not be changed.";\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkPredefine(List<MatchItem> matchItems){\r
+ String errorInfo = null;\r
+ for (MatchItem matchItem :matchItems){\r
+ if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_ip)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_ip)){\r
+ String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+ Boolean legalValue = true;\r
+ if (stringValues.contains("/")){\r
+ legalValue = valueCheck.checkIpPrefix(stringValues);\r
+ }\r
+ else {\r
+ legalValue = valueCheck.checkIpAddress(stringValues);\r
+ }\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.ip_address + " is not legal.";\r
+ }\r
+ }\r
+ if (matchItem.getMatchItemName().getValue().equals(NEMOConstants.src_mac)||matchItem.getMatchItemName().getValue().equals(NEMOConstants.dst_mac)){\r
+ String stringValues = matchItem.getMatchItemValue().getStringValue();\r
+ Boolean legalValue = valueCheck.checkMac(stringValues);\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.mac_address + " is not legal.";\r
+ }\r
+ }\r
}\r
- else\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkDefinition(Flow flow){\r
+ String errorInfo = null;\r
+ fetchMatchItemDefinitions();\r
+ Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap =getMatchItemDefinition();\r
+\r
+ if (flow.getMatchItem() != null)\r
{\r
- WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
- if (userId!=null && flow!=null)\r
- {\r
-// FlowBuilder flowBuilder = new FlowBuilder();\r
-// flowBuilder.setFlowId(flow.getFlowId());\r
-// flowBuilder.setFlowName(flow.getFlowName());\r
-// flowBuilder.setMatchItem(flow.getMatchItem());\r
-// flowBuilder.setProperty(flow.getProperty());\r
-//\r
-// Flow flow1 = flowBuilder.build();\r
- Flow flow1 = new FlowBuilder(flow).build();\r
- FlowKey flowKey = new FlowKey(flow.getFlowId());\r
-\r
- UserKey userKey = new UserKey(userId);\r
-\r
- InstanceIdentifier<Flow> flowid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Flow.class,flowKey).build();\r
- t.put(LogicalDatastoreType.CONFIGURATION, flowid, flow1,true);\r
- CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
- Futures.addCallback(f, new FutureCallback<Void>() {\r
- @Override\r
- public void onFailure(Throwable t) {\r
- LOG.error("Could not write endpoint base container", t);\r
- }\r
+ if (matchItemDefinitionMap.isEmpty()){\r
+ return "The match item has not been defined.";\r
+ }\r
+ else {\r
+ for (MatchItem matchItem : flow.getMatchItem())\r
+ {\r
+ if (matchItemDefinitionMap.containsKey(matchItem.getMatchItemName())){\r
+ MatchItemValue matchItemValue = matchItem.getMatchItemValue();\r
+ MatchItemDefinition.MatchItemValueType matchItemValueType = matchItemDefinitionMap.get(matchItem.getMatchItemName()).getMatchItemValueType();\r
+ if (matchItemValue != null && matchItemValueType != null)\r
+ {\r
+ if (matchItemValueType.getIntValue()==0 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()!=null&&matchItemValue.getRangeValue()==null))\r
+ {\r
+ errorInfo = "The match item value type for" +matchItem.getMatchItemName().toString()+"should be string.";\r
+ break;\r
+ }\r
+\r
+ if (matchItemValueType.getIntValue()==1 && !(matchItemValue.getIntValue()!=null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()==null))\r
+ {\r
+ errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be integer.";\r
+ break;\r
+ }\r
\r
- @Override\r
- public void onSuccess(Void result) {\r
+ if (matchItemValueType.getIntValue()==2 && !(matchItemValue.getIntValue()==null&&matchItemValue.getStringValue()==null&&matchItemValue.getRangeValue()!=null))\r
+ {\r
+ errorInfo = "The match item value type for" + matchItem.getMatchItemName().toString()+"should be range.";\r
+ break;\r
+ }\r
+ }\r
}\r
- });\r
+ else {\r
+ return "The match item has not been defined.";\r
+ }\r
+\r
+ }\r
+ }\r
+ if (errorInfo==null){\r
+ errorInfo = checkPredefine(flow.getMatchItem());\r
}\r
}\r
- return null;\r
+ return errorInfo;\r
+ }\r
+\r
+ private void fetchMatchItemDefinitions(){\r
+ InstanceIdentifier<MatchItemDefinitions> matchitemdefinitionId = InstanceIdentifier.builder(MatchItemDefinitions.class).build();\r
+ ListenableFuture<Optional<MatchItemDefinitions>> matchitemdefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, matchitemdefinitionId);\r
+ Futures.addCallback(matchitemdefinitionFuture, new FutureCallback<Optional<MatchItemDefinitions>>() {\r
+ @Override\r
+ public void onSuccess(Optional<MatchItemDefinitions> result) {\r
+ setMatchItemDefinitionListFuture(result.get().getMatchItemDefinition());\r
+ return;\r
+ }\r
+\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Can not read match item definition information.", t);\r
+\r
+ return;\r
+ }\r
+ });\r
+ return ;\r
+ }\r
+\r
+ private void setMatchItemDefinitionListFuture(List<MatchItemDefinition> matchItemDefinitionList){\r
+ this.matchItemDefinitionListFuture.set(matchItemDefinitionList);\r
}\r
\r
+ private List<MatchItemDefinition> getMatchItemDefinitionList(){\r
+ try{\r
+ return matchItemDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+ }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ private Map<MatchItemName, MatchItemDefinition> getMatchItemDefinition(){\r
+ List<MatchItemDefinition> matchItemDefinitions = getMatchItemDefinitionList();\r
+ Map<MatchItemName, MatchItemDefinition> matchItemDefinitionMap = new HashMap<MatchItemName, MatchItemDefinition>();\r
+ if (matchItemDefinitions!=null){\r
+ for (MatchItemDefinition matchItemDefinition : matchItemDefinitions){\r
+ matchItemDefinitionMap.put(matchItemDefinition.getMatchItemName(),matchItemDefinition);\r
+ }\r
+ }\r
+ return matchItemDefinitionMap;\r
+ }\r
}\r
*/\r
public class UpdateIntent {\r
\r
- private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
private UpdateNode updateNode;\r
private UpdateConnection updateConnection;\r
private UpdateOperation updateOperation;\r
private UpdateResult updateResult;\r
\r
- public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
- this.dataBroker = dataBroker;\r
+ public UpdateIntent(DataBroker dataBroker, TenantManage tenantManage){\r
this.tenantManage = tenantManage;\r
updateNode = new UpdateNode(dataBroker,tenantManage);\r
updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
}\r
\r
public String updateIntent(AAA aaa,StructureStyleNemoUpdateInput structureStyleNemoUpdateInput){\r
-\r
String erroInfo = null;\r
\r
erroInfo = aaa.checkUser(structureStyleNemoUpdateInput);\r
\r
- if (erroInfo != null)\r
- {\r
+ if (erroInfo != null){\r
return erroInfo;\r
}\r
- else\r
- {\r
- if(structureStyleNemoUpdateInput.getObjects() != null)\r
- {\r
- if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null)\r
- {\r
+ else{\r
+ if(structureStyleNemoUpdateInput.getObjects() != null){\r
+ if (structureStyleNemoUpdateInput.getObjects().getNode() != null && erroInfo == null){\r
List<Node> nodeList= structureStyleNemoUpdateInput.getObjects().getNode();\r
- for (Node node : nodeList )\r
- {\r
+ for (Node node : nodeList ){\r
erroInfo = updateNode.NodeHandling(structureStyleNemoUpdateInput.getUserId(), node);\r
- if (erroInfo != null)\r
- {\r
+ if (erroInfo != null){\r
break;\r
}\r
}\r
}\r
- if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null)\r
- {\r
+ if (structureStyleNemoUpdateInput.getObjects().getConnection() != null && erroInfo == null){\r
List<Connection> connectionList = structureStyleNemoUpdateInput.getObjects().getConnection();\r
- for (Connection connection : connectionList)\r
- {\r
+ for (Connection connection : connectionList){\r
erroInfo = updateConnection.ConnectionHandling(structureStyleNemoUpdateInput.getUserId(), connection);\r
- if (erroInfo != null)\r
- {\r
+ if (erroInfo != null){\r
break;\r
}\r
}\r
}\r
\r
- if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null)\r
- {\r
+ if (structureStyleNemoUpdateInput.getObjects().getFlow() != null && erroInfo == null){\r
List<Flow> flowList = structureStyleNemoUpdateInput.getObjects().getFlow();\r
- for (Flow flow : flowList)\r
- {\r
+ for (Flow flow : flowList){\r
erroInfo = updateFlow.FlowHandling(structureStyleNemoUpdateInput.getUserId(),flow);\r
- if (erroInfo != null)\r
- {\r
+ if (erroInfo != null) {\r
break;\r
}\r
}\r
}\r
}\r
\r
- if (structureStyleNemoUpdateInput.getOperations() != null)\r
- {\r
- if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null)\r
- {\r
+ if (structureStyleNemoUpdateInput.getOperations() != null){\r
+ if (structureStyleNemoUpdateInput.getOperations().getOperation() != null && erroInfo == null){\r
List<Operation> operationList =structureStyleNemoUpdateInput.getOperations().getOperation();\r
- for (Operation operation : operationList)\r
- {\r
+ for (Operation operation : operationList){\r
erroInfo = updateOperation.OperationHandling(structureStyleNemoUpdateInput.getUserId(), operation);\r
- if (erroInfo !=null)\r
- {\r
+ if (erroInfo !=null){\r
break;\r
}\r
}\r
}\r
}\r
\r
- else if (structureStyleNemoUpdateInput.getResults() != null)\r
- {\r
- if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null)\r
- {\r
+ else if (structureStyleNemoUpdateInput.getResults() != null){\r
+ if ( structureStyleNemoUpdateInput.getResults() != null && erroInfo == null){\r
Results results = structureStyleNemoUpdateInput.getResults();\r
erroInfo = updateResult.ResultHandling(structureStyleNemoUpdateInput.getUserId(), results);\r
- if (erroInfo != null)\r
- {\r
+ if (erroInfo != null){\r
//todo\r
}\r
}\r
*/\r
package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.NodeInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
+\r
/**\r
* Created by z00293636 on 2015/8/31.\r
*/\r
public class UpdateNode {\r
\r
private DataBroker dataBroker;\r
- private NodeDefinitionCheck nodeCheck;\r
- private NodeInstanceCheck nodeInstanceCheck;\r
+ private TenantManage tenantManage;\r
+ private final SettableFuture<List<NodeDefinition>> nodeDefinitionListFuture = SettableFuture.create();\r
+ private ValueCheck valueCheck;\r
private static final Logger LOG = LoggerFactory.getLogger(UpdateNode.class);\r
\r
- public UpdateNode(DataBroker dataBroker,TenantManage tenantManage)\r
- {\r
+ public UpdateNode(DataBroker dataBroker,TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
- nodeCheck = new NodeDefinitionCheck(dataBroker);\r
- nodeInstanceCheck = new NodeInstanceCheck(tenantManage);\r
+ this.tenantManage = tenantManage;\r
+ valueCheck = new ValueCheck();\r
}\r
\r
- public String NodeHandling(UserId userId,Node node)\r
- {\r
- String errorDefinition = nodeCheck.CheckNodeDefinition(node);\r
- String errorInstance = nodeInstanceCheck.checkNodeInstance(userId,node);\r
\r
- if (errorDefinition != null)\r
- {\r
- return errorDefinition;\r
+ public String NodeHandling(UserId userId,Node node){\r
+ String errorInfo = null;\r
+ errorInfo = checkDefinition(node);\r
+ if (errorInfo !=null){\r
+ return errorInfo;\r
}\r
- if (errorInstance != null)\r
- {\r
- return errorInstance;\r
+ else{\r
+ errorInfo = checkInstance(userId, node);\r
+ if (errorInfo!=null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+ if (userId != null && node.getNodeId() !=null){\r
+ Node node1 = new NodeBuilder(node).build();\r
+ NodeKey nodeKey = new NodeKey(node.getKey());\r
+ UserKey userKey = new UserKey(userId);\r
+\r
+ InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
+ t.put(LogicalDatastoreType.CONFIGURATION, nodeid, node1,true);\r
+ CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+ Futures.addCallback(f, new FutureCallback<Void>() {\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Could not write endpoint base container", t);\r
+ }\r
+\r
+ @Override\r
+ public void onSuccess(Void result) {\r
+ }\r
+ });\r
+ }\r
+ }\r
}\r
- else\r
- {\r
- WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
- if (userId != null && node.getNodeId() !=null)\r
- {\r
-// NodeBuilder nodeBuilder = new NodeBuilder();\r
-// nodeBuilder.setNodeId(node.getNodeId());\r
-// nodeBuilder.setNodeId(node.getNodeId());\r
-// nodeBuilder.setNodeName(node.getNodeName());\r
-// nodeBuilder.setSubNode(node.getSubNode());\r
-// nodeBuilder.setProperty(node.getProperty());\r
-// Node node1 = nodeBuilder.build();\r
-\r
- Node node1 = new NodeBuilder(node).build();\r
- NodeKey nodeKey = new NodeKey(node.getKey());\r
-\r
- UserKey userKey = new UserKey(userId);\r
-\r
- InstanceIdentifier<Node> nodeid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Objects.class).child(Node.class,nodeKey).build();\r
- t.put(LogicalDatastoreType.CONFIGURATION, nodeid, node1,true);\r
- CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
- Futures.addCallback(f, new FutureCallback<Void>() {\r
- @Override\r
- public void onFailure(Throwable t) {\r
- LOG.error("Could not write endpoint base container", t);\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkInstance(UserId userId, Node node){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+\r
+ if (user!=null){\r
+ if (user.getObjects()!=null){\r
+ if (user.getObjects().getNode()!=null){\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ for (Node node1 : nodeList){\r
+ if (node1.getNodeId().equals(node.getNodeId())){\r
+ if ( !node1.getNodeName().equals(node.getNodeName())) {\r
+ errorInfo = "The node name should not be changed.";\r
+ break;\r
+ }\r
+ if (!node1.getNodeType().equals(node.getNodeType())){\r
+ errorInfo = "The node type should not be changed.";\r
+ break;\r
+ }\r
+ }\r
}\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
\r
- @Override\r
- public void onSuccess(Void result) {\r
+ private String checkDefinition(Node node){\r
+ String errorInfo = null;\r
+ fetchNodeDefinitions();\r
+ final Map<NodeType, NodeDefinition> map = getNodeDefinitions();\r
+ if (map.isEmpty()){\r
+ return "This type of Node has not been defined.";\r
+ }\r
+ else {\r
+ if (map.containsKey(node.getNodeType())){\r
+ List<Property> nodeProperties = node.getProperty();\r
+ List<PropertyDefinition> nodePropertyDefinitions = map.get(node.getNodeType()).getPropertyDefinition();\r
+\r
+ if (nodeProperties != null && nodePropertyDefinitions == null){\r
+ errorInfo = "This type of node has no properties.";\r
+ }\r
+ else if (nodeProperties != null && nodePropertyDefinitions != null){\r
+ errorInfo = checkProperty(nodeProperties, nodePropertyDefinitions);\r
+ if (errorInfo != null){\r
}\r
- });\r
+ else {\r
+ errorInfo = checkPredefine(nodeProperties);\r
+ }\r
+ }\r
+ }\r
+ else {\r
+ return "This type of Node has not been defined.";\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkProperty(List<Property> nodeProperties, List<PropertyDefinition> nodePropertyDefinitions){\r
+ Boolean propertyHasDefine = false;\r
+ String errorInfo = null;\r
+\r
+ for (Property property : nodeProperties){\r
+ if (errorInfo != null){\r
+ break;\r
+ }\r
+ else{\r
+ for (PropertyDefinition propertydefinition : nodePropertyDefinitions){\r
+ if (property.getPropertyName().equals(propertydefinition.getPropertyName())){\r
+ propertyHasDefine = true;\r
+ PropertyValues propertyValues = property.getPropertyValues();\r
+ PropertyDefinition.PropertyValueType propertyValueType = propertydefinition.getPropertyValueType();\r
+\r
+ if (propertyValues != null && propertyValueType != null){\r
+ if (propertydefinition.getIsReadOnly()!=null\r
+ && PropertyDefinition.IsReadOnly.ReadOnly == propertydefinition.getIsReadOnly()){\r
+ if (propertydefinition.getIsRequired().getIntValue() == 1){\r
+ errorInfo = "The property "+ property.getPropertyName().getValue()+" is readonly, can not be written.";\r
+ break;\r
+ }\r
+ }\r
+ else if (propertyValueType.getIntValue() == 0 && !(propertyValues.getIntValue() == null\r
+ && propertyValues.getStringValue() != null && propertyValues.getRangeValue() == null)){\r
+ errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be string";\r
+ break;\r
+ }\r
+ else if (propertyValueType.getIntValue() == 1 && !(propertyValues.getIntValue() != null\r
+ && propertyValues.getStringValue() == null && propertyValues.getRangeValue() == null)){\r
+ errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be integer";\r
+ break;\r
+ }\r
+ else if (propertyValueType.getIntValue() == 2 && !(propertyValues.getIntValue() == null\r
+ && propertyValues.getStringValue() == null && propertyValues.getRangeValue() != null)){\r
+ errorInfo = "The property value type "+property.getPropertyName().getValue()+" should be range";\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ if (!propertyHasDefine){\r
+ errorInfo = "The property "+property.getPropertyName().getValue()+" has not been defined.";\r
+ }\r
+ }\r
+ }\r
+\r
+ if (errorInfo == null){\r
+ Boolean requiredProperty = false;\r
+ for (PropertyDefinition propertyDefinition : nodePropertyDefinitions){\r
+ if (propertyDefinition.getIsRequired()!=null){\r
+ if (propertyDefinition.getIsRequired().getIntValue() ==0){\r
+ for (Property property: nodeProperties){\r
+ if (property.getPropertyName().equals(propertyDefinition.getPropertyName())){\r
+ requiredProperty = true;\r
+ }\r
+ }\r
+ if (!requiredProperty){\r
+ errorInfo = "The required property "+ propertyDefinition.getPropertyName().getValue() + "is not included in the intent.";\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkPredefine(List<Property> nodeProperties){\r
+ String errorInfo = null;\r
+ for (Property property : nodeProperties){\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.mac_address)){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ Boolean legalValue = true;\r
+ for (StringValue stringValue : stringValues){\r
+ legalValue = valueCheck.checkMac(stringValue.getValue());\r
+ }\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.mac_address + " is not legal.";\r
+ }\r
+ }\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.ip_address)){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ Boolean legalValue = true;\r
+ for (StringValue stringValue : stringValues){\r
+ if (stringValue.getValue().contains("/")){\r
+ legalValue = valueCheck.checkIpPrefix(stringValue.getValue());\r
+ }\r
+ else {\r
+ legalValue = valueCheck.checkIpAddress(stringValue.getValue());\r
+ }\r
+ }\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.ip_address + " is not legal.";\r
+ }\r
+ }\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.gateway_ip)){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ Boolean legalValue = true;\r
+ for (StringValue stringValue : stringValues){\r
+ legalValue = valueCheck.checkIpAddress(stringValue.getValue());\r
+ }\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.gateway_ip + " is not legal.";\r
+ }\r
+ }\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.ac_info_network)){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ Boolean legalValue = true;\r
+ for (StringValue stringValue : stringValues){\r
+ if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){\r
+ errorInfo = "The " + NEMOConstants.ac_info_network + " is not legal.";\r
+ }\r
+ }\r
+ }\r
+ if (property.getPropertyName().getValue().equals(NEMOConstants.operating_mode)){\r
+ List<StringValue> stringValues = property.getPropertyValues().getStringValue();\r
+ Boolean legalValue = true;\r
+ for (StringValue stringValue : stringValues){\r
+ if (!(stringValue.getValue().equals(NEMOConstants.layer2)||stringValue.getValue().equals(NEMOConstants.layer3))){\r
+ errorInfo = "The " + NEMOConstants.operating_mode + " is not legal.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private void fetchNodeDefinitions(){\r
+ InstanceIdentifier<NodeDefinitions> nodedefinitionId = InstanceIdentifier.builder(NodeDefinitions.class).build();\r
+ ListenableFuture<Optional<NodeDefinitions>> nodedefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, nodedefinitionId);\r
+ Futures.addCallback(nodedefinitionFuture, new FutureCallback<Optional<NodeDefinitions>>() {\r
+ @Override\r
+ public void onSuccess(Optional<NodeDefinitions> result){\r
+ setNodeDefinitionListFuture(result.get().getNodeDefinition());\r
+ }\r
+\r
+ @Override\r
+ public void onFailure(Throwable t){\r
+ LOG.error("Can not read node definitions information.", t);\r
+ }\r
+ });\r
+ return ;\r
+ }\r
+\r
+ private void setNodeDefinitionListFuture(List<NodeDefinition> nodeDefinitionList) {\r
+ this.nodeDefinitionListFuture.set(nodeDefinitionList);\r
+ }\r
+\r
+ private List<NodeDefinition> getNodeDefinitionList(){\r
+ try{\r
+ return nodeDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+ }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ private Map<NodeType, NodeDefinition> getNodeDefinitions(){\r
+ final Map<NodeType, NodeDefinition> nodeDefinitionMap = new HashMap<NodeType, NodeDefinition>();\r
+ final List<NodeDefinition> nodeDefinitionList = getNodeDefinitionList();\r
+ if (nodeDefinitionList!=null){\r
+ for (NodeDefinition nodeDefinition : nodeDefinitionList){\r
+ nodeDefinitionMap.put(nodeDefinition.getNodeType(),nodeDefinition);\r
}\r
}\r
- return null;\r
+ return nodeDefinitionMap;\r
}\r
\r
}\r
*/\r
package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.*;\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.OperationInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ActionName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ParameterName;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.condition.parameter.definition.ParameterMatchPatterns;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
\r
/**\r
* Created by z00293636 on 2015/8/31.\r
\r
private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
- private OperationDefinitionCheck operationDefinitionCheck;\r
- private OperationInstanceCheck operationInstanceCheck;\r
+ private final SettableFuture<List<ActionDefinition>> actionDefinitionListFuture = SettableFuture.create();\r
+ private final SettableFuture<List<ConditionParameterDefinition>> conditionParameterDefinitionListFuture = SettableFuture.create();\r
+ private ValueCheck valueCheck;\r
private static final Logger LOG = LoggerFactory.getLogger(UpdateOperation.class);\r
\r
- public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
+ public UpdateOperation(DataBroker dataBroker, TenantManage tenantManage){\r
this.dataBroker = dataBroker;\r
this.tenantManage = tenantManage;\r
- operationDefinitionCheck = new OperationDefinitionCheck(dataBroker);\r
- operationInstanceCheck = new OperationInstanceCheck(tenantManage);\r
+ valueCheck = new ValueCheck();\r
}\r
\r
- public String OperationHandling(UserId userId, Operation operation)\r
- {\r
- String errorDefinition = operationDefinitionCheck.CheckDefinition(operation);\r
- String errorInstance = operationInstanceCheck.checkOperationInstance(userId, operation);\r
+ public String OperationHandling(UserId userId, Operation operation){\r
+ String errorInfo = null;\r
+ errorInfo = checkDefinition(operation);\r
+ if (errorInfo!=null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ errorInfo = checkInstance(userId,operation);\r
+ if (errorInfo!=null){\r
+ return errorInfo;\r
+ }\r
+ else {\r
+ WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
+ if (userId != null && operation.getOperationId() != null)\r
+ {\r
+ Operation operation1 = new OperationBuilder(operation).build();\r
+ OperationKey operationKey = new OperationKey(operation.getOperationId());\r
\r
- if (errorDefinition != null)\r
- {\r
- return errorDefinition;\r
+ UserKey userKey = new UserKey(userId);\r
+\r
+ InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
+ t.put(LogicalDatastoreType.CONFIGURATION, operationid, operation1,true);\r
+ CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
+ Futures.addCallback(f, new FutureCallback<Void>() {\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Could not write endpoint base container", t);\r
+ }\r
+\r
+ @Override\r
+ public void onSuccess(Void result) {\r
+\r
+ }\r
+ });\r
+ }\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private String checkInstance(UserId userId, Operation operation){\r
+ String errorInfo = null;\r
+ tenantManage.fetchVNSpace(userId);\r
+ User user = tenantManage.getUser();\r
+\r
+ if (operation.getPriority()==null){\r
+ errorInfo = "The priority should not be empty.";\r
+ }\r
+ if (operation.getTargetObject()==null){\r
+ errorInfo = "The target should not be empty.";\r
}\r
- if (errorInstance != null)\r
+ if (operation.getTargetObject()!=null){\r
+ if (user!=null){\r
+ if (user.getObjects()!=null){\r
+ Boolean targetExist = false;\r
+ if (user.getObjects().getNode()!=null){\r
+ List<Node> nodeList = user.getObjects().getNode();\r
+ for (Node node : nodeList){\r
+ if (node.getNodeId().getValue().equals(operation.getTargetObject().getValue())){\r
+ targetExist = true;\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getConnection()!=null){\r
+ List<Connection> connectionList = user.getObjects().getConnection();\r
+ for (Connection connection : connectionList){\r
+ if (connection.getConnectionId().getValue().equals(operation.getTargetObject().getValue())){\r
+ targetExist = true;\r
+ }\r
+ }\r
+ }\r
+ if (user.getObjects().getFlow()!=null){\r
+ List<Flow> flowList = user.getObjects().getFlow();\r
+ for (Flow flow : flowList){\r
+ if (flow.getFlowId().getValue().equals(operation.getTargetObject().getValue())){\r
+ targetExist = true;\r
+ }\r
+ }\r
+ }\r
+ if (!targetExist){\r
+ errorInfo = "The target object is not exist.";\r
+ }\r
+ }\r
+ else {\r
+ errorInfo = "The target object is not exist.";\r
+ }\r
+ }\r
+ else {\r
+ errorInfo = "The target object is not exist.";\r
+ }\r
+ }\r
+ if (user!=null){\r
+ if (user.getOperations()!=null){\r
+ if (user.getOperations().getOperation()!=null){\r
+ List<Operation> operationList = user.getOperations().getOperation();\r
+ for (Operation operation1 : operationList){\r
+ if (operation.getOperationId().equals(operation1.getOperationId())){\r
+ if (!operation.getOperationName().equals(operation1.getOperationName())){\r
+ errorInfo="The operation name should not be changed.";\r
+ return errorInfo;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkDefinition(Operation operation){\r
+ fetchActionDefinitions();\r
+ fetchConditionParaDefinitions();\r
+ String errorInfo = null;\r
+\r
+ if (operation.getAction() != null )\r
{\r
- return errorInstance;\r
+ errorInfo = checkAction(operation);\r
}\r
- else\r
+ if (errorInfo == null && operation.getConditionSegment() != null)\r
{\r
- WriteTransaction t = dataBroker.newWriteOnlyTransaction();\r
- if (userId != null && operation.getOperationId() != null)\r
- {\r
-// OperationBuilder operationBuilder = new OperationBuilder();\r
-// operationBuilder.setOperationId(operation.getOperationId());\r
-// operationBuilder.setOperationName(operation.getOperationName());\r
-// operationBuilder.setConditionSegment(operation.getConditionSegment());\r
-// operationBuilder.setTargetObject(operationBuilder.getTargetObject());\r
-// operationBuilder.setAction(operation.getAction());\r
-// operationBuilder.setPriority(operation.getPriority());\r
-//\r
-// Operation operation1 = operationBuilder.build();\r
- Operation operation1 = new OperationBuilder(operation).build();\r
- OperationKey operationKey = new OperationKey(operation.getOperationId());\r
-\r
- UserKey userKey = new UserKey(userId);\r
-\r
- InstanceIdentifier<Operation> operationid = InstanceIdentifier.builder(Users.class).child(User.class, userKey).child(Operations.class).child(Operation.class,operationKey).build();\r
- t.put(LogicalDatastoreType.CONFIGURATION, operationid, operation1,true);\r
- CheckedFuture<Void, TransactionCommitFailedException> f = t.submit();\r
- Futures.addCallback(f, new FutureCallback<Void>() {\r
- @Override\r
- public void onFailure(Throwable t) { \r
- LOG.error("Could not write endpoint base container", t);\r
+ errorInfo = checkCondition(operation);\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkAction(Operation operation){\r
+ String errorInfo = null;\r
+\r
+ fetchActionDefinitions();\r
+ Map<ActionName, ActionDefinition> actionDefinitionMap = getActionDefinition();\r
+ if (operation.getAction()!=null){\r
+ if (actionDefinitionMap.isEmpty()){\r
+ return "The action type has not been defined.";\r
+ }\r
+ else {\r
+ for (Action action : operation.getAction()){\r
+ if (actionDefinitionMap.containsKey(action.getActionName())){\r
+ ParameterValues parameterValues = action.getParameterValues();\r
+ ActionDefinition.ParameterValueType parameterValueType = actionDefinitionMap.get(action.getActionName()).getParameterValueType();\r
+\r
+ if (parameterValues != null && parameterValueType != null)\r
+ {\r
+ if (parameterValueType.getIntValue() == 0 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() != null && parameterValues.getRangeValue() == null)) {\r
+ errorInfo = "The value type of" + action.getActionName().toString() + "should be string.";\r
+ break;\r
+ }\r
+ if (parameterValueType.getIntValue() == 1 && !(parameterValues.getIntValue() != null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() == null)) {\r
+ errorInfo = "The value type of" + action.getActionName().toString() + "should be integer.";\r
+ break;\r
+ }\r
+ if (parameterValueType.getIntValue() == 2 && !(parameterValues.getIntValue() == null && parameterValues.getStringValue() == null && parameterValues.getRangeValue() != null)) {\r
+ errorInfo = "The value type of" + action.getActionName().toString() + "should be range.";\r
+ break;\r
+ }\r
+ }\r
}\r
+ else {\r
+ return "The action type has not been defined.";\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return errorInfo;\r
+ }\r
+\r
+ private String checkCondition(Operation operation){\r
+ String errorInfo = null;\r
+ fetchConditionParaDefinitions();\r
+ Map<ParameterName, ConditionParameterDefinition> conditionParameterDefinitionMap = getParameterMatchPattern();\r
+ if (operation.getConditionSegment()!=null){\r
+ if (conditionParameterDefinitionMap.isEmpty()){\r
+ return "This condition has not been defined in data store.";\r
+ }\r
+ else {\r
+ for (ConditionSegment conditionSegment :operation.getConditionSegment()){\r
+ if (conditionParameterDefinitionMap.containsKey(conditionSegment.getConditionParameterName())){\r
+ ConditionParameterDefinition conditionParameterDefinition = conditionParameterDefinitionMap.get(conditionSegment.getConditionParameterName());\r
+\r
+ if (conditionSegment.getConditionParameterMatchPattern() != null)\r
+ {\r
+ if (conditionParameterDefinition.getParameterMatchPatterns() != null)\r
+ {\r
+ List<ParameterMatchPatterns.ParameterMatchPattern> conditionParameterMatchPatterns = conditionParameterDefinition.getParameterMatchPatterns().getParameterMatchPattern();\r
+ if (conditionParameterMatchPatterns != null)\r
+ {\r
+ Boolean matchpatternexist = false;\r
+ for (ParameterMatchPatterns.ParameterMatchPattern parameterMatchPattern : conditionParameterMatchPatterns)\r
+ {\r
+ if (parameterMatchPattern.getIntValue() == conditionSegment.getConditionParameterMatchPattern().getIntValue())\r
+ {\r
+ matchpatternexist = true;\r
+ break;\r
+ }\r
+ }\r
+ if (!matchpatternexist)\r
+ {\r
+ errorInfo = "The match pattern has not defined in the condition.";\r
+ }\r
+ }\r
+ else\r
+ {\r
+ errorInfo = "There are no match pattern in match pattrn list.";\r
+ break;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ errorInfo = "No match patterns have been defined in data store.";\r
+ break;\r
+ }\r
+ }\r
+ if (conditionSegment.getConditionParameterTargetValue() != null)\r
+ {\r
+ if (conditionParameterDefinition.getParameterValueType() != null)\r
+ {\r
+ ConditionParameterTargetValue conditionParameterTargetValue = conditionSegment.getConditionParameterTargetValue();\r
+ ConditionParameterDefinition.ParameterValueType parameterValueType = conditionParameterDefinition.getParameterValueType();\r
+\r
+ if (parameterValueType.getIntValue() == 0 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() != null && conditionParameterTargetValue.getRangeValue() == null)) {\r
+ errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be string.";\r
+ break;\r
+ }\r
+ if (parameterValueType.getIntValue() == 1 && !(conditionParameterTargetValue.getIntValue() != null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() == null)) {\r
+ errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be integer.";\r
+ break;\r
+ }\r
+ if (parameterValueType.getIntValue() == 2 && !(conditionParameterTargetValue.getIntValue() == null && conditionParameterTargetValue.getStringValue() == null && conditionParameterTargetValue.getRangeValue() != null)) {\r
+ errorInfo = "The value type of " + conditionSegment.getConditionParameterName().getValue() + " should be range.";\r
+ break;\r
+ }\r
\r
- @Override\r
- public void onSuccess(Void result) {\r
- \r
+ }\r
+ }\r
+ if (conditionSegment.getConditionParameterName().getValue().equals(NEMOConstants.time)){\r
+ Boolean legalValue = valueCheck.checkTime(conditionSegment.getConditionParameterTargetValue().getStringValue());\r
+ if (!legalValue){\r
+ errorInfo = "The " + NEMOConstants.time + " is not legal.";\r
+ break;\r
+ }\r
+ }\r
}\r
- });\r
+ else {\r
+ return "This condition has not been defined in data store.";\r
+ }\r
+ }\r
}\r
}\r
- return null;\r
+ return errorInfo;\r
+ }\r
+\r
+ private void fetchActionDefinitions(){\r
+ InstanceIdentifier<ActionDefinitions> actiondefinitionId = InstanceIdentifier.builder(ActionDefinitions.class).build();\r
+ ListenableFuture<Optional<ActionDefinitions>> actiondefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, actiondefinitionId);\r
+ Futures.addCallback(actiondefinitionFuture, new FutureCallback<Optional<ActionDefinitions>>() {\r
+ @Override\r
+ public void onSuccess(Optional<ActionDefinitions> result) {\r
+ setActionDefinitionListFuture( result.get().getActionDefinition());\r
+ }\r
+\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Can not read action definition information.", t);\r
+ }\r
+ });\r
+ return ;\r
+ }\r
+\r
+ private void fetchConditionParaDefinitions(){\r
+ InstanceIdentifier<ConditionParameterDefinitions> conditionparadefinitionId = InstanceIdentifier.builder(ConditionParameterDefinitions.class).build();\r
+ ListenableFuture<Optional<ConditionParameterDefinitions>> conditionparadefinitionFuture = dataBroker.newReadOnlyTransaction().read(LogicalDatastoreType.CONFIGURATION, conditionparadefinitionId);\r
+ Futures.addCallback(conditionparadefinitionFuture, new FutureCallback<Optional<ConditionParameterDefinitions>>() {\r
+ @Override\r
+ public void onSuccess(Optional<ConditionParameterDefinitions> result) {\r
+ setConditionParameterDefinitionListFuture(result.get().getConditionParameterDefinition());\r
+ }\r
+\r
+ @Override\r
+ public void onFailure(Throwable t) {\r
+ LOG.error("Can not read condition parameter definition information.", t);\r
+ }\r
+ });\r
+ return ;\r
+ }\r
+\r
+ private void setConditionParameterDefinitionListFuture(List<ConditionParameterDefinition> conditionParameterDefinitions){\r
+ this.conditionParameterDefinitionListFuture.set(conditionParameterDefinitions);\r
+ }\r
+\r
+ private void setActionDefinitionListFuture(List<ActionDefinition> actionDefinitions){\r
+ this.actionDefinitionListFuture.set(actionDefinitions);\r
+ }\r
+\r
+ private List<ConditionParameterDefinition> getConditionParameterDefinitionList(){\r
+ try{\r
+ return conditionParameterDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+ }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ private List<ActionDefinition> getActionDefinitionList(){\r
+ try{\r
+ return actionDefinitionListFuture.get(1, TimeUnit.SECONDS);\r
+ }catch (InterruptedException | ExecutionException | TimeoutException e) {\r
+ LOG.error("Cannot read role information.", e);\r
+ return null;\r
+ }\r
+ }\r
+\r
+ private Map<ParameterName, ConditionParameterDefinition> getParameterMatchPattern(){\r
+ List<ConditionParameterDefinition> conditionParameterDefinitions = getConditionParameterDefinitionList();\r
+ Map<ParameterName, ConditionParameterDefinition> conditionParameterDefinitionMap = new HashMap<ParameterName, ConditionParameterDefinition>();\r
+ if (conditionParameterDefinitions!=null){\r
+ for (ConditionParameterDefinition conditionParameterDefinition : conditionParameterDefinitions){\r
+ conditionParameterDefinitionMap.put(conditionParameterDefinition.getParameterName(),conditionParameterDefinition);\r
+ }\r
+ }\r
+ return conditionParameterDefinitionMap;\r
+ }\r
+\r
+ private Map<ActionName, ActionDefinition> getActionDefinition(){\r
+ List<ActionDefinition> actionDefinitions = getActionDefinitionList();\r
+ Map<ActionName,ActionDefinition> actionDefinitionMap = new HashMap<ActionName, ActionDefinition>();\r
+ if (actionDefinitionMap!=null){\r
+ for (ActionDefinition actionDefinition : actionDefinitions){\r
+ actionDefinitionMap.put(actionDefinition.getActionName(),actionDefinition);\r
+ }\r
+ }\r
+ return actionDefinitionMap;\r
}\r
}\r
\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.ResultInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;\r
\r
*/\r
public class UpdateResult {\r
\r
- private DataBroker dataBroker;\r
private TenantManage tenantManage;\r
- private ResultDefinitionCheck resultDefinitionCheck;\r
- private ResultInstanceCheck resultInstanceCheck;\r
\r
- public UpdateResult(DataBroker dataBroker, TenantManage tenantManage)\r
- {\r
- this.dataBroker = dataBroker;\r
+ public UpdateResult(DataBroker dataBroker, TenantManage tenantManage){\r
this.tenantManage = tenantManage;\r
- resultDefinitionCheck = new ResultDefinitionCheck();\r
- resultInstanceCheck = new ResultInstanceCheck(tenantManage);\r
}\r
\r
public String ResultHandling(UserId userId, Results results)\r
{\r
- String errorDefinition = resultDefinitionCheck.CheckDefinition(results);\r
- String errorInstance = resultInstanceCheck.checkResultInstance(userId,results);\r
-\r
- if (errorDefinition!= null)\r
- {\r
- return errorDefinition;\r
- }\r
- else if (errorInstance != null)\r
- {\r
- return errorInstance;\r
- }\r
- else\r
- {\r
- //todo\r
- }\r
return null;\r
}\r
}\r
--- /dev/null
+/*\r
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
+ *\r
+ * This program and the accompanying materials are made available under the\r
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
+ * and is available at http://www.eclipse.org/legal/epl-v10.html\r
+ */\r
+package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
+\r
+/**\r
+ * Created by z00293636 on 2015/11/26.\r
+ */\r
+public class ValueCheck {\r
+ public boolean checkMac(String macAddress){\r
+ Boolean legalValue = true;\r
+ String[] value = macAddress.split(":");\r
+ if (value.length!=6){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ for (int i=0; i<value.length;i++){\r
+ if (value[i].length()!=2){\r
+ legalValue= false;\r
+ }\r
+ else {\r
+ for (int j=0;j<value[i].length();j++){\r
+ char cc = value[i].charAt(j);\r
+ if(!(cc=='0'||cc=='1'||cc=='2'||cc=='3'||cc=='4'||cc=='5'||cc=='6'||cc=='7'||cc=='8'||cc=='9'\r
+ ||cc=='A'||cc=='B'||cc=='C'||cc=='D'||cc=='E'||cc=='F'\r
+ ||cc=='a'||cc=='b'||cc=='c'||cc=='c'||cc=='d'||cc=='e'||cc=='f')){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ return legalValue;\r
+ }\r
+\r
+ public Boolean checkIpPrefix(String ipPrefix){\r
+ Boolean legalValue = true;\r
+ String[] valuePrefix = ipPrefix.split("/");\r
+ if (valuePrefix.length!=2){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ if (Integer.parseInt(valuePrefix[1])>32||Integer.parseInt(valuePrefix[1])<1){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ legalValue = checkIpAddress(valuePrefix[0]);\r
+ }\r
+ }\r
+ return legalValue;\r
+ }\r
+\r
+ public Boolean checkIpAddress(String ipAddress){\r
+ Boolean legalValue = true;\r
+ String[] value = ipAddress.split("\\.");\r
+ if (value.length!=4){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ for (int i=0;i<value.length;i++){\r
+ if (Integer.parseInt(value[i])>255||Integer.parseInt(value[i])<0){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ }\r
+ return legalValue;\r
+ }\r
+\r
+ public Boolean checkTime(String time){\r
+ Boolean legalValue = true;\r
+ String[] value = time.split(",");\r
+ if (value.length == 1){\r
+ String[] hourMS = value[0].split(":");\r
+ if (hourMS.length!=3){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ }\r
+ if (value.length == 2){\r
+ String[] yearMD = value[0].split("-");\r
+ if (yearMD.length!=3){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ if (Integer.parseInt(yearMD[0])<1){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(yearMD[1])>12||Integer.parseInt(yearMD[1])<1){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(yearMD[1])==1||Integer.parseInt(yearMD[1])==3||Integer.parseInt(yearMD[1])==5||Integer.parseInt(yearMD[1])==7\r
+ ||Integer.parseInt(yearMD[1])==8||Integer.parseInt(yearMD[1])==10||Integer.parseInt(yearMD[1])==2){\r
+ if (Integer.parseInt(yearMD[2])>31||Integer.parseInt(yearMD[2])<1){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ if (Integer.parseInt(yearMD[1])==4||Integer.parseInt(yearMD[1])==6||Integer.parseInt(yearMD[1])==9\r
+ ||Integer.parseInt(yearMD[1])==11){\r
+ if (Integer.parseInt(yearMD[2])>30||Integer.parseInt(yearMD[2])<1){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ if (Integer.parseInt(yearMD[1])==2){\r
+ if (Integer.parseInt(yearMD[2])>28||Integer.parseInt(yearMD[2])<1){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ }\r
+ String[] hourMS = value[1].split(":");\r
+ if (hourMS.length!=3){\r
+ legalValue = false;\r
+ }\r
+ else {\r
+ if (Integer.parseInt(hourMS[0])>23||Integer.parseInt(hourMS[0])<0){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(hourMS[1])>59||Integer.parseInt(hourMS[1])<0){\r
+ legalValue = false;\r
+ }\r
+ if (Integer.parseInt(hourMS[2])>59||Integer.parseInt(hourMS[2])<0){\r
+ legalValue = false;\r
+ }\r
+ }\r
+ }\r
+ return legalValue;\r
+ }\r
+}\r
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user;\r
-\r
-import static org.mockito.Mockito.mock;\r
-import static org.mockito.Mockito.verify;\r
-import junit.framework.TestCase;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.AdvancedNemoQueryInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.BeginTransactionInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.EndTransactionInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.LanguageStyleNemoRequestInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoDeleteInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoUpdateInput;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/12.\r
- */\r
-public class UserManagerTest extends TestCase {\r
- private UserManager userManagerTest;\r
- private AdvancedNemoQueryInput advancedNemoQueryInput;\r
- private BeginTransactionInput beginTransactionInput;\r
- private EndTransactionInput endTransactionInput;\r
- private LanguageStyleNemoRequestInput languageStyleNemoRequestInput;\r
- private RegisterUserInput registerUserInput;\r
- private StructureStyleNemoDeleteInput structureStyleNemoDeleteInput;\r
- private StructureStyleNemoUpdateInput structureStyleNemoUpdateInput;\r
-\r
-\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- userManagerTest = mock(UserManager.class);\r
- advancedNemoQueryInput = mock(AdvancedNemoQueryInput.class);\r
- beginTransactionInput = mock(BeginTransactionInput.class);\r
- endTransactionInput = mock(EndTransactionInput.class);\r
- languageStyleNemoRequestInput = mock(LanguageStyleNemoRequestInput.class);\r
- registerUserInput = mock(RegisterUserInput.class);\r
- structureStyleNemoDeleteInput = mock(StructureStyleNemoDeleteInput.class);\r
- structureStyleNemoUpdateInput = mock(StructureStyleNemoUpdateInput.class);\r
- }\r
-\r
- @org.junit.Test\r
- public void testAdvancedNemoQuery() throws Exception {\r
- userManagerTest.advancedNemoQuery(advancedNemoQueryInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).advancedNemoQuery(advancedNemoQueryInput);\r
- }\r
-\r
- @org.junit.Test\r
- public void testBeginTransaction() throws Exception {\r
- userManagerTest.beginTransaction(beginTransactionInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).beginTransaction(beginTransactionInput);\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testEndTransaction() throws Exception {\r
- userManagerTest.endTransaction(endTransactionInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).endTransaction(endTransactionInput);\r
- }\r
-\r
- @org.junit.Test\r
- public void testLanguageStyleNemoRequest() throws Exception {\r
- userManagerTest.languageStyleNemoRequest(languageStyleNemoRequestInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).languageStyleNemoRequest(languageStyleNemoRequestInput);\r
- }\r
-\r
- @org.junit.Test\r
- public void testRegisterUser() throws Exception {\r
- userManagerTest.registerUser(registerUserInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).registerUser(registerUserInput);\r
- }\r
-\r
- @org.junit.Test\r
- public void testStructureStyleNemoDelete() throws Exception {\r
- userManagerTest.structureStyleNemoDelete(structureStyleNemoDeleteInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).structureStyleNemoDelete(structureStyleNemoDeleteInput);\r
- }\r
-\r
- @org.junit.Test\r
- public void structureStyleNemoUpdate() throws Exception {\r
- userManagerTest.structureStyleNemoUpdate(structureStyleNemoUpdateInput);\r
- Assert.assertNotNull(userManagerTest);\r
- verify(userManagerTest).structureStyleNemoUpdate(structureStyleNemoUpdateInput);\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserInstance;
-
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class AAATest extends TestCase {
- private AAA aaa;
- private TenantManage tenantManage;
- private UserInstance userInstance;
-
- @Override
- @Before
- public void setUp() throws Exception {
- tenantManage = mock(TenantManage.class);
- aaa = new AAA(tenantManage);
-
- userInstance = mock(UserInstance.class);
- }
-
- @Test
- public void testCheckUser() throws Exception {
- when(tenantManage.getUsers()).thenReturn(new HashMap<UserId, User>());
- String acutal = aaa.checkUser(userInstance);
- String expected = "The user is not exist.";
- verify(tenantManage).getUsers();
- Assert.assertNotNull(aaa);
- Assert.assertEquals(expected,acutal);
- }
-}
+++ /dev/null
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.HashMap;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class RegisterUserTest extends TestCase {
- private RegisterUser registerUser;
- private TenantManage tenantManage;
- private RegisterUserInput input;
- @Override
- @Before
- public void setUp() throws Exception {
- tenantManage = mock(TenantManage.class);
- registerUser = new RegisterUser(tenantManage);
-
- input = mock(RegisterUserInput.class);
- }
-
- @Test
- public void testRegisterUser() throws Exception {
-
- //no data test
- when(tenantManage.getUserRoles()).thenReturn(null);//return nothing
- when(tenantManage.getUsers()).thenReturn(null);
- registerUser.registerUser(input);
-
- //data exists . and test other branch
- when(tenantManage.getUserRoles()).thenReturn(new HashMap<UserRoleName, UserRole>());//return nothing
- when(tenantManage.getUsers()).thenReturn(new HashMap<UserId, User>());
- when(input.getUserRole()).thenReturn(mock(UserRoleName.class));
- registerUser.registerUser(input);
-
- verify(tenantManage,times(2)).getUserRoles();
- verify(tenantManage,times(2)).getUsers();
- Assert.assertNotNull(tenantManage);
- Assert.assertNotNull(registerUser);
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.tenantmanager;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-/**
- * Created by zhangmeng on 2015/11/20.
- */
-public class TenantManageTest extends TestCase {
- private TenantManage tenantManage;
- private DataBroker dataBroker;
- private Map<UserRoleName, UserRole> userRoles;
- private Map<UserId, User> users ;
- private User user;
- @Override
- @Before
- public void setUp() throws Exception {
- userRoles = new HashMap<UserRoleName, UserRole>();
- users = new HashMap<UserId, User>();
- user = mock(User.class);
-
- dataBroker = mock(DataBroker.class);
- tenantManage = new TenantManage(dataBroker);
- }
-
- @Test
- public void testGetUser() throws Exception {
- user = tenantManage.getUser();
- Assert.assertNotEquals(mock(User.class),user);
- }
-
- @Test
- public void testGetUserRoles() throws Exception {
- //ListenableFuture<Optional<UserRoles>> userRolesFuture = mock(ListenableFuture.class);
- CheckedFuture userRolesFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-// when(dataBroker.newReadOnlyTransaction().read(any(LogicalDatastoreType.class),
-// any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userRolesFuture);
- when(userRolesFuture.get()).thenReturn(Optional.absent());
- tenantManage.getUserRoles();
- verify(dataBroker).newReadOnlyTransaction();
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
- Assert.assertNotNull(tenantManage);
- }
-
- @Test
- public void testGetUsers() throws Exception {
- CheckedFuture usersFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
- when(usersFuture.get()).thenReturn(Optional.absent());
- tenantManage.getUsers();
- verify(dataBroker).newReadOnlyTransaction();
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
- Assert.assertNotNull(tenantManage);
- }
-
- @Test
- public void testFetchVNSpace() throws Exception {
- CheckedFuture usersFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(usersFuture);
- when(usersFuture.get()).thenReturn(Optional.absent());
- tenantManage.fetchVNSpace(mock(UserId.class));
- verify(dataBroker).newReadOnlyTransaction();
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
- Assert.assertNotNull(tenantManage);
- }
-
- @Test // As a parameter registerUserInput has no data , so the test case just test a small part
- public void testAddUser() throws Exception {
- RegisterUserInput registerUserInput = mock(RegisterUserInput.class);
- WriteTransaction writeTransaction = mock(WriteTransaction.class);
-
- when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
- when(registerUserInput.getUserId()).thenReturn(null);
- tenantManage.addUser(registerUserInput);
-
- CheckedFuture f = mock(CheckedFuture.class);
- when(registerUserInput.getUserId()).thenReturn(mock(UserId.class));
- when(writeTransaction.submit()).thenReturn(f);
- tenantManage.addUser(registerUserInput);
-
- verify(dataBroker,times(2)).newWriteOnlyTransaction();
- verify(registerUserInput,times(4)).getUserId();
- Assert.assertNotNull(tenantManage);
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.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
+++ /dev/null
-/*
-
-* Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
-
-*
-
-* This program and the accompanying materials are made available under the
-
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-
-*/
-package org.opendaylight.nemo.user.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);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager;
-
-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
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.RegisterUserInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserRoles;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-//import java.sql.Connection;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-/**\r
- * Created by Thomas Liu on 2015/11/20.\r
- */\r
-public class ConnectionInstanceCheckTest extends junit.framework.TestCase {\r
- private ConnectionInstanceCheck connectionInstanceCheckTest;\r
- private TenantManage tenantManage;\r
- private DataBroker dataBroker;\r
- private UserId userId,userId2;\r
- private Connection connection;\r
- private User user;\r
- private List<Node> nodes;\r
- private List<EndNode> endnodes;;\r
- private Objects object;\r
- private List<Connection> connlist;\r
- private ConnectionId connectionId,connectionId2;\r
- private ConnectionType connectionType,connectionType2;\r
- private ConnectionName connectionName,connectionName2;\r
- private NodeId nodeId,nodeId2;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- //dataBroker = mock(DataBroker.class);\r
- //tenantManage = new TenantManage(dataBroker);\r
- tenantManage = mock(TenantManage.class);\r
- connectionInstanceCheckTest = new ConnectionInstanceCheck(tenantManage);\r
- userId = mock(UserId.class);\r
- userId2 = mock(UserId.class);\r
- connection = mock(Connection.class);\r
- user = mock(User.class);\r
- nodes= new ArrayList<Node>();\r
- nodes.add(mock(Node.class));\r
- endnodes= new ArrayList<EndNode>();\r
- endnodes.add(mock(EndNode.class));\r
- object = mock(Objects.class);\r
- connlist= new ArrayList<Connection>();\r
- connlist.add(mock(Connection.class));\r
- connectionId = mock(ConnectionId.class);\r
- connectionId2 = mock(ConnectionId.class);\r
- connectionType = mock(ConnectionType.class);\r
- connectionType2 = mock(ConnectionType.class);\r
- connectionName = mock(ConnectionName.class);\r
- connectionName2 = mock(ConnectionName.class);\r
- nodeId = mock(NodeId.class);\r
- nodeId2 = mock(NodeId.class);\r
- }\r
-\r
-\r
- @org.junit.Test\r
- public void testCheckConnInstance() throws Exception {\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects().getConnection()).thenReturn(connlist);\r
- when(tenantManage.getUser().getObjects().getConnection()).thenReturn(connlist);\r
- when(connlist.get(0).getConnectionId()).thenReturn(connectionId);\r
- when(connection.getConnectionId()).thenReturn(connectionId2);\r
- //when(connectionId.equals(any(Class.class))).thenReturn(true);\r
- when(connlist.get(0).getConnectionType()).thenReturn(connectionType);\r
- when(connection.getConnectionType()).thenReturn(connectionType2);\r
- //when(connectionId.equals(any(Class.class))).thenReturn(false);\r
- when(connlist.get(0).getConnectionName()).thenReturn(connectionName);\r
- when(connection.getConnectionName()).thenReturn(connectionName2);\r
- //when(connectionId.equals(any(Class.class))).thenReturn(false);\r
- when(user.getObjects().getNode()).thenReturn(null);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage).fetchVNSpace(userId);\r
- verify(tenantManage,times(3)).getUser();\r
- verify(user,times(7)).getObjects();\r
- verify(user.getObjects(),times(2)).getConnection();\r
- verify(connlist.get(0)).getConnectionId();\r
- verify(connection).getConnectionId();\r
-\r
-\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects().getConnection()).thenReturn(null);\r
- when(user.getObjects().getNode()).thenReturn(nodes);\r
- when(connection.getEndNode()).thenReturn(endnodes);\r
- when(user.getObjects().getNode()).thenReturn(nodes);\r
- when(nodes.get(0).getNodeId()).thenReturn(nodeId);\r
- when(endnodes.get(0).getNodeId()).thenReturn(nodeId2);\r
- //when(nodeId.equals(endnodes.get(0).getNodeId())).thenReturn(true);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage,times(2)).fetchVNSpace(userId);\r
- verify(tenantManage,times(4)).getUser();\r
- verify(user,times(15)).getObjects();\r
- //verify(user,times(15)).getObjects().getConnection();\r
- //verify(user,times(15)).getObjects().getNode();\r
- verify(connection).getEndNode();\r
- //verify(user).getObjects().getNode();\r
- verify(nodes.get(0)).getNodeId();\r
- //verify(nodeId).equals(endnodes.get(0).getNodeId());\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(null);\r
- when(connection.getEndNode()).thenReturn(endnodes);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage,times(3)).fetchVNSpace(userId);\r
- verify(tenantManage,times(5)).getUser();\r
- verify(user,times(16)).getObjects();\r
- verify(connection,times(2)).getEndNode();\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(null);\r
- when(connection.getEndNode()).thenReturn(null);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage,times(4)).fetchVNSpace(userId);\r
- verify(tenantManage,times(6)).getUser();\r
- verify(user,times(17)).getObjects();\r
- verify(connection,times(3)).getEndNode();\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- when(connection.getEndNode()).thenReturn(endnodes);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage,times(5)).fetchVNSpace(userId);\r
- verify(tenantManage,times(7)).getUser();\r
- verify(connection,times(4)).getEndNode();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- when(connection.getEndNode()).thenReturn(null);\r
- connectionInstanceCheckTest.checkConnInstance(userId,connection);\r
- verify(tenantManage,times(6)).fetchVNSpace(userId);\r
- verify(tenantManage,times(8)).getUser();\r
- verify(connection,times(5)).getEndNode();\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowName;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/20.\r
- */\r
-public class FlowInstanceCheckTest extends junit.framework.TestCase {\r
- private TenantManage tenantManage;\r
- private FlowInstanceCheck flowInstanceCheckTest;\r
- private UserId userId;\r
- private Flow flow;\r
- private Objects object;\r
- private User user;\r
- private List<Flow> flowList;\r
- private FlowId flowid;\r
- private FlowName flowname;\r
-\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- tenantManage = mock(TenantManage.class);\r
- flowInstanceCheckTest = new FlowInstanceCheck(tenantManage);\r
- userId = mock(UserId.class);\r
- flow = mock(Flow.class);\r
- object = mock(Objects.class);\r
- user = mock(User.class);\r
- flowList = new ArrayList<Flow>();\r
- flowList.add(mock(Flow.class));\r
- flowid = mock(FlowId.class);\r
- flowname = mock(FlowName.class);\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testCheckFlowInstance() throws Exception {\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects().getFlow()).thenReturn(flowList);\r
- when(tenantManage.getUser().getObjects().getFlow()).thenReturn(flowList);\r
- when(flowList.get(0).getFlowId()).thenReturn(flowid);\r
- when(flow.getFlowId()).thenReturn(flowid);\r
- when(flowList.get(0).getFlowName()).thenReturn(flowname);\r
- when(flow.getFlowName()).thenReturn(flowname);\r
- flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
- verify(tenantManage).fetchVNSpace(userId);\r
- verify(tenantManage,times(3)).getUser();\r
- verify(user,times(5)).getObjects();\r
- verify(user.getObjects(),times(2)).getFlow();\r
- //verify(tenantManage,times(3)).getUser().getObjects().getFlow();\r
- verify(flowList.get(0)).getFlowId();\r
- verify(flow).getFlowId();\r
- verify(flowList.get(0)).getFlowName();\r
- verify(flow).getFlowName();\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
- verify(tenantManage,times(2)).fetchVNSpace(userId);\r
- verify(tenantManage,times(4)).getUser();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(null);\r
- flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
- verify(tenantManage,times(3)).fetchVNSpace(userId);\r
- verify(tenantManage,times(5)).getUser();\r
- verify(user,times(7)).getObjects();\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects().getFlow()).thenReturn(null);\r
- flowInstanceCheckTest.checkFlowInstance(userId,flow);\r
- verify(tenantManage,times(4)).fetchVNSpace(userId);\r
- verify(tenantManage,times(6)).getUser();\r
- verify(user,times(10)).getObjects();\r
- verify(user.getObjects(),times(3)).getFlow();\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/23.\r
- */\r
-public class NodeInstanceCheckTest extends junit.framework.TestCase {\r
- private NodeInstanceCheck nodeInstanceCheckTest;\r
- private TenantManage tenantManage;\r
- private UserId userId;\r
- private Node node;\r
- private User user;\r
- private List<Node> nodeList;\r
- private Objects object;\r
- private NodeId nodeId,nodeId2;\r
- private NodeType nodeType,nodeType2;\r
- private NodeName nodeName,nodeName2;\r
-\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- tenantManage = mock(TenantManage.class);\r
- nodeInstanceCheckTest = new NodeInstanceCheck(tenantManage);\r
- userId = mock(UserId.class);\r
- node = mock(Node.class);\r
- user = mock(User.class);\r
- object = mock(Objects.class);\r
- nodeList = new ArrayList<Node>();\r
- nodeType = mock(NodeType.class);\r
- nodeType2 = mock(NodeType.class);\r
- nodeId = mock(NodeId.class);\r
- nodeId2 = mock(NodeId.class);\r
- nodeName = mock(NodeName.class);\r
- nodeName2 = mock(NodeName.class);\r
- nodeList.add(mock(Node.class));\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testCheckNodeInstance() throws Exception {\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(nodeList.get(0).getNodeId()).thenReturn(nodeId);\r
- when(node.getNodeId()).thenReturn(nodeId2);\r
- when(nodeList.get(0).getNodeName()).thenReturn(nodeName);\r
- when(node.getNodeName()).thenReturn(nodeName2);\r
- when(nodeList.get(0).getNodeType()).thenReturn(nodeType);\r
- when(node.getNodeType()).thenReturn(nodeType2);\r
- nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
- verify(tenantManage).getUser();\r
- verify(user).getObjects();\r
- verify(object,times(2)).getNode();\r
- verify(nodeList.get(0)).getNodeId();\r
- verify(node).getNodeId();\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
- verify(tenantManage,times(2)).getUser();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(null);\r
- nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
- verify(tenantManage,times(3)).getUser();\r
- verify(user,times(2)).getObjects();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(object);\r
- when(object.getNode()).thenReturn(null);\r
- nodeInstanceCheckTest.checkNodeInstance(userId,node);\r
- verify(tenantManage,times(4)).getUser();\r
- verify(user,times(3)).getObjects();\r
- verify(object,times(3)).getNode();\r
-\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ObjectId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationName;\r
-\r
-\r
-\r
-import java.lang.annotation.Target;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/23.\r
- */\r
-public class OperationInstanceCheckTest extends junit.framework.TestCase {\r
- private OperationInstanceCheck perationInstanceCheckTest;\r
- private TenantManage tenantManage;\r
- private UserId userId;\r
- private Node node;\r
- private User user;\r
- private List<Connection> connectionList;\r
- private List<Flow> flowList;\r
- private Objects object;\r
- //private Operation operation;\r
- private ObjectId objectId;\r
- private List<Node> nodeList;\r
- private List<Operation> operationList;\r
- private Operation operation;\r
- private NodeId nodeId,nodeId2;\r
- private ConnectionId connectionId,connectionId2;\r
- private FlowId flowId,flowId2;\r
- private Operations operations;\r
- private OperationId operationId;\r
- private OperationName operationName;\r
-\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- tenantManage = mock(TenantManage.class);\r
- perationInstanceCheckTest = new OperationInstanceCheck(tenantManage);\r
- userId = mock(UserId.class);\r
- node = mock(Node.class);\r
- user = mock(User.class);\r
- object = mock(Objects.class);\r
- operation = mock(Operation.class);\r
- objectId = mock(ObjectId.class);\r
- nodeList = new ArrayList<Node>();\r
- nodeList.add(mock(Node.class));\r
- connectionList = new ArrayList<Connection>();\r
- connectionList.add(mock(Connection.class));\r
- flowList = new ArrayList<Flow>();\r
- flowList.add(mock(Flow.class));\r
- operationList = new ArrayList<Operation>();\r
- operationList.add(mock(Operation.class));\r
- nodeId = mock(NodeId.class);\r
- nodeId2 = mock(NodeId.class);\r
- connectionId = mock(ConnectionId.class);\r
- connectionId2 = mock(ConnectionId.class);\r
- flowId = mock(FlowId.class);\r
- flowId2 = mock(FlowId.class);\r
- operationId = mock(OperationId.class);\r
- operationName = mock(OperationName.class);\r
-\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testCheckOperationInstance() throws Exception {\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(objectId);\r
- when(user.getObjects()).thenReturn(null);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage).fetchVNSpace(userId);\r
- verify(tenantManage).getUser();\r
- verify(operation,times(2)).getTargetObject();\r
- verify(user,times(2)).getObjects();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(objectId);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects()).thenReturn(object);\r
-\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(nodeList.get(0).getNodeId()).thenReturn(nodeId);\r
- when(nodeId.getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject()).thenReturn(nodeId2);\r
- when(nodeId2.getValue()).thenReturn(new String("1"));\r
-\r
- when(object.getConnection()).thenReturn(connectionList);\r
- when(object.getConnection()).thenReturn(connectionList);\r
- when(connectionList.get(0).getConnectionId()).thenReturn(connectionId);\r
- when(connectionId.getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject()).thenReturn(connectionId2);\r
- when(connectionId2.getValue()).thenReturn(new String("1"));\r
-\r
- when(object.getFlow()).thenReturn(flowList);\r
- when(object.getFlow()).thenReturn(flowList);\r
- when(flowList.get(0).getFlowId()).thenReturn(flowId);\r
- when(flowId.getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject()).thenReturn(flowId2);\r
- when(flowId2.getValue()).thenReturn(new String("1"));\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(2)).fetchVNSpace(userId);\r
- verify(tenantManage,times(2)).getUser();\r
- verify(operation,times(7)).getTargetObject();\r
- verify(user,times(5)).getObjects();\r
- verify(object,times(2)).getNode();\r
- verify(nodeList.get(0)).getNodeId();\r
- verify(nodeId).getValue();\r
- verify(object,times(2)).getConnection();\r
- verify(connectionList.get(0)).getConnectionId();\r
- verify(connectionId).getValue();\r
- verify(object,times(2)).getFlow();\r
- verify(flowList.get(0)).getFlowId();\r
- verify(flowId).getValue();\r
- verify(flowId2,times(3)).getValue();\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(objectId);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects()).thenReturn(object);\r
-\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(object.getNode()).thenReturn(nodeList);\r
- when(nodeList.get(0).getNodeId().getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
- when(object.getConnection()).thenReturn(connectionList);\r
- when(object.getConnection()).thenReturn(connectionList);\r
- when(connectionList.get(0).getConnectionId().getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
- when(object.getFlow()).thenReturn(flowList);\r
- when(object.getFlow()).thenReturn(flowList);\r
- when(flowList.get(0).getFlowId().getValue()).thenReturn(new String("1"));\r
- when(operation.getTargetObject().getValue()).thenReturn(new String("2"));\r
-\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(3)).fetchVNSpace(userId);\r
- verify(tenantManage,times(3)).getUser();\r
- verify(operation,times(15)).getTargetObject();\r
- verify(user,times(8)).getObjects();\r
- verify(object,times(4)).getNode();\r
- verify(nodeList.get(0),times(3)).getNodeId();\r
- verify(nodeId,times(2)).getValue();\r
- verify(object,times(4)).getConnection();\r
- verify(connectionList.get(0),times(3)).getConnectionId();\r
- verify(connectionId,times(2)).getValue();\r
- verify(object,times(4)).getFlow();\r
- verify(flowList.get(0),times(3)).getFlowId();\r
- verify(flowId,times(2)).getValue();\r
- verify(flowId2,times(3)).getValue();\r
-\r
-/*\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(null);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getOperations()).thenReturn(operations);\r
- when(user.getOperations().getOperation()).thenReturn(operationList);\r
- when(tenantManage.getUser().getOperations().getOperation()).thenReturn(operationList);\r
- when(operationList.get(0).getOperationId()).thenReturn(operationId);\r
- when(operation.getOperationId()).thenReturn(operationId);\r
- when(operationList.get(0).getOperationName()).thenReturn(operationName);\r
- when(operation.getOperationName()).thenReturn(operationName);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);*/\r
-\r
-\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- when(operation.getTargetObject()).thenReturn(objectId);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(4)).fetchVNSpace(userId);\r
- verify(tenantManage,times(4)).getUser();\r
- verify(operation,times(16)).getTargetObject();\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- when(operation.getTargetObject()).thenReturn(null);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(5)).fetchVNSpace(userId);\r
- verify(tenantManage,times(5)).getUser();\r
- verify(operation,times(17)).getTargetObject();\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(null);\r
- when(operation.getTargetObject()).thenReturn(null);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(6)).fetchVNSpace(userId);\r
- verify(tenantManage,times(6)).getUser();\r
- verify(operation,times(18)).getTargetObject();\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(null);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getOperations()).thenReturn(null);\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(7)).fetchVNSpace(userId);\r
- verify(tenantManage,times(7)).getUser();\r
- verify(operation,times(20)).getTargetObject();\r
- verify(user,times(8)).getObjects();\r
- verify(user,times(2)).getOperations();\r
-\r
-\r
-\r
-\r
- doNothing().when(tenantManage).fetchVNSpace(userId);\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(operation.getTargetObject()).thenReturn(objectId);\r
- when(user.getObjects()).thenReturn(object);\r
- when(user.getObjects()).thenReturn(object);\r
-\r
- when(object.getNode()).thenReturn(null);\r
- when(object.getConnection()).thenReturn(null);\r
- when(object.getFlow()).thenReturn(null);\r
-\r
- perationInstanceCheckTest.checkOperationInstance(userId,operation);\r
- verify(tenantManage,times(8)).fetchVNSpace(userId);\r
- verify(tenantManage,times(8)).getUser();\r
- verify(operation,times(22)).getTargetObject();\r
- verify(user,times(11)).getObjects();\r
- verify(object,times(5)).getNode();\r
- verify(object,times(5)).getConnection();\r
- verify(object,times(5)).getFlow();\r
-\r
-\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.instancecheck;\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import static org.mockito.Mockito.*;\r
-import static org.junit.Assert.*;\r
-\r
-\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;\r
-\r
-import javax.xml.transform.Result;\r
-\r
-/**\r
- * Created by Thomas Liu on 2015/11/26.\r
- */\r
-public class ResultInstanceCheckTest extends junit.framework.TestCase {\r
-\r
- private ResultInstanceCheck resultInstanceCheckTest;\r
- private TenantManage tenantManage;\r
- private Results results;\r
- private UserId userId;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- tenantManage = mock(TenantManage.class);\r
- resultInstanceCheckTest = new ResultInstanceCheck(tenantManage);\r
- results = mock(Results.class);\r
- userId = mock(UserId.class);\r
- }\r
-\r
- @org.junit.Test\r
- public void testCheckResultInstance() throws Exception {\r
- resultInstanceCheckTest.checkResultInstance(userId,results);\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.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
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;
-import static org.mockito.Mockito.mock;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.util.List;
-import java.util.*;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import static org.mockito.Mockito.*;
-public class DeleteConnectionTest{
- private DataBroker dataBroker;
- private TenantManage tenantManage;
- private DeleteConnection deleteconnection;
- private UserId userId;
- private ConnectionId connectionID;
- private User user;
- private Objects objects;
- private Connection connection;
- private List<Connection> connectionList;
- private ConnectionId NotconnectionID;
- private ConnectionId connectionID2;
- private WriteTransaction writetransaction;
-@org.junit.Before
-public void setUp() throws Exception {
- dataBroker=mock(DataBroker.class);
- tenantManage=mock(TenantManage.class);
- deleteconnection=mock(DeleteConnection.class);
- userId=mock(UserId.class);
- connectionID=mock(ConnectionId.class);
- NotconnectionID=mock(ConnectionId.class);
- connectionID2=connectionID;
- user=mock(User.class);
- objects=mock(Objects.class);
- connection=mock(Connection.class);
- connectionList=new ArrayList<Connection>(3);
- connectionList.add(connection);
- deleteconnection=new DeleteConnection(dataBroker,tenantManage);
- writetransaction=mock(WriteTransaction.class);
- }
-@org.junit.Test
-public void DeleteConnectionHandlingTest() throws Exception{
- //no data test
- CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-
- when(tenantManage.getUser()).thenReturn(null);
- Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"There are no connection instances in data store.");
- //data exists and other branches
- // branch 1
- when (tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(null);
- Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),null);
- //branch 2
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(user.getObjects().getConnection()).thenReturn(null);
- Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"There are no connection instances in data store.");
- //branch 3
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(objects.getConnection()).thenReturn(connectionList);
- when(connection.getConnectionId()).thenReturn(NotconnectionID);
- Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),"The connection instance"+connectionID.toString()+ "is not exit. Could not be deleted.");
- //branch 4
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(objects.getConnection()).thenReturn(connectionList);
- when(connection.getConnectionId()).thenReturn(connectionID);
- when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
- CheckedFuture<Void, TransactionCommitFailedException> f;
- f=mock(CheckedFuture.class);
- when(writetransaction.submit()).thenReturn(f);
- Assert.assertEquals(deleteconnection.DeleteConnectionHandling(userId,connectionID),null);
- //-------
- Assert.assertNotNull(deleteconnection);
- Assert.assertNotNull(tenantManage);
- //Assert.assertNull(deleteconnection.DeleteConnectionHandling(userId,connectionID));
- }
-
- }
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;
-import static org.mockito.Mockito.mock;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.FlowKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.util.*;
-import java.util.List;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-public class DeleteFlowTest{
- private DataBroker dataBroker;
- private TenantManage tenantManage;
- private DeleteFlow deleteflow;
- private UserId userId;
- private FlowId flowId;
- private Objects objects;
- private User user;
- private List<Flow> flowlist;
- private Flow flow;
- private FlowId notflowId;
- private WriteTransaction writetransaction;
- @org.junit.Before
- public void setUp() throws Exception {
- dataBroker=mock(DataBroker.class);
- tenantManage=mock(TenantManage.class);
- deleteflow=new DeleteFlow(dataBroker,tenantManage);
- userId=mock(UserId.class);
- flowId=mock(FlowId.class);
- objects=mock(Objects.class);
- user=mock(User.class);
- flow=mock(Flow.class);
- notflowId=mock(FlowId.class);
- flowlist=new ArrayList<Flow>(1);
- flowlist.add(flow);
- writetransaction=mock(WriteTransaction.class);
- }
- @org.junit.Test
- public void DeleteFlowHandlingTest() throws Exception{
- CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-
- //no data test
- when(tenantManage.getUser()).thenReturn(null);
- Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"There are no user in the data store.");
- //data exists and other branches
- //branch 1
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(null);
- Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),null);
- //branch 2
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(user.getObjects().getFlow()).thenReturn(null);
- Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"There are no flow instances in the data store.");
- //branch 3
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(user.getObjects().getFlow()).thenReturn(flowlist);
- when(flow.getFlowId()).thenReturn(notflowId);
- Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),"The flow instance" +flowId.toString()+"is not exist. Could not be deleted.");
- //branch 4
- when(tenantManage.getUser()).thenReturn(user);
- when(user.getObjects()).thenReturn(objects);
- when(user.getObjects().getFlow()).thenReturn(flowlist);
- when(flow.getFlowId()).thenReturn(flowId);
- when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);
- CheckedFuture<Void, TransactionCommitFailedException> f;
- f=mock(CheckedFuture.class);
- when(writetransaction.submit()).thenReturn(f);
- Assert.assertEquals(deleteflow.DeleteFlowHandling(userId,flowId),null);
- }
-}
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.AAA;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.StructureStyleNemoDeleteInput;\r
-public class DeleteIntentTest{\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private DeleteNode deleteNode;\r
- private DeleteConnection deleteConnection;\r
- private DeleteFlow deleteFlow;\r
- private DeleteOperation deleteOperation;\r
- private DeleteResult deleteResult;\r
- private AAA aaa;\r
- private StructureStyleNemoDeleteInput styleNemoDeleteInput;\r
- private DeleteIntent deleteintent;\r
-@org.junit.Before\r
-public void setUp() throws Exception{\r
- dataBroker=mock(DataBroker.class);\r
- tenantManage=mock(TenantManage.class);\r
- deleteNode=mock(DeleteNode.class);\r
- deleteConnection=mock(DeleteConnection.class);\r
- deleteFlow=mock(DeleteFlow.class);\r
- deleteOperation=mock(DeleteOperation.class);\r
- deleteResult=mock(DeleteResult.class);\r
- aaa=mock(AAA.class);\r
- styleNemoDeleteInput=mock(StructureStyleNemoDeleteInput.class);\r
- deleteintent=mock(DeleteIntent.class);\r
-}\r
-@org.junit.Test\r
-public void styleNemoDeleteOutputTest(){\r
- Assert.assertNull(deleteintent.styleNemoDeleteOutput(aaa,styleNemoDeleteInput));\r
-}\r
-}
\ No newline at end of file
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-import java.util.*;\r
-public class DeleteNodeTest{\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private UserId userid;\r
- private NodeId nodeid;\r
- private DeleteNode deletenode;\r
- private User user;\r
- private Objects objects;\r
- private Node node;\r
- private NodeId notnodeid;\r
- private List<Node> nodeList;\r
- private WriteTransaction writetransaction;\r
- @org.junit.Before\r
- public void setUp() throws Exception{\r
- dataBroker=mock(DataBroker.class);\r
- tenantManage=mock(TenantManage.class);\r
- userid=mock(UserId.class); \r
- nodeid=mock(NodeId.class);\r
- deletenode=new DeleteNode(dataBroker,tenantManage);\r
- user=mock(User.class);\r
- objects=mock(Objects.class);\r
- node=mock(Node.class);\r
- notnodeid=mock(NodeId.class);\r
- nodeList=new ArrayList<Node>(1);\r
- nodeList.add(node);\r
- writetransaction=mock(WriteTransaction.class);\r
- }\r
- @org.junit.Test\r
- public void DeleNodeHandlingTest(){\r
- CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
- //branch 1\r
- when(tenantManage.getUser()).thenReturn(null);\r
- Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no user in data store."); \r
- //branch 2\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(null);\r
- Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null);\r
- //branch 3\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(objects);\r
- when(objects.getNode()).thenReturn(null);\r
- Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"There are no nodes instances in data store.");\r
- //branch 4\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(objects);\r
- when(objects.getNode()).thenReturn(nodeList);\r
- when(node.getNodeId()).thenReturn(notnodeid);\r
- Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),"The node instance" +nodeid.toString()+"is not exist.Could not be deleted");\r
- //branch 5\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getObjects()).thenReturn(objects);\r
- when(objects.getNode()).thenReturn(nodeList);\r
- when(node.getNodeId()).thenReturn(nodeid);\r
- when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
- CheckedFuture<Void, TransactionCommitFailedException> f;\r
- f=mock(CheckedFuture.class);\r
- when(writetransaction.submit()).thenReturn(f);\r
- Assert.assertEquals(deletenode.DeleNodeHandling(userid,nodeid),null);\r
- }\r
-}\r
+++ /dev/null
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.OperationId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.OperationKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import static org.junit.Assert.*;\r
-import static org.mockito.Mockito.*;\r
-import java.util.*;\r
-public class DeleteOperationTest{\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private UserId userId;\r
- private User user;\r
- private OperationId operationId;\r
- private DeleteOperation deleteoperation;\r
- private Operations operations;\r
- private Operation operation;\r
- private OperationId notoperationId;\r
- private List<Operation> operationList;\r
- private WriteTransaction writetransaction;\r
- @org.junit.Before\r
- public void setUp() throws Exception{\r
- dataBroker=mock(DataBroker.class);\r
- tenantManage=mock(TenantManage.class);\r
- userId=mock(UserId.class);\r
- operationId=mock(OperationId.class);\r
- user=mock(User.class);\r
- operation=mock(Operation.class);\r
- notoperationId=mock(OperationId.class);\r
- deleteoperation=new DeleteOperation(dataBroker,tenantManage);\r
- operations=mock(Operations.class);\r
- operationList=new ArrayList<Operation>(1);\r
- operationList.add(operation);\r
- writetransaction=mock(WriteTransaction.class);\r
- }\r
- @org.junit.Test\r
- public void DeleteOperationhandlingTest(){\r
- CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
- //branch 1\r
- when(tenantManage.getUser()).thenReturn(null);\r
- Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no user in the data store.");\r
- //branch 2\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getOperations()).thenReturn(null);\r
- Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null);\r
- //branch 3\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getOperations()).thenReturn(operations); \r
- when(operations.getOperation()).thenReturn(null);\r
- Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"There are no operation instances in the data store."); \r
- //branch 4\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getOperations()).thenReturn(operations); \r
- when(operations.getOperation()).thenReturn(operationList);\r
- when(operation.getOperationId()).thenReturn(notoperationId);\r
- Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),"The operation instance" +operationId.toString()+"is not exist. Could not be deleted.");\r
- //branch 5\r
- when(tenantManage.getUser()).thenReturn(user);\r
- when(user.getOperations()).thenReturn(operations); \r
- when(operations.getOperation()).thenReturn(operationList);\r
- when(operation.getOperationId()).thenReturn(operationId);\r
- when(dataBroker.newWriteOnlyTransaction()).thenReturn(writetransaction);\r
- CheckedFuture<Void, TransactionCommitFailedException> f;\r
- f=mock(CheckedFuture.class);\r
- when(writetransaction.submit()).thenReturn(f);\r
- Assert.assertEquals(deleteoperation.DeleteOperationhandling(userId,operationId),null);\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.deleteintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.*;\r
-import static org.mockito.Mockito.mock;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.structure.style.nemo.delete.input.Results;\r
-import java.util.*;\r
-import static org.mockito.Mockito.*;\r
-public class DeleteResultTest{\r
- private UserId userId;\r
- private Results results;\r
- private DeleteResult deleteresult;\r
- @org.junit.Before\r
- public void setUp()throws Exception{\r
- userId=mock(UserId.class);\r
- results=mock(Results.class);\r
- deleteresult=new DeleteResult();\r
- \r
- }\r
- @org.junit.Test\r
- public void DeleteResultHandlingTest() throws Exception{\r
- Assert.assertNull(deleteresult.DeleteResultHandling(userId,results));\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-
-import 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
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.FlowInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.FlowDefinitionCheck;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateFlowTest {\r
-\r
- private UpdateFlow updateFlow;\r
-\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private FlowDefinitionCheck flowDefinitionCheck;\r
- private FlowInstanceCheck flowInstanceCheck;\r
- private UserId userId;\r
- private Flow flow;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- dataBroker = mock(DataBroker.class);\r
- tenantManage = mock(TenantManage.class);\r
- flowDefinitionCheck = mock(FlowDefinitionCheck.class);\r
- flowInstanceCheck = mock(FlowInstanceCheck.class);\r
- userId = mock(UserId.class);\r
- flow = mock(Flow.class);\r
-\r
-\r
- updateFlow = mock(UpdateFlow.class);\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testFlowHandling() throws Exception {\r
-\r
- Assert.assertNull(updateFlow.FlowHandling(userId, flow));\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
-import 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
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.NodeInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateNodeTest {\r
-\r
-\r
- private UpdateNode updateNode;\r
-\r
- private DataBroker dataBroker;\r
- private NodeDefinitionCheck nodeCheck;\r
- private NodeInstanceCheck nodeInstanceCheck;\r
- private UserId userId;\r
- private Node node;\r
-\r
- private TenantManage tenantManage;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- dataBroker = mock(DataBroker.class);\r
- nodeCheck = mock(NodeDefinitionCheck.class);\r
- nodeInstanceCheck = mock(NodeInstanceCheck.class);\r
-\r
- tenantManage = mock(TenantManage.class);\r
- userId = mock(UserId.class);\r
- node = mock(Node.class);\r
-\r
-\r
- updateNode = mock(UpdateNode.class);\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testNodeHandling() throws Exception {\r
- Assert.assertNull(updateNode.NodeHandling(userId, node));\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.OperationInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.OperationDefinitionCheck;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateOperationTest {\r
-\r
- private UpdateOperation updateOperation;\r
-\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private OperationDefinitionCheck operationDefinitionCheck;\r
- private OperationInstanceCheck operationInstanceCheck;\r
-\r
- private UserId userId;\r
- private Operation operation;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- dataBroker = mock(DataBroker.class);\r
- tenantManage = mock(TenantManage.class);\r
- operationDefinitionCheck = mock(OperationDefinitionCheck.class);\r
- operationInstanceCheck = mock(OperationInstanceCheck.class);\r
- userId = mock(UserId.class);\r
- operation = mock(Operation.class);\r
-\r
- updateOperation = mock(UpdateOperation.class);\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testOperationHandling() throws Exception {\r
- Assert.assertNull(updateOperation.OperationHandling(userId, operation));\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
-\r
-import org.junit.Assert;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.ResultInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.ResultDefinitionCheck;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;\r
-/**\r
- * Created by ldzd11 on 2015/11/9.\r
- */\r
-public class UpdateResultTest {\r
-\r
-\r
- private UpdateResult updateResult;\r
-\r
- private DataBroker dataBroker;\r
- private TenantManage tenantManage;\r
- private ResultDefinitionCheck resultDefinitionCheck;\r
- private ResultInstanceCheck resultInstanceCheck;\r
- private UserId userId;\r
- private Results results;\r
-\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- dataBroker = mock(DataBroker.class);\r
- tenantManage = mock(TenantManage.class);\r
- resultDefinitionCheck = mock(ResultDefinitionCheck.class);\r
- resultInstanceCheck = mock(ResultInstanceCheck.class);\r
- userId = mock(UserId.class);\r
- results = mock(Results.class);\r
-\r
- updateResult = mock(UpdateResult.class);\r
-\r
-\r
- }\r
-\r
- @org.junit.Test\r
- public void testResultHandling() throws Exception {\r
- Assert.assertNull(updateResult.ResultHandling(userId, results));\r
-\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;
-
-import org.junit.runner.RunWith;
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;
-import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import junit.framework.TestCase;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition.PropertyValueType;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import com.google.common.base.Optional;
-import com.google.common.base.Function;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.ListIterator;
-
-import java.lang.reflect.Method;
-import static org.mockito.Mockito.*;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(ConnectionDefinitionCheck.class)
-public class ConnectionDefinitionCheckTest {
- private ConnectionDefinitionCheck connectionDefinitionCheck;
- private DataBroker dataBroker;
- private ConnectionDefinition connectionDefinition;
- private List<ConnectionDefinition> connectionDefinitionList;
- private Connection connection;
- private List<Property> connectionProperty;
- private List<PropertyDefinition> propertyDefinitionList;
- private Property property;
- private PropertyDefinition propertyDefinition;
-
- // private static final Logger LOG;
- @org.junit.Before
- public void setUp() throws Exception {
- ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
- connectionDefinitionList=new ArrayList<ConnectionDefinition>(3);
- property = mock(Property.class);
- propertyDefinition = mock(PropertyDefinition.class);
- connectionProperty = new ArrayList<Property>(3);
- propertyDefinitionList = new ArrayList<PropertyDefinition>(3);
- connectionDefinitionList.add(connectionDefinition);
- connection = mock(Connection.class);
- // LOG = mock(Logger.class);
- dataBroker = mock(DataBroker.class);
- connectionDefinitionCheck =new ConnectionDefinitionCheck(dataBroker);
- }
-
- @org.junit.Test
- public void testcheckConnectionDefinition() throws Exception {
- CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
-
- //branch connectionDefinitionList null
- Assert.assertEquals(connectionDefinitionCheck.CheckConnectionDefinition(connection),"This type of connection has not been defined.");
-
- //use reflact to test private CheckProperty
- Method testCheckProperty = connectionDefinitionCheck.getClass().getDeclaredMethod("CheckProperty",List.class,List.class);
- testCheckProperty.setAccessible(true);
- //branch1 connectionProperty null,propertyDefinitionList null
- Assert.assertNull(testCheckProperty.invoke(connectionDefinitionCheck,connectionProperty,propertyDefinitionList));
- //branch2 property.getPropertyName() not equals(propertyDefinition.getPropertyName())
- connectionProperty.add(property);
- propertyDefinitionList.add(propertyDefinition);
- PropertyName propertyName1 = mock(PropertyName.class);
- PropertyName propertyName2 = mock(PropertyName.class);
- when(property.getPropertyName()).thenReturn(propertyName1);
- when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
- Assert.assertEquals(testCheckProperty.invoke(connectionDefinitionCheck,connectionProperty,propertyDefinitionList),"This type of property" + property.getPropertyName().toString() + " has not been defined.");
- //branch3 property.getPropertyName()equals(propertyDefinition.getPropertyName()),but can not mock PropertyValueType
- when(property.getPropertyName()).thenReturn(propertyName1);
- PropertyName propertyName3 = propertyName1;
- when(propertyDefinition.getPropertyName()).thenReturn(propertyName3);
- PropertyValues propertyValues = mock(PropertyValues.class);
- when(property.getPropertyValues()).thenReturn(propertyValues);
- Assert.assertNotNull(property.getPropertyValues());
- Assert.assertNull(propertyDefinition.getPropertyValueType());
-
- //dataBroker test
- verify(dataBroker).newReadOnlyTransaction();
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
- verifyPrivate(connectionDefinitionCheck).invoke("fetchConnectionDefinitionList");
-
- }
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import static org.junit.Assert.*;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.FlowPropertyDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.MatchItemDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.definitions.MatchItemDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Optional;\r
-import com.google.common.base.Function;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-import java.util.ListIterator;\r
-\r
-\r
-import static org.mockito.Mockito.*;\r
-\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(ConnectionDefinitionCheck.class) \r
-public class FlowDefinitionCheckTest{\r
- private FlowDefinitionCheck flowDefinitionCheck;\r
- private DataBroker dataBroker;\r
- private List<MatchItemDefinition> matchItemDefinitionList; \r
- private Flow flow;\r
- // private static final Logger LOG;\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- matchItemDefinitionList = new LinkedList<MatchItemDefinition>();\r
- // LOG = mock(Logger.class);\r
-\r
- dataBroker = mock(DataBroker.class);\r
- flow = mock(Flow.class);\r
- flowDefinitionCheck = new FlowDefinitionCheck(dataBroker);\r
- }\r
- @org.junit.Test\r
- public void testcheckConnectionDefinition() throws Exception {\r
- CheckedFuture matchitemdefinitionFuture = mock(CheckedFuture.class);\r
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(matchitemdefinitionFuture);\r
- Assert.assertNotNull(flow.getMatchItem());\r
- Assert.assertEquals(flowDefinitionCheck.CheckDefinition(flow),"The match item has not been defined.");\r
- //dataBroker test \r
- verify(dataBroker).newReadOnlyTransaction();\r
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
- verifyPrivate(flowDefinitionCheck).invoke("fetchMatchItemDefinitions");\r
- \r
- }\r
-\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import static org.junit.Assert.*;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Optional;\r
-import com.google.common.base.Function;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.ArrayList;\r
-import java.util.ListIterator;\r
-\r
-import java.lang.reflect.Method; \r
-import static org.mockito.Mockito.*;\r
-\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(NodeDefinitionCheck.class) \r
-public class NodeDefinitionCheckTest{\r
- private NodeDefinitionCheck nodeDefinitionCheck;\r
- private DataBroker dataBroker;\r
- private List<NodeDefinition> nodeDefinitionList;\r
- private Node node;\r
- private NodeDefinition nodeDefinition;\r
- private List<Property> nodeProperties;\r
- private List<PropertyDefinition> nodePropertyDefinitions;\r
- private Property property;\r
- private PropertyDefinition propertyDefinition;\r
- //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class);\r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- nodeDefinition = mock(NodeDefinition.class);\r
- nodeDefinitionList = new ArrayList<NodeDefinition>(3);\r
- // LOG = mock(Logger.class);\r
- node = mock(Node.class);\r
- dataBroker = mock(DataBroker.class);\r
- nodeDefinitionCheck = new NodeDefinitionCheck(dataBroker);\r
- property = mock(Property.class);\r
- propertyDefinition = mock(PropertyDefinition.class);\r
- nodeProperties = new ArrayList<Property>(3);\r
- nodePropertyDefinitions = new ArrayList<PropertyDefinition>(3);\r
- }\r
- @org.junit.Test\r
- public void testcheckConnectionDefinition() throws Exception {\r
- CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);\r
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);\r
- //branch nodeDefinitionList null\r
- Assert.assertEquals(nodeDefinitionCheck.CheckNodeDefinition(node),"This type of Node has not been defined.");\r
- \r
- //use reflact test private checkProperty\r
- Method testcheckProperty = nodeDefinitionCheck.getClass().getDeclaredMethod("checkProperty",List.class,List.class); \r
- testcheckProperty.setAccessible(true);\r
- //branch1 nodeProperties null, nodePropertyDefinition null\r
- Assert.assertNull(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions));\r
- //branch2 \r
- nodeProperties.add(property);\r
- nodePropertyDefinitions.add(propertyDefinition);\r
- PropertyName propertyName1 = mock(PropertyName.class);\r
- PropertyName propertyName2 = mock(PropertyName.class);\r
- when(property.getPropertyName()).thenReturn(propertyName1);\r
- when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
- Assert.assertEquals(testcheckProperty.invoke(nodeDefinitionCheck,nodeProperties,nodePropertyDefinitions),"The property"+property.getPropertyName().toString()+"has not been defined.");\r
- //branch3\r
- when(property.getPropertyName()).thenReturn(propertyName1);\r
- PropertyName propertyName3 = propertyName1;\r
- when(propertyDefinition.getPropertyName()).thenReturn(propertyName3);\r
- PropertyValues propertyValues = mock(PropertyValues.class);\r
- when(property.getPropertyValues()).thenReturn(propertyValues);\r
- Assert.assertNotNull(property.getPropertyValues());\r
- Assert.assertNull(propertyDefinition.getPropertyValueType());\r
- //dataBroker test\r
- verify(dataBroker).newReadOnlyTransaction();\r
- verify(readOnlyTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
- verifyPrivate(nodeDefinitionCheck).invoke("fetchNodeDefinitions");\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.syntaxcheck;\r
-\r
-import org.junit.runner.RunWith;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
-\r
-import junit.framework.TestCase;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-\r
-import com.google.common.base.Optional;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.ListenableFuture;\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.common.RpcResult;\r
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;\r
-import org.opendaylight.yangtools.yang.common.RpcError.ErrorType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import com.google.common.base.Function;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ParameterName;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ActionDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.ConditionParameterDefinitions;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.definitions.ActionDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValue;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.ConditionParameterDefinition;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.parameter.definitions.condition.parameter.definition.ParameterMatchPatterns;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import java.util.List;\r
-\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-import java.util.LinkedList;\r
-import java.util.ListIterator;\r
-\r
-import static org.mockito.Mockito.*;\r
-@RunWith(PowerMockRunner.class) \r
-@PrepareForTest(ConnectionDefinitionCheck.class) \r
-public class OperationDefinitionCheckTest{\r
- private OperationDefinitionCheck operationDefinitionCheck;\r
- private DataBroker dataBroker;\r
- private ActionDefinition actionDefinition;\r
- private ConditionParameterDefinition conditionParameterDefinition;\r
- private List<ActionDefinition> actionDefinitionList;\r
- private List<ConditionParameterDefinition> conditionParameterDefinitionList;\r
- private Operation operation;\r
- //private static final Logger LOG = LoggerFactory.getLogger(NodeDefinitionCheck.class);\r
- \r
- @org.junit.Before\r
- public void setUp() throws Exception {\r
- actionDefinitionList = new LinkedList<ActionDefinition>();\r
- conditionParameterDefinitionList = new LinkedList<ConditionParameterDefinition>();\r
- // LOG = mock(Logger.class);\r
- operation = mock(Operation.class);\r
- dataBroker = mock(DataBroker.class);\r
- operationDefinitionCheck = new OperationDefinitionCheck(dataBroker);\r
- }\r
- @org.junit.Test\r
- public void testcheckConnectionDefinition() throws Exception {\r
- CheckedFuture actiondefinitionFuture = mock(CheckedFuture.class);\r
- CheckedFuture conditionparadefinitionFuture = mock(CheckedFuture.class);\r
- ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
- when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(actiondefinitionFuture);\r
- when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(conditionparadefinitionFuture);\r
- //branch null\r
- Assert.assertNotNull(operation.getAction());\r
- Assert.assertNotNull(operation.getConditionSegment());\r
- Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"There are no actions has been defined in the data store.");\r
- when(operation.getAction()).thenReturn(null);\r
- Assert.assertEquals(operationDefinitionCheck.CheckDefinition(operation),"This condition has not been defined in data store.");\r
- //\r
-\r
- verify(dataBroker,times(4)).newReadOnlyTransaction();\r
- verify(readOnlyTransaction,times(4)).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));\r
- \r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.nemo.user.vnspacemanager.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