Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java 13 Apr 2005 00:49:07 -0000 1.2 @@ -25,6 +25,11 @@ */ public class OrganisationDAO extends HibernateDaoSupport implements IOrganisationDAO { + + private static final String TABLENAME ="lams_organisation"; + private static final String FIND_BY_WORKSPACE = "from " + TABLENAME + + " in class " + Organisation.class.getName() + + " where workspace_id=?"; /** * @see org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO#getAllOrganisations() @@ -97,5 +102,12 @@ public void deleteOrganisationById(Integer organisationId) { deleteOrganisation(getOrganisationById(organisationId)); } + public Organisation getOrganisationByWorkspaceID(Integer workspaceID){ + List list = getHibernateTemplate().find(FIND_BY_WORKSPACE,workspaceID); + if(list.size()!=0) + return (Organisation) list.get(0); + else + return null; + } } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/WorkspaceDAO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java 13 Apr 2005 00:49:07 -0000 1.1 @@ -0,0 +1,29 @@ +/* + * Created on Mar 22, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.usermanagement.Workspace; +import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class WorkspaceDAO extends BaseDAO implements IWorkspaceDAO{ + + /** + * (non-Javadoc) + * @see org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO#getWorkspaceByID(java.lang.Integer) + */ + public Workspace getWorkspaceByID(Integer workspaceID) { + return (Workspace) super.find(Workspace.class,workspaceID); + + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceFolderDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/WorkspaceFolderDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceFolderDAO.java 7 Feb 2005 03:49:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceFolderDAO.java 13 Apr 2005 00:49:07 -0000 1.2 @@ -6,23 +6,44 @@ */ package org.lamsfoundation.lams.usermanagement.dao.hibernate; +import java.util.List; + +import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceFolderDAO; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; /** - * @author Minhas - * - * TODO To change the template for this generated type comment go to - * Window - Preferences - Java - Code Style - Code Templates + * @author Manpreet Minhas */ -public class WorkspaceFolderDAO extends HibernateDaoSupport implements IWorkspaceFolderDAO { - - /* (non-Javadoc) +public class WorkspaceFolderDAO extends BaseDAO implements IWorkspaceFolderDAO { + + private final String TABLENAME ="lams_workspace_folder"; + private final String FIND_BY_PARENT = "from " + TABLENAME + + " in class " + WorkspaceFolder.class.getName() + + " where parent_folder_id=?"; + private final String FIND_BY_USER = "from " + TABLENAME + + " in class " + WorkspaceFolder.class.getName() + + " where user_id=?"; + + /** + * (non-Javadoc) * @see org.lamsfoundation.lams.usermanagement.dao.IWorkspaceFolderDAO#getWorkspaceFolderByID(java.lang.Long) */ public WorkspaceFolder getWorkspaceFolderByID(Integer workspaceFolderID) { - return (WorkspaceFolder)this.getHibernateTemplate().get(WorkspaceFolder.class,workspaceFolderID); + return (WorkspaceFolder) super.find(WorkspaceFolder.class,workspaceFolderID); } - + public WorkspaceFolder getRunSequencesFolderForUser(Integer userID){ + String query = "from lams_workspace_folder wf where wf.user_id=? AND wf.lams_workspace_folder_type_id=2"; + List list = this.getHibernateTemplate().find(query,userID); + if(list.size()!=0) + return (WorkspaceFolder)list.get(0); + else + return null; + } + public List getWorkspaceFolderByParentFolder(Integer parentFolderID){ + return this.getHibernateTemplate().find(FIND_BY_PARENT,parentFolderID); + } + public List getWorkspaceFolderByUser(Integer userID){ + return this.getHibernateTemplate().find(FIND_BY_USER,userID); + } } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/OrganisationDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/OrganisationDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/OrganisationDTO.java 13 Apr 2005 00:47:33 -0000 1.1 @@ -0,0 +1,57 @@ +/* + * Created on Apr 5, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.dto; + +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.util.wddx.WDDXTAGS; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class OrganisationDTO { + + private Integer organisationID; + private String name; + private String description; + + public OrganisationDTO(){ + + } + public OrganisationDTO(Integer organisationID, String name, + String description) { + super(); + this.organisationID = organisationID; + this.name = name; + this.description = description; + } + public OrganisationDTO(Organisation organisation){ + this.organisationID = organisation.getOrganisationId(); + this.name = organisation.getName(); + this.description = organisation.getDescription(); + } + /** + * @return Returns the description. + */ + public String getDescription() { + return description!=null?description:WDDXTAGS.STRING_NULL_VALUE; + } + /** + * @return Returns the name. + */ + public String getName() { + return name!=null?name:WDDXTAGS.STRING_NULL_VALUE; + } + /** + * @return Returns the organisationID. + */ + public Integer getOrganisationID() { + return organisationID!=null?organisationID:WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserDTO.java 13 Apr 2005 00:47:33 -0000 1.1 @@ -0,0 +1,56 @@ +/* + * Created on Mar 15, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.dto; + +import org.lamsfoundation.lams.util.wddx.WDDXTAGS; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class UserDTO { + + private Integer userID; + private String firstName; + private String lastName; + private String login; + + + public UserDTO(Integer userID, String firstName, String lastName, + String login) { + this.userID = userID; + this.firstName = firstName; + this.lastName = lastName; + this.login = login; + } + /** + * @return Returns the firstName. + */ + public String getFirstName() { + return firstName!=null?firstName:WDDXTAGS.STRING_NULL_VALUE; + } + /** + * @return Returns the lastName. + */ + public String getLastName() { + return lastName!=null?lastName:WDDXTAGS.STRING_NULL_VALUE; + } + /** + * @return Returns the login. + */ + public String getLogin() { + return login!=null?login:WDDXTAGS.STRING_NULL_VALUE; + } + /** + * @return Returns the userID. + */ + public Integer getUserID() { + return userID; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceDTO.java 13 Apr 2005 00:47:33 -0000 1.1 @@ -0,0 +1,42 @@ +/* + * Created on Mar 24, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.dto; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class WorkspaceDTO { + + private Integer workspaceID; + private Integer rootFolderID; + + + public WorkspaceDTO(){ + + } + + public WorkspaceDTO(Integer workspaceID, Integer rootFolderID) { + super(); + this.workspaceID = workspaceID; + this.rootFolderID = rootFolderID; + } + /** + * @return Returns the rootFolderID. + */ + public Integer getRootFolderID() { + return rootFolderID; + } + /** + * @return Returns the workspaceID. + */ + public Integer getWorkspaceID() { + return workspaceID; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceFolderDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/Attic/WorkspaceFolderDTO.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceFolderDTO.java 13 Apr 2005 00:47:33 -0000 1.1 @@ -0,0 +1,25 @@ +/* + * Created on Mar 24, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.dto; + +import java.util.Date; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class WorkspaceFolderDTO { + private String name; + private Date createDateTime; + private Date lastModifiedDate; + private Integer parentFolderID; + private Integer workspaceFolderID; + + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/exception/UserException.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/exception/UserException.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/exception/UserException.java 13 Apr 2005 00:45:19 -0000 1.1 @@ -0,0 +1,24 @@ +/* + * Created on Apr 5, 2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.usermanagement.exception; + +/** + * @author Minhas + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class UserException extends Exception { + + public UserException(){ + + } + public UserException(String message){ + super(message); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java 13 Apr 2005 00:40:30 -0000 1.2 @@ -5,6 +5,7 @@ */ package org.lamsfoundation.lams.usermanagement.service; +import java.io.IOException; import java.util.List; import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; @@ -20,6 +21,8 @@ import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.usermanagement.Workspace; +import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; /** * User Management Service Interface to handle communication between @@ -150,8 +153,7 @@ */ public UserOrganisation getUserOrganisation(Integer userId,Integer organisationId); - - /** + /** * Retrieves organisations in which the user * has the specified role * @@ -160,7 +162,7 @@ * @return List of organisations */ public List getOrganisationsForUserByRole(User user, String roleName); - + /** * Retrieves child organisations of the parentOrg * @@ -286,4 +288,76 @@ */ public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole); + /** + * Saves an Organisation while creating its corresponding Workspace + * and WorkspaceFolder + * + * @param organisation The Organisation to be saved + * @param userID The user_id of the user who creates this organisation + * @return Integer The organisation_id of the new Organisation + */ + public Integer saveOrganisation(Organisation organisation,Integer userID); + + /** + * This method saves a new User to the underlying database while + * creating his default workspace and workspaceFolder + * + * @param user The User object to be persisted + * @param roleID What kind of user he is (AUTHOR/LEARNER/STAFF/ADMIN) + * @return Integer The user_id of the User + */ + public Integer saveUser(User user, Integer roleID); + + /** + * This method creates a new Workspace with a given name + * + * @param name The name with which workspace should be created + * @return Workspace The new Workspace object + */ + public Workspace createWorkspace(String name); + + /** + * 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. + * @return WorkspaceFolder The new WorkspaceFolder object + */ + public WorkspaceFolder createWorkspaceFolder(Workspace workspace,Integer userID, Integer workspaceFolderType); + + /** + * Returns the workspace related information for the given + * user. + * + * @param userID The user_id of the User + * @return String The required information in WDDX format + * @throws IOException + */ + public String getWorkspace(Integer userID)throws IOException; + + /** + * This method returns the same information as + * in above method + * getOrganisationsForUserByRole(User user, String roleName) + * with the only difference being that it is in WDDX format + * + * @param userID The user_id of the user + * @param roleName The role name + * @return String The required information in WDDX format + * @throws IOException + */ + public String getWDDXForOrganisationsForUserByRole(Integer userID, String roleName)throws IOException; + + /** + * This method returns the users in the Organisation with + * given organisationID and roleName + * in WDDX format. + * + * @param organisationID + * @param roleName + * @return + * @throws IOException + */ + public String getUsersFromOrganisationByRole(Integer organisationID, String roleName)throws IOException; } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java 13 Apr 2005 00:40:30 -0000 1.2 @@ -5,24 +5,34 @@ */ package org.lamsfoundation.lams.usermanagement.service; +import java.io.IOException; +import java.util.Date; import java.util.List; import java.util.ArrayList; import java.util.Iterator; +import java.util.Vector; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodDAO; import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO; import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO; import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; 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.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; +import org.lamsfoundation.lams.usermanagement.Workspace; +import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; +import org.lamsfoundation.lams.util.wddx.FlashMessage; /** * TODO Add description here @@ -43,6 +53,18 @@ private IUserOrganisationRoleDAO userOrganisationRoleDAO; private IAuthenticationMethodDAO authenticationMethodDAO; + protected IWorkspaceDAO workspaceDAO; + protected IWorkspaceFolderDAO workspaceFolderDAO; + protected ILearningDesignDAO learningDesignDAO; + + private FlashMessage flashMessage; + + /** + * @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) */ @@ -194,7 +216,7 @@ /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getOrganisationsForUserByRole(org.lamsfoundation.lams.usermanagement.User, java.lang.String) */ - public List getOrganisationsForUserByRole(User user, String roleName){ + public List getOrganisationsForUserByRole(User user, String roleName){ List list = new ArrayList(); Iterator i = userOrganisationDAO.getUserOrganisationsByUser(user).iterator(); while(i.hasNext()){ @@ -209,7 +231,6 @@ } return list; } - /** * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#getChildOrganisations(org.lamsfoundation.lams.usermanagement.Organisation) */ @@ -301,4 +322,213 @@ public void saveOrUpdateUserOrganisationRole(UserOrganisationRole userOrganisationRole){ userOrganisationRoleDAO.saveOrUpdateUserOrganisationRole(userOrganisationRole); } + /** + * @param workspaceDAO The workspaceDAO to set. + */ + public void setWorkspaceDAO(IWorkspaceDAO workspaceDAO) { + this.workspaceDAO = workspaceDAO; + } + /** + * @see org.lamsfoundation.lams.usermanagement.service.IUserManagementService#saveOrganisation(org.lamsfoundation.lams.usermanagement.Organisation, java.lang.Integer) + */ + public Integer saveOrganisation(Organisation organisation,Integer userID){ + Workspace workspace = createWorkspace(organisation.getName()); + WorkspaceFolder workspaceFolder = createWorkspaceFolder(workspace, + 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 + * @return Workspace The new Workspace object + */ + 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. + * + * @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); + 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){ + userDAO.saveUser(user); + createUserOrganisation(user,roleID); + Workspace workspace = createWorkspace(user.getLogin()); + WorkspaceFolder workspaceFolder = createWorkspaceFolder(workspace, + user.getUserId(), + WorkspaceFolder.NORMAL); + WorkspaceFolder runSequencesFolder = createWorkspaceFolder(workspace, + 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){ + UserOrganisation userOrganisation = new UserOrganisation(); + userOrganisation.setOrganisation(user.getBaseOrganisation()); + userOrganisation.setUser(user); + userOrganisationDAO.saveUserOrganisation(userOrganisation); + userOrganisation.addUserOrganisationRole(createUserOrganisationRole(userOrganisation,roleID)); + userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation); + return userOrganisation.getUserOrganisationId(); + } + 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){ + 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); + } + }else{ + flashMessage = new FlashMessage("moveLearningDesign", + "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 move the contents of this folder */ + 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){ + 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){ + learningDesign.setTitle(title); + learningDesignDAO.update(learningDesign); + } + } + /** + * @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{ + User user = userDAO.getUserById(userID); + if(user!=null){ + Workspace workspace = user.getWorkspace(); + 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) + */ + 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) + */ + public String getUsersFromOrganisationByRole(Integer organisationID, String roleName)throws IOException{ + Vector users = new Vector(); + 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)) + 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); + + return flashMessage.serializeMessage(); + } }