Fisheye: Tag 94d7031afe75184d9285dc2c6e8d489d6285aa8d refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceFolderDTO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae -r94d7031afe75184d9285dc2c6e8d489d6285aa8d --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 94d7031afe75184d9285dc2c6e8d489d6285aa8d) @@ -360,4 +360,30 @@ * @throws IOException */ public String getUsersFromOrganisationByRole(Integer organisationID, String roleName)throws IOException; + + /** + * This method returns a list of workspace folders for which + * the user has "write" access. A user can write/save his content + * in a folder in one of the following cases + *
user_id
of the user for whom the
+ * folders have to fetched
+ * @return String The required information in WDDX format
+ * @throws IOException
+ */
+ public String getAccessibleWorkspaceFolders(Integer userID)throws IOException;
}
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java
===================================================================
diff -u -r5ef30da5c8c3f97d81d42ac4abed7430f8261ef3 -r94d7031afe75184d9285dc2c6e8d489d6285aa8d
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 5ef30da5c8c3f97d81d42ac4abed7430f8261ef3)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 94d7031afe75184d9285dc2c6e8d489d6285aa8d)
@@ -7,9 +7,11 @@
import java.io.IOException;
import java.util.Date;
+import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.Set;
import java.util.Vector;
import org.lamsfoundation.lams.learningdesign.LearningDesign;
@@ -23,6 +25,7 @@
import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO;
import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO;
import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceFolderDAO;
+import org.lamsfoundation.lams.usermanagement.dto.UserAccessFoldersDTO;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.OrganisationType;
import org.lamsfoundation.lams.usermanagement.Role;
@@ -36,499 +39,653 @@
/**
* TODO Add description here
- *
+ *
* - * View Source + * View Source *
* - * @author Fei Yang + * @author Fei Yang */ public class UserManagementService implements IUserManagementService { private IUserDAO userDAO; + private IRoleDAO roleDAO; + private IOrganisationDAO organisationDAO; + private IOrganisationTypeDAO organisationTypeDAO; + private IUserOrganisationDAO userOrganisationDAO; + private IUserOrganisationRoleDAO userOrganisationRoleDAO; + private IAuthenticationMethodDAO authenticationMethodDAO; - + protected IWorkspaceDAO workspaceDAO; + protected IWorkspaceFolderDAO workspaceFolderDAO; + protected ILearningDesignDAO learningDesignDAO; - + private FlashMessage flashMessage; - + /** - * @param workspaceFolderDAO The workspaceFolderDAO to set. + * @param workspaceFolderDAO + * The workspaceFolderDAO to set. */ public void setWorkspaceFolderDAO(IWorkspaceFolderDAO workspaceFolderDAO) { this.workspaceFolderDAO = workspaceFolderDAO; } - /** + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserDAO(org.lamsfoundation.lams.usermanagement.dao.IUserDAO) */ public void setUserDAO(IUserDAO userDAO) { this.userDAO = userDAO; } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setRoleDAO(org.lamsfoundation.lams.usermanagement.dao.IRoleDAO) */ public void setRoleDAO(IRoleDAO roleDAO) { this.roleDAO = roleDAO; } - - /** + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO) */ public void setOrganisationDAO(IOrganisationDAO organisationDAO) { this.organisationDAO = organisationDAO; } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationTypeDAO(org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO) */ - public void setOrganisationTypeDAO(IOrganisationTypeDAO organisationTypeDAO){ + public void setOrganisationTypeDAO(IOrganisationTypeDAO organisationTypeDAO) { this.organisationTypeDAO = organisationTypeDAO; } - - /** + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO) */ public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDAO) { this.userOrganisationDAO = userOrganisationDAO; } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setUserOrganisationRoleDAO(org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO) */ - public void setUserOrganisationRoleDAO(IUserOrganisationRoleDAO userOrganisationRoleDAO) { + public void setUserOrganisationRoleDAO( + IUserOrganisationRoleDAO userOrganisationRoleDAO) { this.userOrganisationRoleDAO = userOrganisationRoleDAO; } - - /** + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#setOrganisationDAO(org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO) */ - public void setAuthenticationMethodDAO(IAuthenticationMethodDAO authenticationMethodDAO){ + public void setAuthenticationMethodDAO( + IAuthenticationMethodDAO authenticationMethodDAO) { this.authenticationMethodDAO = authenticationMethodDAO; } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserById(java.lang.Integer) */ - public User getUserById(Integer userId){ - return userDAO.getUserById(userId); - } - - /** + public User getUserById(Integer userId) { + return userDAO.getUserById(userId); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserByLogin(java.lang.String) */ public User getUserByLogin(String login) { return userDAO.getUserByLogin(login); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationById(java.lang.Integer) */ - public Organisation getOrganisationById(Integer organisationId){ - return organisationDAO.getOrganisationById(organisationId); - } + public Organisation getOrganisationById(Integer organisationId) { + return organisationDAO.getOrganisationById(organisationId); + } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationTypeByName(java.lang.String) */ - public OrganisationType getOrganisationTypeByName(String name){ - return organisationTypeDAO.getOrganisationTypeByName(name); - } + public OrganisationType getOrganisationTypeByName(String name) { + return organisationTypeDAO.getOrganisationTypeByName(name); + } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getBaseOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) */ - public Organisation getBaseOrganisation(Organisation organisation){ - if (organisation.getOrganisationType().getName().equals(OrganisationType.ROOT)){ - return null; - }else if(organisation.getOrganisationType().getName().equals(OrganisationType.BASE)){ - return organisation; - }else{ - return getBaseOrganisation(organisation.getParentOrganisation()); - } - } - - /** + public Organisation getBaseOrganisation(Organisation organisation) { + if (organisation.getOrganisationType().getName().equals( + OrganisationType.ROOT)) { + return null; + } else if (organisation.getOrganisationType().getName().equals( + OrganisationType.BASE)) { + return organisation; + } else { + return getBaseOrganisation(organisation.getParentOrganisation()); + } + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getRoleByName(java.lang.String) */ - public Role getRoleByName(String roleName){ - return roleDAO.getRoleByName(roleName); - } - - /** + public Role getRoleByName(String roleName) { + return roleDAO.getRoleByName(roleName); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationRole(java.lang.String,java.lang.Integer,java.lang.String) */ - public UserOrganisationRole getUserOrganisationRole(String login, Integer organisationId, String roleName){ - User user = userDAO.getUserByLogin(login); - if(user == null) - return null; - UserOrganisation userOrganisation = userOrganisationDAO.getUserOrganisation(user.getUserId(),organisationId); - if(userOrganisation==null) - return null; - Role role = roleDAO.getRoleByName(roleName); - if(role==null) - return null; - return userOrganisationRoleDAO.getUserOrganisationRole(userOrganisation.getUserOrganisationId(),role.getRoleId()); - } + public UserOrganisationRole getUserOrganisationRole(String login, + Integer organisationId, String roleName) { + User user = userDAO.getUserByLogin(login); + if (user == null) + return null; + UserOrganisation userOrganisation = userOrganisationDAO + .getUserOrganisation(user.getUserId(), organisationId); + if (userOrganisation == null) + return null; + Role role = roleDAO.getRoleByName(roleName); + if (role == null) + return null; + return userOrganisationRoleDAO.getUserOrganisationRole(userOrganisation + .getUserOrganisationId(), role.getRoleId()); + } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationRole(java.lang.String,java.lang.Integer,java.lang.String) */ - public UserOrganisation getUserOrganisation(Integer userId,Integer organisationId){ - return userOrganisationDAO.getUserOrganisation(userId,organisationId); - } - - /** + public UserOrganisation getUserOrganisation(Integer userId, + Integer organisationId) { + return userOrganisationDAO.getUserOrganisation(userId, organisationId); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAllAuthenticationMethods() */ - public List getAllAuthenticationMethods(){ - return authenticationMethodDAO.getAllAuthenticationMethods(); - } - - /** + public List getAllAuthenticationMethods() { + return authenticationMethodDAO.getAllAuthenticationMethods(); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAuthenticationMethodForUser(java.lang.String) */ public AuthenticationMethod getAuthenticationMethodForUser(String login) { - return authenticationMethodDAO.getAuthenticationMethodByUser(userDAO.getUserByLogin(login)); + return authenticationMethodDAO.getAuthenticationMethodByUser(userDAO + .getUserByLogin(login)); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAuthenticationMethodByName(java.lang.String) */ - public AuthenticationMethod getAuthenticationMethodByName(String name){ - return authenticationMethodDAO.getAuthenticationMethodByName(name); - } + public AuthenticationMethod getAuthenticationMethodByName(String name) { + return authenticationMethodDAO.getAuthenticationMethodByName(name); + } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUserOrganisationsForUser(org.lamsfoundation.lams.usermanagement.User) */ - public List getUserOrganisationsForUser(User user){ - return userOrganisationDAO.getUserOrganisationsByUser(user); - } - - /** - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationsForUserByRole(org.lamsfoundation.lams.usermanagement.User, java.lang.String) + public List getUserOrganisationsForUser(User user) { + return userOrganisationDAO.getUserOrganisationsByUser(user); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationsForUserByRole(org.lamsfoundation.lams.usermanagement.User, + * java.lang.String) */ - public List getOrganisationsForUserByRole(User user, String roleName){ - List list = new ArrayList(); - Iterator i = userOrganisationDAO.getUserOrganisationsByUser(user).iterator(); - while(i.hasNext()){ - UserOrganisation userOrganisation = (UserOrganisation)i.next(); - Iterator i2 = userOrganisation.getUserOrganisationRoles().iterator(); - while(i2.hasNext()){ - UserOrganisationRole userOrgansiationRole = (UserOrganisationRole)i2.next(); - if(userOrgansiationRole.getRole().getName().equals(roleName)){ - list.add(userOrgansiationRole.getUserOrganisation().getOrganisation()); - } - } - } - return list; - } - /** + public List getOrganisationsForUserByRole(User user, String roleName) { + List list = new ArrayList(); + Iterator i = userOrganisationDAO.getUserOrganisationsByUser(user) + .iterator(); + while (i.hasNext()) { + UserOrganisation userOrganisation = (UserOrganisation) i.next(); + Iterator i2 = userOrganisation.getUserOrganisationRoles() + .iterator(); + while (i2.hasNext()) { + UserOrganisationRole userOrgansiationRole = (UserOrganisationRole) i2 + .next(); + if (userOrgansiationRole.getRole().getName().equals(roleName)) { + list.add(userOrgansiationRole.getUserOrganisation() + .getOrganisation()); + } + } + } + return list; + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getChildOrganisations(org.lamsfoundation.lams.usermanagement.Organisation) */ - public List getChildOrganisations(Organisation parentOrg){ - return organisationDAO.getChildOrganisations(parentOrg); - } - - /** - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getRolesForUserByOrganisation(org.lamsfoundation.lams.usermanagement.User, java.lang.Integer) + public List getChildOrganisations(Organisation parentOrg) { + return organisationDAO.getChildOrganisations(parentOrg); + } + + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getRolesForUserByOrganisation(org.lamsfoundation.lams.usermanagement.User, + * java.lang.Integer) */ - public List getRolesForUserByOrganisation(User user, Integer orgId){ - List list = new ArrayList(); - UserOrganisation userOrg = userOrganisationDAO.getUserOrganisation(user.getUserId(),orgId); - if(userOrg==null) - return null; - Iterator i = userOrganisationRoleDAO.getUserOrganisationRoles(userOrg.getUserOrganisationId()).iterator(); - while(i.hasNext()){ - UserOrganisationRole userOrgRole = (UserOrganisationRole)i.next(); - list.add(userOrgRole.getRole()); - } - return list; - } - - /** + public List getRolesForUserByOrganisation(User user, Integer orgId) { + List list = new ArrayList(); + UserOrganisation userOrg = userOrganisationDAO.getUserOrganisation(user + .getUserId(), orgId); + if (userOrg == null) + return null; + Iterator i = userOrganisationRoleDAO.getUserOrganisationRoles( + userOrg.getUserOrganisationId()).iterator(); + while (i.hasNext()) { + UserOrganisationRole userOrgRole = (UserOrganisationRole) i.next(); + list.add(userOrgRole.getRole()); + } + return list; + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisation(int) */ - public List getUsersFromOrganisation(Integer orgId){ - List list = new ArrayList(); - Iterator i = userOrganisationDAO.getUserOrganisationsByOrganisationId(orgId).iterator(); - while(i.hasNext()){ - UserOrganisation userOrganisation = (UserOrganisation)i.next(); - list.add(userOrganisation.getUser()); - } - return list; - } - - /** + public List getUsersFromOrganisation(Integer orgId) { + List list = new ArrayList(); + Iterator i = userOrganisationDAO.getUserOrganisationsByOrganisationId( + orgId).iterator(); + while (i.hasNext()) { + UserOrganisation userOrganisation = (UserOrganisation) i.next(); + list.add(userOrganisation.getUser()); + } + return list; + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#createUser(org.lamsfoundation.lams.usermanagement.User) */ public void createUser(User user) { userDAO.saveUser(user); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#updateUser(org.lamsfoundation.lams.usermanagement.User) */ public void updateUser(User user) { userDAO.updateUser(user); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUser(org.lamsfoundation.lams.usermanagement.User) */ - public void saveOrUpdateUser(User user){ - userDAO.saveOrUpdateUser(user); - } - - /** + public void saveOrUpdateUser(User user) { + userDAO.saveOrUpdateUser(user); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#updatePassword(java.lang.String,java.lang.String) */ - public void updatePassword(String login, String newPassword){ - userDAO.updatePassword(login,newPassword); - } - - /** + public void updatePassword(String login, String newPassword) { + userDAO.updatePassword(login, newPassword); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#removeUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) */ public void removeUserOrganisation(UserOrganisation userOrganisation) { userOrganisationDAO.deleteUserOrganisation(userOrganisation); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateOrganisation(org.lamsfoundation.lams.usermanagement.Organisation) */ public void saveOrUpdateOrganisation(Organisation organisation) { organisationDAO.saveOrUpdateOrganisation(organisation); } - /** + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUserOrganisation(org.lamsfoundation.lams.usermanagement.UserOrganisation) */ - public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation){ - userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation); - } - - /** + public void saveOrUpdateUserOrganisation(UserOrganisation userOrganisation) { + userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation); + } + + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrUpdateUserOrganisationRole(org.lamsfoundation.lams.usermanagement.UserOrganisationRole) */ - public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole){ - userOrganisationRoleDAO.saveOrUpdateUserOrganisationRole(userOrganisationRole); - } + public void saveOrUpdateUserOrganisationRole( + UserOrganisationRole userOrganisationRole) { + userOrganisationRoleDAO + .saveOrUpdateUserOrganisationRole(userOrganisationRole); + } + /** - * @param workspaceDAO The workspaceDAO to set. + * @param workspaceDAO + * The workspaceDAO to set. */ public void setUserManagementWorkspaceDAO(IWorkspaceDAO workspaceDAO) { this.workspaceDAO = workspaceDAO; } + /** - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrganisation(org.lamsfoundation.lams.usermanagement.Organisation, java.lang.Integer) + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrganisation(org.lamsfoundation.lams.usermanagement.Organisation, + * java.lang.Integer) */ - public Integer saveOrganisation(Organisation organisation,Integer userID){ + public Integer saveOrganisation(Organisation organisation, Integer userID) { Workspace workspace = createWorkspace(organisation.getName()); WorkspaceFolder workspaceFolder = createWorkspaceFolder(workspace, - userID, - WorkspaceFolder.NORMAL); + userID, WorkspaceFolder.NORMAL); workspace.setRootFolder(workspaceFolder); workspaceDAO.update(workspace); organisation.setWorkspace(workspace); organisationDAO.saveOrganisation(organisation); return organisation.getOrganisationId(); } + /** * This method creates a new Workspace with a given name * - * @param name The name with which workspace should be created + * @param name + * The name with which workspace should be created * @return Workspace The new Workspace object */ - public Workspace createWorkspace(String name){ + public Workspace createWorkspace(String name) { Workspace workspace = new Workspace(name); workspaceDAO.insert(workspace); return workspace; - + } + /** - * This method creates a WorkspaceFolder for a given workspace and user. + * This method creates a WorkspaceFolder for a given workspace and user. * - * @param workspace The Workspace in which this WorkspaceFolder will be contained - * @param userID The user_id of the user who creates the above organisation - * @param workspaceFolderType The type of folder to be created. + * @param workspace + * The Workspace in which this WorkspaceFolder will be contained + * @param userID + * The user_id of the user who creates the above organisation + * @param workspaceFolderType + * The type of folder to be created. * @return WorkspaceFolder The new WorkspaceFolder object */ - public WorkspaceFolder createWorkspaceFolder(Workspace workspace,Integer userID, Integer workspaceFolderType){ - WorkspaceFolder workspaceFolder = new WorkspaceFolder(workspace.getName(), - workspace.getWorkspaceId(), - userID, - new Date(), - new Date(), - workspaceFolderType); + public WorkspaceFolder createWorkspaceFolder(Workspace workspace, + Integer userID, Integer workspaceFolderType) { + WorkspaceFolder workspaceFolder = new WorkspaceFolder(workspace + .getName(), workspace.getWorkspaceId(), userID, new Date(), + new Date(), workspaceFolderType); workspaceFolderDAO.insert(workspaceFolder); return workspaceFolder; - + } + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveUser(org.lamsfoundation.lams.usermanagement.User) */ - public Integer saveUser(User user,Integer roleID){ + public Integer saveUser(User user, Integer roleID) { userDAO.saveUser(user); - createUserOrganisation(user,roleID); + createUserOrganisation(user, roleID); Workspace workspace = createWorkspace(user.getLogin()); - WorkspaceFolder workspaceFolder = createWorkspaceFolder(workspace, - user.getUserId(), - WorkspaceFolder.NORMAL); + WorkspaceFolder workspaceFolder = createWorkspaceFolder(workspace, user + .getUserId(), WorkspaceFolder.NORMAL); WorkspaceFolder runSequencesFolder = createWorkspaceFolder(workspace, - user.getUserId(), - WorkspaceFolder.RUN_SEQUENCES); + user.getUserId(), WorkspaceFolder.RUN_SEQUENCES); workspace.setRootFolder(workspaceFolder); workspaceDAO.update(workspace); user.setWorkspace(workspace); userDAO.updateUser(user); return user.getUserId(); } - private Integer createUserOrganisation(User user,Integer roleID){ + + private Integer createUserOrganisation(User user, Integer roleID) { UserOrganisation userOrganisation = new UserOrganisation(); userOrganisation.setOrganisation(user.getBaseOrganisation()); - userOrganisation.setUser(user); - userOrganisationDAO.saveUserOrganisation(userOrganisation); - userOrganisation.addUserOrganisationRole(createUserOrganisationRole(userOrganisation,roleID)); + userOrganisation.setUser(user); + userOrganisationDAO.saveUserOrganisation(userOrganisation); + userOrganisation.addUserOrganisationRole(createUserOrganisationRole( + userOrganisation, roleID)); userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation); return userOrganisation.getUserOrganisationId(); } - private UserOrganisationRole createUserOrganisationRole(UserOrganisation userOrganisation, Integer roleID){ + + private UserOrganisationRole createUserOrganisationRole( + UserOrganisation userOrganisation, Integer roleID) { UserOrganisationRole userOrganisationRole = new UserOrganisationRole(); userOrganisationRole.setUserOrganisation(userOrganisation); userOrganisationRole.setRole(roleDAO.getRoleById(roleID)); userOrganisationRoleDAO.saveUserOrganisationRole(userOrganisationRole); return userOrganisationRole; } - /**TODO yet to be implemented*/ - public void getFolderContents(Integer userID, Integer workspaceFolderID){ - - } - /** TODO check if a user is authorized to complete this operation*/ - public String moveLearningDesign(Long learningDesignID,Integer targetWorkspaceFolderID, Integer userID)throws IOException{ - LearningDesign learningDesign = learningDesignDAO.getLearningDesignById(learningDesignID); - if(learningDesign!=null){ - WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(targetWorkspaceFolderID); - if(workspaceFolder!=null){ + + /** TODO check if a user is authorized to complete this operation */ + public String moveLearningDesign(Long learningDesignID, + Integer targetWorkspaceFolderID, Integer userID) throws IOException { + LearningDesign learningDesign = learningDesignDAO + .getLearningDesignById(learningDesignID); + if (learningDesign != null) { + WorkspaceFolder workspaceFolder = workspaceFolderDAO + .getWorkspaceFolderByID(targetWorkspaceFolderID); + if (workspaceFolder != null) { learningDesign.setWorkspaceFolder(workspaceFolder); learningDesignDAO.update(learningDesign); - flashMessage = new FlashMessage("moveLearningDesign",targetWorkspaceFolderID); - }else{ flashMessage = new FlashMessage("moveLearningDesign", - "No such target workspaceFolder with a workspace_folder_id of :" + targetWorkspaceFolderID + " exists", - FlashMessage.ERROR); + targetWorkspaceFolderID); + } else { + flashMessage = new FlashMessage("moveLearningDesign", + "No such target workspaceFolder with a workspace_folder_id of :" + + targetWorkspaceFolderID + " exists", + FlashMessage.ERROR); } - }else{ + } else { flashMessage = new FlashMessage("moveLearningDesign", - "No such learning design with a learning_design_id of:" + learningDesignID + " exists", - FlashMessage.ERROR); + "No such learning design with a learning_design_id of:" + + learningDesignID + " exists", FlashMessage.ERROR); } return flashMessage.serializeMessage(); } - /** - * TODO check if a user is authorized to complete this operation - * As of now I am assuming that the folders CANNOT be moved across - * different workspaces. If they can be moved in that case the signature of this - * method would be changed*/ - public void moveWorkspaceFolder(Integer currentWorkspaceFolderID, Integer targetWorkspaceFolderID, Integer userID){ - WorkspaceFolder currentWorkspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(currentWorkspaceFolderID); - WorkspaceFolder targetWorkspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(targetWorkspaceFolderID); - if(currentWorkspaceFolder!=null && targetWorkspaceFolder!=null){ + + /** + * TODO check if a user is authorized to complete this operation As of now I + * am assuming that the folders CANNOT be moved across different workspaces. + * If they can be moved in that case the signature of this method would be + * changed + */ + public void moveWorkspaceFolder(Integer currentWorkspaceFolderID, + Integer targetWorkspaceFolderID, Integer userID) { + WorkspaceFolder currentWorkspaceFolder = workspaceFolderDAO + .getWorkspaceFolderByID(currentWorkspaceFolderID); + WorkspaceFolder targetWorkspaceFolder = workspaceFolderDAO + .getWorkspaceFolderByID(targetWorkspaceFolderID); + if (currentWorkspaceFolder != null && targetWorkspaceFolder != null) { /** TODO move the contents of this folder */ - currentWorkspaceFolder.setParentWorkspaceFolder(targetWorkspaceFolder); + currentWorkspaceFolder + .setParentWorkspaceFolder(targetWorkspaceFolder); workspaceFolderDAO.update(currentWorkspaceFolder); } } - /** + + /** * TODO check if a user is authorized to complete this operation */ - public void renameFolder(Integer workspaceFolderID, String newName, Integer userID){ - WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(workspaceFolderID); - if(workspaceFolder!=null){ + public void renameFolder(Integer workspaceFolderID, String newName, + Integer userID) { + WorkspaceFolder workspaceFolder = workspaceFolderDAO + .getWorkspaceFolderByID(workspaceFolderID); + if (workspaceFolder != null) { workspaceFolder.setName(newName); workspaceFolderDAO.update(workspaceFolder); } } + /** TODO check if a user is authorized to complete this operation */ - public void renameLearningDesign(Long learningDesignID,String title, Integer userID){ - LearningDesign learningDesign = learningDesignDAO.getLearningDesignById(learningDesignID); - if(learningDesign!=null){ + public void renameLearningDesign(Long learningDesignID, String title, + Integer userID) { + LearningDesign learningDesign = learningDesignDAO + .getLearningDesignById(learningDesignID); + if (learningDesign != null) { learningDesign.setTitle(title); learningDesignDAO.update(learningDesign); } - } + } + /** - * @param learningDesignDAO The learningDesignDAO to set. + * @param learningDesignDAO + * The learningDesignDAO to set. */ public void setLearningDesignDAO(ILearningDesignDAO learningDesignDAO) { this.learningDesignDAO = learningDesignDAO; } - + /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getWorkspace(java.lang.Integer) */ - public String getWorkspace(Integer userID)throws IOException{ + public String getWorkspace(Integer userID) throws IOException { User user = userDAO.getUserById(userID); - if(user!=null){ + if (user != null) { Workspace workspace = user.getWorkspace(); - flashMessage = new FlashMessage("getWorkspace", - workspace.getWorkspaceDTO()); - } - else - flashMessage = FlashMessage.getNoSuchUserExists("getWorkspace",userID); - + flashMessage = new FlashMessage("getWorkspace", workspace + .getWorkspaceDTO()); + } else + flashMessage = FlashMessage.getNoSuchUserExists("getWorkspace", + userID); + return flashMessage.serializeMessage(); } + /** - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getWDDXForOrganisationsForUserByRole(java.lang.Integer, java.lang.String) + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getWDDXForOrganisationsForUserByRole(java.lang.Integer, + * java.lang.String) */ - public String getWDDXForOrganisationsForUserByRole(Integer userID, String roleName)throws IOException{ - User user = userDAO.getUserById(userID); - Vector organisations = new Vector(); - if(user!=null){ - Iterator iterator= getOrganisationsForUserByRole(user,roleName).iterator(); - while(iterator.hasNext()){ - Organisation organisation = (Organisation)iterator.next(); - organisations.add(organisation.getOrganisationDTO()); - } - flashMessage = new FlashMessage("getWDDXForOrganisationsForUserByRole", organisations); - }else - flashMessage = FlashMessage.getNoSuchUserExists("getWDDXForOrganisationsForUserByRole",userID); - - return flashMessage.serializeMessage(); - } + public String getWDDXForOrganisationsForUserByRole(Integer userID, + String roleName) throws IOException { + User user = userDAO.getUserById(userID); + Vector organisations = new Vector(); + if (user != null) { + Iterator iterator = getOrganisationsForUserByRole(user, roleName) + .iterator(); + while (iterator.hasNext()) { + Organisation organisation = (Organisation) iterator.next(); + organisations.add(organisation.getOrganisationDTO()); + } + flashMessage = new FlashMessage( + "getWDDXForOrganisationsForUserByRole", organisations); + } else + flashMessage = FlashMessage.getNoSuchUserExists( + "getWDDXForOrganisationsForUserByRole", userID); + + return flashMessage.serializeMessage(); + } + /** - * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisationByRole(java.lang.Integer, java.lang.String) + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getUsersFromOrganisationByRole(java.lang.Integer, + * java.lang.String) */ - public String getUsersFromOrganisationByRole(Integer organisationID, String roleName)throws IOException{ + public String getUsersFromOrganisationByRole(Integer organisationID, + String roleName) throws IOException { Vector users = new Vector(); - Organisation organisation = organisationDAO.getOrganisationById(organisationID); - if(organisation!=null){ + Organisation organisation = organisationDAO + .getOrganisationById(organisationID); + if (organisation != null) { Iterator iterator = organisation.getUserOrganisations().iterator(); - while(iterator.hasNext()){ - UserOrganisation userOrganisation = (UserOrganisation)iterator.next(); - Iterator userOrganisationRoleIterator = userOrganisation.getUserOrganisationRoles().iterator(); - while(userOrganisationRoleIterator.hasNext()){ - UserOrganisationRole userOrganisationRole = (UserOrganisationRole)userOrganisationRoleIterator.next(); - if(userOrganisationRole.getRole().getName().equals(roleName)) + while (iterator.hasNext()) { + UserOrganisation userOrganisation = (UserOrganisation) iterator + .next(); + Iterator userOrganisationRoleIterator = userOrganisation + .getUserOrganisationRoles().iterator(); + while (userOrganisationRoleIterator.hasNext()) { + UserOrganisationRole userOrganisationRole = (UserOrganisationRole) userOrganisationRoleIterator + .next(); + if (userOrganisationRole.getRole().getName().equals( + roleName)) users.add(userOrganisation.getUser().getUserDTO()); } } - flashMessage =new FlashMessage("getUsersFromOrganisationByRole",users); - - }else flashMessage = new FlashMessage("getUsersFromOrganisationByRole", - "No such Organisation with an organisation_id of:" + organisationID +" exists", - FlashMessage.ERROR); - + users); + + } else + flashMessage = new FlashMessage("getUsersFromOrganisationByRole", + "No such Organisation with an organisation_id of:" + + organisationID + " exists", FlashMessage.ERROR); + return flashMessage.serializeMessage(); } + + /** + * (non-Javadoc) + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getAccessibleWorkspaceFolders(java.lang.Integer) + */ + public String getAccessibleWorkspaceFolders(Integer userID) + throws IOException { + User user = userDAO.getUserById(userID); + Hashtable table = new Hashtable(); + Vector workspaces = new Vector(); + + if (user != null) { + //add the user's own folder to the list + table.put("PRIVATE", new UserAccessFoldersDTO(user.getWorkspace() + .getRootFolder())); + table.put("RUN_SEQUENCES", new UserAccessFoldersDTO( + workspaceFolderDAO.getRunSequencesFolderForUser(user + .getUserId()))); + // Get a list of organisations of which the given user is a member + List userMemberships = userOrganisationDAO + .getUserOrganisationsByUser(user); + if (userMemberships != null) { + Iterator memberships = userMemberships.iterator(); + while (memberships.hasNext()) { + UserOrganisation member = (UserOrganisation) memberships + .next(); + // Get a list of roles that the user has in this + // organisation + Set roles = member.getUserOrganisationRoles(); + + /* + * Check if the user has write access, which is available + * only if the user has an AUTHOR, TEACHER or STAFF role. If + * he has acess add that folder to the list. + */ + if (hasWriteAccess(roles)) { + workspaces.add(new UserAccessFoldersDTO(member + .getOrganisation().getWorkspace() + .getRootFolder())); + } + } + table.put("ORGANISATIONS", workspaces); + flashMessage = new FlashMessage( + "getAccessibleWorkspaceFolders", table); + } else + flashMessage = new FlashMessage( + "getAccessibleWorkspaceFolders", + "User with user_id of: " + userID + + " is not a member of any organisation", + FlashMessage.ERROR); + + } else + flashMessage = FlashMessage.getNoSuchUserExists( + "getAccessibleWorkspaceFolders", userID); + + return flashMessage.serializeMessage(); + } + + /** + * This a utility method that checks whether user has write access. He can + * save his contents to a folder only if he is an AUTHOR,TEACHER or STAFF + * + * @param roles + * Set of roles that the user has + * @return boolean + * A boolean value indicating whether the user has "write" + * access or not. + */ + private boolean hasWriteAccess(Set roles) { + boolean access = false; + Iterator roleIterator = roles.iterator(); + while (roleIterator.hasNext()) { + UserOrganisationRole userOrganisationRole = (UserOrganisationRole) roleIterator + .next(); + Role role = userOrganisationRole.getRole(); + if (role.isAuthor() || role.isStaff() || role.isTeacher()) + access = true; + + } + return access; + } + } Index: lams_documents/lams_common/sample_wddx_packets/userManagement/userAccessibleFolders.xml =================================================================== diff -u --- lams_documents/lams_common/sample_wddx_packets/userManagement/userAccessibleFolders.xml (revision 0) +++ lams_documents/lams_common/sample_wddx_packets/userManagement/userAccessibleFolders.xml (revision 94d7031afe75184d9285dc2c6e8d489d6285aa8d) @@ -0,0 +1 @@ +