From b360f47445b24412bb8d40ab513e1453bbac713f Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Sun, 08 Feb 2009 17:04:05 +0000
Subject: [PATCH] Add some UI to display global monitoring information (java memory usage, system startup time, database environment information, entry cache information etc.).

---
 opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 155 insertions(+), 0 deletions(-)

diff --git a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
index 81fdc94..94b7a2a 100644
--- a/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
+++ b/opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -47,6 +47,8 @@
 import java.text.StringCharacterIterator;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
+import java.util.Set;
 
 import javax.naming.CompositeName;
 import javax.naming.InvalidNameException;
@@ -89,6 +91,8 @@
 import org.opends.guitools.controlpanel.browser.IconPool;
 import org.opends.guitools.controlpanel.datamodel.ConfigReadException;
 import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo;
+import org.opends.guitools.controlpanel.datamodel.CustomSearchResult;
+import org.opends.guitools.controlpanel.datamodel.MonitoringAttributes;
 import org.opends.guitools.controlpanel.datamodel.SortableTableModel;
 import org.opends.guitools.controlpanel.datamodel.VLVIndexDescriptor;
 import org.opends.guitools.controlpanel.event.TextComponentFocusListener;
@@ -130,6 +134,12 @@
 
   private static ImageIcon requiredIcon;
 
+
+  private static Message NO_VALUE_SET =
+    INFO_CTRL_PANEL_NO_MONITORING_VALUE.get();
+  private static Message NOT_IMPLEMENTED =
+    INFO_CTRL_PANEL_NOT_IMPLEMENTED.get();
+
   /**
    * Returns <CODE>true</CODE> if we are running Mac OS and <CODE>false</CODE>
    * otherwise.
@@ -2182,4 +2192,149 @@
       }
     }
   }
+
+
+
+  /**
+   * Returns the first value for a given attribute in the provided entry.
+   * @param sr the entry.  It may be <CODE>null</CODE>.
+   * @param attrName the attribute name.
+   * @return the first value for a given attribute in the provided entry.
+   */
+  public static Object getFirstMonitoringValue(CustomSearchResult sr,
+      String attrName)
+  {
+    Object o = null;
+    if (sr != null)
+    {
+      Set<Object> values = sr.getAttributeValues(attrName);
+      if ((values != null) && (values.size() > 0))
+      {
+        o = values.iterator().next();
+        try
+        {
+          Long l = Long.parseLong(o.toString());
+          o = l;
+        }
+        catch (Throwable t1)
+        {
+          try
+          {
+            Double d = Double.parseDouble(o.toString());
+            o = d;
+          }
+          catch (Throwable t2)
+          {
+          }
+        }
+      }
+    }
+    return o;
+  }
+
+  /**
+   * Returns the monitoring value in a String form to be displayed to the user.
+   * @param attr the attribute to analyze.
+   * @param monitoringEntry the monitoring entry.
+   * @return the monitoring value in a String form to be displayed to the user.
+   */
+  public static String getMonitoringValue(MonitoringAttributes attr,
+      CustomSearchResult monitoringEntry)
+  {
+    String returnValue;
+    Object monitoringValue =
+      Utilities.getFirstMonitoringValue(monitoringEntry,
+        attr.getAttributeName());
+    if (monitoringValue == null)
+    {
+      returnValue = NO_VALUE_SET.toString();
+    }
+    else if (isNotImplemented(attr, monitoringEntry))
+    {
+      returnValue = NOT_IMPLEMENTED.toString();
+    }
+    else if (attr.isNumericDate())
+    {
+      if("0".equals(monitoringValue.toString()))
+      {
+        returnValue = NO_VALUE_SET.toString();
+      }
+      else
+      {
+        Long l = Long.parseLong(monitoringValue.toString());
+        Date date = new Date(l);
+        returnValue = ConfigFromDirContext.formatter.format(date);
+      }
+    }
+    else if (attr.isTime())
+    {
+      if("-1".equals(monitoringValue.toString()))
+      {
+        returnValue = NO_VALUE_SET.toString();
+      }
+      else
+      {
+        returnValue = monitoringValue.toString();
+      }
+    }
+    else if (attr.isGMTDate())
+    {
+      try
+      {
+        Date date = ConfigFromDirContext.utcParser.parse(
+            monitoringValue.toString());
+        returnValue = ConfigFromDirContext.formatter.format(date);
+      }
+      catch (Throwable t)
+      {
+        returnValue = monitoringValue.toString();
+      }
+    }
+    else if (attr.isValueInBytes())
+    {
+      Long l = Long.parseLong(monitoringValue.toString());
+      long mb = l / (1024 * 1024);
+      long kbs = (l - (mb * 1024 * 1024)) / 1024;
+      returnValue = INFO_CTRL_PANEL_MEMORY_VALUE.get(mb , kbs).toString();
+    }
+    else
+    {
+      returnValue = monitoringValue.toString();
+    }
+    return returnValue;
+  }
+
+  /**
+   * Returns <CODE>true</CODE> if the provided monitoring value represents the
+   * non implemented label and <CODE>false</CODE> otherwise.
+   * @param attr the attribute to analyze.
+   * @param monitoringEntry the monitoring entry.
+   * @return <CODE>true</CODE> if the provided monitoring value represents the
+   * non implemented label and <CODE>false</CODE> otherwise.
+   */
+  public static boolean isNotImplemented(MonitoringAttributes attr,
+      CustomSearchResult monitoringEntry)
+  {
+    boolean returnValue;
+    Object monitoringValue = Utilities.getFirstMonitoringValue(
+        monitoringEntry,
+        attr.getAttributeName());
+    if (attr.isNumeric() && (monitoringValue != null))
+    {
+      try
+      {
+        Long.parseLong(String.valueOf(monitoringValue));
+        returnValue = false;
+      }
+      catch (Throwable t)
+      {
+        returnValue = true;
+      }
+    }
+    else
+    {
+      returnValue = false;
+    }
+    return returnValue;
+  }
 }

--
Gitblit v1.10.0