Index: lams_learning/lib/lams/lams-tool-survey.jar =================================================================== diff -u -rf73c3d7878d6f6c013a43da96353e4e0983e1a61 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa Binary files differ Index: lams_learning/lib/lams/lams.jar =================================================================== diff -u -r0f3282629e7e668f49f50452d50baaddf4df7170 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa Binary files differ Index: lams_learning/lib/wddx/wddx-1.0a-lfl-0.2.jar =================================================================== diff -u Binary files differ Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java =================================================================== diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -21,13 +21,10 @@ package org.lamsfoundation.lams.learning.service; -import java.util.List; - -import org.lamsfoundation.lams.learning.progress.ProgressException; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.tool.service.LamsToolServiceException; +import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.usermanagement.User; /** * @@ -51,7 +48,7 @@ * @param lessionID identifies the Lesson to start * @throws LearnerServiceException in case of problems. */ - public LearnerProgress joinLesson(User learner, Lesson lesson) throws ProgressException,LamsToolServiceException; + public LearnerProgress joinLesson(User learner, Lesson lesson) ; /** @@ -103,5 +100,5 @@ * @param learner the user who intend to start a lesson * @return a list of active lessons. */ - public List getActiveLessonsFor(User learner); + public LessonDTO[] getActiveLessonsFor(User learner); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -23,15 +23,15 @@ package org.lamsfoundation.lams.learning.service; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import org.apache.log4j.Logger; import org.lamsfoundation.lams.learning.progress.ProgressEngine; import org.lamsfoundation.lams.learning.progress.ProgressException; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; - - import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ToolActivity; @@ -40,6 +40,7 @@ import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; import org.lamsfoundation.lams.lesson.dao.ILessonDAO; +import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; @@ -55,6 +56,8 @@ //--------------------------------------------------------------------- // Instance variables //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(LearnerService.class); + private ILearnerProgressDAO learnerProgressDAO; private ILessonDAO lessonDAO; private ProgressEngine progressEngine; @@ -115,9 +118,10 @@ * Delegate to lesson dao to load up the lessons. * @see org.lamsfoundation.lams.learning.service.ILearnerService#getActiveLessonsFor(org.lamsfoundation.lams.usermanagement.User) */ - public List getActiveLessonsFor(User learner) + public LessonDTO[] getActiveLessonsFor(User learner) { - return this.lessonDAO.getActiveLessonsForLearner(learner); + List activeLessons = this.lessonDAO.getActiveLessonsForLearner(learner); + return getLessonDataFor(activeLessons); } public Lesson getLesson(Long lessonId) @@ -144,7 +148,7 @@ * @throws LamsToolServiceException * @throws LearnerServiceException in case of problems. */ - public LearnerProgress joinLesson(User learner, Lesson lesson) throws ProgressException, LamsToolServiceException + public LearnerProgress joinLesson(User learner, Lesson lesson) { LearnerProgress learnerProgress = learnerProgressDAO.getLearnerProgressByLearner(learner,lesson); @@ -153,7 +157,15 @@ //create a new learner progress for new learner learnerProgress = new LearnerProgress(learner,lesson); - progressEngine.setUpStartPoint(learner, lesson,learnerProgress); + try + { + progressEngine.setUpStartPoint(learner, lesson,learnerProgress); + } + catch (ProgressException e) + { + log.error("error occurred in 'setUpStartPoint':"+e.getMessage()); + throw new LearnerServiceException(e.getMessage()); + } learnerProgressDAO.saveLearnerProgress(learnerProgress); } @@ -242,6 +254,7 @@ } catch (UnsupportedEncodingException e) { + log.error("error occurred in 'getProgressURL':"+e.getMessage()); throw new LearnerServiceException(e.getMessage()); } } @@ -258,21 +271,28 @@ * @param learnerProgress the learner progress we are processing. * @throws LamsToolServiceException */ - private void createToolSessionsIfNecessary(LearnerProgress learnerProgress) throws LamsToolServiceException + private void createToolSessionsIfNecessary(LearnerProgress learnerProgress) { if(learnerProgress.getNextActivity()==null) throw new LearnerServiceException("Error occurs in [" + "createToolSessionsIfNecessary], Can't initialize tool " + "sessions without knowing the activity."); Activity nextActivity = learnerProgress.getNextActivity(); - - for(Iterator i = nextActivity.getAllToolActivitiesFrom(nextActivity).iterator();i.hasNext();) + try { - ToolActivity toolActivity = (ToolActivity)i.next(); - if(shouldCreateToolSession(learnerProgress,toolActivity)) - createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson()); + for(Iterator i = nextActivity.getAllToolActivitiesFrom(nextActivity).iterator();i.hasNext();) + { + ToolActivity toolActivity = (ToolActivity)i.next(); + if(shouldCreateToolSession(learnerProgress,toolActivity)) + createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson()); + } } + catch (LamsToolServiceException e) + { + log.error("error occurred in 'createToolSessionFor':"+e.getMessage()); + throw new LearnerServiceException(e.getMessage()); + } } /** @@ -316,4 +336,21 @@ lamsToolService.notifyToolsToCreateSession(toolSession.getToolSessionId(), toolActivity); } + + + /** + * Create an array of lesson dto based a list of lessons. + * @param lessons the list of lessons. + * @return the lesson dto array. + */ + private LessonDTO[] getLessonDataFor(List lessons) + { + List lessonDTOList = new ArrayList(); + for(Iterator i=lessons.iterator();i.hasNext();) + { + Lesson currentLesson = (Lesson)i.next(); + lessonDTOList.add(currentLesson.getLessonData()); + } + return (LessonDTO[])lessonDTOList.toArray(new LessonDTO[lessonDTOList.size()]); + } } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java =================================================================== diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -46,8 +46,8 @@ */ public class ActivityAction extends LamsAction { - protected static final String ACTIVITY_REQUEST_ATTRIBUTE = "activity"; - protected static final String LEARNER_PROGRESS_REQUEST_ATTRIBUTE = "learnerprogress"; + public static final String ACTIVITY_REQUEST_ATTRIBUTE = "activity"; + public static final String LEARNER_PROGRESS_REQUEST_ATTRIBUTE = "learnerprogress"; /** * Get the learner service. Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java =================================================================== diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision f0f13cd7ba427bab1d37dc3a8a14e290c98245ef) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -23,65 +23,88 @@ import javax.servlet.http.*; +import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.web.bean.SessionBean; import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; -import org.lamsfoundation.lams.learningdesign.*; -import org.lamsfoundation.lams.lesson.*; +//import org.lamsfoundation.lams.learningdesign.*; +//import org.lamsfoundation.lams.lesson.*; /** * Action class to display an activity. * * XDoclet definition: * + * ----------------XDoclet Tags-------------------- * @struts:action path="/DisplayActivity" name="activityForm" * validate="false" scope="request" + * @struts:action-forward name="displayParallelActivity" path="/DisplayParallelActivity.do" + * @struts:action-forward name="displayOptionsActivity" path="/DisplayOptionsActivity.do" + * @struts:action-forward name="loadToolActivity" path="/LoadToolActivity.do" + * @struts:action-forward name="parallelWait" path="/parallelWait.do" + * @struts:action-forward name="lessonComplete" path="/lessonComplete.do" + * @struts:action-forward name="requestDisplay" path="/requestDisplay.do" * + * + * ----------------XDoclet Tags-------------------- */ public class DisplayActivityAction extends ActivityAction { - protected static String className = "DisplayActivity"; + //--------------------------------------------------------------------- + // Instance variables + //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(DisplayActivityAction.class); + + //protected static String className = "DisplayActivity"; /** * Gets an activity from the request (attribute) and forwards onto a * display action using the ActionMappings class. If no activity is * in request then use the current activity in learnerProgress. */ - public ActionForward execute( - ActionMapping mapping, - ActionForm actionForm, - HttpServletRequest request, - HttpServletResponse response) { + public ActionForward execute(ActionMapping mapping, + ActionForm actionForm, + HttpServletRequest request, + HttpServletResponse response) + { ActivityForm form = (ActivityForm) actionForm; ActivityMapping actionMappings = getActivityMapping(); SessionBean sessionBean = getSessionBean(request); - if (sessionBean == null) { - // forward to the no session error page + // forward to the no session error page + if (sessionBean == null) return mapping.findForward(ActivityMapping.NO_SESSION_ERROR); - } + if(log.isDebugEnabled()) + log.debug("Entering display activity: the session bean is" + + sessionBean.toString()); // Get learner //User learner = sessionBean.getLearner(); //Lesson lesson = sessionBean.getLesson(); - LearnerProgress learnerProgress = getLearnerProgress(request, form); - Activity activity = getActivity(request, form, learnerProgress); + //LearnerProgress learnerProgress = getLearnerProgress(request, form); + //Activity activity = getActivity(request, form, learnerProgress); - if (activity == null) { + //if (activity == null) { /*log.error(className+": No activity in request or session"); return mapping.findForward(actionMappings.ERROR);*/ // Get current activity from learnerProgress - activity = learnerProgress.getCurrentActivity(); - } - setActivity(request, activity); + // activity = learnerProgress.getCurrentActivity(); + //} + //setActivity(request, activity); - ActionForward forward = actionMappings.getActivityForward(activity, learnerProgress, false); - return forward; + //ActionForward forward = actionMappings.getActivityForward(activity, learnerProgress, false); + //return forward; + ActionForward forward =actionMappings.getProgressForward(sessionBean.getLearnerProgress(),false); + + if(log.isDebugEnabled()) + log.debug(forward.toString()); + + return forward; } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -22,19 +22,26 @@ package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; -import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.log4j.Logger; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; +import org.lamsfoundation.lams.learning.web.bean.SessionBean; + +import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.util.wddx.FlashMessage; +import org.lamsfoundation.lams.util.wddx.WDDXProcessor; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -60,27 +67,40 @@ * @struts:action path="/learner" * parameter="method" * validate="false" - * @struts.action-exception key="error.system.survey" scope="request" + * @struts.action-exception key="error.system.learner" scope="request" * type="org.lamsfoundation.lams.learning.service.LearnerServiceException" * path=".systemError" * handler="org.lamsfoundation.lams.util.CustomStrutsExceptionHandler" - * @struts:action-forward name="" path="" + * @struts:action-forward name="displayActivity" path="/DisplayActivity.do" * * ----------------XDoclet Tags-------------------- * */ public class LearnerAction extends LamsDispatchAction { - + //--------------------------------------------------------------------- + // Instance variables + //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(LearnerAction.class); - private static final String PARAM_USERDATA = "userId"; + //--------------------------------------------------------------------- + // Class level constants - session attributes + //--------------------------------------------------------------------- + private static final String PARAM_USER_ID = "userId"; + private static final String PARAM_LESSON_ID = "lessonId"; private static final String ATTR_USERDATA = "user"; - + //--------------------------------------------------------------------- + // Class level constants - Struts forward + //--------------------------------------------------------------------- + private static final String DISPLAY_ACTIVITY = "displayActivity"; + /** + *
The Struts dispatch method that retrieves all active lessons for a + * requested user from flash. The returned is structured as dto format + * rather than the whole lesson domain object and it is serialized into + * a wddx packet so as to be sent back to flash.
* - * - * * @param mapping An ActionMapping class that will be used by the Action class to tell * the ActionServlet where to send the end-user. * @@ -99,17 +119,76 @@ HttpServletResponse response) throws IOException, ServletException { + //initialize service object + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + //get learner. User learner = getUserData(request); + if(log.isDebugEnabled()) + log.debug("Getting active lessons for leaner:"+learner.getFullName()+"["+learner.getUserId()+"]"); + + LessonDTO [] lessons = learnerService.getActiveLessonsFor(learner); - ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + String activeLessons = WDDXProcessor.serialize(new FlashMessage("getActiveLessons",lessons)); - List lessons = learnerService.getActiveLessonsFor(learner); + if(log.isDebugEnabled()) + log.debug("Sending flash active lessons message:"+activeLessons); + response.getWriter().print(activeLessons); + //don't need to return a action forward because it sent the wddx packet + //back already. return null; } + /** + *The structs dispatch action that joins a learner into a lesson. The + * learner could either start a lesson or resume a lesson.
+ * + * @param mapping An ActionMapping class that will be used by the Action class to tell + * the ActionServlet where to send the end-user. + * + * @param form The ActionForm class that will contain any data submitted + * by the end-user via a form. + * @param request A standard Servlet HttpServletRequest class. + * @param response A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where + * the user is to go next. + * + * @throws IOException + * @throws ServletException + */ + public ActionForward joinLesson(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + //initialize service object + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + //get user and lesson based on request. + User learner = getUserData(request); + long lessonId = WebUtil.readLongParam(request,PARAM_LESSON_ID); + Lesson lesson = learnerService.getLesson(new Long(lessonId)); + + if(log.isDebugEnabled()) + log.debug("The learner ["+learner.getUserId()+"],["+learner.getFullName() + +"is joining the lesson ["+lessonId+"],["+lesson.getLessonName()+"]"); + + + LearnerProgress learnerProgress = learnerService.joinLesson(learner,lesson); + + if(log.isDebugEnabled()) + log.debug("The learner ["+learner.getUserId()+"] joined lesson. The" + +"porgress data is:"+learnerProgress.toString()); + + request.getSession().setAttribute(SessionBean.NAME,new SessionBean(learner, + lesson, + learnerProgress)); + + return mapping.findForward(DISPLAY_ACTIVITY); + } /** * Helper method to retrieve the user data. We always load up from http @@ -124,15 +203,22 @@ //retrieve complete user data from http session User currentUser = (User) request.getSession() .getAttribute(ATTR_USERDATA); + if(log.isDebugEnabled()&¤tUser!=null) + log.debug("user retrieved from http session:"+currentUser.getUserId()); + //if no session cache available, retrieve it from data source if (currentUser == null) { - int userId = WebUtil.readIntParam(request,PARAM_USERDATA); + int userId = WebUtil.readIntParam(request,PARAM_USER_ID); currentUser = LearnerServiceProxy.getUserManagementService(getServlet().getServletContext()) .getUserById(new Integer(userId)); + if(log.isDebugEnabled()&¤tUser!=null) + log.debug("user retrieved from database:"+currentUser.getUserId()); + //create session cache request.getSession().setAttribute(ATTR_USERDATA, currentUser); } return currentUser; } + } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/SessionBean.java =================================================================== diff -u -r24d875f5895d033e2d52904d83afdc7166a93378 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/SessionBean.java (.../SessionBean.java) (revision 24d875f5895d033e2d52904d83afdc7166a93378) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/SessionBean.java (.../SessionBean.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -36,6 +36,16 @@ private Lesson lesson; private LearnerProgress progress; + public SessionBean(User learner, + Lesson lesson, + LearnerProgress progress) + { + this.learner = learner; + this.lesson = lesson; + this.progress = progress; + } + + public User getLearner() { return learner; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java =================================================================== diff -u -r2ca1fa90ed42cdcd0438bad1b8282f39c995d2b1 -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 2ca1fa90ed42cdcd0438bad1b8282f39c995d2b1) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -35,6 +35,7 @@ import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.tool.service.LamsToolServiceException; +import org.lamsfoundation.lams.util.WebUtil; /** * This class contains the standard struts action mappings for errors as @@ -254,9 +255,12 @@ if (redirect) { String activityURL = strutsActionToURL(strutsAction, activity, false); actionForward = new RedirectingActionForward(activityURL); + actionForward.setName(WebUtil.getStrutsForwardNameFromPath(strutsAction)); } else { actionForward = new ForwardingActionForward(strutsAction); + actionForward.setName(WebUtil.getStrutsForwardNameFromPath(strutsAction)); + } return actionForward; @@ -277,4 +281,6 @@ public void setActivityMappingStrategy(ActivityMappingStrategy activityMappingStrategy) { this.activityMappingStrategy = activityMappingStrategy; } + + } Fisheye: Tag 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa refers to a dead (removed) revision in file `lams_learning/test/java/WEB-INF/spring/applicationContext.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa refers to a dead (removed) revision in file `lams_learning/test/java/WEB-INF/spring/dataAccessContext.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa refers to a dead (removed) revision in file `lams_learning/test/java/WEB-INF/spring/dbConnection.properties'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa refers to a dead (removed) revision in file `lams_learning/test/java/WEB-INF/spring/learningApplicationContext.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDblSubmitAction.java =================================================================== diff -u -r36c2ed010b8a3893b895d781be1a219f2380e62d -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDblSubmitAction.java (.../TestDblSubmitAction.java) (revision 36c2ed010b8a3893b895d781be1a219f2380e62d) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDblSubmitAction.java (.../TestDblSubmitAction.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -25,10 +25,10 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import org.lamsfoundation.lams.web.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.web.action.LamsAction; /** * MyEclipse Struts @@ -39,7 +39,7 @@ * validate="false" scope="request" * @struts:action-forward name="display" path="/test/dblSubmitTest.jsp" */ -public class TestDblSubmitAction extends Action { +public class TestDblSubmitAction extends LamsAction { public ActionForward execute( Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDisplayActivityAction.java =================================================================== diff -u --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDisplayActivityAction.java (revision 0) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestDisplayActivityAction.java (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -0,0 +1,96 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 + * ***********************************************************************/ + +package org.lamsfoundation.lams.learning.web.action; + +import org.lamsfoundation.lams.AbstractLamsStrutsTestCase; + + +/** + * + * @author Jacky Fang + * @since 2005-3-8 + * @version + * + */ +public class TestDisplayActivityAction extends AbstractLamsStrutsTestCase +{ + private static final String TEST_USER_ID = "2"; + private static final String TEST_LESSON_ID = "2"; + + /** + * Constructor for TestDisplayActivityAction. + * @param arg0 + */ + public TestDisplayActivityAction(String arg0) + { + super(arg0,getContextConfigLocation()); + } + + /** + * @see org.lamsfoundation.lams.AbstractLamsStrutsTestCase#getContextConfigLocation() + */ + private static String getContextConfigLocation() + { + return "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml " + +"/org/lamsfoundation/lams/tool/toolApplicationContext.xml " + +"applicationContext.xml " + +"/WEB-INF/spring/learningApplicationContext.xml"; + } + + /* + * @see AbstractLamsStrutsTestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + setConfigFile("/WEB-INF/struts/struts-config.xml"); + } + + /* + * @see AbstractLamsStrutsTestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /* + * Class under test for ActionForward execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) + */ + public void testDisplayToolLoadingPage() + { + //join the learner to the lesson before we test the display activity + //we don't assert here because it is meant be ensured by TestLearnerAction. + setRequestPathInfo("/learner.do"); + addRequestParameter("method", "joinLesson"); + addRequestParameter("userId", TEST_USER_ID); + addRequestParameter("lessonId", TEST_LESSON_ID); + actionPerform(); + + //test page loading. + setRequestPathInfo("/DisplayActivity.do"); + actionPerform(); + verifyForward("loadToolActivity"); + } + +} Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java =================================================================== diff -u --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (revision 0) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -0,0 +1,107 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 + * ***********************************************************************/ + +package org.lamsfoundation.lams.learning.web.action; + +import org.lamsfoundation.lams.AbstractLamsStrutsTestCase; +import org.lamsfoundation.lams.learning.web.bean.SessionBean; + + +/** + * + * @author Jacky Fang + * @since 2005-3-8 + * @version + * + */ +public class TestLearnerAction extends AbstractLamsStrutsTestCase +{ + + private static final String TEST_USER_ID = "2"; + private static final String TEST_LESSON_ID = "2"; + /* + * @see TestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + setConfigFile("/WEB-INF/struts/struts-config.xml"); + setRequestPathInfo("/learner.do"); + } + + /* + * @see TestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /** + * @see org.lamsfoundation.lams.AbstractLamsStrutsTestCase#getContextConfigLocation() + */ + private static String getContextConfigLocation() + { + return "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml " + +"/org/lamsfoundation/lams/tool/toolApplicationContext.xml " + +"applicationContext.xml " + +"/WEB-INF/spring/learningApplicationContext.xml"; + } + + /** + * Constructor for TestLearnerAction. + * @param testName + */ + public TestLearnerAction(String testName) + { + super(testName,getContextConfigLocation()); + } + + public void testGetActiveLessons() + { + addRequestParameter("method", "getActiveLessons"); + addRequestParameter("userId", TEST_USER_ID); + + actionPerform(); + + verifyNoActionErrors(); + } + + public void testJoinLesson() + { + addRequestParameter("method", "joinLesson"); + addRequestParameter("userId", TEST_USER_ID); + addRequestParameter("lessonId", TEST_LESSON_ID); + + actionPerform(); + + verifyForward("displayActivity"); + verifyNoActionErrors(); + + SessionBean bean = (SessionBean)httpSession.getAttribute(SessionBean.NAME); + assertNotNull("verify the session bean",bean); + assertEquals("verify the learner in the session bean",TEST_USER_ID,bean.getLearner().getUserId().toString()); + assertEquals("verify the lesson in the session bean",TEST_LESSON_ID,bean.getLesson().getLessonId().toString()); + assertNotNull("verify the learner progress",bean.getLearnerProgress()); + } + +} Index: lams_learning/test/web/WEB-INF/spring/applicationContext.xml =================================================================== diff -u --- lams_learning/test/web/WEB-INF/spring/applicationContext.xml (revision 0) +++ lams_learning/test/web/WEB-INF/spring/applicationContext.xml (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) @@ -0,0 +1,186 @@ + + + + +