Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -527,6 +527,25 @@ sysadmin.lesson.delete.title =Delete all lessons from course msg.delete.organisation.confirm =You are about to permanently remove a course. Are you sure want to do this? msg.delete.organisation.delete.lessons.confirm =The course or one of its subcourses still contains lessons. They need to be permanently deleted first. You will be redirected to a page where you can do it. +admin.org.password.change.title =Reset password for course members +admin.org.password.change.button =Password reset +admin.org.password.change.is.staff =Authors/monitors +admin.org.password.change.is.learner =Students +admin.org.password.change.generate =Generate new password +admin.org.password.change.email =Email new password +admin.org.password.change.force =Force change password after login +admin.org.password.change.custom =Enter own password or generate one +admin.org.password.change.grid.login =Login +admin.org.password.change.grid.name =Name +admin.org.password.change.grid.email =Email +admin.org.password.change.grid.error.load =Error while loading users into grid +admin.org.password.change.choose =Change password for +admin.org.password.change.submit =Change password +admin.org.password.change.error.prefix.staff =Authors/monitors password +admin.org.password.change.error.prefix.learners =Authors/monitors password +admin.org.password.change.success =Passwords successfully changed +admin.org.password.change.email.subject =LAMS password change +admin.org.password.change.email.body =Your password has been changed to: {0}\n\n-- email sent automatically by LAMS label.event.log=Event (Audit) Log label.event.topic=Topic label.event.type=Type of Event @@ -566,5 +585,4 @@ label.area.unknown=Unknown audit.change.made.by=Changes Made By audit.change.made.to=Changes Made To - #======= End labels: Exported 511 labels for en AU ===== Index: lams_admin/web/WEB-INF/struts-config.xml =================================================================== diff -u -r5f82321c5864250c612773630ff209a45e71a3f1 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 5f82321c5864250c612773630ff209a45e71a3f1) +++ lams_admin/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -159,6 +159,19 @@ + + + + + + + + + + + + + @@ -975,6 +988,19 @@ path="/uploadPortraits" type="org.lamsfoundation.lams.admin.web.action.PortraitBatchUploadAction" /> + + + Index: lams_admin/web/WEB-INF/tiles-defs.xml =================================================================== diff -u -r4b44632629e35a6b8dc8a970bc0ecc27f38d66ff -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_admin/web/WEB-INF/tiles-defs.xml (.../tiles-defs.xml) (revision 4b44632629e35a6b8dc8a970bc0ecc27f38d66ff) +++ lams_admin/web/WEB-INF/tiles-defs.xml (.../tiles-defs.xml) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -211,6 +211,11 @@ + + + + + Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -rfcc5eca8a605afdc9e927366827553a7862000cd -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision fcc5eca8a605afdc9e927366827553a7862000cd) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -377,6 +377,8 @@ */ Integer getCountRoleForOrg(Integer orgId, Integer roleId, String searchPhrase); + Integer getCountRoleForOrg(Integer orgId, Integer[] roleIds, String searchPhrase); + /** * Get default html theme of server. * @@ -465,8 +467,11 @@ * filters results by course name. It can be null and then doesn't affect results * @return paged list of users */ - List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString); + List getAllUsers(Integer page, Integer size, String sortBy, String sortOrder, String searchString); + List getAllUsers(Integer organisationID, String[] roleNames, Integer page, Integer size, String sortBy, + String sortOrder, String searchString); + /** * Get all users, except for disabled users and users that are members of filteredOrg. * Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rfcc5eca8a605afdc9e927366827553a7862000cd -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision fcc5eca8a605afdc9e927366827553a7862000cd) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -872,8 +872,8 @@ } @Override - public Integer getCountRoleForOrg(Integer orgId, Integer roleId, String searchPhrase) { - Integer count = roleDAO.getCountRoleForOrg(roleId, orgId, searchPhrase); + public Integer getCountRoleForOrg(Integer orgId, Integer[] roleIds, String searchPhrase) { + Integer count = roleDAO.getCountRoleForOrg(roleIds, orgId, searchPhrase); if (count != null) { return count; } else { @@ -882,6 +882,11 @@ } @Override + public Integer getCountRoleForOrg(Integer orgId, Integer roleId, String searchPhrase) { + return getCountRoleForOrg(orgId, new Integer[] { roleId }, searchPhrase); + } + + @Override public Theme getDefaultTheme() { String htmlName = Configuration.get(ConfigurationKeys.DEFAULT_THEME); List list = findByProperty(Theme.class, "name", "defaultHTML"); @@ -977,11 +982,17 @@ } @Override - public List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString) { + public List getAllUsers(Integer page, Integer size, String sortBy, String sortOrder, String searchString) { return userDAO.getAllUsersPaged(page, size, sortBy, sortOrder, searchString); } @Override + public List getAllUsers(Integer organisationID, String[] roleNames, Integer page, Integer size, + String sortBy, String sortOrder, String searchString) { + return userDAO.getAllUsersPaged(organisationID, roleNames, page, size, sortBy, sortOrder, searchString); + } + + @Override public List getAllUsers(Integer filteredOrgId) { return userDAO.findUsers(filteredOrgId); } Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -rbe985c136a1f176a3ebb3f48902fca8ebdc7de22 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision be985c136a1f176a3ebb3f48902fca8ebdc7de22) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -474,6 +474,11 @@ public GradebookUserActivity getGradebookUserActivity(Long activityID, Integer userID) { return gradebookDAO.getGradebookUserDataForActivity(activityID, userID); } + + @Override + public List getGradebookUserActivities(Long activityId) { + return gradebookDAO.getAllGradebookUserActivitiesForActivity(activityId); + } @Override public Double getAverageMarkForActivity(Long activityID, Long groupID) { Index: lams_monitoring/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_monitoring/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_monitoring/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -412,5 +412,31 @@ tour.gradebook.show.weight =Show Weights tour.gradebook.show.weight.content =Show/hide the activity weights used for marking this lesson. +label.tbl.monitor =TBL Monitor +label.teams =Teams +label.students.teams =Students & Teams +label.student =Student +label.gates =Gates +label.ira =iRA +label.tra =tRA +label.burning.questions =Burning Qs +label.forum =Forum +label.aes =AEs +label.sequence =Sequence +label.sequence.diagram =Sequence diagram +label.refresh =Refresh +label.attendance =Attendance +label.users.knocking.on.gate ={0} users knocking on the gate... +label.comparison =Comparison +label.change.leader =Change leader +label.bar.chart =Bar chart +label.score =Score +label.ira.responses.for =iRA responses for +label.tra.responses.for =tRA responses for +label.note.leader.change =Note that the leader change only will take place for the activities in which the existing leader has not been set or commenced. +label.current.leader =Current leader: +label.leader.successfully.changed =Leader has been successfully changed +label.view.forum =View forum +label.switch.to.regular.monitor =Switch to regular monitor #======= End labels: Exported 401 labels for en AU ===== Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -1895,9 +1895,9 @@ List recipients = getArchivedEmailNotificationRecipients(emailNotificationUid, null, null); for (User recipient : recipients) { row = new ExcelCell[1]; - row[0] = new ExcelCell( - recipient.getFirstName() + " " + recipient.getLastName() + " [" + recipient.getLogin() + "]", - false); + String recipientName = new StringBuilder(recipient.getLastName()).append(", ") + .append(recipient.getFirstName()).append(" [").append(recipient.getLogin()).append("]").toString(); + row[0] = new ExcelCell(recipientName, false); rows.add(row); } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java =================================================================== diff -u -rfcc5eca8a605afdc9e927366827553a7862000cd -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision fcc5eca8a605afdc9e927366827553a7862000cd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -332,7 +332,8 @@ rowJSON.put(GradebookConstants.ELEMENT_ID, recipient.getUserId()); JSONArray cellJSON = new JSONArray(); - cellJSON.put(recipient.getFirstName() + " " + recipient.getLastName() + " [" + recipient.getLogin() + "]"); + cellJSON.put(new StringBuilder(recipient.getLastName()).append(", ").append(recipient.getFirstName()) + .append(" [").append(recipient.getLogin()).append("]").toString()); rowJSON.put(GradebookConstants.ELEMENT_CELL, cellJSON); rowsJSON.put(rowJSON); @@ -602,9 +603,9 @@ // data is going into a jquery UI table that doesn't need to it be escaped. LDEV-4514 for (User user : users) { JSONArray cell = new JSONArray(); - cell.put(new StringBuilder(user.getFirstName()).append(" ") - .append(user.getLastName()).append(" (") - .append(user.getLogin()) + ")").toString(); + cell.put(new StringBuilder(user.getLastName()).append(", ") + .append(user.getFirstName()).append(" (") + .append(user.getLogin()).append(")").toString()); JSONObject cellobj = new JSONObject(); cellobj.put("id", "" + user.getUserId()); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -rfcc5eca8a605afdc9e927366827553a7862000cd -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision fcc5eca8a605afdc9e927366827553a7862000cd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -64,11 +64,13 @@ import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.ContributionTypes; import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.Transition; +import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignException; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; @@ -933,10 +935,93 @@ .isUserInRole(user.getUserID(), organisation.getOrganisationId(), Role.AUTHOR); request.setAttribute("enableLiveEdit", enableLiveEdit); request.setAttribute("lesson", lessonDTO); + request.setAttribute("isTBLSequence", isTBLSequence(lessonId)); return mapping.findForward("monitorLesson"); } + + /** + * If learning design contains the following activities Grouping->(MCQ or Assessment)->Leader Selection->Scratchie + * (potentially with some other gates or activities in the middle), there is a good chance this is a TBL sequence + * and all activities must be grouped. + */ + private boolean isTBLSequence(Long lessonId) { + + Lesson lesson = getLessonService().getLesson(lessonId); + Long firstActivityId = lesson.getLearningDesign().getFirstActivity().getActivityId(); + //Hibernate CGLIB is failing to load the first activity in the sequence as a ToolActivity + Activity firstActivity = getMonitoringService().getActivityById(firstActivityId); + + return verifyNextActivityFitsTbl(firstActivity, "Grouping"); + } + + /** + * Traverses the learning design verifying it follows typical TBL structure + * + * @param activity + * @param anticipatedActivity could be either "Grouping", "MCQ or Assessment", "Leaderselection" or "Scratchie" + */ + private boolean verifyNextActivityFitsTbl(Activity activity, String anticipatedActivity) { + + Transition transitionFromActivity = activity.getTransitionFrom(); + //TBL can finish with the Scratchie + if (transitionFromActivity == null && !"Scratchie".equals(anticipatedActivity)) { + return false; + } + // query activity from DB as transition holds only proxied activity object + Long nextActivityId = transitionFromActivity == null ? null : transitionFromActivity.getToActivity().getActivityId(); + Activity nextActivity = nextActivityId == null ? null : monitoringService.getActivityById(nextActivityId); + + switch (anticipatedActivity) { + case "Grouping": + //the first activity should be a grouping + if (activity instanceof GroupingActivity) { + return verifyNextActivityFitsTbl(nextActivity, "MCQ or Assessment"); + + } else { + return verifyNextActivityFitsTbl(nextActivity, "Grouping"); + } + case "MCQ or Assessment": + //the second activity shall be a MCQ or Assessment + if (activity.isToolActivity() && (CentralConstants.TOOL_SIGNATURE_ASSESSMENT + .equals(((ToolActivity) activity).getTool().getToolSignature()) + || CentralConstants.TOOL_SIGNATURE_MCQ + .equals(((ToolActivity) activity).getTool().getToolSignature()))) { + return verifyNextActivityFitsTbl(nextActivity, "Leaderselection"); + + } else { + return verifyNextActivityFitsTbl(nextActivity, "MCQ or Assessment"); + } + + case "Leaderselection": + //the third activity shall be a Leader Selection + if (activity.isToolActivity() && CentralConstants.TOOL_SIGNATURE_LEADERSELECTION + .equals(((ToolActivity) activity).getTool().getToolSignature())) { + return verifyNextActivityFitsTbl(nextActivity, "Scratchie"); + + } else { + return verifyNextActivityFitsTbl(nextActivity, "Leaderselection"); + } + + case "Scratchie": + //the fourth activity shall be Scratchie + if (activity.isToolActivity() && CentralConstants.TOOL_SIGNATURE_SCRATCHIE + .equals(((ToolActivity) activity).getTool().getToolSignature())) { + return true; + + } else if (nextActivity == null) { + return false; + + } else { + return verifyNextActivityFitsTbl(nextActivity, "Scratchie"); + } + + default: + return false; + } + } + /** * Gets users whose progress bars will be displayed in Learner tab in Monitor. */ Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -164,7 +164,7 @@ @Override public boolean isUserGroupLeader(AssessmentUser user, Long toolSessionId) { - AssessmentSession session = getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession session = getSessionBySessionId(toolSessionId); AssessmentUser groupLeader = session.getGroupLeader(); return (groupLeader != null) && user.getUserId().equals(groupLeader.getUserId()); @@ -176,7 +176,7 @@ return null; } - AssessmentSession assessmentSession = getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession assessmentSession = getSessionBySessionId(toolSessionId); AssessmentUser leader = assessmentSession.getGroupLeader(); // check leader select tool for a leader only in case QA tool doesn't know it. As otherwise it will screw // up previous scratches done @@ -343,6 +343,11 @@ public int getCountUsersBySession(Long sessionId, String searchString) { return assessmentUserDao.getCountUsersBySession(sessionId, searchString); } + + @Override + public int getCountUsersByContentId(Long contentId) { + return assessmentUserDao.getCountUsersByContentId(contentId); + } @Override public List getPagedUsersBySessionAndQuestion(Long sessionId, Long questionUid, int page, @@ -396,9 +401,14 @@ } @Override - public AssessmentUser getUserByIDAndContent(Long userId, Long contentId) { - return assessmentUserDao.getUserByUserIDAndContentID(userId, contentId); + public AssessmentUser getUserCreatedAssessment(Long userId, Long contentId) { + return assessmentUserDao.getUserCreatedAssessment(userId, contentId); } + + @Override + public AssessmentUser getUserByIdAndContent(Long userId, Long contentId) { + return assessmentUserDao.getUserByIdAndContent(userId, contentId); + } @Override public AssessmentUser getUserByIDAndSession(Long userId, Long sessionId) { @@ -442,9 +452,14 @@ } @Override - public AssessmentSession getAssessmentSessionBySessionId(Long sessionId) { + public AssessmentSession getSessionBySessionId(Long sessionId) { return assessmentSessionDao.getSessionBySessionId(sessionId); } + + @Override + public List getSessionsByContentId(Long toolContentId) { + return assessmentSessionDao.getByContentId(toolContentId); + } @Override public void setAttemptStarted(Assessment assessment, AssessmentUser assessmentUser, Long toolSessionId) { @@ -899,6 +914,11 @@ public Integer getLastFinishedAssessmentResultTimeTaken(Long assessmentUid, Long userId) { return assessmentResultDao.getLastFinishedAssessmentResultTimeTaken(assessmentUid, userId); } + + @Override + public int countAttemptsPerOption(Long optionUid) { + return assessmentResultDao.countAttemptsPerOption(optionUid); + } @Override public AssessmentResult getLastFinishedAssessmentResultNotFromChache(Long assessmentUid, Long userId) { @@ -1280,7 +1300,7 @@ // in case of UseSelectLeaderToolOuput - display only one user if (assessment.isUseSelectLeaderToolOuput()) { - AssessmentSession session = getAssessmentSessionBySessionId(sessionId); + AssessmentSession session = getSessionBySessionId(sessionId); AssessmentUser groupLeader = session.getGroupLeader(); if (groupLeader != null) { @@ -1691,7 +1711,7 @@ sessionTitle[0] = new ExcelCell(sessionDTO.getSessionName(), true); userSummaryTab.add(sessionTitle); - AssessmentSession assessmentSession = getAssessmentSessionBySessionId(sessionDTO.getSessionId()); + AssessmentSession assessmentSession = getSessionBySessionId(sessionDTO.getSessionId()); Set assessmentUsers = assessmentSession.getAssessmentUsers(); @@ -2489,7 +2509,7 @@ // reset it to new toolContentId toolContentObj.setContentId(toolContentId); - AssessmentUser user = assessmentUserDao.getUserByUserIDAndContentID(new Long(newUserUid.longValue()), + AssessmentUser user = assessmentUserDao.getUserCreatedAssessment(new Long(newUserUid.longValue()), toolContentId); if (user == null) { user = new AssessmentUser(); @@ -2751,7 +2771,7 @@ public void forceCompleteUser(Long toolSessionId, User user) { Long userId = user.getUserId().longValue(); - AssessmentSession session = getAssessmentSessionBySessionId(toolSessionId); + AssessmentSession session = getSessionBySessionId(toolSessionId); if ((session == null) || (session.getAssessment() == null)) { return; } @@ -2929,7 +2949,7 @@ "Assessment Tool does not support Overall Feedback for REST Authoring. " + toolContentJSON); } - AssessmentUser assessmentUser = getUserByIDAndContent(userID.longValue(), toolContentID); + AssessmentUser assessmentUser = getUserCreatedAssessment(userID.longValue(), toolContentID); if (assessmentUser == null) { assessmentUser = new AssessmentUser(); assessmentUser.setFirstName(toolContentJSON.getString("firstName")); Index: lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_tool_lamc/src/java/org/lamsfoundation/lams/tool/mc/service/McService.java (.../McService.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -377,14 +377,14 @@ } @Override - public McQueUsr getMcUserByUID(Long uid) throws McApplicationException { - try { - return mcUserDAO.getMcUserByUID(uid); - } catch (DataAccessException e) { - throw new McApplicationException( - "Exception occured when lams is getting the mc QueUsr by uid." + e.getMessage(), e); - } + public McQueUsr getMcUserByUID(Long uid) { + return mcUserDAO.getMcUserByUID(uid); } + + @Override + public McQueUsr getMcUserByContentId(Long userId, Long contentId) { + return mcUserDAO.getMcUserByContentId(userId, contentId); + } @Override public Long getPortraitId(Long userId) { @@ -473,6 +473,11 @@ e); } } + + @Override + public int getAttemptsCountPerOption(Long optionUid) { + return mcUsrAttemptDAO.getAttemptsCountPerOption(optionUid); + } @Override public List getAnswersFromDatabase(McContent mcContent, McQueUsr user) { Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== diff -u -r045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93 -rb26f90eccf164c7058201360d2ca771adcfb597a --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision 045ebfd1d11d9ed0a1f81a00abb1a2ea373e8d93) +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java (.../ScratchieServiceImpl.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) @@ -201,9 +201,13 @@ @Override public ScratchieUser getUserByIDAndSession(Long userId, Long sessionId) { - return scratchieUserDao.getUserByUserIDAndSessionID(userId, sessionId); } + + @Override + public int countUsersByContentId(Long contentId) { + return scratchieUserDao.countUsersByContentId(contentId); + } @Override public void saveOrUpdateScratchie(Scratchie scratchie) { @@ -408,6 +412,11 @@ public ScratchieSession getScratchieSessionBySessionId(Long sessionId) { return scratchieSessionDao.getSessionBySessionId(sessionId); } + + @Override + public int countSessionsByContentId(Long toolContentId) { + return scratchieSessionDao.getByContentId(toolContentId).size(); + } @Override public void saveOrUpdateScratchieSession(ScratchieSession resSession) { @@ -631,6 +640,11 @@ public List getUsersBySession(Long toolSessionId) { return scratchieUserDao.getBySessionID(toolSessionId); } + + @Override + public ScratchieUser getUserByUserIDAndContentID(Long userId, Long contentId) { + return scratchieUserDao.getUserByUserIDAndContentID(userId, contentId); + } @Override public void saveUser(ScratchieUser user) { @@ -1896,7 +1910,6 @@ user.setLastName(sysUser.getLastName()); user.setLoginName(sysUser.getLogin()); user.setUserId(new Long(newUserUid.longValue())); - user.setScratchie(toolContentObj); } scratchieDao.saveObject(toolContentObj);