Index: lams_build/lib/lams/lams.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v diff -u -r1.457 -r1.458 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java,v diff -u -r1.13 -r1.14 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java 9 May 2007 01:07:27 -0000 1.13 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java 8 Sep 2015 23:22:34 -0000 1.14 @@ -76,4 +76,11 @@ public List getToolSessionByActivity(final Activity activity); public void updateToolSession(ToolSession toolSession); + + /** + * Get a count of all the possible users for an activity connected to a tool session, where + * it is a GroupedToolSession ie discriminator-value="1". Don't call on any other type of + * tool session. + */ + public Integer getCountUsersGrouped(final long toolSessionId); } Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java,v diff -u -r1.16 -r1.17 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 9 May 2007 01:07:25 -0000 1.16 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 8 Sep 2015 23:22:34 -0000 1.17 @@ -25,14 +25,17 @@ import java.util.List; +import org.hibernate.HibernateException; import org.hibernate.Query; +import org.hibernate.Session; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.GroupedToolSession; import org.lamsfoundation.lams.tool.NonGroupedToolSession; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; import org.lamsfoundation.lams.usermanagement.User; +import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** @@ -53,7 +56,9 @@ "from ToolSession s where s.toolActivity = :activity"; protected static final String LOAD_TOOL_SESSION_BY_LESSON = "from ToolSession s where s.lesson = :lesson"; - + private final static String COUNT_GROUPED_LEARNERS_SQL = "select count(*) from lams_user_group ug, lams_tool_session s " + + " where ug.group_id = s.group_id and s.tool_session_id = :toolSessionId"; + /** * Retrieves the ToolSession * @param toolSessionId identifies the ToolSession to get @@ -136,6 +141,20 @@ getHibernateTemplate().update(toolSession); } + /** + * Get a count of all the possible users for an activity connected to a tool session, where + * it is a GroupedToolSession ie discriminator-value="1". Don't call on any other type of + * tool session. + */ + public Integer getCountUsersGrouped(final long toolSessionId) { + return (Integer) getHibernateTemplate().execute(new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + Query query = session.createSQLQuery(ToolSessionDAO.COUNT_GROUPED_LEARNERS_SQL); + query.setLong("toolSessionId", toolSessionId); + Object value = query.uniqueResult(); + return new Integer(((Number) value).intValue()); + } + }); + } - } Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java,v diff -u -r1.27 -r1.28 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java 24 Jul 2015 00:41:39 -0000 1.27 +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java 8 Sep 2015 23:22:34 -0000 1.28 @@ -101,8 +101,16 @@ Long getLeaderUserId(Long toolSessionId, Integer learnerId); /** + * Get all the potential users for an Activity - they may or may not have joined the lesson. + * Works for both grouped, non-grouped and whole class activities. * @param toolSessionId * @return */ - Set getUsersFromGroupingActivity(Long toolSessionId); + Set getUsersForActivity(Long toolSessionId); + + /** + * Get a count of all the users that would be returned by getUsersForActivity(Long toolSessionId); + */ + Integer getCountUsersForActivity(Long toolSessionId); + } Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java,v diff -u -r1.31 -r1.32 --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java 18 Aug 2015 08:23:13 -0000 1.31 +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java 8 Sep 2015 23:22:34 -0000 1.32 @@ -33,6 +33,9 @@ import org.apache.log4j.Logger; import org.hibernate.Hibernate; +import org.hibernate.HibernateException; +import org.hibernate.Query; +import org.hibernate.Session; import org.hibernate.proxy.HibernateProxy; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.FloatingActivity; @@ -42,7 +45,9 @@ import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.lesson.CompletedActivityProgress; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.dao.hibernate.LessonDAO; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.tool.GroupedToolSession; import org.lamsfoundation.lams.tool.IToolVO; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolOutput; @@ -253,44 +258,21 @@ } @Override - public Set getUsersFromGroupingActivity(Long toolSessionId) { + public Set getUsersForActivity(Long toolSessionId) { ToolSession session = toolSessionDAO.getToolSession(toolSessionId); - ToolActivity activity = session.getToolActivity(); + return session != null ? session.getLearners() : new HashSet(); + } - Set users = new TreeSet(); - if (activity.getApplyGrouping()) { - Grouping grouping = activity.getGrouping(); + @Override + public Integer getCountUsersForActivity(Long toolSessionId) { - if (grouping != null) { - - // find group that corresponds to specified toolSessionId - for (Group group : (Set) grouping.getGroups()) { - - if (!grouping.isLearnerGroup(group)) { - continue; - } - - for (ToolSession sessionIter : (Set) group.getToolSessions()) { - if (sessionIter.getToolSessionId().equals(toolSessionId)) { - users.addAll(group.getUsers()); - log.warn("AAAAA groupId: " + group.getGroupId()); - break; - } - } - // if (grouping.isLearnerGroup(group) && group.hasLearner(learner)) { - // users.addAll(group.getUsers()); - // } - } - } - - // activity.getGroupFor(learner) - - // if there is no grouping specified just add all learners from the lesson + ToolSession session = toolSessionDAO.getToolSession(toolSessionId); + if ( session.getToolSessionTypeId() == ToolSession.GROUPED_TYPE ) { + return toolSessionDAO.getCountUsersGrouped(toolSessionId); } else { - users.addAll(session.getLesson().getLessonClass().getLearners()); + // expect it to be 0 or 1 + return session.getLearners().size(); } - - return users; } /**