Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== diff -u -r77e263b43c7aed360e8dcc46af273db55123bc83 -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 77e263b43c7aed360e8dcc46af273db55123bc83) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -24,6 +24,7 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.service; +import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; @@ -35,7 +36,9 @@ import java.util.Map; import java.util.Set; import java.util.SortedMap; +import java.util.SortedSet; import java.util.TreeMap; +import java.util.TreeSet; import java.util.Vector; import java.util.Map.Entry; @@ -359,7 +362,10 @@ Iterator iter = topicsBySession.iterator(); while(iter.hasNext()){ msg = (Message) iter.next(); - map.put(msg.getLastReplyDate(),msg); + if(OLD_FORUM_STYLE) + map.put(msg.getLastReplyDate(),msg); + else + map.put(msg.getCreated(),msg); } return MessageDTO.getMessageDTO(new ArrayList(map.values())); @@ -468,16 +474,13 @@ //only session does not have content topcis if(!messageDao.hasAuthoredTopics(sessionID)){ Forum forum = (Forum) forumDao.getByContentId(contentID); - Set contentTopcis = forum.getMessages(); + Set contentTopcis = forum.getMessages(); //only forum has content topics, clone happens if(contentTopcis != null && contentTopcis.size() > 0){ - Iterator iter = contentTopcis.iterator(); - ForumToolSession session = forumToolSessionDao.getBySessionId(sessionID); - while(iter.hasNext()){ - Message msg = (Message) iter.next(); - msg.setToolSession(session); - messageDao.update(msg); + for(Message msg : contentTopcis){ + Message newMsg = Message.newInstance(msg, forumToolContentHandler); + createRootTopic(contentID, sessionID, newMsg); } } } @@ -614,8 +617,6 @@ if(!msg.getIsAuthored()) continue; msg.setReplyNumber(0); - msg.setCreated(new Date()); - msg.setUpdated(new Date()); msg.setLastReplyDate(new Date()); msg.setHideFlag(false); msg.setForum(toContent); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java (.../DateComparator.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java (.../DateComparator.java) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -27,19 +27,14 @@ import java.util.Comparator; import java.util.Date; +import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE; +public class DateComparator implements Comparator { -import org.apache.log4j.Logger; - -public class DateComparator implements Comparator { - - private static final Logger log = Logger.getLogger(DateComparator.class); - - public int compare(Object arg0, Object arg1) { - if(!(arg0 instanceof Date) || !(arg1 instanceof Date)){ - log.error("Topic is not Date instance."); - return 0; - } - return ((Date)arg0).before(((Date)arg1))?1:-1; + public int compare(Date arg0, Date arg1) { + if(OLD_FORUM_STYLE) + return (arg0.getTime() - arg1.getTime()) > 0 ?1:-1; + else + return (arg0.getTime() - arg1.getTime()) > 0 ?-1:1; } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java =================================================================== diff -u -r77e263b43c7aed360e8dcc46af273db55123bc83 -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision 77e263b43c7aed360e8dcc46af273db55123bc83) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java (.../ForumConstants.java) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -30,6 +30,13 @@ * Time: 10:33:00 */ public interface ForumConstants { + + //See LDEV652 + // For old style (Fiona's description): The oldest topic is at the top, does not depends the reply date etc. + // For new style (Ernie's early desc): Most current popular forum used style: latest topics + // should be at the top, reply date will descide the order etc. + public static final boolean OLD_FORUM_STYLE = true; + public static final int COMPLETED = 1; public static final int SESSION_STATUS_FINISHED = 1; Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java =================================================================== diff -u -rd9c7ddef141d19423b6ab2914d153c2cb748f187 -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java (.../TopicComparator.java) (revision d9c7ddef141d19423b6ab2914d153c2cb748f187) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java (.../TopicComparator.java) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -30,6 +30,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.persistence.MessageSeq; +import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE; /** * This class implementaion java.util.Comparator interface. It can sort meesage according to @@ -38,16 +39,10 @@ * * @version $Revision$ */ -public class TopicComparator implements Comparator { +public class TopicComparator implements Comparator { private static final Logger log = Logger.getLogger(TopicComparator.class); - public int compare(Object obj0, Object obj1) { - if(!(obj0 instanceof MessageSeq) || !(obj1 instanceof MessageSeq)){ - log.error("Topic is not MessageSeq instance."); - return 0; - } - MessageSeq msgSeq1 = (MessageSeq) obj0; - MessageSeq msgSeq2 = (MessageSeq) obj1; + public int compare(MessageSeq msgSeq1, MessageSeq msgSeq2) { Message msg1 = msgSeq1.getMessage(); Message msg2 = msgSeq2.getMessage(); @@ -84,20 +79,29 @@ //this comparation will handle different branch node if(parent1 != parent2){ //compare last modified date, the latest is at beginning - return parent1.getUpdated().before(parent2.getUpdated())?1:-1; + if(OLD_FORUM_STYLE) + return parent1.getUpdated().before(parent2.getUpdated())?-1:1; + else + return parent1.getUpdated().before(parent2.getUpdated())?1:-1; } //this comparation will handle same branch node //the direct parent level, their parent(or themselves) are still equal if(compareLevel==lessLevel){ if(msgSeq1.getMessageLevel() != msgSeq2.getMessageLevel()) return msgSeq1.getMessageLevel() -msgSeq2.getMessageLevel(); - else - return msg1.getUpdated().before(msg2.getUpdated())?1:-1; + else{ + if(OLD_FORUM_STYLE) + return msg1.getUpdated().before(msg2.getUpdated())?-1:1; + else + return msg1.getUpdated().before(msg2.getUpdated())?1:-1; + } } } - - return msg1.getUpdated().before(msg2.getUpdated())?1:-1; + if(OLD_FORUM_STYLE) + return msg1.getUpdated().before(msg2.getUpdated())?-1:1; + else + return msg1.getUpdated().before(msg2.getUpdated())?1:-1; } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java =================================================================== diff -u -r769b6b71f99525bc435678e762adc167a2702705 -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 769b6b71f99525bc435678e762adc167a2702705) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -73,6 +73,7 @@ import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; +import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE; /** * @author Steve.Ni @@ -591,7 +592,10 @@ message.setAttachments(attSet); //save the new message into HttpSession - topics.add(0,MessageDTO.getMessageDTO(message)); + if(OLD_FORUM_STYLE) + topics.add(MessageDTO.getMessageDTO(message)); + else + topics.add(0,MessageDTO.getMessageDTO(message)); return mapping.findForward("success"); Index: lams_tool_forum/web/WEB-INF/web.xml =================================================================== diff -u -r3306bb9a4b9c92a8539e317d5b67b3fc5bf90e8c -r77c1dcf81bdd4127b6a1373977cd481899141d31 --- lams_tool_forum/web/WEB-INF/web.xml (.../web.xml) (revision 3306bb9a4b9c92a8539e317d5b67b3fc5bf90e8c) +++ lams_tool_forum/web/WEB-INF/web.xml (.../web.xml) (revision 77c1dcf81bdd4127b6a1373977cd481899141d31) @@ -237,7 +237,7 @@ LEARNER TEACHER - STAFF + MONITOR AUTHOR ADMIN SYSADMIN @@ -259,7 +259,7 @@ /monitoring.do - STAFF + MONITOR TEACHER @@ -269,7 +269,7 @@ /definelater.do - STAFF + MONITOR TEACHER @@ -300,7 +300,7 @@ AUTHOR - STAFF + MONITOR TEACHER ADMIN SYSADMIN @@ -326,7 +326,7 @@ Can running and monitoring a learning session - STAFF + MONITOR