Index: lams_admin/web/statistics.jsp =================================================================== diff -u -r6b759dda2b1837d0da0b214bbfabbfa6deddc3bb -r5673dee0463e48751112f1e516b92c9da78f6363 --- lams_admin/web/statistics.jsp (.../statistics.jsp) (revision 6b759dda2b1837d0da0b214bbfabbfa6deddc3bb) +++ lams_admin/web/statistics.jsp (.../statistics.jsp) (revision 5673dee0463e48751112f1e516b92c9da78f6363) @@ -89,9 +89,10 @@

Index: lams_common/src/java/org/lamsfoundation/lams/statistics/dto/StatisticsDTO.java =================================================================== diff -u -r2dd947ef3812e8d41a9e4be552f54e71ecd1558a -r5673dee0463e48751112f1e516b92c9da78f6363 --- lams_common/src/java/org/lamsfoundation/lams/statistics/dto/StatisticsDTO.java (.../StatisticsDTO.java) (revision 2dd947ef3812e8d41a9e4be552f54e71ecd1558a) +++ lams_common/src/java/org/lamsfoundation/lams/statistics/dto/StatisticsDTO.java (.../StatisticsDTO.java) (revision 5673dee0463e48751112f1e516b92c9da78f6363) @@ -6,83 +6,74 @@ * Class representing the overall statistics for the server * * @author lfoxton - * + * */ public class StatisticsDTO { - - private long users; - private long groups; - private long subGroups; - private long sequences; - private long lessons; - private long activities; - private long completedActivities; - - ArrayList groupStatistics; - - public StatisticsDTO() {} - public long getUsers() { - return users; - } + private long users; + private long groups; + private long subGroups; + private long sequences; + private long lessons; + private long activities; + private long completedActivities; - public void setUsers(long users) { - this.users = users; - } + public StatisticsDTO() { + } - public long getGroups() { - return groups; - } + public long getUsers() { + return users; + } - public void setGroups(long groups) { - this.groups = groups; - } + public void setUsers(long users) { + this.users = users; + } - public long getSubGroups() { - return subGroups; - } + public long getGroups() { + return groups; + } - public void setSubGroups(long subGroups) { - this.subGroups = subGroups; - } + public void setGroups(long groups) { + this.groups = groups; + } - public long getSequences() { - return sequences; - } + public long getSubGroups() { + return subGroups; + } - public void setSequences(long sequences) { - this.sequences = sequences; - } + public void setSubGroups(long subGroups) { + this.subGroups = subGroups; + } - public long getLessons() { - return lessons; - } + public long getSequences() { + return sequences; + } - public void setLessons(long lessons) { - this.lessons = lessons; - } + public void setSequences(long sequences) { + this.sequences = sequences; + } - public long getActivities() { - return activities; - } + public long getLessons() { + return lessons; + } - public void setActivities(long activities) { - this.activities = activities; - } + public void setLessons(long lessons) { + this.lessons = lessons; + } - public long getCompletedActivities() { - return completedActivities; - } + public long getActivities() { + return activities; + } - public void setCompletedActivities(long completedActivities) { - this.completedActivities = completedActivities; - } + public void setActivities(long activities) { + this.activities = activities; + } - public ArrayList getGroupStatistics() { - return groupStatistics; - } + public long getCompletedActivities() { + return completedActivities; + } - public void setGroupStatistics(ArrayList groupStatistics) { - this.groupStatistics = groupStatistics; - } + public void setCompletedActivities(long completedActivities) { + this.completedActivities = completedActivities; + } } Index: lams_common/src/java/org/lamsfoundation/lams/statistics/service/IStatisticsService.java =================================================================== diff -u -r2dd947ef3812e8d41a9e4be552f54e71ecd1558a -r5673dee0463e48751112f1e516b92c9da78f6363 --- lams_common/src/java/org/lamsfoundation/lams/statistics/service/IStatisticsService.java (.../IStatisticsService.java) (revision 2dd947ef3812e8d41a9e4be552f54e71ecd1558a) +++ lams_common/src/java/org/lamsfoundation/lams/statistics/service/IStatisticsService.java (.../IStatisticsService.java) (revision 5673dee0463e48751112f1e516b92c9da78f6363) @@ -1,8 +1,29 @@ package org.lamsfoundation.lams.statistics.service; +import java.util.Map; + +import org.lamsfoundation.lams.statistics.dto.GroupStatisticsDTO; import org.lamsfoundation.lams.statistics.dto.StatisticsDTO; public interface IStatisticsService { + /** + * Get the overall statistics for the server + * @return + */ public StatisticsDTO getOverallStatistics(); + + /** + * Get the statistics for the specified group + * @param orgId + * @return + * @throws Exception + */ + public GroupStatisticsDTO getGroupStatisticsDTO(Integer orgId) throws Exception; + + /** + * Get a map of orgname,orgid for the drop down menu + * @return + */ + public Map getGroupMap(); } Index: lams_common/src/java/org/lamsfoundation/lams/statistics/service/StatisticsService.java =================================================================== diff -u -r2dd947ef3812e8d41a9e4be552f54e71ecd1558a -r5673dee0463e48751112f1e516b92c9da78f6363 --- lams_common/src/java/org/lamsfoundation/lams/statistics/service/StatisticsService.java (.../StatisticsService.java) (revision 2dd947ef3812e8d41a9e4be552f54e71ecd1558a) +++ lams_common/src/java/org/lamsfoundation/lams/statistics/service/StatisticsService.java (.../StatisticsService.java) (revision 5673dee0463e48751112f1e516b92c9da78f6363) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import org.lamsfoundation.lams.dao.IBaseDAO; @@ -23,8 +24,8 @@ private IBaseDAO baseDAO; private IUserManagementService userService; - /** - * Get the overall statistics for the server + /* (non-Javadoc) + * @see org.lamsfoundation.lams.statistics.service.IStatisticsService#getOverallStatistics() */ public StatisticsDTO getOverallStatistics() { @@ -46,46 +47,62 @@ statisticsDTO.setLessons(baseDAO.countAll(Lesson.class)); statisticsDTO.setSequences(baseDAO.countAll(LearningDesign.class)); statisticsDTO.setUsers(baseDAO.countAll(User.class)); + return statisticsDTO; - // Getting the stats for all the groups and sub-groups - ArrayList groupStatsList = new ArrayList(); - List groups = (List) userService.findByProperty(Organisation.class, "organisationType.organisationTypeId", - OrganisationType.COURSE_TYPE); - if (groups != null) { - for (Organisation group : groups) { - GroupStatisticsDTO groupStats = new GroupStatisticsDTO(); - groupStats.setName(group.getName()); - groupStats.setLessons(group.getLessons().size()); - groupStats.setTotalUsers(userService.getAllUsers(group.getOrganisationId()).size()); - groupStats.setAuthors(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.AUTHOR, false, false).size()); - groupStats.setMonitors(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.MONITOR, false, false).size()); - groupStats.setLearners(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.LEARNER, false, false).size()); + } - Set subGroups = (Set) group.getChildOrganisations(); + /* (non-Javadoc) + * @see org.lamsfoundation.lams.statistics.service.IStatisticsService#getGroupStatisticsDTO(java.lang.Integer) + */ + public GroupStatisticsDTO getGroupStatisticsDTO(Integer orgId) throws Exception { - ArrayList subGroupStatsList = new ArrayList(); - if (subGroups != null) { - for (Organisation subGroup : subGroups) { - GroupStatisticsDTO subGroupStats = new GroupStatisticsDTO(); - subGroupStats.setName(subGroup.getName()); - subGroupStats.setLessons(subGroup.getLessons().size()); - subGroupStats.setTotalUsers(userService.getAllUsers(subGroup.getOrganisationId()).size()); - subGroupStats.setAuthors(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.AUTHOR, false, false).size()); - subGroupStats.setMonitors(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.MONITOR, false, false).size()); - subGroupStats.setLearners(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.LEARNER, false, false).size()); - subGroupStatsList.add(subGroupStats); - } - } - groupStats.setSubGroups(subGroupStatsList); + Organisation group = (Organisation) baseDAO.find(Organisation.class, orgId); + GroupStatisticsDTO groupStats = new GroupStatisticsDTO(); + if (group != null) { - groupStatsList.add(groupStats); + groupStats.setName(group.getName()); + groupStats.setLessons(group.getLessons().size()); + groupStats.setTotalUsers(userService.getAllUsers(group.getOrganisationId()).size()); + groupStats.setAuthors(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.AUTHOR, false, false).size()); + groupStats.setMonitors(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.MONITOR, false, false).size()); + groupStats.setLearners(userService.getUsersFromOrganisationByRole(group.getOrganisationId(), Role.LEARNER, false, false).size()); + + Set subGroups = (Set) group.getChildOrganisations(); + + ArrayList subGroupStatsList = new ArrayList(); + if (subGroups != null) { + for (Organisation subGroup : subGroups) { + GroupStatisticsDTO subGroupStats = new GroupStatisticsDTO(); + subGroupStats.setName(subGroup.getName()); + subGroupStats.setLessons(subGroup.getLessons().size()); + subGroupStats.setTotalUsers(userService.getAllUsers(subGroup.getOrganisationId()).size()); + subGroupStats.setAuthors(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.AUTHOR, false, false).size()); + subGroupStats.setMonitors(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.MONITOR, false, false).size()); + subGroupStats.setLearners(userService.getUsersFromOrganisationByRole(subGroup.getOrganisationId(), Role.LEARNER, false, false).size()); + subGroupStatsList.add(subGroupStats); + } } + groupStats.setSubGroups(subGroupStatsList); + + } else { + throw new Exception("Tried to fetch data for null group with id: " + orgId); } - statisticsDTO.setGroupStatistics(groupStatsList); - return statisticsDTO; - + return groupStats; } + + public Map getGroupMap() { + Map groupMap = new HashMap (); + + List groups = (List)userService.findByProperty(Organisation.class, "organisationType.organisationTypeId", + OrganisationType.COURSE_TYPE); + if (groups != null) { + for (Organisation group : groups) { + groupMap.put(group.getName(), group.getOrganisationId()); + } + } + return groupMap; + } public void setBaseDAO(IBaseDAO baseDAO) { this.baseDAO = baseDAO;