Index: lams_build/lib/lams/lams-contentrepository.jar =================================================================== diff -u -r98064f112f0bd41d1adc890ea1c0e962d0be6cb2 -rf48c6873abe00cb898d3a832b9b6a9c95d81a559 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java =================================================================== diff -u -r6204654e56634639e5fb6b2b5c2be11f835cf117 -rf48c6873abe00cb898d3a832b9b6a9c95d81a559 --- lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java (.../PortraitSaveAction.java) (revision 6204654e56634639e5fb6b2b5c2be11f835cf117) +++ lams_central/src/java/org/lamsfoundation/lams/web/PortraitSaveAction.java (.../PortraitSaveAction.java) (revision f48c6873abe00cb898d3a832b9b6a9c95d81a559) @@ -85,6 +85,8 @@ String fileName = file.getFileName(); log.debug("got file: "+fileName+" of type: "+file.getContentType()+" with size: "+file.getFileSize()); + User user = (User)getService().getUserByLogin(request.getRemoteUser()); + // check if file is an image using the MIME content type String mediaType = file.getContentType().split("/",2)[0]; if (!mediaType.equals("image")) { @@ -109,7 +111,7 @@ if (file!= null && !StringUtils.isEmpty(fileName)) { try { //InputStream is = file.getInputStream(); - node = centralToolContentHandler.uploadFile(is, fileName, file.getContentType(), IToolContentHandler.TYPE_ONLINE); + node = centralToolContentHandler.uploadFile(is, fileName, file.getContentType(), IToolContentHandler.TYPE_ONLINE, user.getUserId()); is.close(); } catch (Exception e) { request.setAttribute("errorMessage", e.getMessage()); @@ -119,7 +121,6 @@ log.debug("saved file with uuid: "+node.getUuid()+" and version: "+node.getVersion()); - User user = (User)getService().getUserByLogin(request.getRemoteUser()); // delete old portrait file (we only want to keep the user's current portrait) if (user.getPortraitUuid()!=null) centralToolContentHandler.deleteFile(user.getPortraitUuid()); user.setPortraitUuid(node.getUuid()); Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java =================================================================== diff -u -r902b2f38c23e260d4cd83ce964f5e8a9814e032c -rf48c6873abe00cb898d3a832b9b6a9c95d81a559 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 902b2f38c23e260d4cd83ce964f5e8a9814e032c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision f48c6873abe00cb898d3a832b9b6a9c95d81a559) @@ -222,11 +222,12 @@ * holds this content * @param mimeType The MIME type of the file * @param path The physical location of the file from where it has to be read + * @param userID The User who has requested this opeartion * @return String The acknowledgement/error message in WDDX format for the * FLASH client. * @throws Exception */ - public String createWorkspaceFolderContent(Integer contentTypeID, String name, String description, Integer workspaceFolderID, String mimeType, String path) throws Exception; + public String createWorkspaceFolderContent(Integer contentTypeID, String name, String description, Integer workspaceFolderID, String mimeType, String path, Integer userId) throws Exception; /** * This method updates an existing file(workspaceFolderContet) @@ -235,10 +236,11 @@ * @param folderContentID The folder_content_id of the file * to be updated * @param path The physical location of the file from where it has to be read + * @param userID The User who has requested this opeartion * @return String The acknowledgement/error message in WDDX format for FLASH * @throws Exception */ - public String updateWorkspaceFolderContent(Long folderContentID,String path)throws Exception; + public String updateWorkspaceFolderContent(Long folderContentID,String path, Integer userId)throws Exception; /** * This method is called when the user knows which version of the @@ -347,4 +349,4 @@ */ public String getUserOrganisation(Integer userID, Integer organisationId) throws IOException; -} +} \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -r902b2f38c23e260d4cd83ce964f5e8a9814e032c -rf48c6873abe00cb898d3a832b9b6a9c95d81a559 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 902b2f38c23e260d4cd83ce964f5e8a9814e032c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision f48c6873abe00cb898d3a832b9b6a9c95d81a559) @@ -53,10 +53,10 @@ import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; +import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationState; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; -import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.Workspace; @@ -71,7 +71,6 @@ import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.workspace.WorkspaceFolderContent; -import org.lamsfoundation.lams.workspace.dao.IWorkspaceFolderContentDAO; import org.lamsfoundation.lams.workspace.dto.FolderContentDTO; import org.lamsfoundation.lams.workspace.dto.UpdateContentDTO; @@ -378,8 +377,6 @@ public Integer getPermissions(WorkspaceFolder workspaceFolder, User user){ Integer permission = null; - WorkspaceFolder userDefaultFolder = user.getWorkspace().getDefaultFolder(); - if ( workspaceFolder==null || user==null ) { permission = WorkspaceFolder.NO_ACCESS; } else if (workspaceFolder.getUserID().equals(user.getUserId())) { @@ -391,25 +388,7 @@ } return permission; } - /** This method checks if the given workspaceFolder is a subFolder of the - * given rootFolder. Returns false if they are the same folder. */ - private boolean isSubFolder(WorkspaceFolder workspaceFolder,WorkspaceFolder rootFolder){ - if ( rootFolder != null ) { - // is it the same folder? - if ( rootFolder.getWorkspaceFolderId().equals(workspaceFolder.getWorkspaceFolderId()) ) { - return false; - } - // check the parent hierarchy - WorkspaceFolder folder = workspaceFolder; - while ( folder != null && ! rootFolder.getWorkspaceFolderId().equals(folder.getWorkspaceFolderId()) ) { - folder = folder.getParentWorkspaceFolder(); - } - return ( folder != null ); - } - return false; - - } - + private Vector getFolderContentDTO(List designs, Integer permissions,Vector folderContent){ Iterator iterator = designs.iterator(); while(iterator.hasNext()){ @@ -812,9 +791,9 @@ } /** - * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#createWorkspaceFolderContent(java.lang.Integer, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.String) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#createWorkspaceFolderContent(java.lang.Integer, java.lang.String, java.lang.String, java.lang.Integer, java.lang.String, java.lang.String, java.lang.Integer) */ - public String createWorkspaceFolderContent(Integer contentTypeID,String name,String description,Integer workspaceFolderID, String mimeType, String path) throws Exception{ + public String createWorkspaceFolderContent(Integer contentTypeID,String name,String description,Integer workspaceFolderID, String mimeType, String path, Integer userId) throws Exception{ // TODO add some validation so that a non-unique name doesn't result in an index violation // bit hard for the user to understand. @@ -829,7 +808,7 @@ try{ InputStream stream = new FileInputStream(path); - NodeKey nodeKey = addFileToRepository(stream,name,mimeType); + NodeKey nodeKey = addFileToRepository(stream,name,mimeType,userId); workspaceFolderContent.setUuid(nodeKey.getUuid()); workspaceFolderContent.setVersionID(nodeKey.getVersion()); baseDAO.update(workspaceFolderContent); @@ -892,13 +871,13 @@ /** * (non-Javadoc) - * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#updateWorkspaceFolderContent(java.lang.Long, java.io.InputStream) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#updateWorkspaceFolderContent(java.lang.Long, java.io.InputStream, java.lang.Integer) */ - public String updateWorkspaceFolderContent(Long folderContentID,String path)throws Exception{ + public String updateWorkspaceFolderContent(Long folderContentID,String path, Integer userId)throws Exception{ InputStream stream = new FileInputStream(path); WorkspaceFolderContent workspaceFolderContent = (WorkspaceFolderContent)baseDAO.find(WorkspaceFolderContent.class,folderContentID); if(workspaceFolderContent!=null){ - NodeKey nodeKey = updateFileInRepository(workspaceFolderContent,stream); + NodeKey nodeKey = updateFileInRepository(workspaceFolderContent,stream, userId); UpdateContentDTO contentDTO = new UpdateContentDTO(nodeKey.getUuid(), nodeKey.getVersion(),folderContentID); flashMessage = new FlashMessage(MSG_KEY_UPDATE_WKF_CONTENT,contentDTO); }else @@ -916,15 +895,16 @@ * @param stream The InputStream representing the data to be added * @param fileName The name of the file being added * @param mimeType The MIME type of the file (eg. TXT, DOC, GIF etc) + * @param userId The user who is creating the content * @return NodeKey Represents the two part key - UUID and Version. * @throws AccessDeniedException * @throws FileException * @throws InvalidParameterException */ - private NodeKey addFileToRepository(InputStream stream, String fileName, String mimeType)throws AccessDeniedException, + private NodeKey addFileToRepository(InputStream stream, String fileName, String mimeType, Integer userId)throws AccessDeniedException, FileException,InvalidParameterException{ ITicket ticket = getRepositoryLoginTicket(); - NodeKey nodeKey = repositoryService.addFileItem(ticket,stream,fileName,mimeType,null); + NodeKey nodeKey = repositoryService.addFileItem(ticket,stream,fileName,mimeType,null,userId); return nodeKey; } /** @@ -940,11 +920,11 @@ * @throws Exception */ private NodeKey updateFileInRepository(WorkspaceFolderContent workspaceFolderContent, - InputStream stream)throws Exception{ + InputStream stream, Integer userId)throws Exception{ ITicket ticket = getRepositoryLoginTicket(); NodeKey nodeKey = repositoryService.updateFileItem(ticket,workspaceFolderContent.getUuid(), workspaceFolderContent.getName(), - stream,workspaceFolderContent.getMimeType(),null); + stream,workspaceFolderContent.getMimeType(),null,userId); workspaceFolderContent.setUuid(nodeKey.getUuid()); workspaceFolderContent.setVersionID(nodeKey.getVersion()); baseDAO.update(workspaceFolderContent); @@ -1382,4 +1362,4 @@ -} +} \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== diff -u -r902b2f38c23e260d4cd83ce964f5e8a9814e032c -rf48c6873abe00cb898d3a832b9b6a9c95d81a559 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 902b2f38c23e260d4cd83ce964f5e8a9814e032c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision f48c6873abe00cb898d3a832b9b6a9c95d81a559) @@ -32,6 +32,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; @@ -46,6 +47,7 @@ import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.workspace.dto.FolderContentDTO; import org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService; @@ -68,6 +70,13 @@ public static final String RESOURCE_TYPE = "resourceType"; public static final String ROLE_DELIMITER = ","; + private Integer getUserId(HttpServletRequest request) { + // return new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } + /** * Special value for folderID on getFolderContents(). Triggers getting the * dummy value for the organisations (see ORG_FOLDER_ID) and the user's @@ -144,7 +153,7 @@ return returnWDDXPacket(errorPacket, response); String folderName = (String)WebUtil.readStrParam(request,"name"); - Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + Integer userID = getUserId(request); IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); String wddxPacket = workspaceManagementService.createFolderForFlash(parentFolderID,folderName,userID); return returnWDDXPacket(wddxPacket, response); @@ -385,6 +394,7 @@ Integer workspaceFolderID = new Integer(WebUtil.readIntParam(request,"workspaceFolderID")); String mimeType = WebUtil.readStrParam(request,"mimeType"); String path = WebUtil.readStrParam(request,"path"); + Integer userId = getUserId(request); String errorPacket = checkResourceNotDummyValue("createWorkspaceFolderContent", workspaceFolderID, FolderContentDTO.FOLDER); if ( errorPacket != null) @@ -395,7 +405,7 @@ IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); wddxPacket = workspaceManagementService.createWorkspaceFolderContent(contentTypeID,name,description, workspaceFolderID, - mimeType,path); + mimeType,path,userId); } catch (Exception e) { log.error("createWorkspaceFolderContent: Exception occured. contentTypeID "+contentTypeID+" name "+name+" workspaceFolderID "+workspaceFolderID, e); FlashMessage flashMessage = FlashMessage.getExceptionOccured(IWorkspaceManagementService.MSG_KEY_CREATE_WKF_CONTENT, e.getMessage()); @@ -421,11 +431,11 @@ HttpServletResponse response)throws ServletException, Exception{ Long folderContentID = new Long(WebUtil.readLongParam(request,"folderContentID")); String path = WebUtil.readStrParam(request,"path"); - + Integer userId = getUserId(request); String wddxPacket = null; try { IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); - wddxPacket = workspaceManagementService.updateWorkspaceFolderContent(folderContentID,path); + wddxPacket = workspaceManagementService.updateWorkspaceFolderContent(folderContentID,path,userId); } catch (Exception e) { log.error("updateWorkspaceFolderContent: Exception occured. path "+path+" folderContentID "+folderContentID, e); FlashMessage flashMessage = FlashMessage.getExceptionOccured(IWorkspaceManagementService.MSG_KEY_UPDATE_WKF_CONTENT, e.getMessage()); @@ -448,7 +458,7 @@ ActionForm form, HttpServletRequest request, HttpServletResponse response)throws IOException{ - Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + Integer userID = getUserId(request); Long resourceID = new Long(WebUtil.readLongParam(request,RESOURCE_ID)); String resourceType = WebUtil.readStrParam(request,RESOURCE_TYPE); @@ -510,7 +520,7 @@ HttpServletRequest request, HttpServletResponse response)throws Exception{ - Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + Integer userID = getUserId(request); String roles_str = WebUtil.readStrParam(request, "roles"); String[] roles = roles_str.split(ROLE_DELIMITER); @@ -582,7 +592,7 @@ HttpServletRequest request, HttpServletResponse response)throws Exception{ - Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + Integer userID = getUserId(request); Integer orgId = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID,true); String wddxPacket = null; @@ -596,4 +606,3 @@ } return returnWDDXPacket(wddxPacket, response); } } -