Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java =================================================================== diff -u -rb870f1d2089affc9df675604f5d509c86b9d1b78 -r58e095878c96cda00252c0ba5bd34a025d193116 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision b870f1d2089affc9df675604f5d509c86b9d1b78) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/ChatService.java (.../ChatService.java) (revision 58e095878c96cda00252c0ba5bd34a025d193116) @@ -73,6 +73,7 @@ import org.lamsfoundation.lams.tool.chat.dao.IChatMessageDAO; import org.lamsfoundation.lams.tool.chat.dao.IChatSessionDAO; import org.lamsfoundation.lams.tool.chat.dao.IChatUserDAO; +import org.lamsfoundation.lams.tool.chat.dto.ChatMessageDTO; import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatAttachment; import org.lamsfoundation.lams.tool.chat.model.ChatMessage; @@ -735,26 +736,11 @@ } public void filterMessage(Node message, Chat chat) { - if (!chat.getFilteringEnabled()) { - return; - } - - // get the filter - ChatMessageFilter filter = messageFilters.get(chat.getToolContentId()); - if (filter == null) { - // this is the first message we have see for this toolContentId - // update the available filters. - filter = updateMessageFilters(chat); - } - - // get the pattern - Pattern pattern = filter.getPattern(); + Pattern pattern = getFilterPattern(chat); if (pattern == null) { - // no pattern available. This occurs when filtering is enabled but - // no valid keywords have been defined. - return; + return; } - + // get the message body node Node body = getBodyElement(message); if (body == null) { @@ -771,7 +757,7 @@ // filter the message. Matcher matcher = pattern.matcher(bodyText.getNodeValue()); - bodyText.setNodeValue(matcher.replaceAll("***")); + bodyText.setNodeValue(matcher.replaceAll(ChatConstants.FILTER_REPLACE_TEXT)); } public void filterMessage(Node message) { @@ -791,7 +777,41 @@ Chat chat = getSessionByJabberRoom(jabberRoom).getChat(); filterMessage(message, chat); } + + public void filterMessage(ChatMessageDTO messageDTO, Chat chat) { + Pattern pattern = getFilterPattern(chat); + + if (pattern == null) { + return; + } + + Matcher matcher = pattern.matcher(messageDTO.getBody()); + messageDTO.setBody(matcher.replaceAll(ChatConstants.FILTER_REPLACE_TEXT)); + } + + private Pattern getFilterPattern(Chat chat) { + if (!chat.getFilteringEnabled()) { + return null; + } + + // get the filter + ChatMessageFilter filter = messageFilters.get(chat.getToolContentId()); + if (filter == null) { + // this is the first message we have see for this toolContentId + // update the available filters. + filter = updateMessageFilters(chat); + } + // get the pattern + Pattern pattern = filter.getPattern(); + if (pattern == null) { + // no pattern available. This occurs when filtering is enabled but + // no valid keywords have been defined. + return null; + } + return pattern; + } + public ChatMessageFilter updateMessageFilters(Chat chat) { ChatMessageFilter filter = new ChatMessageFilter(chat); messageFilters.put(chat.getToolContentId(), filter); @@ -1014,4 +1034,12 @@ IExportToolContentService exportContentService) { this.exportContentService = exportContentService; } + + public Map getMessageCountBySession(Long chatUID) { + return chatMessageDAO.getCountBySession(chatUID); + } + + public Map getMessageCountByFromUser(Long sessionUID) { + return chatMessageDAO.getCountByFromUser(sessionUID); + } } Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java =================================================================== diff -u -rb870f1d2089affc9df675604f5d509c86b9d1b78 -r58e095878c96cda00252c0ba5bd34a025d193116 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java (.../IChatService.java) (revision b870f1d2089affc9df675604f5d509c86b9d1b78) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/service/IChatService.java (.../IChatService.java) (revision 58e095878c96cda00252c0ba5bd34a025d193116) @@ -25,8 +25,10 @@ package org.lamsfoundation.lams.tool.chat.service; import java.util.List; +import java.util.Map; import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.tool.chat.dto.ChatMessageDTO; import org.lamsfoundation.lams.tool.chat.model.Chat; import org.lamsfoundation.lams.tool.chat.model.ChatAttachment; import org.lamsfoundation.lams.tool.chat.model.ChatMessage; @@ -220,6 +222,13 @@ /** * + * @param messageDTO + * @param chat + */ + public void filterMessage(ChatMessageDTO messageDTO, Chat chat); + + /** + * * @param messageUID * @return */ @@ -230,4 +239,8 @@ public void auditEditMessage(ChatMessage chatMessage, String messageBody); public void auditHideShowMessage(ChatMessage chatMessage, boolean messageHidden ); + + public Map getMessageCountBySession(Long chatUID); + + public Map getMessageCountByFromUser(Long sessionUID); } \ No newline at end of file