From d318e2f7f6f8ba84a77e864ea9e0aeff8f711ccd Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 18 Jun 2007 12:03:46 +0000
Subject: [PATCH] Display size upper limits whose value is some power of two minus 1 using a more compact notation.

---
 opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java b/opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java
index 48b654c..d87f221 100644
--- a/opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java
+++ b/opends/src/server/org/opends/server/admin/PropertyDefinitionUsageBuilder.java
@@ -254,10 +254,26 @@
 
       if (isDetailed) {
         if (d.getUpperLimit() != null) {
-          builder.append(" <= ");
-          SizeUnit unit = SizeUnit.getBestFitUnitExact(d.getUpperLimit());
-          builder
-              .append(numberFormat.format(unit.fromBytes(d.getUpperLimit())));
+          long upperLimit = d.getUpperLimit();
+          SizeUnit unit = SizeUnit.getBestFitUnitExact(upperLimit);
+
+          // Quite often an upper limit is some power of 2 minus 1. In those
+          // cases lets use a "less than" relation rather than a "less than
+          // or equal to" relation. This will result in a much more readable
+          // quantity.
+          if (unit == SizeUnit.BYTES && upperLimit < Long.MAX_VALUE) {
+            unit = SizeUnit.getBestFitUnitExact(upperLimit + 1);
+            if (unit != SizeUnit.BYTES) {
+              upperLimit += 1;
+              builder.append(" < ");
+            } else {
+              builder.append(" <= ");
+            }
+          } else {
+            builder.append(" <= ");
+          }
+
+          builder.append(numberFormat.format(unit.fromBytes(upperLimit)));
           builder.append(unit.getShortName());
         }
 

--
Gitblit v1.10.0