Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -79,6 +79,7 @@ + Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java =================================================================== diff -u -rcdb910b6cd3de106725e2c22ded380c5c0fab650 -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision cdb910b6cd3de106725e2c22ded380c5c0fab650) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -28,6 +28,7 @@ import java.util.List; import org.lamsfoundation.lams.learningdesign.*; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.lesson.*; import org.lamsfoundation.lams.usermanagement.User; @@ -39,6 +40,8 @@ */ public class ProgressEngine { + + private IActivityDAO activityDAO; /** * Holds a list of completed activity ids in one recursive move to next @@ -176,8 +179,7 @@ parent.getActivityTypeId()+" has been found"); //move to next activity within parent if not all children are completed. - // TODO make sure we really have a complex activity, not a CGLIB proxy of activity. - ComplexActivity complexParent = (ComplexActivity)parent; + ComplexActivity complexParent = (ComplexActivity) activityDAO.getActivityByActivityId(parent.getActivityId(),ComplexActivity.class); if (!complexParent.areChildrenCompleted(learnerProgress)) { Activity nextActivity = complexParent.getNextActivityByParent(completedActivity); @@ -194,7 +196,7 @@ if(isParallelWaitActivity(nextActivity)) { learnerProgress.setParallelWaiting(true); - learnerProgress.setNextActivity(null); + // learnerProgress.setNextActivity(null); populateCurrentCompletedActivityList(learnerProgress); } else @@ -250,4 +252,8 @@ { return nextActivity.getActivityTypeId().intValue()==ParallelWaitActivity.PARALLEL_WAIT_ACTIVITY_TYPE; } + + public void setActivityDAO(IActivityDAO activityDAO) { + this.activityDAO = activityDAO; + } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -294,6 +294,8 @@ { LearnerProgress progress = learnerProgressDAO.getLearnerProgressByLearner(learnerId, lesson); progress.setProgressState(activity, LearnerProgress.ACTIVITY_ATTEMPTED); + progress.setCurrentActivity(activity); + progress.setNextActivity(activity); learnerProgressDAO.saveLearnerProgress(progress); return progress; } @@ -512,30 +514,30 @@ */ 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."); + // getNextActivity will be null if we have finished the top part of a parallel activity. + + if(learnerProgress.getNextActivity()!=null) { - Activity nextActivity = learnerProgress.getNextActivity(); - try - { - for(Iterator i = nextActivity.getAllToolActivities().iterator();i.hasNext();) - { - ToolActivity toolActivity = (ToolActivity)i.next(); - createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson()); - } + Activity nextActivity = learnerProgress.getNextActivity(); + try + { + for(Iterator i = nextActivity.getAllToolActivities().iterator();i.hasNext();) + { + ToolActivity toolActivity = (ToolActivity)i.next(); + createToolSessionFor(toolActivity, learnerProgress.getUser(),learnerProgress.getLesson()); + } + } + catch (LamsToolServiceException e) + { + log.error("error occurred in 'createToolSessionFor':"+e.getMessage()); + throw new LearnerServiceException(e.getMessage()); + } + catch (ToolException e) + { + log.error("error occurred in 'createToolSessionFor':"+e.getMessage()); + throw new LearnerServiceException(e.getMessage()); + } } - catch (LamsToolServiceException e) - { - log.error("error occurred in 'createToolSessionFor':"+e.getMessage()); - throw new LearnerServiceException(e.getMessage()); - } - catch (ToolException e) - { - log.error("error occurred in 'createToolSessionFor':"+e.getMessage()); - throw new LearnerServiceException(e.getMessage()); - } } /** Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java =================================================================== diff -u -rcdb910b6cd3de106725e2c22ded380c5c0fab650 -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision cdb910b6cd3de106725e2c22ded380c5c0fab650) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -24,18 +24,14 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learning.web.action; -import javax.servlet.http.*; +import javax.servlet.http.HttpServletRequest; 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.form.ActivityForm; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; - +import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.web.action.LamsAction; -import org.lamsfoundation.lams.lesson.*; -import org.lamsfoundation.lams.learningdesign.*; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -82,34 +78,6 @@ */ protected void setLearnerProgress(HttpServletRequest request, LearnerProgress learnerProgress) { request.setAttribute(ActivityAction.LEARNER_PROGRESS_REQUEST_ATTRIBUTE, learnerProgress); - - SessionBean sessionBean = getSessionBean(request); - // Save progress in session for Flash request - sessionBean.setLearnerProgress(learnerProgress); - setSessionBean(sessionBean, request); } - /** - * Gets the session bean from session. - * @return SessionBean for this request, null if no session. - */ - protected SessionBean getSessionBean(HttpServletRequest request) { - HttpSession session = request.getSession(false); - if (session == null) { - return null; - } - SessionBean sessionBean = (SessionBean)session.getAttribute(SessionBean.NAME); - return sessionBean; - } - - /** - * Sets the session bean for this session. - */ - protected void setSessionBean(SessionBean sessionBean, HttpServletRequest request) { - HttpSession session = request.getSession(false); - if (session == null) { - return; - } - session.setAttribute(SessionBean.NAME, sessionBean); - } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -32,7 +32,6 @@ import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceException; -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; @@ -66,12 +65,6 @@ HttpServletResponse response) { ActivityMapping actionMappings = getActivityMapping(); - SessionBean sessionBean = getSessionBean(request); - if (sessionBean == null) { - // forward to the no session error page - return mapping.findForward(ActivityMapping.NO_SESSION_ERROR); - } - // check token if (!this.isTokenValid(request, true)) { // didn't come here from options page @@ -100,10 +93,6 @@ } LearningWebUtil.putActivityInRequest(request, progress.getNextActivity(), learnerService); - // Save progress in session for Flash request - sessionBean.setLearnerProgress(progress); - setSessionBean(sessionBean, request); - ActionForward forward = actionMappings.getProgressForward(progress,true,request, learnerService); return forward; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java =================================================================== diff -u -r0d064806d262c256111bd37392a61e856d83caee -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 0d064806d262c256111bd37392a61e856d83caee) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -80,7 +80,6 @@ ActivityMapping actionMappings = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); - //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext()); LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByID(request, getServlet().getServletContext()); String progressSummary = getProgressSummary(learnerProgress); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -83,7 +83,7 @@ form.setActivityId(activity.getActivityId()); - List activityURLs = new ArrayList(); + List activityURLs = new ArrayList(); Set subActivities = optionsActivity.getActivities(); Iterator i = subActivities.iterator(); int completedCount = 0; @@ -103,13 +103,11 @@ } form.setActivityURLs(activityURLs); - Integer minNum = optionsActivity.getMinNumberOfOptions(); - Integer maxNum = optionsActivity.getMaxNumberOfOptions(); - if ( ( minNum == null && completedCount > 0) || ( minNum != null && minNum.intValue() <= completedCount) ){ + if ( optionsActivity.getMinNumberOfOptionsNotNull().intValue() <= completedCount ) { form.setFinished(true); } - form.setMinimum(minNum!=null?optionsActivity.getMinNumberOfOptions().intValue():0); - form.setMaximum(maxNum!=null?optionsActivity.getMaxNumberOfOptions().intValue():subActivities.size()); + form.setMinimum(optionsActivity.getMinNumberOfOptionsNotNull().intValue()); + form.setMaximum(optionsActivity.getMaxNumberOfOptionsNotNull().intValue()); this.saveToken(request); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -209,7 +209,6 @@ FlashMessage message = null; try { - //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext()); LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByUser(request,getServlet().getServletContext()); if(log.isDebugEnabled()) Fisheye: Tag 2b6827b06455b7269c88062bd218427529ee0a4c refers to a dead (removed) revision in file `lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/SessionBean.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java =================================================================== diff -u -r0d064806d262c256111bd37392a61e856d83caee -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 0d064806d262c256111bd37392a61e856d83caee) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -135,7 +135,7 @@ else { - if (progress.isParallelWaiting()) + if (! progress.getCurrentActivity().isParallelActivity() && progress.isParallelWaiting()) { // progress is waiting, goto waiting page String strutsAction = this.getActivityMappingStrategy() @@ -147,7 +147,7 @@ else { // display next activity - if (progress.getPreviousActivity() instanceof ParallelActivity) + if (progress.getPreviousActivity()!=null && progress.getPreviousActivity().isParallelActivity()) { // if previous activity was a parallel activity then we need to // clear frames. Index: lams_learning/web/requestURL.jsp =================================================================== diff -u -r66f147e9d94ea10fa2c2cea70a78d6479096ddc7 -r2b6827b06455b7269c88062bd218427529ee0a4c --- lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 66f147e9d94ea10fa2c2cea70a78d6479096ddc7) +++ lams_learning/web/requestURL.jsp (.../requestURL.jsp) (revision 2b6827b06455b7269c88062bd218427529ee0a4c) @@ -42,9 +42,7 @@