Index: lams_learning/lib/lams/lams-tool-survey.jar =================================================================== diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 Binary files differ Index: lams_learning/lib/lams/lams.jar =================================================================== diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 Binary files differ Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java =================================================================== diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -110,4 +110,6 @@ public void exitLesson(LearnerProgress progress); + public Activity getActivity(Long activityId); + } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -34,6 +34,7 @@ import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.lesson.Lesson; @@ -60,6 +61,7 @@ private ILearnerProgressDAO learnerProgressDAO; private ILessonDAO lessonDAO; + private IActivityDAO activityDAO; private ProgressEngine progressEngine; private IToolSessionDAO toolSessionDAO; private ILamsToolService lamsToolService; @@ -111,6 +113,14 @@ public void setActivityMapping(ActivityMapping activityMapping) { this.activityMapping = activityMapping; } + + /** + * @param activityDAO The activityDAO to set. + */ + public void setActivityDAO(IActivityDAO activityDAO) + { + this.activityDAO = activityDAO; + } //--------------------------------------------------------------------- // Service Methods //--------------------------------------------------------------------- @@ -269,6 +279,14 @@ learnerProgressDAO.updateLearnerProgress(progress); } + /** + * @see org.lamsfoundation.lams.learning.service.ILearnerService#getActivity(java.lang.Long) + */ + public Activity getActivity(Long activityId) + { + return activityDAO.getActivityByActivityId(activityId); + } + //--------------------------------------------------------------------- // Helper Methods //--------------------------------------------------------------------- @@ -314,6 +332,7 @@ ToolActivity toolActivity) { ToolSession targetSession = null; + //TODO need to be changed according to the change grouping concept if(!toolActivity.getTool().getSupportsGrouping()) targetSession = toolSessionDAO.getToolSessionByLearner(learnerProgress.getUser(), toolActivity); @@ -363,5 +382,8 @@ } return (LessonDTO[])lessonDTOList.toArray(new LessonDTO[lessonDTOList.size()]); } + + + } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java =================================================================== diff -u -r69343b4e0d3e3cc472943b0d8b15515d83573c39 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -23,6 +23,8 @@ import javax.servlet.ServletContext; +import org.lamsfoundation.lams.learning.web.util.ActivityMapping; +import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -63,6 +65,26 @@ } /** + * Return the lams tool domain service object. It will delegate to the + * Spring helper method to retrieve the proper bean from Spring bean factory. + * @param serlvetContext the servletContext for current application + * @return tool service object + */ + public static final ILamsToolService getLamsToolService(ServletContext serlvetContext) + { + return (ILamsToolService)getDomainService(serlvetContext,"lamsToolService"); + } + + /** + * Return the activity mapping service object. + * @param serlvetContext the servletContext for current application + * @return the activity mapping service object. + */ + public static final ActivityMapping getActivityMapping(ServletContext serlvetContext) + { + return (ActivityMapping)getDomainService(serlvetContext,"activityMapping"); + } + /** * Retrieve the proper Spring bean from bean factory. * @param servletContext the servletContext for current application * @return the Spring service bean. Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -34,13 +34,19 @@ 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.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.dto.ProgressActivityDTO; + + 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; @@ -84,10 +90,7 @@ // Instance variables //--------------------------------------------------------------------- private static Logger log = Logger.getLogger(LearnerAction.class); - private static final String PARAM_USER_ID = "userId"; - private static final String PARAM_LESSON_ID = "lessonId"; - private static final String ATTR_USERDATA = "user"; - //private static final String PARAM_LEARNER_PROGRESS="?learnerProgressId="; + //--------------------------------------------------------------------- // Class level constants - Struts forward //--------------------------------------------------------------------- @@ -167,7 +170,6 @@ //get user and lesson based on request. User learner = LearningWebUtil.getUserData(request, getServlet().getServletContext()); - Lesson lesson = LearningWebUtil.getLessonData(request,getServlet().getServletContext()); @@ -320,7 +322,31 @@ HttpServletResponse response) throws IOException, ServletException { + if(log.isDebugEnabled()) + log.debug("Getting url for learner activity..."); + //get parameter + long activityId = WebUtil.readLongParam(request,LearningWebUtil.PARAM_ACTIVITY_ID); + //initialize service object + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + //getting requested object according to coming parameters + User learner = LearningWebUtil.getUserData(request, getServlet().getServletContext()); + Activity requestedActivity = learnerService.getActivity(new Long(activityId)); + + //preparing tranfer object for flash + ProgressActivityDTO activityDTO = new ProgressActivityDTO(new Long(activityId), + activityMapping.calculateActivityURLForProgressView(learner,requestedActivity)); + //send data back to flash. + String learnerActivityURL = WDDXProcessor.serialize(new FlashMessage("getLearnerActivityURL", + activityDTO)); + + if(log.isDebugEnabled()) + log.debug("Sending learner activity url data to flash:"+learnerActivityURL); + + //don't need to return a action forward because it sent the wddx packet + //back already. return null; } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java =================================================================== diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 47a0b22c0f3ff85ed2d419ad50912025d55c9cfa) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -28,13 +28,17 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ForwardingActionForward; import org.apache.struts.action.RedirectingActionForward; +import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.ParallelActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.tool.service.LamsToolServiceException; +import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.WebUtil; /** @@ -266,6 +270,44 @@ return actionForward; } + /** + * Calculate the activity url for progress view at learner side. + * @param learner the learner who owns the progress data + * @param activity the activity the learner want to view + * @return the url for that tool. + */ + public String calculateActivityURLForProgressView(User learner, Activity activity) + { + //Activity activity = learnerService.getActivity(activityId); + try + { + if(activity instanceof ToolActivity) + { + ToolSession toolSession = toolService.getToolSessionByActivity(learner,(ToolActivity) activity); + return ((ToolActivity)activity).getTool().getLearnerUrl() + +"&" + +WebUtil.PARAM_TOOL_SESSION_ID + +"=" + +toolSession.getToolSessionId().toString() + +"&" + +WebUtil.PARAM_MODE + +"=" + +ToolAccessMode.LEARNER; + } + else if(activity instanceof GroupingActivity) + //TODO need to be changed when group action servlet is done + return "/viewGrouping.do?"; + } + catch (LamsToolServiceException e) + { + //TODO define an exception at web layer + throw new LearnerServiceException(e.getMessage()); + } + + throw new LearnerServiceException("Fails to get the progress url view" + + " for activity["+activity.getActivityId().longValue()+"]"); + } + public void setToolService(ILamsToolService toolService) { this.toolService = toolService; } @@ -281,6 +323,4 @@ public void setActivityMappingStrategy(ActivityMappingStrategy activityMappingStrategy) { this.activityMappingStrategy = activityMappingStrategy; } - - } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java =================================================================== diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -49,9 +49,10 @@ //--------------------------------------------------------------------- // 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"; + public static final String PARAM_USER_ID = "userId"; + public static final String PARAM_LESSON_ID = "lessonId"; + public static final String ATTR_USERDATA = "user"; + public static final String PARAM_ACTIVITY_ID = "activityId"; /** * Helper method to retrieve the user data. We always load up from http Index: lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java =================================================================== diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -117,6 +117,7 @@ { return new String[] { "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml", "/org/lamsfoundation/lams/tool/toolApplicationContext.xml", + "/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml", "/org/lamsfoundation/lams/tool/survey/dataAccessContext.xml", "/org/lamsfoundation/lams/tool/survey/surveyApplicationContext.xml", "applicationContext.xml", Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java =================================================================== diff -u -r32e9a495b2ccacfc4febc13648d255f466742a03 -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (.../TestLearnerAction.java) (revision 32e9a495b2ccacfc4febc13648d255f466742a03) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestLearnerAction.java (.../TestLearnerAction.java) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -24,6 +24,7 @@ import org.lamsfoundation.lams.AbstractLamsStrutsTestCase; import org.lamsfoundation.lams.learning.web.bean.SessionBean; +import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; /** @@ -38,8 +39,10 @@ private static final String TEST_USER_ID = "2"; private static final String TEST_LESSON_ID = "2"; + private static final String TEST_ACTIVITY_ID = "26"; private static SessionBean joinedLessonBean = null; + /* * @see TestCase#setUp() */ @@ -65,6 +68,7 @@ { return "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml " +"/org/lamsfoundation/lams/tool/toolApplicationContext.xml " + +"/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml " +"applicationContext.xml " +"/WEB-INF/spring/learningApplicationContext.xml"; } @@ -81,7 +85,7 @@ public void testGetActiveLessons() { addRequestParameter("method", "getActiveLessons"); - addRequestParameter("userId", TEST_USER_ID); + addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID); actionPerform(); @@ -91,8 +95,8 @@ public void testJoinLesson() { addRequestParameter("method", "joinLesson"); - addRequestParameter("userId", TEST_USER_ID); - addRequestParameter("lessonId", TEST_LESSON_ID); + addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID); + addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); actionPerform(); @@ -109,8 +113,8 @@ { httpSession.setAttribute(SessionBean.NAME,joinedLessonBean); addRequestParameter("method", "getFlashProgressData"); - addRequestParameter("userId", TEST_USER_ID); - addRequestParameter("lessonId", TEST_LESSON_ID); + addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID); + addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); actionPerform(); verifyNoActionErrors(); @@ -119,8 +123,8 @@ public void testExitLesson() { addRequestParameter("method", "exitLesson"); - addRequestParameter("userId", TEST_USER_ID); - addRequestParameter("lessonId", TEST_LESSON_ID); + addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID); + addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); actionPerform(); @@ -129,4 +133,14 @@ verifyNoActionErrors(); } + public void testGetLearnerActivityURL() + { + addRequestParameter("method", "getLearnerActivityURL"); + addRequestParameter(LearningWebUtil.PARAM_USER_ID, TEST_USER_ID); + addRequestParameter(LearningWebUtil.PARAM_ACTIVITY_ID, TEST_ACTIVITY_ID); + + actionPerform(); + + verifyNoActionErrors(); + } } Index: lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml =================================================================== diff -u -red8afe78a454a4b3b9d2ae039ac12d7ad9dc809a -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 --- lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision ed8afe78a454a4b3b9d2ae039ac12d7ad9dc809a) +++ lams_learning/test/web/WEB-INF/spring/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 3b567a2a4db4064f9c2aec96ffd5789ff7634788) @@ -19,6 +19,7 @@ + @@ -42,7 +43,7 @@ - + http://localhost:8080/lams_learning/ Index: lams_learning/web/WEB-INF/lib/lams.jar =================================================================== diff -u -r47a0b22c0f3ff85ed2d419ad50912025d55c9cfa -r3b567a2a4db4064f9c2aec96ffd5789ff7634788 Binary files differ