Index: lams_learning/lib/lams/lams.jar =================================================================== diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r69343b4e0d3e3cc472943b0d8b15515d83573c39 Binary files differ Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java =================================================================== diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r69343b4e0d3e3cc472943b0d8b15515d83573c39 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision f0f13cd7ba427bab1d37dc3a8a14e290c98245ef) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) @@ -37,18 +37,7 @@ { - /** - * Returns a list of all the active Lessons a User is a Learner in. - * @param User the learner - * @return List of Lessons - * @throws LearnerServiceException in case of problems. - */ - public List getActiveLessons(User learner); - - - - /** * Gets the lesson object for the given key. * */ @@ -107,4 +96,12 @@ */ public String completeToolSession(long toolSessionId, User learner); + /** + * Retrieve all lessons that has been started, suspended or finished. All + * finished but archived lesson should not be loaded. + * + * @param learner the user who intend to start a lesson + * @return a list of active lessons. + */ + public List getActiveLessonsFor(User learner); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r69343b4e0d3e3cc472943b0d8b15515d83573c39 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision f0f13cd7ba427bab1d37dc3a8a14e290c98245ef) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) @@ -112,14 +112,12 @@ // Service Methods //--------------------------------------------------------------------- /** - * Returns a list of all the active Lessons a User is a Learner in. - * @param User the learner - * @return List of Lessons - * @throws LearnerServiceException in case of problems. + * Delegate to lesson dao to load up the lessons. + * @see org.lamsfoundation.lams.learning.service.ILearnerService#getActiveLessonsFor(org.lamsfoundation.lams.usermanagement.User) */ - public List getActiveLessons(User learner) + public List getActiveLessonsFor(User learner) { - return lessonDAO.getActiveLessonsForLearner(learner); + return this.lessonDAO.getActiveLessonsForLearner(learner); } public Lesson getLesson(Long lessonId) @@ -209,18 +207,18 @@ learnerProgress = progressEngine.calculateProgress(learner, lesson, completedActivity,learnerProgress); learnerProgressDAO.updateLearnerProgress(learnerProgress); - createToolSessionsIfNecessary(learnerProgress); + //createToolSessionsIfNecessary(learnerProgress); } catch (ProgressException e) { throw new LearnerServiceException(e.getMessage()); } - catch (LamsToolServiceException e) +/* catch (LamsToolServiceException e) { throw new LearnerServiceException(e.getMessage()); } +*/ - return learnerProgress; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java =================================================================== diff -u -r36c2ed010b8a3893b895d781be1a219f2380e62d -r69343b4e0d3e3cc472943b0d8b15515d83573c39 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 36c2ed010b8a3893b895d781be1a219f2380e62d) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerServiceProxy.java (.../LearnerServiceProxy.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) @@ -23,6 +23,7 @@ import javax.servlet.ServletContext; +import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; @@ -46,18 +47,30 @@ */ public static final ILearnerService getLearnerService(ServletContext servletContext) { - return (ILearnerService)getLearnerDomainService(servletContext); + return (ILearnerService)getDomainService(servletContext,"learnerService"); } /** + * Return the user management domain service object. It will delegate to + * the Spring helper method to retrieve the proper bean from Spring bean + * factory + * @param servletContext the servletContext for current application + * @return user management service object + */ + public static final IUserManagementService getUserManagementService(ServletContext servletContext) + { + return (IUserManagementService)getDomainService(servletContext,"userManagementService"); + } + + /** * Retrieve the proper Spring bean from bean factory. * @param servletContext the servletContext for current application * @return the Spring service bean. */ - private static Object getLearnerDomainService(ServletContext servletContext) + private static Object getDomainService(ServletContext servletContext,String serviceName) { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); - return wac.getBean("learnerService"); + return wac.getBean(serviceName); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java =================================================================== diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r69343b4e0d3e3cc472943b0d8b15515d83573c39 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision f0f13cd7ba427bab1d37dc3a8a14e290c98245ef) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) @@ -33,6 +33,7 @@ import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.usermanagement.*; +import org.lamsfoundation.lams.web.action.LamsAction; import org.lamsfoundation.lams.lesson.*; import org.lamsfoundation.lams.learningdesign.*; import org.springframework.web.context.WebApplicationContext; @@ -43,7 +44,7 @@ * Creation date: 01-12-2005 * */ -public class ActivityAction extends LearnerAction { +public class ActivityAction extends LamsAction { protected static final String ACTIVITY_REQUEST_ATTRIBUTE = "activity"; protected static final String LEARNER_PROGRESS_REQUEST_ATTRIBUTE = "learnerprogress"; @@ -152,4 +153,27 @@ return null; } + /** + * 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/LearnerAction.java =================================================================== diff -u -r0cbb25df35aa6fc1339d195f69b1aeef7a372680 -r69343b4e0d3e3cc472943b0d8b15515d83573c39 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 0cbb25df35aa6fc1339d195f69b1aeef7a372680) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 69343b4e0d3e3cc472943b0d8b15515d83573c39) @@ -21,40 +21,118 @@ package org.lamsfoundation.lams.learning.web.action; -import javax.servlet.http.*; +import java.io.IOException; +import java.util.List; -import org.lamsfoundation.lams.learning.web.bean.SessionBean; -import org.lamsfoundation.lams.web.action.Action; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +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.usermanagement.User; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; + + /** - * MyEclipse Struts - * Creation date: 01-12-2005 * + *
The action servlet that interacts with learner to start a lams learner + * module, join a user to the lesson and allows a user to exit a lesson.
+ * + *It is also responsible for the interaction between lams server and + * flash. Flash will call method implemented in this class to get progress + * data or trigger a lams server calculation here
+ * + * Note:It needs to extend theLamsDispatchAction
which has
+ * been customized to accomodate struts features to solve duplicate
+ * submission problem.
+ *
+ * @author Jacky Fang
+ * @since 3/03/2005
+ * @version 1.1
+ *
+ * ----------------XDoclet Tags--------------------
+ *
+ * @struts:action path="/learner"
+ * parameter="method"
+ * validate="false"
+ * @struts.action-exception key="error.system.survey" scope="request"
+ * type="org.lamsfoundation.lams.learning.service.LearnerServiceException"
+ * path=".systemError"
+ * handler="org.lamsfoundation.lams.util.CustomStrutsExceptionHandler"
+ * @struts:action-forward name="" path=""
+ *
+ * ----------------XDoclet Tags--------------------
+ *
*/
-public class LearnerAction extends Action {
+public class LearnerAction extends LamsDispatchAction
+{
- /**
- * 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);
- }
-
+
+ private static final String PARAM_USERDATA = "userId";
+ private static final String ATTR_USERDATA = "user";
+
+
+ /**
+ *
+ *
+ *
+ * @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
+ {
+
+ User learner = getUserData(request);
+
+ ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext());
+
+ List lessons = learnerService.getActiveLessonsFor(learner);
+
+
+ return null;
+ }
+
+
+ /**
+ * Helper method to retrieve the user data. We always load up from http
+ * session first to optimize the performance. If no session cache available,
+ * we load it from data source.
+ * @param request A standard Servlet HttpServletRequest class.
+ * @param surveyService the service facade of survey tool
+ * @return the user data value object
+ */
+ private User getUserData(HttpServletRequest request)
+ {
+ //retrieve complete user data from http session
+ User currentUser = (User) request.getSession()
+ .getAttribute(ATTR_USERDATA);
+ //if no session cache available, retrieve it from data source
+ if (currentUser == null)
+ {
+ int userId = WebUtil.readIntParam(request,PARAM_USERDATA);
+ currentUser = LearnerServiceProxy.getUserManagementService(getServlet().getServletContext())
+ .getUserById(new Integer(userId));
+ //create session cache
+ request.getSession().setAttribute(ATTR_USERDATA, currentUser);
+ }
+ return currentUser;
+ }
}
\ No newline at end of file
Index: lams_learning/web/WEB-INF/lib/lams.jar
===================================================================
diff -u -rf0f13cd7ba427bab1d37dc3a8a14e290c98245ef -r69343b4e0d3e3cc472943b0d8b15515d83573c39
Binary files differ