Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ICommonToolService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ICommonToolService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ICommonToolService.java (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -0,0 +1,30 @@ +package org.lamsfoundation.lams.tool.service; + +/** + * Interface contains methods that shall be implemented by all tools. + * + * @author Andrey Balan + */ +public interface ICommonToolService { + + /** + * Returns whether activity is grouped and therefore it is expected more than one tool session. + * + * @param toolContentID + * @return + */ + boolean isGroupedActivity(long toolContentID); + + /** + * Audit log the teacher has started editing activity in monitor. + * + * @param toolContentID + */ + void auditLogStartEditingActivityInMonitor(long toolContentID); + + /** + * Checks whether specified activity is the last one in the learning design. + */ + boolean isLastActivity(Long toolSessionId); + +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java =================================================================== diff -u -rf95c86fefb27fbad60e46af80e1a487bae53561a -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision f95c86fefb27fbad60e46af80e1a487bae53561a) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -29,6 +29,7 @@ import org.lamsfoundation.lams.confidencelevel.ConfidenceLevelDTO; import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dto.ActivityPositionDTO; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolSession; @@ -90,6 +91,11 @@ * in case of problems. */ String completeToolSession(Long toolSessionId, Long learnerId); + + /** + * Checks whether specified activity is the last one in the learning design. + */ + boolean isLastActivity(Long toolSessionId); /** * Method for updating an activity mark that tools can call Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java =================================================================== diff -u -rf95c86fefb27fbad60e46af80e1a487bae53561a -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision f95c86fefb27fbad60e46af80e1a487bae53561a) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -45,6 +45,7 @@ import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.dao.IDataFlowDAO; +import org.lamsfoundation.lams.learningdesign.dto.ActivityPositionDTO; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.service.ILessonService; @@ -60,6 +61,7 @@ import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.FileUtilException; +import org.lamsfoundation.lams.web.util.AttributeNames; /** * @author Jacky Fang @@ -138,6 +140,13 @@ } @Override + public boolean isLastActivity(Long toolSessionId) { + ActivityPositionDTO positionDTO = learnerService.getActivityPositionByToolSessionId(toolSessionId); + //check whether Activity is the last + return (positionDTO != null) && positionDTO.getLast(); + } + + @Override public void updateActivityMark(Double mark, String feedback, Integer userID, Long toolSessionID, Boolean markedInGradebook) { gradebookService.updateGradebookUserActivityMark(mark, feedback, userID, toolSessionID, markedInGradebook); Index: lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java =================================================================== diff -u -r9741bab9f0a884ea5221e404642f351f31f7c914 -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 9741bab9f0a884ea5221e404642f351f31f7c914) +++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -598,22 +598,4 @@ return decodedLessonId; } - - /** - * Finds activity position within Learning Design and stores it as request attribute. - */ - public static ActivityPositionDTO putActivityPositionInRequestByToolSessionId(Long toolSessionId, - HttpServletRequest request, ServletContext context) { - WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(context); - ILearnerService learnerService = (ILearnerService) wac.getBean("learnerService"); - if (learnerService == null) { - log.warn("Can not set activity position, no Learner service in servlet context."); - return null; - } - ActivityPositionDTO positionDTO = learnerService.getActivityPositionByToolSessionId(toolSessionId); - if (positionDTO != null) { - request.setAttribute(AttributeNames.ATTR_ACTIVITY_POSITION, positionDTO); - } - return positionDTO; - } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java (.../AttributeNames.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -90,6 +90,7 @@ public static final String ATTR_UPDATE_PROGRESS_BAR = "updateProgressBar"; public static final String ATTR_SESSION_STATUS = "sessionStatus"; public static final String ATTR_ACTIVITY_POSITION = "activityPosition"; + public static final String ATTR_IS_LAST_ACTIVITY = "isLastActivity"; public static final String ATTR_LEARNER_CONTENT_FOLDER = "learnerContentFolder"; public static final String ATTR_RATING_CRITERIAS = "ratingCriterias"; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -ra24b2c81786311deec67314c33cae025d820fb21 -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision a24b2c81786311deec67314c33cae025d820fb21) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -2407,6 +2407,11 @@ public void auditLogStartEditingActivityInMonitor(long toolContentID) { toolService.auditLogStartEditingActivityInMonitor(toolContentID); } + + @Override + public boolean isLastActivity(Long toolSessionId) { + return toolService.isLastActivity(toolSessionId); + } @Override public String getActivityEvaluation(Long toolContentId) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r67d7232f087b9f5c72ff41f7bbebe29cff81e099 -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 67d7232f087b9f5c72ff41f7bbebe29cff81e099) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -46,14 +46,15 @@ import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; import org.lamsfoundation.lams.tool.assessment.model.AssessmentUser; import org.lamsfoundation.lams.tool.assessment.model.QuestionReference; +import org.lamsfoundation.lams.tool.service.ICommonToolService; import org.lamsfoundation.lams.util.ExcelCell; /** * @author Andrey Balan * * Interface that defines the contract that all ShareAssessment service provider must follow. */ -public interface IAssessmentService { +public interface IAssessmentService extends ICommonToolService { /** * @param user @@ -489,21 +490,6 @@ String getMessage(String key); /** - * Returns whether activity is grouped and therefore it is expected more than one tool session. - * - * @param toolContentID - * @return - */ - boolean isGroupedActivity(long toolContentID); - - /** - * Audit log the teacher has started editing activity in monitor. - * - * @param toolContentID - */ - void auditLogStartEditingActivityInMonitor(long toolContentID); - - /** * Get the definitions for possible output for an activity, based on the toolContentId. These may be definitions * that are always available for the tool (e.g. number of marks for Multiple Choice) or a custom definition created * for a particular activity such as the answer to the third question contains the word Koala and hence the need for Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java =================================================================== diff -u -r67d7232f087b9f5c72ff41f7bbebe29cff81e099 -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 67d7232f087b9f5c72ff41f7bbebe29cff81e099) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/LearningController.java (.../LearningController.java) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -263,9 +263,7 @@ boolean isTimeLimitNotLaunched = (lastResult == null) || (lastResult.getTimeLimitLaunchedDate() == null); sessionMap.put(AssessmentConstants.ATTR_IS_TIME_LIMIT_NOT_LAUNCHED, isTimeLimitNotLaunched); - ActivityPositionDTO activityPosition = WebUtil.putActivityPositionInRequestByToolSessionId(toolSessionId, - request, applicationContext.getServletContext()); - sessionMap.put(AttributeNames.ATTR_ACTIVITY_POSITION, activityPosition); + sessionMap.put(AttributeNames.ATTR_IS_LAST_ACTIVITY, service.isLastActivity(toolSessionId)); // add define later support if (assessment.isDefineLater()) { Index: lams_tool_assessment/web/pages/learning/notebook.jsp =================================================================== diff -u -raced7ba6c1e7c5a9a50d3f64d8cdd96dd7e76194 -r3bb7e0141ae1cc15ccd737c95d90b5762a34ad61 --- lams_tool_assessment/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision aced7ba6c1e7c5a9a50d3f64d8cdd96dd7e76194) +++ lams_tool_assessment/web/pages/learning/notebook.jsp (.../notebook.jsp) (revision 3bb7e0141ae1cc15ccd737c95d90b5762a34ad61) @@ -37,7 +37,7 @@