Index: lams_build/lib/lams/lams-learning.jar
===================================================================
diff -u -r3f60ecf7d3a92231a1089191ae75c68bc66e9595 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1
Binary files differ
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml
===================================================================
diff -u -r0977a832c3e57655f1031778702ce6ea0e122985 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1
--- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 0977a832c3e57655f1031778702ce6ea0e122985)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1)
@@ -32,6 +32,7 @@
Joins a User to a lesson as a learner. It could either be a new lesson @@ -376,6 +392,7 @@ if ( progress != null ) { progress.setRestarting(true); learnerProgressDAO.updateLearnerProgress(progress); + lessonService.removeLessonUserFromCache(progress.getLesson(),progress.getUser()); } else { String error = "Learner Progress "+progressId+" does not exist. Cannot exit lesson successfully."; log.error(error); @@ -392,13 +409,13 @@ } /** - * @see org.lamsfoundation.lams.learning.service.ILearnerService#performGrouping(java.lang.Long, java.util.List) + * @see org.lamsfoundation.lams.learning.service.ILearnerService#performGrouping(java.lang.Long, java.lang.Long) */ - public void performGrouping(Long groupingActivityId, List learners) + public void performGrouping(Long lessonId, Long groupingActivityId) { GroupingActivity groupingActivity = (GroupingActivity) activityDAO.getActivityByActivityId(groupingActivityId, GroupingActivity.class); if ( groupingActivity != null ) { - performGrouping(groupingActivity, learners); + performGrouping(lessonId, groupingActivity); } else { @@ -411,10 +428,11 @@ } /** - * @see org.lamsfoundation.lams.learning.service.ILearnerService#performGrouping(org.lamsfoundation.lams.learningdesign.GroupingActivity, java.util.List) + * @see org.lamsfoundation.lams.learning.service.ILearnerService#performGrouping(java.lang.Long, org.lamsfoundation.lams.learningdesign.GroupingActivity) */ - public void performGrouping(GroupingActivity groupingActivity, List learners) { - + public void performGrouping(Long lessonId, GroupingActivity groupingActivity) { + + List learners = lessonService.getActiveLessonLearners(lessonId.longValue()); Grouping grouping = groupingActivity.getCreateGrouping(); grouping.doGrouping(learners); groupingDAO.update(grouping); @@ -444,23 +462,26 @@ } /** - * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(java.lang.Long, org.lamsfoundation.lams.usermanagement.User, java.util.List) + * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(java.lang.Long, java.lang.Long, org.lamsfoundation.lams.usermanagement.User) */ - public boolean knockGate(Long gateActivityId, User knocker, List lessonLearners) { + public boolean knockGate(Long lessonId, Long gateActivityId, User knocker) { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateActivityId, GateActivity.class); if ( gate != null ) { - return knockGate(gate,knocker,lessonLearners); + return knockGate(lessonId, gate,knocker); } String error = "Gate activity "+gateActivityId+" does not exist. Cannot knock on gate."; log.error(error); throw new LearnerServiceException(error); } /** - * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(org.lamsfoundation.lams.learningdesign.GateActivity, org.lamsfoundation.lams.usermanagement.User, java.util.List) + * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(java.lang.Long, org.lamsfoundation.lams.learningdesign.GateActivity, org.lamsfoundation.lams.usermanagement.User) */ - public boolean knockGate(GateActivity gate, User knocker, List lessonLearners) + public boolean knockGate(Long lessonId, GateActivity gate, User knocker) { + //get all learners who have started the lesson + List lessonLearners = getActiveLearnersByLesson(lessonId); + boolean gateOpen = false; //knock the gate. if(gate.shouldOpenGateFor(knocker,lessonLearners)) Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java =================================================================== diff -u -r57e83f8443e586e862dae836429599459eade2c0 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision 57e83f8443e586e862dae836429599459eade2c0) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -25,7 +25,6 @@ package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; -import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -39,7 +38,6 @@ import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; -import org.lamsfoundation.lams.learning.web.util.LessonLearnerDataManager; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.PermissionGateActivity; import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; @@ -119,14 +117,10 @@ //initialize service object ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - //get all learners in the lesson - List currentLessonLearners = LessonLearnerDataManager.getAllLessonLearners(getServlet().getServletContext(), - learnerProgress.getLesson().getLessonId().longValue(), - learnerService); //knock the gate - boolean gateOpen = learnerService.knockGate(learnerProgress.getNextActivity().getActivityId(), - learnerProgress.getUser(), - currentLessonLearners); + boolean gateOpen = learnerService.knockGate(learnerProgress.getLesson().getLessonId(), + learnerProgress.getNextActivity().getActivityId(), + learnerProgress.getUser()); // if the gate is open, let the learner go to the next activity ( updating the cached learner progress on the way ) // pass only the ids in to completeActivity, so that the service level looks up the objects. // if we reuse our cached entries, hibernate may throw session errors (if the objects are CGLIB entities). Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java =================================================================== diff -u -r0977a832c3e57655f1031778702ce6ea0e122985 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 0977a832c3e57655f1031778702ce6ea0e122985) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -40,7 +40,6 @@ import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; -import org.lamsfoundation.lams.learning.web.util.LessonLearnerDataManager; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -120,11 +119,8 @@ ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - List currentLearners = LessonLearnerDataManager.getAllLessonLearners(getServlet().getServletContext(), - learnerProgress.getLesson().getLessonId().longValue(), - learnerService); - learnerService.performGrouping(learnerProgress.getNextActivity().getActivityId(), - currentLearners); + learnerService.performGrouping(learnerProgress.getLesson().getLessonId(), + learnerProgress.getNextActivity().getActivityId()); LearningWebUtil.putActivityInRequest(request, learnerProgress.getNextActivity(), learnerService); LearningWebUtil.setLessonData(learnerProgress.getLesson()); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -r0d064806d262c256111bd37392a61e856d83caee -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 0d064806d262c256111bd37392a61e856d83caee) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -38,7 +38,6 @@ import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; -import org.lamsfoundation.lams.learning.web.util.LessonLearnerDataManager; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.dto.ProgressActivityDTO; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -49,6 +48,7 @@ import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; /** @@ -116,59 +116,6 @@ } /** - *
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. - * - * @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 getActiveLessons(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws IOException, - ServletException - { - //initialize service object - ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - FlashMessage message = null; - try { - - //get learner. - User learner = LearningWebUtil.getUserData(getServlet().getServletContext()); - if(log.isDebugEnabled()) - log.debug("Getting active lessons for leaner:"+learner.getFullName()+"["+learner.getUserId()+"]"); - - LessonDTO [] lessons = learnerService.getActiveLessonsFor(learner); - - message = new FlashMessage("getActiveLessons",lessons); - - } catch (Exception e ) { - message = handleException(e, "getActiveLessons", learnerService); - } - - String wddxPacket = WDDXProcessor.serialize(message); - if(log.isDebugEnabled()) - log.debug("Sending flash active lessons message:"+message); - - response.getWriter().print(wddxPacket); - - //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.
* @@ -257,9 +204,6 @@ HttpServletResponse response) throws IOException, ServletException { - if(log.isDebugEnabled()) - log.debug("Exiting lesson..."); - //initialize service object ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); @@ -270,13 +214,10 @@ LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByUser(request,getServlet().getServletContext()); if(log.isDebugEnabled()) - log.debug("Lesson id is: "+learnerProgress.getLesson().getLessonId()); + log.debug("Exiting lesson, lesson id is: "+learnerProgress.getLesson().getLessonId()); learnerService.exitLesson(learnerProgress.getLearnerProgressId()); - LessonLearnerDataManager.removeLessonUserFromCache(getServlet().getServletContext(), - learnerProgress.getLesson(), - learnerProgress.getUser()); //send acknowledgment to flash as it is triggerred by flash message = new FlashMessage("exitLesson",mapping.findForward(EXIT).getPath()); @@ -292,6 +233,44 @@ } /** + * Gets the basic lesson details (name, descripton, etc) for a lesson. Contains a LessonDTO. + * Takes a single parameter lessonID + */ + public ActionForward getLesson(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + + //initialize service object + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + FlashMessage message = null; + try { + + Long lessonID = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + + if(log.isDebugEnabled()) + log.debug("get lesson..."+lessonID); + + LessonDTO dto = learnerService.getLessonData(lessonID); + + //send acknowledgment to flash as it is triggerred by flash + message = new FlashMessage("getLesson",dto); + + } catch (Exception e ) { + message = handleException(e, "getLesson", learnerService); + } + + String wddxPacket = WDDXProcessor.serialize(message); + if(log.isDebugEnabled()) + log.debug("Sending getLesson data message to flash:"+wddxPacket); + response.getWriter().print(wddxPacket); + return null; + } + + /** *The struts dispatch action to retrieve the progress data from the * server and tailor it into the object struture that expected by flash. * A wddx packet with object data struture is sent back in the end of this Fisheye: Tag 9c471a74c4816ae7dc393c66025d4a004b9e65f1 refers to a dead (removed) revision in file `lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LessonLearnerDataManager.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java =================================================================== diff -u -r0977a832c3e57655f1031778702ce6ea0e122985 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 0977a832c3e57655f1031778702ce6ea0e122985) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -347,16 +347,10 @@ public void testKnockSynchGateClosed() { - //setup lesson learner list - List lessonLearners = new LinkedList(); - lessonLearners.add(testUser); - User testUser2= usermanageService.getUserById(new Integer(1)); - lessonLearners.add(testUser2); - //get sync gate GateActivity synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); - boolean gateOpen = learnerService.knockGate(synchGate.getActivityId(),testUser,lessonLearners); + boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser); assertTrue("gate is closed",!gateOpen); synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); @@ -366,15 +360,12 @@ public void testKnockSynchGateOpen() { - List lessonLearners = new LinkedList(); - lessonLearners.add(testUser); User testUser2= usermanageService.getUserById(new Integer(1)); - lessonLearners.add(testUser2); //get sync gate GateActivity synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); - boolean gateOpen = learnerService.knockGate(synchGate.getActivityId(),testUser2,lessonLearners); + boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser2); assertTrue("gate is closed",gateOpen); synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGateAction.java =================================================================== diff -u -r7d5e18b6ddc40f4de3d34eefa114afc297724289 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGateAction.java (.../TestGateAction.java) (revision 7d5e18b6ddc40f4de3d34eefa114afc297724289) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGateAction.java (.../TestGateAction.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -27,11 +27,8 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; -import org.lamsfoundation.lams.learning.web.util.LessonLearnerDataManager; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; -import org.lamsfoundation.lams.usermanagement.User; /** @@ -91,8 +88,6 @@ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); initializeLearnerProgress(); - initializeUserMap(false); - actionPerform(); verifyNoActionErrors(); @@ -107,8 +102,6 @@ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); initializeLearnerProgress(); - initializeUserMap(true); - actionPerform(); verifyNoActionErrors(); @@ -125,21 +118,4 @@ httpSession.setAttribute(ActivityAction.LEARNER_PROGRESS_REQUEST_ATTRIBUTE, learnerProgress); } - /** - * - */ - private void initializeUserMap(boolean singleUser) - { - User testUser = LearningWebUtil.getUserData(context); - Lesson lesson = LearningWebUtil.getLessonData(request,context); - LessonLearnerDataManager.cacheLessonUser(context,lesson,testUser); - - if(!singleUser) - { - request.getSession().removeAttribute("user"); - User testUser2 = LearningWebUtil.getUserData(context); - LessonLearnerDataManager.cacheLessonUser(context,lesson,testUser2); - } - - } } Index: lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGroupingAction.java =================================================================== diff -u -r7d5e18b6ddc40f4de3d34eefa114afc297724289 -r9c471a74c4816ae7dc393c66025d4a004b9e65f1 --- lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGroupingAction.java (.../TestGroupingAction.java) (revision 7d5e18b6ddc40f4de3d34eefa114afc297724289) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/web/action/TestGroupingAction.java (.../TestGroupingAction.java) (revision 9c471a74c4816ae7dc393c66025d4a004b9e65f1) @@ -28,12 +28,9 @@ import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; -import org.lamsfoundation.lams.learning.web.util.LessonLearnerDataManager; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; -import org.lamsfoundation.lams.usermanagement.User; /** @@ -89,9 +86,6 @@ addRequestParameter(LearningWebUtil.PARAM_LESSON_ID, TEST_LESSON_ID); initializeLearnerProgress(); - - initializeUserMap(); - actionPerform(); verifyNoActionErrors(); @@ -142,14 +136,4 @@ learnerProgress); } - /** - * - */ - private void initializeUserMap() - { - User testUser = LearningWebUtil.getUserData(context); - Lesson lesson = LearningWebUtil.getLessonData(request,context); - - LessonLearnerDataManager.cacheLessonUser(context,lesson,testUser); - } }