Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Attic/ForumUser.hbm.xml,v diff -u -r1.1 -r1.2 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml 17 Oct 2005 05:29:19 -0000 1.1 +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml 8 Nov 2005 06:15:01 -0000 1.2 @@ -26,7 +26,7 @@ - - Index: lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Attic/Message.hbm.xml,v diff -u -r1.7 -r1.8 --- lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 2 Nov 2005 23:45:06 -0000 1.7 +++ lams_tool_forum/conf/hibernate/mappings/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 8 Nov 2005 06:15:01 -0000 1.8 @@ -41,17 +41,21 @@ column="update_date" /> - - - - + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_forum/conf/xdoclet/global-forwards.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/xdoclet/global-forwards.xml,v diff -u -r1.1 -r1.2 --- lams_tool_forum/conf/xdoclet/global-forwards.xml 22 Jul 2005 05:48:20 -0000 1.1 +++ lams_tool_forum/conf/xdoclet/global-forwards.xml 8 Nov 2005 06:15:01 -0000 1.2 @@ -1,6 +1,7 @@ - + Index: lams_tool_forum/conf/xdoclet/struts-actions.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/conf/xdoclet/struts-actions.xml,v diff -u -r1.9 -r1.10 --- lams_tool_forum/conf/xdoclet/struts-actions.xml 1 Nov 2005 05:30:54 -0000 1.9 +++ lams_tool_forum/conf/xdoclet/struts-actions.xml 8 Nov 2005 06:15:01 -0000 1.10 @@ -127,60 +127,44 @@ - - - + parameter="viewForum" scope="request"> + - - - + parameter="viewThread" scope="request"> + - - - + parameter="newTopic" scope="request"> + - - - + parameter="replyTopic" scope="request"> + - - - + parameter="editTopic" scope="request"> + - - - - - - - + parameter="deleteTopic" scope="request"> + - - - + Index: lams_tool_forum/db/model/forum.clay =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/model/forum.clay,v diff -u -r1.8 -r1.9 --- lams_tool_forum/db/model/forum.clay 1 Nov 2005 05:30:54 -0000 1.8 +++ lams_tool_forum/db/model/forum.clay 8 Nov 2005 06:15:02 -0000 1.9 @@ -14,7 +14,7 @@ - + @@ -140,7 +140,7 @@
- + @@ -332,7 +332,7 @@
- + @@ -360,27 +360,14 @@ - + - - - - - - - - - - - - - - + @@ -403,7 +390,7 @@
- + @@ -575,19 +562,37 @@ + + + + + + + + + + + + + + + + + + @@ -600,15 +605,112 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- + Index: lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql,v diff -u -r1.4 -r1.5 --- lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql 12 Oct 2005 01:44:30 -0000 1.4 +++ lams_tool_forum/db/sql/cleanup_lams_tool_forum.sql 8 Nov 2005 06:15:01 -0000 1.5 @@ -1,4 +1,6 @@ -delete from tl_lafrum11_attachment; -delete from tl_lafrum11_forum; -delete from tl_lafrum11_message; - +delete from tl_lafrum11_attachment; +delete from tl_lafrum11_forum; +delete from tl_lafrum11_forum_user; +delete from tl_lafrum11_message; +delete from tl_lafrum11_message_seq; +delete from tl_lafrum11_tool_session; Index: lams_tool_forum/db/sql/create_lams_tool_forum.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/sql/create_lams_tool_forum.sql,v diff -u -r1.8 -r1.9 --- lams_tool_forum/db/sql/create_lams_tool_forum.sql 2 Nov 2005 23:45:06 -0000 1.8 +++ lams_tool_forum/db/sql/create_lams_tool_forum.sql 8 Nov 2005 06:15:01 -0000 1.9 @@ -3,7 +3,14 @@ drop table if exists tl_lafrum11_forum; drop table if exists tl_lafrum11_forum_user; drop table if exists tl_lafrum11_message; +drop table if exists tl_lafrum11_message_seq; drop table if exists tl_lafrum11_tool_session; +drop table if exists tl_lafrum11_attachment; +drop table if exists tl_lafrum11_forum; +drop table if exists tl_lafrum11_forum_user; +drop table if exists tl_lafrum11_message; +drop table if exists tl_lafrum11_message_seq; +drop table if exists tl_lafrum11_tool_session; create table tl_lafrum11_attachment ( uid bigint not null auto_increment, file_version_id bigint, @@ -37,9 +44,8 @@ create table tl_lafrum11_forum_user ( uid bigint not null auto_increment, user_id bigint, - status bit, - full_name varchar(255), - user_name varchar(255), + last_name varchar(255), + first_name varchar(255), primary key (uid) ); create table tl_lafrum11_message ( @@ -58,6 +64,13 @@ parent_uid bigint, primary key (uid) ); +create table tl_lafrum11_message_seq ( + uid bigint not null auto_increment, + root_message_uid bigint, + message_uid bigint, + message_level smallint, + primary key (uid) +); create table tl_lafrum11_tool_session ( uid bigint not null auto_increment, session_end_date datetime, @@ -69,10 +82,14 @@ ); alter table tl_lafrum11_attachment add index FK389AD9A2FE939F2A (message_uid), add constraint FK389AD9A2FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_attachment add index FK389AD9A2131CE31E (forum_uid), add constraint FK389AD9A2131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); +alter table tl_lafrum11_message add index FK4A6067E8E42F4351 (create_by), add constraint FK4A6067E8E42F4351 foreign key (create_by) references tl_lafrum11_forum_user (uid); alter table tl_lafrum11_message add index FK4A6067E8131CE31E (forum_uid), add constraint FK4A6067E8131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); alter table tl_lafrum11_message add index FK4A6067E824089E4D (parent_uid), add constraint FK4A6067E824089E4D foreign key (parent_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_message add index FK4A6067E8C6FF3C72 (forum_session_uid), add constraint FK4A6067E8C6FF3C72 foreign key (forum_session_uid) references tl_lafrum11_tool_session (uid); +alter table tl_lafrum11_message add index FK4A6067E8647A7264 (modified_by), add constraint FK4A6067E8647A7264 foreign key (modified_by) references tl_lafrum11_forum_user (uid); alter table tl_lafrum11_message add index FK4A6067E8B0A7E6B3 (user_uid), add constraint FK4A6067E8B0A7E6B3 foreign key (user_uid) references tl_lafrum11_forum_user (uid); +alter table tl_lafrum11_message_seq add index FKD2C71F88FE939F2A (message_uid), add constraint FKD2C71F88FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid); +alter table tl_lafrum11_message_seq add index FKD2C71F8845213B4D (root_message_uid), add constraint FKD2C71F8845213B4D foreign key (root_message_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_tool_session add index FK5A04D7AE131CE31E (forum_uid), add constraint FK5A04D7AE131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); INSERT INTO tl_lafrum11_forum (title,instructions,online_instructions,offline_instructions,content_id,allow_anonym,run_offline,lock_on_finished,content_in_use,define_later,allow_edit,allow_rich_editor) VALUES("LAMS Forum","Instruction","Online instruction","Offline instruction",1,0,0,0,0,0,0,0); Index: lams_tool_forum/db/sql/drop_lams_tool_forum.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/sql/drop_lams_tool_forum.sql,v diff -u -r1.6 -r1.7 --- lams_tool_forum/db/sql/drop_lams_tool_forum.sql 19 Oct 2005 05:55:59 -0000 1.6 +++ lams_tool_forum/db/sql/drop_lams_tool_forum.sql 8 Nov 2005 06:15:01 -0000 1.7 @@ -3,6 +3,7 @@ drop table if exists tl_lafrum11_forum; drop table if exists tl_lafrum11_forum_user; drop table if exists tl_lafrum11_message; +drop table if exists tl_lafrum11_message_seq; drop table if exists tl_lafrum11_tool_session; SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_forum/db/sql/table-schema.sql =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/db/sql/table-schema.sql,v diff -u -r1.7 -r1.8 --- lams_tool_forum/db/sql/table-schema.sql 1 Nov 2005 05:30:54 -0000 1.7 +++ lams_tool_forum/db/sql/table-schema.sql 8 Nov 2005 06:15:01 -0000 1.8 @@ -1,14 +1,19 @@ alter table tl_lafrum11_attachment drop foreign key FK389AD9A2FE939F2A; alter table tl_lafrum11_attachment drop foreign key FK389AD9A2131CE31E; +alter table tl_lafrum11_message drop foreign key FK4A6067E8E42F4351; alter table tl_lafrum11_message drop foreign key FK4A6067E8131CE31E; alter table tl_lafrum11_message drop foreign key FK4A6067E824089E4D; alter table tl_lafrum11_message drop foreign key FK4A6067E8C6FF3C72; +alter table tl_lafrum11_message drop foreign key FK4A6067E8647A7264; alter table tl_lafrum11_message drop foreign key FK4A6067E8B0A7E6B3; +alter table tl_lafrum11_message_seq drop foreign key FKD2C71F88FE939F2A; +alter table tl_lafrum11_message_seq drop foreign key FKD2C71F8845213B4D; alter table tl_lafrum11_tool_session drop foreign key FK5A04D7AE131CE31E; drop table if exists tl_lafrum11_attachment; drop table if exists tl_lafrum11_forum; drop table if exists tl_lafrum11_forum_user; drop table if exists tl_lafrum11_message; +drop table if exists tl_lafrum11_message_seq; drop table if exists tl_lafrum11_tool_session; create table tl_lafrum11_attachment ( uid bigint not null auto_increment, @@ -43,9 +48,8 @@ create table tl_lafrum11_forum_user ( uid bigint not null auto_increment, user_id bigint, - status bit, - full_name varchar(255), - user_name varchar(255), + last_name varchar(255), + first_name varchar(255), primary key (uid) ); create table tl_lafrum11_message ( @@ -64,6 +68,13 @@ parent_uid bigint, primary key (uid) ); +create table tl_lafrum11_message_seq ( + uid bigint not null auto_increment, + root_message_uid bigint, + message_uid bigint, + message_level smallint, + primary key (uid) +); create table tl_lafrum11_tool_session ( uid bigint not null auto_increment, session_end_date datetime, @@ -75,8 +86,12 @@ ); alter table tl_lafrum11_attachment add index FK389AD9A2FE939F2A (message_uid), add constraint FK389AD9A2FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_attachment add index FK389AD9A2131CE31E (forum_uid), add constraint FK389AD9A2131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); +alter table tl_lafrum11_message add index FK4A6067E8E42F4351 (create_by), add constraint FK4A6067E8E42F4351 foreign key (create_by) references tl_lafrum11_forum_user (uid); alter table tl_lafrum11_message add index FK4A6067E8131CE31E (forum_uid), add constraint FK4A6067E8131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); alter table tl_lafrum11_message add index FK4A6067E824089E4D (parent_uid), add constraint FK4A6067E824089E4D foreign key (parent_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_message add index FK4A6067E8C6FF3C72 (forum_session_uid), add constraint FK4A6067E8C6FF3C72 foreign key (forum_session_uid) references tl_lafrum11_tool_session (uid); +alter table tl_lafrum11_message add index FK4A6067E8647A7264 (modified_by), add constraint FK4A6067E8647A7264 foreign key (modified_by) references tl_lafrum11_forum_user (uid); alter table tl_lafrum11_message add index FK4A6067E8B0A7E6B3 (user_uid), add constraint FK4A6067E8B0A7E6B3 foreign key (user_uid) references tl_lafrum11_forum_user (uid); +alter table tl_lafrum11_message_seq add index FKD2C71F88FE939F2A (message_uid), add constraint FKD2C71F88FE939F2A foreign key (message_uid) references tl_lafrum11_message (uid); +alter table tl_lafrum11_message_seq add index FKD2C71F8845213B4D (root_message_uid), add constraint FKD2C71F8845213B4D foreign key (root_message_uid) references tl_lafrum11_message (uid); alter table tl_lafrum11_tool_session add index FK5A04D7AE131CE31E (forum_uid), add constraint FK5A04D7AE131CE31E foreign key (forum_uid) references tl_lafrum11_forum (uid); Index: lams_tool_forum/src/java/forumApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/Attic/forumApplicationContext.xml,v diff -u -r1.12 -r1.13 --- lams_tool_forum/src/java/forumApplicationContext.xml 24 Oct 2005 07:23:15 -0000 1.12 +++ lams_tool_forum/src/java/forumApplicationContext.xml 8 Nov 2005 06:15:02 -0000 1.13 @@ -15,6 +15,7 @@ org/lamsfoundation/lams/tool/forum/persistence/Attachment.hbm.xml org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml org/lamsfoundation/lams/tool/forum/persistence/ToolSession.hbm.xml + org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.hbm.xml Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java,v diff -u -r1.1 -r1.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java 31 Oct 2005 23:49:36 -0000 1.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/dto/MessageDTO.java 8 Nov 2005 06:15:02 -0000 1.2 @@ -20,12 +20,15 @@ */ package org.lamsfoundation.lams.tool.forum.dto; +import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Set; import org.lamsfoundation.lams.tool.forum.persistence.Message; + public class MessageDTO { private Message message; @@ -63,6 +66,26 @@ } return retSet; } + public static List getMessageDTO(List msgList){ + List retSet = new ArrayList(); + if(msgList == null || msgList.isEmpty()) + return retSet; + + Iterator iter = msgList.iterator(); + while(iter.hasNext()){ + Message msg = (Message) iter.next(); + MessageDTO msgDto = new MessageDTO(); + if(msg.getAttachments() == null || msg.getAttachments().isEmpty()) + msgDto.setHasAttachment(false); + else + msgDto.setHasAttachment(true); + msgDto.setMessage(msg); + msgDto.setAuthor(msg.getCreatedBy().getFirstName()+" "+msg.getCreatedBy().getLastName()); + retSet.add(msgDto); + } + return retSet; + } + public String getAuthor() { return author; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/ForumUser.hbm.xml,v diff -u -r1.1 -r1.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml 17 Oct 2005 05:29:19 -0000 1.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.hbm.xml 8 Nov 2005 06:15:01 -0000 1.2 @@ -26,7 +26,7 @@ - - Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java,v diff -u -r1.1 -r1.2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java 17 Oct 2005 05:29:19 -0000 1.1 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumUser.java 8 Nov 2005 06:15:01 -0000 1.2 @@ -23,6 +23,7 @@ import java.io.Serializable; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; /** * * @hibernate.class table="tl_lafrum11_forum_user" @@ -38,11 +39,15 @@ private static Logger log = Logger.getLogger(ForumUser.class); private Long uid; - private Long userID; - private String userName; - private String fullName; - private boolean status; + private Long userId; + private String firstName; + private String lastName; + public ForumUser(UserDTO user) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + } /** * @hibernate.id generator-class="identity" type="java.lang.Long" column="uid" * @return Returns the uid. @@ -59,31 +64,18 @@ /** * @hibernate.property column="user_id" length="20" - * @return Returns the userID. + * @return Returns the userId. */ - public Long getUserID() { - return userID; + public Long getUserId() { + return userId; } /** - * @param userID - * The userID to set. + * @param userId + * The userId to set. */ - public void setUserID(Long userID) { - this.userID = userID; + public void setUserId(Long userID) { + this.userId = userID; } - /** - * @hibernate.property column="status" length="1" - * @return Returns the status. - */ - public boolean isStatus() { - return status; - } - /** - * @param status The status to set. - */ - public void setStatus(boolean finished) { - this.status = finished; - } /* (non-Javadoc) * @see java.lang.Object#clone() */ @@ -99,24 +91,24 @@ } /** - * @hibernate.property length="255" column="full_name" + * @hibernate.property length="255" column="last_name" * @return */ - public String getFullName() { - return fullName; + public String getLastName() { + return lastName; } - public void setFullName(String fullName) { - this.fullName = fullName; + public void setLastName(String lastName) { + this.lastName = lastName; } /** - * @hibernate.property length="255" column="user_name" + * @hibernate.property length="255" column="first_name" * @return */ - public String getUserName() { - return userName; + public String getFirstName() { + return firstName; } - public void setUserName(String userName) { - this.userName = userName; + public void setFirstName(String firstName) { + this.firstName = firstName; } } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attic/Message.hbm.xml,v diff -u -r1.7 -r1.8 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 2 Nov 2005 23:45:06 -0000 1.7 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.hbm.xml 8 Nov 2005 06:15:01 -0000 1.8 @@ -41,17 +41,21 @@ column="update_date" /> - - - - + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeq.java 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,72 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + *USA + * + *http://www.gnu.org/licenses/gpl.txt + */ +package org.lamsfoundation.lams.tool.forum.persistence; + +/** + * @author Steve.Ni + * + * @hibernate.class table="tl_lafrum11_message_seq" + * + */ +public class MessageSeq { + + private Long uid; + private Message rootMessage; + private Message message; + private short messageLevel; + + /** + * @hibernate.id column="uid" generator-class="native" + */ + public Long getUid() { + return uid; + } + public void setUid(Long uid) { + this.uid = uid; + } + /** + * @hibernate.many-to-one column="root_message_uid" + */ + public Message getRootMessage() { + return rootMessage; + } + public void setRootMessage(Message rootTopicUid) { + this.rootMessage = rootTopicUid; + } + /** + * @hibernate.many-to-one column="message_uid" + */ + public Message getMessage() { + return message; + } + public void setMessage(Message topicUid) { + this.message = topicUid; + } + /** + * @hibernate.property column="message_level" + */ + public short getMessageLevel() { + return messageLevel; + } + public void setMessageLevel(short topicLevel) { + this.messageLevel = topicLevel; + } +} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/MessageSeqDao.java 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,36 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + *USA + * + *http://www.gnu.org/licenses/gpl.txt + */ +package org.lamsfoundation.lams.tool.forum.persistence; + +import java.util.List; + +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; + +public class MessageSeqDao extends HibernateDaoSupport { + private static final String SQL_QUERY_FIND_TOPIC_THREAD = "from " + MessageSeq.class.getName() + + " where root_message_uid = ?"; + + public List getTopicThread(Long rootTopicId) { + return this.getHibernateTemplate().find(SQL_QUERY_FIND_TOPIC_THREAD,rootTopicId); + } + + +} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java,v diff -u -r1.9 -r1.10 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 2 Nov 2005 23:45:06 -0000 1.9 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 8 Nov 2005 06:15:02 -0000 1.10 @@ -2,9 +2,13 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; @@ -35,8 +39,11 @@ import org.lamsfoundation.lams.tool.forum.persistence.ForumException; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.persistence.MessageDao; +import org.lamsfoundation.lams.tool.forum.persistence.MessageSeq; +import org.lamsfoundation.lams.tool.forum.persistence.MessageSeqDao; import org.lamsfoundation.lams.tool.forum.util.ForumConstants; import org.lamsfoundation.lams.tool.forum.util.ForumToolContentHandler; +import org.lamsfoundation.lams.tool.forum.util.TopicComparator; import org.lamsfoundation.lams.usermanagement.User; @@ -48,10 +55,10 @@ */ public class ForumService implements IForumService,ToolContentManager,ToolSessionManager { private static final Logger log = Logger.getLogger(ForumService.class); - - private ForumDao forumDao; + private ForumDao forumDao; private AttachmentDao attachmentDao; private MessageDao messageDao; + private MessageSeqDao messageSeqDao; private ForumToolContentHandler toolContentHandler; private IRepositoryService repositoryService; @@ -91,17 +98,11 @@ Forum forum = new Forum(); forum.setUid(forumId); message.setForum(forum); - messageDao.saveOrUpdate(message); + messageDao.save(message); return message; } public Message editMessage(Message message) throws PersistenceException { - Message reloaded = this.getMessage(message.getUid()); - reloaded.setModifiedBy(message.getModifiedBy()); - reloaded.setIsAnonymous(message.getIsAnonymous()); - reloaded.setIsAuthored(message.getIsAuthored()); - reloaded.setSubject(message.getSubject()); - reloaded.setBody(message.getBody()); messageDao.saveOrUpdate(message); return message; } @@ -120,12 +121,12 @@ replyMessage.setToolSession(message.getToolSession()); replyMessage.setParent(message); messageDao.saveOrUpdate(replyMessage); - Set replies = message.getReplies(); - if (replies == null) { - replies = new HashSet(); - } - replies.add(replyMessage); - message.setReplies(replies); +// Set replies = message.getReplies(); +// if (replies == null) { +// replies = new HashSet(); +// } +// replies.add(replyMessage); +// message.setReplies(replies); messageDao.saveOrUpdate(message); return replyMessage; } @@ -334,7 +335,21 @@ return file; } - + public List getTopicThread(Long rootTopicId){ + + List unsortedThread = messageSeqDao.getTopicThread(rootTopicId); + Iterator iter = unsortedThread.iterator(); + MessageSeq msgSeq; + SortedMap map = new TreeMap(new TopicComparator()); + while(iter.hasNext()){ + msgSeq = (MessageSeq) iter.next(); + map.put(msgSeq,msgSeq.getMessage()); + } + return new ArrayList(map.values()); + } + public List getRootTopics(Long forumId){ + return messageDao.getRootTopics(forumId); + } public Forum createForum(Long contentId) throws PersistenceException { return null; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java,v diff -u -r1.7 -r1.8 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 2 Nov 2005 23:45:06 -0000 1.7 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 8 Nov 2005 06:15:02 -0000 1.8 @@ -45,4 +45,6 @@ public void deleteInstructionFile(Long contentID, Long uuID, Long versionID, String type) throws PersistenceException; public void deleteFromRepository(Long uuID, Long versionID) throws PersistenceException; + public List getTopicThread(Long rootTopicId); + public List getRootTopics(Long forumId); } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/TopicComparator.java 8 Nov 2005 06:15:02 -0000 1.1 @@ -0,0 +1,82 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + *USA + * + *http://www.gnu.org/licenses/gpl.txt + */ +package org.lamsfoundation.lams.tool.forum.util; + +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; + + +public class TopicComparator implements Comparator { + private static final Logger log = Logger.getLogger(TopicComparator.class); + + public int compare(Object obj0, Object obj1) { + if(!(obj0 instanceof MessageSeq) || !(obj1 instanceof MessageSeq)){ + log.error("Topic is not MessageSeq instance."); + return 0; + } + MessageSeq msgSeq1 = (MessageSeq) obj0; + MessageSeq msgSeq2 = (MessageSeq) obj1; + Message msg1 = msgSeq1.getMessage(); + Message msg2 = msgSeq2.getMessage(); + + short level1,level2; + level1 = msgSeq1.getMessageLevel(); + level2 = msgSeq2.getMessageLevel(); + Message parent1,parent2; + //choose the smaller level value + short lessLevel = level1>level2? level2:level1; + for(int compareLevel=0;compareLevel < lessLevel;compareLevel++){ + //init value, loop from current message + parent1 = msg1; + parent2 = msg2; + level1 = msgSeq1.getMessageLevel(); + level2 = msgSeq2.getMessageLevel(); + while(level1 > compareLevel){ + //get parent until assigned level + if(parent1 == null){ + log.error("Message "+ parent1 +" level "+ level1 +" has null parent"); + return 0; + } + parent1 = parent1.getParent(); + level1--; + } + while(level2 > compareLevel){ + //get parent until assigned level + if(parent2 == null){ + log.error("Message "+ parent2 +" level "+ level2 +" has null parent"); + return 0; + } + parent2 = parent2.getParent(); + level2--; + } + if(parent1 != parent2){ + //compare last modified date, the latest is at beginning + return parent1.getUpdated().after(parent2.getUpdated())?1:-1; + } + } + + return msg1.getUpdated().after(msg2.getUpdated())?1:-1; + } + +} Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/Attic/ApplicationResources.properties,v diff -u -r1.6 -r1.7 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/ApplicationResources.properties 1 Nov 2005 05:30:54 -0000 1.6 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/ApplicationResources.properties 8 Nov 2005 06:15:02 -0000 1.7 @@ -52,11 +52,6 @@ ## Forum -title.forum.add = Add Forum -title.forum.edit = Edit Forum -title.forum.open = Open Forum -title.forum.delete = Delete Forum - forum.label.title = Tile forum.label.instructions = Instructions forum.label.onlineInstructions = Online Instructions @@ -82,7 +77,9 @@ title.message.reply = Reply Message title.message.edit = Edit Message title.message.view=View Message +title.message.view.thread=Message Board title.message.delete=Delete Message + message.label.subject = Subject message.label.body = Body message.label.attachment = Attachment Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java,v diff -u -r1.12 -r1.13 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 3 Nov 2005 03:23:16 -0000 1.12 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/AuthoringAction.java 8 Nov 2005 06:15:02 -0000 1.13 @@ -48,6 +48,7 @@ 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.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.service.IForumService; import org.lamsfoundation.lams.tool.forum.util.ForumConstants; @@ -192,7 +193,7 @@ attSet.add(att); } message.setAttachments(attSet); - message.setCreatedBy(new Long(user.getUserID().intValue())); + message.setCreatedBy(new ForumUser(user)); if (topics == null) { topics = new ArrayList(); @@ -292,7 +293,7 @@ } //save message into database forumService = getForumManager(); - forumService.createMessage(forumId,newMsg.getMessage()); + forumService.editMessage(newMsg.getMessage()); } request.setAttribute(ForumConstants.AUTHORING_TOPICS_INDEX,topicIndex); @@ -324,7 +325,7 @@ newMsg.getMessage().setAttachments(null); //save message into database forumService = getForumManager(); - forumService.createMessage(forumId,newMsg.getMessage()); + forumService.editMessage(newMsg.getMessage()); } request.setAttribute(ForumConstants.SUCCESS_FLAG,"ATT_SUCCESS_FLAG"); Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java,v diff -u -r1.5 -r1.6 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 17 Oct 2005 05:29:20 -0000 1.5 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 8 Nov 2005 06:15:02 -0000 1.6 @@ -4,22 +4,39 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForm; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.forum.service.IForumService; +import org.lamsfoundation.lams.tool.forum.util.ForumConstants; import org.lamsfoundation.lams.tool.forum.core.GenericObjectFactoryImpl; import org.lamsfoundation.lams.tool.forum.core.PersistenceException; +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.ForumUser; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.web.forms.MessageForm; import org.lamsfoundation.lams.tool.forum.web.forms.ForumForm; import org.lamsfoundation.lams.tool.forum.permissions.Permission; import org.lamsfoundation.lams.tool.forum.permissions.PermissionManager; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import javax.servlet.ServletException; import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * Created by IntelliJ IDEA. @@ -29,148 +46,253 @@ * To change this template use File | Settings | File Templates. */ public class LearningAction extends Action { - private static Logger log = Logger.getLogger(org.lamsfoundation.lams.tool.forum.web.actions.LearningAction.class.getName()); - private IForumService forumManager; - private PermissionManager permissionManager; + private static Logger log = Logger.getLogger(LearningAction.class); + private IForumService forumService; - public LearningAction() { - this.forumManager = (IForumService) GenericObjectFactoryImpl.getInstance().lookup("forumManager"); - this.permissionManager = (PermissionManager) GenericObjectFactoryImpl.getInstance().lookup("permissionManager"); - } - public final ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String param = mapping.getParameter(); - if (param.equals("openForum")) { - return getForum(mapping, form, request, response); + if (param.equals("viewForum")) { + return viewForm(mapping, form, request, response); } - if (param.equals("editMessage")) { - return editMessage(mapping, form, request, response); + if (param.equals("viewThread")) { + return viewThread(mapping, form, request, response); } - if (param.equals("openTopic")) { - return getTopic(mapping, form, request, response); + if (param.equals("newTopic")) { + return newTopic(mapping, form, request, response); } - if (param.equals("getMessage")) { - return getMessage(mapping, form, request, response); + if (param.equals("replyTopic")) { + return replyTopic(mapping, form, request, response); + } + if (param.equals("createTopic")) { + return createTopic(mapping, form, request, response); } - if (param.equals("deleteMessage")) { - return deleteMessage(mapping, form, request, response); + if (param.equals("deleteTopic")) { + return deleteTopic(mapping, form, request, response); } - if (param.equals("post")) { - return post(mapping, form, request, response); + if (param.equals("editTopic")) { + return editTopic(mapping, form, request, response); } - if (param.equals("reply")) { - return replyToMessage(mapping, form, request, response); + if (param.equals("updateTopic")) { + return updateTopic(mapping, form, request, response); } + if (param.equals("deleteAttachment")) { + return deleteAttachment(mapping, form, request, response); + } return mapping.findForward("error"); } + + private ActionForward viewForm(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + Long forumId = new Long(WebUtil.readLongParam(request,"forumId")); + forumService = getForumManager(); + List rootTopics = forumService.getRootTopics(forumId); + request.setAttribute(ForumConstants.AUTHORING_TOPICS_LIST,MessageDTO.getMessageDTO(rootTopics)); + return mapping.findForward("success"); + } - public ActionForward post(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) - throws PersistenceException { - Long topicId = new Long((String) request.getParameter("topicId")); - Long parentId = new Long((String) request.getParameter("parentId")); - Message parent = forumManager.getMessage(parentId); - MessageForm messageForm = new MessageForm(); - Message reply = new Message(); - reply.setParent(parent); - reply.setSubject(parent.getSubject()); - messageForm.setTopicId(topicId); - messageForm.setParentId(parentId); - messageForm.setMessage(reply); - request.setAttribute("messageForm", messageForm); - return mapping.findForward("success"); - } + private ActionForward viewThread(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + Long topicId = new Long(WebUtil.readLongParam(request,"topicId")); + forumService = getForumManager(); + List topics = forumService.getTopics(topicId); + request.setAttribute(ForumConstants.AUTHORING_TOPICS,topics); + return mapping.findForward("success"); + } - public ActionForward getForum(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, Exception { - Long forumId = new Long((String) request.getParameter("forumId")); - Forum forum = forumManager.getForum(forumId); - List topicList = this.forumManager.getTopics(forum.getUid()); - ForumForm forumForm = new ForumForm(); - forumForm.setForum(forum); - request.setAttribute("forum", forumForm); - request.setAttribute("forumTopics", topicList); - return mapping.findForward("success"); - } + private ActionForward replyTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + Long parentId = new Long(WebUtil.readLongParam(request,"parentId")); + + MessageForm messageForm = (MessageForm) form; + Message message = messageForm.getMessage(); + message.setIsAuthored(false); + message.setCreated(new Date()); + message.setUpdated(new Date()); + Set attSet = null; + if(messageForm.getAttachmentFile() != null + && !StringUtils.isEmpty(messageForm.getAttachmentFile().getFileName())){ + forumService = getForumManager(); + Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile()); + //only allow one attachment, so replace whatever + attSet = new HashSet(); + attSet.add(att); + } + message.setAttachments(attSet); +// get login user (author) + HttpSession ss = SessionManager.getSession(); + //get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + + message.setCreatedBy(new ForumUser(user)); + //save message into database + forumService = getForumManager(); + forumService.replyToMessage(parentId,message); + return mapping.findForward("success"); + } + + private ActionForward newTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + if (topics == null) { + topics = new ArrayList(); + } + request.getSession().setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, topics); + return mapping.findForward("success"); + } + public ActionForward createTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException, PersistenceException { + + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + Long forumId = (Long) request.getSession().getAttribute(ForumConstants.FORUM_ID); + //get login user (author) + HttpSession ss = SessionManager.getSession(); + //get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + + MessageForm messageForm = (MessageForm) form; + Message message = messageForm.getMessage(); + message.setIsAuthored(true); + message.setCreated(new Date()); + message.setUpdated(new Date()); + Set attSet = null; + if(messageForm.getAttachmentFile() != null + && !StringUtils.isEmpty(messageForm.getAttachmentFile().getFileName())){ + forumService = getForumManager(); + Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile()); + //only allow one attachment, so replace whatever + attSet = new HashSet(); + attSet.add(att); + } + message.setAttachments(attSet); + message.setCreatedBy(new ForumUser(user)); + + if (topics == null) { + topics = new ArrayList(); + } + //save message into database + forumService = getForumManager(); + forumService.createMessage(forumId,message); + + topics.add(MessageDTO.getMessageDTO(message,user.getFirstName()+" "+user.getLastName())); + + request.setAttribute(ForumConstants.SUCCESS_FLAG,"CREATE_SUCCESS"); + request.getSession().setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, topics); + return mapping.findForward("success"); + } - public ActionForward editMessage(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, PersistenceException { - MessageForm messageForm = (MessageForm) form; - Message message = messageForm.getMessage(); - message = this.forumManager.editMessage(message); - request.setAttribute("topicId", messageForm.getTopicId()); - return mapping.findForward("success"); - } + public ActionForward deleteTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws PersistenceException { + + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + String topicIndex = (String) request.getParameter(ForumConstants.AUTHORING_TOPICS_INDEX); + int topicIdx = NumberUtils.stringToInt(topicIndex,-1); - public ActionForward replyToMessage(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, PersistenceException { - MessageForm messageForm = (MessageForm) form; - Message message = messageForm.getMessage(); - Long parentId = messageForm.getParentId(); - Message reply = this.forumManager.replyToMessage(parentId, message); - request.setAttribute("messageId", parentId); - request.setAttribute("topicId", messageForm.getTopicId()); - request.setAttribute("message", reply.getParent()); - return mapping.findForward("success"); - } - - public ActionForward deleteMessage(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, Exception { - Long messageId = new Long((String) request.getParameter("messageId")); - this.forumManager.deleteMessage(messageId); - return mapping.findForward("success"); - } - - public ActionForward getTopic(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, Exception { - Long topicId = new Long((String) request.getParameter("topicId")); - Message message = forumManager.getMessage(topicId); - request.setAttribute("message", message); - Long userId = null; - try { - userId = new Long((String) request.getParameter("userId")); - } catch (Exception e) { - //will always be null for now as we are handling tool independently from user for now later we have to get - //the current logged used from the session - } - boolean moderate = permissionManager.hasPermission(userId, Permission.MODERATE); - String permissionType = Permission.WRITE; - if (moderate) { - permissionType = Permission.MODERATE; - } - request.setAttribute("permission", permissionType); - return mapping.findForward("success"); + if(topicIdx != -1){ + MessageDTO topic = (MessageDTO) topics.remove(topicIdx); + if (topic != null && topic.getMessage() != null && topic.getMessage().getUid() != null) { + getForumManager().deleteMessage(topic.getMessage().getUid()); + } + request.getSession().setAttribute(ForumConstants.AUTHORING_TOPICS_LIST,topics); + } + + request.setAttribute(ForumConstants.SUCCESS_FLAG,"DELETE_SUCCESS"); + return mapping.getInputForward(); + } + + private IForumService getForumManager() { + if ( forumService == null ) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); + forumService = (IForumService) wac.getBean(ForumConstants.FORUM_SERVICE); + } + return forumService; + } + public ActionForward editTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws PersistenceException { + MessageForm msgForm = (MessageForm)form; + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + String topicIndex = (String) request.getParameter(ForumConstants.AUTHORING_TOPICS_INDEX); + int topicIdx = NumberUtils.stringToInt(topicIndex,-1); + if(topicIdx != -1){ + MessageDTO topic = (MessageDTO) topics.get(topicIdx); + if (topic != null) { + msgForm.setMessage(topic.getMessage()); + } + request.setAttribute(ForumConstants.AUTHORING_TOPICS,topic); + } + request.setAttribute(ForumConstants.AUTHORING_TOPICS_INDEX,topicIndex); + return mapping.findForward("success"); } - - public ActionForward getMessage(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) - throws IOException, ServletException, Exception { - Long topicId = new Long((String) request.getParameter("topicId")); - Long messageId = new Long((String) request.getParameter("messageId")); - Message message = forumManager.getMessage(messageId); - MessageForm messageForm = new MessageForm(); - messageForm.setMessage(message); - messageForm.setTopicId(topicId); - request.setAttribute("messageForm", messageForm); - return mapping.findForward("success"); - } - + + public ActionForward updateTopic(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws PersistenceException { + //get value from HttpSession + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + Long forumId = (Long) request.getSession().getAttribute(ForumConstants.FORUM_ID); + //get param from HttpServletRequest + String topicIndex = (String) request.getParameter(ForumConstants.AUTHORING_TOPICS_INDEX); + int topicIdx = NumberUtils.stringToInt(topicIndex,-1); + + if(topicIdx != -1){ + MessageForm messageForm = (MessageForm) form; + Message message = messageForm.getMessage(); + MessageDTO newMsg = (MessageDTO) topics.get(topicIdx); + if(newMsg.getMessage()== null) + newMsg.setMessage(new Message()); + newMsg.getMessage().setSubject(message.getSubject()); + newMsg.getMessage().setBody(message.getBody()); + newMsg.getMessage().setUpdated(new Date()); + if(messageForm.getAttachmentFile() != null + && !StringUtils.isEmpty(messageForm.getAttachmentFile().getFileName())){ + forumService = getForumManager(); + Attachment att = forumService.uploadAttachment(messageForm.getAttachmentFile()); + //only allow one attachment, so replace whatever + Set attSet = attSet = new HashSet(); + attSet.add(att); + newMsg.setHasAttachment(true); + newMsg.getMessage().setAttachments(attSet); + } + //save message into database + forumService = getForumManager(); + forumService.createMessage(forumId,newMsg.getMessage()); + } + + request.setAttribute(ForumConstants.AUTHORING_TOPICS_INDEX,topicIndex); + request.getSession().setAttribute(ForumConstants.AUTHORING_TOPICS_LIST, topics); + request.setAttribute(ForumConstants.SUCCESS_FLAG,"EDIT_SUCCESS"); + return mapping.findForward("success"); + } + + public ActionForward deleteAttachment(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws PersistenceException { + Long versionID = new Long(WebUtil.readLongParam(request,"versionID")); + Long uuID = new Long(WebUtil.readLongParam(request,"uuid")); + forumService = getForumManager(); + forumService.deleteFromRepository(uuID,versionID); +// get value from HttpSession + List topics = (List) request.getSession().getAttribute(ForumConstants.AUTHORING_TOPICS_LIST); + Long forumId = (Long) request.getSession().getAttribute(ForumConstants.FORUM_ID); + //get param from HttpServletRequest + String topicIndex = (String) request.getParameter(ForumConstants.AUTHORING_TOPICS_INDEX); + + int topicIdx = NumberUtils.stringToInt(topicIndex,-1); + + if(topicIdx != -1){ + MessageDTO newMsg = (MessageDTO) topics.get(topicIdx); + if(newMsg.getMessage()== null) + newMsg.setMessage(new Message()); + newMsg.getMessage().setUpdated(new Date()); + newMsg.setHasAttachment(false); + newMsg.getMessage().setAttachments(null); + //save message into database + forumService = getForumManager(); + forumService.createMessage(forumId,newMsg.getMessage()); + + } + request.setAttribute(ForumConstants.SUCCESS_FLAG,"ATT_SUCCESS_FLAG"); + request.setAttribute(ForumConstants.AUTHORING_TOPICS_INDEX,topicIndex); + return mapping.findForward("success"); + } + } Fisheye: Tag 1.4 refers to a dead (removed) revision in file `lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/util/MessageMapTag.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/web/WEB-INF/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/WEB-INF/Attic/struts-config.xml,v diff -u -r1.15 -r1.16 --- lams_tool_forum/web/WEB-INF/struts-config.xml 1 Nov 2005 05:30:55 -0000 1.15 +++ lams_tool_forum/web/WEB-INF/struts-config.xml 8 Nov 2005 06:15:02 -0000 1.16 @@ -34,10 +34,11 @@ - + @@ -158,43 +159,36 @@ - - + parameter="viewForum" scope="request"> + - - + parameter="viewThread" scope="request"> + - - + parameter="newTopic" scope="request"> + - - + parameter="replyTopic" scope="request"> + - - + parameter="editTopic" scope="request"> + - - - - - + parameter="deleteTopic" scope="request"> + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -58,80 +25,48 @@ - + - - - + + + - - - - + + + - - - - - - - - - - - - - - + + - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - --> - - - Index: lams_tool_forum/web/jsps/learning/create.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/learning/create.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/learning/create.jsp 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,11 @@ +<%@ include file="/includes/taglibs.jsp" %> + + +
+ +
+<%@ include file="/jsps/message/topicform.jsp" %> +
+
+
Index: lams_tool_forum/web/jsps/learning/reply.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/learning/reply.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/learning/reply.jsp 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,11 @@ +<%@ include file="/includes/taglibs.jsp" %> + + +
+ +
+<%@ include file="/jsps/message/topicreplyform.jsp" %> +
+
+
Index: lams_tool_forum/web/jsps/learning/viewforum.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/learning/viewforum.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/learning/viewforum.jsp 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,9 @@ +<%@ include file="/includes/taglibs.jsp" %> + + +
+ + <%@ include file="/jsps/message/topiclist.jsp" %> +
Index: lams_tool_forum/web/jsps/learning/viewthread.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/learning/Attic/viewthread.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/learning/viewthread.jsp 8 Nov 2005 06:15:01 -0000 1.1 @@ -0,0 +1,6 @@ +<%@ include file="/includes/taglibs.jsp" %> + + +
+ <%@ include file="/jsps/message/thread.jsp" %> +
Fisheye: Tag 1.4 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/learning/forum/open.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.6 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/learning/message/edit.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/learning/message/open.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.6 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/learning/message/reply.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.4 refers to a dead (removed) revision in file `lams_tool_forum/web/jsps/learning/message/includes/form.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_forum/web/jsps/message/topiclist.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/message/Attic/topiclist.jsp,v diff -u -r1.5 -r1.6 --- lams_tool_forum/web/jsps/message/topiclist.jsp 1 Nov 2005 00:07:17 -0000 1.5 +++ lams_tool_forum/web/jsps/message/topiclist.jsp 8 Nov 2005 06:15:02 -0000 1.6 @@ -1,13 +1,12 @@
Index: lams_tool_forum/web/jsps/message/topicreplyform.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/web/jsps/message/Attic/topicreplyform.jsp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tool_forum/web/jsps/message/topicreplyform.jsp 8 Nov 2005 06:15:02 -0000 1.1 @@ -0,0 +1,28 @@ +
+ + + + + + + + + + + + + + +
* +
* +
+    +
   + + + +