UID が既に存在するかどうかを確認する方法。存在する場合、姓と名の 3 文字で新しいユーザーの値を 1 つ増やします。UId が存在しない場合は、UID の値を割り当てて ...eDirectory に保存します。
public class searchattribute
{
   public static void main (String[] args)
{
    Hashtable env = new Hashtable();
    String adminName = "cn=admin,o=novell";
    String adminPassword = "Happiest1";
    String ldapURL = "ldaps://10.18.26.192:636";
    //Access the keystore, this is where the Root CA public key cert was installed
    //Could also do this via the command line option java -Djavax.net.ssl.trustStore....
    //No need to specifiy the keystore password for read operations
    String keystore = "C:\\Users\\durga.tiruvakkad\\Desktop\\cert.keystore";
    System.setProperty("javax.net.ssl.trustStore",keystore);
    env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    //set security credentials
    env.put(Context.SECURITY_AUTHENTICATION,"simple");
    env.put(Context.SECURITY_PRINCIPAL,adminName);
    env.put(Context.SECURITY_CREDENTIALS,adminPassword);
    //specify use of ssl
    env.put(Context.SECURITY_PROTOCOL,"ssl");
    //connect to my domain controller
    env.put(Context.PROVIDER_URL,ldapURL);
    try {
        // Create the initial directory context
        DirContext ctx = new InitialLdapContext(env,null);
        //Create the search controls        
        SearchControls searchCtls = new SearchControls();
        //Specify the attributes to return
        String returnedAtts[]={"sn","givenName","UID"};
        searchCtls.setReturningAttributes(returnedAtts);
        //Specify the search scope
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        //specify the LDAP search filter
        String searchFilter = "(&(objectClass=user)(UID=*))";
        //Specify the Base for the search
        String searchBase = "ou=FWCMS,o=novell";
        //initialize counter to total the results
        int totalResults = 0;
        // Search for objects using the filter
        NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
        //Loop through the search results
        while (answer.hasMoreElements()) {
                SearchResult sr = (SearchResult)answer.next();
            totalResults++;
            System.out.println(">>>" + sr.getName());
            // Print out some of the attributes, catch the exception if the attributes have no values
            Attributes attrs = sr.getAttributes();
            if (attrs != null) {
                try {
                System.out.println("   surname: " + attrs.get("sn").get());
                System.out.println("   firstname: " + attrs.get("givenName").get());
                System.out.println("   UID: " + attrs.get("UID").get());
                                    } 
                catch (NullPointerException e)  {
                System.out.println("Errors listing attributes: " + e);
                }
            }
        }
        System.out.println("Total results: " + totalResults);
        ctx.close();
    } 
    catch (NamingException e) {
        System.err.println("Problem searching directory: " + e);
    }
    }
}
}
ユーザーの名前が同じ場合は検索でチェックする必要があり、ユーザーが存在する場合はその値をインクリメントする必要があります