James Moger
2011-12-28 abeaaf77673e9e764fe68e398eeda1e3c3c22ea5
src/com/gitblit/utils/ByteFormat.java
@@ -21,8 +21,10 @@
import java.text.ParsePosition;
/**
 * A formatter for formatting byte sizes. For example, formatting 12345 byes
 * results in "12.1 K" and 1234567 results in "1.18 MB".
 * ByteFormat is a formatter which takes numbers and returns filesizes in bytes,
 * kilobytes, megabytes, or gigabytes.
 *
 * @author James Moger
 * 
 */
public class ByteFormat extends Format {
@@ -32,60 +34,31 @@
   public ByteFormat() {
   }
   // Implemented from the Format class
   /**
    * Formats a long which represent a number of bytes.
    */
   public String format(long bytes) {
      return format(Long.valueOf(bytes));
   public String format(long value) {
      return format(Long.valueOf(value));
   }
   /**
    * Formats a long which represent a number of kilobytes.
    */
   public String formatKB(long kilobytes) {
      return format(Long.valueOf(kilobytes * 1024));
   }
   /**
    * Format the given object (must be a Long).
    *
    * @param obj
    *            assumed to be the number of bytes as a Long.
    * @param buf
    *            the StringBuffer to append to.
    * @param pos
    * @return A formatted string representing the given bytes in more
    *         human-readable form.
    */
   public StringBuffer format(Object obj, StringBuffer buf, FieldPosition pos) {
      if (obj instanceof Long) {
         long numBytes = ((Long) obj).longValue();
      if (obj instanceof Number) {
         long numBytes = ((Number) obj).longValue();
         if (numBytes < 1024) {
            DecimalFormat formatter = new DecimalFormat("#,##0");
            buf.append(formatter.format((double) numBytes)).append(" b");
         } else if (numBytes < 1024 * 1024) {
            DecimalFormat formatter = new DecimalFormat("#,##0.0");
            DecimalFormat formatter = new DecimalFormat("#,##0");
            buf.append(formatter.format((double) numBytes / 1024.0)).append(" KB");
         } else if (numBytes < 1024 * 1024 * 1024) {
            DecimalFormat formatter = new DecimalFormat("#,##0.0");
            buf.append(formatter.format((double) numBytes / (1024.0 * 1024.0))).append(" MB");
         } else {
            DecimalFormat formatter = new DecimalFormat("#,##0.0");
            buf.append(formatter.format((double) numBytes / (1024.0 * 1024.0 * 1024.0))).append(" GB");
            buf.append(formatter.format((double) numBytes / (1024.0 * 1024.0 * 1024.0)))
                  .append(" GB");
         }
      }
      return buf;
   }
   /**
    * In this implementation, returns null always.
    *
    * @param source
    * @param pos
    * @return returns null in this implementation.
    */
   public Object parseObject(String source, ParsePosition pos) {
      return null;
   }