Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java,v
diff -u -r1.1 -r1.2
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java 7 Mar 2005 23:25:53 -0000 1.1
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/FlashMessage.java 13 Apr 2005 00:39:32 -0000 1.2
@@ -22,6 +22,7 @@
*/
package org.lamsfoundation.lams.util.wddx;
+import java.io.IOException;
import java.io.Serializable;
/**
@@ -104,4 +105,33 @@
sb.append("messageValue='" + getMessageValue() + "'; ");
return sb.toString();
}
+ public String serializeMessage()throws IOException{
+ String wddxPacket = null;
+ try{
+ wddxPacket = WDDXProcessor.serialize(this);
+ }catch(IOException ie){
+ throw new IOException("IOException occured while serializing " + ie.getMessage());
+ }
+ return wddxPacket;
+ }
+ public static FlashMessage getNoSuchUserExists(String methodName, Integer userID){
+ return new FlashMessage(methodName,
+ "No such User with a user_id of :" + userID + " exists",
+ ERROR);
+ }
+ public static FlashMessage getUserNotAuthorized(String methodName, Integer userID){
+ return new FlashMessage(methodName,
+ "User with user_id of:" + userID +" is not authorized to perfom this action:",
+ FlashMessage.ERROR);
+ }
+ public static FlashMessage getNoSuchWorkspaceFolderExsists(String methodName, Integer folderID){
+ return new FlashMessage(methodName,
+ "No such WorkspaceFolder with a workspace_folder_id of " + folderID +" exists",
+ FlashMessage.ERROR);
+ }
+ public static FlashMessage getNoSuchLearningDesignExists(String methodName, Long learningDesignID){
+ return new FlashMessage(methodName,
+ "No such LearningDesign with a learning_design_id of " + learningDesignID +" exists",
+ FlashMessage.ERROR);
+ }
}
Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/wddx/Attic/LDWDDXValueObjectFactory.java,v
diff -u -r1.2 -r1.3
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java 14 Mar 2005 05:08:50 -0000 1.2
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/LDWDDXValueObjectFactory.java 13 Apr 2005 00:39:32 -0000 1.3
@@ -529,8 +529,8 @@
* @return Hashtable
*/
public Hashtable buildLearningDesignObject(LearningDesign design){
- Hashtable designs = getCutDownLearningDesignDetails(design);
+ Hashtable designs = getCutDownLearningDesignDetails(design);
designs.put(WDDXTAGS.LEARNING_DESIGN_UIID,
(design.getLearningDesignUIID()!=null?design.getLearningDesignUIID():WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER));
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/dto/FolderContentDTO.java 13 Apr 2005 00:38:53 -0000 1.1
@@ -0,0 +1,111 @@
+/*
+ * 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.dto;
+
+import java.util.Date;
+
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
+import org.lamsfoundation.lams.usermanagement.WorkspaceFolder;
+import org.lamsfoundation.lams.util.wddx.WDDXTAGS;
+
+/**
+ * @author Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class FolderContentDTO {
+
+ public static final String LESSON ="lesson";
+ public static final String DESIGN ="learningDesign";
+ public static final String FOLDER ="folder";
+
+ private String name;
+ private String description;
+ private Date creationDateTime;
+ private Date lastModifiedDateTime;
+ private String resourceType;
+ private Long resourceID;
+ private Integer permissionCode;
+
+ public FolderContentDTO(){
+
+ }
+
+ public FolderContentDTO(String name, String description,
+ Date creationDateTime, Date lastModifiedDateTime,
+ String resourceType, Long resourceID, Integer permissionCode) {
+ super();
+ this.name = name;
+ this.description = description;
+ this.creationDateTime = creationDateTime;
+ this.lastModifiedDateTime = lastModifiedDateTime;
+ this.resourceType = resourceType;
+ this.resourceID = resourceID;
+ this.permissionCode = permissionCode;
+ }
+ public FolderContentDTO(LearningDesign design, Integer permissionCode){
+ this.name = design.getTitle();
+ this.description = design.getDescription();
+ this.creationDateTime = design.getCreateDateTime();
+ this.lastModifiedDateTime = design.getLastModifiedDateTime();
+ this.resourceType = DESIGN;
+ this.resourceID = design.getLearningDesignId();
+ this.permissionCode = permissionCode;
+ }
+ public FolderContentDTO(WorkspaceFolder workspaceFolder, Integer permissionCode){
+ this.name = workspaceFolder.getName();
+ this.description = "Folder";
+ this.creationDateTime = workspaceFolder.getCreationDate();
+ this.lastModifiedDateTime = workspaceFolder.getLastModifiedDate();
+ this.resourceType = FOLDER;
+ this.resourceID = new Long(workspaceFolder.getWorkspaceFolderId().intValue());
+ this.permissionCode = permissionCode;
+ }
+ /**
+ * @return Returns the creationDateTime.
+ */
+ public Date getCreationDateTime() {
+ return creationDateTime!=null?creationDateTime:WDDXTAGS.DATE_NULL_VALUE;
+ }
+ /**
+ * @return Returns the description.
+ */
+ public String getDescription() {
+ return description!=null?description:WDDXTAGS.STRING_NULL_VALUE;
+ }
+ /**
+ * @return Returns the lastModifiedDateTime.
+ */
+ public Date getLastModifiedDateTime() {
+ return lastModifiedDateTime!=null?lastModifiedDateTime:WDDXTAGS.DATE_NULL_VALUE;
+ }
+ /**
+ * @return Returns the name.
+ */
+ public String getName() {
+ return name!=null?name:WDDXTAGS.STRING_NULL_VALUE;
+ }
+ /**
+ * @return Returns the permissionCode.
+ */
+ public Integer getPermissionCode() {
+ return permissionCode!=null?permissionCode:WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER;
+ }
+ /**
+ * @return Returns the resourceID.
+ */
+ public Long getResourceID() {
+ return resourceID!=null?resourceID:WDDXTAGS.NUMERIC_NULL_VALUE_LONG;
+ }
+ /**
+ * @return Returns the resourceType.
+ */
+ public String getResourceType() {
+ return resourceType!=null?resourceType:WDDXTAGS.STRING_NULL_VALUE;
+ }
+}
Index: lams_common/src/java/org/lamsfoundation/lams/workspace/exception/WorkspaceFolderException.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/workspace/exception/Attic/WorkspaceFolderException.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/exception/WorkspaceFolderException.java 13 Apr 2005 00:37:02 -0000 1.1
@@ -0,0 +1,24 @@
+/*
+ * Created on Apr 5, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.workspace.exception;
+
+/**
+ * @author Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WorkspaceFolderException extends Exception {
+
+ public WorkspaceFolderException(){
+
+ }
+ public WorkspaceFolderException(String message){
+ super(message);
+ }
+
+}
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
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java 13 Apr 2005 00:33:18 -0000 1.1
@@ -0,0 +1,34 @@
+/*
+ * 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
+ */
+public interface IWorkspaceManagementService {
+
+ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws IOException;
+
+ /**
+ * This method creates a new folder under the given parentFolder
+ * inside the user's default workspace.
+ *
+ * @param parentFolderID The parent_folder_id under which the new folder
+ * has to be created
+ * @param name The name of the new folder
+ * @param userID The user_id of the user for whom the folder is being created
+ * @return String The folder_id and name of the newly created folder in WDDX format
+ * @throws IOException
+ */
+ public String createFolderForFlash(Integer parentFolderID, String name, 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
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java 13 Apr 2005 00:33:18 -0000 1.1
@@ -0,0 +1,374 @@
+/*
+ * 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;
+import java.util.Date;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.lamsfoundation.lams.authoring.service.IAuthoringService;
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
+import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO;
+import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.Workspace;
+import org.lamsfoundation.lams.usermanagement.WorkspaceFolder;
+import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IUserDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceDAO;
+import org.lamsfoundation.lams.usermanagement.dao.IWorkspaceFolderDAO;
+import org.lamsfoundation.lams.usermanagement.exception.UserException;
+import org.lamsfoundation.lams.util.wddx.FlashMessage;
+import org.lamsfoundation.lams.util.wddx.WDDXTAGS;
+import org.lamsfoundation.lams.workspace.dto.FolderContentDTO;
+import org.lamsfoundation.lams.workspace.exception.WorkspaceFolderException;
+
+/**
+ * @author Manpreet Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class WorkspaceManagementService implements IWorkspaceManagementService{
+
+ private FlashMessage flashMessage;
+
+ public static final Integer AUTHORING = new Integer(1);
+ public static final Integer MONITORING = new Integer(2);
+
+ protected IUserDAO userDAO;
+ protected ILearningDesignDAO learningDesignDAO;
+ protected IWorkspaceFolderDAO workspaceFolderDAO;
+ protected IWorkspaceDAO workspaceDAO;
+ protected IOrganisationDAO organisationDAO;
+
+ protected IAuthoringService authoringService;
+
+
+ /**
+ * @param authoringService The authoringService to set.
+ */
+ public void setAuthoringService(IAuthoringService authoringService) {
+ this.authoringService = authoringService;
+ }
+ /**
+ * @param organisationDAO The organisationDAO to set.
+ */
+ public void setOrganisationDAO(IOrganisationDAO organisationDAO) {
+ this.organisationDAO = organisationDAO;
+ }
+ /**
+ * @param workspaceDAO The workspaceDAO to set.
+ */
+ public void setWorkspaceDAO(IWorkspaceDAO workspaceDAO) {
+ this.workspaceDAO = workspaceDAO;
+ }
+ /**
+ * @param workspaceFolderDAO The workspaceFolderDAO to set.
+ */
+ public void setWorkspaceFolderDAO(IWorkspaceFolderDAO workspaceFolderDAO) {
+ this.workspaceFolderDAO = workspaceFolderDAO;
+ }
+ /**
+ * @param learningDesignDAO The learningDesignDAO to set.
+ */
+ public void setLearningDesignDAO(ILearningDesignDAO learningDesignDAO) {
+ this.learningDesignDAO = learningDesignDAO;
+ }
+ /**
+ * @param userDAO The userDAO to set.
+ */
+ public void setUserDAO(IUserDAO userDAO) {
+ this.userDAO = userDAO;
+ }
+ public void deleteFolder(Integer folderID){
+ WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(folderID);
+ if(workspaceFolder!=null){
+ workspaceFolderDAO.delete(workspaceFolder);
+ }
+ }
+ public String getFolderContents(Integer userID, Integer workspaceFolderID, Integer mode)throws IOException{
+ User user = userDAO.getUserById(userID);
+ WorkspaceFolder workspaceFolder = null;
+ Integer permissions = null;
+ if(user!=null){
+ workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(workspaceFolderID);
+ if(workspaceFolder!=null){
+ permissions = getPermissions(workspaceFolder,user);
+ if(permissions!=WorkspaceFolder.NO_ACCESS){
+ Vector contentDTO = new Vector();
+ getFolderContent(workspaceFolder,permissions,mode,contentDTO);
+ if(workspaceFolder.hasSubFolders())
+ getSubFolderDetails(workspaceFolder,permissions,contentDTO);
+ flashMessage = new FlashMessage("getFolderContents",createFolderContentPacket(workspaceFolder,contentDTO));
+ }
+ else
+ flashMessage = new FlashMessage("getFolderContents",
+ "Access Denied for user with user_id:" + userID,
+ FlashMessage.ERROR);
+ }
+ else
+ flashMessage = new FlashMessage("getFolderContents",
+ "No such workspaceFolder with workspace_folder_id of:" + workspaceFolderID + " exists",
+ FlashMessage.ERROR);
+ }else
+ flashMessage = FlashMessage.getNoSuchUserExists("getFolderContents",userID);
+ 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)
+ designs = learningDesignDAO.getAllLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+ else
+ designs = learningDesignDAO.getAllValidLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+
+ getFolderContentDTO(designs,permissions,contentDTO);
+ }
+ private void getSubFolderDetails(WorkspaceFolder workspaceFolder,Integer permissions, Vector subFolderContent){
+ Iterator iterator = workspaceFolder.getChildWorkspaceFolders().iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)iterator.next();
+ subFolderContent.add(new FolderContentDTO(subFolder,permissions));
+ }
+ }
+ /**
+ * This method returns the permissions specific to the given
+ * workspaceFolder
for the given user.
+ *
+ * @param workspaceFolder The workspaceFolder for which we need the permissions
+ * @param user The user for whom these permissions are set.
+ * @return Integer The permissions
+ */
+ public Integer getPermissions(WorkspaceFolder workspaceFolder, User user){
+ Integer permission = null;
+ WorkspaceFolder userRootFolder = user.getWorkspace().getRootFolder();
+
+ if(isUserOwner(workspaceFolder,user))
+ permission = WorkspaceFolder.OWNER_ACCESS;
+ else if (isSubFolder(workspaceFolder,userRootFolder))
+ {
+ if(isRunSequencesFolder(workspaceFolder,user))
+ permission = WorkspaceFolder.READ_ACCESS;
+ else
+ permission = WorkspaceFolder.OWNER_ACCESS;
+ }
+ else if (isParentOrganisationFolder(workspaceFolder,user))
+ permission = WorkspaceFolder.MEMBERSHIP_ACCESS;
+ else if(user.hasMemberAccess(workspaceFolder))
+ permission = WorkspaceFolder.MEMBERSHIP_ACCESS;
+ else
+ permission = WorkspaceFolder.NO_ACCESS;
+
+ return permission;
+ }
+ /** This method checks if the given workspaceFolder is a subFolder of the
+ * given rootFolder*/
+ private boolean isSubFolder(WorkspaceFolder workspaceFolder,WorkspaceFolder rootFolder){
+ List subFolders = workspaceFolderDAO.getWorkspaceFolderByParentFolder(rootFolder.getWorkspaceFolderId());
+ Iterator iterator = subFolders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)iterator.next();
+ if(subFolder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ }
+ return false;
+
+ }
+ /**
+ * Assuming that there is ONLY ONE runSequences folder per user,
+ * which is created at the time the User is created, this method
+ * checks if the given workspaceFolder
is the runSequences folder
+ * for the given user.
+ *
+ * @param workspaceFolder
+ * @param user
+ * @return
+ */
+ public boolean isRunSequencesFolder(WorkspaceFolder workspaceFolder, User user){
+ WorkspaceFolder runSequencesFolder = workspaceFolderDAO.getRunSequencesFolderForUser(user.getUserId());
+ if(workspaceFolder.getWorkspaceFolderId()==runSequencesFolder.getWorkspaceFolderId())
+ return true;
+ else
+ return false;
+ }
+ /**
+ * This method checks if the given workspaceFolder
is the
+ * workspaceFolder of the parentOrganisation of which the user is a member.
+ *
+ * @param workspaceFolder
+ * @param user
+ * @return
+ */
+ public boolean isParentOrganisationFolder(WorkspaceFolder workspaceFolder, User user){
+ WorkspaceFolder parentOrganisationFolder = user.getBaseOrganisation().getWorkspace().getRootFolder();
+ if(parentOrganisationFolder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ else
+ return false;
+ }
+ private Vector getFolderContentDTO(List designs, Integer permissions,Vector folderContent){
+ Iterator iterator = designs.iterator();
+ while(iterator.hasNext()){
+ LearningDesign design = (LearningDesign)iterator.next();
+ folderContent.add(new FolderContentDTO(design,permissions));
+ }
+ return folderContent;
+
+ }
+ private Hashtable createFolderContentPacket(WorkspaceFolder workspaceFolder, Vector contents){
+ Hashtable packet = new Hashtable();
+ packet.put("parentWorkspaceFolderID", workspaceFolder.getParentWorkspaceFolder().getWorkspaceFolderId());
+ packet.put("workspaceFolderID", workspaceFolder.getWorkspaceFolderId());
+ packet.put("contents", contents);
+ return packet;
+ }
+ public String copyFolder(Integer folderID,Integer newWorkspaceFolderID,Integer userID)throws IOException{
+
+ WorkspaceFolder workspaceFolder = workspaceFolderDAO.getWorkspaceFolderByID(folderID);
+ if(workspaceFolder!=null){
+ try{
+ WorkspaceFolder newFolder = createFolder(newWorkspaceFolderID,workspaceFolder.getName(),userID);
+ copyRootContent(workspaceFolder,newFolder,userID);
+ if(workspaceFolder.hasSubFolders())
+ createSubFolders(workspaceFolder, newFolder,userID);
+ flashMessage = new FlashMessage("copyFolder",createCopyFolderPacket(newFolder));
+ }catch(UserException ue){
+ flashMessage = FlashMessage.getNoSuchUserExists("copyFolder",userID);
+ }catch(WorkspaceFolderException we){
+ flashMessage = FlashMessage.getNoSuchWorkspaceFolderExsists("copyFolder", newWorkspaceFolderID);
+ }
+ }
+ return flashMessage.serializeMessage();
+
+ }
+ private Hashtable createCopyFolderPacket(WorkspaceFolder workspaceFolder){
+ Hashtable packet = new Hashtable();
+ 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){
+ Iterator iterator =folders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder folder = (WorkspaceFolder)iterator.next();
+ if(folder.getWorkspaceFolderId()==workspaceFolder.getWorkspaceFolderId())
+ return true;
+ }
+ }
+ return false;
+ }
+ public void copyRootContent(WorkspaceFolder workspaceFolder,WorkspaceFolder targetWorkspaceFolder, Integer userID)throws UserException{
+ User user = userDAO.getUserById(userID);
+ if(user==null)
+ throw new UserException("No such user with a userID of " + userID + "exists");
+
+ List designs = learningDesignDAO.getAllLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId());
+ if(designs!=null && designs.size()!=0){
+ Iterator iterator = designs.iterator();
+ while(iterator.hasNext()){
+ LearningDesign design = (LearningDesign)iterator.next();
+ authoringService.copyLearningDesign(design,
+ new Integer(LearningDesign.COPY_TYPE_NONE),
+ user,targetWorkspaceFolder);
+ }
+ }
+ }
+ private WorkspaceFolder createFolder(Integer parentFolderID, String name, Integer userID) throws UserException,WorkspaceFolderException{
+ WorkspaceFolder parentFolder = workspaceFolderDAO.getWorkspaceFolderByID(parentFolderID);
+ User user =null;
+ Workspace workspace =null;
+
+ if(parentFolder!=null){
+
+ boolean nameExists = true;
+ while(nameExists){
+ nameExists = ifNameExists(parentFolder,name);
+ if(nameExists)
+ name =name + "C";
+ else
+ break;
+ }
+
+ user = userDAO.getUserById(userID);
+ if(user!=null){
+ workspace = user.getWorkspace();
+ WorkspaceFolder workspaceFolder = new WorkspaceFolder(name,
+ workspace.getWorkspaceId(),
+ parentFolder,
+ userID,
+ new Date(),
+ new Date(),
+ WorkspaceFolder.NORMAL);
+ workspaceFolderDAO.insert(workspaceFolder);
+ return workspaceFolder;
+ }else
+ throw new UserException("No such user with userID of " + userID + "exists");
+
+ }else
+ throw new WorkspaceFolderException("No such workspaceFolder with a workspace_folder_id of " + parentFolderID +" exists");
+ }
+ /**
+ * TODO For now assuming that the folder to be created would be of type NORMAL.
+ * But the type has to be passed in the near future indicating what kind of
+ * folder should be created (NORMAL/RUN SEQUENCES)
+ * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#createFolder(java.lang.Integer, java.lang.String, java.lang.Integer)
+ */
+ public String createFolderForFlash(Integer parentFolderID, String name, Integer userID)throws IOException{
+ try{
+ WorkspaceFolder newFolder = createFolder(parentFolderID,name,userID);
+ Hashtable table = new Hashtable();
+ table.put("folderID",newFolder.getWorkspaceFolderId());
+ table.put("name",newFolder.getName());
+ flashMessage = new FlashMessage("createFolderForFlash",table);
+
+ }catch(WorkspaceFolderException we){
+ flashMessage = FlashMessage.getNoSuchWorkspaceFolderExsists("createFolderForFlash",parentFolderID);
+ }catch(UserException ue){
+ flashMessage = FlashMessage.getNoSuchUserExists("createFolderForFlash",userID);
+ }
+ return flashMessage.serializeMessage();
+ }
+ private boolean ifNameExists(WorkspaceFolder targetFolder,String folderName){
+ List folders = workspaceFolderDAO.getWorkspaceFolderByParentFolder(targetFolder.getWorkspaceFolderId());
+ if(folders!=null && folders.size()!=0){
+ Iterator iterator = folders.iterator();
+ while(iterator.hasNext()){
+ WorkspaceFolder folder = (WorkspaceFolder)iterator.next();
+ if(folder.getName().equalsIgnoreCase(folderName))
+ return true;
+ }
+ }
+ return false;
+ }
+ public void createSubFolders(WorkspaceFolder workspaceFolder, WorkspaceFolder newFolder, Integer userID) throws UserException, WorkspaceFolderException{
+ Iterator subFoldersIterator = workspaceFolder.getChildWorkspaceFolders().iterator();
+ while(subFoldersIterator.hasNext()){
+ WorkspaceFolder subFolder = (WorkspaceFolder)subFoldersIterator.next();
+ WorkspaceFolder newSubFolder = createFolder(newFolder.getWorkspaceFolderId(),subFolder.getName(),userID);
+ copyRootContent(subFolder,newSubFolder,userID);
+ if(subFolder.hasSubFolders())
+ createSubFolders(subFolder,newSubFolder,userID);
+ }
+ }
+}
Index: lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/tool/dao/Attic/TestToolDAO.java,v
diff -u -r1.3 -r1.4
--- lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java 23 Feb 2005 05:21:00 -0000 1.3
+++ lams_common/test/java/org/lamsfoundation/lams/tool/dao/TestToolDAO.java 13 Apr 2005 00:31:04 -0000 1.4
@@ -54,7 +54,7 @@
assertEquals("verify service name","surveyService",testTool.getServiceName());
assertEquals("verify display name","Survey",testTool.getToolDisplayName());
assertEquals("verify default content id",6,testTool.getDefaultToolContentId());
- assertTrue("verify support grouping",!testTool.getSupportsGrouping());
+ // assertTrue("verify support grouping",!testTool.getSupportsGrouping());
assertTrue("verify support define later",!testTool.getSupportsDefineLater());
}
public void testGetAllTools(){
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/TestUserManagementService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/Attic/TestUserManagementService.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/TestUserManagementService.java 13 Apr 2005 00:30:53 -0000 1.1
@@ -0,0 +1,87 @@
+/*
+ * Created on Mar 22, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.lamsfoundation.lams.usermanagement;
+
+import java.io.IOException;
+import java.util.Date;
+import org.lamsfoundation.lams.AbstractLamsTestCase;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.AuthenticationMethodDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.OrganisationDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.OrganisationTypeDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.RoleDAO;
+import org.lamsfoundation.lams.usermanagement.dao.hibernate.UserDAO;
+import org.lamsfoundation.lams.usermanagement.service.UserManagementService;
+
+/**
+ * @author Manpreet Minhas
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class TestUserManagementService extends AbstractLamsTestCase {
+
+ protected UserDAO userDAO;
+ protected RoleDAO roleDAO;
+ protected OrganisationDAO organisationDAO;
+ protected OrganisationTypeDAO organisationTypeDAO;
+ protected UserManagementService userManagementService;
+ protected AuthenticationMethodDAO authenticationMethodDAO;
+
+ public TestUserManagementService(String name){
+ super(name);
+ }
+ protected void setUp()throws Exception{
+ super.setUp();
+ userDAO =(UserDAO)context.getBean("userDAO");
+ organisationDAO =(OrganisationDAO)context.getBean("organisationDAO");
+ organisationTypeDAO =(OrganisationTypeDAO)context.getBean("organisationTypeDAO");
+ userManagementService = (UserManagementService)context.getBean("userManagementService");
+ authenticationMethodDAO =(AuthenticationMethodDAO)context.getBean("authenticationMethodDAO");
+ roleDAO = (RoleDAO)context.getBean("roleDAO");
+ }
+
+ /* (non-Javadoc)
+ * @see org.lamsfoundation.lams.AbstractLamsTestCase#getContextConfigLocation()
+ */
+ protected String[] getContextConfigLocation() {
+ return new String[] {"applicationContext.xml","org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml"};
+ }
+ public void testSaveOrganisation(){
+ Organisation organisation = new Organisation("Test Organisation",
+ "Test Organisation Description",
+ new Date(),
+ organisationTypeDAO.getOrganisationTypeById(new Integer(1)));
+
+ Integer organisationID = userManagementService.saveOrganisation(organisation,new Integer(1));
+ assertNotNull(organisationID);
+ }
+ public void saveUser(){
+ User user = new User();
+ user.setLogin("Monu");
+ user.setPassword("Monu");
+ user.setDisabledFlag(new Boolean(false));
+ user.setCreateDate(new Date());
+ user.setAuthenticationMethod(authenticationMethodDAO.getAuthenticationMethodById(new Integer(2)));
+ user.setBaseOrganisation(organisationDAO.getOrganisationById(new Integer(1)));
+ user.setUserOrganisationID(new Integer(1));
+ assertNotNull(userManagementService.saveUser(user, new Integer(4)));
+
+ }
+ public void testMoveLearningDesign()throws IOException{
+ String packet = userManagementService.moveLearningDesign(new Long(1),new Integer(4),new Integer(1));
+ System.out.println(packet);
+ }
+ public void testGetOrganisationsForUserByRole()throws IOException{
+ String packet = userManagementService.getWDDXForOrganisationsForUserByRole(new Integer(4),"AUTHOR");
+ System.out.println(packet);
+ }
+ public void testGetUsersFromOrganisationByRole() throws IOException{
+ String packet = userManagementService.getUsersFromOrganisationByRole(new Integer(4),"AUTHOR");
+ System.out.println(packet);
+ }
+
+}
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/OrganisationDAOTest.java,v
diff -u -r1.1 -r1.2
--- lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAOTest.java 13 Apr 2005 00:29:53 -0000 1.2
@@ -5,16 +5,9 @@
*/
package org.lamsfoundation.lams.usermanagement.dao.hibernate;
-import java.util.Date;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
+import org.lamsfoundation.lams.AbstractLamsTestCase;
import org.lamsfoundation.lams.usermanagement.Organisation;
-import org.lamsfoundation.lams.usermanagement.Workspace;
-import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO;
-import junit.framework.TestCase;
-
/**
* TODO Add description here
*
@@ -24,32 +17,30 @@
*
* @author Fei Yang
*/
-public class OrganisationDAOTest extends TestCase {
- private Organisation organisation = null;
- private String errorMessage = "";
- private OrganisationTypeDAO organisationDAO = null;
- private ApplicationContext ctx;
+public class OrganisationDAOTest extends AbstractLamsTestCase {
+ private Organisation organisation = null;
+ private OrganisationDAO organisationDAO = null;
+
+
+ public OrganisationDAOTest(String name){
+ super(name);
+ }
protected void setUp() throws Exception{
- ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
- organisationDAO = (OrganisationTypeDAO)ctx.getBean("organisationDAO");
+ super.setUp();
+ organisationDAO = (OrganisationDAO)context.getBean("organisationDAO");
}
protected void tearDown() throws Exception{
organisationDAO = null;
+ }
+ public void testGetOrganisationByWorkspaceeID(){
+ organisation = organisationDAO.getOrganisationByWorkspaceID(new Integer(1));
+ assertNotNull(organisation.getOrganisationId());
}
-
- public void testSaveOrganisation(){
- /*
- IOrganisationTypeDAO organisationTypeDAO = (IOrganisationTypeDAO)ctx.getBean("organisationTypeDAO");
- organisation = new Organisation("Root","",null,new Date(), new Workspace(), organisationTypeDAO.getOrganisationTypeById(new Integer(1)),null,null);
- organisationTypeDAO = null;
- organisationDAO.saveOrganisation(organisation);
- assertTrue(organisationDAO.getAllOrganisations().size()==1);
- */
+ protected String[] getContextConfigLocation() {
+ return new String[] {"WEB-INF/spring/learningDesignApplicationContext.xml",
+ "WEB-INF/spring/applicationContext.xml"};
}
- public void testGetOrganisationById(){
- }
-
}
Index: lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java
===================================================================
RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/UserDAOTest.java,v
diff -u -r1.1 -r1.2
--- lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java 28 Jan 2005 04:20:59 -0000 1.1
+++ lams_common/test/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAOTest.java 13 Apr 2005 00:29:53 -0000 1.2
@@ -5,12 +5,15 @@
*/
package org.lamsfoundation.lams.usermanagement.dao.hibernate;
-import junit.framework.TestCase;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.FileSystemXmlApplicationContext;
-
+import java.util.Date;
+import org.lamsfoundation.lams.AbstractLamsTestCase;
+import org.lamsfoundation.lams.usermanagement.Organisation;
+import org.lamsfoundation.lams.usermanagement.Role;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.UserOrganisation;
+import org.lamsfoundation.lams.usermanagement.UserOrganisationRole;
+
/**
* TODO Add description here
*
@@ -20,22 +23,73 @@
*
* @author Fei Yang
*/
-public class UserDAOTest extends TestCase {
+public class UserDAOTest extends AbstractLamsTestCase{
private User user = null;
private UserDAO userDAO = null;
- private ApplicationContext ctx;
+ protected RoleDAO roleDAO;
+ protected OrganisationDAO organisationDAO;
+ protected OrganisationTypeDAO organisationTypeDAO;
+ protected AuthenticationMethodDAO authenticationMethodDAO;
- protected void setUp() throws Exception{
- ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
- userDAO = (UserDAO)ctx.getBean("userDAO");
- }
+ protected UserOrganisationDAO userOrganisationDAO;
+ protected UserOrganisationRoleDAO userOrganisationRoleDAO;
- protected void tearDown() throws Exception{
- userDAO = null;
- }
- public void testGetAllUsers(){
- assertTrue(userDAO.getAllUsers().size()==0);
+ public UserDAOTest(String name){
+ super(name);
+ }
+ protected void setUp() throws Exception{
+ super.setUp();
+ userDAO = (UserDAO)context.getBean("userDAO");
+ organisationDAO = (OrganisationDAO)context.getBean("organisationDAO");
+
+ organisationTypeDAO =(OrganisationTypeDAO)context.getBean("organisationTypeDAO");
+ authenticationMethodDAO =(AuthenticationMethodDAO)context.getBean("authenticationMethodDAO");
+
+ roleDAO = (RoleDAO)context.getBean("roleDAO");
+ userOrganisationDAO = (UserOrganisationDAO)context.getBean("userOrganisationDAO");
+ userOrganisationRoleDAO = (UserOrganisationRoleDAO)context.getBean("userOrganisationRoleDAO");
+ }
+ public void testGetUser(){
+ user = userDAO.getUserById(new Integer(2));
+ assertNotNull(user.getLogin());
}
-
+ public void testIsMember(){
+ Organisation organisation = organisationDAO.getOrganisationById(new Integer(4));
+ user = userDAO.getUserById(new Integer(4));
+ boolean member = user.isMember(organisation);
+ assertTrue(member);
+ }
+ protected String[] getContextConfigLocation() {
+ return new String[] {"WEB-INF/spring/applicationContext.xml","WEB-INF/spring/learningDesignApplicationContext.xml"};
+ }
+ public void testSaveUser(){
+ User user = new User();
+ user.setLogin("MiniMinhas");
+ user.setPassword("MiniMinhas");
+ user.setDisabledFlag(new Boolean(false));
+ user.setCreateDate(new Date());
+ user.setAuthenticationMethod(authenticationMethodDAO.getAuthenticationMethodById(new Integer(2)));
+ user.setBaseOrganisation(organisationDAO.getOrganisationById(new Integer(1)));
+ user.setUserOrganisationID(new Integer(1));
+ userDAO.saveUser(user);
+ user.setUserOrganisationID(createUserOrganisation(user));
+ userDAO.updateUser(user);
+ }
+ private Integer createUserOrganisation(User user){
+ UserOrganisation userOrganisation = new UserOrganisation();
+ userOrganisation.setOrganisation(user.getBaseOrganisation());
+ userOrganisation.setUser(user);
+ userOrganisationDAO.saveUserOrganisation(userOrganisation);
+ userOrganisation.addUserOrganisationRole(createUserOrganisationRole(userOrganisation));
+ userOrganisationDAO.saveOrUpdateUserOrganisation(userOrganisation);
+ return userOrganisation.getUserOrganisationId();
+ }
+ private UserOrganisationRole createUserOrganisationRole(UserOrganisation userOrganisation){
+ UserOrganisationRole userOrganisationRole = new UserOrganisationRole();
+ userOrganisationRole.setUserOrganisation(userOrganisation);
+ userOrganisationRole.setRole(roleDAO.getRoleByName(Role.STAFF));
+ userOrganisationRoleDAO.saveUserOrganisationRole(userOrganisationRole);
+ return userOrganisationRole;
+ }
}