Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java,v
diff -u -r1.3 -r1.4
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java 13 Apr 2005 01:31:26 -0000 1.3
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java 15 Apr 2005 02:48:07 -0000 1.4
@@ -312,9 +312,30 @@
* current workspaces contains subFolders
*/
public boolean hasSubFolders(){
- if (this.childWorkspaceFolders!=null || childWorkspaceFolders.size()!=0)
+ if (this.childWorkspaceFolders!=null && childWorkspaceFolders.size()!=0)
return true;
else
return false;
}
+ /**
+ * This is a utility function which checks whether the given
+ * workspace Folder is empty or not.
+ *
+ * TODO As of now it is being assumed that a workspace folder
+ * can contain only subFolders and Learning designs as its contents.
+ * For now, other kinds of contents like flat files, zip files,
+ * documents etc. have not been taken into consideration.
+ *
+ * @return boolean A boolean value indicating whether this
+ * folder is empty orit contains Learning Designs
+ */
+ public boolean isEmpty(){
+ if(!hasSubFolders()){
+ if(this.learningDesigns==null || this.learningDesigns.size()==0)
+ return true;
+ else
+ return false;
+ }else
+ return false;
+ }
}
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IWorkspaceDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/Attic/IWorkspaceDAO.java,v
diff -u -r1.1 -r1.2
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IWorkspaceDAO.java 13 Apr 2005 01:31:19 -0000 1.1
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IWorkspaceDAO.java 15 Apr 2005 02:48:50 -0000 1.2
@@ -40,5 +40,15 @@
* @return Workspace The populated workspace object
*/
public Workspace getWorkspaceByID(Integer workspaceID);
+
+ /**
+ * Returns the workspace corresponding to the given
+ * root_folder_id
+ *
+ * @param rootFolderID The root_folder_id of the workspace
+ * being looked for
+ * @return Workspace The populated workspace object
+ */
+ public Workspace getWorkspaceByRootFolderID(Integer rootFolderID);
}
Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/WorkspaceDAO.java,v
diff -u -r1.1 -r1.2
--- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java 13 Apr 2005 00:49:07 -0000 1.1
+++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/WorkspaceDAO.java 15 Apr 2005 02:48:00 -0000 1.2
@@ -6,6 +6,7 @@
*/
package org.lamsfoundation.lams.usermanagement.dao.hibernate;
+import java.util.List;
import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO;
import org.lamsfoundation.lams.usermanagement.Workspace;
import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO;
@@ -17,6 +18,11 @@
* Window - Preferences - Java - Code Style - Code Templates
*/
public class WorkspaceDAO extends BaseDAO implements IWorkspaceDAO{
+
+ private static final String TABLENAME="lams_workspace";
+ private static final String FIND_BY_ROOT_FOLDER = "from " + TABLENAME + " in class " + Workspace.class.getName() +
+ " where root_folder_id=?";
+
/**
* (non-Javadoc)
@@ -26,4 +32,8 @@
return (Workspace) super.find(Workspace.class,workspaceID);
}
+ public Workspace getWorkspaceByRootFolderID(Integer rootFolderID){
+ List list = this.getHibernateTemplate().find(FIND_BY_ROOT_FOLDER,rootFolderID);
+ return (Workspace)list.get(0);
+ }
}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/workspace/service/Attic/IWorkspaceManagementService.java,v
diff -u -r1.1 -r1.2
--- lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java 13 Apr 2005 00:33:18 -0000 1.1
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java 15 Apr 2005 02:49:08 -0000 1.2
@@ -1,18 +1,9 @@
-/*
- * Created on Apr 1, 2005
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
- */
package org.lamsfoundation.lams.workspace.service;
import java.io.IOException;
/**
- * @author Minhas
- *
- * TODO To change the template for this generated type comment go to
- * Window - Preferences - Java - Code Style - Code Templates
+ * @author Manpreet Minhas
*/
public interface IWorkspaceManagementService {
@@ -30,5 +21,27 @@
* @throws IOException
*/
public String createFolderForFlash(Integer parentFolderID, String name, Integer userID)throws IOException;
+
+
+ /**
+ * This method deletes the WorkspaceFolder
with given
+ * workspaceFolderID
. But before it does so it checks whether the
+ * User
is authorized to perform this action
+ *
+ *
Note:
To be able to a delete a WorkspaceFolder
+ * successfully you have to keep the following things in mind
+ *
Organisation
+ * or User
+ * WorkspaceFolder
to be deleted
+ * @param userID The User
who has requested this operation
+ * @return String The acknowledgement/error message in WDDX format for FLASH
+ * @throws IOException
+ */
+ public String deleteFolder(Integer workspaceFolderID, Integer userID)throws IOException;
}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/workspace/service/Attic/WorkspaceManagementService.java,v
diff -u -r1.1 -r1.2
--- lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java 13 Apr 2005 00:33:18 -0000 1.1
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java 15 Apr 2005 02:49:08 -0000 1.2
@@ -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/usermanagement/dao/hibernate/TestWorkspaceDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/TestWorkspaceDAO.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/TestWorkspaceDAO.java 15 Apr 2005 02:47:16 -0000 1.1
@@ -0,0 +1,45 @@
+/*
+ * Created on Apr 15, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.usermanagement.dao.hibernate;
+
+import org.lamsfoundation.lams.AbstractLamsTestCase;
+import org.lamsfoundation.lams.usermanagement.Workspace;
+import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO;
+
+/**
+ * @author Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TestWorkspaceDAO extends AbstractLamsTestCase {
+
+ protected IWorkspaceDAO workspaceDAO;
+
+ public TestWorkspaceDAO(String name){
+ super(name);
+ }
+ protected String[] getContextConfigLocation() {
+ return new String[] {"WEB-INF/spring/applicationContext.xml","WEB-INF/spring/learningDesignApplicationContext.xml"};
+ }
+ protected String getHibernateSessionFactoryName() {
+ return "coreSessionFactory";
+ }
+ protected void setUp() throws Exception{
+ super.setUp();
+ workspaceDAO =(IWorkspaceDAO)context.getBean("workspaceDAO");
+ }
+ public void testGetWorkspaceByRootFolderID(){
+ boolean rootFolder = false;
+ Workspace workspace =workspaceDAO.getWorkspaceByRootFolderID(new Integer(8));
+ if(workspace!=null)
+ rootFolder=true;
+ assertTrue(rootFolder);
+ }
+
+
+}
Index: lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/workspace/Attic/TestWorkspaceManagement.java,v
diff -u -r1.3 -r1.4
--- lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java 13 Apr 2005 23:30:48 -0000 1.3
+++ lams_common/test/java/org/lamsfoundation/lams/workspace/TestWorkspaceManagement.java 15 Apr 2005 02:47:41 -0000 1.4
@@ -34,16 +34,21 @@
"WEB-INF/spring/learningDesignApplicationContext.xml",
"WEB-INF/spring/applicationContext.xml"};
}
- public void testGetFolderContents()throws IOException{
+ protected String getHibernateSessionFactoryName() {
+ return "coreSessionFactory";
+ }
+ /*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);
- }
- protected String getHibernateSessionFactoryName() {
- return "coreSessionFactory";
+ }*/
+ public void testDeleteFolder() throws IOException{
+ String message = workspaceManagementService.deleteFolder(new Integer(7), new Integer(4));
+ System.out.println(message);
}
+
}