Index: lams_tool_chat/conf/xdoclet/servlet-mappings.xml
===================================================================
diff -u -ra0a0be32ed471e0f1cc93896f68e916016bef92f -rbf784a8c0762cda26d7d4c5af7c51004ec6bcc2b
--- lams_tool_chat/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision a0a0be32ed471e0f1cc93896f68e916016bef92f)
+++ lams_tool_chat/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision bf784a8c0762cda26d7d4c5af7c51004ec6bcc2b)
@@ -1,12 +1,12 @@
action
- *.do
+ *.do
- Connector
- /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector
+ Connector
+ /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector
@@ -19,3 +19,8 @@
Jabber HTTP Binding Servlet
/JHB/
+
+
+ exportPortfolio
+ /exportPortfolio
+
Index: lams_tool_chat/conf/xdoclet/servlets.xml
===================================================================
diff -u -ra0a0be32ed471e0f1cc93896f68e916016bef92f -rbf784a8c0762cda26d7d4c5af7c51004ec6bcc2b
--- lams_tool_chat/conf/xdoclet/servlets.xml (.../servlets.xml) (revision a0a0be32ed471e0f1cc93896f68e916016bef92f)
+++ lams_tool_chat/conf/xdoclet/servlets.xml (.../servlets.xml) (revision bf784a8c0762cda26d7d4c5af7c51004ec6bcc2b)
@@ -61,4 +61,8 @@
org.lamsfoundation.lams.tool.chat.JabberHTTPBind.JHBServlet
+
+ exportPortfolio
+ org.lamsfoundation.lams.tool.chat.web.servlets.ExportServlet
+
Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/servlets/ExportServlet.java
===================================================================
diff -u
--- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/servlets/ExportServlet.java (revision 0)
+++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/servlets/ExportServlet.java (revision bf784a8c0762cda26d7d4c5af7c51004ec6bcc2b)
@@ -0,0 +1,156 @@
+/****************************************************************
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ * ****************************************************************
+ */
+
+/* $Id$ */
+
+package org.lamsfoundation.lams.tool.chat.web.servlets;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.lamsfoundation.lams.tool.chat.dto.ChatDTO;
+import org.lamsfoundation.lams.tool.chat.dto.ChatMessageDTO;
+import org.lamsfoundation.lams.tool.chat.dto.ChatSessionDTO;
+import org.lamsfoundation.lams.tool.chat.model.Chat;
+import org.lamsfoundation.lams.tool.chat.model.ChatSession;
+import org.lamsfoundation.lams.tool.chat.model.ChatUser;
+import org.lamsfoundation.lams.tool.chat.service.ChatServiceProxy;
+import org.lamsfoundation.lams.tool.chat.service.IChatService;
+import org.lamsfoundation.lams.tool.chat.util.ChatException;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet;
+import org.lamsfoundation.lams.web.session.SessionManager;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+
+public class ExportServlet extends AbstractExportPortfolioServlet {
+
+ private static final long serialVersionUID = -2829707715037631881L;
+
+ private static Logger logger = Logger.getLogger(ExportServlet.class);
+
+ private final String FILENAME = "chat_main.html";
+
+ private IChatService chatService;
+
+ protected String doExport(HttpServletRequest request,
+ HttpServletResponse response, String directoryName, Cookie[] cookies) {
+
+ if (chatService == null) {
+ chatService = ChatServiceProxy.getChatService(getServletContext());
+ }
+
+ try {
+ if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) {
+ request.getSession().setAttribute(AttributeNames.ATTR_MODE,
+ ToolAccessMode.LEARNER);
+ doLearnerExport(request, response, directoryName, cookies);
+ } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER
+ .toString())) {
+ request.getSession().setAttribute(AttributeNames.ATTR_MODE,
+ ToolAccessMode.TEACHER);
+ doTeacherExport(request, response, directoryName, cookies);
+ }
+ } catch (ChatException e) {
+ logger.error("Cannot perform export for chat tool.");
+ }
+
+ String basePath = request.getScheme() + "://" + request.getServerName()
+ + ":" + request.getServerPort() + request.getContextPath();
+ writeResponseToFile(basePath + "/pages/export/exportPortfolio.jsp",
+ directoryName, FILENAME, cookies);
+
+ return FILENAME;
+ }
+
+ private void doLearnerExport(HttpServletRequest request,
+ HttpServletResponse response, String directoryName, Cookie[] cookies)
+ throws ChatException {
+
+ logger.debug("doExportTeacher: toolContentID:" + toolSessionID);
+
+ // check if toolContentID available
+ if (toolSessionID == null) {
+ String error = "Tool Session ID is missing. Unable to continue";
+ logger.error(error);
+ throw new ChatException(error);
+ }
+
+ ChatSession chatSession = chatService.getSessionBySessionId(toolSessionID);
+
+ // get all messages for current user and filter.
+ UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(
+ AttributeNames.USER);
+
+ // get the chat user
+ ChatUser chatUser = chatService.getUserByUserIdAndSessionId(new Long(user.getUserID()), toolSessionID);
+
+ // get messages for this user.
+ List messageList = chatService.getMessagesForUser(chatUser);
+
+ // construct session DTO.
+ ChatSessionDTO sessionDTO = new ChatSessionDTO(chatSession, messageList);
+
+ // filter messages
+ for(ChatMessageDTO msg: sessionDTO.getMessageDTOs()) {
+ chatService.filterMessage(msg, chatSession.getChat());
+ }
+
+ ChatDTO chatDTO = new ChatDTO(chatSession.getChat());
+ chatDTO.getSessionDTOs().add(sessionDTO);
+
+ request.getSession().setAttribute("chatDTO", chatDTO);
+ }
+
+ public void doTeacherExport(HttpServletRequest request,
+ HttpServletResponse response, String directoryName, Cookie[] cookies)
+ throws ChatException {
+
+ logger.debug("doExportTeacher: toolContentID:" + toolContentID);
+
+ // check if toolContentID available
+ if (toolContentID == null) {
+ String error = "Tool Content ID is missing. Unable to continue";
+ logger.error(error);
+ throw new ChatException(error);
+ }
+
+ Chat chat = chatService.getChatByContentId(toolContentID);
+
+ ChatDTO chatDTO = new ChatDTO(chat);
+
+ for (Iterator iter = chat.getChatSessions().iterator(); iter.hasNext();) {
+ // NB session DTO will contain all messages in session unfiltered.
+ chatDTO.getSessionDTOs().add(new ChatSessionDTO((ChatSession) iter.next()));
+ }
+ request.getSession().setAttribute("chatDTO", chatDTO);
+ }
+
+}
Index: lams_tool_chat/web/pages/export/exportPortfolio.jsp
===================================================================
diff -u
--- lams_tool_chat/web/pages/export/exportPortfolio.jsp (revision 0)
+++ lams_tool_chat/web/pages/export/exportPortfolio.jsp (revision bf784a8c0762cda26d7d4c5af7c51004ec6bcc2b)
@@ -0,0 +1,47 @@
+
+
+<%@ include file="/common/taglibs.jsp"%>
+
+
+
+
+
+
+
+
+
+ ${chatDTO.title}
+
+
+
+ ${chatDTO.instructions}
+
+
+
+
+
+
+
+
+
+ ${session.sessionName}
+
+
+
+ ${message.from} : ${message.body}
+
+
+
+
+
+
+