Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml =================================================================== diff -u -rb298c498f26d7e881bc2a2064d62988c51be3b1a -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision b298c498f26d7e881bc2a2064d62988c51be3b1a) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/gradebookApplicationContext.xml (.../gradebookApplicationContext.xml) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -16,6 +16,7 @@ + Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rd0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision d0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -66,6 +66,7 @@ import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; +import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputValue; @@ -105,6 +106,7 @@ private ILamsCoreToolService toolService; private IGradebookDAO gradebookDAO; private ILearnerProgressDAO learnerProgressDAO; + private ILessonDAO lessonDAO; private ILessonService lessonService; private IUserManagementService userService; private IBaseDAO baseDAO; @@ -438,7 +440,54 @@ auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message); } } + + @Override + public void updateUserMarksForActivity(Activity activity) { + Long activityId = activity.getActivityId(); + Lesson lesson = lessonDAO.getLessonForActivity(activityId); + if ((lesson == null) || (activity == null) || !(activity instanceof ToolActivity) + || (((ToolActivity) activity).getActivityEvaluations() == null) + || ((ToolActivity) activity).getActivityEvaluations().isEmpty()) { + return; + } + ToolActivity toolActivity = (ToolActivity) activity; + + // Getting the first activity evaluation + ActivityEvaluation eval = toolActivity.getActivityEvaluations().iterator().next(); + String toolOutputDefinition = eval.getToolOutputDefinition(); + + Map userToGradebookUserActivityMap = getUserToGradebookUserActivityMap(activity, + null); + Map userToGradebookUserLessonMap = getUserToGradebookUserLessonMap(lesson, null); + List toolOutputs = toolService.getOutputsFromTool(toolOutputDefinition, toolActivity); + + //update for all users in activity + List users = learnerProgressDAO.getLearnersCompletedActivity(activity); + for (User user : users) { + //find according toolOutput + ToolOutput toolOutput = null; + for (ToolOutput toolOutputIter : toolOutputs) { + if (toolOutputIter.getUserId().equals(user.getUserId())) { + toolOutput = toolOutputIter; + } + } + + //in case of toolOutput == null (which means no results in the tool but user nonetheless has finished activity), assign 0 as a result + Double outputDouble = (toolOutput == null || toolOutput.getValue() == null) ? null + : toolOutput.getValue().getDouble(); + + GradebookUserActivity gradebookUserActivity = userToGradebookUserActivityMap.get(user.getUserId()); + GradebookUserLesson gradebookUserLesson = userToGradebookUserLessonMap.get(user.getUserId()); + + // Only set the mark if it hasnt previously been set by a teacher + if ((gradebookUserActivity == null) || !gradebookUserActivity.getMarkedInGradebook()) { + updateUserActivityGradebookMark(lesson, user, toolActivity, outputDouble, false, false, + gradebookUserActivity, gradebookUserLesson); + } + } + } + @Override public void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner) { ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); @@ -482,41 +531,55 @@ @Override public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook, boolean isAuditLogRequired) { + + GradebookUserActivity gradebookUserActivity = gradebookDAO + .getGradebookUserDataForActivity(activity.getActivityId(), learner.getUserId()); + + GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), + learner.getUserId()); + + updateUserActivityGradebookMark(lesson, learner, activity, mark, markedInGradebook, isAuditLogRequired, + gradebookUserActivity, gradebookUserLesson); + } + + /** + * It's the same method as above, it only also accepts gradebookUserActivity and gradebookUserLesson as parameters. + */ + private void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, + Boolean markedInGradebook, boolean isAuditLogRequired, GradebookUserActivity gradebookUserActivity, + GradebookUserLesson gradebookUserLesson) { if ((lesson != null) && (activity != null) && (learner != null) && activity.isToolActivity()) { // First, update the mark for the activity - GradebookUserActivity gradebookUserActivity = gradebookDAO - .getGradebookUserDataForActivity(activity.getActivityId(), learner.getUserId()); - if (gradebookUserActivity == null) { gradebookUserActivity = new GradebookUserActivity((ToolActivity) activity, learner); } String oldMark = (gradebookUserActivity.getMark() == null) ? "-" : gradebookUserActivity.getMark().toString(); + Double oldActivityMark = gradebookUserActivity.getMark(); gradebookUserActivity.setMark(mark); gradebookUserActivity.setUpdateDate(new Date()); gradebookUserActivity.setMarkedInGradebook(markedInGradebook); gradebookDAO.insertOrUpdate(gradebookUserActivity); // Now update the lesson mark - GradebookUserLesson gradebookUserLesson = gradebookDAO.getGradebookUserDataForLesson(lesson.getLessonId(), - learner.getUserId()); if (gradebookUserLesson == null) { gradebookUserLesson = new GradebookUserLesson(); gradebookUserLesson.setLearner(learner); gradebookUserLesson.setLesson(lesson); } - aggregateTotalMarkForLesson(gradebookUserLesson); + aggregateTotalMarkForLesson(gradebookUserLesson, mark, oldActivityMark); // audit log changed gradebook mark if (isAuditLogRequired) { UserDTO monitorUser = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + String markStr = mark == null ? "" : mark.toString(); String[] args = new String[] { learner.getLogin() + "(" + learner.getUserId() + ")", activity.getActivityId().toString(), lesson.getLessonId().toString(), oldMark.toString(), - mark.toString() }; + markStr }; String message = messageService.getMessage("audit.activity.change.mark", args); auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message); } @@ -1354,9 +1417,17 @@ * * @param gradebookUserLesson */ - private void aggregateTotalMarkForLesson(GradebookUserLesson gradebookUserLesson) { - Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson().getLessonId(), - gradebookUserLesson.getLearner().getUserId()); + private void aggregateTotalMarkForLesson(GradebookUserLesson gradebookUserLesson, Double newActivityMark, Double oldActivityMark) { + newActivityMark = newActivityMark == null ? 0 : newActivityMark; + + Double totalMark; + if (oldActivityMark == null || gradebookUserLesson.getMark() == null) { + totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson().getLessonId(), + gradebookUserLesson.getLearner().getUserId()); + } else { + totalMark = gradebookUserLesson.getMark() - oldActivityMark + newActivityMark; + } + gradebookUserLesson.setMark(totalMark); gradebookDAO.insertOrUpdate(gradebookUserLesson); } @@ -1684,6 +1755,10 @@ this.learnerProgressDAO = learnerProgressDAO; } + public void setLessonDAO(ILessonDAO lessonDAO) { + this.lessonDAO = lessonDAO; + } + public ILessonService getLessonService() { return lessonService; } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -rd0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision d0b6f213cba1026b0c9fdbdaa5dd44a49eddd3aa) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -117,6 +117,13 @@ String sortOrder, String searchString); int getCountUsersByOrganisation(Integer orgId, String searchString); + + /** + * Updates all user marks in specified activity. It recalculates all UserActivityGradebooks and UserLessonGradebooks. + * + * @param activity + */ + void updateUserMarksForActivity(Activity activity); /** * Updates a user's lesson mark, this will make it desynchronised with the aggregated marks from the activities Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/AssessmentResultDAO.java (.../AssessmentResultDAO.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -25,6 +25,7 @@ import java.util.List; +import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; public interface AssessmentResultDAO extends DAO { @@ -40,12 +41,20 @@ AssessmentResult getLastFinishedAssessmentResult(Long assessmentUid, Long userId); Float getLastTotalScoreByUser(Long assessmentUid, Long userId); + + List getLastTotalScoresByContentId(Long assessmentUid); Float getBestTotalScoreByUser(Long sessionId, Long userId); + + List getBestTotalScoresByContentId(Long assessmentUid); Float getFirstTotalScoreByUser(Long sessionId, Long userId); + + List getFirstTotalScoresByContentId(Long assessmentUid); Float getAvergeTotalScoreByUser(Long sessionId, Long userId); + + List getAverageTotalScoresByContentId(Long assessmentUid); Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentResultDAOHibernate.java (.../AssessmentResultDAOHibernate.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -23,9 +23,11 @@ package org.lamsfoundation.lams.tool.assessment.dao.hibernate; +import java.util.ArrayList; import java.util.List; import org.lamsfoundation.lams.tool.assessment.dao.AssessmentResultDAO; +import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; import org.lamsfoundation.lams.tool.assessment.model.AssessmentResult; public class AssessmentResultDAOHibernate extends BaseDAOHibernate implements AssessmentResultDAO { @@ -55,21 +57,37 @@ + AssessmentResult.class.getName() + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null)"; - private static final String FIND_LAST_ASSESSMENT_RESULT_GRADE = "select r.grade FROM " + private static final String LAST_ASSESSMENT_RESULT_GRADE = "select r.grade FROM " + AssessmentResult.class.getName() + " AS r WHERE r.user.userId=? AND r.assessment.uid=? AND (r.finishDate != null) AND r.latest=1"; + + private static final String LAST_ASSESSMENT_RESULT_GRADES_BY_CONTENT_ID = "select r.user.userId, r.grade FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.assessment.contentId=? AND (r.finishDate != null) AND r.latest=1"; private static final String BEST_SCORE_BY_SESSION_AND_USER = "SELECT MAX(r.grade) 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)"; + + private static final String BEST_SCORES_BY_CONTENT_ID = "SELECT r.user.userId, MAX(r.grade) FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.assessment.contentId=? AND (r.finishDate != null) GROUP BY r.user.userId"; private static final String FIRST_SCORE_BY_SESSION_AND_USER = "SELECT r.grade FROM " + AssessmentResult.class.getName() + " AS r WHERE r.user.userId = ? AND r.sessionId=? AND (r.finishDate != null) ORDER BY r.startDate ASC LIMIT 1"; + + private static final String FIRST_SCORES_BY_CONTENT_ID = "SELECT r.user.userId, r.grade FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.assessment.contentId=? AND (r.finishDate != null) GROUP BY r.user.userId ORDER BY r.startDate ASC LIMIT 1"; private static final String AVERAGE_SCORE_BY_SESSION_AND_USER = "SELECT AVG(r.grade) 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)"; + + private static final String AVERAGE_SCORES_BY_CONTENT_ID = "SELECT r.user.userId, AVG(r.grade) FROM " + + AssessmentResult.class.getName() + + " AS r WHERE r.assessment.contentId=? AND (r.finishDate != null) GROUP BY r.user.userId"; private static final String FIND_LAST_ASSESSMENT_RESULT_TIME_TAKEN = "select UNIX_TIMESTAMP(r.finishDate) - UNIX_TIMESTAMP(r.startDate) FROM " + AssessmentResult.class.getName() @@ -119,14 +137,21 @@ @Override public Float getLastTotalScoreByUser(Long assessmentUid, Long userId) { - List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.FIND_LAST_ASSESSMENT_RESULT_GRADE, + List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.LAST_ASSESSMENT_RESULT_GRADE, new Object[] { userId, assessmentUid }); if ((list == null) || (list.size() == 0)) { return null; } else { return ((Float) list.get(0)); } } + + @Override + public List getLastTotalScoresByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.LAST_ASSESSMENT_RESULT_GRADES_BY_CONTENT_ID, + new Object[] { toolContentId }); + return convertResultsToAssessmentUserDTOList(list); + } @Override public Float getBestTotalScoreByUser(Long sessionId, Long userId) { @@ -138,8 +163,15 @@ return ((Float) list.get(0)); } } - + @Override + public List getBestTotalScoresByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.BEST_SCORES_BY_CONTENT_ID, + new Object[] { toolContentId }); + return convertResultsToAssessmentUserDTOList(list); + } + + @Override public Float getFirstTotalScoreByUser(Long sessionId, Long userId) { List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.FIRST_SCORE_BY_SESSION_AND_USER, new Object[] { userId, sessionId }); @@ -149,8 +181,15 @@ return ((Float) list.get(0)); } } - + @Override + public List getFirstTotalScoresByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.FIRST_SCORES_BY_CONTENT_ID, + new Object[] { toolContentId }); + return convertResultsToAssessmentUserDTOList(list); + } + + @Override public Float getAvergeTotalScoreByUser(Long sessionId, Long userId) { List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.AVERAGE_SCORE_BY_SESSION_AND_USER, new Object[] { userId, sessionId }); @@ -161,8 +200,15 @@ return result == null ? null : ((Double) result).floatValue(); } } - + @Override + public List getAverageTotalScoresByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(AssessmentResultDAOHibernate.AVERAGE_SCORES_BY_CONTENT_ID, + new Object[] { toolContentId }); + return convertResultsToAssessmentUserDTOList(list); + } + + @Override public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { List list = getHibernateTemplate().find(FIND_LAST_ASSESSMENT_RESULT_TIME_TAKEN, @@ -213,4 +259,28 @@ return (AssessmentResult) list.get(0); } + private List convertResultsToAssessmentUserDTOList(List list) { + + List lastTotalScores = new ArrayList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Long userId = ((Number) element[0]).longValue(); + float grade; + try { + grade = ((Double) element[1]).floatValue(); + } catch (ClassCastException e) { + grade = (Float) element[1]; + } + + AssessmentUserDTO userDto = new AssessmentUserDTO(); + userDto.setUserId(userId); + userDto.setGrade(grade); + lastTotalScores.add(userDto); + } + + } + + return lastTotalScores; + } } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentOutputFactory.java (.../AssessmentOutputFactory.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -23,6 +23,7 @@ package org.lamsfoundation.lams.tool.assessment.service; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.SortedMap; @@ -33,6 +34,7 @@ import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; import org.lamsfoundation.lams.tool.assessment.AssessmentConstants; +import org.lamsfoundation.lams.tool.assessment.dto.AssessmentUserDTO; import org.lamsfoundation.lams.tool.assessment.model.Assessment; import org.lamsfoundation.lams.tool.assessment.model.AssessmentQuestion; import org.lamsfoundation.lams.tool.assessment.model.AssessmentSession; @@ -162,16 +164,22 @@ if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE)) { return getLastTotalScore(assessmentService, learnerId, assessment); + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_BEST_SCORE)) { return getBestTotalScore(assessmentService, toolSessionId, learnerId); + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE)) { return getFirstTotalScore(assessmentService, toolSessionId, learnerId); + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE)) { return getAverageTotalScore(assessmentService, toolSessionId, learnerId); + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN)) { return getTimeTaken(assessmentService, learnerId, assessment); + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS)) { return getNumberAttempts(assessmentService, learnerId, assessment); + } else { Set questions = assessment.getQuestions(); for (AssessmentQuestion question : questions) { @@ -184,8 +192,66 @@ } return null; } + + public List getToolOutputs(String name, IAssessmentService assessmentService, Long toolContentId) { + if ((name != null) && (toolContentId != null)) { + if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE)) { + List results = assessmentService.getLastTotalScoresByContentId(toolContentId); + return convertToToolOutputs(results); + + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_BEST_SCORE)) { + List results = assessmentService.getBestTotalScoresByContentId(toolContentId); + return convertToToolOutputs(results); + + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_FIRST_SCORE)) { + List results = assessmentService.getFirstTotalScoresByContentId(toolContentId); + return convertToToolOutputs(results); + + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_AVERAGE_SCORE)) { + List results = assessmentService.getAverageTotalScoresByContentId(toolContentId); + return convertToToolOutputs(results); + + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_TIME_TAKEN)) { + return null; + + } else if (name.equals(AssessmentConstants.OUTPUT_NAME_LEARNER_NUMBER_ATTEMPTS)) { + return null; + + } else { + Assessment assessment = assessmentService.getAssessmentByContentId(toolContentId); + Set questions = assessment.getQuestions(); + for (AssessmentQuestion question : questions) { + if (name.equals(String.valueOf(question.getSequenceId()))) { + return null; + } + } + } + } + return null; + } + /** + * Simply converts List to List. + * + * @param results + * @return + */ + private List convertToToolOutputs(List results) { + List toolOutputs = new ArrayList(); + for (AssessmentUserDTO result : results) { + float totalScore = result.getGrade(); + + ToolOutput toolOutput = new ToolOutput(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, + getI18NText(AssessmentConstants.OUTPUT_NAME_LEARNER_TOTAL_SCORE, true), totalScore); + toolOutput.setUserId(result.getUserId().intValue()); + toolOutputs.add(toolOutput); + } + + return toolOutputs; + } + + /** * Get total score for a user. Will always return a ToolOutput object. */ private ToolOutput getLastTotalScore(IAssessmentService assessmentService, Long learnerId, Assessment assessment) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -740,21 +740,41 @@ public Float getLastTotalScoreByUser(Long assessmentUid, Long userId) { return assessmentResultDao.getLastTotalScoreByUser(assessmentUid, userId); } + + @Override + public List getLastTotalScoresByContentId(Long toolContentId) { + return assessmentResultDao.getLastTotalScoresByContentId(toolContentId); + } @Override public Float getBestTotalScoreByUser(Long sessionId, Long userId) { return assessmentResultDao.getBestTotalScoreByUser(sessionId, userId); } + + @Override + public List getBestTotalScoresByContentId(Long toolContentId) { + return assessmentResultDao.getBestTotalScoresByContentId(toolContentId); + } @Override public Float getFirstTotalScoreByUser(Long sessionId, Long userId) { return assessmentResultDao.getFirstTotalScoreByUser(sessionId, userId); } + + @Override + public List getFirstTotalScoresByContentId(Long toolContentId) { + return assessmentResultDao.getFirstTotalScoresByContentId(toolContentId); + } @Override public Float getAvergeTotalScoreByUser(Long sessionId, Long userId) { return assessmentResultDao.getAvergeTotalScoreByUser(sessionId, userId); } + + @Override + public List getAverageTotalScoresByContentId(Long toolContentId) { + return assessmentResultDao.getAverageTotalScoresByContentId(toolContentId); + } @Override public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { @@ -1925,8 +1945,10 @@ // propagade total mark to Gradebook gradebookService.updateActivityMark(mark, null, user.getUserId().intValue(), toolSessionId, false); + System.out.println("aaa USER" + user.getUserId()); } } + System.out.println("aaa" + toolSessionId); } } @@ -2280,6 +2302,16 @@ public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { return assessmentOutputFactory.getToolOutput(name, this, toolSessionId, learnerId); } + + /** + * Get the tool output for the given tool output name. + * + * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, java.lang.Long) + */ + @Override + public List getToolOutputs(String name, Long toolContentId) { + return assessmentOutputFactory.getToolOutputs(name, this, toolContentId); + } @Override public void forceCompleteUser(Long toolSessionId, User user) { Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r26ea61eae29934bddf4595c3c1aededeeeaca933 -r822c99a38640cc4b77403c28a5fbff8e431e3fd6 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 26ea61eae29934bddf4595c3c1aededeeeaca933) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 822c99a38640cc4b77403c28a5fbff8e431e3fd6) @@ -227,6 +227,8 @@ * @return */ Float getLastTotalScoreByUser(Long assessmentUid, Long userId); + + List getLastTotalScoresByContentId(Long toolContentId); /** * Return the best *finished* result grade. @@ -236,6 +238,8 @@ * @return */ Float getBestTotalScoreByUser(Long sessionId, Long userId); + + List getBestTotalScoresByContentId(Long toolContentId); /** * Return the first *finished* result grade. @@ -245,6 +249,8 @@ * @return */ Float getFirstTotalScoreByUser(Long sessionId, Long userId); + + List getFirstTotalScoresByContentId(Long toolContentId); /** * Return the average score of all *finished* result scores. @@ -254,6 +260,8 @@ * @return */ Float getAvergeTotalScoreByUser(Long sessionId, Long userId); + + List getAverageTotalScoresByContentId(Long toolContentId); /** * Return the latest *finished* result grade.