From efa949b25f472d7e4c39733678d8f0e5229f8201 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 26 Dec 2013 15:31:32 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1235 : Migrate configuration framework

---
 opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/DurationUnit.java |  583 +++++++++++++++++++++++++++------------------------------
 1 files changed, 274 insertions(+), 309 deletions(-)

diff --git a/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/DurationUnit.java b/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/DurationUnit.java
index c9a0324..b7ee1d0 100644
--- a/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/DurationUnit.java
+++ b/opendj-sdk/opendj-admin/src/main/java/org/opends/server/admin/DurationUnit.java
@@ -25,360 +25,325 @@
  */
 package org.opends.server.admin;
 
-
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-
-
 /**
  * This enumeration defines various duration units.
  */
 public enum DurationUnit {
 
-  /**
-   * A day unit.
-   */
-  DAYS((long) 24 * 60 * 60 * 1000, "d", "days"),
+    /**
+     * A day unit.
+     */
+    DAYS((long) 24 * 60 * 60 * 1000, "d", "days"),
 
-  /**
-   * An hour unit.
-   */
-  HOURS((long) 60 * 60 * 1000, "h", "hours"),
+    /**
+     * An hour unit.
+     */
+    HOURS((long) 60 * 60 * 1000, "h", "hours"),
 
-  /**
-   * A millisecond unit.
-   */
-  MILLI_SECONDS(1L, "ms", "milliseconds"),
+    /**
+     * A millisecond unit.
+     */
+    MILLI_SECONDS(1L, "ms", "milliseconds"),
 
-  /**
-   * A minute unit.
-   */
-  MINUTES((long) 60 * 1000, "m", "minutes"),
+    /**
+     * A minute unit.
+     */
+    MINUTES((long) 60 * 1000, "m", "minutes"),
 
-  /**
-   * A second unit.
-   */
-  SECONDS(1000L, "s", "seconds"),
+    /**
+     * A second unit.
+     */
+    SECONDS(1000L, "s", "seconds"),
 
-  /**
-   * A week unit.
-   */
-  WEEKS((long) 7 * 24 * 60 * 60 * 1000, "w", "weeks");
+    /**
+     * A week unit.
+     */
+    WEEKS((long) 7 * 24 * 60 * 60 * 1000, "w", "weeks");
 
-  // A lookup table for resolving a unit from its name.
-  private static final Map<String, DurationUnit> nameToUnit;
-  static {
-    nameToUnit = new HashMap<String, DurationUnit>();
+    // A lookup table for resolving a unit from its name.
+    private static final Map<String, DurationUnit> NAME_TO_UNIT;
+    static {
+        NAME_TO_UNIT = new HashMap<String, DurationUnit>();
 
-    for (DurationUnit unit : DurationUnit.values()) {
-      nameToUnit.put(unit.shortName, unit);
-      nameToUnit.put(unit.longName, unit);
-    }
-  }
-
-
-
-  /**
-   * Get the unit corresponding to the provided unit name.
-   *
-   * @param s
-   *          The name of the unit. Can be the abbreviated or long
-   *          name and can contain white space and mixed case
-   *          characters.
-   * @return Returns the unit corresponding to the provided unit name.
-   * @throws IllegalArgumentException
-   *           If the provided name did not correspond to a known
-   *           duration unit.
-   */
-  public static DurationUnit getUnit(String s) throws IllegalArgumentException {
-    DurationUnit unit = nameToUnit.get(s.trim().toLowerCase());
-    if (unit == null) {
-      throw new IllegalArgumentException("Illegal duration unit \"" + s + "\"");
-    }
-    return unit;
-  }
-
-
-
-  /**
-   * Parse the provided duration string and return its equivalent
-   * duration in milliseconds. The duration string must specify the
-   * unit e.g. "10s". This method will parse duration string
-   * representations produced from the {@link #toString(long)} method.
-   * Therefore, a duration can comprise of multiple duration
-   * specifiers, for example <code>1d15m25s</code>.
-   *
-   * @param s
-   *          The duration string to be parsed.
-   * @return Returns the parsed duration in milliseconds.
-   * @throws NumberFormatException
-   *           If the provided duration string could not be parsed.
-   * @see #toString(long)
-   */
-  public static long parseValue(String s) throws NumberFormatException {
-    return parseValue(s, null);
-  }
-
-
-
-  /**
-   * Parse the provided duration string and return its equivalent
-   * duration in milliseconds. This method will parse duration string
-   * representations produced from the {@link #toString(long)} method.
-   * Therefore, a duration can comprise of multiple duration
-   * specifiers, for example <code>1d15m25s</code>.
-   *
-   * @param s
-   *          The duration string to be parsed.
-   * @param defaultUnit
-   *          The default unit to use if there is no unit specified in
-   *          the duration string, or <code>null</code> if the
-   *          string must always contain a unit.
-   * @return Returns the parsed duration in milliseconds.
-   * @throws NumberFormatException
-   *           If the provided duration string could not be parsed.
-   * @see #toString(long)
-   */
-  public static long parseValue(String s, DurationUnit defaultUnit)
-      throws NumberFormatException {
-    String ns = s.trim();
-    if (ns.length() == 0) {
-      throw new NumberFormatException("Empty duration value \"" + s + "\"");
+        for (DurationUnit unit : DurationUnit.values()) {
+            NAME_TO_UNIT.put(unit.shortName, unit);
+            NAME_TO_UNIT.put(unit.longName, unit);
+        }
     }
 
-    Pattern p1 = Pattern.compile("^\\s*((\\d+)\\s*w)?" + "\\s*((\\d+)\\s*d)?"
-        + "\\s*((\\d+)\\s*h)?" + "\\s*((\\d+)\\s*m)?" + "\\s*((\\d+)\\s*s)?"
-        + "\\s*((\\d+)\\s*ms)?\\s*$", Pattern.CASE_INSENSITIVE);
-    Matcher m1 = p1.matcher(ns);
-    if (m1.matches()) {
-      // Value must be of the form produced by toString(long).
-      String weeks = m1.group(2);
-      String days = m1.group(4);
-      String hours = m1.group(6);
-      String minutes = m1.group(8);
-      String seconds = m1.group(10);
-      String ms = m1.group(12);
+    /**
+     * Get the unit corresponding to the provided unit name.
+     *
+     * @param s
+     *            The name of the unit. Can be the abbreviated or long name and
+     *            can contain white space and mixed case characters.
+     * @return Returns the unit corresponding to the provided unit name.
+     * @throws IllegalArgumentException
+     *             If the provided name did not correspond to a known duration
+     *             unit.
+     */
+    public static DurationUnit getUnit(String s) {
+        DurationUnit unit = NAME_TO_UNIT.get(s.trim().toLowerCase());
+        if (unit == null) {
+            throw new IllegalArgumentException("Illegal duration unit \"" + s + "\"");
+        }
+        return unit;
+    }
 
-      long duration = 0;
+    /**
+     * Parse the provided duration string and return its equivalent duration in
+     * milliseconds. The duration string must specify the unit e.g. "10s". This
+     * method will parse duration string representations produced from the
+     * {@link #toString(long)} method. Therefore, a duration can comprise of
+     * multiple duration specifiers, for example <code>1d15m25s</code>.
+     *
+     * @param s
+     *            The duration string to be parsed.
+     * @return Returns the parsed duration in milliseconds.
+     * @throws NumberFormatException
+     *             If the provided duration string could not be parsed.
+     * @see #toString(long)
+     */
+    public static long parseValue(String s) {
+        return parseValue(s, null);
+    }
 
-      try {
-        if (weeks != null) {
-          duration += Long.valueOf(weeks) * WEEKS.getDuration();
+    /**
+     * Parse the provided duration string and return its equivalent duration in
+     * milliseconds. This method will parse duration string representations
+     * produced from the {@link #toString(long)} method. Therefore, a duration
+     * can comprise of multiple duration specifiers, for example
+     * <code>1d15m25s</code>.
+     *
+     * @param s
+     *            The duration string to be parsed.
+     * @param defaultUnit
+     *            The default unit to use if there is no unit specified in the
+     *            duration string, or <code>null</code> if the string must
+     *            always contain a unit.
+     * @return Returns the parsed duration in milliseconds.
+     * @throws NumberFormatException
+     *             If the provided duration string could not be parsed.
+     * @see #toString(long)
+     */
+    public static long parseValue(String s, DurationUnit defaultUnit) {
+        String ns = s.trim();
+        if (ns.length() == 0) {
+            throw new NumberFormatException("Empty duration value \"" + s + "\"");
         }
 
-        if (days != null) {
-          duration += Long.valueOf(days) * DAYS.getDuration();
-        }
+        Pattern p1 =
+            Pattern.compile("^\\s*((\\d+)\\s*w)?" + "\\s*((\\d+)\\s*d)?" + "\\s*((\\d+)\\s*h)?"
+                + "\\s*((\\d+)\\s*m)?" + "\\s*((\\d+)\\s*s)?" + "\\s*((\\d+)\\s*ms)?\\s*$", Pattern.CASE_INSENSITIVE);
+        Matcher m1 = p1.matcher(ns);
+        if (m1.matches()) {
+            // Value must be of the form produced by toString(long).
+            String weeks = m1.group(2);
+            String days = m1.group(4);
+            String hours = m1.group(6);
+            String minutes = m1.group(8);
+            String seconds = m1.group(10);
+            String ms = m1.group(12);
 
-        if (hours != null) {
-          duration += Long.valueOf(hours) * HOURS.getDuration();
-        }
+            long duration = 0;
 
-        if (minutes != null) {
-          duration += Long.valueOf(minutes) * MINUTES.getDuration();
-        }
+            try {
+                if (weeks != null) {
+                    duration += Long.valueOf(weeks) * WEEKS.getDuration();
+                }
 
-        if (seconds != null) {
-          duration += Long.valueOf(seconds) * SECONDS.getDuration();
-        }
+                if (days != null) {
+                    duration += Long.valueOf(days) * DAYS.getDuration();
+                }
 
-        if (ms != null) {
-          duration += Long.valueOf(ms) * MILLI_SECONDS.getDuration();
-        }
-      } catch (NumberFormatException e) {
-        throw new NumberFormatException("Invalid duration value \"" + s + "\"");
-      }
+                if (hours != null) {
+                    duration += Long.valueOf(hours) * HOURS.getDuration();
+                }
 
-      return duration;
-    } else {
-      // Value must be a floating point number followed by a unit.
-      Pattern p2 = Pattern.compile("^\\s*(\\d+(\\.\\d+)?)\\s*(\\w+)?\\s*$");
-      Matcher m2 = p2.matcher(ns);
+                if (minutes != null) {
+                    duration += Long.valueOf(minutes) * MINUTES.getDuration();
+                }
 
-      if (!m2.matches()) {
-        throw new NumberFormatException("Invalid duration value \"" + s + "\"");
-      }
+                if (seconds != null) {
+                    duration += Long.valueOf(seconds) * SECONDS.getDuration();
+                }
 
-      // Group 1 is the float.
-      double d;
-      try {
-        d = Double.valueOf(m2.group(1));
-      } catch (NumberFormatException e) {
-        throw new NumberFormatException("Invalid duration value \"" + s + "\"");
-      }
+                if (ms != null) {
+                    duration += Long.valueOf(ms) * MILLI_SECONDS.getDuration();
+                }
+            } catch (NumberFormatException e) {
+                throw new NumberFormatException("Invalid duration value \"" + s + "\"");
+            }
 
-      // Group 3 is the unit.
-      String unitString = m2.group(3);
-      DurationUnit unit;
-      if (unitString == null) {
-        if (defaultUnit == null) {
-          throw new NumberFormatException("Invalid duration value \"" + s
-              + "\"");
+            return duration;
         } else {
-          unit = defaultUnit;
+            // Value must be a floating point number followed by a unit.
+            Pattern p2 = Pattern.compile("^\\s*(\\d+(\\.\\d+)?)\\s*(\\w+)?\\s*$");
+            Matcher m2 = p2.matcher(ns);
+
+            if (!m2.matches()) {
+                throw new NumberFormatException("Invalid duration value \"" + s + "\"");
+            }
+
+            // Group 1 is the float.
+            double d;
+            try {
+                d = Double.valueOf(m2.group(1));
+            } catch (NumberFormatException e) {
+                throw new NumberFormatException("Invalid duration value \"" + s + "\"");
+            }
+
+            // Group 3 is the unit.
+            String unitString = m2.group(3);
+            DurationUnit unit;
+            if (unitString == null) {
+                if (defaultUnit == null) {
+                    throw new NumberFormatException("Invalid duration value \"" + s + "\"");
+                } else {
+                    unit = defaultUnit;
+                }
+            } else {
+                try {
+                    unit = getUnit(unitString);
+                } catch (IllegalArgumentException e) {
+                    throw new NumberFormatException("Invalid duration value \"" + s + "\"");
+                }
+            }
+
+            return unit.toMilliSeconds(d);
         }
-      } else {
-        try {
-          unit = getUnit(unitString);
-        } catch (IllegalArgumentException e) {
-          throw new NumberFormatException("Invalid duration value \"" + s
-              + "\"");
+    }
+
+    /**
+     * Returns a string representation of the provided duration. The string
+     * representation can be parsed using the {@link #parseValue(String)}
+     * method. The string representation is comprised of one or more of the
+     * number of weeks, days, hours, minutes, seconds, and milliseconds. Here
+     * are some examples:
+     *
+     * <pre>
+     * toString(0)       // 0 ms
+     * toString(999)     // 999 ms
+     * toString(1000)    // 1 s
+     * toString(1500)    // 1 s 500 ms
+     * toString(3650000) // 1 h 50 s
+     * toString(3700000) // 1 h 1 m 40 s
+     * </pre>
+     *
+     * @param duration
+     *            The duration in milliseconds.
+     * @return Returns a string representation of the provided duration.
+     * @throws IllegalArgumentException
+     *             If the provided duration is negative.
+     * @see #parseValue(String)
+     * @see #parseValue(String, DurationUnit)
+     */
+    public static String toString(long duration) {
+        if (duration < 0) {
+            throw new IllegalArgumentException("Negative duration " + duration);
         }
-      }
 
-      return unit.toMilliSeconds(d);
-    }
-  }
-
-
-
-  /**
-   * Returns a string representation of the provided duration. The
-   * string representation can be parsed using the
-   * {@link #parseValue(String)} method. The string representation is
-   * comprised of one or more of the number of weeks, days, hours,
-   * minutes, seconds, and milliseconds. Here are some examples:
-   *
-   * <pre>
-   * toString(0)       // 0 ms
-   * toString(999)     // 999 ms
-   * toString(1000)    // 1 s
-   * toString(1500)    // 1 s 500 ms
-   * toString(3650000) // 1 h 50 s
-   * toString(3700000) // 1 h 1 m 40 s
-   * </pre>
-   *
-   * @param duration
-   *          The duration in milliseconds.
-   * @return Returns a string representation of the provided duration.
-   * @throws IllegalArgumentException
-   *           If the provided duration is negative.
-   * @see #parseValue(String)
-   * @see #parseValue(String, DurationUnit)
-   */
-  public static String toString(long duration) throws IllegalArgumentException {
-    if (duration < 0) {
-      throw new IllegalArgumentException("Negative duration " + duration);
-    }
-
-    if (duration == 0) {
-      return "0 ms";
-    }
-
-    DurationUnit[] units = new DurationUnit[] { WEEKS, DAYS, HOURS, MINUTES,
-        SECONDS, MILLI_SECONDS };
-    long remainder = duration;
-    StringBuilder builder = new StringBuilder();
-    boolean isFirst = true;
-    for (DurationUnit unit : units) {
-      long count = remainder / unit.getDuration();
-      if (count > 0) {
-        if (!isFirst) {
-          builder.append(' ');
+        if (duration == 0) {
+            return "0 ms";
         }
-        builder.append(count);
-        builder.append(' ');
-        builder.append(unit.getShortName());
-        remainder = remainder - (count * unit.getDuration());
-        isFirst = false;
-      }
+
+        DurationUnit[] units = new DurationUnit[] { WEEKS, DAYS, HOURS, MINUTES, SECONDS, MILLI_SECONDS };
+        long remainder = duration;
+        StringBuilder builder = new StringBuilder();
+        boolean isFirst = true;
+        for (DurationUnit unit : units) {
+            long count = remainder / unit.getDuration();
+            if (count > 0) {
+                if (!isFirst) {
+                    builder.append(' ');
+                }
+                builder.append(count);
+                builder.append(' ');
+                builder.append(unit.getShortName());
+                remainder = remainder - (count * unit.getDuration());
+                isFirst = false;
+            }
+        }
+        return builder.toString();
     }
-    return builder.toString();
-  }
 
-  // The long name of the unit.
-  private final String longName;
+    // The long name of the unit.
+    private final String longName;
 
-  // The abbreviation of the unit.
-  private final String shortName;
+    // The abbreviation of the unit.
+    private final String shortName;
 
-  // The size of the unit in milliseconds.
-  private final long sz;
+    // The size of the unit in milliseconds.
+    private final long sz;
 
+    // Private constructor.
+    private DurationUnit(long sz, String shortName, String longName) {
+        this.sz = sz;
+        this.shortName = shortName;
+        this.longName = longName;
+    }
 
+    /**
+     * Converts the specified duration in milliseconds to this unit.
+     *
+     * @param duration
+     *            The duration in milliseconds.
+     * @return Returns milliseconds in this unit.
+     */
+    public double fromMilliSeconds(long duration) {
+        return ((double) duration / sz);
+    }
 
-  // Private constructor.
-  private DurationUnit(long sz, String shortName, String longName) {
-    this.sz = sz;
-    this.shortName = shortName;
-    this.longName = longName;
-  }
+    /**
+     * Get the number of milliseconds that this unit represents.
+     *
+     * @return Returns the number of milliseconds that this unit represents.
+     */
+    public long getDuration() {
+        return sz;
+    }
 
+    /**
+     * Get the long name of this unit.
+     *
+     * @return Returns the long name of this unit.
+     */
+    public String getLongName() {
+        return longName;
+    }
 
+    /**
+     * Get the abbreviated name of this unit.
+     *
+     * @return Returns the abbreviated name of this unit.
+     */
+    public String getShortName() {
+        return shortName;
+    }
 
-  /**
-   * Converts the specified duration in milliseconds to this unit.
-   *
-   * @param duration
-   *          The duration in milliseconds.
-   * @return Returns milliseconds in this unit.
-   */
-  public double fromMilliSeconds(long duration) {
-    return ((double) duration / sz);
-  }
+    /**
+     * Converts the specified duration in this unit to milliseconds.
+     *
+     * @param duration
+     *            The duration as a quantity of this unit.
+     * @return Returns the number of milliseconds that the duration represents.
+     */
+    public long toMilliSeconds(double duration) {
+        return (long) (sz * duration);
+    }
 
-
-
-  /**
-   * Get the number of milliseconds that this unit represents.
-   *
-   * @return Returns the number of milliseconds that this unit
-   *         represents.
-   */
-  public long getDuration() {
-    return sz;
-  }
-
-
-
-  /**
-   * Get the long name of this unit.
-   *
-   * @return Returns the long name of this unit.
-   */
-  public String getLongName() {
-    return longName;
-  }
-
-
-
-  /**
-   * Get the abbreviated name of this unit.
-   *
-   * @return Returns the abbreviated name of this unit.
-   */
-  public String getShortName() {
-    return shortName;
-  }
-
-
-
-  /**
-   * Converts the specified duration in this unit to milliseconds.
-   *
-   * @param duration
-   *          The duration as a quantity of this unit.
-   * @return Returns the number of milliseconds that the duration
-   *         represents.
-   */
-  public long toMilliSeconds(double duration) {
-    return (long) (sz * duration);
-  }
-
-
-
-  /**
-   * {@inheritDoc}
-   * <p>
-   * This implementation returns the abbreviated name of this duration
-   * unit.
-   */
-  @Override
-  public String toString() {
-    return shortName;
-  }
+    /**
+     * {@inheritDoc}
+     * <p>
+     * This implementation returns the abbreviated name of this duration unit.
+     */
+    @Override
+    public String toString() {
+        return shortName;
+    }
 }

--
Gitblit v1.10.0