Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.68 -r1.69 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 30 Aug 2006 06:37:38 -0000 1.68 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 6 Sep 2006 05:47:06 -0000 1.69 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java,v diff -u -r1.3 -r1.4 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java 6 Apr 2006 06:40:39 -0000 1.3 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java 6 Sep 2006 05:47:06 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java,v diff -u -r1.39 -r1.40 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 30 Aug 2006 06:37:38 -0000 1.39 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 6 Sep 2006 05:47:06 -0000 1.40 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java,v diff -u -r1.4 -r1.5 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java 6 Apr 2006 06:40:39 -0000 1.4 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java 6 Sep 2006 05:47:06 -0000 1.5 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java,v diff -u -r1.55 -r1.56 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 5 Sep 2006 00:06:17 -0000 1.55 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 6 Sep 2006 05:47:06 -0000 1.56 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/WEB-INF/Attic/web.xml,v diff -u -r1.25 -r1.26 --- lams_tool_forum/web/WEB-INF/web.xml 3 Aug 2006 01:19:33 -0000 1.25 +++ lams_tool_forum/web/WEB-INF/web.xml 6 Sep 2006 05:47:06 -0000 1.26 @@ -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