Changeset 30417

Show
Ignore:
Timestamp:
02/21/08 21:02:34 (9 months ago)
Author:
atchertchian
Message:

NXP-2075: sort query results on ldap directory

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-ldap/src/main/java/org/nuxeo/ecm/directory/ldap/LDAPSession.java

    r29934 r30417  
    6868import org.nuxeo.ecm.directory.Reference; 
    6969import org.nuxeo.ecm.directory.Session; 
     70import org.nuxeo.ecm.directory.AbstractDirectory.EntryComparator; 
    7071 
    7172/** 
     
    439440                    searchBaseDn, filterExpr, filterArgs, scts); 
    440441 
    441             return ldapResultsToDocumentModels(results, fetchReferences); 
     442            DocumentModelList entries = ldapResultsToDocumentModels(results, 
     443                    fetchReferences); 
     444 
     445            if (orderBy != null && !orderBy.isEmpty()) { 
     446                directory.orderEntries(entries, orderBy); 
     447            } 
     448 
     449            return entries; 
    442450        } catch (SizeLimitExceededException e) { 
    443451            throw new org.nuxeo.ecm.directory.SizeLimitExceededException(e); 
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-ldap/src/test/java/org/nuxeo/ecm/directory/ldap/TestLDAPSession.java

    r30096 r30417  
    794794            assertEquals("user3", entries.get(0).getId()); 
    795795 
     796        } finally { 
     797            session.close(); 
     798        } 
     799    } 
     800 
     801    public void testQueryOrderBy() throws ClientException { 
     802        Session session = getLDAPDirectory("userDirectory").getSession(); 
     803        try { 
     804            Map<String, Object> filter = new HashMap<String, Object>(); 
     805            Map<String, String> orderBy = new HashMap<String, String>(); 
     806            DocumentModelList entries; 
     807 
     808            orderBy.put("company", "asc"); 
     809            entries = session.query(filter, Collections.<String> emptySet(), orderBy); 
     810            assertEquals(4, entries.size()); 
     811            // user3: creole 
     812            // Administrator: nuxeo 
     813            // user2: super 
     814            // user1: viral prod 
     815            assertEquals("user3", entries.get(0).getId()); 
     816            assertEquals("Administrator", entries.get(1).getId()); 
     817            assertEquals("user2", entries.get(2).getId()); 
     818            assertEquals("user1", entries.get(3).getId()); 
    796819        } finally { 
    797820            session.close(); 
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-ldap/src/test/resources/TestDirectoriesWithInternalApacheDS.xml

    r25129 r30417  
    6363      <fieldMapping name="lastName">sn</fieldMapping> 
    6464      <fieldMapping name="password">userPassword</fieldMapping> 
     65      <fieldMapping name="company">o</fieldMapping> 
    6566 
    6667      <!-- LDAP references do not work with the internal server  --> 
  • org.nuxeo.ecm.platform/branches/5.1/nuxeo-platform-directory-ldap/src/test/resources/sample-users.ldif

    r27815 r30417  
    5353sn: Manager 
    5454initials: A 
     55o: nuxeo 
    5556mail: ogrisel+Administrator@nuxeo.com 
    5657userPassword: {SSHA}ab0BjYogPKSkIObPrylcLz3owHlZGcnCoJz38Q== 
     
    6768sn: One 
    6869initials: UO 
     70o: viral prod 
    6971roomNumber: OpenSpace 
    7072employeeType: Boss 
     
    8789sn: One 
    8890initials: UO 
     91o: super 
    8992roomNumber: OpenSpace 
    9093employeeType: Slave 
     
    109112mail: ogrisel+user3@nuxeo.com 
    110113userPassword: {SSHA}LYE/IHy43vnqhuPzuXF+qoy1H307iishAHBMZA== 
    111  
     114o: creole 
    112115 
    113116#