From 7a573aef4c0df5e52534320f8b911e54349f7921 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 04 Aug 2016 15:02:41 +0000
Subject: [PATCH] Make CustomSearchResult closer to SDK's Entry

---
 opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java |   71 ++++++++++++++++-------------------
 1 files changed, 32 insertions(+), 39 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
index 43a1609..874f987 100644
--- a/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
+++ b/opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/TableViewEntryPanel.java
@@ -16,6 +16,7 @@
  */
 package org.opends.guitools.controlpanel.ui;
 
+import static org.forgerock.opendj.ldap.schema.CoreSchema.*;
 import static org.opends.messages.AdminToolMessages.*;
 
 import java.awt.Component;
@@ -46,6 +47,7 @@
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.opendj.ldap.AVA;
+import org.forgerock.opendj.ldap.Attribute;
 import org.forgerock.opendj.ldap.AttributeDescription;
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.DN;
@@ -421,7 +423,7 @@
     {
       int result;
       int[] possibleResults = {
-          desc1.attrName.compareTo(desc2.attrName),
+          desc1.attrDesc.compareTo(desc2.attrDesc),
           compareValues(desc1.value, desc2.value)};
       result = possibleResults[sortColumn];
       if (result == 0)
@@ -512,7 +514,7 @@
     public Object getValueAt(int row, int col)
     {
       AttributeValuePair attrValuePair = dataArray.get(row);
-      return col == 0 ? attrValuePair.attrName : attrValuePair.value;
+      return col == 0 ? attrValuePair.attrDesc.toString() : attrValuePair.value;
     }
 
     @Override
@@ -565,7 +567,7 @@
     public boolean isCellEditable(int row, int col) {
       return col != 0
           && !isReadOnly
-          && !schemaReadOnlyAttributesLowerCase.contains(dataArray.get(row).attrName.toLowerCase());
+          && !schemaReadOnlyAttributesLowerCase.contains(dataArray.get(row).attrDesc.toString().toLowerCase());
     }
 
     @Override
@@ -590,26 +592,26 @@
       requiredAttrs.clear();
       List<String> addedAttrs = new ArrayList<>();
       Schema schema = getInfo().getServerDescriptor().getSchema();
-      List<ByteString> ocs = null;
-      for (String attrName : searchResult.getAttributeNames())
+      Attribute ocs = null;
+      for (Attribute attr : searchResult.getAllAttributes())
       {
-        if (ServerConstants.OBJECTCLASS_ATTRIBUTE_TYPE_NAME.equalsIgnoreCase(attrName))
+        AttributeDescription attrDesc = attr.getAttributeDescription();
+        if (attrDesc.equals(getObjectClassAttributeType()))
         {
           if (schema != null)
           {
-            ocs = searchResult.getAttributeValues(attrName);
+            ocs = attr;
             ObjectClassValue ocValue = getObjectClassDescriptor(ocs, schema);
-            allSortedValues.add(new AttributeValuePair(attrName, ocValue));
+            allSortedValues.add(new AttributeValuePair(attrDesc, ocValue));
           }
         }
         else
         {
-          for (Object v : searchResult.getAttributeValues(attrName))
+          for (Object v : attr)
           {
-            allSortedValues.add(new AttributeValuePair(attrName, v));
+            allSortedValues.add(new AttributeValuePair(attrDesc, v));
           }
         }
-        AttributeDescription attrDesc = AttributeDescription.valueOf(attrName);
         addedAttrs.add(attrDesc.getNameOrOID().toLowerCase());
       }
       if (ocs != null && schema != null)
@@ -619,22 +621,20 @@
           ObjectClass objectClass = schema.getObjectClass(oc.toString());
           if (!objectClass.isPlaceHolder())
           {
-            for (AttributeType attr : objectClass.getRequiredAttributes())
+            for (AttributeType attrType : objectClass.getRequiredAttributes())
             {
-              String attrName = attr.getNameOrOID();
-              String lowerCase = attrName.toLowerCase();
+              String lowerCase = attrType.getNameOrOID().toLowerCase();
               if (!addedAttrs.contains(lowerCase))
               {
-                allSortedValues.add(newAttributeValuePair(attrName));
+                allSortedValues.add(newAttributeValuePair(AttributeDescription.create(attrType)));
               }
               requiredAttrs.add(lowerCase);
             }
-            for (AttributeType attr : objectClass.getOptionalAttributes())
+            for (AttributeType attrType : objectClass.getOptionalAttributes())
             {
-              String attrName = attr.getNameOrOID();
-              if (!addedAttrs.contains(attrName.toLowerCase()))
+              if (!addedAttrs.contains(attrType.getNameOrOID().toLowerCase()))
               {
-                allSortedValues.add(newAttributeValuePair(attrName));
+                allSortedValues.add(newAttributeValuePair(AttributeDescription.create(attrType)));
               }
             }
           }
@@ -652,15 +652,16 @@
       renderer.setRequiredAttrs(requiredAttrs);
     }
 
