*/\r
package org.opendaylight.nemo.user.tenantmanager;\r
\r
+import java.util.Map;\r
+\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserName;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserPassword;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.UserInstance;\r
\r
-import java.util.List;\r
-\r
/**\r
* Created by z00293636 on 2015/8/29.\r
*/\r
private String checkUser(UserId userId, UserName userName, UserPassword userPassword, UserRoleName userRoleName)\r
{\r
tenantManage.fetchUsers();\r
- List<User> userList = tenantManage.getUsersList();\r
+ final Map<UserId, User> users = tenantManage.getUsers();\r
String errorInfo = null;\r
- Boolean userexist = false;\r
-\r
- if (userList != null)\r
- {\r
- for (User user : userList)\r
- {\r
- if (user.getUserId().equals(userId))\r
- {\r
- userexist = true;\r
- if (!user.getUserName().equals(userName))\r
- {\r
- errorInfo = "The user name is not right.";\r
- break;\r
- }\r
- else if (!user.getUserPassword().equals(userPassword))\r
- {\r
- errorInfo = "The password is not right.";\r
- break;\r
- }\r
- else if (!user.getUserRole().equals(userRoleName))\r
- {\r
- errorInfo = "The role is not right.";\r
- break;\r
- }\r
- }\r
- }\r
-\r
- }\r
-\r
- if (!userexist)\r
- {\r
+ final User user = users.get(userId);\r
+\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
+ errorInfo = "The password is not right.";\r
+ } else if (!user.getUserRole().equals(userRoleName)) {\r
+ errorInfo = "The role is not right.";\r
+ }\r
+ } else {\r
errorInfo = "The user is not exist.";\r
}\r
return errorInfo;\r
*/\r
package org.opendaylight.nemo.user.tenantmanager;\r
\r
+import java.util.Map;\r
+\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;\r
import org.opendaylight.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.User;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.user.rev151010.user.roles.UserRole;\r
\r
-import java.util.List;\r
-\r
/**\r
* Created by z00293636 on 2015/9/20.\r
*/\r
public class RegisterUser {\r
- private TenantManage tenantManage;\r
- private List<UserRole> userRoleList;\r
- private List<User> usersList;\r
+ private final TenantManage tenantManage;\r
\r
public RegisterUser(TenantManage tenantManage)\r
{\r
String errorInfo = null;\r
\r
tenantManage.fetchUserRoles();\r
- userRoleList = tenantManage.getUserRoleList();\r
+ Map<UserRoleName, UserRole> userRoles = tenantManage.getUserRoles();\r
tenantManage.fetchUsers();\r
- usersList = tenantManage.getUsersList();\r
+ Map<UserId, User> users = tenantManage.getUsers();\r
\r
- if (userRoleList == null)\r
+ if (userRoles.isEmpty())\r
{\r
errorInfo = "There are no roles be defined.";\r
}\r
else\r
{\r
- if (IfRoleExist(input.getUserRole()))\r
+ if (userRoles.containsKey(input.getUserRole()))\r
{\r
- if (usersList != null && IfUserHasRegistered(input.getUserId()))\r
+ if (users.containsKey(input.getUserId()))\r
{\r
errorInfo = "The user has been registered.";\r
}\r
}\r
return errorInfo;\r
}\r
- private boolean IfRoleExist(UserRoleName userRoleName){\r
- Boolean roleExist = false;\r
-\r
- for (UserRole userRole : userRoleList)\r
- {\r
- if (userRole.getRoleName().equals(userRoleName))\r
- {\r
- roleExist = true;\r
- }\r
- }\r
-\r
- return roleExist;\r
- }\r
-\r
- private boolean IfUserHasRegistered(UserId userId){\r
- Boolean userHasRegistered = false;\r
-\r
- for (User user : usersList)\r
- {\r
- if (user.getUserId().equals(userId))\r
- {\r
- userHasRegistered = true;\r
- }\r
- }\r
-\r
- return userHasRegistered;\r
- }\r
\r
}\r
*/\r
package org.opendaylight.nemo.user.tenantmanager;\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 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.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;\r
import org.opendaylight.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.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import java.util.List;\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
\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 List<UserRole> userRoleList;\r
- private List<User> usersList ;\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
\r
private void setUserRoleList(List<UserRole> userRoleList)\r
{\r
- this.userRoleList = userRoleList;\r
+ this.userRoleListFuture.set(userRoleList);\r
}\r
\r
private void setUserList(List<User> userList)\r
{\r
- this.usersList = userList;\r
+ this.usersListFuture.set(userList);\r
}\r
\r
private void setUser(User user)\r
this.user = user;\r
}\r
\r
- public List<UserRole> getUserRoleList()\r
- {\r
- return userRoleList;\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
- public List<User> getUsersList()\r
+ /**\r
+ *\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
+ public List<User> getUsersList() {\r
+ try {\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
- return usersList;\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
public void onSuccess(Optional<UserRoles> result)\r
{\r
setUserRoleList(result.get().getUserRole());\r
- return;\r
}\r
\r
@Override\r
public void onFailure(Throwable t)\r
{\r
LOG.error("Can not read role information.", t);\r
-\r
- return;\r
}\r
});\r
- return;\r
}\r
\r
public void fetchUsers(){\r
public void onSuccess(Optional<Users> result)\r
{\r
setUserList(result.get().getUser());\r
- return;\r
}\r
\r
@Override\r
public void onFailure(Throwable t)\r
{\r
LOG.error("Can not read users information.", t);\r
-\r
- return;\r
}\r
});\r
- return;\r
}\r
\r
public void fetchVNSpace(UserId userId)\r
{\r
fetchUsers();\r
- if (getUsersList() != null)\r
- {\r
- for (User user : getUsersList())\r
- {\r
- if (user.getUserId().equals(userId))\r
- {\r
- setUser(user);\r
- break;\r
- }\r
- }\r
+ final Map<UserId, User> users = getUsers();\r
+\r
+ User user = users.get(userId);\r
+ if (users.containsKey(userId) && user != null) {\r
+ setUser(user);\r
}\r
- return;\r
}\r
\r
public void addUser(RegisterUserInput registerUserInput){\r