Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r3e36623a35a8f471dcf3a6b0de9eca8006a881e1 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 3e36623a35a8f471dcf3a6b0de9eca8006a881e1) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -168,7 +168,7 @@ activityDTO.setActivityUrl(Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + toolSession.getToolSessionId().toString()); - activityDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); + activityDTO.setOutput(this.getToolOutputsStr(activity, null, toolSession, learner)); } } @@ -254,7 +254,7 @@ + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + toolSession.getToolSessionId().toString()); - gUserDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); + gUserDTO.setOutput(this.getToolOutputsStr(activity, null, toolSession, learner)); } } @@ -574,6 +574,9 @@ Map userToGradebookUserActivityMap = getUserToGradebookUserActivityMap(activity); List userDTOs = new ArrayList(); + + SortedMap toolOutputNames = toolService.getOutputDefinitionsFromTool( + activity.getToolContentId(), ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION); for (User learner : learners) { GBUserGridRowDTO userDTO = new GBUserGridRowDTO(learner); @@ -604,7 +607,7 @@ userDTO.setActivityUrl(Configuration.get(ConfigurationKeys.SERVER_URL) + activity.getTool().getLearnerProgressUrl() + "&userID=" + learner.getUserId() + "&toolSessionID=" + toolSession.getToolSessionId().toString()); - userDTO.setOutput(this.getToolOutputsStr(activity, toolSession, learner)); + userDTO.setOutput(this.getToolOutputsStr(activity, toolOutputNames, toolSession, learner)); } } @@ -1367,24 +1370,29 @@ * Gets the outputs for a tool activity and returns the html for the ouputs cell in the grid * * @param toolAct + * @param toolOutputNames + * optional parameter which should be used when this object is already available and there is no need + * quering it from DB. if passing null it will be requested from DB * @param toolSession * @param learner * @return */ - private String getToolOutputsStr(ToolActivity toolAct, ToolSession toolSession, User learner) { + private String getToolOutputsStr(ToolActivity toolAct, SortedMap toolOutputNames, ToolSession toolSession, User learner) { String toolOutputsStr = ""; boolean noOutputs = true; if (toolAct != null && toolSession != null && learner != null) { - SortedMap map = toolService.getOutputDefinitionsFromTool( - toolAct.getToolContentId(), ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION); + if (toolOutputNames == null) { + toolOutputNames = toolService.getOutputDefinitionsFromTool(toolAct.getToolContentId(), + ToolOutputDefinition.DATA_OUTPUT_DEFINITION_TYPE_CONDITION); + } Set toolOutputs = new HashSet(); - if (map.keySet().size() > 0) { + if (toolOutputNames.keySet().size() > 0) { - for (String outputName : map.keySet()) { + for (String outputName : toolOutputNames.keySet()) { try { ToolOutput toolOutput = toolService.getOutputFromTool(outputName, toolSession, @@ -1405,7 +1413,6 @@ + toolAct.getActivityId() + ", continuing for other activities", e); } } - // toolOutputsStr += ""; } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionResultDAO.java =================================================================== diff -u -rb749eaf5465cf318976a6e036293ed9fded85434 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionResultDAO.java (.../AssessmentQuestionResultDAO.java) (revision b749eaf5465cf318976a6e036293ed9fded85434) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentQuestionResultDAO.java (.../AssessmentQuestionResultDAO.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -38,5 +38,15 @@ List getAssessmentQuestionResultList(Long assessmentUid, Long userId, Long questionUid); AssessmentQuestionResult getAssessmentQuestionResultByUid(Long questionResultUid); + + /** + * Returns question result mark from the last finished assessment result, and null if not available. + * + * @param assessmentUid + * @param userId + * @param questionSequenceId + * @return + */ + Float getQuestionResultMark(Long assessmentUid, Long userId, int questionSequenceId); } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -r56d960690e7e4d738f1a2200c383a05e4f786ab6 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 56d960690e7e4d738f1a2200c383a05e4f786ab6) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -36,6 +36,10 @@ AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId); AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); + + Float getLastFinishedAssessmentResultGrade(Long assessmentUid, Long userId); + + Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId); AssessmentResult getLastFinishedAssessmentResultBySessionId(Long sessionId, Long userId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java =================================================================== diff -u -rb749eaf5465cf318976a6e036293ed9fded85434 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java (.../AssessmentQuestionResultDAOHibernate.java) (revision b749eaf5465cf318976a6e036293ed9fded85434) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentQuestionResultDAOHibernate.java (.../AssessmentQuestionResultDAOHibernate.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -31,23 +31,31 @@ public class AssessmentQuestionResultDAOHibernate extends BaseDAOHibernate implements AssessmentQuestionResultDAO { - private static final String FIND_BY_UID = "from " + AssessmentQuestionResult.class.getName() - + " as r where r.uid = ?"; + private static final String FIND_BY_UID = "FROM " + AssessmentQuestionResult.class.getName() + + " AS r WHERE r.uid = ?"; - private static final String FIND_BY_ASSESSMENT_QUESTION_AND_USER = "from " + private static final String FIND_BY_ASSESSMENT_QUESTION_AND_USER = "FROM " + AssessmentQuestionResult.class.getName() - + " as q, " + + " AS q, " + AssessmentResult.class.getName() - + " as r " - + " where q.assessmentResult.uid = r.uid and r.assessment.uid = ? and r.user.userId =? and q.assessmentQuestion.uid =? order by r.startDate asc"; + + " AS r " + + " WHERE q.assessmentResult.uid = r.uid and r.assessment.uid = ? AND r.user.userId =? AND q.assessmentQuestion.uid =? ORDER BY r.startDate ASC"; - private static final String FIND_WRONG_ANSWERS_NUMBER = "select count(q) from " + private static final String FIND_WRONG_ANSWERS_NUMBER = "SELECT COUNT(q) FROM " + AssessmentQuestionResult.class.getName() - + " as q, " + + " AS q, " + AssessmentResult.class.getName() - + " as r " - + " where q.assessmentResult.uid = r.uid and r.assessment.uid = ? and r.user.userId =? and q.assessmentQuestion.uid =? and q.mark < q.assessmentQuestion.defaultGrade"; + + " AS r " + + " WHERE q.assessmentResult.uid = r.uid AND r.assessment.uid = ? AND r.user.userId =? AND q.assessmentQuestion.uid =? AND q.mark < q.assessmentQuestion.defaultGrade"; + + private static final String GET_ANSWER_MARK = "SELECT q.mark FROM " + + AssessmentQuestionResult.class.getName() + + " AS q, " + + AssessmentResult.class.getName() + + " AS r " + + " WHERE q.assessmentResult.uid = r.uid AND r.assessment.uid = ? AND (r.finishDate != null) AND r.user.userId =? AND q.assessmentQuestion.sequenceId =? ORDER BY r.startDate DESC LIMIT 1"; + @Override public int getNumberWrongAnswersDoneBefore(Long assessmentUid, Long userId, Long questionUid) { List list = getHibernateTemplate().find(FIND_WRONG_ANSWERS_NUMBER, new Object[] { assessmentUid, userId, questionUid }); if (list == null || list.size() == 0) { @@ -57,15 +65,26 @@ } } + @Override public List getAssessmentQuestionResultList(Long assessmentUid, Long userId, Long questionUid) { return getHibernateTemplate().find(FIND_BY_ASSESSMENT_QUESTION_AND_USER, new Object[] { assessmentUid, userId, questionUid }); } + @Override public AssessmentQuestionResult getAssessmentQuestionResultByUid(Long questionResultUid) { List list = getHibernateTemplate().find(FIND_BY_UID, new Object[] { questionResultUid }); if (list == null || list.size() == 0) return null; return (AssessmentQuestionResult) list.get(0); } + @Override + public Float getQuestionResultMark(Long assessmentUid, Long userId, int questionSequenceId) { + List list = getHibernateTemplate().find(GET_ANSWER_MARK, new Object[] { assessmentUid, userId, questionSequenceId }); + if (list == null || list.size() == 0) { + return null; + } else { + return ((Number) list.get(0)).floatValue(); + } + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -rbfaf345a2189bad446a83494c428c660882acd08 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision bfaf345a2189bad446a83494c428c660882acd08) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -30,59 +30,107 @@ public class AssessmentResultDAOHibernate extends BaseDAOHibernate implements AssessmentResultDAO { - private static final String FIND_BY_ASSESSMENT_AND_USER = "from " + private static final String FIND_BY_ASSESSMENT_AND_USER = "FROM " + AssessmentResult.class.getName() - + " as r where r.user.userId = ? and r.assessment.uid=? order by r.startDate asc"; + + " AS r WHERE r.user.userId = ? AND r.assessment.uid=? ORDER BY r.startDate DESC LIMIT 1"; - private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED = "from " + private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED = "FROM " + AssessmentResult.class.getName() - + " as r where r.user.userId = ? and r.assessment.uid=? and (r.finishDate != null) order by r.startDate asc"; + + " AS r WHERE r.user.userId = ? AND r.assessment.uid=? AND (r.finishDate != null) ORDER BY r.startDate ASC"; + + private static final String FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED_LIMIT1 = "FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.user.userId = ? AND r.assessment.uid=? AND (r.finishDate != null) ORDER BY r.startDate DESC LIMIT 1"; - private static final String FIND_BY_SESSION_AND_USER_AND_FINISHED = "from " + private static final String FIND_BY_SESSION_AND_USER_AND_FINISHED = "FROM " + AssessmentResult.class.getName() - + " as r where r.user.userId = ? and r.sessionId=? and (r.finishDate != null) order by r.startDate asc"; + + " AS r WHERE r.user.userId = ? AND r.sessionId=? AND (r.finishDate != null) ORDER BY r.startDate ASC"; + + private static final String FIND_BY_SESSION_AND_USER_AND_FINISHED_LIMIT1 = "FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.user.userId = ? AND r.sessionId=? AND (r.finishDate != null) ORDER BY r.startDate DESC LIMIT 1"; - private static final String FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER = "select count(*) from " + private static final String FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER = "select COUNT(*) FROM " + AssessmentResult.class.getName() - + " as r where r.user.userId=? and r.assessment.uid=? and (r.finishDate != null)"; + + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; + + private static final String FIND_ASSESSMENT_RESULT_GRADE = "select r.grade FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; + + private static final String FIND_ASSESSMENT_RESULT_TIME_TAKEN = "select r.finishDate - r.startDate FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; - private static final String FIND_BY_UID = "from " + AssessmentResult.class.getName() + " as r where r.uid = ?"; + private static final String FIND_BY_UID = "FROM " + AssessmentResult.class.getName() + " AS r WHERE r.uid = ?"; + @Override public List getAssessmentResults(Long assessmentUid, Long userId) { return getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED, new Object[] { userId, assessmentUid }); } + @Override public List getAssessmentResultsBySession(Long sessionId, Long userId) { return getHibernateTemplate().find(FIND_BY_SESSION_AND_USER_AND_FINISHED, new Object[] { userId, sessionId }); } + @Override public AssessmentResult getLastAssessmentResult(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); if (list == null || list.size() == 0) { return null; } else { - return (AssessmentResult) list.get(list.size()-1); + return (AssessmentResult) list.get(0); } } + @Override public AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId) { - List list = getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED, new Object[] { userId, assessmentUid }); + List list = getHibernateTemplate().find(FIND_BY_ASSESSMENT_AND_USER_AND_FINISHED_LIMIT1, new Object[] { userId, assessmentUid }); if (list == null || list.size() == 0) { return null; } else { - return (AssessmentResult) list.get(list.size()-1); + return (AssessmentResult) list.get(0); } } + @Override + public Float getLastFinishedAssessmentResultGrade(Long assessmentUid, Long userId) { + List list = getHibernateTemplate().find(FIND_ASSESSMENT_RESULT_GRADE, new Object[] { userId, assessmentUid }); + if (list == null || list.size() == 0) { + return null; + } else { + return ((Number) list.get(0)).floatValue(); + } + } + + @Override + public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { + + String FIND_ASSESSMENT_RESULT_TIME_TAKEN = "select UNIX_TIMESTAMP(r.finishDate) - UNIX_TIMESTAMP(r.startDate) FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; + + + List list = getHibernateTemplate().find(FIND_ASSESSMENT_RESULT_TIME_TAKEN, new Object[] { userId, assessmentUid }); + if (list == null || list.size() == 0) { + return null; + } else { + return ((Number) list.get(0)).intValue(); + } + } + + @Override public AssessmentResult getLastFinishedAssessmentResultBySessionId(Long sessionId, Long userId) { - List list = getHibernateTemplate().find(FIND_BY_SESSION_AND_USER_AND_FINISHED, new Object[] { userId, sessionId }); + List list = getHibernateTemplate().find(FIND_BY_SESSION_AND_USER_AND_FINISHED_LIMIT1, new Object[] { userId, sessionId }); if (list == null || list.size() == 0) { return null; } else { - return (AssessmentResult) list.get(list.size()-1); + return (AssessmentResult) list.get(0); } } + @Override public int getAssessmentResultCount(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_ASSESSMENT_RESULT_COUNT_BY_ASSESSMENT_AND_USER, new Object[] { userId, assessmentUid }); if (list == null || list.size() == 0) { @@ -92,6 +140,7 @@ } } + @Override public AssessmentResult getAssessmentResultByUid(Long assessmentResultUid) { List list = getHibernateTemplate().find(FIND_BY_UID, new Object[] { assessmentResultUid }); if (list == null || list.size() == 0) Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java =================================================================== diff -u -r2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision 2a68a250e3ae88b708a9a2a91e9f3439a4b6d7a9) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -154,9 +154,9 @@ * Get total score for a user. Will always return a ToolOutput object. */ private ToolOutput getTotalScore(IAssessmentService assessmentService, Long learnerId, Assessment assessment) { - AssessmentResult assessmentResult = assessmentService.getLastFinishedAssessmentResult(assessment.getUid(), learnerId); + Float assessmentResultGrade = assessmentService.getLastFinishedAssessmentResultGrade(assessment.getUid(), learnerId); - float totalScore = (assessmentResult == null) ? 0 : assessmentResult.getGrade(); + float totalScore = (assessmentResultGrade == null) ? 0 : assessmentResultGrade; return new ToolOutput(AssessmentOutputFactory.OUTPUT_NAME_LEARNER_TOTAL_SCORE, getI18NText( AssessmentOutputFactory.OUTPUT_NAME_LEARNER_TOTAL_SCORE, true), totalScore); @@ -166,12 +166,9 @@ * Get time taken for a specific user to accomplish this assessment. Will always return a ToolOutput object. */ private ToolOutput getTimeTaken(IAssessmentService assessmentService, Long learnerId, Assessment assessment) { - AssessmentResult assessmentResult = assessmentService.getLastFinishedAssessmentResult(assessment.getUid(), learnerId); + Integer assessmentResultTimeTaken = assessmentService.getLastFinishedAssessmentResultTimeTaken(assessment.getUid(), learnerId); - long timeTaken = 0; - if ((assessmentResult != null) && (assessmentResult.getFinishDate() != null)) { - timeTaken = (assessmentResult.getFinishDate().getTime() - assessmentResult.getStartDate().getTime()) / 1000; - } + long timeTaken = (assessmentResultTimeTaken == null) ? 0 : assessmentResultTimeTaken; return new ToolOutput(AssessmentOutputFactory.OUTPUT_NAME_LEARNER_TIME_TAKEN, getI18NText( AssessmentOutputFactory.OUTPUT_NAME_LEARNER_TIME_TAKEN, true), timeTaken); @@ -192,20 +189,10 @@ */ private ToolOutput getQuestionScore(IAssessmentService assessmentService, Long learnerId, Assessment assessment, int questionSequenceId) { - AssessmentResult assessmentResult = assessmentService.getLastFinishedAssessmentResult(assessment.getUid(), learnerId); + Float questionResultMarkDB = assessmentService.getQuestionResultMark(assessment.getUid(), learnerId, questionSequenceId); - float questionScore = 0; - - if (assessmentResult != null) { - for (AssessmentQuestionResult questionResult : assessmentResult.getQuestionResults()) { - if (questionResult.getAssessmentQuestion().getSequenceId() == questionSequenceId) { - questionScore = questionResult.getMark(); - break; - } - } - } - - return new ToolOutput(String.valueOf(questionSequenceId), "description", questionScore); + float questionResultMark = (questionResultMarkDB == null) ? 0 : questionResultMarkDB; + return new ToolOutput(String.valueOf(questionSequenceId), "description", questionResultMark); } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r470bccfbbff0b31c242b99313c76456a1bdf1462 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 470bccfbbff0b31c242b99313c76456a1bdf1462) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -660,6 +660,16 @@ } @Override + public Float getLastFinishedAssessmentResultGrade(Long assessmentUid, Long userId) { + return assessmentResultDao.getLastFinishedAssessmentResultGrade(assessmentUid, userId); + } + + @Override + public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { + return assessmentResultDao.getLastFinishedAssessmentResultTimeTaken(assessmentUid, userId); + } + + @Override public AssessmentResult getLastFinishedAssessmentResultNotFromChache(Long assessmentUid, Long userId) { AssessmentResult result = getLastFinishedAssessmentResult(assessmentUid, userId); assessmentQuestionDao.evict(result); @@ -678,6 +688,11 @@ } @Override + public Float getQuestionResultMark(Long assessmentUid, Long userId, int questionSequenceId) { + return assessmentQuestionResultDao.getQuestionResultMark(assessmentUid, userId, questionSequenceId); + } + + @Override public Long createNotebookEntry(Long sessionId, Integer userId, String entryText) { return coreNotebookService.createNotebookEntry(sessionId, CoreNotebookConstants.NOTEBOOK_TOOL, AssessmentConstants.TOOL_SIGNATURE, userId, "", entryText); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r470bccfbbff0b31c242b99313c76456a1bdf1462 -rc500d9384f365fe8b4c2997a799c44f92e8c26e9 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 470bccfbbff0b31c242b99313c76456a1bdf1462) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision c500d9384f365fe8b4c2997a799c44f92e8c26e9) @@ -220,6 +220,24 @@ AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); /** + * Return the latest *finished* result grade. + * + * @param assessmentUid + * @param userId + * @return + */ + Float getLastFinishedAssessmentResultGrade(Long assessmentUid, Long userId); + + /** + * Return the latest *finished* result grade. + * + * @param assessmentUid + * @param userId + * @return + */ + Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId); + + /** * Return the latest *finished* result (the same as the method above). But previously evicting it from the cache. It * might be useful in cases when we modify result and the use it during one request. * @@ -240,6 +258,16 @@ List getAssessmentQuestionResultList(Long assessmentUid, Long userId, Long questionUid); + /** + * Returns question result mark from the last finished assessment result, and null if not available. + * + * @param assessmentUid + * @param userId + * @param questionSequenceId + * @return + */ + Float getQuestionResultMark(Long assessmentUid, Long userId, int questionSequenceId); + Long createNotebookEntry(Long sessionId, Integer userId, String entryText); NotebookEntry getEntry(Long sessionId, Integer userId);