Index: lams_admin/conf/xdoclet/struts-forms.xml =================================================================== diff -u -rd27ed028b0e16c263776418b7bce22099fed4eed -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_admin/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision d27ed028b0e16c263776418b7bce22099fed4eed) +++ lams_admin/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -61,12 +61,6 @@ - - - - - - Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSearchAction.java =================================================================== diff -u -r301b444dedf83e9caa28a69f3d70b84942181052 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSearchAction.java (.../UserSearchAction.java) (revision 301b444dedf83e9caa28a69f3d70b84942181052) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSearchAction.java (.../UserSearchAction.java) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -24,101 +24,132 @@ /* $Id$ */ package org.lamsfoundation.lams.admin.web; -import java.util.ArrayList; -import java.util.HashMap; +import java.io.IOException; import java.util.List; -import java.util.Map; +import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringEscapeUtils; import org.apache.log4j.Logger; -import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.ActionMessage; -import org.apache.struts.action.ActionMessages; -import org.apache.struts.action.DynaActionForm; +import org.apache.tomcat.util.json.JSONArray; +import org.apache.tomcat.util.json.JSONException; +import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.admin.service.AdminServiceProxy; import org.lamsfoundation.lams.usermanagement.Role; -import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; /** * @author jliew - * - */ - -/** - * struts doclets * - * @struts:action path="/usersearch" - * name="UserSearchForm" - * input=".usersearchlist" - * scope="request" - * validate="false" + * @struts:action path="/usersearch" parameter="dispatch" input=".usersearchlist" scope="request" validate="false" * - * @struts:action-forward name="usersearchlist" - * path=".usersearchlist" + * @struts:action-forward name="usersearchlist" path=".usersearchlist" */ -public class UserSearchAction extends Action { - - private static Logger log = Logger.getLogger(UserSearchAction.class); - private static IUserManagementService service; - private static MessageService messageService; +public class UserSearchAction extends LamsDispatchAction { - public ActionForward execute(ActionMapping mapping, - ActionForm form, - HttpServletRequest request, - HttpServletResponse response) throws Exception { - - if (service == null) { - service = AdminServiceProxy.getService(getServlet().getServletContext()); - } - if (messageService == null) { - messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); - } - DynaActionForm userSearchForm = (DynaActionForm)form; - - if(!(request.isUserInRole(Role.SYSADMIN) || service.isUserGlobalGroupAdmin())){ - log.debug("user not sysadmin or global group admin"); - ActionMessages errors = new ActionMessages(); - errors.add("authorisation",new ActionMessage("error.authorisation")); - saveErrors(request,errors); - request.setAttribute("isSysadmin",false); - return mapping.findForward("usersearchlist"); - } - - Boolean showAll = (Boolean)userSearchForm.get("showAll"); - Boolean searched = (Boolean)userSearchForm.get("searched"); - String term = ((String)userSearchForm.getString("term")).trim(); - - if (searched) { - List userList = new ArrayList(); - if (showAll) { - Map objectProperties = new HashMap(); - objectProperties.put("disabledFlag",false); - userList = service.findByProperties(User.class,objectProperties); - } else { - userList = service.searchUserSingleTerm(term); - } - if (userList.isEmpty()) { - ActionMessages messages = new ActionMessages(); - messages.add("results",new ActionMessage("msg.results.none")); - saveMessages(request,messages); - } - - request.setAttribute("userList", userList); - String[] args = { new Integer(userList.size()).toString() }; - request.setAttribute("numUsers", messageService.getMessage("label.number.of.users", args)); - } - - userSearchForm.set("showAll", false); - userSearchForm.set("searched", true); - - return mapping.findForward("usersearchlist"); + private static Logger log = Logger.getLogger(UserSearchAction.class); + private static IUserManagementService service; + private static MessageService messageService; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + initServices(); + + if (!(request.isUserInRole(Role.SYSADMIN) || service.isUserGlobalGroupAdmin())) { + log.debug("user not sysadmin or global group admin"); + + request.setAttribute("errorName", "UserSearchAction authorisation"); + request.setAttribute("errorMessage", messageService.getMessage("error.authorisation")); + return mapping.findForward("error"); } - + + return mapping.findForward("usersearchlist"); + } + + /** + * Returns list of paged users. + */ + public ActionForward getPagedUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException, JSONException { + initServices(); + + // the organisation type of the children + String searchString = WebUtil.readStrParam(request, "fcol[1]", true); + + // paging parameters of tablesorter + int size = WebUtil.readIntParam(request, "size"); + int page = WebUtil.readIntParam(request, "page"); + Integer isSort1 = WebUtil.readIntParam(request, "column[0]", true); + Integer isSort2 = WebUtil.readIntParam(request, "column[1]", true); + Integer isSort3 = WebUtil.readIntParam(request, "column[2]", true); + Integer isSort4 = WebUtil.readIntParam(request, "column[3]", true); + Integer isSort5 = WebUtil.readIntParam(request, "column[4]", true); + + String sortBy = "userId"; + String sortOrder = "DESC"; + if (isSort1 != null) { + sortBy = "userId"; + sortOrder = isSort1.equals(0) ? "ASC" : "DESC"; + + } else if (isSort2 != null) { + sortBy = "login"; + sortOrder = isSort2.equals(0) ? "ASC" : "DESC"; + + } else if (isSort3 != null) { + sortBy = "firstName"; + sortOrder = isSort3.equals(0) ? "ASC" : "DESC"; + + } else if (isSort4 != null) { + sortBy = "lastName"; + sortOrder = isSort4.equals(0) ? "ASC" : "DESC"; + + } else if (isSort5 != null) { + sortBy = "email"; + sortOrder = isSort5.equals(0) ? "ASC" : "DESC"; + } + + List userDtos = service.getAllUsersPaged(page, size, sortBy, sortOrder, searchString); + + JSONObject responcedata = new JSONObject(); + responcedata.put("total_rows", service.getCountUsers(searchString)); + + JSONArray rows = new JSONArray(); + for (UserDTO userDto: userDtos) { + + JSONObject responseRow = new JSONObject(); + responseRow.put("userId", userDto.getUserID()); + responseRow.put("login", StringEscapeUtils.escapeHtml(userDto.getLogin())); + String firstName = userDto.getFirstName() == null ? "" : userDto.getFirstName(); + responseRow.put("firstName", StringEscapeUtils.escapeHtml(firstName)); + String lastName = userDto.getLastName() == null ? "" : userDto.getLastName(); + responseRow.put("lastName", StringEscapeUtils.escapeHtml(lastName)); + String email = userDto.getEmail() == null ? "" : userDto.getEmail(); + responseRow.put("email", StringEscapeUtils.escapeHtml(email)); + + rows.put(responseRow); + } + responcedata.put("rows", rows); + res.setContentType("application/json;charset=utf-8"); + res.getWriter().print(new String(responcedata.toString())); + return null; + } + + private void initServices() { + if (service == null) { + service = AdminServiceProxy.getService(getServlet().getServletContext()); + } + if (messageService == null) { + messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); + } + } + } Index: lams_admin/web/error.jsp =================================================================== diff -u -rf0c2b8f197da1cd58d9df772e6f0ef072d656602 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_admin/web/error.jsp (.../error.jsp) (revision f0c2b8f197da1cd58d9df772e6f0ef072d656602) +++ lams_admin/web/error.jsp (.../error.jsp) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -62,11 +62,10 @@ Index: lams_admin/web/userorg.jsp =================================================================== diff -u -r1f1bb1b83fb895d3a1ca169a9053cc5a00e99003 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_admin/web/userorg.jsp (.../userorg.jsp) (revision 1f1bb1b83fb895d3a1ca169a9053cc5a00e99003) +++ lams_admin/web/userorg.jsp (.../userorg.jsp) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -1,10 +1,28 @@ <%@ include file="/taglibs.jsp"%> - + + + - -

Index: lams_admin/web/usersearchlist.jsp =================================================================== diff -u -r3ee4c7edb9b3392c93eb8e52e67d1ed0b58c5acb -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_admin/web/usersearchlist.jsp (.../usersearchlist.jsp) (revision 3ee4c7edb9b3392c93eb8e52e67d1ed0b58c5acb) +++ lams_admin/web/usersearchlist.jsp (.../usersearchlist.jsp) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -1,110 +1,189 @@ <%@ include file="/taglibs.jsp"%> + - - - - + + + + + + +

+ + + +

+

+ +

+

" onclick=javascript:document.location='user.do?method=edit' />

- - +

- -

-
- - - - - - - - - - - - - - +
+ - - - - - - + + + + + + - - - + + + +
- - - - - - - - - - - [">] -   - [">] -   - [">] - - - [&returnUrl=admin/usersearch.do">] - - + + + + + + + + + + + +
- - -
- -
-
- - - - - + + +
+ + + + + +
- - Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r2571c8a7cb60a9ced60bec52c5543b648c1360a3 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -r73c1472c62db79b6ec21be7a5cba1d901f193013 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 73c1472c62db79b6ec21be7a5cba1d901f193013) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -49,6 +49,7 @@ + @@ -457,6 +458,10 @@ + + + + Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/IUserDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/IUserDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/IUserDAO.java (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -0,0 +1,32 @@ +package org.lamsfoundation.lams.usermanagement; + +import java.util.List; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * Interface defining User DAO methods. + */ +public interface IUserDAO extends IBaseDAO { + + /** + * Get all users (paged), except for disabled users. + * + * @param page + * @param size + * @param sortBy + * @param sortOrder + * @param searchString filters results by course name. It can be null and then doesn't affect results + * @return paged list of users + */ + List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString); + + /** + * Count total number of users excluding disabled ones and applying searchString filter. + * + * @param searchString + * @return + */ + int getCountUsers(String searchString); +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -0,0 +1,107 @@ +package org.lamsfoundation.lams.usermanagement.dao.hibernate; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Set; +import java.util.TimeZone; + +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +import org.hibernate.Query; +import org.hibernate.SQLQuery; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.themes.dto.CSSThemeBriefDTO; +import org.lamsfoundation.lams.usermanagement.IUserDAO; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * Hibernate implementation of IUserDAO + */ +public class UserDAO extends BaseDAO implements IUserDAO { + + @Override + public List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString) { + + String GET_USERS = "SELECT user.userId, user.login, user.firstName, user.lastName, user.email" + + " FROM " + User.class.getName() + " user " + + " WHERE user.disabledFlag=0 "; + // support for custom search from a toolbar + GET_USERS = addNameSearch(GET_USERS, searchString); + //order by + GET_USERS +=" ORDER BY CASE " + + " WHEN :sortBy='userId' THEN user.userId " + + " WHEN :sortBy='login' THEN user.login " + + " WHEN :sortBy='firstName' THEN user.firstName " + + " WHEN :sortBy='lastName' THEN user.lastName " + + " WHEN :sortBy='email' THEN user.email " + + " END " + sortOrder; + + Query query = getSession().createQuery(GET_USERS); + query.setString("sortBy", sortBy); + query.setFirstResult(page * size); + query.setMaxResults(size); + List list = query.list(); + + //group by userId as long as it returns all completed visitLogs for each user + List userDtos = new ArrayList(); + if (list != null && list.size() > 0) { + for (Object[] element : list) { + + Integer userId = ((Number) element[0]).intValue(); + String login = (String) element[1]; + String firstName = (String) element[2]; + String lastName = (String) element[3]; + String email = (String) element[4]; + + UserDTO userDto = new UserDTO(userId, firstName, lastName, login, null, null, null, email, + null, null, + null, null, null, null, + null, true, + null, false + ); + + userDtos.add(userDto); + } + } + + return userDtos; + } + + @Override + public int getCountUsers(String searchString) { + String GET_USERS = "SELECT count(*) FROM " + User.class.getName() + " user " + + " WHERE user.disabledFlag=0 "; + // support for custom search from a toolbar + GET_USERS = addNameSearch(GET_USERS, searchString); + + Query query = getSession().createQuery(GET_USERS); + + List list = query.list(); + if (list == null || list.size() == 0) { + return 0; + } else { + return ((Number) list.get(0)).intValue(); + } + } + + private String addNameSearch(String query, String searchString) { + StringBuilder queryWithSearch = new StringBuilder(query); + + if (!StringUtils.isBlank(searchString)) { + String[] tokens = searchString.trim().split("\\s+"); + for (String token : tokens) { + String escToken = StringEscapeUtils.escapeSql(token); + queryWithSearch.append(" AND (user.firstName LIKE '%").append(escToken) + .append("%' OR user.lastName LIKE '%").append(escToken) + .append("%' OR user.login LIKE '%").append(escToken) + .append("%' OR user.email LIKE '%").append(escToken).append("%')"); + } + } + + return queryWithSearch.toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java =================================================================== diff -u -r48eb3881563dc0f2576c2df926f47a75424e1e84 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java (.../UserOrganisationDAO.java) (revision 48eb3881563dc0f2576c2df926f47a75424e1e84) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java (.../UserOrganisationDAO.java) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -35,7 +35,6 @@ /** * @author jliew - * */ public class UserOrganisationDAO extends BaseDAO implements IUserOrganisationDAO { Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java =================================================================== diff -u -r509d15bcc570bff483a13152ef8c45cbae767e78 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision 509d15bcc570bff483a13152ef8c45cbae767e78) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/IUserManagementService.java (.../IUserManagementService.java) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -479,6 +479,14 @@ Integer getCountUsers(); Integer getCountUsers(Integer authenticationMethodId); + + /** + * Count total number of users excluding disabled ones and applying searchString filter. + * + * @param searchString + * @return + */ + int getCountUsers(String searchString); List getActiveCourseIdsByUser(Integer userId, boolean isSysadmin); @@ -531,6 +539,18 @@ * @return list of Users */ List getAllUsers(); + + /** + * Get all users (paged), except for disabled users. + * + * @param page + * @param size + * @param sortBy + * @param sortOrder + * @param searchString filters results by course name. It can be null and then doesn't affect results + * @return paged list of users + */ + List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString); /** * Get all users, except for disabled users and users that are members of filteredOrg. Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r509d15bcc570bff483a13152ef8c45cbae767e78 -rf0068567e57c2d2da0ebdc6cd43091d564d3b493 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 509d15bcc570bff483a13152ef8c45cbae767e78) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision f0068567e57c2d2da0ebdc6cd43091d564d3b493) @@ -40,10 +40,12 @@ import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.hibernate.Query; import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; import org.lamsfoundation.lams.themes.Theme; import org.lamsfoundation.lams.usermanagement.ForgotPasswordRequest; +import org.lamsfoundation.lams.usermanagement.IUserDAO; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationGroup; import org.lamsfoundation.lams.usermanagement.OrganisationGrouping; @@ -101,56 +103,19 @@ private IRoleDAO roleDAO; private IOrganisationDAO organisationDAO; + + private IUserDAO userDAO; private IUserOrganisationDAO userOrganisationDAO; protected MessageService messageService; private static IAuditService auditService; + + // --------------------------------------------------------------------- + // Service Methods + // --------------------------------------------------------------------- - private IAuditService getAuditService() { - if (UserManagementService.auditService == null) { - WebApplicationContext ctx = WebApplicationContextUtils - .getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); - UserManagementService.auditService = (IAuditService) ctx.getBean("auditService"); - } - return UserManagementService.auditService; - } - - /** - * Set i18n MessageService - */ - public void setMessageService(MessageService messageService) { - this.messageService = messageService; - } - - /** - * Get i18n MessageService - */ - public MessageService getMessageService() { - return messageService; - } - - public void setBaseDAO(IBaseDAO baseDAO) { - this.baseDAO = baseDAO; - } - - public void setGroupDAO(IGroupDAO groupDAO) { - this.groupDAO = groupDAO; - } - - public void setRoleDAO(IRoleDAO roleDAO) { - this.roleDAO = roleDAO; - } - - public void setOrganisationDAO(IOrganisationDAO organisationDAO) { - this.organisationDAO = organisationDAO; - } - - public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDAO) { - this.userOrganisationDAO = userOrganisationDAO; - } - public void save(Object object) { try { if (object instanceof User) { @@ -1108,12 +1073,19 @@ String message = messageService.getMessage("audit.user.create", args); getAuditService().log(moduleName, message); } - + + @Override public Integer getCountUsers() { - String query = "select count(u) from User u"; + String query = "SELECT count(u) FROM User u"; return getFindIntegerResult(query); } + + @Override + public int getCountUsers(String searchString) { + return userDAO.getCountUsers(searchString); + } + @Override public Integer getCountUsers(Integer authenticationMethodId) { String query = "select count(u) from User u " + "where u.authenticationMethod.authenticationMethodId=" + authenticationMethodId; @@ -1128,11 +1100,13 @@ return null; } + @Override public List getActiveCourseIdsByUser(Integer userId, boolean isSysadmin) { List list = organisationDAO.getActiveCourseIdsByUser(userId, isSysadmin); return populateCollapsedOrgDTOs(list, isSysadmin); } + @Override public List getArchivedCourseIdsByUser(Integer userId, boolean isSysadmin) { List list = organisationDAO.getArchivedCourseIdsByUser(userId, isSysadmin); return populateCollapsedOrgDTOs(list, isSysadmin); @@ -1164,6 +1138,7 @@ return dtoList; } + @Override public List searchUserSingleTerm(String term) { term = StringEscapeUtils.escapeSql(term); String query = "select u from User u where (u.login like '%" + term + "%' or u.firstName like '%" + term @@ -1173,6 +1148,7 @@ return list; } + @Override public List searchUserSingleTerm(String term, Integer filteredOrgId) { term = StringEscapeUtils.escapeSql(term); String query = "select u from User u where (u.login like '%" + term + "%' or u.firstName like '%" + term @@ -1183,6 +1159,7 @@ return list; } + @Override public List searchUserSingleTerm(String term, Integer orgId, Integer filteredOrgId) { term = StringEscapeUtils.escapeSql(term); String query = "select uo.user from UserOrganisation uo where (uo.user.login like '%" + term + "%'" @@ -1195,6 +1172,7 @@ return list; } + @Override public List searchUserSingleTerm(String term, Integer orgId, boolean includeChildOrgs) { term = StringEscapeUtils.escapeSql(term); String whereClause = ""; @@ -1210,30 +1188,40 @@ return list; } + @Override public List getAllUsers() { String query = "from User u where u.disabledFlag=0 order by u.login"; return baseDAO.find(query); } + + @Override + public List getAllUsersPaged(int page, int size, String sortBy, String sortOrder, String searchString) { + return userDAO.getAllUsersPaged(page, size, sortBy, sortOrder, searchString); + } + @Override public List getAllUsers(Integer filteredOrgId) { String query = "from User u where u.disabledFlag=0 and u.userId not in" + " (select uo.user.userId from UserOrganisation uo where uo.organisation.organisationId=" + filteredOrgId + ")" + " order by u.login"; return baseDAO.find(query); } + @Override public List getAllUsersWithEmail(String email) { String query = "from User u where u.email=\'" + email + "\' order by u.login"; return baseDAO.find(query); } + @Override public List getUsersFromOrganisation(Integer orgId, Integer filteredOrgId) { String query = "select uo.user from UserOrganisation uo where uo.organisation.organisationId=" + orgId + " and uo.user.userId not in (select uo.user.userId from UserOrganisation uo" + " where uo.organisation.organisationId=" + filteredOrgId + ") order by uo.user.login"; return baseDAO.find(query); } + @Override public boolean canEditGroup(Integer userId, Integer orgId) { if (isUserSysAdmin() || isUserGlobalGroupAdmin()) { return true; @@ -1264,4 +1252,48 @@ List results = baseDAO.findByProperty(User.class, "openidURL", openidURL); return results.isEmpty() ? null : (User) results.get(0); } + + // --------------------------------------------------------------------- + // Inversion of Control Methods - Method injection + // --------------------------------------------------------------------- + + /** + * Set i18n MessageService + */ + public void setMessageService(MessageService messageService) { + this.messageService = messageService; + } + + public void setBaseDAO(IBaseDAO baseDAO) { + this.baseDAO = baseDAO; + } + + public void setGroupDAO(IGroupDAO groupDAO) { + this.groupDAO = groupDAO; + } + + public void setRoleDAO(IRoleDAO roleDAO) { + this.roleDAO = roleDAO; + } + + public void setOrganisationDAO(IOrganisationDAO organisationDAO) { + this.organisationDAO = organisationDAO; + } + + public void setUserDAO(IUserDAO userDAO) { + this.userDAO = userDAO; + } + + public void setUserOrganisationDAO(IUserOrganisationDAO userOrganisationDAO) { + this.userOrganisationDAO = userOrganisationDAO; + } + + private IAuditService getAuditService() { + if (UserManagementService.auditService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getWebApplicationContext(HttpSessionManager.getInstance().getServletContext()); + UserManagementService.auditService = (IAuditService) ctx.getBean("auditService"); + } + return UserManagementService.auditService; + } } \ No newline at end of file