Index: lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java,v diff -u -r1.18.2.3.2.2 -r1.18.2.3.2.3 --- lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java 25 Feb 2010 19:21:58 -0000 1.18.2.3.2.2 +++ lams_central/src/java/org/lamsfoundation/lams/web/planner/PedagogicalPlannerAction.java 11 Mar 2010 19:30:00 -0000 1.18.2.3.2.3 @@ -32,6 +32,8 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; @@ -101,6 +103,7 @@ import org.lamsfoundation.lams.planner.dto.PedagogicalPlannerTemplateDTO; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; @@ -167,7 +170,7 @@ private static final String PEDAGOGICAL_PLANNER_DAO_BEAN_NAME = "pedagogicalPlannerDAO"; private static final String ACTIVITY_DAO_BEAN_NAME = "activityDAO"; - // Keys of error messages used in this class. They are ment to be displayed for user. + // Keys of error messages used in this class. They are meant to be displayed for user. private static final String ERROR_KEY_TOOL_ERRORS = "error.planner.tools."; private static final String ERROR_KEY_NODE_TITLE_BLANK = "error.planner.node.title.blank"; private static final String ERROR_KEY_REPOSITORY = "error.planner.repository"; @@ -212,6 +215,7 @@ private static final String ENCODING_UTF_8 = "UTF-8"; private static final String DIR_UPLOADED_NODE_SUFFIX = "_uploaded_node"; private static final String EXPORT_NODE_ZIP_PREFIX = "lams_planner_node_"; + private static final String PLANNER_FOLDER_NAME = "Preview Planner"; private static final int FILE_COPY_BUFFER_SIZE = 1024; @@ -1211,10 +1215,13 @@ Long learningDesignID = null; LearningDesign learningDesign = null; List learningDesignErrorMsgs = new ArrayList(); + + Integer workspaceFolderId = getWorkspaceFolderId(user.getUserId()); + // Extract the template - try { - Object[] ldResults = getExportService().importLearningDesign(designFile, user, null, toolsErrorMsgs, ""); + Object[] ldResults = getExportService().importLearningDesign(designFile, user, + workspaceFolderId, toolsErrorMsgs, ""); designFile.delete(); learningDesignID = (Long) ldResults[0]; learningDesignErrorMsgs = (List) ldResults[1]; @@ -1251,7 +1258,33 @@ } return learningDesign; } + + /** + * Returns id of WorkspaceFolder where imported learning designs can be stored. + */ + private Integer getWorkspaceFolderId(Integer userID) { + String name = PLANNER_FOLDER_NAME; + WorkspaceFolder parentFolder = getUserManagementService().getRootOrganisation().getWorkspace() + .getDefaultFolder(); + Integer workspaceFolderType = WorkspaceFolder.PUBLIC_SEQUENCES; + Map properties = new HashMap(); + properties.put("name", name); + properties.put("parentWorkspaceFolder.workspaceFolderId", parentFolder.getWorkspaceFolderId()); + properties.put("workspaceFolderType", workspaceFolderType); + List workspaceFolderList = userManagementService.findByProperties(WorkspaceFolder.class, properties); + + WorkspaceFolder workspaceFolder = null; + if (workspaceFolderList != null && workspaceFolderList.size() > 0) { + workspaceFolder = (WorkspaceFolder) workspaceFolderList.get(0); + } else { + workspaceFolder = new WorkspaceFolder(name, null, parentFolder, userID, new Date(), new Date(), + WorkspaceFolder.PUBLIC_SEQUENCES); + userManagementService.save(workspaceFolder); + } + return workspaceFolder.getWorkspaceFolderId(); + } + /** * Copies the template files from repository into the selected dir. *