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);