List findUsers()

in src/main/java/org/apache/directory/fortress/core/impl/UserDAO.java [975:1050]


    List<User> findUsers( User user ) throws FinderException
    {
        List<User> userList = new ArrayList<>();
        LdapConnection ld = null;
        String userRoot = getRootDn( user.getContextId(), GlobalIds.USER_ROOT );

        try
        {
            //String filter;
            StringBuilder filterbuf = new StringBuilder();
            if ( StringUtils.isNotEmpty( user.getUserId() ) )
            {
                // place a wild card after the input userId:
                String searchVal = encodeSafeText( user.getUserId(), GlobalIds.USERID_LEN );
                filterbuf.append( GlobalIds.FILTER_PREFIX );
                filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
                filterbuf.append( ")(" );
                filterbuf.append( SchemaConstants.UID_AT );
                filterbuf.append( "=" );
                filterbuf.append( searchVal );
                filterbuf.append( "*))" );
            }
            else if ( StringUtils.isNotEmpty( user.getInternalId() ) )
            {
                // internalUserId search
                String searchVal = encodeSafeText( user.getInternalId(), GlobalIds.USERID_LEN );
                // this is not a wildcard search. Must be exact match.
                filterbuf.append( GlobalIds.FILTER_PREFIX );
                filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
                filterbuf.append( ")(" );
                filterbuf.append( GlobalIds.FT_IID );
                filterbuf.append( "=" );
                filterbuf.append( searchVal );
                filterbuf.append( "))" );
            }
            else
            {
                // Beware - returns ALL users!!:"
                filterbuf.append( "(objectclass=" );
                filterbuf.append( Config.getInstance().getProperty( USER_OBJECT_CLASS ) );
                filterbuf.append( ")" );
            }

            ld = getAdminConnection();
            try ( SearchCursor searchResults = search( ld, userRoot, SearchScope.ONELEVEL, filterbuf.toString(), defaultAtrs, false,
                    Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) ) )
            {
                long sequence = 0;
                while ( searchResults.next() )
                {
                    userList.add( unloadLdapEntry( searchResults.getEntry(), sequence++, user.getContextId() ) );
                }
            }
            catch ( IOException e )
            {
                String warning = "findUsers userRoot [" + userRoot + "] caught IOException=" + e.getMessage();
                throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
            }
            catch ( CursorException e )
            {
                String warning = "findUsers userRoot [" + userRoot + "] caught CursorException=" + e.getMessage();
                throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
            }
        }
        catch ( LdapException e )
        {
            String warning = "findUsers userRoot [" + userRoot + "] caught LDAPException=" + e;
            throw new FinderException( GlobalErrIds.USER_SEARCH_FAILED, warning, e );
        }
        finally
        {
            closeAdminConnection( ld );
        }

        return userList;
    }