Index: lams_tool_forum/conf/xdoclet/struts-actions.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/xdoclet/struts-actions.xml,v diff -u -r1.52 -r1.52.2.1 --- lams_tool_forum/conf/xdoclet/struts-actions.xml 17 Jan 2014 21:42:45 -0000 1.52 +++ lams_tool_forum/conf/xdoclet/struts-actions.xml 19 Jan 2015 21:34:30 -0000 1.52.2.1 @@ -294,6 +294,11 @@ type="org.lamsfoundation.lams.tool.forum.web.actions.MonitoringAction" scope="request" parameter="releaseMark" > + + - - - - - - - getMessageDTO(List msgList){ + public static List getMessageDTO(List msgList){ List retSet = new ArrayList(); if(msgList == null || msgList.isEmpty()) return retSet; - Iterator iter = msgList.iterator(); + Iterator iter = msgList.iterator(); while(iter.hasNext()){ - Message msg = (Message) iter.next(); + Message msg = iter.next(); MessageDTO msgDto = new MessageDTO(); msgDto.setMessage(msg); if(msg.getCreatedBy() != null) Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java,v diff -u -r1.3 -r1.3.14.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java 17 Sep 2006 06:22:31 -0000 1.3 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java 19 Jan 2015 21:34:30 -0000 1.3.14.1 @@ -21,35 +21,49 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.dto; +import java.util.List; +import java.util.Map; + +import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; + /** * * @author Anthony Sukkar - * + * */ public class SessionDTO { - private Long sessionID; - - private String sessionName; + private Long sessionID; + private String sessionName; + //used for storing data for MonitoringAction.getUsers() serving tablesorter paging + private Map> topicsByUser; - public Long getSessionID() { - return sessionID; - } + public Long getSessionID() { + return sessionID; + } - public void setSessionID(Long sessionID) { - this.sessionID = sessionID; - } + public void setSessionID(Long sessionID) { + this.sessionID = sessionID; + } - public String getSessionName() { - return sessionName; - } + public String getSessionName() { + return sessionName; + } - public void setSessionName(String sessionName) { - this.sessionName = sessionName; - } - + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + public Map> getTopicsByUser() { + return topicsByUser; + } + + public void setTopicsByUser(Map> topicsByUser) { + this.topicsByUser = topicsByUser; + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java,v diff -u -r1.2 -r1.2.12.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java 7 May 2008 06:33:45 -0000 1.2 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java 19 Jan 2015 21:34:30 -0000 1.2.12.1 @@ -4,83 +4,95 @@ public class UserDTO { - private Long userUid; - private String fullName; - private String loginName; - private int noOfPosts; - private boolean hasRefection; - private String reflectInstrctions; - private boolean finishReflection; - private String reflect; - private boolean anyPostsMarked; - - public UserDTO(){ - } - - public UserDTO(ForumUser user) { - this.setLoginName(user.getLoginName()); - this.setFullName(user.getFirstName()+" "+user.getLastName()); - this.setUserUid(user.getUid()); - - } - public String getFullName() { - return fullName; - } - public void setFullName(String fullName) { - this.fullName = fullName; - } - public boolean isHasRefection() { - return hasRefection; - } - public void setHasRefection(boolean hasRefection) { - this.hasRefection = hasRefection; - } - public String getLoginName() { - return loginName; - } - public void setLoginName(String loginName) { - this.loginName = loginName; - } - public int getNoOfPosts() { - return noOfPosts; - } - public void setNoOfPosts(int noOfPosts) { - this.noOfPosts = noOfPosts; - } - public Long getUserUid() { - return userUid; - } - public void setUserUid(Long userUid) { - this.userUid = userUid; - } - public String getReflect() { - return reflect; - } - public void setReflect(String reflection) { - this.reflect = reflection; - } + private Long userUid; + private String fullName; + private String loginName; + private int noOfPosts; + private boolean hasRefection; + private String reflectInstrctions; + private boolean finishReflection; + private String reflect; + private boolean anyPostsMarked; - public String getReflectInstrctions() { - return reflectInstrctions; - } + public UserDTO() { + } - public void setReflectInstrctions(String reflectInstrctions) { - this.reflectInstrctions = reflectInstrctions; - } + public UserDTO(ForumUser user) { + this.setLoginName(user.getLoginName()); + this.setFullName(user.getFirstName() + " " + user.getLastName()); + this.setUserUid(user.getUid()); - public boolean isFinishReflection() { - return finishReflection; - } + } - public void setFinishReflection(boolean finishReflection) { - this.finishReflection = finishReflection; - } + public String getFullName() { + return fullName; + } - public boolean isAnyPostsMarked() { - return anyPostsMarked; - } + public void setFullName(String fullName) { + this.fullName = fullName; + } - public void setAnyPostsMarked(boolean anyPostsMarked) { - this.anyPostsMarked = anyPostsMarked; - } + public boolean isHasRefection() { + return hasRefection; + } + + public void setHasRefection(boolean hasRefection) { + this.hasRefection = hasRefection; + } + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + public int getNoOfPosts() { + return noOfPosts; + } + + public void setNoOfPosts(int noOfPosts) { + this.noOfPosts = noOfPosts; + } + + public Long getUserUid() { + return userUid; + } + + public void setUserUid(Long userUid) { + this.userUid = userUid; + } + + public String getReflect() { + return reflect; + } + + public void setReflect(String reflection) { + this.reflect = reflection; + } + + public String getReflectInstrctions() { + return reflectInstrctions; + } + + public void setReflectInstrctions(String reflectInstrctions) { + this.reflectInstrctions = reflectInstrctions; + } + + public boolean isFinishReflection() { + return finishReflection; + } + + public void setFinishReflection(boolean finishReflection) { + this.finishReflection = finishReflection; + } + + public boolean isAnyPostsMarked() { + return anyPostsMarked; + } + + public void setAnyPostsMarked(boolean anyPostsMarked) { + this.anyPostsMarked = anyPostsMarked; + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java,v diff -u -r1.12 -r1.12.14.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java 24 Oct 2006 00:02:58 -0000 1.12 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java 19 Jan 2015 21:34:30 -0000 1.12.14.1 @@ -21,7 +21,7 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.persistence; @@ -31,6 +31,7 @@ import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.log4j.Logger; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + /** * * @hibernate.class table="tl_lafrum11_forum_user" @@ -39,158 +40,161 @@ * @version $Revision$ * @serialData -7043502180037866257L */ -public class ForumUser implements Serializable,Cloneable{ +public class ForumUser implements Serializable, Cloneable { - private static final long serialVersionUID = -7043502180037866257L; - private static Logger log = Logger.getLogger(ForumUser.class); - + private static final long serialVersionUID = -7043502180037866257L; + private static Logger log = Logger.getLogger(ForumUser.class); + private Long uid; - private Long userId; - private String firstName; - private String lastName; - private String loginName; - private boolean sessionFinished; - - private ForumToolSession session; - - public ForumUser(){ - } - - public ForumUser(UserDTO user, ForumToolSession session) { - this.userId = new Long(user.getUserID().intValue()); - this.firstName = user.getFirstName(); - this.lastName = user.getLastName(); - this.loginName = user.getLogin(); - this.session = session; - this.sessionFinished = false; - } - + private Long userId; + private String firstName; + private String lastName; + private String loginName; + private boolean sessionFinished; -// ********************************************************** - // Function method for ForumUser -// ********************************************************** - /* (non-Javadoc) - * @see java.lang.Object#clone() - */ - public Object clone() { - - Object obj = null; - try { - obj = super.clone(); - } catch (CloneNotSupportedException e) { - log.error("When clone " + ForumUser.class + " failed"); - } - return obj; - } + private ForumToolSession session; + public ForumUser() { + } -// ********************************************************** - // Get/Set methods -// ********************************************************** - /** - * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" - * @return Returns the uid. - */ - public Long getUid() { - return uid; - } - /** - * @param uid The uid to set. - */ - public void setUid(Long userID) { - this.uid = userID; - } + public ForumUser(UserDTO user, ForumToolSession session) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.session = session; + this.sessionFinished = false; + } - /** - * @hibernate.property column="user_id" length="20" - * @return Returns the userId. - */ - public Long getUserId() { - return userId; - } - /** - * @param userId - * The userId to set. - */ - public void setUserId(Long userID) { - this.userId = userID; - } + // ********************************************************** + // Function method for ForumUser + // ********************************************************** + /* + * (non-Javadoc) + * + * @see java.lang.Object#clone() + */ + public Object clone() { - /** - * @hibernate.property length="255" column="last_name" - * @return - */ - public String getLastName() { - return lastName; + Object obj = null; + try { + obj = super.clone(); + } catch (CloneNotSupportedException e) { + log.error("When clone " + ForumUser.class + " failed"); } - public void setLastName(String lastName) { - this.lastName = lastName; - } - /** - * @hibernate.property length="255" column="first_name" - * @return - */ - public String getFirstName() { - return firstName; - } - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - /** - * @hibernate.many-to-one column="session_id" - * cascade="none" - * @return - */ - public ForumToolSession getSession() { - return session; - } + return obj; + } - public void setSession(ForumToolSession session) { - this.session = session; - } + // ********************************************************** + // Get/Set methods + // ********************************************************** + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * @return Returns the uid. + */ + public Long getUid() { + return uid; + } - /** - * @hibernate.property column="login_name" - * @return - */ - public String getLoginName() { - return loginName; - } + /** + * @param uid + * The uid to set. + */ + public void setUid(Long userID) { + this.uid = userID; + } - public void setLoginName(String loginName) { - this.loginName = loginName; - } - /** - * @hibernate.property column="session_finished" - * @return - */ - public boolean isSessionFinished() { - return sessionFinished; - } + /** + * @hibernate.property column="user_id" length="20" + * @return Returns the userId. + */ + public Long getUserId() { + return userId; + } - public void setSessionFinished(boolean sessionFinished) { - this.sessionFinished = sessionFinished; - } - - public boolean equals(Object obj) { - if (this == obj) - return true; - if (!(obj instanceof ForumUser)) - return false; + /** + * @param userId + * The userId to set. + */ + public void setUserId(Long userID) { + this.userId = userID; + } - final ForumUser user = (ForumUser) obj; - - return new EqualsBuilder().append(this.uid, user.uid).append(this.firstName, user.firstName) - .append(this.lastName,user.lastName).append(this.loginName, user.loginName).isEquals(); - - } + /** + * @hibernate.property length="255" column="last_name" + * @return + */ + public String getLastName() { + return lastName; + } - public int hashCode() { - return new HashCodeBuilder().append(uid).append(firstName) - .append(lastName).append(loginName) - .toHashCode(); - } + public void setLastName(String lastName) { + this.lastName = lastName; + } + /** + * @hibernate.property length="255" column="first_name" + * @return + */ + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @hibernate.many-to-one column="session_id" cascade="none" + * @return + */ + public ForumToolSession getSession() { + return session; + } + + public void setSession(ForumToolSession session) { + this.session = session; + } + + /** + * @hibernate.property column="login_name" + * @return + */ + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + /** + * @hibernate.property column="session_finished" + * @return + */ + public boolean isSessionFinished() { + return sessionFinished; + } + + public void setSessionFinished(boolean sessionFinished) { + this.sessionFinished = sessionFinished; + } + + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!(obj instanceof ForumUser)) + return false; + + final ForumUser user = (ForumUser) obj; + + return new EqualsBuilder().append(this.uid, user.uid).append(this.firstName, user.firstName) + .append(this.lastName, user.lastName).append(this.loginName, user.loginName).isEquals(); + + } + + public int hashCode() { + return new HashCodeBuilder().append(uid).append(firstName).append(lastName).append(loginName).toHashCode(); + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumUserDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/IForumUserDAO.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumUserDAO.java 1 Dec 2014 22:06:08 -0000 1.1.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumUserDAO.java 19 Jan 2015 21:34:30 -0000 1.1.2.2 @@ -6,16 +6,20 @@ public interface IForumUserDAO extends IBaseDAO { - List getBySessionId(Long sessionID); + List getBySessionId(Long sessionID); - void save(ForumUser forumUser); + void save(ForumUser forumUser); - ForumUser getByUserIdAndSessionId(Long userId, Long sessionId); + ForumUser getByUserIdAndSessionId(Long userId, Long sessionId); - ForumUser getByUserId(Long userId); + ForumUser getByUserId(Long userId); - ForumUser getByUid(Long userUid); + ForumUser getByUid(Long userUid); - void delete(ForumUser user); - + void delete(ForumUser user); + + int getCountUsersBySession(Long sessionId); + + List getUsersForTablesorter(Long sessionId, int page, int size, int sorting); + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/IMessageDAO.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java 1 Dec 2014 22:06:07 -0000 1.1.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java 19 Jan 2015 21:34:30 -0000 1.1.2.2 @@ -6,62 +6,62 @@ public interface IMessageDAO extends IBaseDAO { - void saveOrUpdate(Message message); + void saveOrUpdate(Message message); - void update(Message message); + void update(Message message); - Message getById(Long messageId); + Message getById(Long messageId); - /** - * Get all root (first level) topics in a special Session. - * - * @param sessionId - * @return - */ - List getRootTopics(Long sessionId); + /** + * Get all root (first level) topics in a special Session. + * + * @param sessionId + * @return + */ + List getRootTopics(Long sessionId); - /** - * Get all message posted by author role in a special forum. - * - * @param forumUid - * @return - */ - List getTopicsFromAuthor(Long forumUid); + /** + * Get all message posted by author role in a special forum. + * + * @param forumUid + * @return + */ + List getTopicsFromAuthor(Long forumUid); - void delete(Long uid); + void delete(Long uid); - /** - * Get all children message from the given parent topic ID. - * - * @param parentId - * @return - */ - List getChildrenTopics(Long parentId); + /** + * Get all children message from the given parent topic ID. + * + * @param parentId + * @return + */ + List getChildrenTopics(Long parentId); - /** - * Get all messages according to special user and session. - * - * @param userUid - * @param sessionId - * @return - */ - List getByUserAndSession(Long userUid, Long sessionId); + /** + * Get all messages according to special user and session. + * + * @param userUid + * @param sessionId + * @return + */ + List getByUserAndSession(Long userUid, Long sessionId); - /** - * Get all messages according to special session. - * - * @param sessionId - * @return - */ - List getBySession(Long sessionId); + /** + * Get all messages according to special session. + * + * @param sessionId + * @return + */ + List getBySession(Long sessionId); - /** - * Return how many post from this user and session. DOES NOT include posts from author. - * - * @param userID - * @param sessionId - * @return - */ - int getTopicsNum(Long userID, Long sessionId); - + /** + * Return how many post from this user and session. DOES NOT include posts from author. + * + * @param userID + * @param sessionId + * @return + */ + int getTopicsNum(Long userID, Long sessionId); + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumToolSessionDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/Attic/ForumToolSessionDao.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumToolSessionDao.java 1 Dec 2014 22:06:07 -0000 1.1.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumToolSessionDao.java 19 Jan 2015 21:34:30 -0000 1.1.2.2 @@ -21,7 +21,7 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.persistence.hibernate; @@ -36,53 +36,38 @@ @Repository public class ForumToolSessionDao extends LAMSBaseDAO implements IForumToolSessionDAO { - private static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + ForumToolSession.class.getName() + " where session_id=?"; - private static final String SQL_QUERY_FIND_BY_CONTENT_ID = "select s from " + Forum.class.getName()+ " as f, " + - ForumToolSession.class.getName() + " as s" + - " where f.contentId=? and s.forum.uid=f.uid"; - - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumToolSessionDAO#getBySessionId(java.lang.Long) - */ - @Override - public ForumToolSession getBySessionId(Long sessionId) { - List list = this.doFind(SQL_QUERY_FIND_BY_SESSION_ID,sessionId); - if(list == null || list.isEmpty()) - return null; - return (ForumToolSession) list.get(0); - } - - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumToolSessionDAO#saveOrUpdate(org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession) - */ - @Override - public void saveOrUpdate(ForumToolSession session){ - this.getSession().saveOrUpdate(session); - } + private static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + ForumToolSession.class.getName() + + " where session_id=?"; + private static final String SQL_QUERY_FIND_BY_CONTENT_ID = "select s from " + Forum.class.getName() + " as f, " + + ForumToolSession.class.getName() + " as s" + " where f.contentId=? and s.forum.uid=f.uid"; - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumToolSessionDAO#getByContentId(java.lang.Long) - */ - @Override - public List getByContentId(Long contentID) { - List list = this.doFind(SQL_QUERY_FIND_BY_CONTENT_ID,contentID); - return list; - } + @Override + public ForumToolSession getBySessionId(Long sessionId) { + List list = this.doFind(SQL_QUERY_FIND_BY_SESSION_ID, sessionId); + if (list == null || list.isEmpty()) + return null; + return (ForumToolSession) list.get(0); + } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumToolSessionDAO#delete(java.lang.Long) - */ - @Override - public void delete(Long sessionId) { - ForumToolSession session = getBySessionId(sessionId); - this.getSession().delete(session); - } + @Override + public void saveOrUpdate(ForumToolSession session) { + this.getSession().saveOrUpdate(session); + } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumToolSessionDAO#delete(org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession) - */ - @Override - public void delete(ForumToolSession session){ - this.getSession().delete(session); - } + @Override + public List getByContentId(Long contentID) { + List list = this.doFind(SQL_QUERY_FIND_BY_CONTENT_ID, contentID); + return list; + } + + @Override + public void delete(Long sessionId) { + ForumToolSession session = getBySessionId(sessionId); + this.getSession().delete(session); + } + + @Override + public void delete(ForumToolSession session) { + this.getSession().delete(session); + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumUserDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/Attic/ForumUserDao.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumUserDao.java 1 Dec 2014 22:06:07 -0000 1.1.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumUserDao.java 19 Jan 2015 21:34:30 -0000 1.1.2.2 @@ -21,7 +21,7 @@ * **************************************************************** */ -/* $$Id$$ */ +/* $$Id$$ */ package org.lamsfoundation.lams.tool.forum.persistence.hibernate; @@ -30,79 +30,130 @@ import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO; import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.IForumUserDAO; +import org.lamsfoundation.lams.tool.forum.persistence.Message; +import org.lamsfoundation.lams.tool.forum.util.ForumConstants; import org.springframework.stereotype.Repository; @Repository public class ForumUserDao extends LAMSBaseDAO implements IForumUserDAO { - private static final String SQL_QUERY_FIND_BY_USER_ID_SESSION_ID = "from " + ForumUser.class.getName() + " as f" - + " where user_id=? and f.session.sessionId=?"; - - private static final String SQL_QUERY_FIND_BY_USER_ID = "from " + ForumUser.class.getName() + " as f" - + " where user_id=? and session_id is null"; - - private static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + - ForumUser.class.getName() + " as f " + - " where f.session.sessionId=?"; + private static final String SQL_QUERY_FIND_BY_USER_ID_SESSION_ID = "from " + ForumUser.class.getName() + " as f" + + " where user_id=? and f.session.sessionId=?"; + private static final String SQL_QUERY_FIND_BY_USER_ID = "from " + ForumUser.class.getName() + " as f" + + " where user_id=? and session_id is null"; - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#getBySessionId(java.lang.Long) - */ - @Override - public List getBySessionId(Long sessionID) { - return this.doFind(SQL_QUERY_FIND_BY_SESSION_ID, sessionID); + private static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + ForumUser.class.getName() + " as f " + + " where f.session.sessionId=?"; + + private static final String SQL_QUERY_FIND_BY_SESSION_AND_QUESTION_LIMIT = "from user in class ForumUser " + + "where user.session.sessionId=:sessionId order by "; + + private static final String SQL_QUERY_FIND_BY_SESSION_LIMIT_ORDER_BY_NUM_POSTS = "SELECT user FROM " + + Message.class.getName() + " as message " + " RIGHT JOIN message.createdBy as user " + + " WHERE user.session.sessionId=:sessionId GROUP BY user.userId ORDER BY "; + + private static final String GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION = "SELECT COUNT(*) from " + + ForumUser.class.getName() + " as user where user.session.sessionId=?"; + + + @Override + public List getBySessionId(Long sessionID) { + return this.doFind(SQL_QUERY_FIND_BY_SESSION_ID, sessionID); + } + + @Override + public void save(ForumUser forumUser) { + this.getSession().save(forumUser); + } + + @Override + public ForumUser getByUserIdAndSessionId(Long userId, Long sessionId) { + List list = this.doFind(SQL_QUERY_FIND_BY_USER_ID_SESSION_ID, new Object[] { userId, sessionId }); + + if (list == null || list.isEmpty()) + return null; + + return (ForumUser) list.get(0); + } + + @Override + public ForumUser getByUserId(Long userId) { + List list = this.doFind(SQL_QUERY_FIND_BY_USER_ID, userId); + + if (list == null || list.isEmpty()) + return null; + + return (ForumUser) list.get(0); + } + + @Override + public ForumUser getByUid(Long userUid) { + return (ForumUser) this.getSession().get(ForumUser.class, userUid); + } + + @Override + public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting) { + String sortingOrder = ""; + switch (sorting) { + case ForumConstants.SORT_BY_NO: + sortingOrder = "user.lastName"; + break; + case ForumConstants.SORT_BY_USER_NAME_ASC: + sortingOrder = "user.lastName ASC, user.firstName ASC"; + break; + case ForumConstants.SORT_BY_USER_NAME_DESC: + sortingOrder = "user.lastName DESC, user.firstName DESC"; + break; + case ForumConstants.SORT_BY_LAST_POSTING_ASC: + sortingOrder = " MAX(message.created) ASC"; + break; + case ForumConstants.SORT_BY_LAST_POSTING_DESC: + sortingOrder = " MAX(message.created) DESC"; + break; + case ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC: + sortingOrder = " COUNT(message) ASC"; + break; + case ForumConstants.SORT_BY_NUMBER_OF_POSTS_DESC: + sortingOrder = " COUNT(message) DESC"; + break; } - - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#save(org.lamsfoundation.lams.tool.forum.persistence.ForumUser) - */ - @Override - public void save(ForumUser forumUser){ - this.getSession().save(forumUser); - } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#getByUserIdAndSessionId(java.lang.Long, java.lang.Long) - */ - @Override - public ForumUser getByUserIdAndSessionId(Long userId, Long sessionId) { - List list = this.doFind(SQL_QUERY_FIND_BY_USER_ID_SESSION_ID - , new Object[]{userId,sessionId}); - - if(list == null || list.isEmpty()) - return null; - - return (ForumUser) list.get(0); - } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#getByUserId(java.lang.Long) - */ - @Override - public ForumUser getByUserId(Long userId) { - List list = this.doFind(SQL_QUERY_FIND_BY_USER_ID, userId); - - if(list == null || list.isEmpty()) - return null; - - return (ForumUser) list.get(0); + if (sorting == ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC + || sorting == ForumConstants.SORT_BY_NUMBER_OF_POSTS_DESC) { + + List list = getSession().createQuery(SQL_QUERY_FIND_BY_SESSION_LIMIT_ORDER_BY_NUM_POSTS + sortingOrder) + .setLong("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size).list(); + return list; + + } else if (sorting == ForumConstants.SORT_BY_LAST_POSTING_ASC + || sorting == ForumConstants.SORT_BY_LAST_POSTING_DESC) { + + List list = getSession().createQuery(SQL_QUERY_FIND_BY_SESSION_LIMIT_ORDER_BY_NUM_POSTS + sortingOrder) + .setLong("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size).list(); + + return list; + + } else { + + return getSession().createQuery(SQL_QUERY_FIND_BY_SESSION_AND_QUESTION_LIMIT + sortingOrder) + .setLong("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size).list(); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#getByUid(java.lang.Long) - */ - @Override - public ForumUser getByUid(Long userUid) { - - return (ForumUser) this.getSession().get(ForumUser.class,userUid); - } + } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IForumUserDAO#delete(org.lamsfoundation.lams.tool.forum.persistence.ForumUser) - */ - @Override - public void delete(ForumUser user) { - this.getSession().delete(user); + @Override + public int getCountUsersBySession(final Long sessionId) { + List list = this.doFind(GET_COUNT_RESPONSES_FOR_SESSION_AND_QUESTION, + new Object[] { sessionId }); + if (list == null || list.size() == 0) { + return 0; } + return ((Number) list.get(0)).intValue(); + } + @Override + public void delete(ForumUser user) { + this.delete(user); + } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/Attic/MessageDao.java,v diff -u -r1.1.2.1 -r1.1.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java 1 Dec 2014 22:06:07 -0000 1.1.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java 19 Jan 2015 21:34:30 -0000 1.1.2.2 @@ -55,88 +55,57 @@ + Message.class.getName() + " m " + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false"; - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#saveOrUpdate(org.lamsfoundation.lams.tool.forum.persistence.Message) - */ @Override - public void saveOrUpdate(Message message) { + public void saveOrUpdate(Message message) { this.getSession().saveOrUpdate(message); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#update(org.lamsfoundation.lams.tool.forum.persistence.Message) - */ @Override - public void update(Message message) { + public void update(Message message) { this.getSession().saveOrUpdate(message); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getById(java.lang.Long) - */ @Override - public Message getById(Long messageId) { + public Message getById(Long messageId) { return (Message) getSession().get(Message.class, messageId); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getRootTopics(java.lang.Long) - */ @Override - public List getRootTopics(Long sessionId) { - return this.doFind(SQL_QUERY_FIND_ROOT_TOPICS, sessionId); + public List getRootTopics(Long sessionId) { + return (List) this.doFind(SQL_QUERY_FIND_ROOT_TOPICS, sessionId); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getTopicsFromAuthor(java.lang.Long) - */ @Override - public List getTopicsFromAuthor(Long forumUid) { - return this.doFind(SQL_QUERY_FIND_TOPICS_FROM_AUTHOR, forumUid); + public List getTopicsFromAuthor(Long forumUid) { + return (List) this.doFind(SQL_QUERY_FIND_TOPICS_FROM_AUTHOR, forumUid); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#delete(java.lang.Long) - */ @Override - public void delete(Long uid) { + public void delete(Long uid) { Message msg = getById(uid); if (msg != null) { this.getSession().delete(msg); } } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getChildrenTopics(java.lang.Long) - */ @Override - public List getChildrenTopics(Long parentId) { - return this.doFind(SQL_QUERY_FIND_CHILDREN, parentId); + public List getChildrenTopics(Long parentId) { + return (List) this.doFind(SQL_QUERY_FIND_CHILDREN, parentId); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getByUserAndSession(java.lang.Long, java.lang.Long) - */ @Override - public List getByUserAndSession(Long userUid, Long sessionId) { - return this.doFind(SQL_QUERY_BY_USER_SESSION, new Object[] { userUid, sessionId }); + public List getByUserAndSession(Long userUid, Long sessionId) { + return (List) this.doFind(SQL_QUERY_BY_USER_SESSION, new Object[] { userUid, sessionId }); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getBySession(java.lang.Long) - */ @Override - public List getBySession(Long sessionId) { - return this.doFind(SQL_QUERY_BY_SESSION, sessionId); + public List getBySession(Long sessionId) { + return (List) this.doFind(SQL_QUERY_BY_SESSION, sessionId); } - /* (non-Javadoc) - * @see org.lamsfoundation.lams.tool.forum.persistence.hibernate.IMessageDAO#getTopicsNum(java.lang.Long, java.lang.Long) - */ - @Override - public int getTopicsNum(Long userID, Long sessionId) { - List list = this.doFind(SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION, - new Object[] { userID, sessionId }); + @Override + public int getTopicsNum(Long userID, Long sessionId) { + List list = this.doFind(SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION, new Object[] { userID, sessionId }); if (list != null && list.size() > 0) return ((Number) list.get(0)).intValue(); else 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.126.2.4 -r1.126.2.5 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 30 Dec 2014 09:44:07 -0000 1.126.2.4 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 19 Jan 2015 21:34:30 -0000 1.126.2.5 @@ -432,6 +432,16 @@ public ForumUser getUserByUserAndSession(Long userId, Long sessionId) { return forumUserDao.getByUserIdAndSessionId(userId, sessionId); } + + @Override + public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting) { + return forumUserDao.getUsersForTablesorter(sessionId, page, size, sorting); + } + + @Override + public int getCountUsersBySession(Long sessionId) { + return forumUserDao.getCountUsersBySession(sessionId); + } @Override public void createUser(ForumUser forumUser) { @@ -470,18 +480,18 @@ } @Override - public List getSessionsByContentId(Long contentID) { + public List getSessionsByContentId(Long contentID) { return forumToolSessionDao.getByContentId(contentID); } @Override - public List getUsersBySessionId(Long sessionID) { + public List getUsersBySessionId(Long sessionID) { return forumUserDao.getBySessionId(sessionID); } @Override - public List getMessagesByUserUid(Long userId, Long sessionId) { - List list = messageDao.getByUserAndSession(userId, sessionId); + public List getMessagesByUserUid(Long userId, Long sessionId) { + List list = messageDao.getByUserAndSession(userId, sessionId); return MessageDTO.getMessageDTO(list); } @@ -494,8 +504,8 @@ @Override public void releaseMarksForSession(Long sessionID) { // udate release mark date for each message. - List list = messageDao.getBySession(sessionID); - Iterator iter = list.iterator(); + List list = messageDao.getBySession(sessionID); + Iterator iter = list.iterator(); ForumToolSession session = forumToolSessionDao.getBySessionId(sessionID); Forum forum = session.getForum(); boolean notifyLearnersOnMarkRelease = getEventNotificationService().eventExists(ForumConstants.TOOL_SIGNATURE, @@ -508,7 +518,7 @@ } while (iter.hasNext()) { - Message msg = (Message) iter.next(); + Message msg = iter.next(); ForumReport report = msg.getReport(); if (report != null) { report.setDateMarksReleased(new Date()); @@ -1095,6 +1105,7 @@ return content; } + @Override public List getAllTopicsFromSession(Long sessionID) { return MessageDTO.getMessageDTO(messageDao.getBySession(sessionID)); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java,v diff -u -r1.53 -r1.53.2.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 19 Feb 2014 21:27:43 -0000 1.53 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 19 Jan 2015 21:34:30 -0000 1.53.2.1 @@ -25,7 +25,6 @@ package org.lamsfoundation.lams.tool.forum.service; import java.util.Collection; -import java.util.Date; import java.util.List; import org.apache.struts.upload.FormFile; @@ -36,12 +35,10 @@ import org.lamsfoundation.lams.tool.forum.persistence.Attachment; import org.lamsfoundation.lams.tool.forum.persistence.Forum; import org.lamsfoundation.lams.tool.forum.persistence.ForumCondition; -import org.lamsfoundation.lams.tool.forum.persistence.ForumReport; import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession; import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException; -import org.lamsfoundation.lams.tool.forum.persistence.Timestamp; import org.lamsfoundation.lams.util.audit.IAuditService; /** @@ -86,6 +83,10 @@ * @throws PersistenceException */ Forum getForumByContentId(Long contentID) throws PersistenceException; + + List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting); + + int getCountUsersBySession(Long sessionId); // ************************************************************************************ // Topic Method @@ -221,7 +222,7 @@ * @param userId * @return */ - List getMessagesByUserUid(Long userId, Long sessionId); + List getMessagesByUserUid(Long userId, Long sessionId); /** * Get how many post of this user post in a special session. DOES NOT include posts from author. @@ -258,7 +259,7 @@ * @param contentID * @return List */ - List getSessionsByContentId(Long contentID); + List getSessionsByContentId(Long contentID); /** * Get all message according to the given session ID. @@ -292,7 +293,7 @@ * @param sessionID * @return */ - List getUsersBySessionId(Long sessionID); + List getUsersBySessionId(Long sessionID); /** * Get user by uid 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.61.2.1 -r1.61.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 30 Dec 2014 09:44:07 -0000 1.61.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 19 Jan 2015 21:34:30 -0000 1.61.2.2 @@ -33,6 +33,14 @@ public static final String TOOL_SIGNATURE = "lafrum11"; public static final String TOOL_CONTENT_HANDLER_NAME = "forumToolContentHandler"; + + public static final int SORT_BY_NO = 0; + public static final int SORT_BY_USER_NAME_ASC = 1; + public static final int SORT_BY_USER_NAME_DESC = 2; + public static final int SORT_BY_LAST_POSTING_ASC = 3; + public static final int SORT_BY_LAST_POSTING_DESC = 4; + public static final int SORT_BY_NUMBER_OF_POSTS_ASC = 5; + public static final int SORT_BY_NUMBER_OF_POSTS_DESC = 6; // See LDEV652 // For old style (Fiona's description): The oldest topic is at the top, does not depends the reply date etc. @@ -93,13 +101,15 @@ public static final String DELETED_AUTHORING_TOPICS_LIST = "deletedAuthoringTopicList"; - public static final String USER_UID = "userID"; + public static final String USER_UID = "userUid"; public static final String ATTR_FINISHED_LOCK = "finishedLock"; public static final String ATTR_USER_FINISHED = "userFinished"; public static final String ATTR_UPLOAD_MAX_FILE_SIZE = "uploadMaxFileSize"; + + public static final String ATTR_SESSION_DTOS = "sessionDtos"; // for submission deadline @@ -128,7 +138,7 @@ public static final String ATTR_USER_UID = "userUid"; - public static final String ATTR_REPORT = "report"; + public static final String ATTR_MESSAGES = "messages"; public static final String PARAM_UPDATE_MODE = "updateMode"; @@ -163,8 +173,6 @@ public static final String ATTR_MAXIMUM_REPLY = "maximumReply"; - public static final String MARK_UPDATE_FROM_SESSION = "listAllMarks"; - public static final String MARK_UPDATE_FROM_USER = "listMarks"; public static final String MARK_UPDATE_FROM_FORUM = "viewForum"; Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumUserComparator.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageDTOByDateComparator.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageDtoComparator.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageDtoComparator.java,v diff -u -r1.1 -r1.1.4.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageDtoComparator.java 23 Mar 2010 15:30:02 -0000 1.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageDtoComparator.java 19 Jan 2015 21:34:30 -0000 1.1.4.1 @@ -35,9 +35,7 @@ */ public class MessageDtoComparator implements Comparator { - /** - * {@inheritDoc} - */ + @Override public int compare(MessageDTO o1, MessageDTO o2) { if (o1 != null && o2 != null) { return o1.getMessage().getSequenceId() - o2.getMessage().getSequenceId(); Fisheye: Tag 1.1.2.1 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/SessionDTOComparator.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java,v diff -u -r1.46 -r1.46.2.1 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 6 Jan 2012 16:35:08 -0000 1.46 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java 19 Jan 2015 21:34:30 -0000 1.46.2.1 @@ -29,8 +29,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; @@ -41,10 +41,12 @@ import java.util.TreeMap; import java.util.TreeSet; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFCell; @@ -59,19 +61,25 @@ import org.apache.struts.action.ActionMessages; import org.apache.struts.action.ActionRedirect; import org.apache.struts.config.ForwardConfig; +import org.apache.tomcat.util.json.JSONArray; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.tool.forum.dto.MessageDTO; import org.lamsfoundation.lams.tool.forum.dto.SessionDTO; -import org.lamsfoundation.lams.tool.forum.dto.UserDTO; import org.lamsfoundation.lams.tool.forum.persistence.Forum; import org.lamsfoundation.lams.tool.forum.persistence.ForumReport; import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession; import org.lamsfoundation.lams.tool.forum.persistence.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.service.IForumService; import org.lamsfoundation.lams.tool.forum.util.ForumConstants; +import org.lamsfoundation.lams.tool.forum.util.ForumUserComparator; import org.lamsfoundation.lams.tool.forum.util.ForumWebUtils; +import org.lamsfoundation.lams.tool.forum.util.MessageDTOByDateComparator; +import org.lamsfoundation.lams.tool.forum.util.MessageDtoComparator; +import org.lamsfoundation.lams.tool.forum.util.SessionDTOComparator; import org.lamsfoundation.lams.tool.forum.web.forms.ForumForm; import org.lamsfoundation.lams.tool.forum.web.forms.MarkForm; import org.lamsfoundation.lams.util.DateUtil; @@ -90,42 +98,6 @@ private IForumService forumService; - private class SessionDTOComparator implements Comparator { - public int compare(SessionDTO o1, SessionDTO o2) { - if (o1 != null && o2 != null) { - return o1.getSessionName().compareTo(o2.getSessionName()); - } else if (o1 != null) { - return 1; - } else { - return -1; - } - } - } - - private class ForumUserComparator implements Comparator { - public int compare(ForumUser o1, ForumUser o2) { - if (o1 != null && o2 != null) { - return o1.getLoginName().compareTo(o2.getLoginName()); - } else if (o1 != null) { - return 1; - } else { - return -1; - } - } - } - - private class UserDTOComparator implements Comparator { - public int compare(UserDTO o1, UserDTO o2) { - if (o1 != null && o2 != null) { - return o1.getLoginName().compareTo(o2.getLoginName()); - } else if (o1 != null) { - return 1; - } else { - return -1; - } - } - } - /** * Action method entry. */ @@ -137,14 +109,15 @@ if (param.equals("init")) { return init(mapping, form, request, response); } - //refresh statistic page by Ajax call. + // refresh statistic page by Ajax call. if (param.equals("statistic")) { return statistic(mapping, form, request, response); } - // ***************** Marks Functions ******************** - if (param.equals("viewAllMarks")) { - return viewAllMarks(mapping, form, request, response); + if (param.equals("getUsers")) { + return getUsers(mapping, form, request, response); } + + // ***************** Marks Functions ******************** if (param.equals("downloadMarks")) { return downloadMarks(mapping, form, request, response); } @@ -170,10 +143,6 @@ return viewTopicTree(mapping, form, request, response); } - if (param.equals("viewReflection")) { - return viewReflection(mapping, form, request, response); - } - // **************** Date restriction ***************** if (param.equals("setSubmissionDeadline")) { return setSubmissionDeadline(mapping, form, request, response); @@ -188,7 +157,7 @@ private ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - //set back tool content ID + // set back tool content ID String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); request.setAttribute(AttributeNames.PARAM_CONTENT_FOLDER_ID, contentFolderID); @@ -201,14 +170,13 @@ summary(request); viewInstructions(request); viewActivity(request); - statistic(request); + // statistic(request); return mapping.findForward("load"); } /** - * The initial method for monitoring. List all users according to given - * Content ID. + * The initial method for monitoring. List all users according to given Content ID. * * @param mapping * @param form @@ -217,80 +185,162 @@ * @return */ private void summary(HttpServletRequest request) { - Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); - + Long toolContentId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); forumService = getForumService(); - - // get session from shared session. - HttpSession ss = SessionManager.getSession(); - - List sessionsList = forumService.getSessionsByContentId(toolContentID); - // A forum clone required for listing the advanced options LDEV-1662 - Forum forumClone = null; + // create sessionMap + SessionMap sessionMap = new SessionMap(); + request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); + Forum forum = forumService.getForumByContentId(toolContentId); + sessionMap.put("forum", forum); + + List sessions = forumService.getSessionsByContentId(toolContentId); + + Set sessionDtos = new TreeSet(new SessionDTOComparator()); + // build a map with all users in the forumSessionList + for (ForumToolSession session : sessions) { + Long sessionId = session.getSessionId(); + SessionDTO sessionDto = new SessionDTO(); + + sessionDto.setSessionID(sessionId); + sessionDto.setSessionName(session.getSessionName()); + + // used for storing data for MonitoringAction.getUsers() serving tablesorter paging + List topics = forumService.getAllTopicsFromSession(sessionId); + Map> topicsByUser = getTopicsSortedByAuthor(topics); + sessionDto.setTopicsByUser(topicsByUser); + + sessionDtos.add(sessionDto); + } + sessionMap.put(ForumConstants.ATTR_SESSION_DTOS, sessionDtos); + // check if there is submission deadline - Date submissionDeadline = forumService.getForumByContentId(toolContentID).getSubmissionDeadline(); - + Date submissionDeadline = forum.getSubmissionDeadline(); if (submissionDeadline != null) { - org.lamsfoundation.lams.usermanagement.dto.UserDTO learnerDto = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss.getAttribute(AttributeNames.USER); - TimeZone learnerTimeZone = learnerDto.getTimeZone(); - Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); - request.setAttribute(ForumConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); + HttpSession ss = SessionManager.getSession(); + org.lamsfoundation.lams.usermanagement.dto.UserDTO learnerDto = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss + .getAttribute(AttributeNames.USER); + TimeZone learnerTimeZone = learnerDto.getTimeZone(); + Date tzSubmissionDeadline = DateUtil.convertToTimeZoneFromDefault(learnerTimeZone, submissionDeadline); + sessionMap.put(ForumConstants.ATTR_SUBMISSION_DEADLINE, tzSubmissionDeadline.getTime()); } - - - Map sessionUsersMap = new TreeMap(this.new SessionDTOComparator()); - // build a map with all users in the forumSessionList - Iterator it = sessionsList.iterator(); - while (it.hasNext()) { - SessionDTO sessionDto = new SessionDTO(); - ForumToolSession fts = (ForumToolSession) it.next(); - boolean hasReflection = fts.getForum().isReflectOnActivity(); - if (forumClone == null) { - forumClone = (Forum) fts.getForum().clone(); - request.setAttribute("forum", forumClone); + boolean isGroupedActivity = forumService.isGroupedActivity(toolContentId); + sessionMap.put("isGroupedActivity", isGroupedActivity); + } + + /** + * Refreshes user list. + */ + public ActionForward getUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException, JSONException { + forumService = getForumService(); + String sessionMapId = WebUtil.readStrParam(request, ForumConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapId); + + // teacher timezone + HttpSession ss = SessionManager.getSession(); + org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss + .getAttribute(AttributeNames.USER); + TimeZone teacherTimeZone = teacher.getTimeZone(); + + Long sessionId = WebUtil.readLongParam(request, "sessionId"); + + // paging parameters of tablesorter + int size = WebUtil.readIntParam(request, "size"); + int page = WebUtil.readIntParam(request, "page"); + Integer isSort1 = WebUtil.readIntParam(request, "column[0]", true); + Integer isSort2 = WebUtil.readIntParam(request, "column[1]", true); + Integer isSort3 = WebUtil.readIntParam(request, "column[2]", true); + + int sorting = ForumConstants.SORT_BY_NO; + if ((isSort1 != null) && isSort1.equals(0)) { + sorting = ForumConstants.SORT_BY_USER_NAME_ASC; + + } else if ((isSort1 != null) && isSort1.equals(1)) { + sorting = ForumConstants.SORT_BY_USER_NAME_DESC; + + } else if ((isSort2 != null) && isSort2.equals(0)) { + sorting = ForumConstants.SORT_BY_LAST_POSTING_ASC; + + } else if ((isSort2 != null) && isSort2.equals(1)) { + sorting = ForumConstants.SORT_BY_LAST_POSTING_DESC; + + } else if ((isSort3 != null) && isSort3.equals(0)) { + sorting = ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC; + + } else if ((isSort3 != null) && isSort3.equals(1)) { + sorting = ForumConstants.SORT_BY_NUMBER_OF_POSTS_DESC; + } + + Set sessionDtos = (Set) sessionMap.get(ForumConstants.ATTR_SESSION_DTOS); + SessionDTO currentSessionDto = null; + for (SessionDTO sessionDto : sessionDtos) { + if (sessionDto.getSessionID().equals(sessionId)) { + currentSessionDto = sessionDto; + break; } + } + Map> topicsByUser = currentSessionDto.getTopicsByUser(); - sessionDto.setSessionID(fts.getSessionId()); - sessionDto.setSessionName(fts.getSessionName()); - List userList = forumService.getUsersBySessionId(fts.getSessionId()); + List users = forumService.getUsersForTablesorter(sessionId, page, size, sorting); - //sort and create DTO list - List topicList = forumService.getAllTopicsFromSession(fts.getSessionId()); - Map topicsByUser = getTopicsSortedByAuthor(topicList); + JSONArray rows = new JSONArray(); - Set dtoList = new TreeSet(this.new UserDTOComparator()); - Iterator iter = userList.iterator(); - while (iter.hasNext()) { - ForumUser user = (ForumUser) iter.next(); - UserDTO userDTO = new UserDTO(user); - userDTO.setHasRefection(hasReflection); + JSONObject responcedata = new JSONObject(); + responcedata.put("total_rows", forumService.getCountUsersBySession(sessionId)); - userDTO.setAnyPostsMarked(false); - userDTO.setNoOfPosts(0); + for (ForumUser user : users) { - List messages = (List) topicsByUser.get(user); - if (messages != null && messages.size() > 0) { - userDTO.setNoOfPosts(messages.size()); - for (MessageDTO message : messages) { - if (message.getMark() != null) { - userDTO.setAnyPostsMarked(true); - break; - } + JSONObject responseRow = new JSONObject(); + responseRow.put(ForumConstants.ATTR_USER_UID, user.getUid()); + responseRow.put("userName", StringEscapeUtils.escapeHtml(user.getLastName() + " " + user.getFirstName())); + + int numberOfPosts = 0; + boolean isAnyPostsMarked = false; + if (topicsByUser.get(user) != null) { + + // sort messages by date + TreeSet messages = new TreeSet(new MessageDTOByDateComparator()); + messages.addAll(topicsByUser.get(user)); + + MessageDTO lastMessage = messages.last(); + + // format lastEdited date + Date lastMessageDate = lastMessage.getMessage().getCreated(); + lastMessageDate = DateUtil.convertToTimeZoneFromDefault(teacherTimeZone, lastMessageDate); + DateFormat dateFormatter = new SimpleDateFormat("d MMMM yyyy h:mm:ss a"); + responseRow.put("lastMessageDate", dateFormatter.format(lastMessageDate)); + + numberOfPosts = messages.size(); + for (MessageDTO message : messages) { + if (message.getMark() != null) { + isAnyPostsMarked = true; + break; } } - dtoList.add(userDTO); } + responseRow.put("anyPostsMarked", isAnyPostsMarked); + responseRow.put("numberOfPosts", numberOfPosts); - sessionUsersMap.put(sessionDto, dtoList); - } + Forum forum = (Forum) sessionMap.get("forum"); + if (forum.isReflectOnActivity()) { + NotebookEntry notebookEntry = forumService.getEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, + ForumConstants.TOOL_SIGNATURE, user.getUserId().intValue()); - boolean isGroupedActivity = forumService.isGroupedActivity(toolContentID); - request.setAttribute("isGroupedActivity", isGroupedActivity); - // request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID,sessionID); - request.setAttribute("sessionUserMap", sessionUsersMap); + String reflection = (notebookEntry == null) ? null : notebookEntry.getEntry(); + responseRow.put("notebookEntry", StringEscapeUtils.escapeHtml(reflection)); + } + + rows.put(responseRow); + } + responcedata.put("rows", rows); + res.setContentType("application/json;charset=utf-8"); + res.getWriter().print(new String(responcedata.toString())); + return null; } /** @@ -370,7 +420,7 @@ cell.setCellValue(DateFormat.getInstance().format(dto.getMessage().getCreated())); cell = row.createCell(idx++); - + if (dto.getMessage() != null && dto.getMessage().getReport() != null && dto.getMessage().getReport().getMark() != null) { cell.setCellValue(NumberUtil.formatLocalisedNumber(dto.getMessage().getReport().getMark(), @@ -420,7 +470,7 @@ */ private void viewActivity(HttpServletRequest request) { Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); - + forumService = getForumService(); Forum forum = forumService.getForumByContentId(toolContentID); String title = forum.getTitle(); @@ -462,7 +512,7 @@ statistic(request); return mapping.findForward("success"); } - + /** * Performs all necessary actions for showing statistic page. * @@ -472,7 +522,7 @@ Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); forumService = getForumService(); - Map sessionTopicsMap = new TreeMap>(this.new SessionDTOComparator()); + Map sessionTopicsMap = new TreeMap>(new SessionDTOComparator()); Map sessionAvaMarkMap = new HashMap(); Map sessionTotalMsgMap = new HashMap(); @@ -542,32 +592,6 @@ return mapping.findForward("success"); } - private ActionForward viewReflection(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - - Long uid = WebUtil.readLongParam(request, ForumConstants.ATTR_USER_UID); - Long sessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); - - ForumUser user = forumService.getUser(uid); - NotebookEntry notebookEntry = forumService.getEntry(sessionID, CoreNotebookConstants.NOTEBOOK_TOOL, - ForumConstants.TOOL_SIGNATURE, user.getUserId().intValue()); - - ForumToolSession session = forumService.getSessionBySessionId(sessionID); - - UserDTO userDTO = new UserDTO(user); - if (notebookEntry == null) { - userDTO.setFinishReflection(false); - userDTO.setReflect(null); - } else { - userDTO.setFinishReflection(true); - userDTO.setReflect(notebookEntry.getEntry()); - } - userDTO.setReflectInstrctions(session.getForum().getReflectInstructions()); - - request.setAttribute("userDTO", userDTO); - return mapping.findForward("success"); - } - /** * View topic subject, content and attachement. * @@ -591,7 +615,7 @@ private ActionForward releaseMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - //get service then update report table + // get service then update report table forumService = getForumService(); Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); forumService.releaseMarksForSession(sessionID); @@ -617,37 +641,6 @@ // ========================================================================================== /** - * View all user marks for a special Session ID - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward viewAllMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - //only one param for session scope marks - Long sessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); - - //create sessionMap - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); - sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionID); - sessionMap.put(ForumConstants.PARAM_UPDATE_MODE, ForumConstants.MARK_UPDATE_FROM_SESSION); - - request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - - //get tool session scope topics - forumService = getForumService(); - List topicList = forumService.getAllTopicsFromSession(sessionID); - - Map topicsByUser = getTopicsSortedByAuthor(topicList); - request.setAttribute(ForumConstants.ATTR_REPORT, topicsByUser); - return mapping.findForward("success"); - } - - /** * View a special user's mark * * @param mapping @@ -661,24 +654,23 @@ Long userUid = new Long(WebUtil.readLongParam(request, ForumConstants.USER_UID)); Long sessionId = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID)); - //create sessionMap - SessionMap sessionMap = new SessionMap(); - request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); + // create sessionMap + String sessionMapId = WebUtil.readStrParam(request, ForumConstants.ATTR_SESSION_MAP_ID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + sessionMapId); + request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMapId); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); sessionMap.put(ForumConstants.PARAM_UPDATE_MODE, ForumConstants.MARK_UPDATE_FROM_USER); - request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - //get this user's all topics + // get this user's all topics forumService = getForumService(); - List messageList = forumService.getMessagesByUserUid(userUid, sessionId); + List messages = forumService.getMessagesByUserUid(userUid, sessionId); + request.setAttribute(ForumConstants.ATTR_MESSAGES, messages); + ForumUser user = forumService.getUser(userUid); + request.setAttribute(ForumConstants.ATTR_USER, user); - // each back to web page - Map> report = new TreeMap(this.new ForumUserComparator()); - report.put(user, messageList); - request.setAttribute(ForumConstants.ATTR_REPORT, report); - return mapping.findForward("success"); } @@ -694,9 +686,10 @@ private ActionForward editMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MarkForm markForm = (MarkForm) form; - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(markForm.getSessionMapID()); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + markForm.getSessionMapID()); String updateMode = (String) sessionMap.get(ForumConstants.PARAM_UPDATE_MODE); - //view forum mode + // view forum mode if (StringUtils.isBlank(updateMode)) { sessionMap.put(ForumConstants.PARAM_UPDATE_MODE, ForumConstants.MARK_UPDATE_FROM_FORUM); sessionMap.put(ForumConstants.ATTR_ROOT_TOPIC_UID, markForm.getTopicID()); @@ -724,7 +717,7 @@ // Should we show the reflection or not? We shouldn't show it when the View Forum screen is accessed // from the Monitoring Summary screen, but we should when accessed from the Learner Progress screen. // Need to constantly past this value on, rather than hiding just the once, as the View Forum - // screen has a refresh button. Need to pass it through the view topic screen and dependent screens + // screen has a refresh button. Need to pass it through the view topic screen and dependent screens // as it has a link from the view topic screen back to View Forum screen. boolean hideReflection = WebUtil.readBooleanParam(request, ForumConstants.ATTR_HIDE_REFLECTION, false); sessionMap.put(ForumConstants.ATTR_HIDE_REFLECTION, hideReflection); @@ -774,7 +767,7 @@ return mapping.getInputForward(); } - //update message report + // update message report forumService = getForumService(); ForumReport report = msg.getReport(); @@ -783,34 +776,27 @@ msg.setReport(report); } - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(markForm.getSessionMapID()); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute( + markForm.getSessionMapID()); Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); String updateMode = (String) sessionMap.get(ForumConstants.PARAM_UPDATE_MODE); report.setMark(mark); report.setComment(markForm.getComment()); forumService.updateContainedReport(msg); - //echo back to topic list page: it depends which screen is come from: view special user mark, or view all user marks. - if (StringUtils.equals(updateMode, ForumConstants.MARK_UPDATE_FROM_SESSION)) { - List topicList = forumService.getAllTopicsFromSession(sessionId); - Map topicsByUser = getTopicsSortedByAuthor(topicList); - request.setAttribute(ForumConstants.ATTR_REPORT, topicsByUser); - //listMark or listAllMark. + // echo back to topic list page: it depends which screen is come from: view special user mark, or view all user + // marks. + if (StringUtils.equals(updateMode, ForumConstants.MARK_UPDATE_FROM_USER)) { + List messages = forumService.getMessagesByUserUid(user.getUid(), sessionId); + request.setAttribute(ForumConstants.ATTR_MESSAGES, messages); + // listMark return mapping.findForward("success"); - - } else if (StringUtils.equals(updateMode, ForumConstants.MARK_UPDATE_FROM_USER)) { - List messageList = forumService.getMessagesByUserUid(user.getUid(), sessionId); - Map> topicMap = new TreeMap(this.new ForumUserComparator()); - topicMap.put(user, messageList); - request.setAttribute(ForumConstants.ATTR_REPORT, topicMap); - //listMark or listAllMark. - return mapping.findForward("success"); - - } else { //mark from view forum - //display root topic rather than leaf one + + } else { // mark from view forum + // display root topic rather than leaf one Long rootTopicId = forumService.getRootTopicId(msg.getUid()); - + ForwardConfig redirectConfig = mapping.findForwardConfig("viewTopic"); ActionRedirect redirect = new ActionRedirect(redirectConfig); redirect.addParameter(ForumConstants.ATTR_SESSION_MAP_ID, markForm.getSessionMapID()); @@ -820,7 +806,7 @@ } } - + /** * Set Submission Deadline * @@ -833,16 +819,17 @@ public ActionForward setSubmissionDeadline(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { forumService = getForumService(); - + Long contentID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID); Forum forum = forumService.getForumByContentId(contentID); - + Long dateParameter = WebUtil.readLongParam(request, ForumConstants.ATTR_SUBMISSION_DEADLINE, true); Date tzSubmissionDeadline = null; if (dateParameter != null) { Date submissionDeadline = new Date(dateParameter); HttpSession ss = SessionManager.getSession(); - org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss.getAttribute(AttributeNames.USER); + org.lamsfoundation.lams.usermanagement.dto.UserDTO teacher = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) ss + .getAttribute(AttributeNames.USER); TimeZone teacherTimeZone = teacher.getTimeZone(); tzSubmissionDeadline = DateUtil.convertFromTimeZoneToDefault(teacherTimeZone, submissionDeadline); } @@ -851,9 +838,7 @@ return null; } - - // ========================================================================================== // Utility methods // ========================================================================================== @@ -873,26 +858,25 @@ } /** - * @param topicList + * @param topics * @return */ - private Map getTopicsSortedByAuthor(List topicList) { - Map> topicsByUser = new TreeMap(this.new ForumUserComparator()); - Iterator iter = topicList.iterator(); - forumService = getForumService(); - while (iter.hasNext()) { - MessageDTO dto = (MessageDTO) iter.next(); - if (dto.getMessage().getIsAuthored()) { + private Map> getTopicsSortedByAuthor(List topics) { + Map> topicsByUser = new TreeMap>( + new ForumUserComparator()); + for (MessageDTO topic : topics) { + if (topic.getMessage().getIsAuthored()) { continue; } - dto.getMessage().getReport(); - ForumUser user = (ForumUser) dto.getMessage().getCreatedBy().clone(); - List list = topicsByUser.get(user); - if (list == null) { - list = new ArrayList(); - topicsByUser.put(user, list); + topic.getMessage().getReport(); + ForumUser user = (ForumUser) topic.getMessage().getCreatedBy().clone(); + + List topicsByUserExist = topicsByUser.get(user); + if (topicsByUserExist == null) { + topicsByUserExist = new ArrayList(); + topicsByUser.put(user, topicsByUserExist); } - list.add(dto); + topicsByUserExist.add(topic); } return topicsByUser; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java,v diff -u -r1.19.2.1 -r1.19.2.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java 30 Dec 2014 09:44:07 -0000 1.19.2.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java 19 Jan 2015 21:34:31 -0000 1.19.2.2 @@ -96,7 +96,6 @@ forum.setAllowEdit(false); forum.setAllowAnonym(false); forum.setAllowRichEditor(false); - forum.setLimitedMinCharacters(false); forum.setLimitedMaxCharacters(false); forum.setLockWhenFinished(false); forum.setAllowNewTopic(false); Index: lams_tool_forum/web/WEB-INF/tiles-defs.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/WEB-INF/tiles-defs.xml,v diff -u -r1.4.2.2 -r1.4.2.3 --- lams_tool_forum/web/WEB-INF/tiles-defs.xml 18 Oct 2014 21:17:12 -0000 1.4.2.2 +++ lams_tool_forum/web/WEB-INF/tiles-defs.xml 19 Jan 2015 21:34:30 -0000 1.4.2.3 @@ -106,41 +106,37 @@ - + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - - - Fisheye: Tag 1.2.2.1 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/monitoring/daterestriction.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/web/jsps/monitoring/header.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/header.jsp,v diff -u -r1.8 -r1.8.2.1 --- lams_tool_forum/web/jsps/monitoring/header.jsp 17 Jan 2014 21:42:44 -0000 1.8 +++ lams_tool_forum/web/jsps/monitoring/header.jsp 19 Jan 2015 21:34:30 -0000 1.8.2.1 @@ -23,8 +23,9 @@ selectTab(tabId); //for statistic page change: - if(tabId == 3) - doStatistic(); + if(tabId == 3) { + doStatistic(); + } } function doStatistic(){ Index: lams_tool_forum/web/jsps/monitoring/monitoring.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/monitoring/monitoring.jsp,v diff -u -r1.6 -r1.6.2.1 --- lams_tool_forum/web/jsps/monitoring/monitoring.jsp 17 Jan 2014 21:42:44 -0000 1.6 +++ lams_tool_forum/web/jsps/monitoring/monitoring.jsp 19 Jan 2015 21:34:30 -0000 1.6.2.1 @@ -1,5 +1,8 @@ <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%> + + +