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();
+ }
}