Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardUserDAO.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -r8619d599fd212a4b3b5d17bda4f340b76849684a --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardUserDAO.java (.../WhiteboardUserDAO.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/WhiteboardUserDAO.java (.../WhiteboardUserDAO.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) @@ -28,10 +28,12 @@ import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.tool.whiteboard.model.WhiteboardUser; -public interface WhiteboardUserDAO extends IBaseDAO{ +public interface WhiteboardUserDAO extends IBaseDAO { WhiteboardUser getUserByUserIDAndSessionID(Long userID, Long sessionId); + WhiteboardUser getLearnerByUserIDAndContent(Long userId, Long contentId); + WhiteboardUser getUserByUserIDAndContentID(Long userId, Long contentId); List getBySessionID(Long sessionId); Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardUserDAOHibernate.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -r8619d599fd212a4b3b5d17bda4f340b76849684a --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardUserDAOHibernate.java (.../WhiteboardUserDAOHibernate.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/dao/hibernate/WhiteboardUserDAOHibernate.java (.../WhiteboardUserDAOHibernate.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) @@ -35,6 +35,8 @@ private static final String FIND_BY_USER_ID_CONTENT_ID = "from " + WhiteboardUser.class.getName() + " as u where u.userId =? and u.whiteboard.contentId=?"; + private static final String FIND_LEARNER_BY_USER_ID_CONTENT_ID = FIND_BY_USER_ID_CONTENT_ID + + " AND u.session IS NOT NULL"; private static final String FIND_BY_USER_ID_SESSION_ID = "from " + WhiteboardUser.class.getName() + " as u where u.userId =? and u.session.sessionId=?"; private static final String FIND_BY_SESSION_ID = "from " + WhiteboardUser.class.getName() @@ -50,6 +52,15 @@ } @Override + public WhiteboardUser getLearnerByUserIDAndContent(Long userId, Long contentId) { + List list = this.doFind(FIND_LEARNER_BY_USER_ID_CONTENT_ID, new Object[] { userId, contentId }); + if (list == null || list.size() == 0) { + return null; + } + return (WhiteboardUser) list.get(0); + } + + @Override public WhiteboardUser getUserByUserIDAndContentID(Long userId, Long contentId) { List list = this.doFind(FIND_BY_USER_ID_CONTENT_ID, new Object[] { userId, contentId }); if (list == null || list.size() == 0) { Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java =================================================================== diff -u -rd1b5adfc103345fa2525236c53313dcda1cfb7c0 -r8619d599fd212a4b3b5d17bda4f340b76849684a --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision d1b5adfc103345fa2525236c53313dcda1cfb7c0) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/IWhiteboardService.java (.../IWhiteboardService.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) @@ -66,6 +66,11 @@ List getPossibleIndividualTimeLimitUsers(long toolContentId, String searchString); + /** + * Get learner by given user ID and tool content ID, i.e. user who has a session assigned. + */ + WhiteboardUser getLearnerByIDAndContent(Long userId, Long contentId); + WhiteboardUser getUserByIDAndContent(Long userID, Long contentId); WhiteboardUser getUserByLoginAndContent(String login, long contentId); Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java =================================================================== diff -u -r3c4e1e8fb214d5f82dc908c6520ef99178d5e5e4 -r8619d599fd212a4b3b5d17bda4f340b76849684a --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 3c4e1e8fb214d5f82dc908c6520ef99178d5e5e4) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/service/WhiteboardService.java (.../WhiteboardService.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) @@ -224,10 +224,17 @@ public LocalDateTime launchTimeLimit(long toolContentId, int userId) { WhiteboardUser user = getUserByIDAndContent(Long.valueOf(userId), toolContentId); if (user != null) { + WhiteboardSession session = user.getSession(); + Whiteboard whiteboard = session.getWhiteboard(); + LocalDateTime launchedDate = LocalDateTime.now(); user.setTimeLimitLaunchedDate(launchedDate); whiteboardUserDao.update(user); - return launchedDate; + // if the user is not a leader, store his launch date, but return null so the leader's launch date is in use + if (!whiteboard.isUseSelectLeaderToolOuput() || (session.getGroupLeader() != null + && session.getGroupLeader().getUserId().equals(Long.valueOf(userId)))) { + return launchedDate; + } } return null; } @@ -245,6 +252,11 @@ } @Override + public WhiteboardUser getLearnerByIDAndContent(Long userId, Long contentId) { + return whiteboardUserDao.getLearnerByUserIDAndContent(userId, contentId); + } + + @Override public WhiteboardUser getUserByIDAndContent(Long userId, Long contentId) { return whiteboardUserDao.getUserByUserIDAndContentID(userId, contentId); } Index: lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningWebsocketServer.java =================================================================== diff -u -r90e5fd15f6474eb56d0b497d1b73e14bda75e262 -r8619d599fd212a4b3b5d17bda4f340b76849684a --- lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 90e5fd15f6474eb56d0b497d1b73e14bda75e262) +++ lams_tool_whiteboard/src/java/org/lamsfoundation/lams/tool/whiteboard/web/controller/LearningWebsocketServer.java (.../LearningWebsocketServer.java) (revision 8619d599fd212a4b3b5d17bda4f340b76849684a) @@ -54,7 +54,11 @@ existingTimeSettings.timeLimitAdjustment = whiteboard.getTimeLimitAdjustments(); for (Integer userId : userIds) { - WhiteboardUser user = whiteboardService.getUserByIDAndContent(userId.longValue(), toolContentId); + WhiteboardUser user = whiteboardService.getLearnerByIDAndContent(userId.longValue(), toolContentId); + if (whiteboard.isUseSelectLeaderToolOuput()) { + // if team leader is enabled, show consistent timer for all group members + user = user.getSession().getGroupLeader(); + } if (user != null && user.getTimeLimitLaunchedDate() != null) { existingTimeSettings.timeLimitLaunchedDate.put(userId, user.getTimeLimitLaunchedDate()); }