Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml,v diff -u -r1.6 -r1.7 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml 27 Mar 2006 22:24:32 -0000 1.6 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/forumApplicationContext.xml 18 May 2006 01:57:58 -0000 1.7 @@ -97,6 +97,7 @@ + Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java,v diff -u -r1.25 -r1.26 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java 6 Apr 2006 06:40:39 -0000 1.25 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/Message.java 18 May 2006 01:57:57 -0000 1.26 @@ -31,6 +31,7 @@ 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; import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.NodeKey; @@ -452,5 +453,11 @@ public void setReport(ForumReport report) { this.report = report; } - + + 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/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.43 -r1.44 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 20 Apr 2006 04:54:38 -0000 1.43 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumService.java 18 May 2006 01:57:57 -0000 1.44 @@ -79,6 +79,7 @@ import org.lamsfoundation.lams.tool.forum.util.TopicComparator; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.audit.IAuditService; /** * @@ -100,15 +101,24 @@ private ForumToolContentHandler forumToolContentHandler; private IRepositoryService repositoryService; private ILearnerService learnerService; + private IAuditService auditService; private MessageService messageService; //--------------------------------------------------------------------- // Inversion of Control Methods - Method injection //--------------------------------------------------------------------- + public void setAuditService(IAuditService auditService) { + this.auditService = auditService; + } + + public IAuditService getAuditService( ) { + return auditService; + } + public void setMessageService(MessageService messageService) { this.messageService = messageService; } - public Forum updateForum(Forum forum) throws PersistenceException { + public Forum updateForum(Forum forum) throws PersistenceException { forumDao.saveOrUpdate(forum); return forum; } @@ -162,6 +172,7 @@ } public Message updateTopic(Message message) throws PersistenceException { + //update message messageDao.saveOrUpdate(message); @@ -178,10 +189,20 @@ public Message updateMessageHideFlag(Long messageId, boolean hideFlag) { Message message = getMessage(messageId); - message.setHideFlag(hideFlag); - - // update message - messageDao.update(message); + if ( message !=null ) { + if ( hideFlag ) { + auditService.logHideEntry(ForumConstants.TOOL_SIGNATURE, message.getCreatedBy().getUserId(), + message.getCreatedBy().getLoginName(), message.toString()); + } else { + auditService.logShowEntry(ForumConstants.TOOL_SIGNATURE, message.getCreatedBy().getUserId(), + message.getCreatedBy().getLoginName(), message.toString()); + } + + message.setHideFlag(hideFlag); + + // update message + messageDao.update(message); + } return message; } @@ -293,7 +314,7 @@ List unsortedThread = messageSeqDao.getTopicThread(rootTopicId); Iterator iter = unsortedThread.iterator(); MessageSeq msgSeq; - SortedMap map = new TreeMap(new TopicComparator()); + SortedMap map = new TreeMap(new TopicComparator()); while(iter.hasNext()){ msgSeq = (MessageSeq) iter.next(); map.put(msgSeq,msgSeq.getMessage()); @@ -313,7 +334,7 @@ //sorted by last post date Message msg; - SortedMap map = new TreeMap(new DateComparator()); + SortedMap map = new TreeMap(new DateComparator()); Iterator iter = topicsBySession.iterator(); while(iter.hasNext()){ msg = (Message) iter.next(); @@ -324,7 +345,7 @@ msg = (Message) iter.next(); map.put(msg.getLastReplyDate(),msg); } - return MessageDTO.getMessageDTO(new ArrayList(map.values())); + return MessageDTO.getMessageDTO(new ArrayList(map.values())); } @@ -355,14 +376,14 @@ public List getAuthoredTopics(Long forumUid) { List list = messageDao.getTopicsFromAuthor(forumUid); - TreeMap map = new TreeMap(new DateComparator()); + TreeMap map = new TreeMap(new DateComparator()); //sorted by create date Iterator iter = list.iterator(); while(iter.hasNext()){ Message topic = (Message) iter.next(); map.put(topic.getCreated(),topic); } - return MessageDTO.getMessageDTO(new ArrayList(map.values())); + return MessageDTO.getMessageDTO(new ArrayList(map.values())); } public void updateSession(ForumToolSession session) { @@ -419,10 +440,10 @@ * @param map * @return */ - private List getSortedMessageDTO(SortedMap map) { + private List getSortedMessageDTO(SortedMap map) { Iterator iter; MessageSeq msgSeq; - List msgDtoList = new ArrayList(); + List msgDtoList = new ArrayList(); iter =map.entrySet().iterator(); while(iter.hasNext()){ Map.Entry entry = (Entry) iter.next(); @@ -491,7 +512,7 @@ } } private Forum getDefaultForum(){ - Long defaultForumId = getToolDefaultContentIdBySignature(ForumConstants.TOOLSIGNNATURE); + Long defaultForumId = getToolDefaultContentIdBySignature(ForumConstants.TOOL_SIGNATURE); Forum defaultForum = getForumByContentId(defaultForumId); if(defaultForum == 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.27 -r1.28 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 6 Apr 2006 06:40:40 -0000 1.27 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/IForumService.java 18 May 2006 01:57:57 -0000 1.28 @@ -33,6 +33,7 @@ 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.util.audit.IAuditService; /** * User: conradb @@ -266,4 +267,8 @@ // Miscellaneous Method //************************************************************************************ public void releaseMarksForSession(Long sessionID); + + /** The topic updates (for monitoring) are done in the web layer, so need the audit service to log the updates */ + public IAuditService getAuditService( ); + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java,v diff -u -r1.24 -r1.25 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 6 Apr 2006 06:40:39 -0000 1.24 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/util/ForumConstants.java 18 May 2006 01:57:58 -0000 1.25 @@ -32,7 +32,7 @@ public interface ForumConstants { public static final int COMPLETED = 1; - public static final String TOOLSIGNNATURE = "lafrum11"; + public static final String TOOL_SIGNATURE = "lafrum11"; public final static int MAX_FILE_SIZE = 250 * 1000; public final static String FORUM_SERVICE = "forumService"; 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.27 -r1.28 --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 6 Apr 2006 06:40:40 -0000 1.27 +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java 18 May 2006 01:57:57 -0000 1.28 @@ -52,7 +52,6 @@ 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.ForumUserDao; import org.lamsfoundation.lams.tool.forum.persistence.Message; import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException; import org.lamsfoundation.lams.tool.forum.service.ForumServiceProxy; @@ -449,15 +448,29 @@ MessageForm messageForm = (MessageForm) form; Message message = messageForm.getMessage(); + + boolean makeAuditEntry = ToolAccessMode.TEACHER.equals((ToolAccessMode) request.getSession().getAttribute(ForumConstants.MODE)); + String oldMessageString = null; + // get PO from database and sync with Form Message messagePO = forumService.getMessage(topicId); + if ( makeAuditEntry ) { + oldMessageString = messagePO.toString(); + } messagePO.setSubject(message.getSubject()); messagePO.setBody(message.getBody()); messagePO.setUpdated(new Date()); messagePO.setModifiedBy(getCurrentUser(request)); setAttachment(messageForm, messagePO); + if ( makeAuditEntry ) { + forumService.getAuditService().logChange(ForumConstants.TOOL_SIGNATURE, + messagePO.getCreatedBy().getUserId(), messagePO.getCreatedBy().getLoginName(), + oldMessageString, messagePO.toString()); + } + // save message into database + // if we are in monitoring then we are probably editing some else's entry so log the change. forumService.updateTopic(messagePO); // echo back this topic thread into page @@ -536,11 +549,25 @@ Long uuID = new Long(WebUtil.readLongParam(request, "uuid")); forumService = getForumManager(); forumService.deleteFromRepository(uuID, versionID); + + boolean makeAuditEntry = ToolAccessMode.TEACHER.equals((ToolAccessMode) request.getSession().getAttribute(ForumConstants.MODE)); + String oldMessageString = null; + // get value from HttpSession Message messagePO = forumService.getMessage(topicId); + if ( makeAuditEntry ) { + oldMessageString = messagePO.toString(); + } messagePO.setUpdated(new Date()); messagePO.setModifiedBy(getCurrentUser(request)); messagePO.setAttachments(null); + + if ( makeAuditEntry ) { + forumService.getAuditService().logChange(ForumConstants.TOOL_SIGNATURE, + messagePO.getCreatedBy().getUserId(), messagePO.getCreatedBy().getLoginName(), + oldMessageString, messagePO.toString()); + } + // save message into database forumService.updateTopic(messagePO);