Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Attachment.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Forum.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumCondition.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumConfigItem.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/MessageRating.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.hbm.xml'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/ForumConstants.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/ForumConstants.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/ForumConstants.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,219 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum;
+
+import java.util.regex.Pattern;
+
+/**
+ * User: conradb Date: 14/06/2005 Time: 10:33:00
+ */
+public interface ForumConstants {
+ public static final String TOOL_SIGNATURE = "lafrum11";
+
+ 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;
+ public static final int SORT_BY_MARKED_ASC = 7;
+ public static final int SORT_BY_MARKED_DESC = 8;
+
+ // See LDEV652
+ // For old style (Fiona's description): The oldest topic is at the top, does not depends the reply date etc.
+ // For new style (Ernie's early desc): Most current popular forum used style: latest topics
+ // should be at the top, reply date will descide the order etc.
+ public static final boolean OLD_FORUM_STYLE = true;
+
+ public static final int STATUS_CONTENT_COPYED = 1;
+
+ public static final int SESSION_STATUS_FINISHED = 1;
+
+ public final static String FORUM_SERVICE = "forumService";
+
+ public final static String CONTENT_HANDLER = "toolContentHandler";
+
+ public static final String AUTHORING_DTO = "authoring";
+
+ public static final String AUTHORING_TOPICS_LIST = "topicList";
+
+ public static final String AUTHORING_TOPICS_INDEX = "topicIndex";
+
+ public static final String AUTHORING_TOPIC_THREAD = "topicThread";
+
+ public static final String AUTHORING_TOPIC = "topic";
+
+ public static final String AUTHORING_FORUM = "forum";
+
+ public static final String DEFAULT_TITLE = "Forum";
+
+ // TODO:hard code!!! need to read from config
+ public static final String TOOL_URL_BASE = "/lams/tool/lafrum11/";
+
+ public static final String ATTR_FORUM_ID = "forum_id";
+
+ public static final String ATTR_FORUM_UID = "forumUid";
+
+ public static final String ATTR_ALLOW_EDIT = "allowEdit";
+
+ public static final String ATTR_ALLOW_UPLOAD = "allowUpload";
+
+ public static final String ATTR_ALLOW_NEW_TOPICS = "allowNewTopics";
+
+ public static final String ATTR_ALLOW_RICH_EDITOR = "allowRichEditor";
+
+ public static final String ATTR_ALLOW_RATE_MESSAGES = "allowRateMessages";
+
+ public static final String ATTR_ALLOW_ANONYMOUS = "allowAnonym";
+
+ public static final String ATTR_MINIMUM_RATE = "minimumRate";
+
+ public static final String ATTR_MAXIMUM_RATE = "maximumRate";
+
+ public static final String ATTR_MIN_CHARACTERS = "minCharacters";
+
+ public static final String ATTR_MAX_CHARACTERS = "maxCharacters";
+
+ public static final String ATTR_LOCK_WHEN_FINISHED = "lockedWhenFinished";
+
+ public static final String TOPIC_DELETED_ATTACHMENT_LIST = "topicDeletedAttachmentList";
+
+ public static final String DELETED_AUTHORING_TOPICS_LIST = "deletedAuthoringTopicList";
+
+ 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
+
+ public static final String ATTR_SUBMISSION_DEADLINE = "submissionDeadline";
+
+ public static final String ATTR_SUBMISSION_DEADLINE_DATESTRING = "submissionDateString";
+
+ public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed";
+
+ // used in monitoring
+ public static final String TITLE = "title";
+
+ public static final String INSTRUCTIONS = "instructions";
+
+ public static final String PAGE_EDITABLE = "isPageEditable";
+
+ public static final String ATTR_ROOT_TOPIC_UID = "rootUid";
+
+ public static final String ATTR_FORUM_TITLE = "title";
+
+ public static final String ATTR_FORUM_INSTRCUTION = "instruction";
+
+ public static final String ATTR_TOOL_CONTENT_TOPICS = "ToolContentTopicList";
+
+ public static final String ATTR_TOPIC = "topic";
+
+ public static final String ATTR_USER = "user";
+
+ public static final String ATTR_USER_UID = "userUid";
+
+ public static final String ATTR_USER_ID = "userId";
+
+ public static final String ATTR_PORTRAIT_ID = "portraitId";
+
+ public static final String ATTR_MESSAGES = "messages";
+
+ public static final String PARAM_UPDATE_MODE = "updateMode";
+
+ public static final String ATTR_NO_MORE_POSTS = "noMorePosts";
+
+ public static final String ATTR_NUM_OF_POSTS = "numOfPosts";
+
+ public static final String ATTR_NO_MORE_RATINGSS = "noMoreRatings";
+
+ public static final String ATTR_NUM_OF_RATINGS = "numOfRatings";
+
+ public static final String ATTR_IS_MIN_RATINGS_COMPLETED = "isMinRatingsCompleted";
+
+ public static final String ATTR_SESSION_MAP_ID = "sessionMapID";
+
+ public static final String ATTR_PARENT_TOPIC_ID = "parentID";
+
+ // used when replying message LDEV-1305
+ public static final String ATTR_ORIGINAL_MESSAGE = "originalMessage";
+
+ public static final String ATTR_TOPIC_ID = "topicID";
+
+ public static final String ATTR_REFLECTION_ON = "reflectOn";
+
+ public static final String ATTR_REFLECTION_INSTRUCTION = "reflectInstructions";
+
+ public static final String DELETED_ATTACHMENT_LIST = "deletedAttachmentList";
+
+ public static final String ATTR_REFLECTION_ENTRY = "reflectEntry";
+
+ public static final String ATTR_MINIMUM_REPLY = "minimumReply";
+
+ public static final String ATTR_MAXIMUM_REPLY = "maximumReply";
+
+ public static final String MARK_UPDATE_FROM_USER = "listMarks";
+
+ public static final String MARK_UPDATE_FROM_FORUM = "viewForum";
+
+ public static final String ATTR_HIDE_REFLECTION = "hideReflection";
+
+ public static final String EVENT_NAME_NOTIFY_LEARNERS_ON_MARK_RELEASE = "notify_learners_on_mark_release";
+
+ // for condition management
+ public static final String ATTR_CONDITION_SET = "conditionList";
+ public static final String PARAM_ORDER_ID = "orderId";
+ public static final String ATTR_DELETED_CONDITION_LIST = "deletedConditionList";
+
+ public static final String TOPIC_DATE_TO_ANSWERS_DEFINITION_NAME = "topic.name.to.answers.output.definition.forum";
+ public static final String ALL_USERS_ANSWERS_DEFINITION_NAME = "all.users.answers.definition.forum";
+ public final static String LEARNER_NUM_POSTS_DEFINITION_NAME = "learner.number.of.posts";
+
+ public static final String ANSWERS_SEPARATOR = " ";
+ // a forward key
+ public static final String SUCCESS = "success";
+
+ public static final String WORD_REGEX = "\\w+";
+
+ public static final short SUBJECT_WORD_COUNT = 3;
+
+ public static final int PATTERN_MATCHING_OPTIONS = Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE
+ | Pattern.MULTILINE;
+
+ // for paging long topics & inlining reply
+ public static final String PAGE_LAST_ID = "pageLastId";
+ public static final String PAGE_SIZE = "size";
+ public static final int DEFAULT_PAGE_SIZE = 50;
+ public static final String ATTR_MESS_ID = "messageUid";
+ public static final String ATTR_THREAD_ID = "threadUid";
+ public static final String ATTR_NO_MORE_PAGES = "noMorePages";
+}
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IAttachmentDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IAttachmentDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IAttachmentDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,10 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+
+public interface IAttachmentDAO extends IBaseDAO {
+
+ Attachment getById(Long attachmentId);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,29 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+
+public interface IForumDAO extends IBaseDAO {
+
+ void saveOrUpdate(Forum forum);
+
+ Forum getById(Long forumId);
+
+ /**
+ * NOTE: before call this method, must be sure delete all messages in this forum. Example code like this:
+ *
+ *
+ *
+ * messageDao.deleteForumMessage(forum.getUuid());
+ *
+ *
+ *
+ * @param forum
+ */
+ void delete(Forum forum);
+
+ Forum getByContentId(Long contentID);
+
+ void deleteCondition(ForumCondition condition);
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumToolSessionDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumToolSessionDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumToolSessionDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,20 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+
+public interface IForumToolSessionDAO extends IBaseDAO {
+
+ ForumToolSession getBySessionId(Long sessionId);
+
+ void saveOrUpdate(ForumToolSession session);
+
+ List getByContentId(Long contentID);
+
+ void delete(Long sessionId);
+
+ void delete(ForumToolSession session);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumUserDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumUserDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IForumUserDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,28 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.notebook.service.ICoreNotebookService;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
+
+public interface IForumUserDAO extends IBaseDAO {
+
+ List getBySessionId(Long sessionID);
+
+ void save(ForumUser forumUser);
+
+ ForumUser getByUserIdAndSessionId(Long userId, Long sessionId);
+
+ ForumUser getByUserId(Long userId);
+
+ ForumUser getByUid(Long userUid);
+
+ int getCountUsersBySession(Long sessionId, String searchString);
+
+ List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting, String searchString,
+ boolean getNotebookEntries, ICoreNotebookService coreNotebookService,
+ IUserManagementService userManagementService);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,76 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+
+public interface IMessageDAO extends IBaseDAO {
+
+ void saveOrUpdate(Message message);
+
+ void update(Message message);
+
+ Message getByIdForUpdate(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 message posted by author role in a special forum.
+ *
+ * @param forumUid
+ * @return
+ */
+ List getTopicsFromAuthor(Long forumUid);
+
+ void delete(Long uid);
+
+ /**
+ * 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 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);
+
+ /** Get the create date of the first message left by this user in the session and the last
+ * message left.
+ * @param userUid
+ * @return
+ */
+ Object[] getDateRangeOfMessages(Long userUid);
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageRatingDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageRatingDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageRatingDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,54 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dto.AverageRatingDTO;
+import org.lamsfoundation.lams.tool.forum.model.MessageRating;
+
+public interface IMessageRatingDAO extends IBaseDAO {
+
+ /**
+ * Return responseRating by the given imageUid and userId.
+ *
+ * @param messageId
+ * @param userId
+ * @return
+ */
+ MessageRating getRatingByMessageAndUser(Long messageId, Long userId);
+
+ /**
+ * Return list of responseRating by the the given imageUid.
+ *
+ * @param messageId
+ * @param userId
+ * @return
+ */
+ List getRatingsByMessage(Long messageId);
+
+ /**
+ * Returns rating statistics by particular message
+ *
+ * @param messageId
+ * @return
+ */
+ AverageRatingDTO getAverageRatingDTOByMessage(Long messageId);
+
+ /**
+ * Return total number of posts done by current user in this forum activity
+ *
+ * @param userUid
+ * @param forumUid
+ * @return
+ */
+ int getNumOfRatingsByUserAndForum(Long userUid, Long forumUid);
+
+ /**
+ * Generic method to save an object - handles both update and insert.
+ *
+ * @param o
+ * the object to save
+ */
+ void saveObject(Object o);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageSeqDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageSeqDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/IMessageSeqDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,38 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import java.util.Date;
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
+
+public interface IMessageSeqDAO extends IBaseDAO {
+
+ MessageSeq getById(Long messageSeqId);
+
+ MessageSeq getByMessageId(Long messageId);
+
+ List getThreadByThreadId(final Long threadMessageId);
+
+ List getNextThreadByThreadId(final Long rootTopicId, final Long previousThreadMessageId);
+
+ List getCompleteTopic(Long rootTopicId);
+
+ MessageSeq getByTopicId(Long messageId);
+
+ void save(MessageSeq msgSeq);
+
+ void deleteByTopicId(Long topicUid);
+
+ int getNumOfPostsByTopic(Long userID, Long topicID);
+
+ /**
+ * Get number of messages newer than specified date.
+ *
+ * @param rootMessageId
+ * @param userId
+ * @return
+ */
+ int getNumOfPostsNewerThan(Long rootMessageId, Date date);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/ITimestampDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/ITimestampDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/ITimestampDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,25 @@
+package org.lamsfoundation.lams.tool.forum.dao;
+
+import org.lamsfoundation.lams.dao.IBaseDAO;
+import org.lamsfoundation.lams.tool.forum.model.Timestamp;
+
+public interface ITimestampDAO extends IBaseDAO {
+
+ /**
+ * Save timestamp.
+ *
+ * @param timestamp
+ * @return
+ */
+ void saveOrUpdate(Timestamp timestamp);
+
+ /**
+ * Get timestamp.
+ *
+ * @param messageId
+ * @param forumUserId
+ * @return
+ */
+ Timestamp getTimestamp(Long messageId, Long forumUserId);
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/AttachmentDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/AttachmentDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/AttachmentDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,45 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IAttachmentDAO;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+import org.springframework.stereotype.Repository;
+
+/**
+ * User: conradb
+ * Date: 7/06/2005
+ * Time: 12:23:49
+ */
+@Repository
+public class AttachmentDao extends LAMSBaseDAO implements IAttachmentDAO {
+
+ @Override
+ public Attachment getById(final Long attachmentId) {
+ Attachment entity = (Attachment) getSession().get(Attachment.class, attachmentId);
+ return entity;
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,78 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IForumDAO;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.springframework.stereotype.Repository;
+
+/**
+ * ForumDao
+ *
+ * @author conradb
+ *
+ *
+ */
+@Repository
+public class ForumDao extends LAMSBaseDAO implements IForumDAO {
+ private static final String FIND_FORUM_BY_CONTENTID = "from Forum forum where forum.contentId=?";
+
+ @Override
+ public void saveOrUpdate(Forum forum) {
+ forum.updateModificationData();
+ this.getSession().saveOrUpdate(forum);
+ }
+
+ @Override
+ public Forum getById(Long forumId) {
+ return (Forum) getSession().get(Forum.class, forumId);
+ }
+
+ @Override
+ public void delete(Forum forum) {
+ this.getSession().delete(forum);
+ }
+
+ @Override
+ public Forum getByContentId(Long contentID) {
+ List list = doFind(ForumDao.FIND_FORUM_BY_CONTENTID, contentID);
+ if (list != null && list.size() > 0) {
+ return (Forum) list.get(0);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public void deleteCondition(ForumCondition condition) {
+ if (condition != null && condition.getConditionId() != null) {
+ this.getSession().delete(condition);
+ }
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumToolSessionDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumToolSessionDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumToolSessionDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,74 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IForumToolSessionDAO;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.springframework.stereotype.Repository;
+
+@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";
+
+ @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);
+ }
+
+ @Override
+ public void saveOrUpdate(ForumToolSession session) {
+ this.getSession().saveOrUpdate(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/dao/hibernate/ForumUserDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumUserDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/ForumUserDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,221 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.List;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.SQLQuery;
+import org.hibernate.type.IntegerType;
+import org.hibernate.type.StringType;
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.notebook.service.ICoreNotebookService;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
+import org.lamsfoundation.lams.tool.forum.dao.IForumUserDAO;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
+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=?";
+
+ @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
+ @SuppressWarnings("unchecked")
+ /**
+ * Will return List<[ForumUser, String], [ForumUser, String], ... , [ForumUser, String]>
+ * where the String is the notebook entry. No notebook entries needed? Will return "null" in their place.
+ */
+ public List getUsersForTablesorter(final Long sessionId, int page, int size, int sorting,
+ String searchString, boolean getNotebookEntries, ICoreNotebookService coreNotebookService,
+ IUserManagementService userManagementService) {
+ String sortingOrder;
+ boolean sortOnMessage;
+ switch (sorting) {
+ case ForumConstants.SORT_BY_USER_NAME_ASC:
+ sortingOrder = "user.last_name ASC, user.first_name ASC";
+ sortOnMessage = false;
+ break;
+ case ForumConstants.SORT_BY_USER_NAME_DESC:
+ sortingOrder = "user.last_name DESC, user.first_name DESC";
+ sortOnMessage = false;
+ break;
+ case ForumConstants.SORT_BY_LAST_POSTING_ASC:
+ sortingOrder = " MAX(message.update_date) ASC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_LAST_POSTING_DESC:
+ sortingOrder = " MAX(message.update_date) DESC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_NUMBER_OF_POSTS_ASC:
+ sortingOrder = " COUNT(message.uid) ASC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_NUMBER_OF_POSTS_DESC:
+ sortingOrder = " COUNT(message.uid) DESC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_MARKED_ASC:
+ sortingOrder = " AVG(report.mark) ASC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_MARKED_DESC:
+ sortingOrder = " AVG(report.mark) DESC";
+ sortOnMessage = true;
+ break;
+ case ForumConstants.SORT_BY_NO:
+ default:
+ sortingOrder = "user.uid";
+ sortOnMessage = false;
+ }
+
+ // If the session uses notebook, then get the SQL to join across to get the entries
+ String[] notebookEntryStrings = null;
+ if (getNotebookEntries) {
+ notebookEntryStrings = coreNotebookService.getNotebookEntrySQLStrings(sessionId.toString(),
+ ForumConstants.TOOL_SIGNATURE, "user.user_id");
+ }
+
+ String[] portraitStrings = userManagementService.getPortraitSQL("user.user_id");
+
+ // Basic select for the user records
+ StringBuilder queryText = new StringBuilder();
+
+ queryText.append("SELECT user.* ");
+ queryText.append(notebookEntryStrings != null ? notebookEntryStrings[0] : ", NULL notebookEntry");
+ queryText.append(portraitStrings[0]);
+ queryText.append(" FROM tl_lafrum11_forum_user user ");
+ queryText.append(portraitStrings[1]);
+ queryText.append(
+ " JOIN tl_lafrum11_tool_session session ON user.session_id = session.uid and session.session_id = :sessionId");
+
+ if (sortOnMessage) {
+ queryText.append(" LEFT JOIN tl_lafrum11_message message ON message.create_by = user.uid");
+ if (sorting == ForumConstants.SORT_BY_MARKED_ASC || sorting == ForumConstants.SORT_BY_MARKED_DESC) {
+ queryText.append(" LEFT JOIN tl_lafrum11_report report ON report.uid = message.report_id");
+ }
+ }
+
+ // If filtering by name add a name based where clause (LDEV-3779: must come before the Notebook JOIN statement)
+ buildNameSearch(queryText, searchString);
+
+ // If using notebook, add the notebook join
+ if (notebookEntryStrings != null) {
+ queryText.append(notebookEntryStrings[1]);
+ }
+
+ if (sortOnMessage) {
+ queryText.append(" GROUP BY user.user_id");
+ }
+
+ // Now specify the sort based on the switch statement above.
+ queryText.append(" ORDER BY " + sortingOrder);
+
+ SQLQuery query = getSession().createSQLQuery(queryText.toString());
+ query.addEntity("user", ForumUser.class).addScalar("notebookEntry", StringType.INSTANCE)
+ .addScalar("portraitId", IntegerType.INSTANCE)
+ .setLong("sessionId", sessionId.longValue()).setFirstResult(page * size).setMaxResults(size);
+ return query.list();
+
+ }
+
+ private void buildNameSearch(StringBuilder queryText, String searchString) {
+ if (!StringUtils.isBlank(searchString)) {
+ String[] tokens = searchString.trim().split("\\s+");
+ for (String token : tokens) {
+ String escToken = StringEscapeUtils.escapeSql(token);
+ queryText.append(" AND (user.first_name LIKE '%").append(escToken)
+ .append("%' OR user.last_name LIKE '%").append(escToken).append("%' OR user.login_name LIKE '%")
+ .append(escToken).append("%')");
+ }
+ }
+ }
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ public int getCountUsersBySession(final Long sessionId, String searchString) {
+
+ StringBuilder queryText = new StringBuilder("SELECT count(*) FROM tl_lafrum11_forum_user user ");
+ queryText.append(
+ " JOIN tl_lafrum11_tool_session session ON user.session_id = session.uid and session.session_id = :sessionId");
+ buildNameSearch(queryText, searchString);
+
+ List list = getSession().createSQLQuery(queryText.toString()).setLong("sessionId", sessionId.longValue())
+ .list();
+ if (list == null || list.size() == 0) {
+ return 0;
+ }
+ return ((Number) list.get(0)).intValue();
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,135 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.List;
+
+import org.hibernate.LockOptions;
+import org.hibernate.SQLQuery;
+import org.hibernate.type.StringType;
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageDAO;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+import org.springframework.stereotype.Repository;
+
+/**
+ * @author conradb
+ */
+@Repository
+public class MessageDao extends LAMSBaseDAO implements IMessageDAO {
+ 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() + " m where m.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_DATES_BY_USER_SESSION = "SELECT MIN(create_date) start_date, MAX(create_date) end_date "
+ + " FROM tl_lafrum11_message WHERE create_by = :userUid";
+
+ @Override
+ public void saveOrUpdate(Message message) {
+ this.getSession().saveOrUpdate(message);
+ }
+
+ @Override
+ public void update(Message message) {
+ this.getSession().saveOrUpdate(message);
+ }
+
+ @Override
+ public Message getByIdForUpdate(Long messageId) {
+ return (Message) getSession().get(Message.class, messageId, LockOptions.UPGRADE);
+ }
+
+ @Override
+ public Message getById(Long messageId) {
+ return (Message) getSession().get(Message.class, messageId);
+ }
+
+ @Override
+ public List getRootTopics(Long sessionId) {
+ return (List) this.doFind(SQL_QUERY_FIND_ROOT_TOPICS, sessionId);
+ }
+
+ @Override
+ public List getTopicsFromAuthor(Long forumUid) {
+ return (List) this.doFind(SQL_QUERY_FIND_TOPICS_FROM_AUTHOR, forumUid);
+ }
+
+ @Override
+ public void delete(Long uid) {
+ Message msg = getById(uid);
+ if (msg != null) {
+ this.getSession().delete(msg);
+ }
+ }
+
+ @Override
+ public List getChildrenTopics(Long parentId) {
+ return (List) this.doFind(SQL_QUERY_FIND_CHILDREN, parentId);
+ }
+
+ @Override
+ public List getByUserAndSession(Long userUid, Long sessionId) {
+ return (List) this.doFind(SQL_QUERY_BY_USER_SESSION, new Object[] { userUid, sessionId });
+ }
+
+ @Override
+ public List getBySession(Long sessionId) {
+ return (List) this.doFind(SQL_QUERY_BY_SESSION, 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 {
+ return 0;
+ }
+ }
+
+ @Override
+ public Object[] getDateRangeOfMessages(Long userUid) {
+ SQLQuery query = (SQLQuery) getSession().createSQLQuery(SQL_QUERY_DATES_BY_USER_SESSION.toString())
+ .setLong("userUid", userUid);
+ Object[] values = (Object[]) query.list().get(0);
+ return values;
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageRatingDAO.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageRatingDAO.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageRatingDAO.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,98 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.text.NumberFormat;
+import java.util.List;
+import java.util.Locale;
+
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageRatingDAO;
+import org.lamsfoundation.lams.tool.forum.dto.AverageRatingDTO;
+import org.lamsfoundation.lams.tool.forum.model.MessageRating;
+import org.springframework.stereotype.Repository;
+
+/**
+ * DAO interface for MessageRating
..
+ *
+ * @author Andrey Balan
+ * @see org.lamsfoundation.lams.tool.forum.model.MessageRating
+ */
+@Repository
+public class MessageRatingDAO extends LAMSBaseDAO implements IMessageRatingDAO {
+
+ private static final String FIND_BY_MESSAGE_AND_USER = "from " + MessageRating.class.getName()
+ + " as r where r.user.userId = ? and r.message.uid=?";
+
+ private static final String FIND_BY_MESSAGE_ID = "from " + MessageRating.class.getName()
+ + " as r where r.message.uid=?";
+
+ private static final String FIND_AVERAGE_RATING_BY_MESSAGE = "SELECT AVG(r.rating), COUNT(*) from "
+ + MessageRating.class.getName() + " as r where r.message.uid=?";
+
+ private static final String FIND_COUNT_RATING_BY_USER_AND_FORUM = "SELECT COUNT(*) from "
+ + MessageRating.class.getName() + " as r where r.user.uid = ? and r.message.forum.uid=?";
+
+ @Override
+ public MessageRating getRatingByMessageAndUser(Long messageId, Long userId) {
+ List list = doFind(FIND_BY_MESSAGE_AND_USER, new Object[] { userId, messageId });
+ if (list == null || list.size() == 0) {
+ return null;
+ }
+ return (MessageRating) list.get(0);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public List getRatingsByMessage(Long messageId) {
+ return (List) doFind(FIND_BY_MESSAGE_ID, messageId);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public AverageRatingDTO getAverageRatingDTOByMessage(Long messageId) {
+ List list = (List) doFind(FIND_AVERAGE_RATING_BY_MESSAGE, new Object[] { messageId });
+ Object[] results = list.get(0);
+
+ Object averageRatingObj = (results[0] == null) ? 0 : results[0];
+ NumberFormat numberFormat = NumberFormat.getInstance(Locale.US);
+ numberFormat.setMaximumFractionDigits(1);
+ String averageRating = numberFormat.format(averageRatingObj);
+
+ String numberOfVotes = (results[1] == null) ? "0" : String.valueOf(results[1]);
+ return new AverageRatingDTO(averageRating, numberOfVotes);
+ }
+
+ @Override
+ public int getNumOfRatingsByUserAndForum(Long userUid, Long forumUid) {
+ List list = this.doFind(FIND_COUNT_RATING_BY_USER_AND_FORUM, new Object[] { userUid, forumUid });
+ 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/dao/hibernate/MessageSeqDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageSeqDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/MessageSeqDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,151 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.Date;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.hibernate.Query;
+import org.hibernate.criterion.Restrictions;
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageSeqDAO;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public class MessageSeqDao extends LAMSBaseDAO implements IMessageSeqDAO {
+ private static final String SQL_QUERY_FIND_TOPIC_ID = "from " + MessageSeq.class.getName()
+ + " where message_uid = ?";
+ private static final String SQL_QUERY_FIND_NEXT_THREAD_TOP = "from " + MessageSeq.class.getName()
+ + " where root_message_uid = :rootTopicId and message.uid > :previousThreadMessageId and message_level = 1";
+ private static final String SQL_QUERY_FIND_NEXT_THREAD_MESSAGES = "from " + MessageSeq.class.getName()
+ + " where root_message_uid = ? and thread_message_uid = ? and message_level > 1";
+ private static final String SQL_QUERY_GET_COMPLETE_THREAD = "from " + MessageSeq.class.getName()
+ + " where thread_message_uid = ?";
+ private static final String SQL_QUERY_GET_SEQ_BY_MESSAGE = "from " + MessageSeq.class.getName()
+ + " where message_uid = ?";
+
+ 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 > ?";
+
+ private static final Logger log = Logger.getLogger(MessageSeqDao.class);
+
+ @Override
+ public MessageSeq getById(Long messageSeqId) {
+ return (MessageSeq) find(MessageSeq.class, messageSeqId);
+ }
+
+ @Override
+ public MessageSeq getByMessageId(Long messageId) {
+ List list = doFind(SQL_QUERY_GET_SEQ_BY_MESSAGE, messageId);
+ if (list != null) {
+ if (list.size() > 1) {
+ log.warn("Looking up message seq by message id=" + messageId + ". More than one message seq found!"
+ + list.toString());
+ }
+ return (MessageSeq) list.get(0);
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public List getThreadByThreadId(final Long threadMessageId) {
+ return doFind(SQL_QUERY_GET_COMPLETE_THREAD, new Object[] { threadMessageId });
+ }
+
+ @Override
+ public List getNextThreadByThreadId(final Long rootTopicId, final Long previousThreadMessageId) {
+ Query queryObject = getSession().createQuery(SQL_QUERY_FIND_NEXT_THREAD_TOP)
+ .setParameter("rootTopicId", rootTopicId)
+ .setParameter("previousThreadMessageId", previousThreadMessageId).setMaxResults(1);
+ List list = queryObject.list();
+ if (list != null && list.size() > 0) {
+ MessageSeq threadTop = ((MessageSeq) list.get(0));
+ List all = doFind(SQL_QUERY_FIND_NEXT_THREAD_MESSAGES,
+ new Object[] { rootTopicId, threadTop.getMessage().getUid() });
+ all.add(threadTop);
+ return all;
+ }
+ return list;
+ }
+
+ @Override
+ public List getCompleteTopic(Long rootTopicId) {
+ return getSession().createCriteria(MessageSeq.class).add(Restrictions.eq("rootMessage.uid", rootTopicId))
+ .list();
+ }
+
+ @Override
+ public MessageSeq getByTopicId(Long messageId) {
+ List list = doFind(SQL_QUERY_FIND_TOPIC_ID, messageId);
+ if (list == null || list.isEmpty()) {
+ return null;
+ }
+ return (MessageSeq) list.get(0);
+ }
+
+ @Override
+ public void save(MessageSeq msgSeq) {
+ getSession().save(msgSeq);
+ }
+
+ @Override
+ public void deleteByTopicId(Long topicUid) {
+ MessageSeq seq = getByTopicId(topicUid);
+ if (seq != null) {
+ getSession().delete(seq);
+ }
+ }
+
+ @Override
+ public int getNumOfPostsByTopic(Long userID, Long topicID) {
+ List list = doFind(SQL_QUERY_NUM_POSTS_BY_TOPIC, new Object[] { userID, topicID });
+ if (list != null && list.size() > 0) {
+ return ((Number) list.get(0)).intValue();
+ } else {
+ return 0;
+ }
+ }
+
+ @Override
+ public int getNumOfPostsNewerThan(Long rootMessageId, Date date) {
+
+ // user views forum not the first time
+ List messages = doFind(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/dao/hibernate/TimestampDao.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/TimestampDao.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dao/hibernate/TimestampDao.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,59 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.dao.hibernate;
+
+import java.util.List;
+
+import org.lamsfoundation.lams.dao.hibernate.LAMSBaseDAO;
+import org.lamsfoundation.lams.tool.forum.dao.ITimestampDAO;
+import org.lamsfoundation.lams.tool.forum.model.Timestamp;
+import org.springframework.stereotype.Repository;
+
+/**
+ * TimestampDao
+ *
+ * @author ruslan
+ */
+@Repository
+public class TimestampDao extends LAMSBaseDAO implements ITimestampDAO {
+
+ private static final String GET_TIMESTAMP_BY_MESSAGE_AND_USER = " FROM " + Timestamp.class.getName()
+ + " ts WHERE ts.message.uid = ? AND ts.forumUser.uid = ? ";
+
+ public void saveOrUpdate(Timestamp timestamp) {
+ this.getSession().saveOrUpdate(timestamp);
+ }
+
+ @Override
+ public Timestamp getTimestamp(Long messageId, Long forumUserId) {
+ List timestampList = this.doFind(GET_TIMESTAMP_BY_MESSAGE_AND_USER, new Object[] { messageId, forumUserId });
+ if (timestampList != null && timestampList.size() > 0) {
+ return (Timestamp) (timestampList.get(0));
+ } else {
+ return null;
+ }
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/ForumConditionDTO.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/ForumConditionDTO.java (.../ForumConditionDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/ForumConditionDTO.java (.../ForumConditionDTO.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -27,8 +27,8 @@
import java.util.TreeSet;
import org.lamsfoundation.lams.learningdesign.dto.TextSearchConditionDTO;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumCondition;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.tool.forum.util.ConditionTopicComparator;
public class ForumConditionDTO extends TextSearchConditionDTO {
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java (.../MessageDTO.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -29,8 +29,8 @@
import java.util.Iterator;
import java.util.List;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumReport;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.ForumReport;
+import org.lamsfoundation.lams.tool.forum.model.Message;
public class MessageDTO {
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java (.../SessionDTO.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/SessionDTO.java (.../SessionDTO.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -26,8 +26,8 @@
import java.util.List;
import java.util.Map;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumToolSession;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
/**
* @author Anthony Sukkar
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java (.../UserDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/UserDTO.java (.../UserDTO.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,6 +1,6 @@
package org.lamsfoundation.lams.tool.forum.dto;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
public class UserDTO {
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml (.../forumApplicationContext.xml) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -17,53 +17,53 @@
-
+
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.ForumUserDao">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.AttachmentDao">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.MessageDao">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.TimestampDao">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.MessageSeqDao">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.MessageRatingDAO">
+ class="org.lamsfoundation.lams.tool.forum.dao.hibernate.ForumToolSessionDao">
@@ -152,9 +152,6 @@
-
- false
-
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Attachment.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,190 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.log4j.Logger;
+
+/**
+ * @author conradb
+ *
+ * A Wrapper class for uploaded files. An Attachment cannot exist independently
+ * and must belong to a Forum.
+ */
+@Entity
+@Table(name = "tl_lafrum11_attachment")
+public class Attachment implements Cloneable, Comparable {
+ private static final Logger log = Logger.getLogger(Attachment.class);
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column(name = "file_uuid")
+ private Long fileUuid;
+
+ @Column(name = "file_version_id")
+ private Long fileVersionId;
+
+ @Column(name = "file_type")
+ private String fileType;
+
+ @Column(name = "file_name")
+ private String fileName;
+
+ @Column(name = "create_date")
+ private Date created;
+
+ @ManyToOne
+ @JoinColumn(name = "message_uid")
+ private Message message;
+
+ //Default contruction method
+ public Attachment() {
+
+ }
+
+// **********************************************************
+ // Function method for Attachment
+// **********************************************************
+ @Override
+ public Object clone() {
+ Object obj = null;
+ try {
+ obj = super.clone();
+ ((Attachment) obj).setUid(null);
+ } catch (CloneNotSupportedException e) {
+ log.error("When clone " + Attachment.class + " failed");
+ }
+
+ return obj;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Attachment)) {
+ return false;
+ }
+
+ final Attachment genericEntity = (Attachment) o;
+
+ return new EqualsBuilder().append(this.uid, genericEntity.uid)
+ .append(this.fileVersionId, genericEntity.fileVersionId).append(this.fileName, genericEntity.fileName)
+ .append(this.fileType, genericEntity.fileType).append(this.created, genericEntity.created).isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(uid).append(fileVersionId).append(fileName).append(fileType).append(created)
+ .toHashCode();
+ }
+
+// **********************************************************
+ // get/set methods
+// **********************************************************
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ public Long getFileVersionId() {
+ return fileVersionId;
+ }
+
+ public void setFileVersionId(Long version) {
+ this.fileVersionId = version;
+ }
+
+ public String getFileType() {
+ return fileType;
+ }
+
+ public void setFileType(String type) {
+ this.fileType = type;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String name) {
+ this.fileName = name;
+ }
+
+ public Long getFileUuid() {
+ return fileUuid;
+ }
+
+ public void setFileUuid(Long uuid) {
+ this.fileUuid = uuid;
+ }
+
+ public Date getCreated() {
+ return created;
+ }
+
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ public Message getMessage() {
+ return message;
+ }
+
+ public void setMessage(Message message) {
+ this.message = message;
+ }
+
+
+ @Override
+ public int compareTo(Attachment o) {
+ if (o == null) {
+ return 1;
+ }
+ if (this.getUid() != null && o.getUid() != null) {
+ return (int) (this.getUid() - o.getUid());
+ } else {
+ return this.getUid() == null ? -1 : 1;
+ }
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Forum.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Forum.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Forum.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,699 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator;
+
+/**
+ * Forum
+ *
+ * @author conradb
+ */
+@Entity
+@Table(name = "tl_lafrum11_forum")
+public class Forum implements Cloneable {
+
+ private static final Logger log = Logger.getLogger(Forum.class);
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ // tool contentID
+ @Column(name = "content_id")
+ private Long contentId;
+
+ @Column
+ private String title;
+
+ @Column(name = "lock_on_finished")
+ private boolean lockWhenFinished;
+
+ @Column(name = "allow_anonym")
+ private boolean allowAnonym;
+
+ @Column(name = "allow_edit")
+ private boolean allowEdit;
+
+ @Column(name = "allow_new_topic")
+ private boolean allowNewTopic;
+
+ @Column(name = "allow_upload")
+ private boolean allowUpload;
+
+ @Column(name = "allow_rate_messages")
+ private boolean allowRateMessages;
+
+ @Column(name = "maximum_reply")
+ private int maximumReply;
+
+ @Column(name = "minimum_reply")
+ private int minimumReply;
+
+ @Column(name = "maximum_rate")
+ private int maximumRate;
+
+ @Column(name = "minimum_rate")
+ private int minimumRate;
+
+ @Column(name = "allow_rich_editor")
+ private boolean allowRichEditor;
+
+ @Column
+ private String instructions;
+
+ @Column(name = "define_later")
+ private boolean defineLater;
+
+ @Column(name = "content_in_use")
+ private boolean contentInUse;
+
+ @Column(name = "create_date")
+ private Date created;
+
+ @Column(name = "update_date")
+ private Date updated;
+
+ /* TODO: I don't think this is going to work as the create_by column is in this table and hibernate will expect it in the user table.
+ * Probably need to revert to a hacked many - to - one
+ * @ManyToOne
+ * @JoinColumn(name = "create_by")
+ */
+ @OneToOne(fetch = FetchType.EAGER)
+ @JoinColumn(name = "create_by")
+ private ForumUser createdBy;
+
+ // TODO why doesn't this have cascades. Why do we remove the messages manually?
+ @OneToMany(mappedBy = "forum")
+ @OrderBy("created DESC")
+ private Set messages;
+
+ @Column(name = "min_characters")
+ private int minCharacters;
+
+ @Column(name = "limited_input_flag")
+ private boolean limitedMinCharacters;
+
+ @Column(name = "limited_of_chars")
+ private int maxCharacters;
+
+ @Column(name = "limited_min_characters")
+ private boolean limitedMaxCharacters;
+
+ @Column(name = "reflect_on_activity")
+ private boolean reflectOnActivity;
+
+ @Column(name = "reflect_instructions")
+ private String reflectInstructions;
+
+ @Column(name = "mark_release_notify")
+ private boolean notifyLearnersOnMarkRelease;
+
+ @Column(name = "notify_learners_on_forum_posting")
+ private boolean notifyLearnersOnForumPosting;
+
+ @Column(name = "notify_teachers_on_forum_posting")
+ private boolean notifyTeachersOnForumPosting;
+
+ @Column(name = "submission_deadline")
+ private Date submissionDeadline;
+
+ @OneToMany(cascade = CascadeType.ALL)
+ @JoinColumn(name = "content_uid")
+ private Set conditions;
+
+ /**
+ * Default construction method.
+ *
+ */
+ public Forum() {
+ messages = new HashSet();
+ conditions = new TreeSet(new TextSearchConditionComparator());
+ }
+
+ // **********************************************************
+ // Function method for Forum
+ // **********************************************************
+ @Override
+ public Object clone() {
+
+ Forum forum = null;
+ try {
+ forum = (Forum) super.clone();
+ forum.setUid(null);
+ // clone message
+ if (messages != null) {
+ Iterator iter = messages.iterator();
+ Set set = new HashSet();
+ while (iter.hasNext()) {
+ set.add(Message.newInstance((Message) iter.next()));
+ }
+ forum.messages = set;
+ }
+ if (getConditions() != null) {
+ Set conditionsCopy = new TreeSet(new TextSearchConditionComparator());
+ for (ForumCondition condition : getConditions()) {
+ conditionsCopy.add(condition.clone(forum));
+ }
+ forum.setConditions(conditionsCopy);
+ }
+
+ } catch (CloneNotSupportedException e) {
+ Forum.log.error("When clone " + Forum.class + " failed");
+ }
+
+ return forum;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Forum)) {
+ return false;
+ }
+
+ final Forum genericEntity = (Forum) o;
+
+ return new EqualsBuilder().append(uid, genericEntity.uid).append(title, genericEntity.title)
+ .append(instructions, genericEntity.instructions).append(created, genericEntity.created)
+ .append(updated, genericEntity.updated).append(createdBy, genericEntity.createdBy).isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(uid).append(title).append(instructions).append(created).append(updated)
+ .append(createdBy).toHashCode();
+ }
+
+ // **********************************************************
+ // get/set methods
+ // **********************************************************
+ /**
+ * Returns the object's creation date
+ *
+ * @return date
+ *
+ */
+ public Date getCreated() {
+ return created;
+ }
+
+ /**
+ * Sets the object's creation date
+ *
+ * @param created
+ */
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ /**
+ * Returns the object's date of last update
+ *
+ * @return date updated
+ *
+ */
+ public Date getUpdated() {
+ return updated;
+ }
+
+ /**
+ * Sets the object's date of last update
+ *
+ * @param updated
+ */
+ public void setUpdated(Date updated) {
+ this.updated = updated;
+ }
+
+ /**
+ * @return Returns the userid of the user who created the Forum.
+ *
+ *
+ *
+ */
+ public ForumUser getCreatedBy() {
+ return createdBy;
+ }
+
+ /**
+ * @param createdBy
+ * The userid of the user who created this Forum.
+ */
+ public void setCreatedBy(ForumUser createdBy) {
+ this.createdBy = createdBy;
+ }
+
+ /**
+ *
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ * @return Returns the title.
+ *
+ *
+ *
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * @param title
+ * The title to set.
+ */
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ /**
+ * @return Returns the allowAnonym.
+ *
+ *
+ *
+ */
+ public boolean getAllowAnonym() {
+ return allowAnonym;
+ }
+
+ /**
+ * @param allowAnonym
+ * The allowAnonym to set.
+ *
+ */
+ public void setAllowAnonym(boolean allowAnnomity) {
+ allowAnonym = allowAnnomity;
+ }
+
+ /**
+ * @return Returns the lockWhenFinish.
+ *
+ *
+ *
+ */
+ public boolean getLockWhenFinished() {
+ return lockWhenFinished;
+ }
+
+ /**
+ * @param lockWhenFinished
+ * Set to true to lock the forum for finished users.
+ */
+ public void setLockWhenFinished(boolean lockWhenFinished) {
+ this.lockWhenFinished = lockWhenFinished;
+ }
+
+ /**
+ * @return Returns the instructions set by the teacher.
+ *
+ *
+ */
+ public String getInstructions() {
+ return instructions;
+ }
+
+ public void setInstructions(String instructions) {
+ this.instructions = instructions;
+ }
+
+ /**
+ * NOTE: The reason that relation don't use save-update to persist message is MessageSeq table need save a record as
+ * well.
+ *
+ *
+ *
+ *
+ *
+ * @return
+ */
+ public Set getMessages() {
+ return messages;
+ }
+
+ public void setMessages(Set messages) {
+ this.messages = messages;
+ }
+
+ /**
+ * Updates the modification data for this entity.
+ */
+ public void updateModificationData() {
+
+ long now = System.currentTimeMillis();
+ if (created == null) {
+ this.setCreated(new Date(now));
+ }
+ this.setUpdated(new Date(now));
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isContentInUse() {
+ return contentInUse;
+ }
+
+ public void setContentInUse(boolean contentInUse) {
+ this.contentInUse = contentInUse;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isDefineLater() {
+ return defineLater;
+ }
+
+ public void setDefineLater(boolean defineLater) {
+ this.defineLater = defineLater;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Long getContentId() {
+ return contentId;
+ }
+
+ public void setContentId(Long contentId) {
+ this.contentId = contentId;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isAllowEdit() {
+ return allowEdit;
+ }
+
+ public void setAllowEdit(boolean allowEdit) {
+ this.allowEdit = allowEdit;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isAllowRichEditor() {
+ return allowRichEditor;
+ }
+
+ public void setAllowRichEditor(boolean allowRichEditor) {
+ this.allowRichEditor = allowRichEditor;
+ }
+
+ public static Forum newInstance(Forum fromContent, Long contentId) {
+ Forum toContent = new Forum();
+ toContent = (Forum) fromContent.clone();
+ toContent.setContentId(contentId);
+
+ Set topics = toContent.getMessages();
+ if (topics != null) {
+ Iterator iter = topics.iterator();
+ while (iter.hasNext()) {
+ Message msg = (Message) iter.next();
+ // clear message forum so that they can be saved when persistent happens
+ msg.setForum(null);
+ }
+ }
+
+ return toContent;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMinCharacters() {
+ return minCharacters;
+ }
+
+ public void setMinCharacters(int minCharacters) {
+ this.minCharacters = minCharacters;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isLimitedMinCharacters() {
+ return limitedMinCharacters;
+ }
+
+ public void setLimitedMinCharacters(boolean limitedMinCharacters) {
+ this.limitedMinCharacters = limitedMinCharacters;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMaxCharacters() {
+ return maxCharacters;
+ }
+
+ public void setMaxCharacters(int maxCharacters) {
+ this.maxCharacters = maxCharacters;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isLimitedMaxCharacters() {
+ return limitedMaxCharacters;
+ }
+
+ public void setLimitedMaxCharacters(boolean limitedMaxCharacters) {
+ this.limitedMaxCharacters = limitedMaxCharacters;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isAllowNewTopic() {
+ return allowNewTopic;
+ }
+
+ public void setAllowNewTopic(boolean allowNewTopic) {
+ this.allowNewTopic = allowNewTopic;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isAllowUpload() {
+ return allowUpload;
+ }
+
+ public void setAllowUpload(boolean allowUpload) {
+ this.allowUpload = allowUpload;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isAllowRateMessages() {
+ return allowRateMessages;
+ }
+
+ public void setAllowRateMessages(boolean allowRateMessages) {
+ this.allowRateMessages = allowRateMessages;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMaximumReply() {
+ return maximumReply;
+ }
+
+ public void setMaximumReply(int maximumReply) {
+ this.maximumReply = maximumReply;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMinimumReply() {
+ return minimumReply;
+ }
+
+ public void setMinimumReply(int minimumReply) {
+ this.minimumReply = minimumReply;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getReflectInstructions() {
+ return reflectInstructions;
+ }
+
+ public void setReflectInstructions(String reflectInstructions) {
+ this.reflectInstructions = reflectInstructions;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isReflectOnActivity() {
+ return reflectOnActivity;
+ }
+
+ public void setReflectOnActivity(boolean reflectOnActivity) {
+ this.reflectOnActivity = reflectOnActivity;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isNotifyLearnersOnForumPosting() {
+ return notifyLearnersOnForumPosting;
+ }
+
+ public void setNotifyLearnersOnForumPosting(boolean notifyLearnersOnForumPosting) {
+ this.notifyLearnersOnForumPosting = notifyLearnersOnForumPosting;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isNotifyTeachersOnForumPosting() {
+ return notifyTeachersOnForumPosting;
+ }
+
+ public void setNotifyTeachersOnForumPosting(boolean notifyTeachersOnForumPosting) {
+ this.notifyTeachersOnForumPosting = notifyTeachersOnForumPosting;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isNotifyLearnersOnMarkRelease() {
+ return notifyLearnersOnMarkRelease;
+ }
+
+ public void setNotifyLearnersOnMarkRelease(boolean notifyLearnersOnMarkRelease) {
+ this.notifyLearnersOnMarkRelease = notifyLearnersOnMarkRelease;
+ }
+
+ /**
+ *
+ * sort="org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator"
+ *
+ *
+ *
+ */
+ public Set getConditions() {
+ return conditions;
+ }
+
+ public void setConditions(Set conditions) {
+ this.conditions = conditions;
+ }
+
+ /**
+ *
+ * @return date submissionDeadline
+ */
+ public Date getSubmissionDeadline() {
+ return submissionDeadline;
+ }
+
+ public void setSubmissionDeadline(Date submissionDeadline) {
+ this.submissionDeadline = submissionDeadline;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMaximumRate() {
+ return maximumRate;
+ }
+
+ public void setMaximumRate(int maximumRate) {
+ this.maximumRate = maximumRate;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getMinimumRate() {
+ return minimumRate;
+ }
+
+ public void setMinimumRate(int minimumRate) {
+ this.minimumRate = minimumRate;
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumCondition.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumCondition.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumCondition.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,246 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+import javax.persistence.ManyToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+import org.hibernate.annotations.Cascade;
+import org.hibernate.annotations.CascadeType;
+import org.lamsfoundation.lams.learningdesign.BranchCondition;
+import org.lamsfoundation.lams.learningdesign.LearningDesign;
+import org.lamsfoundation.lams.learningdesign.TextSearchCondition;
+import org.lamsfoundation.lams.tool.OutputType;
+import org.lamsfoundation.lams.tool.ToolOutput;
+import org.lamsfoundation.lams.tool.ToolOutputFormatException;
+import org.lamsfoundation.lams.tool.ToolOutputValue;
+import org.lamsfoundation.lams.tool.forum.dto.ForumConditionDTO;
+import org.lamsfoundation.lams.tool.forum.util.ConditionTopicComparator;
+import org.lamsfoundation.lams.util.WebUtil;
+
+/**
+ * A text search condition with a set of topics on answers to which the search should be performed.
+ *
+ *
+ * @author Marcin Cieslak
+ *
+ */
+@Entity
+@Table(name = "tl_lafrum11_conditions")
+public class ForumCondition extends TextSearchCondition {
+ /**
+ * Topics linked to this condition. Answers to them will be scanned for the words that make the condition's
+ * parameters.
+ */
+ @ManyToMany
+ @Cascade({ CascadeType.SAVE_UPDATE })
+ @JoinTable(name = "tl_lafrum11_condition_topics", joinColumns = @JoinColumn(name = "condition_id"), inverseJoinColumns = @JoinColumn(name = "topic_uid"))
+ @OrderBy("uid ASC")
+ private Set topics;
+
+ public ForumCondition() {
+ this.topics = new TreeSet(new ConditionTopicComparator());
+ }
+
+ public ForumCondition(ForumConditionDTO conditionDTO) {
+ super(conditionDTO);
+ this.topics = new TreeSet(new ConditionTopicComparator());
+ for (Message topic : conditionDTO.getTopics()) {
+ Message topicCopy = new Message();
+ topicCopy.setCreated(topic.getCreated());
+ topicCopy.setSubject(topic.getSubject());
+ topics.add(topicCopy);
+ }
+ }
+
+ public ForumCondition(Long conditionId, Integer conditionUIID, Integer orderId, String name, String displayName,
+ String allWords, String phrase, String anyWords, String excludedWords, Set questions) {
+ super(conditionId, conditionUIID, orderId, name, displayName, BranchCondition.OUTPUT_TYPE_COMPLEX, null, null,
+ null, allWords, phrase, anyWords, excludedWords);
+ setTopics(questions);
+ }
+
+ @Override
+ public boolean isMet(ToolOutput output) throws ToolOutputFormatException {
+ boolean result = false;
+ if (output != null) {
+ ToolOutputValue value = output.getValue();
+ if (value != null) {
+ if (OutputType.OUTPUT_COMPLEX.equals(value.getType())) {
+ // the condition "knows" it's a map of "topic creation date" -> "all learner's answers to that
+ // topic"
+ Map> messages = (Map>) value.getValue();
+ result = true;
+
+ /*
+ * We want to check if for each topic all answer don't contain excluded words and at least one
+ * answer contains the desired (all, any, phrase) words. That is why we check all, any and phrase
+ * conditions using the "matches" method, but we check excluded words manually.
+ */
+ parseConditionStrings();
+ List excludedWordsCopy = getExcludedWordsCondition();
+ setExcludedWordsCondition(null);
+
+ for (Message topic : getTopics()) {
+ boolean singleTopicResult = false;
+ Set answers = messages.get(topic.getCreated());
+ if (answers == null) {
+ singleTopicResult = getAllWordsCondition() == null && getAnyWordsCondition() == null
+ && getPhraseCondition() == null;
+ } else {
+ for (String answer : answers) {
+ answer = WebUtil.removeHTMLtags(answer);
+ if (!singleTopicResult) {
+ singleTopicResult = matches(answer);
+ }
+ if (matchExcludedWordsOnly(excludedWordsCopy, answer)) {
+ singleTopicResult = false;
+ break;
+ }
+ }
+ }
+
+ result &= singleTopicResult;
+ // if at least one topic does not satisfy the condition, there
+ // is no need to look further
+ if (!result) {
+ break;
+ }
+ }
+ } else {
+ throw new ToolOutputFormatException("Forum tool produced a non-complex tool output.");
+ }
+ }
+ }
+ return result;
+ }
+
+ public Set getTopics() {
+ return topics;
+ }
+
+ public void setTopics(Set questions) {
+ topics = questions;
+ }
+
+ /**
+ * Notice that the original topics are assigned to the copy.
+ */
+ @Override
+ public Object clone() {
+ Set topicsCopy = new TreeSet(new ConditionTopicComparator());
+ topicsCopy.addAll(topics);
+ return new ForumCondition(null, null, orderId, name, displayName, allWords, phrase, anyWords, excludedWords,
+ topicsCopy);
+ }
+
+ /**
+ * Notice that topics are copied with very little information and then they are assigned to the cloned object. This
+ * method is used when assigning BranchActivityEntry needs, so only basic information (in fact, only creation date)
+ * is needed. Also, there should be no link to Forum content.
+ */
+ @Override
+ public ForumCondition clone(int uiidOffset) {
+ Integer newConditionUIID = LearningDesign.addOffset(conditionUIID, uiidOffset);
+ Set topicsCopy = new TreeSet(new ConditionTopicComparator());
+
+ for (Message topic : getTopics()) {
+ Message topicCopy = new Message();
+ topicCopy.setCreated(topic.getCreated());
+ topicCopy.setSubject(topic.getSubject());
+ topicsCopy.add(topicCopy);
+ }
+ return new ForumCondition(null, newConditionUIID, orderId, name, displayName, allWords, phrase, anyWords,
+ excludedWords, topicsCopy);
+ }
+
+ /**
+ * Notice that topics from the cloned (and not the original) tool content are assigned to the cloned condition. This
+ * method is used for cloning tool content.
+ */
+ public ForumCondition clone(Forum forum) {
+
+ Set topicsCopy = new TreeSet(new ConditionTopicComparator());
+ for (Message conditionTopic : getTopics()) {
+ for (Message contentTopic : forum.getMessages()) {
+ if (contentTopic.getIsAuthored() && contentTopic.getCreated().equals(conditionTopic.getCreated())) {
+ topicsCopy.add(contentTopic);
+ }
+ }
+ }
+
+ return new ForumCondition(null, null, orderId, name, displayName, allWords, phrase, anyWords, excludedWords,
+ topicsCopy);
+ }
+
+ /**
+ * The condition must be bound with at least one topic.
+ */
+ @Override
+ protected boolean isValid() {
+ return getTopics() != null && !getTopics().isEmpty();
+ }
+
+ /**
+ * It filters the given text in order to find any of the unwanted words.
+ *
+ * @param excludedWords
+ * words to search for
+ * @param textToMatch
+ * string to be filtered
+ * @return true
if at least one of the words from the list is found in the text
+ */
+ private boolean matchExcludedWordsOnly(List excludedWords, String textToMatch) {
+ if (textToMatch == null || excludedWords == null) {
+ return false;
+ }
+ StringBuilder stringPattern = new StringBuilder();
+ for (String excludedWord : excludedWords) {
+ stringPattern.append("(?:").append(TextSearchCondition.NON_WORD_DELIMITER_REGEX)
+ .append(Pattern.quote(excludedWord)).append(TextSearchCondition.NON_WORD_DELIMITER_REGEX)
+ .append(")|");
+ }
+ stringPattern.deleteCharAt(stringPattern.length() - 1);
+ Pattern regexPattern = Pattern.compile(stringPattern.toString(), TextSearchCondition.PATTERN_MATCHING_OPTIONS);
+ Matcher matcher = regexPattern.matcher(textToMatch);
+ return matcher.find();
+ }
+
+ @Override
+ public ForumConditionDTO getBranchConditionDTO(Integer toolActivityUIID) {
+ return new ForumConditionDTO(this, toolActivityUIID);
+ }
+}
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumConfigItem.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumConfigItem.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumConfigItem.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,74 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tl_lafrum11_configuration")
+public class ForumConfigItem implements java.io.Serializable {
+
+ private static final long serialVersionUID = 1618184711102211756L;
+
+ public static final String KEY_KEEP_LEARNER_CONTENT = "keepLearnerContent";
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(name = "config_key")
+ private String configKey;
+
+ @Column(name = "config_value")
+ private String configValue;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getConfigKey() {
+ return configKey;
+ }
+
+ public void setConfigKey(String configKey) {
+ this.configKey = configKey;
+ }
+
+ public String getConfigValue() {
+ return configValue;
+ }
+
+ public void setConfigValue(String configValue) {
+ this.configValue = configValue;
+ }
+}
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumReport.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumReport.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumReport.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,82 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+package org.lamsfoundation.lams.tool.forum.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tl_lafrum11_report")
+public class ForumReport {
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column
+ private Float mark;
+
+ @Column
+ private String comment;
+
+ /**
+ *
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getComment() {
+ return comment;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Float getMark() {
+ return mark;
+ }
+
+ public void setMark(Float mark) {
+ this.mark = mark;
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumToolSession.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumToolSession.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumToolSession.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,199 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.log4j.Logger;
+
+/**
+ * @author Steve.Ni
+ */
+@Entity
+@Table(name = "tl_lafrum11_tool_session")
+public class ForumToolSession implements Cloneable {
+
+ private static Logger log = Logger.getLogger(ForumToolSession.class);
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column(name = "session_id")
+ private Long sessionId;
+
+ @Column(name = "session_name")
+ private String sessionName;
+
+ @ManyToOne
+ @JoinColumn(name = "forum_uid")
+ private Forum forum;
+
+ @Column(name = "session_start_date")
+ private Date sessionStartDate;
+
+ @Column(name = "session_end_date")
+ private Date sessionEndDate;
+
+ @Column(name = "mark_released")
+ private boolean markReleased;
+
+//content topics copyed (1) or not (0)
+ @Column
+ private int status;
+
+// **********************************************************
+ // Function method for ForumToolSession
+// **********************************************************
+ @Override
+ public Object clone() {
+
+ ForumToolSession session = null;
+ try {
+ session = (ForumToolSession) super.clone();
+
+ } catch (CloneNotSupportedException e) {
+ log.error("When clone " + ForumToolSession.class + " failed");
+ }
+ return session;
+ }
+
+// **********************************************************
+ // Get/Set methods
+// **********************************************************
+ /**
+ *
+ * @return Returns the learnerID.
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uuid) {
+ this.uid = uuid;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Date getSessionEndDate() {
+ return sessionEndDate;
+ }
+
+ public void setSessionEndDate(Date sessionEndDate) {
+ this.sessionEndDate = sessionEndDate;
+ }
+
+ /**
+ *
+ *
+ * @return
+ */
+ public Date getSessionStartDate() {
+ return sessionStartDate;
+ }
+
+ public void setSessionStartDate(Date sessionStartDate) {
+ this.sessionStartDate = sessionStartDate;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ /**
+ *
+ *
+ * @return
+ */
+ public Forum getForum() {
+ return forum;
+ }
+
+ public void setForum(Forum forum) {
+ this.forum = forum;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Long getSessionId() {
+ return sessionId;
+ }
+
+ public void setSessionId(Long sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ /**
+ *
+ * @return Returns the session name
+ */
+ public String getSessionName() {
+ return sessionName;
+ }
+
+ /**
+ *
+ * @param sessionName
+ * The session name to set.
+ */
+ public void setSessionName(String sessionName) {
+ this.sessionName = sessionName;
+ }
+
+ /**
+ *
+ * @return Returns the mark released flag
+ */
+ public boolean isMarkReleased() {
+ return markReleased;
+ }
+
+ public void setMarkReleased(boolean markReleased) {
+ this.markReleased = markReleased;
+ }
+}
\ No newline at end of file
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumUser.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumUser.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/ForumUser.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,237 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+
+/**
+ * @author Steve.Ni
+ */
+@Entity
+@Table(name = "tl_lafrum11_forum_user")
+public class ForumUser implements Serializable, Cloneable {
+
+ private static final long serialVersionUID = -7043502180037866257L;
+ private static Logger log = Logger.getLogger(ForumUser.class);
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column(name = "user_id")
+ private Long userId;
+
+ @Column(name = "first_name")
+ private String firstName;
+
+ @Column(name = "last_name")
+ private String lastName;
+
+ @Column(name = "login_name")
+ private String loginName;
+
+ @Column(name = "session_finished")
+ private boolean sessionFinished;
+
+ @ManyToOne
+ @JoinColumn(name = "session_id")
+ private ForumToolSession session;
+
+ public ForumUser() {
+ }
+
+ /** Create the user based on the DTO in the session */
+ 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;
+ }
+
+ /** Create the user based on the details in the JSON call - used for authoring so no session exists. */
+ public ForumUser(Long userId, String firstName, String lastName, String loginName) {
+ this.userId = userId;
+ this.firstName = firstName;
+ this.lastName = lastName;
+ this.loginName = loginName;
+ this.session = null;
+ this.sessionFinished = false;
+ }
+
+ // **********************************************************
+ // Function method for ForumUser
+ // **********************************************************
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#clone()
+ */
+ @Override
+ public Object clone() {
+
+ Object obj = null;
+ try {
+ obj = super.clone();
+ } catch (CloneNotSupportedException e) {
+ log.error("When clone " + ForumUser.class + " failed");
+ }
+ return obj;
+ }
+
+ // **********************************************************
+ // Get/Set methods
+ // **********************************************************
+ /**
+ *
+ * @return Returns the uid.
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ /**
+ * @param uid
+ * The uid to set.
+ */
+ public void setUid(Long userID) {
+ this.uid = userID;
+ }
+
+ /**
+ *
+ * @return Returns the userId.
+ */
+ public Long getUserId() {
+ return userId;
+ }
+
+ /**
+ * @param userId
+ * The userId to set.
+ */
+ public void setUserId(Long userID) {
+ this.userId = userID;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public ForumToolSession getSession() {
+ return session;
+ }
+
+ public void setSession(ForumToolSession session) {
+ this.session = session;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getLoginName() {
+ return loginName;
+ }
+
+ public void setLoginName(String loginName) {
+ this.loginName = loginName;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isSessionFinished() {
+ return sessionFinished;
+ }
+
+ public void setSessionFinished(boolean sessionFinished) {
+ this.sessionFinished = sessionFinished;
+ }
+
+ @Override
+ 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();
+
+ }
+
+ @Override
+ 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/model/Message.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Message.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Message.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,594 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.TreeSet;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.log4j.Logger;
+
+/**
+ * @author conradb
+ */
+@Entity
+@Table(name = "tl_lafrum11_message")
+public class Message implements Cloneable {
+
+ private static Logger log = Logger.getLogger(Message.class);
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column
+ private String subject;
+
+ @Column
+ private String body;
+
+ @Column(name = "sequence_id")
+ private int sequenceId;
+
+ @Column(name = "is_authored")
+ private boolean isAuthored;
+
+ @Column(name = "is_anonymous")
+ private boolean isAnonymous;
+
+ @Column(name = "is_monitor")
+ private boolean isMonitor;
+
+ @Column(name = "create_date")
+ private Date created;
+
+ @Column(name = "update_date")
+ private Date updated;
+
+ @Column(name = "last_reply_date")
+ private Date lastReplyDate;
+
+ @Column(name = "reply_number")
+ private int replyNumber;
+
+ @Column(name = "hide_flag")
+ private boolean hideFlag;
+
+ @ManyToOne
+ @JoinColumn(name = "parent_uid")
+ private Message parent;
+
+ @ManyToOne
+ @JoinColumn(name = "forum_session_uid")
+ private ForumToolSession toolSession;
+
+ @ManyToOne
+ @JoinColumn(name = "forum_uid")
+ private Forum forum;
+
+ @ManyToOne
+ @JoinColumn(name = "create_by")
+ private ForumUser createdBy;
+
+ @ManyToOne
+ @JoinColumn(name = "modified_by")
+ private ForumUser modifiedBy;
+
+ @OneToMany(mappedBy = "message",
+ cascade = CascadeType.ALL,
+ orphanRemoval = true,
+ fetch = FetchType.EAGER)
+ private Set attachments;
+
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "report_id")
+ private ForumReport report;
+
+ @OneToMany(fetch = FetchType.EAGER)
+ @JoinColumn(name = "authored_parent_uid")
+ private Set sessionClones;
+
+ public Message() {
+ attachments = new TreeSet();
+ sessionClones = new HashSet();
+ }
+
+ // **********************************************************
+ // Function method for Message
+ // **********************************************************
+ public static Message newInstance(Message fromMsg) {
+ Message toMsg = new Message();
+ toMsg = (Message) fromMsg.clone();
+ return toMsg;
+ }
+
+ /**
+ * This method DOES NOT deep clone Forum
to avoid dead loop in clone.
+ */
+ @Override
+ public Object clone() {
+
+ Message msg = null;
+ 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();
+ // clone attachment
+ if (attachments != null) {
+ Iterator iter = attachments.iterator();
+ Set set = new TreeSet();
+ while (iter.hasNext()) {
+ Attachment file = (Attachment) iter.next();
+ Attachment newFile = (Attachment) file.clone();
+ // use common file node in repository
+ set.add(newFile);
+ }
+ msg.attachments = set;
+ }
+ // do not clone the tool session data as cloning should be creating a "fresh" copy
+ msg.sessionClones = new HashSet();
+ } catch (CloneNotSupportedException e) {
+ log.error("When clone " + Forum.class + " failed");
+ }
+
+ return msg;
+ }
+
+ public Object updateClone(Message clone) {
+
+ clone.setBody(this.getBody());
+ clone.setForum(this.getForum());
+ clone.setSequenceId(this.getSequenceId());
+ clone.setHideFlag(this.isHideFlag());
+ clone.setIsAnonymous(this.isAnonymous);
+ clone.setIsMonitor(this.isMonitor);
+ clone.setIsAuthored(this.getIsAuthored());
+ clone.setLastReplyDate(this.getLastReplyDate());
+ clone.setModifiedBy(clone.getModifiedBy());
+ clone.setReplyNumber(this.getReplyNumber());
+ clone.setReport(this.getReport());
+ clone.setSubject(this.getSubject());
+ clone.setUpdated(clone.getUpdated());
+
+ // 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();
+ while (iter.hasNext()) {
+ Attachment file = (Attachment) iter.next();
+ Attachment newFile = (Attachment) file.clone();
+ clone.getAttachments().add(newFile);
+ }
+ }
+
+ return clone;
+ }
+
+ /**
+ * Updates the modification data for this entity.
+ */
+ public void updateModificationData() {
+ long now = System.currentTimeMillis();
+ if (created == null) {
+ this.setCreated(new Date(now));
+ }
+ this.setUpdated(new Date(now));
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Message)) {
+ return false;
+ }
+
+ Message genericEntity = (Message) o;
+
+ // uses same attributes to determine equality as
+ // ConditionTopicComparator.compare()
+ 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();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(uid).append(subject).append(body).append(created).append(updated)
+ .append(createdBy).append(modifiedBy).toHashCode();
+ }
+
+ // **********************************************************
+ // get/set methods
+ // **********************************************************
+ /**
+ * Returns the object's creation date
+ *
+ * @return date
+ *
+ */
+ public Date getCreated() {
+ return created;
+ }
+
+ /**
+ * Sets the object's creation date
+ *
+ * @param created
+ */
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ /**
+ * Returns this topic last reply date
+ *
+ * @return date
+ *
+ */
+ public Date getLastReplyDate() {
+ return lastReplyDate;
+ }
+
+ public void setLastReplyDate(Date lastPostDate) {
+ this.lastReplyDate = lastPostDate;
+ }
+
+ /**
+ * Returns the object's date of last update
+ *
+ * @return date updated
+ *
+ */
+ public Date getUpdated() {
+ return updated;
+ }
+
+ /**
+ * Sets the object's date of last update
+ *
+ * @param updated
+ */
+ public void setUpdated(Date updated) {
+ this.updated = updated;
+ }
+
+ /**
+ * @return Returns the userid of the user who created the Forum.
+ *
+ *
+ *
+ */
+ public ForumUser getCreatedBy() {
+ return createdBy;
+ }
+
+ /**
+ * @param createdBy
+ * The userid of the user who created this Forum.
+ */
+ public void setCreatedBy(ForumUser createdBy) {
+ this.createdBy = createdBy;
+ }
+
+ /**
+ *
+ *
+ * @return Returns the userid of the user who modified the posting.
+ */
+ public ForumUser getModifiedBy() {
+ return modifiedBy;
+ }
+
+ /**
+ * @param modifiedBy
+ * The userid of the user who modified the posting.
+ */
+ public void setModifiedBy(ForumUser modifiedBy) {
+ this.modifiedBy = modifiedBy;
+ }
+
+ /**
+ *
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uuid) {
+ this.uid = uuid;
+ }
+
+ /**
+ * @return Returns the subject of the Message.
+ *
+ *
+ *
+ */
+ public String getSubject() {
+ return subject;
+ }
+
+ /**
+ * @param subject
+ * The subject of the Message to be set.
+ */
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ /**
+ * @return Returns the body of the Message.
+ *
+ *
+ *
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * @param body
+ * The body of the Message to set.
+ */
+ public void setBody(String body) {
+ this.body = body;
+ }
+
+ /**
+ * Returns Message sequence number.
+ *
+ * @return Message sequence number
+ *
+ *
+ */
+ public int getSequenceId() {
+ return sequenceId;
+ }
+
+ /**
+ * Sets Message sequence number.
+ *
+ * @param sequenceId
+ * Message sequence number
+ */
+ public void setSequenceId(int sequenceId) {
+ this.sequenceId = sequenceId;
+ }
+
+ /**
+ * @return Returns true if the Message was an Authored Message.
+ *
+ *
+ *
+ */
+ public boolean getIsAuthored() {
+ return isAuthored;
+ }
+
+ /**
+ * @param isAuthored
+ * Set isAuthored to true if Message was authored otherwise set to false.
+ */
+ public void setIsAuthored(boolean isAuthored) {
+ this.isAuthored = isAuthored;
+ }
+
+ /**
+ * @return Returns whether the Message should be shown as an Annonymous message.
+ *
+ *
+ *
+ */
+ public boolean getIsAnonymous() {
+ return isAnonymous;
+ }
+
+ /**
+ * @param isAnonymous
+ * Indicates that the Message is to be shown as an Annonymous message when set to true.
+ */
+ public void setIsAnonymous(boolean isAnonymous) {
+ this.isAnonymous = isAnonymous;
+ }
+
+ /**
+ * @return Returns whether the Message should be shown as a teacher/tutor message created in monitoring
+ *
+ *
+ *
+ */
+ public boolean getIsMonitor() {
+ return isMonitor;
+ }
+
+ /**
+ * @param isAnonymous
+ * Indicates whether the Message should be shown as a teacher/tutor message created in monitoring
+ */
+ public void setIsMonitor(boolean isMonitor) {
+ this.isMonitor = isMonitor;
+ }
+
+ /**
+ * Gets the toolSession
+ *
+ *
+ *
+ *
+ */
+ public ForumToolSession getToolSession() {
+ return toolSession;
+ }
+
+ /**
+ * @param toolSession
+ * The toolSession that this Message belongs to
+ */
+ public void setToolSession(ForumToolSession session) {
+ this.toolSession = session;
+ }
+
+ /**
+ * @param parent
+ * The parent of this Message
+ */
+ public void setParent(Message parent) {
+ this.parent = parent;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Message getParent() {
+ return parent;
+ }
+
+ /**
+ * @return a set of Attachments to this Message.
+ *
+ *
+ *
+ *
+ *
+ */
+ public Set getAttachments() {
+ return attachments;
+ }
+
+ /*
+ * @param attachments The attachments to set.
+ */
+ public void setAttachments(Set attachments) {
+ this.attachments = attachments;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Forum getForum() {
+ return forum;
+ }
+
+ public void setForum(Forum forum) {
+ this.forum = forum;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public int getReplyNumber() {
+ return replyNumber;
+ }
+
+ public void setReplyNumber(int replyNumber) {
+ this.replyNumber = replyNumber;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public boolean isHideFlag() {
+ return hideFlag;
+ }
+
+ public void setHideFlag(boolean hideFlag) {
+ this.hideFlag = hideFlag;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public ForumReport getReport() {
+ return report;
+ }
+
+ public void setReport(ForumReport report) {
+ this.report = report;
+ }
+
+ /**
+ * @return the set of all messages cloned from this message.
+ */
+ public Set getSessionClones() {
+ return sessionClones;
+ }
+
+ /*
+ * @param sessionClones The sessionClones to set.
+ */
+ public void setSessionClones(Set sessionClones) {
+ this.sessionClones = sessionClones;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("uid", uid).append("subject", subject).append("body", body).toString();
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageRating.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageRating.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageRating.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,145 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+/**
+ * MessageRating
+ *
+ * @author Andrey Balan
+ */
+@Entity
+@Table(name = "tl_lafrum11_message_rating")
+public class MessageRating implements Serializable {
+
+ private static final long serialVersionUID = 3500933985590642242L;
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @Column
+ private float rating;
+
+ @ManyToOne
+ @JoinColumn(name = "user_id")
+ private ForumUser user;
+
+ @ManyToOne
+ @JoinColumn(name = "message_id")
+ private Message message;
+
+ // **********************************************************
+ // Function methods for ResponseRating
+ // **********************************************************
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof MessageRating)) {
+ return false;
+ }
+
+ final MessageRating genericEntity = (MessageRating) o;
+
+ return new EqualsBuilder().append(this.uid, genericEntity.uid).append(this.rating, genericEntity.rating)
+ .append(this.user, genericEntity.user).isEquals();
+ }
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder().append(uid).append(rating).append(user).toHashCode();
+ }
+
+ // **********************************************************
+ // Get/Set methods
+ // **********************************************************
+
+ /**
+ *
+ * @return Returns the log Uid.
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ * Returns user rated this message.
+ *
+ *
+ * @return
+ */
+ public ForumUser getUser() {
+ return user;
+ }
+
+ public void setUser(ForumUser user) {
+ this.user = user;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public float getRating() {
+ return rating;
+ }
+
+ public void setRating(float rating) {
+ this.rating = rating;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Message getMessage() {
+ return message;
+ }
+
+ public void setMessage(Message message) {
+ this.message = message;
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageSeq.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageSeq.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/MessageSeq.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,122 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+/**
+ * @author Steve.Ni
+ *
+ */
+@Entity
+@Table(name = "tl_lafrum11_message_seq")
+public class MessageSeq {
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @ManyToOne
+ @JoinColumn(name = "root_message_uid")
+ private Message rootMessage;
+
+ @ManyToOne
+ @JoinColumn(name = "message_uid")
+ private Message message;
+
+ @ManyToOne
+ @JoinColumn(name = "thread_message_uid")
+ private Message threadMessage;
+
+ @Column(name = "message_level")
+ private short messageLevel;
+
+ /**
+ *
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ *
+ *
+ */
+ public Message getRootMessage() {
+ return rootMessage;
+ }
+
+ public void setRootMessage(Message rootTopicUid) {
+ this.rootMessage = rootTopicUid;
+ }
+
+ /**
+ *
+ *
+ */
+ public Message getMessage() {
+ return message;
+ }
+
+ public void setMessage(Message topicUid) {
+ this.message = topicUid;
+ }
+
+ /**
+ *
+ *
+ */
+ public Message getThreadMessage() {
+ return threadMessage;
+ }
+
+ public void setThreadMessage(Message threadTopMessageUid) {
+ this.threadMessage = threadTopMessageUid;
+ }
+
+ /**
+ *
+ */
+ public short getMessageLevel() {
+ return messageLevel;
+ }
+
+ public void setMessageLevel(short topicLevel) {
+ this.messageLevel = topicLevel;
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Timestamp.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Timestamp.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/model/Timestamp.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,133 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.model;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+/**
+ * Forum
+ *
+ * @author ruslan
+ */
+@Entity
+@Table(name = "tl_lafrum11_timestamp")
+public class Timestamp implements Cloneable {
+
+ @Id
+ @Column
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long uid;
+
+ @ManyToOne
+ @JoinColumn(name = "forum_user_uid")
+ private ForumUser forumUser;
+
+ @ManyToOne
+ @JoinColumn(name = "message_uid")
+ private Message message;
+
+ @Column(name = "timestamp_date")
+ private Date timestamp;
+
+ /**
+ * Default construction method.
+ *
+ */
+ public Timestamp() {
+ }
+
+ // **********************************************************
+ // get/set methods
+ // **********************************************************
+ /**
+ *
+ */
+ public Long getUid() {
+ return uid;
+ }
+
+ public void setUid(Long uid) {
+ this.uid = uid;
+ }
+
+ /**
+ * Returns the user's timestamp
+ *
+ * @return timestamp
+ *
+ */
+ public Date getTimestamp() {
+ return timestamp;
+ }
+
+ /**
+ * Sets the user's timestamp
+ *
+ * @param timestamp
+ */
+ public void setTimestamp(Date timestamp) {
+ this.timestamp = timestamp;
+ }
+
+ /**
+ * @return Returns the user of the user who saved the timestamp
+ *
+ *
+ *
+ */
+ public ForumUser getForumUser() {
+ return forumUser;
+ }
+
+ /**
+ * @param userid
+ * The userid of the user who saved the timestamp
+ */
+ public void setForumUser(ForumUser forumUser) {
+ this.forumUser = forumUser;
+ }
+
+ /**
+ *
+ *
+ */
+ public Message getMessage() {
+ return message;
+ }
+
+ public void setMessage(Message message) {
+ this.message = message;
+ }
+
+}
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attachment.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumCondition.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumConfigItem.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumReport.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumToolSession.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IAttachmentDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumToolSessionDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IForumUserDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageRatingDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/IMessageSeqDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ITimestampDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageRating.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/PersistenceException.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Timestamp.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/AttachmentDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumToolSessionDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/ForumUserDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageRatingDAO.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/MessageSeqDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/hibernate/TimestampDao.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumImportContentVersionFilter.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumImportContentVersionFilter.java (.../ForumImportContentVersionFilter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumImportContentVersionFilter.java (.../ForumImportContentVersionFilter.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -24,7 +24,7 @@
package org.lamsfoundation.lams.tool.forum.service;
import org.lamsfoundation.lams.learningdesign.service.ToolContentVersionFilter;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
/**
* Import filter class for different version of Forum content.
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumOutputFactory.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumOutputFactory.java (.../ForumOutputFactory.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumOutputFactory.java (.../ForumOutputFactory.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -37,13 +37,13 @@
import org.lamsfoundation.lams.tool.ToolOutput;
import org.lamsfoundation.lams.tool.ToolOutputDefinition;
import org.lamsfoundation.lams.tool.exception.ToolException;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumCondition;
-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.util.ForumConstants;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
/**
* Creates the output definitions for forum. Currently it provides two types of output - an user answers represented by
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java
===================================================================
diff -u -rfc69f6fff973cdb61ddd1213e226a671e1ca1905 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision fc69f6fff973cdb61ddd1213e226a671e1ca1905)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java (.../ForumService.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -70,32 +70,32 @@
import org.lamsfoundation.lams.tool.ToolSessionManager;
import org.lamsfoundation.lams.tool.exception.DataMissingException;
import org.lamsfoundation.lams.tool.exception.ToolException;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
+import org.lamsfoundation.lams.tool.forum.dao.IAttachmentDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IForumDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IForumToolSessionDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IForumUserDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageRatingDAO;
+import org.lamsfoundation.lams.tool.forum.dao.IMessageSeqDAO;
+import org.lamsfoundation.lams.tool.forum.dao.ITimestampDAO;
import org.lamsfoundation.lams.tool.forum.dto.AverageRatingDTO;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-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.ForumConfigItem;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumException;
-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.IAttachmentDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IForumDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IForumToolSessionDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IForumUserDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IMessageDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IMessageRatingDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.IMessageSeqDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.ITimestampDAO;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
-import org.lamsfoundation.lams.tool.forum.persistence.MessageRating;
-import org.lamsfoundation.lams.tool.forum.persistence.MessageSeq;
-import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
-import org.lamsfoundation.lams.tool.forum.persistence.Timestamp;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.ForumConfigItem;
+import org.lamsfoundation.lams.tool.forum.model.ForumReport;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+import org.lamsfoundation.lams.tool.forum.model.MessageRating;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
+import org.lamsfoundation.lams.tool.forum.model.Timestamp;
import org.lamsfoundation.lams.tool.forum.util.DateComparator;
-import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
+import org.lamsfoundation.lams.tool.forum.util.ForumException;
import org.lamsfoundation.lams.tool.forum.util.MessageDtoComparator;
+import org.lamsfoundation.lams.tool.forum.util.PersistenceException;
import org.lamsfoundation.lams.tool.forum.util.TopicComparator;
import org.lamsfoundation.lams.tool.service.ILamsToolService;
import org.lamsfoundation.lams.usermanagement.User;
Fisheye: Tag b71c9cb2f96eb891545d32aaca8904051d1e00d5 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumServiceProxy.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java
===================================================================
diff -u -rfc69f6fff973cdb61ddd1213e226a671e1ca1905 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision fc69f6fff973cdb61ddd1213e226a671e1ca1905)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java (.../IForumService.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -29,17 +29,19 @@
import org.lamsfoundation.lams.events.IEventNotificationService;
import org.lamsfoundation.lams.logevent.service.ILogEventService;
import org.lamsfoundation.lams.notebook.model.NotebookEntry;
+import org.lamsfoundation.lams.tool.exception.DataMissingException;
+import org.lamsfoundation.lams.tool.exception.ToolException;
import org.lamsfoundation.lams.tool.forum.dto.AverageRatingDTO;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-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.ForumConfigItem;
-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.MessageSeq;
-import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.ForumConfigItem;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
+import org.lamsfoundation.lams.tool.forum.util.PersistenceException;
import org.springframework.web.multipart.MultipartFile;
/**
@@ -299,6 +301,9 @@
*/
List getAllTopicsFromSession(Long sessionID);
+ /** From ToolSessionManager interface */
+ String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException;
+
// ************************************************************************************
// User Method
// ************************************************************************************
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/AttachmentComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/AttachmentComparator.java (.../AttachmentComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/AttachmentComparator.java (.../AttachmentComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -25,7 +25,7 @@
import java.util.Comparator;
-import org.lamsfoundation.lams.tool.forum.persistence.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
/**
* Attachment comparator by unique id, hence should be the order saved in the database.
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ConditionTopicComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ConditionTopicComparator.java (.../ConditionTopicComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ConditionTopicComparator.java (.../ConditionTopicComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -28,7 +28,7 @@
import java.util.Comparator;
import org.apache.commons.lang.builder.EqualsBuilder;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.Message;
/**
* For finding topic order in Forum conditions.
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java (.../DateComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/DateComparator.java (.../DateComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -25,7 +25,7 @@
package org.lamsfoundation.lams.tool.forum.util;
-import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE;
+import static org.lamsfoundation.lams.tool.forum.ForumConstants.OLD_FORUM_STYLE;
import java.util.Comparator;
import java.util.Date;
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumException.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumException.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumException.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,57 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.util;
+
+/**
+ * User: conradb
+ * Date: 14/06/2005
+ * Time: 12:33:12
+ */
+public class ForumException extends RuntimeException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7408922611270822369L;
+
+ public ForumException(String message) {
+ super(message);
+ }
+
+ public ForumException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ForumException() {
+ super();
+
+ }
+
+ public ForumException(Throwable cause) {
+ super(cause);
+
+ }
+
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumUserComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumUserComparator.java (.../ForumUserComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumUserComparator.java (.../ForumUserComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -25,7 +25,7 @@
import java.util.Comparator;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
public class ForumUserComparator implements Comparator {
@Override
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumWebUtils.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumWebUtils.java (.../ForumWebUtils.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumWebUtils.java (.../ForumWebUtils.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -28,8 +28,7 @@
import org.apache.commons.lang.StringUtils;
import org.lamsfoundation.lams.tool.ToolAccessMode;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumException;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
import org.lamsfoundation.lams.web.util.AttributeNames;
/**
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageComparator.java (.../MessageComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/MessageComparator.java (.../MessageComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -25,7 +25,7 @@
import java.util.Comparator;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.Message;
/**
* Message comparator by sequence ID.
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/PersistenceException.java
===================================================================
diff -u
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/PersistenceException.java (revision 0)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/PersistenceException.java (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -0,0 +1,43 @@
+/****************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ * License Information: http://lamsfoundation.org/licensing/lams/2.0/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2.0
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+
+package org.lamsfoundation.lams.tool.forum.util;
+
+/**
+ * User: conradb
+ * Date: 6/06/2005
+ * Time: 10:51:43
+ */
+public class PersistenceException extends RuntimeException {
+
+ private static final long serialVersionUID = 3903937111808861090L;
+
+ public PersistenceException(String message) {
+ super(message);
+ }
+
+ public PersistenceException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java
===================================================================
diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java (.../TopicComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java (.../TopicComparator.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -25,13 +25,13 @@
package org.lamsfoundation.lams.tool.forum.util;
-import static org.lamsfoundation.lams.tool.forum.util.ForumConstants.OLD_FORUM_STYLE;
+import static org.lamsfoundation.lams.tool.forum.ForumConstants.OLD_FORUM_STYLE;
import java.util.Comparator;
import org.apache.log4j.Logger;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
-import org.lamsfoundation.lams.tool.forum.persistence.MessageSeq;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
/**
* This class implementaion java.util.Comparator
interface. It can sort meesage according to
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AdminController.java
===================================================================
diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AdminController.java (.../AdminController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AdminController.java (.../AdminController.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -24,7 +24,7 @@
import javax.servlet.http.HttpServletRequest;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumConfigItem;
+import org.lamsfoundation.lams.tool.forum.model.ForumConfigItem;
import org.lamsfoundation.lams.tool.forum.service.IForumService;
import org.lamsfoundation.lams.tool.forum.web.forms.AdminForm;
import org.springframework.beans.factory.annotation.Autowired;
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringConditionController.java
===================================================================
diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringConditionController.java (.../AuthoringConditionController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringConditionController.java (.../AuthoringConditionController.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -36,12 +36,12 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumCondition;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.tool.forum.service.IForumService;
import org.lamsfoundation.lams.tool.forum.util.ConditionTopicComparator;
-import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
import org.lamsfoundation.lams.tool.forum.util.MessageDtoComparator;
import org.lamsfoundation.lams.tool.forum.web.forms.ForumConditionForm;
import org.lamsfoundation.lams.util.MessageService;
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringController.java
===================================================================
diff -u -rfc69f6fff973cdb61ddd1213e226a671e1ca1905 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringController.java (.../AuthoringController.java) (revision fc69f6fff973cdb61ddd1213e226a671e1ca1905)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/AuthoringController.java (.../AuthoringController.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -47,18 +47,18 @@
import org.apache.log4j.Logger;
import org.lamsfoundation.lams.learningdesign.TextSearchConditionComparator;
import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-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.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.model.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.tool.forum.service.IForumService;
-import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
import org.lamsfoundation.lams.tool.forum.util.MessageComparator;
import org.lamsfoundation.lams.tool.forum.util.MessageDtoComparator;
+import org.lamsfoundation.lams.tool.forum.util.PersistenceException;
import org.lamsfoundation.lams.tool.forum.web.forms.ForumForm;
import org.lamsfoundation.lams.tool.forum.web.forms.ForumPedagogicalPlannerForm;
import org.lamsfoundation.lams.tool.forum.web.forms.MessageForm;
@@ -76,7 +76,7 @@
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.multipart.MultipartFile;
/**
* @author Steve.Ni
@@ -417,16 +417,14 @@
message.setModifiedBy(forumUser);
// set attachment of this topic
- Set attSet = null;
+ Set attSet = null;
if (messageForm.getAttachmentFile() != null
&& !StringUtils.isEmpty(messageForm.getAttachmentFile().getOriginalFilename())) {
- Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile());
- // only allow one attachment, so replace whatever
- attSet = new HashSet();
- attSet.add(att);
+ attSet = setupAttachmentSet(messageForm.getAttachmentFile(), message);
}
message.setAttachments(attSet);
+ // LDEV-4696 no longer needed - cannot edit in monitoring once a session is created.
// create clones of this topic (appropriate only for editing in monitoring)
Forum forum = (Forum) sessionMap.get(ForumConstants.AUTHORING_FORUM);
if (forum != null) {
@@ -558,9 +556,7 @@
if (messageForm.getAttachmentFile() != null
&& !StringUtils.isEmpty(messageForm.getAttachmentFile().getOriginalFilename())) {
Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile());
- // only allow one attachment, so replace whatever
- Set attSet = new HashSet();
- attSet.add(att);
+ Set attSet = setupAttachmentSet(messageForm.getAttachmentFile(), newMsg.getMessage());
newMsg.setHasAttachment(true);
newMsg.getMessage().setAttachments(attSet);
} else if (!messageForm.isHasAttachment()) {
@@ -578,6 +574,15 @@
return "jsps/authoring/message/topiclist";
}
+ /* only allow one attachment, so replace whatever */
+ private Set setupAttachmentSet(MultipartFile attachmentFile, Message msg) {
+ Attachment att = forumService.uploadAttachment(attachmentFile);
+ Set attSet = new HashSet();
+ attSet.add(att);
+ att.setMessage(msg);
+ return attSet;
+ }
+
/**
* Remove message attachment.
*/
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/LearningController.java
===================================================================
diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/LearningController.java (.../LearningController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/LearningController.java (.../LearningController.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -43,22 +43,20 @@
import org.lamsfoundation.lams.notebook.model.NotebookEntry;
import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants;
import org.lamsfoundation.lams.tool.ToolAccessMode;
-import org.lamsfoundation.lams.tool.ToolSessionManager;
import org.lamsfoundation.lams.tool.exception.DataMissingException;
import org.lamsfoundation.lams.tool.exception.ToolException;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
import org.lamsfoundation.lams.tool.forum.dto.AverageRatingDTO;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
-import org.lamsfoundation.lams.tool.forum.persistence.Attachment;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumException;
-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.MessageSeq;
-import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException;
-import org.lamsfoundation.lams.tool.forum.service.ForumServiceProxy;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.Message;
+import org.lamsfoundation.lams.tool.forum.model.MessageSeq;
import org.lamsfoundation.lams.tool.forum.service.IForumService;
-import org.lamsfoundation.lams.tool.forum.util.ForumConstants;
+import org.lamsfoundation.lams.tool.forum.util.ForumException;
+import org.lamsfoundation.lams.tool.forum.util.PersistenceException;
import org.lamsfoundation.lams.tool.forum.web.forms.MessageForm;
import org.lamsfoundation.lams.tool.forum.web.forms.ReflectionForm;
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
@@ -319,9 +317,7 @@
// finish current session for user
forumService.finishUserSession(getCurrentUser(request, sessionId));
- ToolSessionManager sessionMgrService = ForumServiceProxy
- .getToolSessionManager(applicationContext.getServletContext());
- nextActivityUrl = sessionMgrService.leaveToolSession(sessionId, userID);
+ nextActivityUrl = forumService.leaveToolSession(sessionId, userID);
response.sendRedirect(nextActivityUrl);
} catch (DataMissingException e) {
throw new ForumException(e);
@@ -1075,18 +1071,19 @@
&& !StringUtils.isBlank(messageForm.getAttachmentFile().getOriginalFilename())) {
Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile());
- Set attSet = message.getAttachments();
+ Set attSet = message.getAttachments();
if (attSet == null) {
- attSet = new HashSet();
+ attSet = new HashSet();
}
// only allow one attachment, so replace whatever
attSet.clear();
attSet.add(att);
+ att.setMessage(message);
message.setAttachments(attSet);
} else if (!messageForm.isHasAttachment()) {
// user already called deleteAttachment in AJAX call
if (message.getAttachments() != null) {
- Set atts = message.getAttachments();
+ Set atts = message.getAttachments();
atts.clear();
message.setAttachments(atts);
} else {
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java
===================================================================
diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java (.../MonitoringController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/controller/MonitoringController.java (.../MonitoringController.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -50,15 +50,15 @@
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.lamsfoundation.lams.tool.forum.ForumConstants;
import org.lamsfoundation.lams.tool.forum.dto.MessageDTO;
import org.lamsfoundation.lams.tool.forum.dto.SessionDTO;
-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.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.ForumReport;
+import org.lamsfoundation.lams.tool.forum.model.ForumToolSession;
+import org.lamsfoundation.lams.tool.forum.model.ForumUser;
+import org.lamsfoundation.lams.tool.forum.model.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;
@@ -287,7 +287,7 @@
}
if (userAndReflection.length > 2 && userAndReflection[2] != null) {
- responseRow.put(ForumConstants.ATTR_PORTRAIT_ID, (String) userAndReflection[2]);
+ responseRow.put(ForumConstants.ATTR_PORTRAIT_ID, (Integer)userAndReflection[2]);
}
rows.add(responseRow);
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumConditionForm.java
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumConditionForm.java (.../ForumConditionForm.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumConditionForm.java (.../ForumConditionForm.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -24,8 +24,8 @@
import java.util.Map;
-import org.lamsfoundation.lams.tool.forum.persistence.ForumCondition;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.ForumCondition;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.web.form.TextSearchForm;
/**
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java
===================================================================
diff -u -re062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java (.../ForumForm.java) (revision e062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumForm.java (.../ForumForm.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -26,7 +26,7 @@
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
/**
*
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumPedagogicalPlannerForm.java
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumPedagogicalPlannerForm.java (.../ForumPedagogicalPlannerForm.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/ForumPedagogicalPlannerForm.java (.../ForumPedagogicalPlannerForm.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -29,8 +29,8 @@
import org.apache.commons.lang.StringUtils;
import org.lamsfoundation.lams.planner.PedagogicalPlannerActivitySpringForm;
-import org.lamsfoundation.lams.tool.forum.persistence.Forum;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.Forum;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.tool.forum.util.MessageComparator;
import org.lamsfoundation.lams.util.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/MessageForm.java
===================================================================
diff -u -rc9ee204be2fbc37ed1fd4c7eb8267bc103d98a24 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/MessageForm.java (.../MessageForm.java) (revision c9ee204be2fbc37ed1fd4c7eb8267bc103d98a24)
+++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/forms/MessageForm.java (.../MessageForm.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -27,8 +27,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-import org.lamsfoundation.lams.tool.forum.persistence.Attachment;
-import org.lamsfoundation.lams.tool.forum.persistence.Message;
+import org.lamsfoundation.lams.tool.forum.model.Attachment;
+import org.lamsfoundation.lams.tool.forum.model.Message;
import org.lamsfoundation.lams.util.FileUtil;
import org.lamsfoundation.lams.util.FileValidatorUtil;
import org.lamsfoundation.lams.util.MessageService;
Index: lams_tool_forum/web/jsps/authoring/authoring.jsp
===================================================================
diff -u -raced7ba6c1e7c5a9a50d3f64d8cdd96dd7e76194 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/authoring/authoring.jsp (.../authoring.jsp) (revision aced7ba6c1e7c5a9a50d3f64d8cdd96dd7e76194)
+++ lams_tool_forum/web/jsps/authoring/authoring.jsp (.../authoring.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,6 +1,6 @@
<%@ include file="/common/taglibs.jsp"%>
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
Index: lams_tool_forum/web/jsps/learning/message/msgview.jsp
===================================================================
diff -u -re062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/learning/message/msgview.jsp (.../msgview.jsp) (revision e062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf)
+++ lams_tool_forum/web/jsps/learning/message/msgview.jsp (.../msgview.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,4 +1,4 @@
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
<%@ include file="/common/taglibs.jsp"%>
<%-- msgDto, messageUid, msgLevel needs to be in the session elsewhere --%>
Index: lams_tool_forum/web/jsps/learning/message/topiclist.jsp
===================================================================
diff -u -re062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/learning/message/topiclist.jsp (.../topiclist.jsp) (revision e062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf)
+++ lams_tool_forum/web/jsps/learning/message/topiclist.jsp (.../topiclist.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,4 +1,4 @@
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
<%@ include file="/common/taglibs.jsp"%>
Index: lams_tool_forum/web/jsps/learning/message/topicview.jsp
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/learning/message/topicview.jsp (.../topicview.jsp) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/web/jsps/learning/message/topicview.jsp (.../topicview.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,4 +1,4 @@
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
<%@ include file="/common/taglibs.jsp"%>
Index: lams_tool_forum/web/jsps/learning/viewtopic.jsp
===================================================================
diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/learning/viewtopic.jsp (.../viewtopic.jsp) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd)
+++ lams_tool_forum/web/jsps/learning/viewtopic.jsp (.../viewtopic.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -1,6 +1,6 @@
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
<%@ include file="/common/taglibs.jsp"%>
Index: lams_tool_forum/web/jsps/monitoring/monitoring.jsp
===================================================================
diff -u -re062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_forum/web/jsps/monitoring/monitoring.jsp (.../monitoring.jsp) (revision e062c5aeec4bd7e7f970ae5e907e8a7e59edaeaf)
+++ lams_tool_forum/web/jsps/monitoring/monitoring.jsp (.../monitoring.jsp) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -2,7 +2,7 @@
<%@ include file="/common/taglibs.jsp"%>
-<%@ page import="org.lamsfoundation.lams.tool.forum.util.ForumConstants"%>
+<%@ page import="org.lamsfoundation.lams.tool.forum.ForumConstants"%>
Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardContent.java
===================================================================
diff -u -r711e4127d79bb67af04a3b7a01155cc395171da5 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardContent.java (.../NoticeboardContent.java) (revision 711e4127d79bb67af04a3b7a01155cc395171da5)
+++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardContent.java (.../NoticeboardContent.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -105,6 +105,7 @@
/** default constructor */
public NoticeboardContent() {
+ this.nbSessions = new HashSet();
}
/** full constructor */
@@ -125,6 +126,7 @@
this.allowComments = allowComments;
this.commentsLikeAndDislike = commentsLikeAndDislike;
this.allowAnonymous = allowAnonymous;
+ this.nbSessions = new HashSet();
}
/**
@@ -245,9 +247,6 @@
}
public Set getNbSessions() {
- if (this.nbSessions == null) {
- setNbSessions(new HashSet());
- }
return nbSessions;
}
Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardSession.java
===================================================================
diff -u -r711e4127d79bb67af04a3b7a01155cc395171da5 -rb71c9cb2f96eb891545d32aaca8904051d1e00d5
--- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardSession.java (.../NoticeboardSession.java) (revision 711e4127d79bb67af04a3b7a01155cc395171da5)
+++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/model/NoticeboardSession.java (.../NoticeboardSession.java) (revision b71c9cb2f96eb891545d32aaca8904051d1e00d5)
@@ -100,7 +100,7 @@
/** default constructor */
public NoticeboardSession() {
-
+ this.nbUsers = new HashSet();
}
/** full constructor */
@@ -113,6 +113,7 @@
this.sessionStartDate = sessionStartDate;
this.sessionEndDate = sessionEndDate;
this.sessionStatus = sessionStatus;
+ this.nbUsers = new HashSet();
}
/**
@@ -135,19 +136,22 @@
this.nbContent = nbContent;
this.sessionStartDate = new Date(System.currentTimeMillis());
this.sessionStatus = NoticeboardSession.INCOMPLETE;
+ this.nbUsers = new HashSet();
}
public NoticeboardSession(Long nbSessionId, String nbSessionName) {
this.nbSessionId = nbSessionId;
this.nbSessionName = nbSessionName;
this.sessionStartDate = new Date(System.currentTimeMillis());
this.sessionStatus = NoticeboardSession.INCOMPLETE;
+ this.nbUsers = new HashSet();
}
public NoticeboardSession(Long nbSessionId) {
this.nbSessionId = nbSessionId;
this.sessionStartDate = new Date(System.currentTimeMillis());
this.sessionStatus = NoticeboardSession.INCOMPLETE;
+ this.nbUsers = new HashSet();
}
public NoticeboardContent getNbContent() {
@@ -207,10 +211,6 @@
}
public Set getNbUsers() {
- if (this.nbUsers == null) {
- setNbUsers(new HashSet());
- }
-
return nbUsers;
}