Browse Source

allow parsed human sizes to be prefixed by +/-

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@513899 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 18 years ago
parent
commit
16bab4de70
1 changed files with 28 additions and 13 deletions
  1. +28
    -13
      src/main/org/apache/tools/ant/util/StringUtils.java

+ 28
- 13
src/main/org/apache/tools/ant/util/StringUtils.java View File

@@ -201,28 +201,43 @@ public final class StringUtils {
* @since Ant 1.7
*/
public static long parseHumanSizes(String humanSize) throws Exception {
long factor = 1L;
char s = humanSize.charAt(0);
switch (s) {
case '+':
humanSize = humanSize.substring(1);
break;
case '-':
factor = -1L;
humanSize = humanSize.substring(1);
break;
default:
break;
}
//last character isn't a digit
if (!Character.isDigit(humanSize.charAt(humanSize.length() - 1))) {
char c = humanSize.charAt(humanSize.length() - 1);
long value = Long.valueOf(
humanSize.substring(
0, humanSize.length() - 1)).longValue();
char c = humanSize.charAt(humanSize.length() - 1);
if (!Character.isDigit(c)) {
switch (c) {
case 'K':
return value * KILOBYTE;
factor *= KILOBYTE;
break;
case 'M':
return value * MEGABYTE;
factor *= MEGABYTE;
break;
case 'G':
return value * GIGABYTE;
factor *= GIGABYTE;
break;
case 'T':
return value * TERABYTE;
factor *= TERABYTE;
break;
case 'P':
return value * PETABYTE;
factor *= PETABYTE;
break;
default:
return value;
break;
}
} else {
return Long.parseLong(humanSize);
humanSize = humanSize.substring(0, humanSize.length() - 1);
}
return factor * Long.parseLong(humanSize);
}
}

Loading…
Cancel
Save