From 8f59b2f80eab5a18bc35028b29b9160195409e9c Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 28 Jul 2009 14:34:08 +0000
Subject: [PATCH] Fix for issue 4148 (setup fails : The import LDIF tool returned error code 1) Since the import-ldif utility does not support any more (temporarily) the append option the setup (and the control-panel) were broken.

---
 opends/src/server/org/opends/server/util/SetupUtils.java |  100 ++++++++++++++++++++++++++++++++-----------------
 1 files changed, 65 insertions(+), 35 deletions(-)

diff --git a/opends/src/server/org/opends/server/util/SetupUtils.java b/opends/src/server/org/opends/server/util/SetupUtils.java
index a9803fd..5e5659b 100644
--- a/opends/src/server/org/opends/server/util/SetupUtils.java
+++ b/opends/src/server/org/opends/server/util/SetupUtils.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2006-2008 Sun Microsystems, Inc.
+ *      Copyright 2006-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.util;
 
@@ -39,7 +39,9 @@
 import java.security.KeyStoreException;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateEncodingException;
+import java.util.HashSet;
 import java.util.LinkedList;
+import java.util.Set;
 
 import java.util.Random;
 import org.opends.server.types.OperatingSystem;
@@ -146,51 +148,79 @@
   public static File createTemplateFile(String baseDN, int numEntries)
          throws IOException
   {
+    Set<String> baseDNs = new HashSet<String>(1);
+    baseDNs.add(baseDN);
+    return createTemplateFile(baseDNs, numEntries);
+  }
+
+  /**
+   * Creates a MakeLDIF template file using the provided information.
+   *
+   * @param  baseDNs     The base DNs for the data in the template file.
+   * @param  numEntries  The number of user entries the template file should
+   *                     create.
+   *
+   * @return  The {@code File} object that references the created template file.
+   *
+   * @throws  IOException  If a problem occurs while writing the template file.
+   */
+  public static File createTemplateFile(Set<String> baseDNs,
+      int numEntries)
+         throws IOException
+  {
     File templateFile = File.createTempFile("opends-install", ".template");
     templateFile.deleteOnExit();
 
     LinkedList<String> lines = new LinkedList<String>();
-    lines.add("define suffix=" + baseDN);
-
+    int i = 0;
+    for (String baseDN : baseDNs)
+    {
+      i++;
+      lines.add("define suffix"+i+"=" + baseDN);
+    }
     if (numEntries > 0)
     {
       lines.add("define numusers=" + numEntries);
     }
 
-    lines.add("");
-    lines.add("branch: [suffix]");
-    lines.add("");
-    lines.add("branch: ou=People,[suffix]");
-
-    if (numEntries > 0)
+    for (i=0; i<baseDNs.size(); i++)
     {
-      lines.add("subordinateTemplate: person:[numusers]");
+      i++;
       lines.add("");
-      lines.add("template: person");
-      lines.add("rdnAttr: uid");
-      lines.add("objectClass: top");
-      lines.add("objectClass: person");
-      lines.add("objectClass: organizationalPerson");
-      lines.add("objectClass: inetOrgPerson");
-      lines.add("givenName: <first>");
-      lines.add("sn: <last>");
-      lines.add("cn: {givenName} {sn}");
-      lines.add("initials: {givenName:1}" +
-                "<random:chars:ABCDEFGHIJKLMNOPQRSTUVWXYZ:1>{sn:1}");
-      lines.add("employeeNumber: <sequential:0>");
-      lines.add("uid: user.{employeeNumber}");
-      lines.add("mail: {uid}@maildomain.net");
-      lines.add("userPassword: password");
-      lines.add("telephoneNumber: <random:telephone>");
-      lines.add("homePhone: <random:telephone>");
-      lines.add("pager: <random:telephone>");
-      lines.add("mobile: <random:telephone>");
-      lines.add("street: <random:numeric:5> <file:streets> Street");
-      lines.add("l: <file:cities>");
-      lines.add("st: <file:states>");
-      lines.add("postalCode: <random:numeric:5>");
-      lines.add("postalAddress: {cn}${street}${l}, {st}  {postalCode}");
-      lines.add("description: This is the description for {cn}.");
+      lines.add("branch: [suffix"+i+"]");
+      lines.add("");
+      lines.add("branch: ou=People,[suffix"+i+"]");
+
+      if (numEntries > 0)
+      {
+        lines.add("subordinateTemplate: person:[numusers]");
+        lines.add("");
+        lines.add("template: person");
+        lines.add("rdnAttr: uid");
+        lines.add("objectClass: top");
+        lines.add("objectClass: person");
+        lines.add("objectClass: organizationalPerson");
+        lines.add("objectClass: inetOrgPerson");
+        lines.add("givenName: <first>");
+        lines.add("sn: <last>");
+        lines.add("cn: {givenName} {sn}");
+        lines.add("initials: {givenName:1}" +
+        "<random:chars:ABCDEFGHIJKLMNOPQRSTUVWXYZ:1>{sn:1}");
+        lines.add("employeeNumber: <sequential:0>");
+        lines.add("uid: user.{employeeNumber}");
+        lines.add("mail: {uid}@maildomain.net");
+        lines.add("userPassword: password");
+        lines.add("telephoneNumber: <random:telephone>");
+        lines.add("homePhone: <random:telephone>");
+        lines.add("pager: <random:telephone>");
+        lines.add("mobile: <random:telephone>");
+        lines.add("street: <random:numeric:5> <file:streets> Street");
+        lines.add("l: <file:cities>");
+        lines.add("st: <file:states>");
+        lines.add("postalCode: <random:numeric:5>");
+        lines.add("postalAddress: {cn}${street}${l}, {st}  {postalCode}");
+        lines.add("description: This is the description for {cn}.");
+      }
     }
 
     BufferedWriter writer = new BufferedWriter(new FileWriter(templateFile));

--
Gitblit v1.10.0