gcube-cms-suite/use-cases/src/test/java/org/gcube/application/cms/usecases/ws/DescribeWSFolder.java

74 lines
3.0 KiB
Java

package org.gcube.application.cms.usecases.ws;
import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
import org.gcube.common.storagehub.model.items.AbstractFileItem;
import org.gcube.common.storagehub.model.items.FolderItem;
import org.gcube.common.storagehub.model.items.Item;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.List;
public class DescribeWSFolder {
static StorageHubClient shc =null;
public static void main(String[] args) throws StorageHubException {
// String context="/gcube/devsec/devVRE";
String context="/pred4s/preprod/preVRE";
// String folderID="0518e4ad-0ef9-4cba-8d4f-8e315146acdd";
String folderID="ded73475-f9b1-46c8-94f8-5b35c60667ce";
Boolean recursive = true;
TokenSetter.set(context);
shc= new StorageHubClient();
shc.openVREFolder().get().getDescription();
FolderContainer folder=shc.open(folderID).asFolder();
// FolderContainer folder = WorkspaceManager.getApplicationBaseFolder(shc);
FolderItem item=folder.get();
System.out.print("PATH : "+item.getPath()+"\tHIDDEN : "+item.isHidden()+"\tDescription : "+item.getDescription());
System.out.println("Listing... ");
Long size=print(folder,"",recursive);
System.out.println("Size : "+humanReadableByteCountBin(size));
}
private static final Long print(FolderContainer folder,String pad,Boolean recursive) throws StorageHubException {
Long toReturn=new Long(0);
List<? extends Item> items =folder.list().includeHidden().withContent().getItems();
System.out.println(pad+"Elements : "+items.size());
for (Item i : items) {
System.out.println(pad+ i.getName() +"\t"+i.getDescription()+" [" + i.getPrimaryType()+"]");
if(i instanceof FolderItem){
if(recursive)
toReturn+= print(shc.open(i.getId()).asFolder(),pad+"\t",recursive);
}else if (i instanceof AbstractFileItem){
// toReturn+=shc.open(i.getId()).asFile().get().getContent().getSize();
toReturn+=((AbstractFileItem) i).getContent().getSize();
}
}
return toReturn;
}
public static String humanReadableByteCountBin(long bytes) {
long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
if (absB < 1024) {
return bytes + " B";
}
long value = absB;
CharacterIterator ci = new StringCharacterIterator("KMGTPE");
for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
value >>= 10;
ci.next();
}
value *= Long.signum(bytes);
return String.format("%.1f %ciB", value / 1024.0, ci.current());
}
}