Index: lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae -rb8a6b090923dfabdbd74ee81dd294c5a971d2701 --- lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae) +++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision b8a6b090923dfabdbd74ee81dd294c5a971d2701) @@ -87,10 +87,58 @@ public void setUserDAO(IUserDAO userDAO) { this.userDAO = userDAO; } - public void deleteFolder(Integer folderID){ + /** + * (non-Javadoc) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#deleteFolder(java.lang.Integer, java.lang.Integer) + */ + public String deleteFolder(Integer folderID, Integer userID)throws IOException{ WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(folderID); - if(workspaceFolder!=null){ - workspaceFolderDAO.delete(workspaceFolder); + User user = userDAO.getUserById(userID); + if(user!=null){ + if(!getPermissions(workspaceFolder,user).equals(WorkspaceFolder.OWNER_ACCESS)){ + flashMessage = FlashMessage.getUserNotAuthorized("deleteFolder",userID); + }else{ + if(workspaceFolder!=null){ + if(isRootFolder(workspaceFolder)) + flashMessage = new FlashMessage("deleteFolder", + "Cannot delete this folder as it is the Root folder.", + FlashMessage.ERROR); + else{ + if(!workspaceFolder.isEmpty()) + flashMessage = new FlashMessage("deleteFolder", + "Cannot delete folder with folder_id of: " + folderID + + " as it is not empty. Please delete its contents first.", + FlashMessage.ERROR); + else{ + workspaceFolderDAO.delete(workspaceFolder); + flashMessage = new FlashMessage("deleteFolder","Folder deleted:" + folderID); + } + } + }else + flashMessage = FlashMessage.getNoSuchWorkspaceFolderExsists("deleteFolder",folderID); + } + }else + flashMessage = FlashMessage.getNoSuchUserExists("deleteFolder",userID); + + return flashMessage.serializeMessage(); + } + /** + * This method checks if the given workspaceFolder is the + * root folder of any Organisation or User + * + * @param workspaceFolder The workspaceFolder to be checked + * @return boolean The boolean value indicating whether it is a + * root folder or not. + */ + private boolean isRootFolder(WorkspaceFolder workspaceFolder){ + try{ + Workspace workspace = workspaceDAO.getWorkspaceByRootFolderID(workspaceFolder.getWorkspaceFolderId()); + if(workspace!=null) + return true; + else + return false; + }catch(Exception e){ + return false; } } public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws IOException{ @@ -258,14 +306,7 @@ 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){ Index: lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java =================================================================== diff -u -re584edf69cf772af93c4bc9444088abecb6f5520 -rb8a6b090923dfabdbd74ee81dd294c5a971d2701 --- lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java (.../TestWorkspaceManagement.java) (revision e584edf69cf772af93c4bc9444088abecb6f5520) +++ lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java (.../TestWorkspaceManagement.java) (revision b8a6b090923dfabdbd74ee81dd294c5a971d2701) @@ -37,14 +37,14 @@ protected String getHibernateSessionFactoryName() { return "coreSessionFactory"; } - /*public void testGetFolderContents()throws IOException{ + public void testGetFolderContents()throws IOException{ String packet = workspaceManagementService.getFolderContents(new Integer(4),new Integer(2),WorkspaceManagementService.AUTHORING); System.out.println(packet); } public void testCopyFolder() throws IOException{ String packet = workspaceManagementService.copyFolder(new Integer(2),new Integer(8),new Integer(4)); System.out.println(packet); - }*/ + } public void testDeleteFolder() throws IOException{ String message = workspaceManagementService.deleteFolder(new Integer(7), new Integer(4)); System.out.println(message);