git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@165567 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
12b0794610
commit
53c629eeb4
|
@ -0,0 +1,48 @@
|
|||
package org.gcube.common.storagehub.client.dls;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||
import org.gcube.common.storagehub.model.items.FolderItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
|
||||
public class FolderContainer {
|
||||
|
||||
private ItemManagerClient itemclient;
|
||||
|
||||
private String folderId = null;
|
||||
// private String folderPath = null;
|
||||
|
||||
protected FolderContainer(ItemManagerClient itemclient) {
|
||||
this.itemclient = itemclient;
|
||||
}
|
||||
|
||||
protected void setId(String folderId) {
|
||||
this.folderId = folderId;
|
||||
// this.folderPath = null;
|
||||
}
|
||||
/*
|
||||
protected void setPath(String folderPath) {
|
||||
this.folderPath = folderPath;
|
||||
this.folderId = null;
|
||||
}*/
|
||||
|
||||
public FolderItem get() throws Exception {
|
||||
return (FolderItem)itemclient.get(folderId);
|
||||
}
|
||||
|
||||
public List<? extends Item> list() {
|
||||
return itemclient.getChildren(folderId);
|
||||
}
|
||||
|
||||
public <T extends AbstractFileItem> T uploadFile(InputStream stream, String filename, String description) {
|
||||
return itemclient.uploadFile(stream, this.folderId , filename, description);
|
||||
}
|
||||
|
||||
public StreamDescriptor download(InputStream stream) {
|
||||
return itemclient.download(this.folderId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.gcube.common.storagehub.client.dls;
|
||||
|
||||
public class StorageHubClient {
|
||||
|
||||
public WorkspaceContainer get() {
|
||||
return new WorkspaceContainer();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
package org.gcube.common.storagehub.client.dls;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.client.plugins.AbstractPlugin;
|
||||
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
||||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||
import org.gcube.common.storagehub.model.items.FolderItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
|
||||
public class WorkspaceContainer {
|
||||
|
||||
private WorkspaceManagerClient wsClient = AbstractPlugin.workspace().build();
|
||||
private ItemManagerClient itemclient = AbstractPlugin.item().build();
|
||||
|
||||
protected WorkspaceContainer() {}
|
||||
|
||||
FolderItem rootFolder = null;
|
||||
|
||||
private void init() {
|
||||
if (rootFolder == null)
|
||||
rootFolder = (FolderItem) wsClient.getWorkspace();
|
||||
}
|
||||
|
||||
public FolderItem get(String ... excludes) {
|
||||
init();
|
||||
return rootFolder;
|
||||
}
|
||||
|
||||
public List<? extends Item> list() {
|
||||
init();
|
||||
return itemclient.getChildren(rootFolder.getId());
|
||||
}
|
||||
|
||||
public FolderContainer open(String id) {
|
||||
FolderContainer fc = new FolderContainer(itemclient);
|
||||
fc.setId(id);
|
||||
return fc;
|
||||
}
|
||||
|
||||
public <T extends AbstractFileItem> T uploadFile(InputStream stream, String filename, String description) {
|
||||
init();
|
||||
return itemclient.uploadFile(stream, this.rootFolder.getId(), filename, description);
|
||||
}
|
||||
|
||||
public StreamDescriptor download(InputStream stream) {
|
||||
init();
|
||||
return itemclient.download(this.rootFolder.getId());
|
||||
}
|
||||
|
||||
/*public FolderContainer open(Path path) {
|
||||
FolderContainer fc = new FolderContainer(itemclient);
|
||||
fc.setId(get("hl:accounting","jcr:content").getId());
|
||||
return fc;
|
||||
}*/
|
||||
}
|
|
@ -3,6 +3,7 @@ package org.gcube.common.storagehub.client.proxies;
|
|||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
|
@ -11,9 +12,12 @@ import javax.ws.rs.core.Response;
|
|||
import org.gcube.common.clients.Call;
|
||||
import org.gcube.common.clients.delegates.ProxyDelegate;
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
import org.gcube.common.storagehub.model.service.ItemList;
|
||||
import org.gcube.common.storagehub.model.service.ItemWrapper;
|
||||
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||
|
||||
public class DefaultItemManager implements ItemManagerClient {
|
||||
|
||||
|
@ -134,4 +138,25 @@ public class DefaultItemManager implements ItemManagerClient {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AbstractFileItem uploadFile(InputStream stream, String parentId, String fileName, String description) {
|
||||
Call<WebTarget, ItemWrapper<AbstractFileItem>> call = new Call<WebTarget, ItemWrapper<AbstractFileItem>>() {
|
||||
@Override
|
||||
public ItemWrapper<AbstractFileItem> call(WebTarget manager) throws Exception {
|
||||
WebTarget myManager = manager.register(MultiPartFeature.class).path(parentId)
|
||||
.path("create").path("FILE").queryParam("name", fileName).queryParam("description", description);
|
||||
Invocation.Builder builder = myManager.request();
|
||||
ItemWrapper<AbstractFileItem> response = builder.post(Entity.entity(stream, MediaType.APPLICATION_OCTET_STREAM), ItemWrapper.class);
|
||||
return response;
|
||||
}
|
||||
};
|
||||
try {
|
||||
ItemWrapper<AbstractFileItem> result = delegate.make(call);
|
||||
return result.getItem();
|
||||
}catch(Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package org.gcube.common.storagehub.client.proxies;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.common.storagehub.client.StreamDescriptor;
|
||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
|
||||
|
||||
|
@ -21,4 +23,6 @@ public interface ItemManagerClient {
|
|||
|
||||
StreamDescriptor download(String id);
|
||||
|
||||
<T extends AbstractFileItem> T uploadFile(InputStream stream, String parentId, String fileName, String description);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,37 +1,46 @@
|
|||
package org.gcube.data.access.fs;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.List;
|
||||
import java.io.InputStream;
|
||||
|
||||
import javax.ws.rs.client.Client;
|
||||
import javax.ws.rs.client.ClientBuilder;
|
||||
import javax.ws.rs.client.Entity;
|
||||
import javax.ws.rs.client.Invocation;
|
||||
import javax.ws.rs.client.WebTarget;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
|
||||
import org.gcube.common.storagehub.model.Path;
|
||||
import org.gcube.common.storagehub.model.items.FolderItem;
|
||||
import org.gcube.common.storagehub.model.items.GenericFileItem;
|
||||
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
|
||||
import org.gcube.common.scope.api.ScopeProvider;
|
||||
import org.gcube.common.storagehub.client.dls.FolderContainer;
|
||||
import org.gcube.common.storagehub.client.dls.StorageHubClient;
|
||||
import org.gcube.common.storagehub.model.items.AbstractFileItem;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
import org.gcube.common.storagehub.model.query.ItemFilter;
|
||||
import org.gcube.common.storagehub.model.query.OrderBy;
|
||||
import org.gcube.common.storagehub.model.service.ItemList;
|
||||
import org.gcube.common.storagehub.model.service.ItemWrapper;
|
||||
import org.glassfish.jersey.client.ClientConfig;
|
||||
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
|
||||
import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
|
||||
public class Items {
|
||||
|
||||
@BeforeClass
|
||||
public static void setUp(){
|
||||
SecurityTokenProvider.instance.set("52b59669-ccde-46d2-a4da-108b9e941f7c-98187548");
|
||||
ScopeProvider.instance.set("/gcube/devNext");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void list() {
|
||||
StorageHubClient shc = new StorageHubClient();
|
||||
shc.get().list().stream().forEach(System.out::println);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void uploadFile() {
|
||||
StorageHubClient shc = new StorageHubClient();
|
||||
|
||||
try (InputStream is = new FileInputStream(new File("/home/lucio/Downloads/domenica.jpeg"))){
|
||||
AbstractFileItem afi = shc.get().uploadFile(is, "domenica15", "descr");
|
||||
System.out.println(afi.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
static String baseUrl="http://workspace-repository1-d.d4science.org/storagehub";
|
||||
|
|
Loading…
Reference in New Issue