Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attachment.java =================================================================== diff -u -rbf0ceea359eb9a912512c325cd8e5ced14872b29 -r9a73adef86c080dc6aa2cbaf9147107234dd97b2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attachment.java (.../Attachment.java) (revision bf0ceea359eb9a912512c325cd8e5ced14872b29) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Attachment.java (.../Attachment.java) (revision 9a73adef86c080dc6aa2cbaf9147107234dd97b2) @@ -16,11 +16,11 @@ public class Attachment extends GenericEntity { protected byte[] data; protected boolean type; + protected String name; protected String contentType; public final static boolean TYPE_ONLINE = true; public final static boolean TYPE_OFFLINE = false; - /** * @hibernate.property column="DATA" * type="binary" @@ -52,4 +52,15 @@ this.contentType = contentType; } + /** + * @hibernate.property column="NAME" + */ + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java =================================================================== diff -u -r68d2e4654a6067aa6171ddef5b4014923a1eb213 -r9a73adef86c080dc6aa2cbaf9147107234dd97b2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision 68d2e4654a6067aa6171ddef5b4014923a1eb213) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Forum.java (.../Forum.java) (revision 9a73adef86c080dc6aa2cbaf9147107234dd97b2) @@ -65,7 +65,7 @@ * column="FORCEOFFLINE" * */ - public boolean getForceOffLine() { + public boolean getForceOffline() { return forceOffline; } @@ -74,7 +74,7 @@ * * */ - public void setForceOffLine(boolean forceOffline) { + public void setForceOffline(boolean forceOffline) { this.forceOffline = forceOffline; } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java =================================================================== diff -u -rbf0ceea359eb9a912512c325cd8e5ced14872b29 -r9a73adef86c080dc6aa2cbaf9147107234dd97b2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision bf0ceea359eb9a912512c325cd8e5ced14872b29) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java (.../Message.java) (revision 9a73adef86c080dc6aa2cbaf9147107234dd97b2) @@ -10,14 +10,15 @@ * @hibernate.joined-subclass-key column="id" * * @hibernate.query name="allMessages" query="from Message message" - * @hibernate.query name="allAuthoredMessagesByForum" query="from Message message where message.forum = ? AND message.isAuthored = true" + * @hibernate.query name="allAuthoredMessagesOfForum" query="from Message message where message.forum.id = ? AND message.isAuthored = true" * @hibernate.query name="allMessagesByForum" query="from Message message where message.forum = ?" */ public class Message extends GenericEntity { protected String subject; protected String body; protected boolean isAuthored; protected boolean isAnnonymous; + protected Message parent; protected Set replies; protected Forum forum; @@ -139,4 +140,15 @@ this.forum = forum; } + /** + * @param parent The parent of this Message + */ + public void setParent(Message parent) { + this.parent = parent; + } + + public Message getParent() { + return parent; + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManager.java =================================================================== diff -u -r0080bcb9712aa9c559ceb5f509927af142c2dd39 -r9a73adef86c080dc6aa2cbaf9147107234dd97b2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManager.java (.../ForumManager.java) (revision 0080bcb9712aa9c559ceb5f509927af142c2dd39) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManager.java (.../ForumManager.java) (revision 9a73adef86c080dc6aa2cbaf9147107234dd97b2) @@ -6,6 +6,7 @@ import java.io.File; import java.util.List; +import java.util.Map; /** * Created by IntelliJ IDEA. @@ -16,10 +17,12 @@ */ public interface ForumManager { - public Forum createForum(Forum forum, List attachments) throws PersistenceException; - public Forum editForum(Forum forum, List attachments) throws PersistenceException; + public Forum createForum(Forum forum, Map attachments, Map topics) throws PersistenceException; + public Forum editForum(Forum forum, Map attachments, Map topics) throws PersistenceException; public Forum getForum(Long forumId) throws PersistenceException; public void deleteForum(Long forumId) throws PersistenceException; + public List getTopics(Long forumId) throws PersistenceException; + public void deleteForumAttachment(Long attachmentId) throws PersistenceException; public Message createMessage(Long forumId, Message message) throws PersistenceException ; public Message editMessage(Message message) throws PersistenceException; public Message getMessage(Long messageId) throws PersistenceException; Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManagerImpl.java =================================================================== diff -u -r68caf9b2d4c0b75203c6957f3383d0731aa3aa87 -r9a73adef86c080dc6aa2cbaf9147107234dd97b2 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManagerImpl.java (.../ForumManagerImpl.java) (revision 68caf9b2d4c0b75203c6957f3383d0731aa3aa87) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumManagerImpl.java (.../ForumManagerImpl.java) (revision 9a73adef86c080dc6aa2cbaf9147107234dd97b2) @@ -6,10 +6,7 @@ import org.lamsfoundation.lams.tool.forum.core.PersistenceDelegate; import org.lamsfoundation.lams.tool.forum.core.PersistenceException; -import java.util.Set; -import java.util.HashSet; -import java.util.List; -import java.util.Iterator; +import java.util.*; /** * Created by IntelliJ IDEA. @@ -26,10 +23,11 @@ this.persistenceDelegate = persistenceDelegate; } - public Forum createForum(Forum forum, List attachments) throws PersistenceException { + public Forum createForum(Forum forum, Map attachments, Map topics) throws PersistenceException { if (attachments != null && attachments.size() !=0) { Set documents = new HashSet(); - Iterator it = attachments.iterator(); + Collection attachmentList = attachments.values(); + Iterator it = attachmentList.iterator(); while (it.hasNext()) { Attachment attachment = (Attachment) it.next(); persistenceDelegate.saveOrUpdate(attachment); @@ -38,28 +36,53 @@ forum.setAttachments(documents); } persistenceDelegate.saveOrUpdate(forum); + + //save topics of forum + if (topics != null && topics.size() !=0) { + Collection topicList = topics.values(); + Iterator it = topicList.iterator(); + while (it.hasNext()) { + Message message = (Message) it.next(); + message.setIsAuthored(true); + this.createMessage(forum.getId(), message); + } + } return forum; } - public Forum editForum(Forum forum, List attachments) throws PersistenceException { + public Forum editForum(Forum forum, Map attachments, Map topics) throws PersistenceException { Forum reloaded = this.getForum(forum.getId()); reloaded.setTitle(forum.getTitle()); reloaded.setCreatedBy(forum.getCreatedBy()); reloaded.setLockWhenFinished(forum.getLockWhenFinished()); - reloaded.setForceOffLine(forum.getForceOffLine()); + reloaded.setForceOffline(forum.getForceOffline()); reloaded.setAllowAnnomity(forum.getAllowAnnomity()); reloaded.setInstructions(forum.getInstructions()); reloaded.setOnlineInstructions(forum.getOnlineInstructions()); reloaded.setOfflineInstructions(forum.getOfflineInstructions()); - Set documents = new HashSet(); - Iterator it = attachments.iterator(); - while (it.hasNext()) { - Attachment attachment = (Attachment) it.next(); - persistenceDelegate.saveOrUpdate(attachment); - documents.add(attachment); + if (attachments != null && attachments.size() !=0) { + Set documents = reloaded.getAttachments(); + Collection attachmentList = attachments.values(); + Iterator it = attachmentList.iterator(); + while (it.hasNext()) { + Attachment attachment = (Attachment) it.next(); + persistenceDelegate.saveOrUpdate(attachment); + documents.add(attachment); + } + forum.setAttachments(documents); } - reloaded.setAttachments(documents); persistenceDelegate.saveOrUpdate(reloaded); + + //save topics of forum + if (topics != null && topics.size() !=0) { + Collection topicList = topics.values(); + Iterator it = topicList.iterator(); + while (it.hasNext()) { + Message message = (Message) it.next(); + this.createMessage(forum.getId(), message); + } + } + return forum; } @@ -72,6 +95,15 @@ persistenceDelegate.delete(forum); } + public List getTopics(Long forumId) throws PersistenceException { + return persistenceDelegate.findByNamedQuery(Message.class, "allAuthoredMessagesOfForum", forumId); + } + + public void deleteForumAttachment(Long attachmentId) throws PersistenceException { + Attachment attachment = (Attachment) this.persistenceDelegate.getById(Attachment.class, attachmentId); + persistenceDelegate.delete(attachment); + } + public Message createMessage(Long forumId, Message message) throws PersistenceException { message.setForum(this.getForum(forumId)); persistenceDelegate.saveOrUpdate(message); @@ -100,6 +132,8 @@ public Message replyToMessage(Long messageId, Message replyMessage) throws PersistenceException { Message message = this.getMessage(messageId); replyMessage.setForum(message.getForum()); + replyMessage.setParent(message); + persistenceDelegate.saveOrUpdate(replyMessage); Set replies = message.getReplies(); if (replies == null) { replies = new HashSet();