예제 #1
0
  private Vector getAttribute(String entryDN, String attr) {
    Vector v = new Vector();
    LDAPSearchResults searchResults;
    LDAPEntry entry = null;
    try {
      searchResults = connection.search(entryDN, LDAPConnection.SCOPE_BASE, "", null, false);
      entry = searchResults.next();
    } catch (LDAPException e) {
      // e.printStackTrace();
      return v;
    }

    // System.out.println(entry);
    LDAPAttributeSet attributeSet = entry.getAttributeSet();
    // System.out.println(attributeSet);
    Iterator allAttributes = attributeSet.iterator();

    while (allAttributes.hasNext()) {
      LDAPAttribute attribute = (LDAPAttribute) allAttributes.next();
      String attributeName = attribute.getName();
      if (attributeName.equalsIgnoreCase(attr)) {
        Enumeration en = attribute.getStringValues();
        for (; en.hasMoreElements(); ) {
          v.add(en.nextElement());
        }
      }
    }
    return v;
  }
  /**
   * Gives the members, in the ldap, that are corresponding to the logic definition of a group.
   *
   * @param definition The logic definition of the members of the group.
   * @return The set of the members ids.
   * @see
   *     org.esco.dynamicgroups.dao.ldap.IMembersFromDefinitionDAO#getMembers(DynamicGroupDefinition)
   */
  public Set<String> getMembers(final DynamicGroupDefinition definition) {
    final Set<String> userIds = new HashSet<String>();
    if (definition.isValid()) {
      checkConnection();

      final String filter = translateToLdapFilter(definition);

      try {
        final LDAPSearchResults result =
            getConnection()
                .search(
                    ldapParameters.getLdapSearchBase(),
                    LDAPConnection.SCOPE_SUB,
                    filter,
                    uidAttributeArray,
                    false,
                    constraints);

        while (result.hasMore()) {
          final LDAPEntry entry = result.next();
          userIds.add(entry.getAttribute(ldapParameters.getLdapUidAttribute()).getStringValue());
        }

      } catch (LDAPException e) {
        LOGGER.error(
            "Error while trying to retrieve the members for the definition: "
                + definition
                + " - associated filter: "
                + filter);
        LOGGER.error(e, e);
        final String filter2 = translateToLdapFilter(definition);
        LOGGER.error("!!! Remove this message : " + filter2);
      }
    }
    return userIds;
  }