Author: btellier
Date: Tue Sep 22 10:33:16 2015
New Revision: 1704555

URL: http://svn.apache.org/viewvc?rev=1704555&view=rev
Log:
JAMES-511 Add support for special quota values

Modified:
    
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
    
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/utils/ValueWithUnit.java
    
james/server/trunk/container/cli/src/test/java/org/apache/james/cli/utils/ValueWithUnitTest.java

Modified: 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java?rev=1704555&r1=1704554&r2=1704555&view=diff
==============================================================================
--- 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
 (original)
+++ 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/ServerCmd.java
 Tue Sep 22 10:33:16 2015
@@ -233,10 +233,10 @@ public class ServerCmd {
             System.out.println("Storage space allowed for Quota Root "
                 + arguments[1]
                 + " : "
-                + 
FileUtils.byteCountToDisplaySize(probe.getMaxStorage(arguments[1])));
+                + formatStorageValue(probe.getMaxStorage(arguments[1])));
             break;
         case GETMAXMESSAGECOUNTQUOTA:
-            System.out.println("Message count allowed for Quota Root " + 
arguments[1] + " : " + probe.getMaxMessageCount(arguments[1]));
+            System.out.println("Message count allowed for Quota Root " + 
arguments[1] + " : " + 
formatMessageValue(probe.getMaxMessageCount(arguments[1])));
             break;
         case SETMAXSTORAGEQUOTA:
             probe.setMaxStorage(arguments[1], 
ValueWithUnit.parse(arguments[2]).getConvertedValue());
@@ -251,10 +251,10 @@ public class ServerCmd {
             probe.setDefaultMaxMessageCount(Long.parseLong(arguments[1]));
             break;
         case GETDEFAULTMAXSTORAGEQUOTA:
-            System.out.println("Default Maximum Storage Quota : " + 
FileUtils.byteCountToDisplaySize(probe.getDefaultMaxStorage()));
+            System.out.println("Default Maximum Storage Quota : " + 
formatStorageValue(probe.getDefaultMaxStorage()));
             break;
         case GETDEFAULTMAXMESSAGECOUNTQUOTA:
-            System.out.println("Default Maximum message count Quota : " + 
probe.getDefaultMaxMessageCount());
+            System.out.println("Default Maximum message count Quota : " + 
formatMessageValue(probe.getDefaultMaxMessageCount()));
             break;
         default:
             throw new UnrecognizedCommandException(cmdType.getCommand());
@@ -273,15 +273,35 @@ public class ServerCmd {
     private void printStorageQuota(String quotaRootString, SerializableQuota 
quota) {
         System.out.println(String.format("Storage quota for %s is : %s / %s",
             quotaRootString,
-            FileUtils.byteCountToDisplaySize(quota.getUsed()),
-            FileUtils.byteCountToDisplaySize(quota.getMax())));
+            formatStorageValue(quota.getUsed()),
+            formatStorageValue(quota.getMax())));
     }
 
     private void printMessageQuota(String quotaRootString, SerializableQuota 
quota) {
-        System.out.println(String.format("Message count quota for %s is : %d / 
%d",
+        System.out.println(String.format("Message count quota for %s is : %s / 
%s",
             quotaRootString,
-            quota.getUsed(),
-            quota.getMax()));
+            formatMessageValue(quota.getUsed()),
+            formatMessageValue(quota.getMax())));
+    }
+
+    private String formatStorageValue(long value) {
+        if (value == Quota.UNKNOWN) {
+            return ValueWithUnit.UNKNOWN;
+        }
+        if (value == Quota.UNLIMITED) {
+            return ValueWithUnit.UNLIMITED;
+        }
+        return FileUtils.byteCountToDisplaySize(value);
+    }
+
+    private String formatMessageValue(long value) {
+        if (value == Quota.UNKNOWN) {
+            return ValueWithUnit.UNKNOWN;
+        }
+        if (value == Quota.UNLIMITED) {
+            return ValueWithUnit.UNLIMITED;
+        }
+        return String.valueOf(value);
     }
 
     private void print(Map<String, Collection<String>> map, PrintStream out) {

Modified: 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/utils/ValueWithUnit.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/main/java/org/apache/james/cli/utils/ValueWithUnit.java?rev=1704555&r1=1704554&r2=1704555&view=diff
==============================================================================
--- 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/utils/ValueWithUnit.java
 (original)
+++ 
james/server/trunk/container/cli/src/main/java/org/apache/james/cli/utils/ValueWithUnit.java
 Tue Sep 22 10:33:16 2015
@@ -19,11 +19,16 @@
 
 package org.apache.james.cli.utils;
 
+import org.apache.james.mailbox.model.Quota;
+
 /**
  * This class is an helper for parsing integer input that may contain units.
  */
 public class ValueWithUnit {
 
+    public static final String UNKNOWN = "UNKNOWN";
+    public static final String UNLIMITED = "UNLIMITED";
+
     /**
      * supported units : B ( 2^0 ), K ( 2^10 ), M ( 2^20 ), G ( 2^30 )
      * See  RFC822.SIZE
@@ -47,6 +52,12 @@ public class ValueWithUnit {
     }
 
     public static ValueWithUnit parse(String providedLongWithUnitString) 
throws Exception{
+        if(providedLongWithUnitString.equalsIgnoreCase(UNKNOWN)) {
+            return new ValueWithUnit(Unit.NoUnit, Quota.UNKNOWN);
+        }
+        if(providedLongWithUnitString.equalsIgnoreCase(UNLIMITED)) {
+            return new ValueWithUnit(Unit.NoUnit, Quota.UNLIMITED);
+        }
         char lastChar = 
providedLongWithUnitString.charAt(providedLongWithUnitString.length()-1);
         Unit unit = getUnit(lastChar);
         String argWithoutUnit = 
removeLastCharIfNeeded(providedLongWithUnitString, unit);

Modified: 
james/server/trunk/container/cli/src/test/java/org/apache/james/cli/utils/ValueWithUnitTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container/cli/src/test/java/org/apache/james/cli/utils/ValueWithUnitTest.java?rev=1704555&r1=1704554&r2=1704555&view=diff
==============================================================================
--- 
james/server/trunk/container/cli/src/test/java/org/apache/james/cli/utils/ValueWithUnitTest.java
 (original)
+++ 
james/server/trunk/container/cli/src/test/java/org/apache/james/cli/utils/ValueWithUnitTest.java
 Tue Sep 22 10:33:16 2015
@@ -21,6 +21,7 @@ package org.apache.james.cli.utils;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import org.apache.james.mailbox.model.Quota;
 import org.junit.Test;
 
 public class ValueWithUnitTest {
@@ -50,6 +51,16 @@ public class ValueWithUnitTest {
         
assertThat(ValueWithUnit.parse("1G").getConvertedValue()).isEqualTo(1024 * 1024 
* 1024);
     }
 
+    @Test
+    public void testUnknown() throws Exception {
+        
assertThat(ValueWithUnit.parse("unknown").getConvertedValue()).isEqualTo(Quota.UNKNOWN);
+    }
+
+    @Test
+    public void testUnlimited() throws Exception {
+        
assertThat(ValueWithUnit.parse("unlimited").getConvertedValue()).isEqualTo(Quota.UNLIMITED);
+    }
+
     @Test(expected = Exception.class)
     public void testBadUnit() throws Exception {
         ValueWithUnit.parse("42T");



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to