Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r72a3c5dbc0b2b0f1b3304d50cdd8798d6616aef8 -rd1d67f1b78f727b780453c5feb3a304af7e51e35 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 72a3c5dbc0b2b0f1b3304d50cdd8798d6616aef8) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision d1d67f1b78f727b780453c5feb3a304af7e51e35) @@ -394,7 +394,16 @@ @Override public List getTopicThread(Long rootTopicId) { - return getTopicThread(rootTopicId, null, null); + List unsortedThread = messageSeqDao.getCompleteTopic(rootTopicId); + Iterator iter = unsortedThread.iterator(); + MessageSeq msgSeq; + SortedMap map = new TreeMap(new TopicComparator()); + while (iter.hasNext()) { + msgSeq = (MessageSeq) iter.next(); + map.put(msgSeq, msgSeq.getMessage()); + } + return getSortedMessageDTO(map); + } @Override Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -r72a3c5dbc0b2b0f1b3304d50cdd8798d6616aef8 -rd1d67f1b78f727b780453c5feb3a304af7e51e35 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 72a3c5dbc0b2b0f1b3304d50cdd8798d6616aef8) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision d1d67f1b78f727b780453c5feb3a304af7e51e35) @@ -495,17 +495,12 @@ Long pageSize = WebUtil.readLongParam(request, ForumConstants.PAGE_SIZE, true); // get root topic list - log.debug("viewTopic: Getting topic messages "+System.currentTimeMillis()); List msgDtoList = forumService.getTopicThread(rootTopicId, lastMsgSeqId, pageSize); - log.debug("viewTopic: updateMesssageFlag "+System.currentTimeMillis()); updateMesssageFlag(msgDtoList); - log.debug("viewTopic: doneMesssageFlag "+System.currentTimeMillis()); request.setAttribute(ForumConstants.AUTHORING_TOPIC_THREAD, msgDtoList); - // check if we can still make posts in this topic - TODO fix this code. It currently depends on the first message being the topic -// int numOfPosts = forumService.getNumOfPostsByTopic(forumUser.getUserId(), msgDtoList.get(0).getMessage() -// .getUid()); - int numOfPosts = 1; + // check if we can still make posts in this topic + int numOfPosts = forumService.getNumOfPostsByTopic(forumUser.getUserId(), rootTopicId); boolean noMorePosts = forum.getMaximumReply() != 0 && numOfPosts >= forum.getMaximumReply() && !forum.isAllowNewTopic() ? Boolean.TRUE : Boolean.FALSE; request.setAttribute(ForumConstants.ATTR_NO_MORE_POSTS, noMorePosts);