Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/INoticeboardService.java =================================================================== diff -u -r0048b5d3c999c59bd1fb45b2b231fa97343801e7 -rdfb239e990a8c19e3c889759bcb733361cf64d6f --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/INoticeboardService.java (.../INoticeboardService.java) (revision 0048b5d3c999c59bd1fb45b2b231fa97343801e7) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/INoticeboardService.java (.../INoticeboardService.java) (revision dfb239e990a8c19e3c889759bcb733361cf64d6f) @@ -24,6 +24,7 @@ import org.lamsfoundation.lams.tool.noticeboard.NoticeboardContent; import org.lamsfoundation.lams.tool.noticeboard.NoticeboardSession; import org.lamsfoundation.lams.tool.noticeboard.NoticeboardUser; +import java.util.List; /** @@ -222,4 +223,29 @@ * @param user The instance of NoticeboardUser to persist */ public void addUser(Long nbSessionId, NoticeboardUser nbUser); + + /** + *
Retrieves a list of the session IDs from the given instance of NoticeboardContent
+ * @param content + * @return list of session ids (Long) + */ + public List getSessionIdsFromContent(NoticeboardContent content); + + /** + *Returns the number of users in this session
+ * @param session + * @return The number of users in the session + */ + public int getNumberOfUsersInSession(NoticeboardSession session); + + /** + *Finds the number of learners that have participated in this tool activity + * with the given toolContentId. It finds all the toolSessionIds relating to this + * toolContentId, and calculates the number of users in each tool session(group). + * Returns the total number of users across all sessions
+ * @param toolContentId + * @return the total number of users for this tool activity + */ + public int calculateTotalNumberOfUsers(Long toolContentId); + } Index: lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java =================================================================== diff -u -r49efb9ff777234a7d8c543254ba8631ea2a0bd53 -rdfb239e990a8c19e3c889759bcb733361cf64d6f --- lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision 49efb9ff777234a7d8c543254ba8631ea2a0bd53) +++ lams_tool_nb/src/java/org/lamsfoundation/lams/tool/noticeboard/service/NoticeboardServicePOJO.java (.../NoticeboardServicePOJO.java) (revision dfb239e990a8c19e3c889759bcb733361cf64d6f) @@ -349,6 +349,21 @@ } + /** @see org.lamsfoundation.lams.tool.noticeboard.service.INoticeboardService#getSessionIdsFromContent(org.lamsfoundation.lams.tool.noticeboard.NoticeboardContent) */ + public List getSessionIdsFromContent(NoticeboardContent content) + { + List list = null; + try + { + list = nbSessionDAO.getSessionsFromContent(content); + } + catch(DataAccessException e) + { + throw new NbApplicationException("EXCEPTION: An exception has occurred while trying to the list of session ids from content " + + e.getMessage(), e); + } + return list; + } /* ============================================================================== * Methods for access to NoticeboardUser objects @@ -483,6 +498,48 @@ } } + /** @see org.lamsfoundation.lams.tool.noticeboard.service.INoticeboardService#getNumberOfUsersInSession(org.lamsfoundation.lams.tool.noticeboard.oticeboardSession) */ + public int getNumberOfUsersInSession(NoticeboardSession session) + { + int numberOfUsers; + try + { + numberOfUsers = nbUserDAO.getNumberOfUsers(session); + } + catch (DataAccessException e) + { + throw new NbApplicationException("EXCEPTION: An exception has occurred while trying to get the number of users in the session: " + + e.getMessage(), e); + } + return numberOfUsers; + } + + /** @see org.lamsfoundation.lams.tool.noticeboard.service.INoticeboardService#calculateTotalNumberOfUsers(java.lang.Long) */ + public int calculateTotalNumberOfUsers(Long toolContentId) + { + int totalNumberOfUsers = 0; + try + { + nbContent = retrieveNoticeboard(toolContentId); + List listOfSessionIds = getSessionIdsFromContent(nbContent); + + Iterator i = listOfSessionIds.iterator(); + + while(i.hasNext()) + { + Long sessionId = (Long)i.next(); + int usersInThisSession = getNumberOfUsersInSession(retrieveNoticeboardSession(sessionId)); + totalNumberOfUsers = totalNumberOfUsers + usersInThisSession; + } + } + catch (DataAccessException e) + { + throw new NbApplicationException("EXCEPTION: An exception has occurred while calculating the total number of users in tool activity " + + e.getMessage(), e); + } + return totalNumberOfUsers; + } + /* ===============Methods implemented from ToolContentManager =============== */ /** @see org.lamsfoundation.lams.tool.ToolContentManager#copyToolContent(java.lang.Long, java.lang.Long)*/