Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java,v diff -u -r1.16 -r1.17 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java 19 Dec 2013 08:50:10 -0000 1.16 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/ScratchieConstants.java 8 Jan 2014 17:52:50 -0000 1.17 @@ -164,8 +164,4 @@ public static final String ATTR_IS_SUBMISSION_DEADLINE_PASSED = "isSubmissionDeadlinePassed"; public static final String LEARNER_MARK = "learner.mark"; - - //Leader selection tool Constants - public static final String LEADER_SELECTION_TOOL_SIGNATURE = "lalead11"; - public static final String LEADER_SELECTION_TOOL_OUTPUT_NAME_LEADER_USERID = "leader.user.id"; } Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml,v diff -u -r1.11 -r1.12 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml 10 Dec 2013 21:07:33 -0000 1.11 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/scratchieApplicationContext.xml 8 Jan 2014 17:52:51 -0000 1.12 @@ -99,13 +99,7 @@ - - - - - - - + Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java,v diff -u -r1.39 -r1.40 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 17 Dec 2013 22:26:24 -0000 1.39 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 8 Jan 2014 17:52:51 -0000 1.40 @@ -156,10 +156,6 @@ private IEventNotificationService eventNotificationService; - private ILamsCoreToolService lamsCoreToolService; - - private IActivityDAO activityDAO; - private ScratchieOutputFactory scratchieOutputFactory; // ******************************************************************************* @@ -338,57 +334,31 @@ // check leader select tool for a leader only in case scratchie tool doesn't know it. As otherwise it will screw // up previous scratches done if (leader == null) { + if (ScratchieServiceImpl.log.isDebugEnabled()) { ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" + Thread.activeCount() - + "]: getting ToolSession by ID: " + toolSessionId); + + "]: getting LeaderUserId by toolSessionId: " + toolSessionId + " and userId: " + + user.getUserId().intValue()); } - ToolSession toolSession = toolService.getToolSession(toolSessionId); - ToolActivity qaActivity = toolSession.getToolActivity(); - Activity leaderSelectionActivity = ScratchieServiceImpl.getNearestLeaderSelectionActivity(qaActivity); + Long leaderUserId = toolService.getLeaderUserId(toolSessionId, user.getUserId().intValue()); + if (leaderUserId != null) { + leader = getUserByIDAndSession(leaderUserId, toolSessionId); - // check if there is leaderSelectionTool available - if (leaderSelectionActivity != null) { - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" - + Thread.activeCount() + "]: getting User by ID: " + user.getUserId()); - } - User learner = (User) getUserManagementService().findById(User.class, user.getUserId().intValue()); - String outputName = ScratchieConstants.LEADER_SELECTION_TOOL_OUTPUT_NAME_LEADER_USERID; - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" - + Thread.activeCount() + "]: getting ToolSession by User: " + learner.getUserId() - + " and activity ID: " + leaderSelectionActivity.getActivityId()); - } - ToolSession leaderSelectionSession = lamsCoreToolService.getToolSessionByLearner(learner, - leaderSelectionActivity); - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" - + Thread.activeCount() + "]: getting ToolOutput by session ID: " - + leaderSelectionSession.getToolSessionId()); - } - ToolOutput output = lamsCoreToolService.getOutputFromTool(outputName, leaderSelectionSession, null); - - // check if tool produced output - if ((output != null) && (output.getValue() != null)) { - Long userId = output.getValue().getLong(); - leader = getUserByIDAndSession(userId, toolSessionId); - - // create new user in a DB - if (leader == null) { - ScratchieServiceImpl.log.debug("creating new user with userId: " + userId); - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" - + Thread.activeCount() + "]: getting User by ID: " + userId); - } - User leaderDto = (User) getUserManagementService().findById(User.class, userId.intValue()); - leader = new ScratchieUser(leaderDto.getUserDTO(), scratchieSession); - this.createUser(leader); + // create new user in a DB + if (leader == null) { + ScratchieServiceImpl.log.debug("creating new user with userId: " + leaderUserId); + if (ScratchieServiceImpl.log.isDebugEnabled()) { + ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" + + Thread.activeCount() + "]: getting User by ID: " + leaderUserId); } - - // set group leader - scratchieSession.setGroupLeader(leader); - saveOrUpdateScratchieSession(scratchieSession); + User leaderDto = (User) getUserManagementService().findById(User.class, leaderUserId.intValue()); + leader = new ScratchieUser(leaderDto.getUserDTO(), scratchieSession); + this.createUser(leader); } + + // set group leader + scratchieSession.setGroupLeader(leader); + saveOrUpdateScratchieSession(scratchieSession); } } @@ -399,65 +369,6 @@ return leader; } - /** - * Finds the nearest Leader Select activity. Works recursively. Tries to find Leader Select activity in the previous - * activities set first, and then inside the parent set. - */ - private static Activity getNearestLeaderSelectionActivity(Activity activity) { - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" + Thread.activeCount() - + "]: entered getNearestLeaderSelectionActivity() for activity ID: " + activity.getActivityId()); - } - // check if current activity is Leader Select one. if so - stop searching and return it. - Class activityClass = Hibernate.getClass(activity); - if (activityClass.equals(ToolActivity.class)) { - ToolActivity toolActivity; - - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" + Thread.activeCount() - + "]: doing strange stuff with Hibernate in getNearestLeaderSelectionActivity()"); - } - // activity is loaded as proxy due to lazy loading and in order to prevent quering DB we just re-initialize - // it here again - Hibernate.initialize(activity); - if (activity instanceof HibernateProxy) { - toolActivity = (ToolActivity) ((HibernateProxy) activity).getHibernateLazyInitializer() - .getImplementation(); - } else { - toolActivity = (ToolActivity) activity; - } - - if (ScratchieConstants.LEADER_SELECTION_TOOL_SIGNATURE.equals(toolActivity.getTool().getToolSignature())) { - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" - + Thread.activeCount() - + "]: leaving getNearestLeaderSelectionActivity() with activity found ID: " - + activity.getActivityId()); - } - return activity; - } - } - - // check previous activity - Transition transitionTo = activity.getTransitionTo(); - if (transitionTo != null) { - Activity fromActivity = transitionTo.getFromActivity(); - return ScratchieServiceImpl.getNearestLeaderSelectionActivity(fromActivity); - } - - // check parent activity - Activity parent = activity.getParentActivity(); - if (parent != null) { - return ScratchieServiceImpl.getNearestLeaderSelectionActivity(parent); - } - - if (ScratchieServiceImpl.log.isDebugEnabled()) { - ScratchieServiceImpl.log.debug("LKC:[" + Thread.currentThread().getId() + "|" + Thread.activeCount() - + "]: leaving getNearestLeaderSelectionActivity() with no result"); - } - return null; - } - @Override public void changeUserMark(Long userId, Long sessionId, Integer newMark) { if (newMark == null) { @@ -2250,14 +2161,6 @@ return messageService.getMessage(key, args); } - public void setActivityDAO(IActivityDAO activityDAO) { - this.activityDAO = activityDAO; - } - - public void setLamsCoreToolService(ILamsCoreToolService lamsCoreToolService) { - this.lamsCoreToolService = lamsCoreToolService; - } - @Override public Class[] getSupportedToolOutputDefinitionClasses(int definitionType) { return getScratchieOutputFactory().getSupportedDefinitionClasses(definitionType);