Updated Branches:
  refs/heads/master 1278d3762 -> 77b2f7494

Added util to print bytes in human readble format


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/77b2f749
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/77b2f749
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/77b2f749

Branch: refs/heads/master
Commit: 77b2f7494616fa8204fe4c48d894d2e3e755bd63
Parents: 1278d37
Author: Claus Ibsen <[email protected]>
Authored: Tue Jul 23 17:20:11 2013 +0200
Committer: Claus Ibsen <[email protected]>
Committed: Tue Jul 23 17:20:11 2013 +0200

----------------------------------------------------------------------
 .../java/org/apache/camel/util/UnitUtils.java   | 43 ++++++++++++++++++++
 .../org/apache/camel/util/UnitUtilsTest.java    | 36 ++++++++++++++++
 .../camel/karaf/commands/ContextInfo.java       | 10 +++--
 3 files changed, 85 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/77b2f749/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java 
b/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java
new file mode 100644
index 0000000..78c18bf
--- /dev/null
+++ b/camel-core/src/main/java/org/apache/camel/util/UnitUtils.java
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.util;
+
+/**
+ * Unit utils.
+ */
+public final class UnitUtils {
+
+    private UnitUtils() {
+    }
+
+    /**
+     * If having a size in bytes and wanting to print this in human friendly\
+     * format with xx kB, xx MB, xx GB instead of a large byte number.
+     *
+     * @param bytes  the value in bytes
+     */
+    public static String printUnitFromBytes(long bytes) {
+        // 
http://stackoverflow.com/questions/3758606/how-to-convert-byte-size-into-human-readable-format-in-java
+        int unit = 1000;
+        if (bytes < unit) {
+            return bytes + " B";
+        }
+        int exp = (int) (Math.log(bytes) / Math.log(unit));
+        String pre = "" + "kMGTPE".charAt(exp - 1);
+        return String.format("%.1f %sB", bytes / Math.pow(unit, exp), pre);
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/77b2f749/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java 
b/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java
new file mode 100644
index 0000000..e73d5cd
--- /dev/null
+++ b/camel-core/src/test/java/org/apache/camel/util/UnitUtilsTest.java
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.util;
+
+import junit.framework.TestCase;
+
+import static org.apache.camel.util.UnitUtils.printUnitFromBytes;
+
+public class UnitUtilsTest extends TestCase {
+
+    public void testPrintUnitFromBytes() throws Exception {
+        assertEquals("999 B", printUnitFromBytes(999));
+        assertEquals("1.0 kB", printUnitFromBytes(1000));
+        assertEquals("1.0 kB", printUnitFromBytes(1001));
+
+        assertEquals("1000.0 kB", printUnitFromBytes(999999));
+        assertEquals("1.0 MB", printUnitFromBytes(1000000));
+        assertEquals("1.0 MB", printUnitFromBytes(1000001));
+
+        assertEquals("1.5 MB", printUnitFromBytes(1500001));
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/77b2f749/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
----------------------------------------------------------------------
diff --git 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
index 6df41d1..a23bcf1 100644
--- 
a/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
+++ 
b/platforms/karaf/commands/src/main/java/org/apache/camel/karaf/commands/ContextInfo.java
@@ -33,6 +33,8 @@ import org.apache.felix.gogo.commands.Command;
 import org.apache.karaf.shell.console.OsgiCommandSupport;
 import org.apache.karaf.util.StringEscapeUtils;
 
+import static org.apache.camel.util.UnitUtils.printUnitFromBytes;
+
 /**
  * Command to display detailed information about a Camel context.
  */
@@ -160,11 +162,11 @@ public class ContextInfo extends OsgiCommandSupport {
                     if 
(camelContext.getStreamCachingStrategy().getStatistics().isStatisticsEnabled()) 
{
                         
System.out.println(StringEscapeUtils.unescapeJava(String.format("\t             
          [cacheMemoryCounter=%s, cacheMemorySize=%s, 
cacheMemoryAverageSize=%s, cacheSpoolCounter=%s, cacheSpoolSize=%s, 
cacheSpoolAverageSize=%s]",
                                 
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryCounter(),
-                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemorySize(),
-                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryAverageSize(),
+                                
printUnitFromBytes(camelContext.getStreamCachingStrategy().getStatistics().getCacheMemorySize()),
+                                
printUnitFromBytes(camelContext.getStreamCachingStrategy().getStatistics().getCacheMemoryAverageSize()),
                                 
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolCounter(),
-                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize(),
-                                
camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolAverageSize())));
+                                
printUnitFromBytes(camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolSize()),
+                                
printUnitFromBytes(camelContext.getStreamCachingStrategy().getStatistics().getCacheSpoolAverageSize()))));
                     }
                 }
 

Reply via email to