Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/RegisterAction.java =================================================================== diff -u -r4a2728da7ea82a98b92d3a8b08feb6efa4023b7d -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/RegisterAction.java (.../RegisterAction.java) (revision 4a2728da7ea82a98b92d3a8b08feb6efa4023b7d) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/RegisterAction.java (.../RegisterAction.java) (revision 2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27) @@ -98,23 +98,18 @@ /** Get Server statistics for registration */ List groups = service.findByProperty(Organisation.class,"organisationType.organisationTypeId",OrganisationType.COURSE_TYPE); List subgroups = service.findByProperty(Organisation.class,"organisationType.organisationTypeId",OrganisationType.CLASS_TYPE); - List sysadmins = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_SYSADMIN); - List admins = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_GROUP_ADMIN); - List authors = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_AUTHOR); - List monitors = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_MONITOR); - List managers = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_GROUP_MANAGER); - List learners = service.findByProperty(UserOrganisationRole.class, "role.roleId", Role.ROLE_LEARNER); /** Set statistics in dyna form */ registerForm.set("groupno", Integer.valueOf(groups.size())); registerForm.set("subgroupno", Integer.valueOf(subgroups.size())); - registerForm.set("sysadminno", Integer.valueOf(sysadmins.size())); - registerForm.set("adminno", Integer.valueOf(admins.size())); - registerForm.set("authorno", Integer.valueOf(authors.size())); - registerForm.set("monitorno", Integer.valueOf(monitors.size())); - registerForm.set("managerno", Integer.valueOf(managers.size())); - registerForm.set("learnerno", Integer.valueOf(learners.size())); + registerForm.set("sysadminno", service.getCountRoleForSystem(Role.ROLE_SYSADMIN)); + registerForm.set("adminno", service.getCountRoleForSystem(Role.ROLE_GROUP_ADMIN)); + registerForm.set("authorno", service.getCountRoleForSystem(Role.ROLE_AUTHOR)); + registerForm.set("monitorno", service.getCountRoleForSystem(Role.ROLE_MONITOR)); + registerForm.set("managerno", service.getCountRoleForSystem(Role.ROLE_GROUP_MANAGER)); + registerForm.set("learnerno", service.getCountRoleForSystem(Role.ROLE_LEARNER)); + return mapping.findForward("register"); } Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r3d4c6e49eac22677462612f300de55a9504021c3 -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java =================================================================== diff -u -r4b181ebda12a35a61d945b5bb2d286c124b76e62 -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java (.../IRoleDAO.java) (revision 4b181ebda12a35a61d945b5bb2d286c124b76e62) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/IRoleDAO.java (.../IRoleDAO.java) (revision 2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27) @@ -43,5 +43,13 @@ * @return */ public User getUserByOrganisationAndRole(final Integer userId, final Integer roleId, final Organisation organisation); + + + /** + * + * @param roleId + * @return + */ + public Integer getCountRoleForSystem(final Integer roleId); } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java =================================================================== diff -u -r4b181ebda12a35a61d945b5bb2d286c124b76e62 -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java (.../RoleDAO.java) (revision 4b181ebda12a35a61d945b5bb2d286c124b76e62) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java (.../RoleDAO.java) (revision 2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27) @@ -32,9 +32,11 @@ import org.hibernate.criterion.Expression; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.lesson.LearnerProgress; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; /** @@ -46,6 +48,9 @@ private final static String LOAD_USER_BY_ORG_AND_ROLE = "from User u where u.id = :userId and u.userOrganisations.organisation = :org and u.userOrganisations.userOrganisationRoles.role.roleId = :roleId"; + private final static String COUNT_ROLE = "select count(distinct userOrganisationRole.userOrganisation.user)" + + " from "+UserOrganisationRole.class.getName()+" userOrganisationRole" + + " where userOrganisationRole.role.roleId = :roleId"; public User getUserByOrganisationAndRole(final Integer userId, final Integer roleId, final Organisation organisation) { @@ -66,6 +71,23 @@ ); } + public Integer getCountRoleForSystem(final Integer roleId) + { + HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); + + return (Integer) hibernateTemplate.execute(new HibernateCallback() { + public Object doInHibernate(Session session) + throws HibernateException { + Query query = session.createQuery(COUNT_ROLE); + query.setInteger("roleId", roleId.intValue()); + Object value = query.uniqueResult(); + return new Integer (((Number)value).intValue()); + } + }); + + } + + } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r3d4c6e49eac22677462612f300de55a9504021c3 -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 3d4c6e49eac22677462612f300de55a9504021c3) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27) @@ -370,4 +370,11 @@ * @return */ public boolean isUserSysAdmin(); + + /** + * Count the number of unique (distinct) users with a particular role in the system. + * @param roleId Role ID + * @return + */ + public Integer getCountRoleForSystem(Integer roleId); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -rf8e0b6190e9d346ff3ef2575254c16140cf91007 -r2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision f8e0b6190e9d346ff3ef2575254c16140cf91007) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 2e362eb2427ed96a5acbfbaabe8c0b2c707f8e27) @@ -821,4 +821,12 @@ Integer requestorId = getRequestorId(); return (requestorId!=null ? isUserInRole(requestorId, rootOrgId, Role.SYSADMIN) : false); } + + public Integer getCountRoleForSystem(Integer roleId) { + Integer count = roleDAO.getCountRoleForSystem(roleId); + if(count != null) + return count; + else + return new Integer(0); + } } \ No newline at end of file