-    private AttributeValuePair newAttributeValuePair(String attrName)
+    private AttributeValuePair newAttributeValuePair(AttributeDescription attrDesc)
     {
+      String attrName = attrDesc.toString();
       if (isBinary(attrName) || isPassword(attrName))
       {
-        return new AttributeValuePair(attrName, new byte[] {});
+        return new AttributeValuePair(attrDesc, new byte[] {});
       }
       else
       {
-        return new AttributeValuePair(attrName, "");
+        return new AttributeValuePair(attrDesc, "");
       }
     }
 
@@ -697,7 +698,7 @@
       List<Object> values = new ArrayList<>();
       for (AttributeValuePair valuePair : dataArray)
       {
-        if (valuePair.attrName.equalsIgnoreCase(attrName)
+        if (valuePair.attrDesc.equals(AttributeDescription.valueOf(attrName))
             && hasValue(valuePair))
         {
           if (valuePair.value instanceof Collection<?>)
@@ -762,12 +763,11 @@
         }
         for (AttributeValuePair currValue : allSortedValues)
         {
-          AttributeDescription attrDesc = AttributeDescription.valueOf(currValue.attrName);
-          String attrNoOptions = attrDesc.getNameOrOID().toLowerCase();
+          String attrNoOptions = currValue.attrDesc.getNameOrOID().toLowerCase();
           if (attributes.contains(attrNoOptions)
-              && !schemaReadOnlyAttributesLowerCase.contains(currValue.attrName.toLowerCase()))
+              && !schemaReadOnlyAttributesLowerCase.contains(currValue.attrDesc.toString().toLowerCase()))
           {
-            setValues(newResult, currValue.attrName);
+            setValues(newResult, currValue.attrDesc.toString());
           }
         }
       }
@@ -779,8 +779,7 @@
 
     private boolean isRequired(AttributeValuePair value)
     {
-      AttributeDescription attrDesc = AttributeDescription.valueOf(value.attrName.toLowerCase());
-      return requiredAttrs.contains(attrDesc.getNameOrOID());
+      return requiredAttrs.contains(value.attrDesc.getNameOrOID());
     }
 
     private boolean hasValue(AttributeValuePair value)
@@ -808,18 +807,12 @@
    */
   private static class AttributeValuePair
   {
-    /** The attribute name. */
-    private final String attrName;
-    /** The value. */
+    private final AttributeDescription attrDesc;
     private Object value;
-    /**
-     * Constructor.
-     * @param attrName the attribute name.
-     * @param value the value.
-     */
-    private AttributeValuePair(String attrName, Object value)
+
+    private AttributeValuePair(AttributeDescription attrDesc, Object value)
     {
-      this.attrName = attrName;
+      this.attrDesc = attrDesc;
       this.value = value;
     }
   }

--
Gitblit v1.10.0