From c9958277baf5f911bda401802259a4b50d9cd599 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 03 Aug 2016 16:06:26 +0000
Subject: [PATCH] BasicNode: use DN

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java |   49 ++++++++++++++++++++++---------------------------
 1 files changed, 22 insertions(+), 27 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
index 5c909d4..44d550b 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/task/DeleteEntryTask.java
@@ -94,7 +94,7 @@
     for (TreePath path : paths)
     {
       BasicNode node = (BasicNode)path.getLastPathComponent();
-      entries.add(DN.valueOf(node.getDN()));
+      entries.add(node.getDN());
     }
     for (BackendDescriptor backend : info.getServerDescriptor().getBackends())
     {
@@ -186,37 +186,20 @@
       for (TreePath path : paths)
       {
         BasicNode node = (BasicNode)path.getLastPathComponent();
-        try
+        DN dn = node.getDN();
+        if (!isAlreadyDeleted(alreadyDeleted, dn))
         {
-          DN dn = DN.valueOf(node.getDN());
-          boolean isDnDeleted = false;
-          for (DN deletedDn : alreadyDeleted)
+          ConnectionWrapper conn = controller.findConnectionForDisplayedEntry(node);
+          useAdminCtx = controller.isConfigurationNode(node);
+          if (node.hasSubOrdinates())
           {
-            if (dn.isSubordinateOrEqualTo(deletedDn))
-            {
-              isDnDeleted = true;
-              break;
-            }
+            deleteSubtreeWithControl(conn, dn, path, toNotify);
           }
-          if (!isDnDeleted)
+          else
           {
-            ConnectionWrapper conn = controller.findConnectionForDisplayedEntry(node);
-            useAdminCtx = controller.isConfigurationNode(node);
-            if (node.hasSubOrdinates())
-            {
-              deleteSubtreeWithControl(conn, dn, path, toNotify);
-            }
-            else
-            {
-              deleteSubtreeRecursively(conn, dn, path, toNotify);
-            }
-            alreadyDeleted.add(dn);
+            deleteSubtreeRecursively(conn, dn, path, toNotify);
           }
-        }
-        catch (DirectoryException de)
-        {
-          throw new RuntimeException("Unexpected error parsing dn: "+
-              node.getDN(), de);
+          alreadyDeleted.add(dn);
         }
       }
       if (!toNotify.isEmpty())
@@ -247,6 +230,18 @@
     }
   }
 
+  private boolean isAlreadyDeleted(ArrayList<DN> dns, DN dnToFind)
+  {
+    for (DN dn : dns)
+    {
+      if (dnToFind.isSubordinateOrEqualTo(dn))
+      {
+        return true;
+      }
+    }
+    return false;
+  }
+
   /**
    * Notifies that some entries have been deleted.  This will basically update
    * the browser controller so that the tree reflects the changes that have

--
Gitblit v1.10.0