Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rac84da2cbb3fef1c22b40cdf3d3bf2c88dc180d2 -rf5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -rf5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java (.../IToolSessionDAO.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/IToolSessionDAO.java (.../IToolSessionDAO.java) (revision f5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e) @@ -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 =================================================================== diff -u -r4d65537fb74ec9a261ccb55520fe28c1253e9b13 -rf5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java (.../ToolSessionDAO.java) (revision 4d65537fb74ec9a261ccb55520fe28c1253e9b13) +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java (.../ToolSessionDAO.java) (revision f5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e) @@ -55,7 +55,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 @@ -138,6 +140,17 @@ getSession().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) { + Query query = getSession().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 =================================================================== diff -u -rc29ff780a741e2a1014a2d00a1c6f109c57d6d4e -rf5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e --- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision c29ff780a741e2a1014a2d00a1c6f109c57d6d4e) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision f5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e) @@ -99,4 +99,18 @@ * @return */ 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 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 =================================================================== diff -u -ra3ece092184f245ef3b431e0bb30b2805d94a2e2 -rf5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e --- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision a3ece092184f245ef3b431e0bb30b2805d94a2e2) +++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision f5cf4729d786b6f0459f5fc6ab6fda45aec2ed1e) @@ -249,6 +249,24 @@ return null; } + @Override + public Set getUsersForActivity(Long toolSessionId) { + ToolSession session = toolSessionDAO.getToolSession(toolSessionId); + return session != null ? session.getLearners() : new HashSet(); + } + + @Override + public Integer getCountUsersForActivity(Long toolSessionId) { + + ToolSession session = toolSessionDAO.getToolSession(toolSessionId); + if ( session.getToolSessionTypeId() == ToolSession.GROUPED_TYPE ) { + return toolSessionDAO.getCountUsersGrouped(toolSessionId); + } else { + // expect it to be 0 or 1 + return session.getLearners().size(); + } + } + /** * @return Returns the toolDAO. */