Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java
===================================================================
diff -u -r19c9010eff6be2e29657beed94349a978088650f -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java (.../OrganisationDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java (.../OrganisationDAO.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u -r1197a06ec1722bf2704ebcfe523fb9e36be20ae0 -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceFolderDAO.java (.../WorkspaceFolderDAO.java) (revision 1197a06ec1722bf2704ebcfe523fb9e36be20ae0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceFolderDAO.java (.../WorkspaceFolderDAO.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/OrganisationDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/OrganisationDTO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/UserDTO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceDTO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceFolderDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dto/WorkspaceFolderDTO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/exception/UserException.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/exception/UserException.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u -r19c9010eff6be2e29657beed94349a978088650f -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 19c9010eff6be2e29657beed94349a978088650f)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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
===================================================================
diff -u -r19c9010eff6be2e29657beed94349a978088650f -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 19c9010eff6be2e29657beed94349a978088650f)
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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();
+ }
}
Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java
===================================================================
diff -u -rfc76a4bb4e5abc614e15b642e4015295b2912c0a -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java (.../FlashMessage.java) (revision fc76a4bb4e5abc614e15b642e4015295b2912c0a)
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java (.../FlashMessage.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -22,6 +22,7 @@
*/
package org.lamsfoundation.lams.util.wddx;
+import java.io.IOException;
import java.io.Serializable;
/**
@@ -104,4 +105,33 @@
sb.append("messageValue='" + getMessageValue() + "'; ");
return sb.toString();
}
+ public String serializeMessage()throws IOException{
+ String wddxPacket = null;
+ try{
+ wddxPacket = WDDXProcessor.serialize(this);
+ }catch(IOException ie){
+ throw new IOException("IOException occured while serializing " + ie.getMessage());
+ }
+ return wddxPacket;
+ }
+ public static FlashMessage getNoSuchUserExists(String methodName, Integer userID){
+ return new FlashMessage(methodName,
+ "No such User with a user_id of :" + userID + " exists",
+ ERROR);
+ }
+ public static FlashMessage getUserNotAuthorized(String methodName, Integer userID){
+ return new FlashMessage(methodName,
+ "User with user_id of:" + userID +" is not authorized to perfom this action:",
+ FlashMessage.ERROR);
+ }
+ public static FlashMessage getNoSuchWorkspaceFolderExsists(String methodName, Integer folderID){
+ return new FlashMessage(methodName,
+ "No such WorkspaceFolder with a workspace_folder_id of " + folderID +" exists",
+ FlashMessage.ERROR);
+ }
+ public static FlashMessage getNoSuchLearningDesignExists(String methodName, Long learningDesignID){
+ return new FlashMessage(methodName,
+ "No such LearningDesign with a learning_design_id of " + learningDesignID +" exists",
+ FlashMessage.ERROR);
+ }
}
Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java
===================================================================
diff -u -r044d9eb7becb79e6fd5992aee261c8665f808524 -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java (.../LDWDDXValueObjectFactory.java) (revision 044d9eb7becb79e6fd5992aee261c8665f808524)
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java (.../LDWDDXValueObjectFactory.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -529,8 +529,8 @@
* @return Hashtable
*/
public Hashtable buildLearningDesignObject(LearningDesign design){
- Hashtable designs = getCutDownLearningDesignDetails(design);
+ Hashtable designs = getCutDownLearningDesignDetails(design);
designs.put(WDDXTAGS.LEARNING_DESIGN_UIID,
(design.getLearningDesignUIID()!=null?design.getLearningDesignUIID():WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER));
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -0,0 +1,111 @@
+/*
+ * Created on Apr 1, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.workspace.dto;
+
+import java.util.Date;
+
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
+import org.lamsfoundation.lams.usermanagement.WorkspaceFolder;
+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 FolderContentDTO {
+
+ public static final String LESSON ="lesson";
+ public static final String DESIGN ="learningDesign";
+ public static final String FOLDER ="folder";
+
+ private String name;
+ private String description;
+ private Date creationDateTime;
+ private Date lastModifiedDateTime;
+ private String resourceType;
+ private Long resourceID;
+ private Integer permissionCode;
+
+ public FolderContentDTO(){
+
+ }
+
+ public FolderContentDTO(String name, String description,
+ Date creationDateTime, Date lastModifiedDateTime,
+ String resourceType, Long resourceID, Integer permissionCode) {
+ super();
+ this.name = name;
+ this.description = description;
+ this.creationDateTime = creationDateTime;
+ this.lastModifiedDateTime = lastModifiedDateTime;
+ this.resourceType = resourceType;
+ this.resourceID = resourceID;
+ this.permissionCode = permissionCode;
+ }
+ public FolderContentDTO(LearningDesign design, Integer permissionCode){
+ this.name = design.getTitle();
+ this.description = design.getDescription();
+ this.creationDateTime = design.getCreateDateTime();
+ this.lastModifiedDateTime = design.getLastModifiedDateTime();
+ this.resourceType = DESIGN;
+ this.resourceID = design.getLearningDesignId();
+ this.permissionCode = permissionCode;
+ }
+ public FolderContentDTO(WorkspaceFolder workspaceFolder, Integer permissionCode){
+ this.name = workspaceFolder.getName();
+ this.description = "Folder";
+ this.creationDateTime = workspaceFolder.getCreationDate();
+ this.lastModifiedDateTime = workspaceFolder.getLastModifiedDate();
+ this.resourceType = FOLDER;
+ this.resourceID = new Long(workspaceFolder.getWorkspaceFolderId().intValue());
+ this.permissionCode = permissionCode;
+ }
+ /**
+ * @return Returns the creationDateTime.
+ */
+ public Date getCreationDateTime() {
+ return creationDateTime!=null?creationDateTime:WDDXTAGS.DATE_NULL_VALUE;
+ }
+ /**
+ * @return Returns the description.
+ */
+ public String getDescription() {
+ return description!=null?description:WDDXTAGS.STRING_NULL_VALUE;
+ }
+ /**
+ * @return Returns the lastModifiedDateTime.
+ */
+ public Date getLastModifiedDateTime() {
+ return lastModifiedDateTime!=null?lastModifiedDateTime:WDDXTAGS.DATE_NULL_VALUE;
+ }
+ /**
+ * @return Returns the name.
+ */
+ public String getName() {
+ return name!=null?name:WDDXTAGS.STRING_NULL_VALUE;
+ }
+ /**
+ * @return Returns the permissionCode.
+ */
+ public Integer getPermissionCode() {
+ return permissionCode!=null?permissionCode:WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER;
+ }
+ /**
+ * @return Returns the resourceID.
+ */
+ public Long getResourceID() {
+ return resourceID!=null?resourceID:WDDXTAGS.NUMERIC_NULL_VALUE_LONG;
+ }
+ /**
+ * @return Returns the resourceType.
+ */
+ public String getResourceType() {
+ return resourceType!=null?resourceType:WDDXTAGS.STRING_NULL_VALUE;
+ }
+}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/exception/WorkspaceFolderException.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/workspace/exception/WorkspaceFolderException.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/exception/WorkspaceFolderException.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -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.workspace.exception;
+
+/**
+ * @author Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WorkspaceFolderException extends Exception {
+
+ public WorkspaceFolderException(){
+
+ }
+ public WorkspaceFolderException(String message){
+ super(message);
+ }
+
+}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -0,0 +1,34 @@
+/*
+ * Created on Apr 1, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.workspace.service;
+
+import java.io.IOException;
+
+/**
+ * @author Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public interface IWorkspaceManagementService {
+
+ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws IOException;
+
+ /**
+ * This method creates a new folder under the given parentFolder
+ * inside the user's default workspace.
+ *
+ * @param parentFolderID The parent_folder_id under which the new folder
+ * has to be created
+ * @param name The name of the new folder
+ * @param userID The user_id of the user for whom the folder is being created
+ * @return String The folder_id and name of the newly created folder in WDDX format
+ * @throws IOException
+ */
+ public String createFolderForFlash(Integer parentFolderID, String name, Integer userID)throws IOException;
+
+}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -0,0 +1,374 @@
+/*
+ * Created on Apr 1, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.workspace.service;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.lamsfoundation.lams.authoring.service.IAuthoringService;
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
+import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO;
+import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.Workspace;
+import org.lamsfoundation.lams.usermanagement.WorkspaceFolder;
+import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IUserDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceFolderDAO;
+import org.lamsfoundation.lams.usermanagement.exception.UserException;
+import org.lamsfoundation.lams.util.wddx.FlashMessage;
+import org.lamsfoundation.lams.util.wddx.WDDXTAGS;
+import org.lamsfoundation.lams.workspace.dto.FolderContentDTO;
+import org.lamsfoundation.lams.workspace.exception.WorkspaceFolderException;
+
+/**
+ * @author Manpreet Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WorkspaceManagementService implements IWorkspaceManagementService{
+
+ private FlashMessage flashMessage;
+
+ public static final Integer AUTHORING = new Integer(1);
+ public static final Integer MONITORING = new Integer(2);
+
+ protected IUserDAO userDAO;
+ protected ILearningDesignDAO learningDesignDAO;
+ protected IWorkspaceFolderDAO workspaceFolderDAO;
+ protected IWorkspaceDAO workspaceDAO;
+ protected IOrganisationDAO organisationDAO;
+
+ protected IAuthoringService authoringService;
+
+
+ /**
+ * @param authoringService The authoringService to set.
+ */
+ public void setAuthoringService(IAuthoringService authoringService) {
+ this.authoringService = authoringService;
+ }
+ /**
+ * @param organisationDAO The organisationDAO to set.
+ */
+ public void setOrganisationDAO(IOrganisationDAO organisationDAO) {
+ this.organisationDAO = organisationDAO;
+ }
+ /**
+ * @param workspaceDAO The workspaceDAO to set.
+ */
+ public void setWorkspaceDAO(IWorkspaceDAO workspaceDAO) {
+ this.workspaceDAO = workspaceDAO;
+ }
+ /**
+ * @param workspaceFolderDAO The workspaceFolderDAO to set.
+ */
+ public void setWorkspaceFolderDAO(IWorkspaceFolderDAO workspaceFolderDAO) {
+ this.workspaceFolderDAO = workspaceFolderDAO;
+ }
+ /**
+ * @param learningDesignDAO The learningDesignDAO to set.
+ */
+ public void setLearningDesignDAO(ILearningDesignDAO learningDesignDAO) {
+ this.learningDesignDAO = learningDesignDAO;
+ }
+ /**
+ * @param userDAO The userDAO to set.
+ */
+ public void setUserDAO(IUserDAO userDAO) {
+ this.userDAO = userDAO;
+ }
+ public void deleteFolder(Integer folderID){
+ WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(folderID);
+ if(workspaceFolder!=null){
+ workspaceFolderDAO.delete(workspaceFolder);
+ }
+ }
+ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws IOException{
+ User user = userDAO.getUserById(userID);
+ WorkspaceFolder workspaceFolder = null;
+ Integer permissions = null;
+ if(user!=null){
+ workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(workspaceFolderID);
+ if(workspaceFolder!=null){
+ permissions = getPermissions(workspaceFolder,user);
+ if(permissions!=WorkspaceFolder.NO_ACCESS){
+ Vector contentDTO = new Vector();
+ getFolderContent(workspaceFolder,permissions,mode,contentDTO);
+ if(workspaceFolder.hasSubFolders())
+ getSubFolderDetails(workspaceFolder,permissions,contentDTO);
+ flashMessage = new FlashMessage("getFolderContents",createFolderContentPacket(workspaceFolder,contentDTO));
+ }
+ else
+ flashMessage = new FlashMessage("getFolderContents",
+ "Access Denied for user with user_id:" + userID,
+ FlashMessage.ERROR);
+ }
+ else
+ flashMessage = new FlashMessage("getFolderContents",
+ "No such workspaceFolder with workspace_folder_id of:" + workspaceFolderID + " exists",
+ FlashMessage.ERROR);
+ }else
+ flashMessage = FlashMessage.getNoSuchUserExists("getFolderContents",userID);
+ return flashMessage.serializeMessage();
+
+ }
+ private void getFolderContent(WorkspaceFolder workspaceFolder, Integer permissions, Integer mode,Vector contentDTO){
+
+ Integer parentFolderId = workspaceFolder.getParentWorkspaceFolder()!=null?
+ workspaceFolder.getParentWorkspaceFolder().getWorkspaceFolderId():
+ WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER;
+ List designs = null;
+
+ if(mode==AUTHORING)
+ designs = learningDesignDAO.getAllLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+ else
+ designs = learningDesignDAO.getAllValidLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+
+ getFolderContentDTO(designs,permissions,contentDTO);
+ }
+ private void getSubFolderDetails(WorkspaceFolder workspaceFolder,Integer permissions, Vector subFolderContent){
+ Iterator iterator = workspaceFolder.getChildWorkspaceFolders().iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)iterator.next();
+ subFolderContent.add(new FolderContentDTO(subFolder,permissions));
+ }
+ }
+ /**
+ * This method returns the permissions specific to the given
+ * workspaceFolder
for the given user.
+ *
+ * @param workspaceFolder The workspaceFolder for which we need the permissions
+ * @param user The user for whom these permissions are set.
+ * @return Integer The permissions
+ */
+ public Integer getPermissions(WorkspaceFolder workspaceFolder, User user){
+ Integer permission = null;
+ WorkspaceFolder userRootFolder = user.getWorkspace().getRootFolder();
+
+ if(isUserOwner(workspaceFolder,user))
+ permission = WorkspaceFolder.OWNER_ACCESS;
+ else if (isSubFolder(workspaceFolder,userRootFolder))
+ {
+ if(isRunSequencesFolder(workspaceFolder,user))
+ permission = WorkspaceFolder.READ_ACCESS;
+ else
+ permission = WorkspaceFolder.OWNER_ACCESS;
+ }
+ else if (isParentOrganisationFolder(workspaceFolder,user))
+ permission = WorkspaceFolder.MEMBERSHIP_ACCESS;
+ else if(user.hasMemberAccess(workspaceFolder))
+ permission = WorkspaceFolder.MEMBERSHIP_ACCESS;
+ else
+ permission = WorkspaceFolder.NO_ACCESS;
+
+ return permission;
+ }
+ /** This method checks if the given workspaceFolder is a subFolder of the
+ * given rootFolder*/
+ private boolean isSubFolder(WorkspaceFolder workspaceFolder,WorkspaceFolder rootFolder){
+ List subFolders = workspaceFolderDAO.getWorkspaceFolderByParentFolder(rootFolder.getWorkspaceFolderId());
+ Iterator iterator = subFolders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)iterator.next();
+ if(subFolder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ }
+ return false;
+
+ }
+ /**
+ * Assuming that there is ONLY ONE runSequences folder per user,
+ * which is created at the time the User is created, this method
+ * checks if the given workspaceFolder
is the runSequences folder
+ * for the given user.
+ *
+ * @param workspaceFolder
+ * @param user
+ * @return
+ */
+ public boolean isRunSequencesFolder(WorkspaceFolder workspaceFolder, User user){
+ WorkspaceFolder runSequencesFolder = workspaceFolderDAO.getRunSequencesFolderForUser(user.getUserId());
+ if(workspaceFolder.getWorkspaceFolderId()==runSequencesFolder.getWorkspaceFolderId())
+ return true;
+ else
+ return false;
+ }
+ /**
+ * This method checks if the given workspaceFolder
is the
+ * workspaceFolder of the parentOrganisation of which the user is a member.
+ *
+ * @param workspaceFolder
+ * @param user
+ * @return
+ */
+ public boolean isParentOrganisationFolder(WorkspaceFolder workspaceFolder, User user){
+ WorkspaceFolder parentOrganisationFolder = user.getBaseOrganisation().getWorkspace().getRootFolder();
+ if(parentOrganisationFolder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ else
+ return false;
+ }
+ private Vector getFolderContentDTO(List designs, Integer permissions,Vector folderContent){
+ Iterator iterator = designs.iterator();
+ while(iterator.hasNext()){
+ LearningDesign design = (LearningDesign)iterator.next();
+ folderContent.add(new FolderContentDTO(design,permissions));
+ }
+ return folderContent;
+
+ }
+ private Hashtable createFolderContentPacket(WorkspaceFolder workspaceFolder, Vector contents){
+ Hashtable packet = new Hashtable();
+ packet.put("parentWorkspaceFolderID", workspaceFolder.getParentWorkspaceFolder().getWorkspaceFolderId());
+ packet.put("workspaceFolderID", workspaceFolder.getWorkspaceFolderId());
+ packet.put("contents", contents);
+ return packet;
+ }
+ public String copyFolder(Integer folderID,Integer newWorkspaceFolderID,Integer userID)throws IOException{
+
+ WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(folderID);
+ if(workspaceFolder!=null){
+ try{
+ WorkspaceFolder newFolder = createFolder(newWorkspaceFolderID,workspaceFolder.getName(),userID);
+ copyRootContent(workspaceFolder,newFolder,userID);
+ if(workspaceFolder.hasSubFolders())
+ createSubFolders(workspaceFolder, newFolder,userID);
+ flashMessage = new FlashMessage("copyFolder",createCopyFolderPacket(newFolder));
+ }catch(UserException ue){
+ flashMessage = FlashMessage.getNoSuchUserExists("copyFolder",userID);
+ }catch(WorkspaceFolderException we){
+ flashMessage = FlashMessage.getNoSuchWorkspaceFolderExsists("copyFolder", newWorkspaceFolderID);
+ }
+ }
+ return flashMessage.serializeMessage();
+
+ }
+ private Hashtable createCopyFolderPacket(WorkspaceFolder workspaceFolder){
+ Hashtable packet = new Hashtable();
+ packet.put("workspaceFolderID", workspaceFolder.getWorkspaceFolderId());
+ packet.put("workspaceID",workspaceFolder.getWorkspaceID());
+ return packet;
+ }
+ public boolean isUserPermitted(WorkspaceFolder workspaceFolder, User user){
+ Integer permissions = getPermissions(workspaceFolder, user);
+ if(permissions!=WorkspaceFolder.NO_ACCESS)
+ return true;
+ else
+ return false;
+ }
+ public boolean isUserOwner(WorkspaceFolder workspaceFolder, User user){
+ List folders = workspaceFolderDAO.getWorkspaceFolderByUser(user.getUserId());
+ if(folders!=null && folders.size()!=0){
+ Iterator iterator =folders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder folder = (WorkspaceFolder)iterator.next();
+ if(folder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ }
+ }
+ return false;
+ }
+ public void copyRootContent(WorkspaceFolder workspaceFolder,WorkspaceFolder targetWorkspaceFolder, Integer userID)throws UserException{
+ User user = userDAO.getUserById(userID);
+ if(user==null)
+ throw new UserException("No such user with a userID of " + userID + "exists");
+
+ List designs = learningDesignDAO.getAllLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+ if(designs!=null && designs.size()!=0){
+ Iterator iterator = designs.iterator();
+ while(iterator.hasNext()){
+ LearningDesign design = (LearningDesign)iterator.next();
+ authoringService.copyLearningDesign(design,
+ new Integer(LearningDesign.COPY_TYPE_NONE),
+ user,targetWorkspaceFolder);
+ }
+ }
+ }
+ private WorkspaceFolder createFolder(Integer parentFolderID, String name, Integer userID) throws UserException,WorkspaceFolderException{
+ WorkspaceFolder parentFolder = workspaceFolderDAO.getWorkspaceFolderByID(parentFolderID);
+ User user =null;
+ Workspace workspace =null;
+
+ if(parentFolder!=null){
+
+ boolean nameExists = true;
+ while(nameExists){
+ nameExists = ifNameExists(parentFolder,name);
+ if(nameExists)
+ name =name + "C";
+ else
+ break;
+ }
+
+ user = userDAO.getUserById(userID);
+ if(user!=null){
+ workspace = user.getWorkspace();
+ WorkspaceFolder workspaceFolder = new WorkspaceFolder(name,
+ workspace.getWorkspaceId(),
+ parentFolder,
+ userID,
+ new Date(),
+ new Date(),
+ WorkspaceFolder.NORMAL);
+ workspaceFolderDAO.insert(workspaceFolder);
+ return workspaceFolder;
+ }else
+ throw new UserException("No such user with userID of " + userID + "exists");
+
+ }else
+ throw new WorkspaceFolderException("No such workspaceFolder with a workspace_folder_id of " + parentFolderID +" exists");
+ }
+ /**
+ * TODO For now assuming that the folder to be created would be of type NORMAL.
+ * But the type has to be passed in the near future indicating what kind of
+ * folder should be created (NORMAL/RUN SEQUENCES)
+ * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#createFolder(java.lang.Integer, java.lang.String, java.lang.Integer)
+ */
+ public String createFolderForFlash(Integer parentFolderID, String name, Integer userID)throws IOException{
+ try{
+ WorkspaceFolder newFolder = createFolder(parentFolderID,name,userID);
+ Hashtable table = new Hashtable();
+ table.put("folderID",newFolder.getWorkspaceFolderId());
+ table.put("name",newFolder.getName());
+ flashMessage = new FlashMessage("createFolderForFlash",table);
+
+ }catch(WorkspaceFolderException we){
+ flashMessage = FlashMessage.getNoSuchWorkspaceFolderExsists("createFolderForFlash",parentFolderID);
+ }catch(UserException ue){
+ flashMessage = FlashMessage.getNoSuchUserExists("createFolderForFlash",userID);
+ }
+ return flashMessage.serializeMessage();
+ }
+ private boolean ifNameExists(WorkspaceFolder targetFolder,String folderName){
+ List folders = workspaceFolderDAO.getWorkspaceFolderByParentFolder(targetFolder.getWorkspaceFolderId());
+ if(folders!=null && folders.size()!=0){
+ Iterator iterator = folders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder folder = (WorkspaceFolder)iterator.next();
+ if(folder.getName().equalsIgnoreCase(folderName))
+ return true;
+ }
+ }
+ return false;
+ }
+ public void createSubFolders(WorkspaceFolder workspaceFolder, WorkspaceFolder newFolder, Integer userID) throws UserException, WorkspaceFolderException{
+ Iterator subFoldersIterator = workspaceFolder.getChildWorkspaceFolders().iterator();
+ while(subFoldersIterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)subFoldersIterator.next();
+ WorkspaceFolder newSubFolder = createFolder(newFolder.getWorkspaceFolderId(),subFolder.getName(),userID);
+ copyRootContent(subFolder,newSubFolder,userID);
+ if(subFolder.hasSubFolders())
+ createSubFolders(subFolder,newSubFolder,userID);
+ }
+ }
+}
Index: lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java
===================================================================
diff -u -r174fa126cd5cc9d88eb39d6596af0453a2b77e49 -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java (.../TestToolDAO.java) (revision 174fa126cd5cc9d88eb39d6596af0453a2b77e49)
+++ lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java (.../TestToolDAO.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -54,7 +54,7 @@
assertEquals("verify service name","surveyService",testTool.getServiceName());
assertEquals("verify display name","Survey",testTool.getToolDisplayName());
assertEquals("verify default content id",6,testTool.getDefaultToolContentId());
- assertTrue("verify support grouping",!testTool.getSupportsGrouping());
+ // assertTrue("verify support grouping",!testTool.getSupportsGrouping());
assertTrue("verify support define later",!testTool.getSupportsDefineLater());
}
public void testGetAllTools(){
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/TestUserManagementService.java
===================================================================
diff -u
--- lams_common/test/java/org/lamsfoundation/lams/usermanagement/TestUserManagementService.java (revision 0)
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/TestUserManagementService.java (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -0,0 +1,87 @@
+/*
+ * 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;
+
+import java.io.IOException;
+import java.util.Date;
+import org.lamsfoundation.lams.AbstractLamsTestCase;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.AuthenticationMethodDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.OrganisationDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.OrganisationTypeDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.RoleDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.UserDAO;
+import org.lamsfoundation.lams.usermanagement.service.UserManagementService;
+
+/**
+ * @author Manpreet Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TestUserManagementService extends AbstractLamsTestCase {
+
+ protected UserDAO userDAO;
+ protected RoleDAO roleDAO;
+ protected OrganisationDAO organisationDAO;
+ protected OrganisationTypeDAO organisationTypeDAO;
+ protected UserManagementService userManagementService;
+ protected AuthenticationMethodDAO authenticationMethodDAO;
+
+ public TestUserManagementService(String name){
+ super(name);
+ }
+ protected void setUp()throws Exception{
+ super.setUp();
+ userDAO =(UserDAO)context.getBean("userDAO");
+ organisationDAO =(OrganisationDAO)context.getBean("organisationDAO");
+ organisationTypeDAO =(OrganisationTypeDAO)context.getBean("organisationTypeDAO");
+ userManagementService = (UserManagementService)context.getBean("userManagementService");
+ authenticationMethodDAO =(AuthenticationMethodDAO)context.getBean("authenticationMethodDAO");
+ roleDAO = (RoleDAO)context.getBean("roleDAO");
+ }
+
+ /* (non-Javadoc)
+ * @see org.lamsfoundation.lams.AbstractLamsTestCase#getContextConfigLocation()
+ */
+ protected String[] getContextConfigLocation() {
+ return new String[] {"applicationContext.xml","org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml"};
+ }
+ public void testSaveOrganisation(){
+ Organisation organisation = new Organisation("Test Organisation",
+ "Test Organisation Description",
+ new Date(),
+ organisationTypeDAO.getOrganisationTypeById(new Integer(1)));
+
+ Integer organisationID = userManagementService.saveOrganisation(organisation,new Integer(1));
+ assertNotNull(organisationID);
+ }
+ public void saveUser(){
+ User user = new User();
+ user.setLogin("Monu");
+ user.setPassword("Monu");
+ user.setDisabledFlag(new Boolean(false));
+ user.setCreateDate(new Date());
+ user.setAuthenticationMethod(authenticationMethodDAO.getAuthenticationMethodById(new Integer(2)));
+ user.setBaseOrganisation(organisationDAO.getOrganisationById(new Integer(1)));
+ user.setUserOrganisationID(new Integer(1));
+ assertNotNull(userManagementService.saveUser(user, new Integer(4)));
+
+ }
+ public void testMoveLearningDesign()throws IOException{
+ String packet = userManagementService.moveLearningDesign(new Long(1),new Integer(4),new Integer(1));
+ System.out.println(packet);
+ }
+ public void testGetOrganisationsForUserByRole()throws IOException{
+ String packet = userManagementService.getWDDXForOrganisationsForUserByRole(new Integer(4),"AUTHOR");
+ System.out.println(packet);
+ }
+ public void testGetUsersFromOrganisationByRole() throws IOException{
+ String packet = userManagementService.getUsersFromOrganisationByRole(new Integer(4),"AUTHOR");
+ System.out.println(packet);
+ }
+
+}
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java
===================================================================
diff -u -r19c9010eff6be2e29657beed94349a978088650f -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java (.../OrganisationDAOTest.java) (revision 19c9010eff6be2e29657beed94349a978088650f)
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java (.../OrganisationDAOTest.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -5,16 +5,9 @@
*/
package org.lamsfoundation.lams.usermanagement.dao.hibernate;
-import java.util.Date;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
+import org.lamsfoundation.lams.AbstractLamsTestCase;
import org.lamsfoundation.lams.usermanagement.Organisation;
-import org.lamsfoundation.lams.usermanagement.Workspace;
-import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO;
-import junit.framework.TestCase;
-
/**
* TODO Add description here
*
@@ -24,32 +17,30 @@
*
* @author Fei Yang
*/
-public class OrganisationDAOTest extends TestCase {
- private Organisation organisation = null;
- private String errorMessage = "";
- private OrganisationTypeDAO organisationDAO = null;
- private ApplicationContext ctx;
+public class OrganisationDAOTest extends AbstractLamsTestCase {
+ private Organisation organisation = null;
+ private OrganisationDAO organisationDAO = null;
+
+
+ public OrganisationDAOTest(String name){
+ super(name);
+ }
protected void setUp() throws Exception{
- ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
- organisationDAO = (OrganisationTypeDAO)ctx.getBean("organisationDAO");
+ super.setUp();
+ organisationDAO = (OrganisationDAO)context.getBean("organisationDAO");
}
protected void tearDown() throws Exception{
organisationDAO = null;
+ }
+ public void testGetOrganisationByWorkspaceeID(){
+ organisation = organisationDAO.getOrganisationByWorkspaceID(new Integer(1));
+ assertNotNull(organisation.getOrganisationId());
}
-
- public void testSaveOrganisation(){
- /*
- IOrganisationTypeDAO organisationTypeDAO = (IOrganisationTypeDAO)ctx.getBean("organisationTypeDAO");
- organisation = new Organisation("Root","",null,new Date(), new Workspace(), organisationTypeDAO.getOrganisationTypeById(new Integer(1)),null,null);
- organisationTypeDAO = null;
- organisationDAO.saveOrganisation(organisation);
- assertTrue(organisationDAO.getAllOrganisations().size()==1);
- */
+ protected String[] getContextConfigLocation() {
+ return new String[] {"WEB-INF/spring/learningDesignApplicationContext.xml",
+ "WEB-INF/spring/applicationContext.xml"};
}
- public void testGetOrganisationById(){
- }
-
}
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java
===================================================================
diff -u -r19c9010eff6be2e29657beed94349a978088650f -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae
--- lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java (.../UserDAOTest.java) (revision 19c9010eff6be2e29657beed94349a978088650f)
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java (.../UserDAOTest.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae)
@@ -5,12 +5,15 @@
*/
package org.lamsfoundation.lams.usermanagement.dao.hibernate;
-import junit.framework.TestCase;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
+import java.util.Date;
+import org.lamsfoundation.lams.AbstractLamsTestCase;
+import org.lamsfoundation.lams.usermanagement.Organisation;
+import org.lamsfoundation.lams.usermanagement.Role;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.UserOrganisation;
+import org.lamsfoundation.lams.usermanagement.UserOrganisationRole;
+
/**
* TODO Add description here
*
@@ -20,22 +23,73 @@
*
* @author Fei Yang
*/
-public class UserDAOTest extends TestCase {
+public class UserDAOTest extends AbstractLamsTestCase{
private User user = null;
private UserDAO userDAO = null;
- private ApplicationContext ctx;
+ protected RoleDAO roleDAO;
+ protected OrganisationDAO organisationDAO;
+ protected OrganisationTypeDAO organisationTypeDAO;
+ protected AuthenticationMethodDAO authenticationMethodDAO;
- protected void setUp() throws Exception{
- ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
- userDAO = (UserDAO)ctx.getBean("userDAO");
- }
+ protected UserOrganisationDAO userOrganisationDAO;
+ protected UserOrganisationRoleDAO userOrganisationRoleDAO;
- protected void tearDown() throws Exception{
- userDAO = null;
- }
- public void testGetAllUsers(){
- assertTrue(userDAO.getAllUsers().size()==0);
+ public UserDAOTest(String name){
+ super(name);
+ }
+ protected void setUp() throws Exception{
+ super.setUp();
+ userDAO = (UserDAO)context.getBean("userDAO");
+ organisationDAO = (OrganisationDAO)context.getBean("organisationDAO");
+
+ organisationTypeDAO =(OrganisationTypeDAO)context.getBean("organisationTypeDAO");
+ authenticationMethodDAO =(AuthenticationMethodDAO)context.getBean("authenticationMethodDAO");
+
+ roleDAO = (RoleDAO)context.getBean("roleDAO");
+ userOrganisationDAO = (UserOrganisationDAO)context.getBean("userOrganisationDAO");
+ userOrganisationRoleDAO = (UserOrganisationRoleDAO)context.getBean("userOrganisationRoleDAO");
+ }
+ public void testGetUser(){
+ user = userDAO.getUserById(new Integer(2));
+ assertNotNull(user.getLogin());
}
-
+ public void testIsMember(){
+ Organisation organisation = organisationDAO.getOrganisationById(new Integer(4));
+ user = userDAO.getUserById(new Integer(4));
+ boolean member = user.isMember(organisation);
+ assertTrue(member);
+ }
+ protected String[] getContextConfigLocation() {
+ return new String[] {"WEB-INF/spring/applicationContext.xml","WEB-INF/spring/learningDesignApplicationContext.xml"};
+ }
+ public void testSaveUser(){
+ User user = new User();
+ user.setLogin("MiniMinhas");
+ user.setPassword("MiniMinhas");
+ user.setDisabledFlag(new Boolean(false));
+ user.setCreateDate(new Date());
+ user.setAuthenticationMethod(authenticationMethodDAO.getAuthenticationMethodById(new Integer(2)));
+ user.setBaseOrganisation(organisationDAO.getOrganisationById(new Integer(1)));
+ user.setUserOrganisationID(new Integer(1));
+ userDAO.saveUser(user);
+ user.setUserOrganisationID(createUserOrganisation(user));
+ userDAO.updateUser(user);
+ }
+ private Integer createUserOrganisation(User user){
+ UserOrganisation userOrganisation = new UserOrganisation();
+ userOrganisation.setOrganisation(user.getBaseOrganisation());
+ userOrganisation.setUser(user);
+ userOrganisationDAO.saveUserOrganisation(userOrganisation);
+ userOrganisation.addUserOrganisationRole(createUserOrganisationRole(userOrganisation));
+ userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation);
+ return userOrganisation.getUserOrganisationId();
+ }
+ private UserOrganisationRole createUserOrganisationRole(UserOrganisation userOrganisation){
+ UserOrganisationRole userOrganisationRole = new UserOrganisationRole();
+ userOrganisationRole.setUserOrganisation(userOrganisation);
+ userOrganisationRole.setRole(roleDAO.getRoleByName(Role.STAFF));
+ userOrganisationRoleDAO.saveUserOrganisationRole(userOrganisationRole);
+ return userOrganisationRole;
+ }
}