Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java =================================================================== diff -u -r9bef1de27d0d527d75191115a535bc2c4311ade9 -r4efa164a1d5bfa5e91d2c00ee471394277f90050 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 9bef1de27d0d527d75191115a535bc2c4311ade9) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 4efa164a1d5bfa5e91d2c00ee471394277f90050) @@ -83,6 +83,21 @@ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws Exception; /** + * This method does the same as getFolderContents() except that it doesn't return + * the home directory as a content of the folder. This is useful to Flash as when the user's organisation + * is listed, the client doesn't want the home directory returned as the client already knows about the + * folder from the getAccessibleWorkspaceFolders() call. + * + * @param userID The user_id of the User who has requested the contents + * @param workspaceFolderID The workspace_folder_id of the WorkspaceFolder + * whose contents are requested + * @param mode It can be either 1(AUTHORING) or 2(MONITORING) + * @return String The required information in WDDX format + * @throws Exception + */ + public String getFolderContentsExcludeHome(Integer userID, Integer workspaceFolderID, Integer mode)throws Exception; + + /** * This method creates a new folder under the given parentFolder * inside the user's default workspace. * @@ -282,7 +297,6 @@ * The information returned is categorized under 3 main heads * Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -r9bef1de27d0d527d75191115a535bc2c4311ade9 -r4efa164a1d5bfa5e91d2c00ee471394277f90050 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 9bef1de27d0d527d75191115a535bc2c4311ade9) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 4efa164a1d5bfa5e91d2c00ee471394277f90050) @@ -196,12 +196,33 @@ return false; } } + /** * (non-Javadoc) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#getFolderContentsExcludeHome(java.lang.Integer, java.lang.Integer, java.lang.Integer) + */ + public String getFolderContentsExcludeHome(Integer userID, Integer workspaceFolderID, Integer mode)throws Exception{ + User user = userDAO.getUserById(userID); + WorkspaceFolder folder = user.getWorkspace().getRootFolder(); + return getFolderContentsInternal(user, workspaceFolderID, mode, "getFolderContentsExcludeHome", + folder != null ? folder.getWorkspaceFolderId() : null); + } + + + /** + * (non-Javadoc) * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#getFolderContents(java.lang.Integer, java.lang.Integer, java.lang.Integer) */ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws Exception{ User user = userDAO.getUserById(userID); + return getFolderContentsInternal(user, workspaceFolderID, mode, "getFolderContents", null); + } + + /** + * Get the contents of a folder. Internal method used for both getFolderContentsExcludeHome() and getFolderContents(). + * If skipContentId is not null, then skip any contents found with this id. + */ + public String getFolderContentsInternal(User user, Integer workspaceFolderID, Integer mode, String methodName, Integer skipContentId)throws Exception{ WorkspaceFolder workspaceFolder = null; Integer permissions = null; if(user!=null){ @@ -212,31 +233,28 @@ Vector contentDTO = new Vector(); getFolderContent(workspaceFolder,permissions,mode,contentDTO); if(workspaceFolder.hasSubFolders()) - getSubFolderDetails(workspaceFolder,permissions,contentDTO); + getSubFolderDetails(workspaceFolder,permissions,contentDTO, skipContentId); Vector repositoryContent = getContentsFromRepository(new Long(workspaceFolderID.intValue()),permissions); if(repositoryContent!=null) contentDTO.addAll(repositoryContent); - flashMessage = new FlashMessage("getFolderContents",createFolderContentPacket(workspaceFolder,contentDTO)); + flashMessage = new FlashMessage(methodName,createFolderContentPacket(workspaceFolder,contentDTO)); } else - flashMessage = new FlashMessage("getFolderContents", - "Access Denied for user with user_id:" + userID, + flashMessage = new FlashMessage(methodName, + "Access Denied for user with user_id:" + user.getUserId(), FlashMessage.ERROR); } else - flashMessage = new FlashMessage("getFolderContents", + flashMessage = new FlashMessage(methodName, "No such workspaceFolder with workspace_folder_id of:" + workspaceFolderID + " exists", FlashMessage.ERROR); }else - flashMessage = FlashMessage.getNoSuchUserExists("getFolderContents",userID); + flashMessage = FlashMessage.getNoSuchUserExists(methodName,user.getUserId()); 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) @@ -246,11 +264,16 @@ getFolderContentDTO(designs,permissions,contentDTO); } - private void getSubFolderDetails(WorkspaceFolder workspaceFolder,Integer permissions, Vector subFolderContent){ + /** + * Get the folders in the given workspaceFolder. If skipContentId is not null, then skip any contents found with this id. + */ + private void getSubFolderDetails(WorkspaceFolder workspaceFolder,Integer permissions, Vector subFolderContent, Integer skipContentId){ Iterator iterator = workspaceFolder.getChildWorkspaceFolders().iterator(); while(iterator.hasNext()){ WorkspaceFolder subFolder = (WorkspaceFolder)iterator.next(); - subFolderContent.add(new FolderContentDTO(subFolder,permissions)); + if ( skipContentId==null || ! skipContentId.equals(subFolder.getWorkspaceFolderId()) ) { + subFolderContent.add(new FolderContentDTO(subFolder,permissions)); + } } } /** @@ -761,10 +784,6 @@ public String deleteWorkspaceFolderContent(Long folderContentID)throws Exception{ WorkspaceFolderContent workspaceFolderContent = workspaceFolderContentDAO.getWorkspaceFolderContentByID(folderContentID); if(workspaceFolderContent!=null){ - Long uuid = workspaceFolderContent.getUuid(); - Long versionID = workspaceFolderContent.getVersionID(); - ITicket ticket = getRepositoryLoginTicket(); - String files[] = repositoryService.deleteNode(ticket,uuid); workspaceFolderContentDAO.delete(workspaceFolderContent); flashMessage = new FlashMessage("deleteWorkspaceFolderContent","Content deleted"); }else @@ -817,7 +836,6 @@ if (user != null) { //add the user's own folder to the list table.put("PRIVATE", new UserAccessFoldersDTO(user.getWorkspace().getRootFolder())); - table.put("RUN_SEQUENCES", new UserAccessFoldersDTO(workspaceFolderDAO.getRunSequencesFolderForUser(user.getUserId()))); // Get a list of organisations of which the given user is a member List userMemberships = userOrganisationDAO.getUserOrganisationsByUser(user); Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== diff -u -r8eca6690f5c756339701b63e5ecf74ead6077fcf -r4efa164a1d5bfa5e91d2c00ee471394277f90050 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 8eca6690f5c756339701b63e5ecf74ead6077fcf) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 4efa164a1d5bfa5e91d2c00ee471394277f90050) @@ -136,6 +136,30 @@ } /** + * For details please refer to + * org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService + * + * @param mapping + * @param form + * @param request + * @param response + * @return ActionForward + * @throws ServletException + * @throws Exception + */ + public ActionForward getFolderContentsExcludeHome(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response)throws ServletException,Exception{ + Integer folderID = new Integer(WebUtil.readIntParam(request,"folderID")); + Integer mode = new Integer(WebUtil.readIntParam(request,"mode")); + Integer userID = new Integer(WebUtil.readIntParam(request,"userID")); + IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); + String wddxPacket = workspaceManagementService.getFolderContentsExcludeHome(userID,folderID,mode); + return outputPacket(mapping, request, response, wddxPacket, "details"); + } + + /** * For details please refer to * org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService *