Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumException.java =================================================================== diff -u -ree36bb343b77214b9bffd9a8e47dd9e8caa25813 -r1ef94892cf45b63377deb39499047080a4cf2d8c --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumException.java (.../ForumException.java) (revision ee36bb343b77214b9bffd9a8e47dd9e8caa25813) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/persistence/ForumException.java (.../ForumException.java) (revision 1ef94892cf45b63377deb39499047080a4cf2d8c) @@ -1,11 +1,11 @@ package org.lamsfoundation.lams.tool.forum.persistence; +import java.io.IOException; + /** - * Created by IntelliJ IDEA. * User: conradb * Date: 14/06/2005 * Time: 12:33:12 - * To change this template use File | Settings | File Templates. */ public class ForumException extends RuntimeException { @@ -21,4 +21,15 @@ public ForumException(String message, Throwable cause) { super(message, cause); } + + public ForumException() { + super(); + + } + + public ForumException(Throwable cause) { + super(cause); + + } + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumServiceProxy.java =================================================================== diff -u -ree36bb343b77214b9bffd9a8e47dd9e8caa25813 -r1ef94892cf45b63377deb39499047080a4cf2d8c --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumServiceProxy.java (.../ForumServiceProxy.java) (revision ee36bb343b77214b9bffd9a8e47dd9e8caa25813) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/service/ForumServiceProxy.java (.../ForumServiceProxy.java) (revision 1ef94892cf45b63377deb39499047080a4cf2d8c) @@ -22,14 +22,27 @@ import javax.servlet.ServletContext; +import org.lamsfoundation.lams.tool.ToolSessionManager; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class ForumServiceProxy { public static final IForumService getForumService(ServletContext servletContext){ + return (IForumService) getService(servletContext); + } + + public static ToolSessionManager getToolSessionManager(ServletContext servletContext) { + return (ToolSessionManager) getService(servletContext); + } + + /** + * @param servletContext + * @return + */ + private static Object getService(ServletContext servletContext) { WebApplicationContext context = WebApplicationContextUtils .getRequiredWebApplicationContext(servletContext); - return (IForumService)context.getBean("forumService"); + return context.getBean("forumService"); } - + } Index: lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java =================================================================== diff -u -re3a49cfedf88904e13c5286d6d70f169f5930a50 -r1ef94892cf45b63377deb39499047080a4cf2d8c --- lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision e3a49cfedf88904e13c5286d6d70f169f5930a50) +++ lams_tool_forum/src/java/org/lamsfoundation/lams/tool/forum/web/actions/LearningAction.java (.../LearningAction.java) (revision 1ef94892cf45b63377deb39499047080a4cf2d8c) @@ -18,12 +18,18 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.forum.dto.MessageDTO; import org.lamsfoundation.lams.tool.forum.persistence.Attachment; +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.Message; import org.lamsfoundation.lams.tool.forum.persistence.PersistenceException; +import org.lamsfoundation.lams.tool.forum.service.ForumServiceProxy; import org.lamsfoundation.lams.tool.forum.service.IForumService; import org.lamsfoundation.lams.tool.forum.util.ForumConstants; import org.lamsfoundation.lams.tool.forum.web.forms.MessageForm; @@ -145,17 +151,42 @@ */ private ActionForward finish(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - - //get sessionId from HttpServletRequest Long sessionId = (Long) request.getSession().getAttribute(AttributeNames.PARAM_TOOL_SESSION_ID); - forumService = getForumManager(); - ForumToolSession session = forumService.getSessionBySessionId(sessionId); - session.setStatus(ForumConstants.SESSION_STATUS_FINISHED); - forumService.updateSession(session); - + ToolAccessMode mode = (ToolAccessMode) request.getSession().getAttribute(AttributeNames.ATTR_MODE); + if (mode == ToolAccessMode.LEARNER) { + //get sessionId from HttpServletRequest + forumService = getForumManager(); + ForumToolSession session = forumService.getSessionBySessionId(sessionId); + session.setStatus(ForumConstants.SESSION_STATUS_FINISHED); + forumService.updateSession(session); + + ToolSessionManager sessionMgrService = ForumServiceProxy.getToolSessionManager(getServlet().getServletContext()); + + //get back login user DTO + //get session from shared session. + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + Long userID = new Long(user.getUserID().longValue()); + + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(sessionId, userID); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new ForumException(e); + } catch (ToolException e) { + throw new ForumException(e); + } catch (IOException e) { + throw new ForumException(e); + } + return null; + + + } //get all root topic to display on init page List rootTopics = forumService.getRootTopics(sessionId); request.setAttribute(ForumConstants.AUTHORING_TOPICS_LIST,rootTopics); + return mapping.findForward("success"); }