Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r65efb0abb529cafc1977e284e2c9a4ed33722334 -rc3c499fa8b7a5487229a59411af3710fa878b93c Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -100,7 +100,6 @@ import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.User; -import org.lamsfoundation.lams.usermanagement.Workspace; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; @@ -1701,7 +1700,7 @@ WorkspaceFolder folder = null; if (organisationID == null) { - folder = user.getWorkspace().getDefaultFolder(); + folder = user.getWorkspaceFolder(); learningDesign.setCopyTypeID(LearningDesign.COPY_TYPE_NONE); } else { learningDesign.setCopyTypeID(LearningDesign.COPY_TYPE_LESSON); @@ -1712,10 +1711,7 @@ if ((organisation == null) || (folder != null)) { break; } - Workspace workspace = organisation.getWorkspace(); - if (workspace != null) { - folder = workspace.getDefaultRunSequencesFolder(); - } + folder = organisation.getRunSequencesFolder(); if (folder == null) { organisation = organisation.getParentOrganisation(); } Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java (.../PedagogicalPlannerAction.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -1362,8 +1362,8 @@ @SuppressWarnings("unchecked") private WorkspaceFolder getCommonWorkspaceFolderId(Integer userID) { String name = PedagogicalPlannerAction.PLANNER_FOLDER_NAME; - WorkspaceFolder parentFolder = getUserManagementService().getRootOrganisation().getWorkspace() - .getDefaultFolder(); + + WorkspaceFolder parentFolder = getUserManagementService().getRootOrganisation().getNormalFolder(); Integer workspaceFolderType = WorkspaceFolder.PUBLIC_SEQUENCES; Map properties = new HashMap(); @@ -1377,7 +1377,7 @@ if ((workspaceFolderList != null) && (workspaceFolderList.size() > 0)) { workspaceFolder = workspaceFolderList.get(0); } else { - workspaceFolder = new WorkspaceFolder(name, null, parentFolder, userID, new Date(), new Date(), + workspaceFolder = new WorkspaceFolder(name, parentFolder, userID, new Date(), new Date(), WorkspaceFolder.PUBLIC_SEQUENCES); PedagogicalPlannerAction.userManagementService.save(workspaceFolder); } @@ -1775,7 +1775,7 @@ // if temporary copy (only for browsing) was edited and now saved, // we move it to user's folder as a hard copy User user = getUser(); - WorkspaceFolder userFolder = user.getWorkspace().getDefaultFolder(); + WorkspaceFolder userFolder = user.getWorkspaceFolder(); learningDesign.setWorkspaceFolder(userFolder); } getAuthoringService().saveLearningDesign(learningDesign); Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -50,7 +50,6 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; -import org.lamsfoundation.lams.usermanagement.Workspace; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; import org.lamsfoundation.lams.usermanagement.exception.UserException; @@ -260,8 +259,7 @@ public Vector getFolderContentsExcludeHome(Integer userID, WorkspaceFolder folder, Integer mode) throws UserAccessDeniedException, RepositoryCheckedException { User user = (User) baseDAO.find(User.class, userID); - return getFolderContentsInternal(user, folder, mode, "getFolderContentsExcludeHome", - (user.getWorkspace() != null) ? user.getWorkspace().getDefaultFolder() : null); + return getFolderContentsInternal(user, folder, mode, "getFolderContentsExcludeHome", user.getWorkspaceFolder()); } @Override @@ -699,20 +697,16 @@ User user = (User) baseDAO.find(User.class, userID); if (user != null) { - Workspace workspace = user.getWorkspace(); - WorkspaceFolder workspaceFolder = new WorkspaceFolder(name, workspace.getWorkspaceId(), parentFolder, - userID, new Date(), new Date(), newWorkspaceFolderType); + WorkspaceFolder workspaceFolder = new WorkspaceFolder(name, parentFolder, userID, new Date(), + new Date(), newWorkspaceFolderType); baseDAO.insert(workspaceFolder); return workspaceFolder; - } else { + } throw new UserException(messageService.getMessage("no.such.user", new Object[] { userID })); } - - } else { throw new WorkspaceFolderException( messageService.getMessage("no.such.workspace", new Object[] { parentFolderID })); } - } private boolean ifNameExists(WorkspaceFolder targetFolder, String folderName) { List folders = baseDAO.findByProperty(WorkspaceFolder.class, "parentWorkspaceFolder.workspaceFolderId", @@ -842,14 +836,8 @@ || OrganisationState.REMOVED.equals(orgStateId))) { // Only courses have folders - classes don't! - Workspace workspace = org.getWorkspace(); + WorkspaceFolder orgFolder = org.getNormalFolder(); - if (workspace != null) { - // TODO get all the folders for the workspace but only return those that are at the - // "top" of the hierarchy - // for this user. Not needed at present but will be needed when we have multiple folders - // in a user's workspace (ie shared folders) - WorkspaceFolder orgFolder = workspace.getDefaultFolder(); if (orgFolder != null) { // Check if the user has write access, which is available // only if the user has an AUTHOR, TEACHER or STAFF role. If @@ -864,7 +852,6 @@ } } } - } } } else { @@ -892,25 +879,14 @@ User user = (User) baseDAO.find(User.class, userID); if (user != null) { - // TODO get all the folders for the workspace but only return those that are at the "top" of the hierarchy - // for this user. Not needed at present but will be needed when we have multiple folders in a user's - // workspace (ie shared folders) - Workspace workspace = user.getWorkspace(); + WorkspaceFolder workspaceFolder = user.getWorkspaceFolder(); - if (workspace != null) { - WorkspaceFolder privateFolder = workspace.getDefaultFolder(); - if (privateFolder != null) { - Integer permissions = getPermissions(privateFolder, user); - return new FolderContentDTO(privateFolder, permissions, user); - } else { - log.warn("getUserWorkspaceFolder: User " + userID - + " does not have a root folder. Returning no folders."); + if (workspaceFolder != null) { + Integer permissions = getPermissions(workspaceFolder, user); + return new FolderContentDTO(workspaceFolder, permissions, user); } + log.warn("getUserWorkspaceFolder: User " + userID + " does not have a root folder. Returning no folders."); } else { - log.warn( - "getUserWorkspaceFolder: User " + userID + " does not have a workspace. Returning no folders."); - } - } else { log.warn("getUserWorkspaceFolder: User " + userID + " does not exist. Returning no folders."); } Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml =================================================================== diff -u -r5e63656a12c02f7476564e278b43ff4ce86ac930 -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml (.../Organisation.hbm.xml) (revision 5e63656a12c02f7476564e278b43ff4ce86ac930) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Organisation.hbm.xml (.../Organisation.hbm.xml) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -4,24 +4,20 @@ "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" > - + - @hibernate.class table="lams_organisation" + @hibernate.class + table="lams_organisation" true - + @hibernate.id generator-class="native" type="java.lang.Integer" column="organisation_id" @@ -45,96 +41,94 @@ - + - @hibernate.property column="description" length="250" + @hibernate.property column="description" + length="250" - + - @hibernate.property column="create_date" length="19" + @hibernate.property column="create_date" + length="19" not-null="true" - - + + @hibernate.property column="admin_add_new_users" length="1" not-null="true" - + - @hibernate.property column="admin_browse_all_users" + @hibernate.property + column="admin_browse_all_users" length="1" not-null="true" - + @hibernate.property column="admin_change_status" length="1" not-null="true" - + @hibernate.property column="admin_create_guest" length="1" not-null="true" - - + + - @hibernate.property column="enable_course_notifications" + @hibernate.property + column="enable_course_notifications" length="1" not-null="true" - - + + - @hibernate.property column="enable_monitor_gradebook" + @hibernate.property + column="enable_monitor_gradebook" length="1" not-null="true" - - + + - @hibernate.property column="enable_learner_gradebook" + @hibernate.property + column="enable_learner_gradebook" length="1" not-null="true" - - + + - @hibernate.property column="enable_single_activity_lessons" + @hibernate.property + column="enable_single_activity_lessons" length="1" not-null="true" - - + + @hibernate.property column="enable_live_edit" length="1" not-null="true" @@ -143,12 +137,13 @@ - + + class="org.lamsfoundation.lams.usermanagement.User" not-null="true"> - @hibernate.many-to-one not-null="true" @hibernate.column + @hibernate.many-to-one not-null="true" + @hibernate.column name="created_by" @@ -159,28 +154,20 @@ class="org.lamsfoundation.lams.usermanagement.OrganisationState" not-null="true"> - @hibernate.many-to-one not-null="true" @hibernate.column + @hibernate.many-to-one not-null="true" + @hibernate.column name="organisation_state_id" - - - - @hibernate.many-to-one cascade="all" not-null="false" - @hibernate.column name="workspace_id" - - - - @hibernate.many-to-one not-null="true" @hibernate.column + @hibernate.many-to-one not-null="true" + @hibernate.column name="organisation_type_id" @@ -192,7 +179,8 @@ @hibernate.set lazy="true" inverse="true" cascade="all-delete-orphan" - @hibernate.collection-key column="organisation_id" + @hibernate.collection-key + column="organisation_id" @hibernate.collection-one-to-many class="org.lamsfoundation.lams.usermanagement.UserOrganisation" @@ -208,7 +196,8 @@ - @hibernate.set lazy="true" inverse="true" cascade="none" + @hibernate.set lazy="true" inverse="true" + cascade="none" @hibernate.collection-key column="parent_organisation_id" @@ -221,8 +210,7 @@ - + - @hibernate.set lazy="true" inverse="true" cascade="none" + @hibernate.set lazy="true" inverse="true" + cascade="none" @hibernate.collection-key column="organisation_id" @@ -248,24 +237,30 @@ - + + + + + + + + - @hibernate.many-to-one not-null="true" @hibernate.column + @hibernate.many-to-one not-null="true" + @hibernate.column name="locale_id" - + + update="true" insert="true" column="ordered_lesson_ids" length="65535" /> Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml =================================================================== diff -u -r8c5a5a0ddaff5aca987988c2e089234996b15d1f -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision 8c5a5a0ddaff5aca987988c2e089234996b15d1f) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/User.hbm.xml (.../User.hbm.xml) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -2,583 +2,412 @@ - + - - http://boss.bekk.no/boss/middlegen/ - http://www.hibernate.org/ ---> + - - - - @hibernate.class - table="lams_user" - - true + + @hibernate.class + table="lams_user" + + true - + - - - @hibernate.id - generator-class="native" - type="java.lang.Integer" - column="user_id" + + + @hibernate.id + generator-class="native" + type="java.lang.Integer" + column="user_id" - - - + + + - - true - - @hibernate.property - column="login" - unique="true" - length="255" - not-null="true" - - - - - @hibernate.property - column="password" - length="64" - not-null="true" - - - - - @hibernate.property - column="salt" - length="64" - not-null="false" - - - - - @hibernate.property - column="title" - length="32" - - - - - @hibernate.property - column="first_name" - length="128" - - - - - @hibernate.property - column="last_name" - length="128" - - - - - @hibernate.property - column="address_line_1" - length="64" - - - - - @hibernate.property - column="address_line_2" - length="64" - - - - - @hibernate.property - column="address_line_3" - length="64" - - - - - @hibernate.property - column="city" - length="64" - - - - - @hibernate.property - column="state" - length="64" - - - - - @hibernate.property - column="postcode" - length="10" - - - - - @hibernate.property - column="country" - length="64" - - - - - @hibernate.property - column="day_phone" - length="64" - - - - - @hibernate.property - column="evening_phone" - length="64" - - - - - @hibernate.property - column="mobile_phone" - length="64" - - - - - @hibernate.property - column="fax" - length="64" - - - - - @hibernate.property - column="email" - length="128" - - - - - @hibernate.property - column="disabled_flag" - length="1" - not-null="true" - - - - - @hibernate.property - column="create_date" - length="19" - not-null="true" - - - - - - - - - @hibernate.many-to-one - cascade="all" - @hibernate.column name="workspace_id" - - - - - - - @hibernate.set - inverse="true" - cascade="all-delete-orphan" + + true + + @hibernate.property + column="login" + unique="true" + length="255" + not-null="true" + + + + + @hibernate.property + column="password" + length="64" + not-null="true" + + + + + @hibernate.property + column="salt" + length="64" + not-null="false" + + + + + @hibernate.property + column="title" + length="32" + + + + + @hibernate.property + column="first_name" + length="128" + + + + + @hibernate.property + column="last_name" + length="128" + + + + + @hibernate.property + column="address_line_1" + length="64" + + + + + @hibernate.property + column="address_line_2" + length="64" + + + + + @hibernate.property + column="address_line_3" + length="64" + + + + + @hibernate.property + column="city" + length="64" + + + + + @hibernate.property + column="state" + length="64" + + + + + @hibernate.property + column="postcode" + length="10" + + + + + @hibernate.property + column="country" + length="64" + + + + + @hibernate.property + column="day_phone" + length="64" + + + + + @hibernate.property + column="evening_phone" + length="64" + + + + + @hibernate.property + column="mobile_phone" + length="64" + + + + + @hibernate.property + column="fax" + length="64" + + + + + @hibernate.property + column="email" + length="128" + + + + + @hibernate.property + column="disabled_flag" + length="1" + not-null="true" + + + + + @hibernate.property + column="create_date" + length="19" + not-null="true" + + - @hibernate.collection-key - column="user_id" + - @hibernate.collection-one-to-many - class="org.lamsfoundation.lams.usermanagement.UserOrganisation" - - - - - - - - - - - @hibernate.many-to-one - not-null="true" - lazy="false" - @hibernate.column name="authentication_method_id" - - - - - - - - @hibernate.many-to-one - lazy="false" - not-null="true" - @hibernate.column name="theme_id" - - - - - - - - @hibernate.set - lazy="true" - inverse="true" - cascade="none" + + + + + + + + @hibernate.set + inverse="true" + cascade="all-delete-orphan" - @hibernate.collection-key - column="user_id" + @hibernate.collection-key + column="user_id" - @hibernate.collection-one-to-many - class="org.lamsfoundation.lams.lesson.LearnerProgress" - - - - - - - - - - - @hibernate.set lazy="true" inverse="true" cascade="none" - @hibernate.collection-key column="user_id" - @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.LearningDesign" - - - - - - - - - @hibernate.set - lazy="true" - inverse="true" - cascade="none" + @hibernate.collection-one-to-many + class="org.lamsfoundation.lams.usermanagement.UserOrganisation" + - @hibernate.collection-key - column="user_id" + + + + + + + + + @hibernate.many-to-one + not-null="true" + lazy="false" + @hibernate.column name="authentication_method_id" + + + - @hibernate.collection-one-to-many - class="org.lamsfoundation.lams.lesson.Lesson" - - - - - - + + + + @hibernate.many-to-one + lazy="false" + not-null="true" + @hibernate.column name="theme_id" + + + - - - - @hibernate.many-to-one - not-null="true" - lazy="false" - @hibernate.column name="locale_id" - - - - - - - @hibernate.property - column="timezone" - length="64" - - - - - - @hibernate.property - column="portrait_uuid" - length="20" - - - - - - @hibernate.property - column="change_password" - length="1" - - - - - true - - @hibernate.property - column="lams_community_token" - length="255" - not-null="false" - - - - - true - - @hibernate.property - column="lams_community_username" - length="255" - not-null="false" - - - - - @hibernate.property - column="tutorials_disabled" - length="1" - - - - - - @hibernate.property - column="first_login" - length="1" - - + + + + @hibernate.set + lazy="true" + inverse="true" + cascade="none" - + @hibernate.collection-key + column="user_id" - + @hibernate.collection-one-to-many + class="org.lamsfoundation.lams.lesson.LearnerProgress" + + + + + + - - - - - - - - - - - @hibernate.property - column="modified_date" - length="19" - not-null="false" - - - + + + @hibernate.set lazy="true" inverse="true" + cascade="none" + @hibernate.collection-key column="user_id" + @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.LearningDesign" + + + + + + + + + + @hibernate.set + lazy="true" + inverse="true" + cascade="none" + + @hibernate.collection-key + column="user_id" + + @hibernate.collection-one-to-many + class="org.lamsfoundation.lams.lesson.Lesson" + + + + + + + + + + + @hibernate.many-to-one + not-null="true" + lazy="false" + @hibernate.column name="locale_id" + + + + + + + @hibernate.property + column="timezone" + length="64" + + + + + + @hibernate.property + column="portrait_uuid" + length="20" + + + + + + @hibernate.property + column="change_password" + length="1" + + + + + true + + @hibernate.property + column="lams_community_token" + length="255" + not-null="false" + + + + + true + + @hibernate.property + column="lams_community_username" + length="255" + not-null="false" + + + + + @hibernate.property + column="tutorials_disabled" + length="1" + + + + + + @hibernate.property + column="first_login" + length="1" + + + + + + + + + + + + + + + + + + + + @hibernate.property + column="modified_date" + length="19" + not-null="false" + + + + + \ No newline at end of file Fisheye: Tag c3c499fa8b7a5487229a59411af3710fa878b93c refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/Workspace.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.hbm.xml =================================================================== diff -u -rc7798d2b81a0595194a5e905ef6c33e372ad8007 -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.hbm.xml (.../WorkspaceFolder.hbm.xml) (revision c7798d2b81a0595194a5e905ef6c33e372ad8007) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.hbm.xml (.../WorkspaceFolder.hbm.xml) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -2,134 +2,116 @@ - + - - http://boss.bekk.no/boss/middlegen/ - http://www.hibernate.org/ ---> + + + @hibernate.class + table="lams_workspace_folder" + + true - - - @hibernate.class - table="lams_workspace_folder" - - true + + + @hibernate.id + generator-class="native" + type="java.lang.Integer" + column="workspace_folder_id" - - - @hibernate.id - generator-class="native" - type="java.lang.Integer" - column="workspace_folder_id" + + + - - - + + + @hibernate.property + column="name" + length="255" + not-null="true" + + - - - @hibernate.property - column="name" - length="255" - not-null="true" - - - - - @hibernate.property column="user_id" length="11" - - - @hibernate.property column="lams_workspace_folder_type_id" length="11" - - - @hibernate.property column="create_date_time" length="19" not-null="true" - - - @hibernate.property column="last_modified_date_time" length="19" not-null="true" - - - + + @hibernate.property column="user_id" length="11" + + + + + @hibernate.property + column="lams_workspace_folder_type_id" length="11" + + + @hibernate.property column="create_date_time" + length="19" not-null="true" + + + @hibernate.property + column="last_modified_date_time" length="19" not-null="true" + - - - @hibernate.set inverse="false" cascade="all-delete-orphan" - @hibernate.collection-key column="workspace_folder_id" - @hibernate.collection-one-to-many class="org.lamsfoundation.lams.usermanagement.WorkspaceWorkspaceFolder" - - - - - - - - - @hibernate.set - lazy="true" - inverse="true" - cascade="none" + - @hibernate.collection-key - column="parent_folder_id" + + + + @hibernate.set + lazy="true" + inverse="true" + cascade="none" - @hibernate.collection-one-to-many - class="org.lamsfoundation.lams.usermanagement.WorkspaceFolder" - - - - - - - - - - @hibernate.many-to-one - @hibernate.column name="parent_folder_id" - - - - - - - @hibernate.set lazy="false" inverse="true" cascade="none" - @hibernate.collection-key column="user_id" - @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.LearningDesign" - - - - - - - - - - + @hibernate.collection-key + column="parent_folder_id" - + @hibernate.collection-one-to-many + class="org.lamsfoundation.lams.usermanagement.WorkspaceFolder" + + + + + + + + + + @hibernate.many-to-one + @hibernate.column name="parent_folder_id" + + + + + + + @hibernate.set lazy="false" inverse="true" + cascade="none" + @hibernate.collection-key column="user_id" + @hibernate.collection-one-to-many class="org.lamsfoundation.lams.learningdesign.LearningDesign" + + + + + + + + + + + + + + + + Fisheye: Tag c3c499fa8b7a5487229a59411af3710fa878b93c refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/WorkspaceWorkspaceFolder.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch2040062.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch2040062.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch2040062.sql (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -0,0 +1,29 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; + +-- LDEV-3773 Get rid of Workspaces. Only use Workspace Folders. +ALTER TABLE lams_user DROP FOREIGN KEY FK_lams_user_2, + CHANGE COLUMN workspace_id workspace_folder_id BIGINT(20); +UPDATE lams_user AS u JOIN lams_workspace AS w ON u.workspace_folder_id = w.workspace_id + SET u.workspace_folder_id = w.default_fld_id; +ALTER TABLE lams_user ADD CONSTRAINT FK_lams_user_2 FOREIGN KEY (workspace_folder_id) + REFERENCES lams_workspace_folder (workspace_folder_id) ON DELETE CASCADE ON UPDATE CASCADE; + +ALTER TABLE lams_workspace_folder ADD COLUMN organisation_id BIGINT(20) AFTER user_id; +UPDATE lams_workspace_folder AS f + JOIN lams_workspace AS w ON f.workspace_folder_id = w.default_fld_id OR f.workspace_folder_id = w.def_run_seq_fld_id + JOIN lams_organisation AS o USING (workspace_id) + SET f.organisation_id = o.organisation_id; +ALTER TABLE lams_organisation DROP FOREIGN KEY FK_lams_organisation_2, + DROP COLUMN workspace_id; + +DROP TABLE lams_wkspc_wkspc_folder, + lams_workspace; + +-- additional clean up +ALTER TABLE lams_workspace_folder_content DROP FOREIGN KEY FK_lams_workspace_folder_content_2; +DROP TABLE lams_wkspc_fld_content_type; + + +COMMIT; +SET AUTOCOMMIT = 1; \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -178,7 +178,7 @@ } org.setName(requestedCourseName); - service.updateOrganisationandWorkspaceNames(org); + service.updateOrganisationAndWorkspaceFolderNames(org); } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -874,12 +874,12 @@ if (workspaceFolderUid != null) { folder = (WorkspaceFolder) baseDAO.find(WorkspaceFolder.class, workspaceFolderUid); } - if ((folder == null) && (importer.getWorkspace() != null)) { - folder = importer.getWorkspace().getDefaultFolder(); + if (folder == null && importer.getWorkspaceFolder() != null) { + folder = importer.getWorkspaceFolder(); } if (folder == null) { - String error = "Unable to save design in a folder - folder not found. Input folder uid=" - + workspaceFolderUid + " user's default folder " + importer.getWorkspace(); + String error = "Unable to save design in a folder - folder not found. Input folder uid " + + workspaceFolderUid + ", user " + importer.getUserId(); log.error(error); throw new ImportToolContentException(error); } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/Organisation.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/Organisation.java (.../Organisation.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/Organisation.java (.../Organisation.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -58,7 +58,7 @@ private User createdBy; /** persistent field */ - private Workspace workspace; + private Set workspaceFolders; /** persistent field */ private OrganisationType organisationType; @@ -177,14 +177,36 @@ this.createdBy = createdBy; } - public Workspace getWorkspace() { - return this.workspace; + public Set getWorkspaceFolders() { + return this.workspaceFolders; } - public void setWorkspace(Workspace workspace) { - this.workspace = workspace; + public WorkspaceFolder getNormalFolder() { + if (workspaceFolders != null) { + for (WorkspaceFolder workspaceFolder : workspaceFolders) { + if (WorkspaceFolder.NORMAL.equals(workspaceFolder.getWorkspaceFolderType())) { + return workspaceFolder; + } + } + } + return null; } + public WorkspaceFolder getRunSequencesFolder() { + if (workspaceFolders != null) { + for (WorkspaceFolder workspaceFolder : workspaceFolders) { + if (WorkspaceFolder.RUN_SEQUENCES.equals(workspaceFolder.getWorkspaceFolderType())) { + return workspaceFolder; + } + } + } + return null; + } + + public void setWorkspaceFolders(Set workspaceFolders) { + this.workspaceFolders = workspaceFolders; + } + public OrganisationType getOrganisationType() { return this.organisationType; } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -117,13 +117,13 @@ private Date createDate; /** persistent field */ - private Workspace workspace; + private WorkspaceFolder workspaceFolder; /** persistent field */ private AuthenticationMethod authenticationMethod; /** persistent field */ - private Set userOrganisations; + private Set userOrganisations; /** persistent field */ private Theme theme; @@ -346,12 +346,12 @@ this.createDate = createDate; } - public Workspace getWorkspace() { - return workspace; + public WorkspaceFolder getWorkspaceFolder() { + return workspaceFolder; } - public void setWorkspace(Workspace workspace) { - this.workspace = workspace; + public void setWorkspaceFolder(WorkspaceFolder workspace) { + this.workspaceFolder = workspace; } public AuthenticationMethod getAuthenticationMethod() { @@ -506,23 +506,16 @@ * Membership access means that the user has read and write access but cannot modify anybody else's content/stuff */ public boolean hasMemberAccess(WorkspaceFolder workspaceFolder) { - boolean foundMemberFolder = false; - Integer workspaceFolderID = workspaceFolder != null ? workspaceFolder.getWorkspaceFolderId() : null; - if (workspaceFolderID != null) { - Iterator iterator = userOrganisations.iterator(); - while (iterator.hasNext() && !foundMemberFolder) { - UserOrganisation userOrganisation = (UserOrganisation) iterator.next(); + for (UserOrganisation userOrganisation : userOrganisations) { // not all orgs have a folder - Workspace workspace = userOrganisation.getOrganisation().getWorkspace(); - if (workspace != null) { - Set folders = workspace.getFolders(); - // sometimes mapping is missing, make sure that the folder is taken into account - folders.add(workspace.getDefaultFolder()); - foundMemberFolder = checkFolders(folders, workspaceFolderID); + Set folders = userOrganisation.getOrganisation().getWorkspaceFolders(); + if (folders != null) { + if (checkFolders(folders, workspaceFolder.getWorkspaceFolderId())) { + return true; } } } - return foundMemberFolder; + return false; } private boolean checkFolders(Set folders, Integer desiredWorkspaceFolderId) { Fisheye: Tag c3c499fa8b7a5487229a59411af3710fa878b93c refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/usermanagement/Workspace.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java (.../WorkspaceFolder.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java (.../WorkspaceFolder.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -26,7 +26,6 @@ import java.io.Serializable; import java.util.Date; import java.util.HashSet; -import java.util.Iterator; import java.util.Set; import org.apache.commons.lang.builder.EqualsBuilder; @@ -65,9 +64,6 @@ private WorkspaceFolder parentWorkspaceFolder; /** persistent field */ - private Set workspaceWorkspaceFolders; - - /** persistent field */ private Set childWorkspaceFolders; private Set learningDesigns; @@ -78,6 +74,8 @@ */ private Integer userID; + private Integer organisationID; + /** non-nullable persistent field */ private Date creationDate; @@ -107,8 +105,8 @@ this.workspaceFolderType = workspaceFolderType; } - public WorkspaceFolder(String name, Integer workspaceID, WorkspaceFolder parentWorkspaceFolder, Integer userID, - Date creationDate, Date lastModifiedDate, Integer workspaceFolderType) { + public WorkspaceFolder(String name, WorkspaceFolder parentWorkspaceFolder, Integer userID, Date creationDate, + Date lastModifiedDate, Integer workspaceFolderType) { super(); this.name = name; this.parentWorkspaceFolder = parentWorkspaceFolder; @@ -134,11 +132,9 @@ } /** full constructor */ - public WorkspaceFolder(String name, WorkspaceFolder parentWorkspaceFolder, Set workspaces, - Set childWorkspaceFolders) { + public WorkspaceFolder(String name, WorkspaceFolder parentWorkspaceFolder, Set childWorkspaceFolders) { this.name = name; this.parentWorkspaceFolder = parentWorkspaceFolder; - this.workspaceWorkspaceFolders = workspaces; this.childWorkspaceFolders = childWorkspaceFolders; } @@ -170,35 +166,6 @@ this.parentWorkspaceFolder = parentWorkspaceFolder; } - /** - * WorkspaceWorkspaceFolder is a join object that links a workspace folder to its workspaces. - */ - protected Set getWorkspaceWorkspaceFolders() { - return workspaceWorkspaceFolders; - } - - protected void setWorkspaceWorkspaceFolders(Set workspaceWorkspaceFolders) { - this.workspaceWorkspaceFolders = workspaceWorkspaceFolders; - } - - /** - * Get all the workspaces for this folder, based on the lams_workspace_workspace join table. This set is not a - * persistent - * set so to add a folder you cannot use "addWorkspace(workspace)". You must go to the Workspace and do - * workspace.addFolder(folder). - */ - public Set getWorkspaces() { - HashSet set = new HashSet(); - if (getWorkspaceWorkspaceFolders() != null) { - Iterator iter = getWorkspaceWorkspaceFolders().iterator(); - while (iter.hasNext()) { - WorkspaceWorkspaceFolder wwf = (WorkspaceWorkspaceFolder) iter.next(); - set.add(wwf.getWorkspace()); - } - } - return set; - } - public Set getChildWorkspaceFolders() { return this.childWorkspaceFolders; } @@ -242,6 +209,14 @@ this.userID = userID; } + public Integer getOrganisationID() { + return organisationID; + } + + public void setOrganisationID(Integer organisationID) { + this.organisationID = organisationID; + } + /** * @return Returns the creationDate. */ Fisheye: Tag c3c499fa8b7a5487229a59411af3710fa878b93c refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceWorkspaceFolder.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -242,7 +242,7 @@ * * @param organisation */ - void updateOrganisationandWorkspaceNames(Organisation organisation); + void updateOrganisationAndWorkspaceFolderNames(Organisation organisation); List getUserManageBeans(Integer orgId); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -52,9 +52,7 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; -import org.lamsfoundation.lams.usermanagement.Workspace; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; -import org.lamsfoundation.lams.usermanagement.WorkspaceWorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationDAO; @@ -128,18 +126,13 @@ // create user if (user.getUserId() == null) { baseDAO.insertOrUpdate(user); // creating a workspace needs a userId - user = createWorkspaceForUser(user); + user = createWorkspaceFolderForUser(user); } // LDEV-2030 update workspace name if name changed - Workspace workspace = user.getWorkspace(); - if ((workspace != null) && !StringUtils.equals(user.getFullName(), workspace.getName())) { - workspace.setName(user.getFullName()); - save(workspace); - WorkspaceFolder folder = workspace.getDefaultFolder(); - if (folder != null) { - folder.setName(workspace.getName()); - save(folder); - } + WorkspaceFolder workspaceFolder = user.getWorkspaceFolder(); + if ((workspaceFolder != null) && !StringUtils.equals(user.getFullName(), workspaceFolder.getName())) { + workspaceFolder.setName(user.getFullName()); + save(workspaceFolder); } // LDEV-1356 modification date user.setModifiedDate(new Date()); @@ -352,44 +345,34 @@ return results.isEmpty() ? null : (UserOrganisation) results.get(0); } - private User createWorkspaceForUser(User user) { - Workspace workspace = new Workspace(user.getFullName()); - save(workspace); - WorkspaceFolder folder = new WorkspaceFolder(workspace.getName(), user.getUserId(), new Date(), new Date(), + private User createWorkspaceFolderForUser(User user) { + WorkspaceFolder folder = new WorkspaceFolder(user.getFullName(), user.getUserId(), new Date(), new Date(), WorkspaceFolder.NORMAL); save(folder); - workspace.addFolder(folder); - workspace.setDefaultFolder(folder); - user.setWorkspace(workspace); + user.setWorkspaceFolder(folder); return user; } - @SuppressWarnings("unchecked") - private Workspace createWorkspaceForOrganisation(String workspaceName, Integer userID, Date createDateTime) { - - // this method is public so it can be accessed from the junit test - - WorkspaceFolder workspaceFolder = new WorkspaceFolder(workspaceName, userID, createDateTime, createDateTime, - WorkspaceFolder.NORMAL); + private void createWorkspaceFoldersForOrganisation(Organisation organisation, Integer userID, Date createDateTime) { + WorkspaceFolder workspaceFolder = new WorkspaceFolder(organisation.getName(), userID, createDateTime, + createDateTime, WorkspaceFolder.NORMAL); + workspaceFolder.setOrganisationID(organisation.getOrganisationId()); save(workspaceFolder); - String description = getRunSequencesFolderName(workspaceName); + String description = getRunSequencesFolderName(organisation.getName()); WorkspaceFolder workspaceFolder2 = new WorkspaceFolder(description, userID, createDateTime, createDateTime, WorkspaceFolder.RUN_SEQUENCES); + workspaceFolder2.setOrganisationID(organisation.getOrganisationId()); workspaceFolder2.setParentWorkspaceFolder(workspaceFolder); save(workspaceFolder2); workspaceFolder.addChild(workspaceFolder2); save(workspaceFolder); - Workspace workspace = new Workspace(workspaceName); - workspace.setDefaultFolder(workspaceFolder); - workspace.setDefaultRunSequencesFolder(workspaceFolder2); - workspace.addFolder(workspaceFolder); - workspace.addFolder(workspaceFolder2); - save(workspace); - - return workspace; + Set folders = new HashSet(); + folders.add(workspaceFolder); + folders.add(workspaceFolder2); + organisation.setWorkspaceFolders(folders); } @Override @@ -403,13 +386,12 @@ organisation.setCreateDate(createDateTime); organisation.setCreatedBy(creator); + save(organisation); + if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.COURSE_TYPE)) { - Workspace workspace = createWorkspaceForOrganisation(organisation.getName(), userID, createDateTime); - organisation.setWorkspace(workspace); + createWorkspaceFoldersForOrganisation(organisation, userID, createDateTime); } - save(organisation); - if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { Organisation pOrg = organisation.getParentOrganisation(); // set parent's child orgs @@ -452,48 +434,24 @@ } } else { // update workspace/folder names - Workspace workspace = organisation.getWorkspace(); - if (workspace != null) { - workspace.setName(organisation.getName()); - WorkspaceFolder defaultFolder = workspace.getDefaultFolder(); - if (defaultFolder != null) { - defaultFolder.setName(organisation.getName()); - } - WorkspaceFolder runSeqFolder = workspace.getDefaultRunSequencesFolder(); - if (runSeqFolder != null) { - runSeqFolder.setName(getRunSequencesFolderName(organisation.getName())); - } - } + organisation.getNormalFolder().setName(organisation.getName()); + organisation.getRunSequencesFolder().setName(getRunSequencesFolderName(organisation.getName())); } return organisation; } @Override - @SuppressWarnings("unchecked") - public void updateOrganisationandWorkspaceNames(Organisation organisation) { + public void updateOrganisationAndWorkspaceFolderNames(Organisation organisation) { baseDAO.update(organisation); - if (organisation.getOrganisationId() != null) { - Workspace workspace = organisation.getWorkspace(); - if (workspace != null) { - workspace.setName(organisation.getName()); - baseDAO.update(workspace); - - WorkspaceFolder defaultFolder = workspace.getDefaultFolder(); - if (defaultFolder != null) { - defaultFolder.setName(organisation.getName()); + WorkspaceFolder folder = organisation.getNormalFolder(); + folder.setName(organisation.getName()); + baseDAO.update(folder); + folder = organisation.getRunSequencesFolder(); + folder.setName(getRunSequencesFolderName(organisation.getName())); + baseDAO.update(folder); } - baseDAO.update(defaultFolder); - WorkspaceFolder runSeqFolder = workspace.getDefaultRunSequencesFolder(); - if (runSeqFolder != null) { - runSeqFolder.setName(getRunSequencesFolderName(organisation.getName())); - } - baseDAO.update(runSeqFolder); - } - } - } - private String getRunSequencesFolderName(String workspaceName) { // get i18n'd message according to server locale String[] tokenisedLocale = LanguageUtil.getDefaultLangCountry(); @@ -546,33 +504,6 @@ throw new Exception("Cannot remove User ID " + userId + ". User has data."); } - // write out an entry in the audit log. - - Workspace workspace = user.getWorkspace(); - Set wwfs = workspace != null ? workspace.getWorkspaceWorkspaceFolders() : null; - - Set foldersToDelete = new HashSet(); - if (wwfs != null) { - Iterator iter = wwfs.iterator(); - while (iter.hasNext()) { - WorkspaceWorkspaceFolder wwf = (WorkspaceWorkspaceFolder) iter.next(); - foldersToDelete.add(wwf.getWorkspaceFolder()); - - log.debug("deleting wkspc_wkspc_folder: " + wwf.getId()); - delete(wwf); - } - } - - for (WorkspaceFolder wf : foldersToDelete) { - log.debug("deleting wkspc_folder: " + wf.getName()); - delete(wf); - } - - if (workspace != null) { - log.debug("deleting workspace: " + workspace.getName()); - delete(workspace); - } - log.debug("deleting user " + user.getLogin()); delete(user); @@ -701,8 +632,8 @@ uors.add(uor); // when a user gets these roles, they need a workspace if (role.getName().equals(Role.AUTHOR) || role.getName().equals(Role.SYSADMIN)) { - if (user.getWorkspace() == null) { - createWorkspaceForUser(user); + if (user.getWorkspaceFolder() == null) { + createWorkspaceFolderForUser(user); } } } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r5773f84ed608838de3521ecde87c52f3c72d478c -rc3c499fa8b7a5487229a59411af3710fa878b93c --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 5773f84ed608838de3521ecde87c52f3c72d478c) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision c3c499fa8b7a5487229a59411af3710fa878b93c) @@ -99,7 +99,6 @@ import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; -import org.lamsfoundation.lams.usermanagement.Workspace; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; @@ -361,27 +360,19 @@ Lesson precedingLesson = (precedingLessonId == null) ? null : lessonDAO.getLesson(precedingLessonId); - // The duplicated sequence should go in the run sequences folder under - // the given organisation + // The duplicated sequence should go in the run sequences folder under the given organisation + Organisation org = (Organisation) baseDAO.find(Organisation.class, organisationId); WorkspaceFolder runSeqFolder = null; int MAX_DEEP_LEVEL_FOLDER = 50; - if (organisationId != null) { - Organisation org = (Organisation) baseDAO.find(Organisation.class, organisationId); - // Don't use unlimited loop to avoid dead lock. For instance, orgA - // is orgB parent, but orgB parent is orgA as well. for (int idx = 0; idx < MAX_DEEP_LEVEL_FOLDER; idx++) { if ((org == null) || (runSeqFolder != null)) { break; } - Workspace workspace = org.getWorkspace(); - if (workspace != null) { - runSeqFolder = workspace.getDefaultRunSequencesFolder(); - } + runSeqFolder = org.getRunSequencesFolder(); if (runSeqFolder == null) { org = org.getParentOrganisation(); } } - } User user = userID != null ? (User) baseDAO.find(User.class, userID) : null; Lesson initializedLesson = initializeLesson(lessonName, lessonDescription, originalLearningDesign, user,