Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java
===================================================================
diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -59,7 +59,6 @@
private String attachmentLocalUrl;
private int newPostingsNum;
- private Date lastTopicDate;
/**
* Get a MessageDTO
instance from a given Message
.
@@ -233,12 +232,4 @@
public int getNewPostingsNum() {
return newPostingsNum;
}
-
- public void setLastTopicDate(Date lastTopicDate) {
- this.lastTopicDate = lastTopicDate;
- }
-
- public Date getLastTopicDate() {
- return lastTopicDate;
- }
}
Fisheye: Tag 901372af1b71238311d32a55f25ec8ba637bf5ca refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReportDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java
===================================================================
diff -u -r4927ee743a679c87a515436a0cc289b8bbc84ccd -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 4927ee743a679c87a515436a0cc289b8bbc84ccd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -94,21 +94,21 @@
try {
msg = (Message) super.clone();
msg.setUid(null);
- //it is not necessary to deep clone following comment fields.
- //don't deep clone forum to avoid dead loop in clone
-// if(parent != null){
-// msg.parent = (Message) parent.clone();
-// //try to keep parent uid, so avoid persistant a new instance in database for parent message
-// msg.parent.uid = parent.uid;
-// }
-// if(toolSession != null){
-// msg.toolSession = (ForumToolSession) toolSession.clone();
-// }
-// if(createdBy != null){
-// msg.createdBy = (ForumUser) createdBy.clone();
-// }
-// if(modifiedBy != null)
-// msg.modifiedBy = (ForumUser) modifiedBy.clone();
+ // it is not necessary to deep clone following comment fields.
+ // don't deep clone forum to avoid dead loop in clone
+ // if(parent != null){
+ // msg.parent = (Message) parent.clone();
+ // //try to keep parent uid, so avoid persistant a new instance in database for parent message
+ // msg.parent.uid = parent.uid;
+ // }
+ // if(toolSession != null){
+ // msg.toolSession = (ForumToolSession) toolSession.clone();
+ // }
+ // if(createdBy != null){
+ // msg.createdBy = (ForumUser) createdBy.clone();
+ // }
+ // if(modifiedBy != null)
+ // msg.modifiedBy = (ForumUser) modifiedBy.clone();
// clone attachment
if (attachments != null) {
Iterator iter = attachments.iterator();
@@ -129,7 +129,7 @@
return msg;
}
-
+
public Object updateClone(Message clone) {
clone.setBody(this.getBody());
@@ -145,8 +145,8 @@
clone.setSubject(this.getSubject());
clone.setToolContentHandler(this.getToolContentHandler());
clone.setUpdated(clone.getUpdated());
-
- // Update the attachments. Easiest way is to recopy them - which does NOT copy them in the content repository.
+
+ // Update the attachments. Easiest way is to recopy them - which does NOT copy them in the content repository.
clone.getAttachments().clear();
if (attachments != null) {
Iterator iter = attachments.iterator();
@@ -170,7 +170,7 @@
}
this.setUpdated(new Date(now));
}
-
+
public boolean equals(Object o) {
if (this == o)
return true;
@@ -184,19 +184,18 @@
return new EqualsBuilder()
// .append(this.uid,genericEntity.getUid())
.append(this.subject, genericEntity.getSubject())
- .append(this.body,genericEntity.getBody())
- .append(this.replyNumber,genericEntity.getReplyNumber())
- //.append(this.lastReplyDate,genericEntity.lastReplyDate)
- //.append(this.created,genericEntity.created)
- //.append(this.updated,genericEntity.updated)
- .append(this.createdBy,genericEntity.getCreatedBy())
- .append(this.modifiedBy,genericEntity.getModifiedBy())
- .isEquals();
+ .append(this.body, genericEntity.getBody())
+ .append(this.replyNumber, genericEntity.getReplyNumber())
+ // .append(this.lastReplyDate,genericEntity.lastReplyDate)
+ // .append(this.created,genericEntity.created)
+ // .append(this.updated,genericEntity.updated)
+ .append(this.createdBy, genericEntity.getCreatedBy())
+ .append(this.modifiedBy, genericEntity.getModifiedBy()).isEquals();
}
public int hashCode() {
- return new HashCodeBuilder().append(uid).append(subject).append(body).append(created).append(updated).append(
- createdBy).append(modifiedBy).toHashCode();
+ return new HashCodeBuilder().append(uid).append(subject).append(body).append(created).append(updated)
+ .append(createdBy).append(modifiedBy).toHashCode();
}
// **********************************************************
@@ -419,14 +418,15 @@
public void setParent(Message parent) {
this.parent = parent;
}
+
/**
* @hibernate.many-to-one column="parent_uid"
* @return
*/
public Message getParent() {
- return parent;
+ return parent;
}
-
+
/**
* @return a set of Attachments to this Message.
*
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java
===================================================================
diff -u -rcd8c61889043c1314d651b9df0956d7e800436de -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision cd8c61889043c1314d651b9df0956d7e800436de)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageDao.java (.../MessageDao.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -21,7 +21,7 @@
* ****************************************************************
*/
-/* $$Id$$ */
+/* $$Id$$ */
package org.lamsfoundation.lams.tool.forum.persistence;
@@ -34,112 +34,107 @@
* @author conradb
*/
public class MessageDao extends HibernateDaoSupport {
- private static final String SQL_QUERY_FIND_ROOT_TOPICS = "from " + Message.class.getName() +" m "
- + " where parent_uid is null and m.toolSession.sessionId=?";
-
- private static final String SQL_QUERY_FIND_TOPICS_FROM_AUTHOR = "from " + Message.class.getName()
- + " where is_authored = true and forum_uid=? order by create_date";
-
- private static final String SQL_QUERY_FIND_CHILDREN = "from " + Message.class.getName()
- + " where parent_uid=?";
-
- private static final String SQL_QUERY_BY_USER_SESSION = "from " + Message.class.getName() + " m "
- + " where m.createdBy.uid = ? and m.toolSession.sessionId=?";
-
- private static final String SQL_QUERY_BY_SESSION = "from " + Message.class.getName() + " m "
- + " where m.toolSession.sessionId=?";
-
- private static final String SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION = "select count(*) from " + Message.class.getName() + " m "
- + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false";
-
- private static final String SQL_QUERY_LAST_TOPIC_DATE_BY_MESSAGE = " select m.updated from " + Message.class.getName() + " m "
- + " where m.uid IN (select seq.message.uid FROM " + MessageSeq.class.getName()
- + " seq WHERE seq.rootMessage.uid = ?) order by m.updated desc ";
-
- public void saveOrUpdate(Message message) {
- message.updateModificationData();
-
- this.getHibernateTemplate().saveOrUpdate(message);
- }
-
- public void update(Message message) {
- this.getHibernateTemplate().saveOrUpdate(message);
- }
+ private static final String SQL_QUERY_FIND_ROOT_TOPICS = "from " + Message.class.getName() + " m "
+ + " where parent_uid is null and m.toolSession.sessionId=?";
- public Message getById(Long messageId) {
- return (Message) getHibernateTemplate().get(Message.class,messageId);
- }
- /**
- * Get all root (first level) topics in a special Session.
- * @param sessionId
- * @return
- */
- public List getRootTopics(Long sessionId) {
- return this.getHibernateTemplate().find(SQL_QUERY_FIND_ROOT_TOPICS, sessionId);
- }
- /**
- * Get all message posted by author role in a special forum.
- * @param forumUid
- * @return
- */
- public List getTopicsFromAuthor(Long forumUid) {
- return this.getHibernateTemplate().find(SQL_QUERY_FIND_TOPICS_FROM_AUTHOR, forumUid);
- }
+ private static final String SQL_QUERY_FIND_TOPICS_FROM_AUTHOR = "from " + Message.class.getName()
+ + " where is_authored = true and forum_uid=? order by create_date";
- public void delete(Long uid) {
- Message msg = getById(uid);
- if(msg != null){
- this.getHibernateTemplate().delete(msg);
- }
+ private static final String SQL_QUERY_FIND_CHILDREN = "from " + Message.class.getName() + " where parent=?";
+
+ private static final String SQL_QUERY_BY_USER_SESSION = "from " + Message.class.getName() + " m "
+ + " where m.createdBy.uid = ? and m.toolSession.sessionId=?";
+
+ private static final String SQL_QUERY_BY_SESSION = "from " + Message.class.getName() + " m "
+ + " where m.toolSession.sessionId=?";
+
+ private static final String SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION = "select count(*) from "
+ + Message.class.getName() + " m "
+ + " where m.createdBy.userId=? and m.toolSession.sessionId=? and m.isAuthored = false";
+
+ public void saveOrUpdate(Message message) {
+ this.getHibernateTemplate().saveOrUpdate(message);
+ }
+
+ public void update(Message message) {
+ this.getHibernateTemplate().saveOrUpdate(message);
+ }
+
+ public Message getById(Long messageId) {
+ return (Message) getHibernateTemplate().get(Message.class, messageId);
+ }
+
+ /**
+ * Get all root (first level) topics in a special Session.
+ *
+ * @param sessionId
+ * @return
+ */
+ public List getRootTopics(Long sessionId) {
+ return this.getHibernateTemplate().find(SQL_QUERY_FIND_ROOT_TOPICS, sessionId);
+ }
+
+ /**
+ * Get all message posted by author role in a special forum.
+ *
+ * @param forumUid
+ * @return
+ */
+ public List getTopicsFromAuthor(Long forumUid) {
+ return this.getHibernateTemplate().find(SQL_QUERY_FIND_TOPICS_FROM_AUTHOR, forumUid);
+ }
+
+ public void delete(Long uid) {
+ Message msg = getById(uid);
+ if (msg != null) {
+ this.getHibernateTemplate().delete(msg);
}
- /**
- * Get all children message from the given parent topic ID.
- * @param parentId
- * @return
- */
- public List getChildrenTopics(Long parentId) {
- return this.getHibernateTemplate().find(SQL_QUERY_FIND_CHILDREN, parentId);
- }
- /**
- * Get all messages according to special user and session.
- * @param userUid
- * @param sessionId
- * @return
- */
- public List getByUserAndSession(Long userUid, Long sessionId) {
- return this.getHibernateTemplate().find(SQL_QUERY_BY_USER_SESSION, new Object[]{userUid,sessionId});
- }
- /**
- * Get all messages according to special session.
- * @param sessionId
- * @return
- */
- public List getBySession(Long sessionId) {
- return this.getHibernateTemplate().find(SQL_QUERY_BY_SESSION, sessionId);
- }
- /**
- * Return how many post from this user and session. DOES NOT include posts from author.
- * @param userID
- * @param sessionId
- * @return
- */
- public int getTopicsNum(Long userID, Long sessionId) {
- List list = this.getHibernateTemplate().find(SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION,new Object[]{userID,sessionId});
- if(list != null && list.size() > 0)
- return ((Number)list.get(0)).intValue();
- else
- return 0;
- }
- /**
- * Return date of the last posting in a thread
- * @param messageID
- * @return
- */
- public Date getLastTopicDate(Long messageID) {
- List list = this.getHibernateTemplate().find(SQL_QUERY_LAST_TOPIC_DATE_BY_MESSAGE, new Object[]{messageID});
- if(list != null && list.size() > 0)
- return ((Date) list.get(0));
- else
- return new Date();
- }
+ }
+
+ /**
+ * Get all children message from the given parent topic ID.
+ *
+ * @param parentId
+ * @return
+ */
+ public List getChildrenTopics(Long parentId) {
+ return this.getHibernateTemplate().find(SQL_QUERY_FIND_CHILDREN, parentId);
+ }
+
+ /**
+ * Get all messages according to special user and session.
+ *
+ * @param userUid
+ * @param sessionId
+ * @return
+ */
+ public List getByUserAndSession(Long userUid, Long sessionId) {
+ return this.getHibernateTemplate().find(SQL_QUERY_BY_USER_SESSION, new Object[] { userUid, sessionId });
+ }
+
+ /**
+ * Get all messages according to special session.
+ *
+ * @param sessionId
+ * @return
+ */
+ public List getBySession(Long sessionId) {
+ return this.getHibernateTemplate().find(SQL_QUERY_BY_SESSION, sessionId);
+ }
+
+ /**
+ * Return how many post from this user and session. DOES NOT include posts from author.
+ *
+ * @param userID
+ * @param sessionId
+ * @return
+ */
+ public int getTopicsNum(Long userID, Long sessionId) {
+ List list = this.getHibernateTemplate().find(SQL_QUERY_TOPICS_NUMBER_BY_USER_SESSION,
+ new Object[] { userID, sessionId });
+ if (list != null && list.size() > 0)
+ return ((Number) list.get(0)).intValue();
+ else
+ return 0;
+ }
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java
===================================================================
diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java (.../MessageSeqDao.java) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java (.../MessageSeqDao.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -25,6 +25,7 @@
package org.lamsfoundation.lams.tool.forum.persistence;
+import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@@ -38,15 +39,17 @@
private static final String SQL_QUERY_NUM_POSTS_BY_TOPIC = "select count(*) from " + MessageSeq.class.getName()
+ " ms where ms.message.createdBy.userId=? and ms.message.isAuthored = false and ms.rootMessage.uid=?";
+ private static final String SQL_QUERY_NUM_POSTS_BY_ROOT_MESSAGE_AND_DATE = "SELECT count(*) FROM "
+ + MessageSeq.class.getName() + " seq WHERE seq.rootMessage.uid = ? AND seq.message.updated > ?";
+
public List getTopicThread(Long rootTopicId) {
return this.getHibernateTemplate().find(SQL_QUERY_FIND_TOPIC_THREAD, rootTopicId);
}
public MessageSeq getByTopicId(Long messageId) {
List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_TOPIC_ID, messageId);
- if (list == null || list.isEmpty()) {
+ if (list == null || list.isEmpty())
return null;
- }
return (MessageSeq) list.get(0);
}
@@ -56,15 +59,33 @@
public void deleteByTopicId(Long topicUid) {
MessageSeq seq = getByTopicId(topicUid);
- if (seq != null) {
+ if (seq != null)
this.getHibernateTemplate().delete(seq);
- }
}
public int getNumOfPostsByTopic(Long userID, Long topicID) {
List list = this.getHibernateTemplate().find(SQL_QUERY_NUM_POSTS_BY_TOPIC, new Object[] { userID, topicID });
- if (list != null && list.size() > 0) {
+ if (list != null && list.size() > 0)
return ((Number) list.get(0)).intValue();
+ else
+ return 0;
+ }
+
+ /**
+ * Get number of messages newer than specified date.
+ *
+ * @param rootMessageId
+ * @param userId
+ * @return
+ */
+ public int getNumOfPostsNewerThan(Long rootMessageId, Date date) {
+
+ // user views forum not the first time
+ List messages = this.getHibernateTemplate().find(SQL_QUERY_NUM_POSTS_BY_ROOT_MESSAGE_AND_DATE,
+ new Object[] { rootMessageId, date });
+
+ if (messages != null && messages.size() > 0) {
+ return ((Number) messages.get(0)).intValue();
} else {
return 0;
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java
===================================================================
diff -u -rb5af051561cba50d0c72d74c66a19e7e9e403396 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java (.../TimestampDao.java) (revision b5af051561cba50d0c72d74c66a19e7e9e403396)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/TimestampDao.java (.../TimestampDao.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -24,6 +24,7 @@
/* $$Id$$ */
package org.lamsfoundation.lams.tool.forum.persistence;
+import java.util.Date;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
@@ -34,18 +35,9 @@
*/
public class TimestampDao extends HibernateDaoSupport {
- /* 0 if user opens forum first time; otherwise >0 */
- private static final String SQL_QUERY_FIRST_TIME_BY_MESSAGE_USER =
- " SELECT count(*) FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
+ private static final String GET_TIMESTAMP_BY_MESSAGE_AND_USER = " FROM " + Timestamp.class.getName()
+ + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
- private static final String SQL_QUERY_TIMESTAMP_BY_MESSAGE_USER =
- " FROM " + Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
-
- private static final String SQL_QUERY_MESSAGE_NUMBER_BY_MESSAGE_USER =
- "SELECT count(*) FROM " + Message.class.getName() + " mes WHERE mes.uid IN (SELECT seq.message.uid FROM " +
- MessageSeq.class.getName() + " seq WHERE seq.rootMessage.uid = ?) " + " AND mes.updated > (SELECT ts.timestamp FROM " +
- Timestamp.class.getName() + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ?)";
-
public void delete(Timestamp timestamp) {
this.getHibernateTemplate().delete(timestamp);
}
@@ -68,39 +60,11 @@
* @return
*/
public Timestamp getTimestamp(Long messageId, Long forumUserId) {
- List timestampList = this.getHibernateTemplate().find(SQL_QUERY_TIMESTAMP_BY_MESSAGE_USER, new Object[]{messageId, forumUserId});
+ List timestampList = this.getHibernateTemplate().find(GET_TIMESTAMP_BY_MESSAGE_AND_USER, new Object[]{messageId, forumUserId});
if (timestampList != null && timestampList.size() > 0)
return (Timestamp) (timestampList.get(0));
else
return null;
}
- /**
- * Get number of new postings.
- *
- * @param messageId
- * @param userId
- * @return
- */
- public int getNewMessagesNum(Long messageId, Long userId) {
- List firstTimeList = this.getHibernateTemplate().find(SQL_QUERY_FIRST_TIME_BY_MESSAGE_USER, new Object[]{messageId, userId});
- if (firstTimeList != null && firstTimeList.size() > 0)
- {
- if (((Number)firstTimeList.get(0)).intValue() > 0) // if not first time
- {
- List postingsList = this.getHibernateTemplate().find(SQL_QUERY_MESSAGE_NUMBER_BY_MESSAGE_USER,
- new Object[]{messageId, messageId, userId});
-
- if(postingsList != null && postingsList.size() > 0)
- return ((Number)postingsList.get(0)).intValue();
- else
- return 0;
- }
- else
- return -1; // user views forum for the first time
- }
- else
- return 0;
- }
-
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java
===================================================================
diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -87,7 +87,6 @@
import org.lamsfoundation.lams.tool.forum.persistence.ForumDao;
import org.lamsfoundation.lams.tool.forum.persistence.ForumException;
import org.lamsfoundation.lams.tool.forum.persistence.ForumReport;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumReportDAO;
import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession;
import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSessionDao;
import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
@@ -142,8 +141,6 @@
private ForumToolSessionDao forumToolSessionDao;
- private ForumReportDAO forumReportDAO;
-
// system level handler and service
private ILamsToolService toolService;
@@ -168,11 +165,11 @@
private IGradebookService gradebookService;
private IEventNotificationService eventNotificationService;
-
+
private ILessonService lessonService;
-
+
private IActivityDAO activityDAO;
-
+
private Random generator = new Random();
// ---------------------------------------------------------------------
@@ -248,11 +245,13 @@
while (iter.hasNext()) {
Message clone = (Message) iter.next();
message.updateClone(clone);
+ clone.updateModificationData();
messageDao.saveOrUpdate(clone);
}
}
// create message in database
+ message.updateModificationData();
messageDao.saveOrUpdate(message);
return message;
@@ -261,20 +260,20 @@
public Message updateTopic(Message message) throws PersistenceException {
// update message
+ message.updateModificationData();
messageDao.saveOrUpdate(message);
- // udate root message's lastReply date if this message
- // if this message is root message, then actually, it will update itself lastReplayDate
+ // udate root message's lastReplyDate
MessageSeq msgSeq = messageSeqDao.getByTopicId(message.getUid());
Message root = msgSeq.getRootMessage();
- // update reply date
- // messageDao.saveOrUpdate(root); // do not update date of root posting
+ root.setLastReplyDate(new Date());
+ messageDao.saveOrUpdate(root);
return message;
}
- public void updateReport(ForumReport report) {
- forumReportDAO.saveObject(report);
+ public void updateContainedReport(Message message) {
+ messageDao.saveOrUpdate(message);
}
public Message updateMessageHideFlag(Long messageId, boolean hideFlag) {
@@ -307,7 +306,7 @@
public void deleteTopic(Long topicUid) throws PersistenceException {
Message topic = messageDao.getById(topicUid);
-
+
// cascade delete children topic by recursive
List children = messageDao.getChildrenTopics(topicUid);
if (children != null) {
@@ -317,12 +316,12 @@
this.deleteTopic(msg.getUid());
}
}
-
+
// recursively delete clones
for (Message clone : (Set) topic.getSessionClones()) {
this.deleteTopic(clone.getUid());
}
-
+
messageSeqDao.deleteByTopicId(topicUid);
messageDao.delete(topicUid);
}
@@ -339,6 +338,7 @@
// parent sessionID maybe empty if created by author role. So given sessionId is exactly value.
ForumToolSession session = getSessionBySessionId(sessionId);
replyMessage.setToolSession(session);
+ replyMessage.updateModificationData();
messageDao.saveOrUpdate(replyMessage);
// get root topic and create record in MessageSeq table
@@ -354,11 +354,11 @@
msgSeq.setRootMessage(root);
messageSeqDao.save(msgSeq);
- // update last reply date for root messagegetlas
+ // update last reply date for root message
root.setLastReplyDate(new Date());
// update reply message number for root
root.setReplyNumber(root.getReplyNumber() + 1);
- // messageDao.saveOrUpdate(root); // do not update the date of root posting
+ messageDao.saveOrUpdate(root);
return replyMessage;
}
@@ -388,9 +388,9 @@
* repository
*
* @param uuid
- * The uuid
of the node to be deleted
+ * The uuid
of the node to be deleted
* @param versionID
- * The version_id
of the node to be deleted.
+ * The version_id
of the node to be deleted.
* @throws SubmitFilesException
*/
public void deleteFromRepository(Long uuid, Long versionID) throws ForumException {
@@ -444,7 +444,7 @@
// sort by sequence id
Set topicSet = new TreeSet(new MessageDtoComparator());
topicSet.addAll(messageDTOs);
-
+
topicsBySession.clear();
topicsBySession.addAll(topicSet);
return topicsBySession;
@@ -819,9 +819,9 @@
* Export the XML fragment for the tool's content, along with any files needed for the content.
*
* @throws DataMissingException
- * if no tool content matches the toolSessionId
+ * if no tool content matches the toolSessionId
* @throws ToolException
- * if any other error occurs
+ * if any other error occurs
*/
public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException {
@@ -866,7 +866,7 @@
* Import the XML fragment for the tool's content, along with any files needed for the content.
*
* @throws ToolException
- * if any other error occurs
+ * if any other error occurs
*/
public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion,
String toVersion) throws ToolException {
@@ -1333,14 +1333,6 @@
this.userManagementService = userManagementService;
}
- public ForumReportDAO getForumReportDAO() {
- return forumReportDAO;
- }
-
- public void setForumReportDAO(ForumReportDAO forumReportDAO) {
- this.forumReportDAO = forumReportDAO;
- }
-
public ICoreNotebookService getCoreNotebookService() {
return coreNotebookService;
}
@@ -1397,63 +1389,53 @@
* @param userId
* @return
*/
- public int getNewMessagesNum(Long messageId, Long userId) {
- return timestampDao.getNewMessagesNum(messageId, userId);
+ public int getNewMessagesNum(Message message, Long userId) {
+
+ Timestamp timestamp = timestampDao.getTimestamp(message.getUid(), userId);
+ if (timestamp == null) {
+ // if first time - show all postings as new, including root message
+ return message.getReplyNumber() + 1;
+ } else {
+ return messageSeqDao.getNumOfPostsNewerThan(message.getUid(), timestamp.getTimestamp());
+ }
}
- /**
- * Get last topic date.
- *
- * @param messageId
- * @return
- */
- public Date getLastTopicDate(Long messageId) {
- return messageDao.getLastTopicDate(messageId);
- }
-
- /**
- * Get timestamp.
- *
- * @param messageId
- * @param forumUserId
- * @return
- */
- public Timestamp getTimestamp(Long MessageId, Long forumUserId) throws PersistenceException {
- return timestampDao.getTimestamp(MessageId, forumUserId);
- }
-
- /**
- * Save timestamp.
- *
- * @param timestamp
- * @return
- */
- public void saveTimestamp(Timestamp timestamp) {
+ public void saveTimestamp(Long rootTopicId, ForumUser forumUser) {
+ Timestamp timestamp = timestampDao.getTimestamp(rootTopicId, forumUser.getUid());
+ if (timestamp != null) {
+ timestamp.setTimestamp(new Date());
+ } else {
+ timestamp = new Timestamp();
+ timestamp.setMessage(getMessage(rootTopicId));
+ timestamp.setTimestamp(new Date());
+ timestamp.setForumUser(forumUser);
+ }
timestampDao.saveOrUpdate(timestamp);
}
-
+
public void sendNotificationsOnNewPosting(Long forumId, Long sessionId, Message message) {
Forum forum = getForum(forumId);
ForumUser postAuthor = message.getCreatedBy();
String fullName = postAuthor.getLastName() + " " + postAuthor.getFirstName();
ToolSession toolSession = toolService.getToolSession(sessionId);
Long activityId = toolSession.getToolActivity().getActivityId();
ToolActivity activity = (ToolActivity) activityDAO.getActivityByActivityId(activityId, ToolActivity.class);
-
+
if (forum.isNotifyLearnersOnForumPosting()) {
List learners = lessonService.getLearnersHaveAttemptedActivity(activity);
if (learners != null && !learners.isEmpty()) {
ArrayList learnerIds = new ArrayList();
for (User learner : learners) {
learnerIds.add(learner.getUserId().longValue());
}
-
- getEventNotificationService().sendMessage(learnerIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(),
+
+ getEventNotificationService().sendMessage(learnerIds.toArray(new Long[0]),
+ DeliveryMethodMail.getInstance(),
getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }),
getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() }));
}
}
-
+
if (forum.isNotifyTeachersOnForumPosting()) {
List monitoringUsers = lessonService.getMonitorsByToolSessionId(sessionId);
if (monitoringUsers != null && !monitoringUsers.isEmpty()) {
@@ -1462,7 +1444,8 @@
monitoringUsersIds.add(monitoringUser.getUserId().longValue());
}
- getEventNotificationService().sendMessage(monitoringUsersIds.toArray(new Long[0]), DeliveryMethodMail.getInstance(),
+ getEventNotificationService().sendMessage(monitoringUsersIds.toArray(new Long[0]),
+ DeliveryMethodMail.getInstance(),
getLocalisedMessage("event.newposting.subject", new Object[] { forum.getTitle() }),
getLocalisedMessage("event.newposting.body", new Object[] { fullName, message.getBody() }));
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java
===================================================================
diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -116,34 +116,17 @@
* @param userId
* @return
*/
- public int getNewMessagesNum(Long messageId, Long userId);
+ int getNewMessagesNum(Message message, Long userId);
/**
- * Get last topic date.
+ * Saves timestamp
*
- * @param messageId
- * @return
+ * @param rootTopicId
+ * @param forumUser
*/
- public Date getLastTopicDate(Long messageId);
+ void saveTimestamp(Long rootTopicId, ForumUser forumUser);
/**
- * Get timestamp.
- *
- * @param messageId
- * @param forumUserId
- * @return
- */
- public Timestamp getTimestamp(Long MessageId, Long forumUserId);
-
- /**
- * Save timestamp.
- *
- * @param timestamp
- * @return
- */
- public void saveTimestamp(Timestamp timestamp);
-
- /**
* Create a root topic.
*
* @param forumId
@@ -355,11 +338,11 @@
public ForumUser getUserByID(Long userId);
/**
- * Update forum message report.
+ * Update report contained inside specified message.
*
- * @param report
+ * @param message specified message
*/
- public void updateReport(ForumReport report);
+ void updateContainedReport(Message message);
// ************************************************************************************
// Report Method
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java
===================================================================
diff -u -r8a8c14627918cc58fa845c2369937bc482d2f6b9 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 8a8c14627918cc58fa845c2369937bc482d2f6b9)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -258,12 +258,21 @@
}
// get all root topic to display on init page
- List rootTopics = forumService.getRootTopics(sessionId);
+ List rootTopics = forumService.getRootTopics(sessionId);
if (!forum.isAllowNewTopic()) {
// add the number post the learner has made for each topic.
- updateNumOfPosts(rootTopics, forumUser);
+ for (MessageDTO messageDTO : rootTopics) {
+ int numOfPosts = forumService.getNumOfPostsByTopic(forumUser.getUserId(), messageDTO.getMessage().getUid());
+ messageDTO.setNumOfPosts(numOfPosts);
+ }
}
request.setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, rootTopics);
+
+ // update new messages number
+ for (MessageDTO messageDTO : rootTopics) {
+ int numOfNewPosts = forumService.getNewMessagesNum(messageDTO.getMessage(), forumUser.getUid());
+ messageDTO.setNewPostingsNum(numOfNewPosts);
+ }
if (forum.isNotifyLearnersOnMarkRelease()) {
forumService.getEventNotificationService().createEvent(ForumConstants.TOOL_SIGNATURE,
@@ -277,30 +286,9 @@
IEventNotificationService.PERIODICITY_SINGLE);
}
- // displaying new postings
- for (Iterator iterator = rootTopics.iterator(); iterator.hasNext();) {
- MessageDTO messageDTO = (MessageDTO) iterator.next();
- int numOfNewPosts = forumService.getNewMessagesNum(messageDTO.getMessage().getUid(), forumUser.getUid());
- if (numOfNewPosts == -1) {
- messageDTO.setNewPostingsNum(messageDTO.getMessage().getReplyNumber() + 1);
- } else {
- messageDTO.setNewPostingsNum(numOfNewPosts);
- }
-
- messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid()));
- }
-
return mapping.findForward("success");
}
- private void updateNumOfPosts(List rootTopics, ForumUser forumUser) {
- for (Iterator iterator = rootTopics.iterator(); iterator.hasNext();) {
- MessageDTO messageDTO = (MessageDTO) iterator.next();
- int numOfPosts = forumService.getNumOfPostsByTopic(forumUser.getUserId(), messageDTO.getMessage().getUid());
- messageDTO.setNumOfPosts(numOfPosts);
- }
- }
-
/**
* Learner click "finish" button in forum page, this method will turn on session status flag for this learner.
*
@@ -484,41 +472,12 @@
sessionMap.put(ForumConstants.ATTR_HIDE_REFLECTION, hideReflection);
// Saving or updating user timestamp
- saveUserTimestamp(rootTopicId, forumUser);
+ forumService.saveTimestamp(rootTopicId, forumUser);
return mapping.findForward("success");
}
/**
- * Saving user timestamp
- *
- * @param toorTopicId
- * @param forumUser
- * @return
- */
- private void saveUserTimestamp(Long rootTopicId, ForumUser forumUser) {
- Date curDate = new Date();
- DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- try {
- curDate = dateFormat.parse(dateFormat.format(new Date()));
- } catch (ParseException pe) {
- pe.printStackTrace();
- }
-
- Timestamp timestamp = forumService.getTimestamp(rootTopicId, forumUser.getUid());
- if (timestamp != null) {
- timestamp.setTimestamp(curDate);
- forumService.saveTimestamp(timestamp);
- } else {
- timestamp = new Timestamp();
- timestamp.setMessage(forumService.getMessage(rootTopicId));
- timestamp.setTimestamp(curDate);
- timestamp.setForumUser(forumUser);
- forumService.saveTimestamp(timestamp);
- }
- }
-
- /**
* Display empty page for a new topic in forum
*
* @param mapping
@@ -581,17 +540,12 @@
request.setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, rootTopics);
request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, messageForm.getSessionMapID());
- saveUserTimestamp(message.getUid(), forumUser);
+ forumService.saveTimestamp(message.getUid(), forumUser);
+ //update new messages number
for (MessageDTO messageDTO : rootTopics) {
- int numOfNewPosts = forumService.getNewMessagesNum(messageDTO.getMessage().getUid(), forumUser.getUid());
- if (numOfNewPosts == -1) {
- messageDTO.setNewPostingsNum(messageDTO.getMessage().getReplyNumber() + 1);
- } else {
- messageDTO.setNewPostingsNum(numOfNewPosts);
- }
-
- messageDTO.setLastTopicDate(forumService.getLastTopicDate(messageDTO.getMessage().getUid()));
+ int numOfNewPosts = forumService.getNewMessagesNum(messageDTO.getMessage(), forumUser.getUid());
+ messageDTO.setNewPostingsNum(numOfNewPosts);
}
// notify learners and teachers
@@ -701,7 +655,7 @@
sessionMap.remove(ForumConstants.ATTR_ORIGINAL_MESSAGE);
// Saving or updating user timestamp
- saveUserTimestamp(rootTopicId, forumUser);
+ forumService.saveTimestamp(rootTopicId, forumUser);
// notify learners and teachers
Long forumId = (Long) sessionMap.get(ForumConstants.FORUM_ID);
@@ -841,7 +795,7 @@
request.setAttribute(ForumConstants.ATTR_SESSION_MAP_ID, messageForm.getSessionMapID());
// Saving or updating user timestamp
- saveUserTimestamp(rootTopicId, forumUser);
+ forumService.saveTimestamp(rootTopicId, forumUser);
return mapping.findForward("success");
}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java
===================================================================
diff -u -r1201a49ea259a27ba1f79763f898b8d1cdd2fa08 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 1201a49ea259a27ba1f79763f898b8d1cdd2fa08)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -774,7 +774,7 @@
report.setMark(mark);
report.setComment(markForm.getComment());
- forumService.updateTopic(msg);
+ 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)) {
Index: lams_tool_forum/web/jsps/learning/message/topiclist.jsp
===================================================================
diff -u -reea99da9ecb3f73e1fc70d6b8d393dafd3b1f1e3 -r901372af1b71238311d32a55f25ec8ba637bf5ca
--- lams_tool_forum/web/jsps/learning/message/topiclist.jsp (.../topiclist.jsp) (revision eea99da9ecb3f73e1fc70d6b8d393dafd3b1f1e3)
+++ lams_tool_forum/web/jsps/learning/message/topiclist.jsp (.../topiclist.jsp) (revision 901372af1b71238311d32a55f25ec8ba637bf5ca)
@@ -62,7 +62,7 @@
-
+
|
|