From defab91e498d4516f715e0523da20004459211c9 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Tue, 26 Jan 2010 00:52:21 +0000
Subject: [PATCH] Fix for issue 4515 (control-panel entry browser does not deal well with sub-suffixes)

---
 opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
index 082b23a..cca4b07 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/ui/AbstractBrowseEntriesPanel.java
@@ -1307,6 +1307,7 @@
           InitialLdapContext ctx = getInfo().getDirContext();
           InitialLdapContext ctx1 = controller.getConfigurationConnection();
           boolean setConnection = ctx != ctx1;
+          updateNumSubordinateHacker(desc);
           if (setConnection)
           {
             if (getInfo().getUserDataDirContext() == null)
@@ -1780,6 +1781,45 @@
   }
 
   /**
+   * Updates the NumsubordinateHacker of the browser controller with the
+   * provided server descriptor.
+   * @param server the server descriptor.
+   */
+  private void updateNumSubordinateHacker(ServerDescriptor server)
+  {
+    String serverHost = server.getHostname();
+    int serverPort = server.getAdminConnector().getPort();
+
+    ArrayList<DN> allSuffixes = new ArrayList<DN>();
+    for (BackendDescriptor backend : server.getBackends())
+    {
+      for (BaseDNDescriptor baseDN : backend.getBaseDns())
+      {
+        allSuffixes.add(baseDN.getDn());
+      }
+    }
+    ArrayList<DN> rootSuffixes = new ArrayList<DN>();
+    for (DN dn : allSuffixes)
+    {
+      boolean isRootSuffix = true;
+      for (DN dn1 : allSuffixes)
+      {
+        if (dn1.isAncestorOf(dn) && !dn1.equals(dn))
+        {
+          isRootSuffix = false;
+          break;
+        }
+      }
+      if (isRootSuffix)
+      {
+        rootSuffixes.add(dn);
+      }
+    }
+    controller.getNumSubordinateHacker().update(allSuffixes, rootSuffixes,
+        serverHost, serverPort);
+  }
+
+  /**
    * This is a class that simply checks the number of entries that the browser
    * contains and updates a counter with the new number of entries.
    * It is basically a thread that sleeps and checks whether some

--
Gitblit v1.10.0