package org.arquillian.cube.docker.impl.client.utils; import org.arquillian.cube.docker.impl.util.NumberType; public class NumberConversion { public static String humanReadableByteCount(Long bytes, boolean decimal) { if (bytes == null) bytes = 0L; String sign = bytes < 0 ? "-" : ""; Long absBytes = Math.abs(bytes); int unit = decimal ? 1000 : 1024; if (absBytes < unit) { return sign + absBytes + " B"; } int exp = (int) (Math.log(absBytes) / Math.log(unit)); String pre = (decimal ? "kMGTPE" : "KMGTPE").charAt(exp-1) + (decimal ? "" : "i"); return String.format("%s %.2f %sB", sign, absBytes / Math.pow(unit, exp), pre).trim(); } public static long convertToLong(Object number) { long longNumber = 0; if (number != null) { NumberType type = NumberType.valueOf(number.getClass().getSimpleName().toUpperCase()); switch (type) { case BYTE: longNumber = ((Byte) number).longValue(); break; case SHORT: longNumber = ((Short) number).longValue(); break; case INTEGER: longNumber = ((Integer) number).longValue(); break; case LONG: longNumber = (long) number; break; } } return longNumber; } }