mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

ludovicp
31.16.2010 85811b64468e9b7a876bd352a0299b904a53a3fb
opends/src/guitools/org/opends/guitools/controlpanel/task/DeleteSchemaElementsTask.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2008-2009 Sun Microsystems, Inc.
 *      Copyright 2008-2010 Sun Microsystems, Inc.
 */
package org.opends.guitools.controlpanel.task;
@@ -648,21 +648,27 @@
      }
    }
    boolean hasSuperior = false;
    ObjectClass newSuperior = ocToDelete.getSuperiorClass();
    for (ObjectClass oc : providedOcsToDelete)
    Set<ObjectClass> newSuperiors = new LinkedHashSet<ObjectClass>();
    for(ObjectClass sup : ocToDelete.getSuperiorClasses())
    {
      if (ocToDelete.getSuperiorClass().equals(oc))
      boolean isFound = false;
      for(ObjectClass oc: providedOcsToDelete)
      {
        hasSuperior = true;
        newSuperior = oc.getSuperiorClass();
        while (newSuperior != null &&
            providedOcsToDelete.contains(newSuperior))
        if(sup.equals(oc))
        {
          newSuperior = newSuperior.getSuperiorClass();
          hasSuperior = true;
          isFound = true;
          newSuperiors.add(getNewSuperior(oc));
          break;
        }
        break;
      }
      if(!isFound)
      {
        //Use the same super if not found in the list.
        newSuperiors.add(sup);
      }
    }
    if (containsAttribute || hasSuperior)
    {
      ArrayList<String> allNames = new ArrayList<String>();
@@ -693,7 +699,7 @@
          allNames,
          ocToDelete.getOID(),
          ocToDelete.getDescription(),
          newSuperior,
          newSuperiors,
          required,
          optional,
          ocToDelete.getObjectClassType(),
@@ -709,6 +715,25 @@
  }
  private ObjectClass getNewSuperior(ObjectClass currentSup)
  {
    if(currentSup.getSuperiorClasses() == null ||
            currentSup.getSuperiorClasses().isEmpty())
     {
       return currentSup;
     }
     if(providedOcsToDelete.contains(currentSup))
     {
      for(ObjectClass o : currentSup.getSuperiorClasses())
      {
       return getNewSuperior(o);
      }
     }
     return null;
  }
  /**
   * Returns an ordered set of the attributes that must be deleted.
   * @param attrsToDelete the attributes to be deleted.
@@ -828,7 +853,7 @@
    LinkedHashSet<ObjectClass> children = new LinkedHashSet<ObjectClass>();
    for (ObjectClass oc : schema.getObjectClasses().values())
    {
      if (objectClass.equals(oc.getSuperiorClass()))
      if (oc.getSuperiorClasses().contains(objectClass))
      {
        children.addAll(getOrderedChildrenToDelete(oc, schema));
        children.add(oc);