Index: lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java =================================================================== diff -u -rb70e2750284cb613bbe37fb30b69091d679c3bf4 -r79ecd521e801b87cfefe154777d21bcb6a238601 --- lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision b70e2750284cb613bbe37fb30b69091d679c3bf4) +++ lams_tool_chat/src/java/org/lamsfoundation/lams/tool/chat/web/actions/LearningAction.java (.../LearningAction.java) (revision 79ecd521e801b87cfefe154777d21bcb6a238601) @@ -26,30 +26,93 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.apache.struts.action.Action; 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.chat.dao.hibernate.ChatUserDAO; +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.ChatConstants; +import org.lamsfoundation.lams.tool.chat.util.ChatException; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; /** * @author * @version * - * @struts.action path="/learning" - * @struts.action-forward name="success" path="tiles:/learning/main" + * @struts.action path="/learning" + * @struts.action-forward name="success" path="tiles:/learning/main" */ public class LearningAction extends Action { private static Logger log = Logger.getLogger(LearningAction.class); - public ActionForward execute(ActionMapping mapping, ActionForm form, + private static final boolean MODE_OPTIONAL = false; + + private IChatService chatService; + +public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { - // TODO Auto-generated method stub - log.info("excuting learning action"); + // 'toolSessionID' and 'mode' paramters are expected to be present. + // TODO need to catch exceptions and handle errors. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, + MODE_OPTIONAL); + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + + // set up chatService + if (chatService == null) { + chatService = ChatServiceProxy.getChatService(this.getServlet() + .getServletContext()); + } + + // Retreive the session + ChatSession chatSession = chatService.getSessionBySessionId(toolSessionID); + if (chatSession == null) { + throw new ChatException("Cannot retreive session with toolSessionId" + toolSessionID); + } + + // Retrieve the current user + ChatUser chatUser = getCurrentUser(toolSessionID); + + // Create the room if it doesnt exist + if (chatSession.getJabberRoom() == null) { + chatService.createJabberRoom(chatSession); + } + + + request.setAttribute("XMPPDOMAIN", ChatConstants.XMPPDOMAIN); + request.setAttribute("USERNAME", chatUser.getLoginName()); + request.setAttribute("PASSWORD", chatUser.getLoginName()); + request.setAttribute("CONFERENCEROOM", chatSession.getJabberRoom()); + request.setAttribute("NICK", chatUser.getLoginName()); + return mapping.findForward("success"); - } + + } private ChatUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute( + AttributeNames.USER); + // attempt to retrieve user using userId and toolSessionId + ChatUser chatUser = chatService.getUserByUserIdAndSessionId(new Long( + user.getUserID().intValue()), toolSessionId); + + if (chatUser == null) { + ChatSession chatSession = chatService + .getSessionBySessionId(toolSessionId); + chatUser = chatService.createChatUser(user, chatSession); + } + + return chatUser; + } }