Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -raf47208d285cade3f620e0af819c9e06fde34ed3 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision af47208d285cade3f620e0af819c9e06fde34ed3) @@ -43,6 +43,7 @@ import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.dto.UserFlashDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; +import org.lamsfoundation.lams.usermanagement.exception.WorkspaceFolderException; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.wddx.FlashMessage; @@ -71,10 +72,10 @@ 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(); + // 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; */ + return user != null ? user.getUserID() : null; } /** @@ -91,6 +92,8 @@ */ public static final Integer ORG_FOLDER_ID = new Integer(-2); + public static final Integer ROOT_ORG_FOLDER_ID = new Integer(1); + /** * @return */ @@ -194,12 +197,27 @@ HttpServletResponse response)throws ServletException,IOException{ Integer folderID = new Integer(WebUtil.readIntParam(request,"folderID")); Integer mode = new Integer(WebUtil.readIntParam(request,"mode")); - Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); - IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); + //Integer userID = new Integer(WebUtil.readIntParam(request,AttributeNames.PARAM_USER_ID)); + Integer userID = getUserId(request); String methodKey = "getFolderContents"; + try { + return returnWDDXPacket(new FlashMessage(methodKey,getFolderContents(folderID, mode, userID)), response); + } catch (UserAccessDeniedException e) { + return returnWDDXPacket(FlashMessage.getUserNotAuthorized(methodKey, userID), response); + } catch (WorkspaceFolderException e) { + return returnWDDXPacket(new FlashMessage(methodKey, e.getMessage(), FlashMessage.ERROR), response); + } catch (Exception e) { + log.error("getFolderContents: Exception occured. userID "+userID+" folderID "+folderID, e); + return returnWDDXPacket(FlashMessage.getExceptionOccured(methodKey, e.getMessage()), response); + } + } + + private Hashtable getFolderContents(Integer folderID, Integer mode, Integer userID) throws UserAccessDeniedException, WorkspaceFolderException, Exception { + IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); + Hashtable packet = null; + String methodKey = "getFolderContents"; - try { if ( BOOTSTRAP_FOLDER_ID.equals(folderID )) { MessageService msgService = workspaceManagementService.getMessageService(); @@ -222,30 +240,37 @@ } else if ( ORG_FOLDER_ID.equals(folderID) ) { // return back all the organisation folders that the user can access Vector folders = workspaceManagementService.getAccessibleOrganisationWorkspaceFolders(userID); + + if(folders.size() == 1) { + FolderContentDTO folder = (FolderContentDTO) folders.firstElement(); + if(folder.resourceID.equals(new Long(ROOT_ORG_FOLDER_ID))) + return getFolderContents(new Integer(ROOT_ORG_FOLDER_ID), mode, userID); + } + packet = createFolderContentPacket(BOOTSTRAP_FOLDER_ID, ORG_FOLDER_ID, folders); } else { // normal case - just return back the contents of this folder. WorkspaceFolder folder = workspaceManagementService.getWorkspaceFolder(folderID); if ( folder != null ) { Vector items; - items = workspaceManagementService.getFolderContentsExcludeHome(userID,folder,mode); - WorkspaceFolder parentWorkspaceFolder = folder.getParentWorkspaceFolder(); - packet = createFolderContentPacket(parentWorkspaceFolder!=null?parentWorkspaceFolder.getWorkspaceFolderId():null, + items = workspaceManagementService.getFolderContentsExcludeHome(userID,folder,mode); + if(folder.getWorkspaceFolderId().equals(ROOT_ORG_FOLDER_ID)) { + packet = createFolderContentPacket(BOOTSTRAP_FOLDER_ID, ORG_FOLDER_ID, items); + } else { + WorkspaceFolder parentWorkspaceFolder = folder.getParentWorkspaceFolder(); + + packet = createFolderContentPacket(parentWorkspaceFolder!=null?parentWorkspaceFolder.getWorkspaceFolderId():null, folder.getWorkspaceFolderId(), items); + } + } else { - return returnWDDXPacket(FlashMessage.getNoSuchWorkspaceFolderContentExsists(methodKey,new Long(folderID.longValue())), response); + throw new WorkspaceFolderException(FlashMessage.getNoSuchWorkspaceFolderContentExsists(methodKey,new Long(folderID.longValue())).getMessageValue().toString()); } } - } catch (UserAccessDeniedException e) { - return returnWDDXPacket(FlashMessage.getUserNotAuthorized(methodKey, userID), response); - } catch (Exception e) { - log.error("getFolderContents: Exception occured. userID "+userID+" folderID "+folderID, e); - return returnWDDXPacket(FlashMessage.getExceptionOccured(methodKey, e.getMessage()), response); - } - return returnWDDXPacket(new FlashMessage(methodKey,packet), response); + return packet; } private Hashtable createFolderContentPacket(Integer parentWorkspaceFolderID, Integer workspaceFolderID, Vector contents){