This commit is contained in:
Lucio Lelii 2018-06-22 08:52:56 +00:00
parent a7170522d1
commit 9952e9efff
6 changed files with 70 additions and 7 deletions

View File

@ -1,8 +1,10 @@
package org.gcube.common.storagehub.client.dsl;
import java.io.InputStream;
import java.util.List;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.model.acls.ACL;
import org.gcube.common.storagehub.model.items.FolderItem;
public class FolderContainer extends ItemContainer<FolderItem>{
@ -35,4 +37,8 @@ public class FolderContainer extends ItemContainer<FolderItem>{
return new FolderContainer(itemclient, newFolderId);
}
public List<ACL> getAcls() throws Exception {
return itemclient.getACL(this.itemId);
}
}

View File

@ -0,0 +1,20 @@
package org.gcube.common.storagehub.client.dsl;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.model.items.Item;
public class GenericItemContainer extends ItemContainer<Item> {
protected GenericItemContainer(ItemManagerClient itemclient, Item item) {
super(itemclient, item);
}
protected GenericItemContainer(ItemManagerClient itemclient, String itemId) {
super(itemclient, itemId);
}
public ContainerType getType() {
return ContainerType.GENERIC_ITEM;
}
}

View File

@ -7,7 +7,7 @@ import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.model.NodeConstants;
import org.gcube.common.storagehub.model.items.Item;
public class ItemContainer<I extends Item> {
public abstract class ItemContainer<I extends Item> {
protected ItemManagerClient itemclient;
@ -21,6 +21,7 @@ public class ItemContainer<I extends Item> {
protected ItemContainer(ItemManagerClient itemclient, String itemId) {
this.itemclient = itemclient;
this.itemId = itemId;
}
protected void setItem(I item) {
@ -28,9 +29,7 @@ public class ItemContainer<I extends Item> {
this.itemId = item.getId();
}
public ContainerType getType() {
return ContainerType.GENERIC_ITEM;
}
public abstract ContainerType getType();

View File

@ -22,10 +22,12 @@ public class OpenResolver {
}
public ItemContainer<Item> asItem() {
return new ItemContainer<Item>(itemclient, item);
return new GenericItemContainer(itemclient, item);
}
public FileContainer asFile() {
return new FileContainer(itemclient, (AbstractFileItem)item);
if (item instanceof AbstractFileItem)
return new FileContainer(itemclient, (AbstractFileItem)item);
else throw new RuntimeException("this item is not a File");
}
}

View File

@ -12,6 +12,6 @@ public class Util {
return new FileContainer(itemClient, (AbstractFileItem)item);
else if (item instanceof FolderItem)
return new FolderContainer(itemClient, (FolderItem)item);
else return new ItemContainer<Item>(itemClient, item);
else return new GenericItemContainer(itemClient, item);
}
}

View File

@ -2,11 +2,19 @@ package org.gcube.data.access.fs;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.StandardCopyOption;
import java.util.List;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.storagehub.client.StreamDescriptor;
import org.gcube.common.storagehub.client.dsl.ContainerType;
import org.gcube.common.storagehub.client.dsl.FileContainer;
import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.items.Item;
import org.junit.BeforeClass;
import org.junit.Test;
@ -44,6 +52,34 @@ public class Items {
}
}
@Test
public void downloadFile() {
StorageHubClient shc = new StorageHubClient();
List<ItemContainer<? extends Item>> containers = shc.getWSRoot().list().getContainers();
for (ItemContainer<? extends Item> container : containers) {
if (container.getType()==ContainerType.FILE) {
FileContainer file = (FileContainer) container;
StreamDescriptor descr = file.download();
File targetFile = new File("/tmp/"+descr.getFileName());
try {
java.nio.file.Files.copy(
descr.getStream(),
targetFile.toPath(),
StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("file created "+targetFile.getAbsolutePath());
break;
}
}
}
/*