@Override public Object convert(Object value) { return DataSize.fromString((String) value); }
/** * Parse literals like KiB or KB to its number representation 1024 (for KB & KiB) * @param mult str * @return long value */ public static long parseMultiplier(String mult) { return parseMult(mult, 0); }
@Override public Object convert(Object value) { return DataSize.toString((Long) value); }
private long parse(String line) { Matcher matcher = pattern.matcher(line); if(!matcher.matches()) { throw new IllegalArgumentException("Can not match: '" + line + "' with " + pattern); } long val = Long.parseLong(matcher.group(1)); String multStr = matcher.group(2); long mult = DataSize.parseMultiplier(multStr); return val + mult; } }
public static long fromString(String str) { int end; for(end = 0; end < str.length(); ++end) { char c = str.charAt(end); // if char is not a part of number if(!(c >= '0' && c <= '9') && c != '-' && c != '+' && c != '.') { break; } } if(end == str.length()) { return Long.parseLong(str); } double rem = Double.parseDouble(str.substring(0, end)); double mult = parseMult(str, end); return (long)(rem * mult); }