You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.0 KiB
Java
43 lines
1.0 KiB
Java
package org.gcube.portlets.user.workspace.client.util;
|
|
|
|
import com.google.gwt.core.client.GWT;
|
|
import com.google.gwt.i18n.client.NumberFormat;
|
|
|
|
/**
|
|
* The Class SizeUtil.
|
|
*
|
|
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
|
|
*
|
|
* Nov 5, 2021
|
|
*/
|
|
public class SizeUtil {
|
|
|
|
public static final NumberFormat numberFormat = NumberFormat.getFormat("#,##0.#");
|
|
|
|
/**
|
|
* Readable file size.
|
|
*
|
|
* @param size the size
|
|
* @return the string
|
|
*/
|
|
public static String readableFileSize(long size) {
|
|
GWT.log("Converting size: "+size);
|
|
// -1 should be the size of a folder
|
|
if (size == -1)
|
|
return "";
|
|
// in some cases the size returned by SHUB is negative,
|
|
// so reporting as 1B to user
|
|
if (size < 0)
|
|
return "1 byte";
|
|
|
|
if (size == 0)
|
|
return "0 byte";
|
|
|
|
final String[] units = new String[] { "bytes", "kB", "MB", "GB", "TB" };
|
|
int digitGroups = (int) (Math.log10(size) / Math.log10(1024));
|
|
|
|
return numberFormat.format(size / Math.pow(1024, digitGroups)) +" " +units[digitGroups];
|
|
|
|
}
|
|
}
|