public List<User> findByC_FN_MN_LN_SN_EA_S( long companyId, String[] firstNames, String[] middleNames, String[] lastNames, String[] screenNames, String[] emailAddresses, int status, LinkedHashMap<String, Object> params, boolean andOperator, int start, int end, OrderByComparator obc) throws SystemException { firstNames = CustomSQLUtil.keywords(firstNames); middleNames = CustomSQLUtil.keywords(middleNames); lastNames = CustomSQLUtil.keywords(lastNames); screenNames = CustomSQLUtil.keywords(screenNames); emailAddresses = CustomSQLUtil.keywords(emailAddresses); if (params == null) { params = _emptyLinkedHashMap; } Long[] groupIds = null; if (params.get("usersGroups") instanceof Long) { Long groupId = (Long) params.get("usersGroups"); if (groupId > 0) { groupIds = new Long[] {groupId}; } } else { groupIds = (Long[]) params.get("usersGroups"); } boolean inherit = GetterUtil.getBoolean(params.get("inherit")); boolean doUnion = Validator.isNotNull(groupIds) && inherit; LinkedHashMap<String, Object> params1 = params; LinkedHashMap<String, Object> params2 = null; LinkedHashMap<String, Object> params3 = null; if (doUnion) { params2 = new LinkedHashMap<String, Object>(params1); params2.remove("usersGroups"); params3 = new LinkedHashMap<String, Object>(params1); params3.remove("usersGroups"); List<Long> organizationIds = new ArrayList<Long>(); List<Long> userGroupIds = new ArrayList<Long>(); for (long groupId : groupIds) { Group group = GroupLocalServiceUtil.fetchGroup(groupId); if ((group != null) && group.isOrganization()) { organizationIds.add(group.getOrganizationId()); } List<Organization> organizations = GroupUtil.getOrganizations(groupId); for (Organization organization : organizations) { organizationIds.add(organization.getOrganizationId()); } List<UserGroup> userGroups = GroupUtil.getUserGroups(groupId); for (int i = 0; i < userGroups.size(); i++) { UserGroup userGroup = userGroups.get(i); userGroupIds.add(userGroup.getUserGroupId()); } } params2.put("usersOrgs", organizationIds.toArray(new Long[organizationIds.size()])); params3.put("usersUserGroups", userGroupIds.toArray(new Long[userGroupIds.size()])); } Session session = null; try { session = openSession(); String sql = CustomSQLUtil.get(FIND_BY_C_FN_MN_LN_SN_EA_S); sql = CustomSQLUtil.replaceKeywords( sql, "lower(User_.firstName)", StringPool.LIKE, false, firstNames); sql = CustomSQLUtil.replaceKeywords( sql, "lower(User_.middleName)", StringPool.LIKE, false, middleNames); sql = CustomSQLUtil.replaceKeywords( sql, "lower(User_.lastName)", StringPool.LIKE, false, lastNames); sql = CustomSQLUtil.replaceKeywords( sql, "lower(User_.screenName)", StringPool.LIKE, false, screenNames); sql = CustomSQLUtil.replaceKeywords( sql, "lower(User_.emailAddress)", StringPool.LIKE, true, emailAddresses); if (status == WorkflowConstants.STATUS_ANY) { sql = StringUtil.replace(sql, _STATUS_SQL, StringPool.BLANK); } StringBundler sb = new StringBundler(); sb.append(StringPool.OPEN_PARENTHESIS); sb.append(replaceJoinAndWhere(sql, params1)); sb.append(StringPool.CLOSE_PARENTHESIS); if (doUnion) { sb.append(" UNION ("); sb.append(replaceJoinAndWhere(sql, params2)); sb.append(") UNION ("); sb.append(replaceJoinAndWhere(sql, params3)); sb.append(StringPool.CLOSE_PARENTHESIS); } if (obc != null) { sb.append(" ORDER BY "); sb.append(obc.toString()); } sql = sb.toString(); sql = CustomSQLUtil.replaceAndOperator(sql, andOperator); SQLQuery q = session.createSQLQuery(sql); q.addScalar("userId", Type.LONG); QueryPos qPos = QueryPos.getInstance(q); setJoin(qPos, params1); qPos.add(companyId); qPos.add(false); qPos.add(firstNames, 2); qPos.add(middleNames, 2); qPos.add(lastNames, 2); qPos.add(screenNames, 2); qPos.add(emailAddresses, 2); if (status != WorkflowConstants.STATUS_ANY) { qPos.add(status); } if (doUnion) { setJoin(qPos, params2); qPos.add(companyId); qPos.add(false); qPos.add(firstNames, 2); qPos.add(middleNames, 2); qPos.add(lastNames, 2); qPos.add(screenNames, 2); qPos.add(emailAddresses, 2); if (status != WorkflowConstants.STATUS_ANY) { qPos.add(status); } setJoin(qPos, params3); qPos.add(companyId); qPos.add(false); qPos.add(firstNames, 2); qPos.add(middleNames, 2); qPos.add(lastNames, 2); qPos.add(screenNames, 2); qPos.add(emailAddresses, 2); if (status != WorkflowConstants.STATUS_ANY) { qPos.add(status); } } List<Long> userIds = (List<Long>) QueryUtil.list(q, getDialect(), start, end); List<User> users = new ArrayList<User>(userIds.size()); for (Long userId : userIds) { User user = UserUtil.findByPrimaryKey(userId); users.add(user); } return users; } catch (Exception e) { throw new SystemException(e); } finally { closeSession(session); } }
public int countByC_FN_MN_LN_SN_EA_S( long companyId, String[] firstNames, String[] middleNames, String[] lastNames, String[] screenNames, String[] emailAddresses, int status, LinkedHashMap<String, Object> params, boolean andOperator) throws SystemException { firstNames = CustomSQLUtil.keywords(firstNames); middleNames = CustomSQLUtil.keywords(middleNames); lastNames = CustomSQLUtil.keywords(lastNames); screenNames = CustomSQLUtil.keywords(screenNames); emailAddresses = CustomSQLUtil.keywords(emailAddresses); if (params == null) { params = _emptyLinkedHashMap; } Long[] groupIds = null; if (params.get("usersGroups") instanceof Long) { Long groupId = (Long) params.get("usersGroups"); if (groupId > 0) { groupIds = new Long[] {groupId}; } } else { groupIds = (Long[]) params.get("usersGroups"); } boolean inherit = GetterUtil.getBoolean(params.get("inherit")); boolean doUnion = Validator.isNotNull(groupIds) && inherit; LinkedHashMap<String, Object> params1 = params; LinkedHashMap<String, Object> params2 = null; LinkedHashMap<String, Object> params3 = null; if (doUnion) { params2 = new LinkedHashMap<String, Object>(params1); params2.remove("usersGroups"); params3 = new LinkedHashMap<String, Object>(params1); params3.remove("usersGroups"); List<Long> organizationIds = new ArrayList<Long>(); List<Long> userGroupIds = new ArrayList<Long>(); for (long groupId : groupIds) { Group group = GroupLocalServiceUtil.fetchGroup(groupId); if ((group != null) && group.isOrganization()) { organizationIds.add(group.getOrganizationId()); } List<Organization> organizations = GroupUtil.getOrganizations(groupId); for (Organization organization : organizations) { organizationIds.add(organization.getOrganizationId()); } List<UserGroup> userGroups = GroupUtil.getUserGroups(groupId); for (int i = 0; i < userGroups.size(); i++) { UserGroup userGroup = userGroups.get(i); userGroupIds.add(userGroup.getUserGroupId()); } } params2.put("usersOrgs", organizationIds.toArray(new Long[organizationIds.size()])); params3.put("usersUserGroups", userGroupIds.toArray(new Long[userGroupIds.size()])); } Session session = null; try { session = openSession(); Set<Long> userIds = new HashSet<Long>(); userIds.addAll( countByC_FN_MN_LN_SN_EA_S( session, companyId, firstNames, middleNames, lastNames, screenNames, emailAddresses, status, params1, andOperator)); if (doUnion) { userIds.addAll( countByC_FN_MN_LN_SN_EA_S( session, companyId, firstNames, middleNames, lastNames, screenNames, emailAddresses, status, params2, andOperator)); userIds.addAll( countByC_FN_MN_LN_SN_EA_S( session, companyId, firstNames, middleNames, lastNames, screenNames, emailAddresses, status, params3, andOperator)); } return userIds.size(); } catch (Exception e) { throw new SystemException(e); } finally { closeSession(session); } }