Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java =================================================================== diff -u -r5075151fab1df5d600e602c117f0b4db2ee0e482 -r8e218cf691c1235001bd61a9e6f62c363f62124a --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 5075151fab1df5d600e602c117f0b4db2ee0e482) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/McAppConstants.java (.../McAppConstants.java) (revision 8e218cf691c1235001bd61a9e6f62c363f62124a) @@ -50,6 +50,7 @@ public static final int MAX_OPTION_COUNT = 25; public static final String QUESTION_AND_CANDIDATE_ANSWERS_KEY = "questionAndCandidateAnswersKey"; + public static final String CONFIDENCE_LEVELS_KEY = "confidenceLevelsMap"; /* * authoring mode constants Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McLearningController.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r8e218cf691c1235001bd61a9e6f62c363f62124a --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McLearningController.java (.../McLearningController.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McLearningController.java (.../McLearningController.java) (revision 8e218cf691c1235001bd61a9e6f62c363f62124a) @@ -24,6 +24,7 @@ import java.io.IOException; import java.util.Date; +import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -329,7 +330,7 @@ return null; } - protected List buildAnswerDtos(List answers, McContent content, HttpServletRequest request) { + protected List buildAnswerDtos(List answers, Map confidenceLevels, McContent content, HttpServletRequest request) { List answerDtos = new LinkedList<>(); @@ -367,10 +368,12 @@ answerDto.setMark(0); } - //handle confidence levels + // handle confidence levels if (content.isEnableConfidenceLevels()) { - int confidenceLevel = WebUtil.readIntParam(request, "confidenceLevel" + question.getUid()); - answerDto.setConfidenceLevel(confidenceLevel); + String wantedKey = "confidenceLevel" + question.getUid(); + Integer confidenceLevel = confidenceLevels.get(wantedKey); + if ( confidenceLevel != null ) + answerDto.setConfidenceLevel(confidenceLevel); } answerDtos.add(answerDto); @@ -397,8 +400,16 @@ List answers = McLearningController.parseLearnerAnswers(mcLearningForm, request, mcContent.isQuestionsSequenced()); + + Map learnerConfidenceLevels = null; + if (mcContent.isEnableConfidenceLevels()) + learnerConfidenceLevels = parseLearnerConfidenceLevels(mcLearningForm, request, + mcContent.isQuestionsSequenced()); + if (mcContent.isQuestionsSequenced()) { sessionMap.put(McAppConstants.QUESTION_AND_CANDIDATE_ANSWERS_KEY, answers); + if ( mcContent.isEnableConfidenceLevels() ) + sessionMap.put(McAppConstants.CONFIDENCE_LEVELS_KEY, learnerConfidenceLevels); } mcLearningForm.resetCa(request); @@ -411,7 +422,7 @@ } /* process the answers */ - List answerDtos = buildAnswerDtos(answers, mcContent, request); + List answerDtos = buildAnswerDtos(answers, learnerConfidenceLevels, mcContent, request); mcService.saveUserAttempt(user, answerDtos); //calculate total learner mark @@ -457,8 +468,15 @@ mcContent.isQuestionsSequenced()); sessionMap.put(McAppConstants.QUESTION_AND_CANDIDATE_ANSWERS_KEY, answers); + Map learnerConfidenceLevels = null; + if (mcContent.isEnableConfidenceLevels()) { + learnerConfidenceLevels = parseLearnerConfidenceLevels(mcLearningForm, request, + mcContent.isQuestionsSequenced()); + sessionMap.put(McAppConstants.CONFIDENCE_LEVELS_KEY, learnerConfidenceLevels); + } + //save user attempt - List answerDtos = buildAnswerDtos(answers, mcContent, request); + List answerDtos = buildAnswerDtos(answers, learnerConfidenceLevels, mcContent, request); mcService.saveUserAttempt(user, answerDtos); List learnerAnswersDTOList = mcService.getAnswersFromDatabase(mcContent, user); @@ -776,8 +794,12 @@ List answers = McLearningController.parseLearnerAnswers(mcLearningForm, request, mcContent.isQuestionsSequenced()); + Map learnerConfidenceLevels = null; + if (mcContent.isEnableConfidenceLevels()) + learnerConfidenceLevels = parseLearnerConfidenceLevels(mcLearningForm, request, + mcContent.isQuestionsSequenced()); - List answerDtos = buildAnswerDtos(answers, mcContent, request); + List answerDtos = buildAnswerDtos(answers, learnerConfidenceLevels, mcContent, request); mcService.saveUserAttempt(user, answerDtos); return null; @@ -822,6 +844,30 @@ return answers; } + private Map parseLearnerConfidenceLevels(McLearningForm mcLearningForm, HttpServletRequest request, + boolean isQuestionsSequenced) { + String httpSessionID = mcLearningForm.getHttpSessionID(); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(httpSessionID); + + Map confidenceLevels = new HashMap(); + if (isQuestionsSequenced) { + Map previousConfidenceLevels = (Map) sessionMap + .get(McAppConstants.CONFIDENCE_LEVELS_KEY); + if ( previousConfidenceLevels != null ) + confidenceLevels.putAll(previousConfidenceLevels); + } + + Map parameters = request.getParameterMap(); + Iterator iter = parameters.keySet().iterator(); + while (iter.hasNext()) { + String key = iter.next(); + if (key.startsWith("confidenceLevel")) { + confidenceLevels.put(key, WebUtil.readIntParam(request, key)); + } + } + return confidenceLevels; + } + private McQueUsr getCurrentUser(String toolSessionId) { // get back login user DTO Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java =================================================================== diff -u -r66b044dc18d78c8a61a15c197d0c2d6a1f989c18 -r8e218cf691c1235001bd61a9e6f62c363f62124a --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision 66b044dc18d78c8a61a15c197d0c2d6a1f989c18) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/web/controller/McMonitoringController.java (.../McMonitoringController.java) (revision 8e218cf691c1235001bd61a9e6f62c363f62124a) @@ -390,7 +390,7 @@ request.setAttribute(McAppConstants.ATTR_CONTENT, user.getMcSession().getMcContent()); request.setAttribute(McAppConstants.USER_ATTEMPTS, userAttempts); request.setAttribute(McAppConstants.TOOL_SESSION_ID, user.getMcSession().getMcSessionId()); - return (userAttempts == null || userAttempts.isEmpty()) ? null : "monitoring/masterDetailLoadUp"; + return "monitoring/masterDetailLoadUp"; } /**