Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java =================================================================== diff -u -rcaa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision caa9a3e6d7c7a51d0852c6b350f05ee2a7d3fbab) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -27,7 +27,7 @@ + " where m.createdBy.uid = ? and m.toolSession.uid=?"; private static final String SQL_QUERY_BY_SESSION = "from " + Message.class.getName() + " m " - + " where m.toolSession.uid=?"; + + " where m.toolSession.sessionId=?"; public void saveOrUpdate(Message message) { message.updateModificationData(); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r1a5fe7ba5d0193d7c80351af38dd8959ac31d964 -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 1a5fe7ba5d0193d7c80351af38dd8959ac31d964) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -159,12 +159,14 @@ messageDao.deleteById(topicUid); } - public Message replyTopic(Long parentId, Message replyMessage) throws PersistenceException { + public Message replyTopic(Long parentId,Long sessionId, Message replyMessage) throws PersistenceException { //set parent Message parent = this.getMessage(parentId); replyMessage.setParent(parent); replyMessage.setForum(parent.getForum()); - replyMessage.setToolSession(parent.getToolSession()); + //parent sessionID maybe empty if created by author role. So given sessionId is exactly value. + ForumToolSession session = getSessionBySessionId(sessionId); + replyMessage.setToolSession(session); messageDao.saveOrUpdate(replyMessage); //get root topic and create record in MessageSeq table @@ -578,6 +580,9 @@ return content; } + public List getAllTopicsFromSession(Long sessionID) { + return MessageDTO.getMessageDTO(messageDao.getBySession(sessionID)); + } //*************************************************************************************************************** // Get / Set methods //*************************************************************************************************************** @@ -661,5 +666,4 @@ this.learnerService = learnerService; } - } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== diff -u -r62402371ee899b9b20c61c988149efbec1cc00bd -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 62402371ee899b9b20c61c988149efbec1cc00bd) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -86,11 +86,12 @@ /** * Reply a topic. * @param parentId + * @param sessionId ToolSessionID * @param message * @return * @throws PersistenceException */ - public Message replyTopic(Long parentId, Message message) throws PersistenceException; + public Message replyTopic(Long parentId, Long sessionId, Message message) throws PersistenceException; /** * Delete the topic by given topic ID. The function will delete all children topics under this topic. @@ -188,6 +189,12 @@ * @return List */ public List getSessionsByContentId(Long contentID); + /** + * Get all message according to the given session ID. + * @param sessionID + * @return + */ + public List getAllTopicsFromSession(Long sessionID); //************************************************************************************ // User Method //************************************************************************************ Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java =================================================================== diff -u -r1a5fe7ba5d0193d7c80351af38dd8959ac31d964 -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 1a5fe7ba5d0193d7c80351af38dd8959ac31d964) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -189,13 +189,18 @@ Forum forum = forumForm.getForum(); try { forumService = getForumManager(); + + //*******************************Handle user******************* //if there are new user + boolean newUser = false; ForumUser forumUser = (ForumUser) request.getSession().getAttribute(ForumConstants.NEW_FORUM_USER); if(forumUser != null){ forumService.createUser(forumUser); + newUser = true; } request.getSession().setAttribute(ForumConstants.NEW_FORUM_USER,null); + //**********************************Handle Attachement********************* Forum forumPO = forumService.getForumByContentId(forumForm.getToolContentID()); if(forumPO == null || !forumForm.getToolContentID().equals(forum.getContentId()) ){ //new Forum, create it. @@ -258,8 +263,14 @@ iter = topics.iterator(); while(iter.hasNext()){ MessageDTO dto = (MessageDTO) iter.next(); - if(dto.getMessage() != null) + if(dto.getMessage() != null){ + if(newUser){ + //This flushs user UID info to message if this user is a new user. + dto.getMessage().setCreatedBy(forumUser); + dto.getMessage().setModifiedBy(forumUser); + } forumService.createRootTopic(forum.getUid(),null,dto.getMessage()); + } } //delete them from database. List delTopics = getDeletedTopicList(request); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -r7e3a5a06958382ab32f15969c971d7b3e1599626 -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 7e3a5a06958382ab32f15969c971d7b3e1599626) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -275,7 +275,7 @@ private ActionForward replyTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Long parentId = (Long) request.getSession().getAttribute("parentId"); - + Long sessionId = (Long) request.getSession().getAttribute(AttributeNames.PARAM_TOOL_SESSION_ID); MessageForm messageForm = (MessageForm) form; Message message = messageForm.getMessage(); message.setIsAuthored(false); @@ -289,7 +289,7 @@ //save message into database forumService = getForumManager(); - forumService.replyTopic(parentId,message); + forumService.replyTopic(parentId,sessionId,message); //echo back this topic thread into page forumService = getForumManager(); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== diff -u -rbbe88a48d8e196a1c6df3d8d915142c19857b052 -re3a49cfedf88904e13c5286d6d70f169f5930a50 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision bbe88a48d8e196a1c6df3d8d915142c19857b052) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) @@ -23,7 +23,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.text.DateFormat; -import java.text.FieldPosition; import java.text.NumberFormat; import java.util.ArrayList; import java.util.HashMap; @@ -146,7 +145,7 @@ Long sessionID =new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_SESSION_ID)); forumService = getForumService(); - List topicList = forumService.getRootTopics(sessionID); + List topicList = forumService.getAllTopicsFromSession(sessionID); Map topicsByUser = getTopicsSortedByAuthor(topicList); request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); @@ -171,15 +170,15 @@ HttpServletResponse response) { Long sessionID =new Long(WebUtil.readLongParam(request,AttributeNames.PARAM_TOOL_SESSION_ID)); forumService = getForumService(); - List topicList = forumService.getRootTopics(sessionID); + List topicList = forumService.getAllTopicsFromSession(sessionID); //construct Excel file format and download ActionMessages errors = new ActionMessages(); try { //create an empty excel file HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Marks"); sheet.setColumnWidth((short)0,(short)5000); - HSSFRow row,row1=null,row2=null,row3=null,row4=null,row5=null; + HSSFRow row=null; HSSFCell cell; Iterator iter = getTopicsSortedByAuthor(topicList).values().iterator(); Iterator dtoIter; @@ -195,53 +194,53 @@ MessageDTO dto = (MessageDTO) dtoIter.next(); if(first){ first = false; - row1 = sheet.createRow(0); - cell = row1.createCell((short) idx); + row = sheet.createRow(0); + cell = row.createCell((short) idx); cell.setCellValue("Subject"); sheet.setColumnWidth((short)idx,(short)8000); ++idx; - cell = row1.createCell((short) idx); + cell = row.createCell((short) idx); cell.setCellValue("Author"); sheet.setColumnWidth((short)idx,(short)8000); ++idx; - cell = row1.createCell((short) idx); + cell = row.createCell((short) idx); cell.setCellValue("Date"); sheet.setColumnWidth((short)idx,(short)8000); ++idx; - cell = row1.createCell((short) idx); + cell = row.createCell((short) idx); cell.setCellValue("Marks"); sheet.setColumnWidth((short)idx,(short)8000); ++idx; - cell = row1.createCell((short) idx); + cell = row.createCell((short) idx); cell.setCellValue("Comments"); sheet.setColumnWidth((short)idx,(short)8000); ++idx; } ++fileCount; idx = 0; - row1 = sheet.createRow(fileCount); - cell = row1.createCell((short) idx++); + row = sheet.createRow(fileCount); + cell = row.createCell((short) idx++); cell.setCellValue(dto.getMessage().getSubject()); - cell = row1.createCell((short) idx++); + cell = row.createCell((short) idx++); cell.setCellValue(dto.getAuthor()); - cell = row1.createCell((short) idx++); + cell = row.createCell((short) idx++); cell.setCellValue(DateFormat.getInstance().format(dto.getMessage().getCreated())); - cell = row1.createCell((short) idx++); + cell = row.createCell((short) idx++); if(dto.getMessage() != null && dto.getMessage().getReport() != null && dto.getMessage().getReport().getMark() != null) cell.setCellValue(dto.getMessage().getReport().getMark().doubleValue()); else cell.setCellValue(""); - cell = row1.createCell((short) idx++); + cell = row.createCell((short) idx++); if(dto.getMessage() != null && dto.getMessage().getReport() != null) cell.setCellValue(dto.getMessage().getReport().getComment()); else @@ -531,7 +530,7 @@ Iterator iter = topicList.iterator(); while(iter.hasNext()){ MessageDTO dto = (MessageDTO) iter.next(); - ForumReport report = dto.getMessage().getReport(); + dto.getMessage().getReport(); List list = (List) topicsByUser.get(dto.getMessage().getCreatedBy()); if(list == null){ list = new ArrayList();