This commit is contained in:
Lucio Lelii 2018-12-11 16:58:49 +00:00
parent 791b964a97
commit 94b95f1422
6 changed files with 74 additions and 48 deletions

View File

@ -12,7 +12,7 @@
<groupId>org.gcube.common</groupId>
<artifactId>storagehub-client-library</artifactId>
<version>1.0.2-SNAPSHOT</version>
<version>1.0.3-SNAPSHOT</version>
<name>storagehub-client-library</name>
<dependencyManagement>

View File

@ -42,7 +42,40 @@ public class DefaultItemManager implements ItemManagerClient {
this.delegate = config;
}
@Override
public StreamDescriptor resolvePublicLink(String identifier) {
Call<GXWebTargetAdapterRequest, StreamDescriptor> call = new Call<GXWebTargetAdapterRequest, StreamDescriptor>() {
@Override
public StreamDescriptor call(GXWebTargetAdapterRequest manager) throws Exception {
GXWebTargetAdapterRequest myManager = manager.path("publiclink").path(identifier);
Map<String, Object[]> params = new HashMap<>();
GXInboundResponse response = myManager.queryParams(params).get();
if (response.isErrorResponse()) {
if (response.hasException())
throw response.getException();
else
throw new BackendGenericError();
}
Response resp = response.getSource();
InputStream stream = resp.readEntity(InputStream.class);
String disposition = resp.getHeaderString("Content-Disposition");
String fileName = disposition.replaceFirst("attachment; filename = ([^/s]+)?", "$1");
return new StreamDescriptor(stream, fileName);
}
};
try {
StreamDescriptor result = delegate.make(call);
return result;
}catch(Exception e) {
throw new RuntimeException(e);
}
}
@Override
public List<? extends Item> getChildren(String id, Class<? extends Item> onlyOfType, String ... excludeNodes) {
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {

View File

@ -117,7 +117,7 @@ public class DefaultWorkspaceManager implements WorkspaceManagerClient {
throw new RuntimeException(e);
}
}
@Override
public List<? extends Item> getVreFolders(int start, int limit, String ... excludeNodes) {
Call<GXWebTargetAdapterRequest, ItemList> call = new Call<GXWebTargetAdapterRequest, ItemList>() {

View File

@ -68,5 +68,7 @@ public interface ItemManagerClient {
String setMetadata(String id,Metadata metadata);
String createGcubeItem(String parentId, GCubeItem item);
StreamDescriptor resolvePublicLink(String identifier);
}

View File

@ -8,19 +8,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
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 org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
@ -32,10 +20,6 @@ import org.gcube.common.storagehub.client.dsl.ItemContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.items.FolderItem;
import org.gcube.common.storagehub.model.items.Item;
import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart;
import org.junit.BeforeClass;
import org.junit.Test;
@ -45,25 +29,52 @@ public class Items {
@BeforeClass
public static void setUp(){
//SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548");
SecurityTokenProvider.instance.set("a5b623b6-6577-4271-aba6-7ada687d29cf-98187548");
SecurityTokenProvider.instance.set("18fed2d9-030b-4c77-93af-af2015d945f7-843339462");
//SecurityTokenProvider.instance.set("a5b623b6-6577-4271-aba6-7ada687d29cf-98187548");
ScopeProvider.instance.set("/gcube/preprod");
ScopeProvider.instance.set("/d4science.research-infrastructures.eu");
}
@Test
public void renameFile() throws Exception{
StorageHubClient shc = new StorageHubClient();
shc.open("8822478a-4fd3-41d5-87de-9ff161d0935e").asItem().rename("renamed");
StorageHubClient shc = new StorageHubClient();
FolderContainer myRoot = shc.getWSRoot().newFolder("AnimalsMatcher", "");
FolderContainer children = myRoot.newFolder("build", "build folder");
FileContainer file = null;
try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/mg.jpg"))){
file = myRoot.uploadFile(is, "mg.jpg", "file");
} catch (Exception e) {
e.printStackTrace();
}
FileContainer copiedFile = file.copy(children, "mg.jpg");
try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/bck.jpg"))){
file = myRoot.uploadFile(is, "mg.jpg", "file");
} catch (Exception e) {
e.printStackTrace();
}
FileContainer secodncopiedFile = file.copy(children, "mg.jpg");
}
@Test
public void uploadAndcopyFile() throws Exception {
StorageHubClient shc = new StorageHubClient();
FileContainer file = null;
try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/TatyanaSondre.jpg"))){
file = shc.getWSRoot().uploadFile(is, "TatyanaSondre5.jpg", "descr");
@ -113,7 +124,7 @@ public class Items {
StorageHubClient shc = new StorageHubClient();
String afi = null;
try(InputStream is = new FileInputStream(new File("/tmp/down724121986692880606my new folder.zip"))){
shc.getWSRoot().uploadArchive(is, "testUpload2");
@ -145,7 +156,6 @@ public class Items {
public void delete() throws Exception{
try {
StorageHubClient shc = new StorageHubClient();
shc.open("733a8235-e539-46c6-875d-3038579d4c6a").asFile().delete();
}catch(Exception e) {
e.printStackTrace();
}

View File

@ -19,7 +19,6 @@ import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import org.apache.commons.io.FilenameUtils;
import org.gcube.common.authorization.library.provider.SecurityTokenProvider;
import org.gcube.common.scope.api.ScopeProvider;
import org.gcube.common.storagehub.client.StreamDescriptor;
@ -33,12 +32,9 @@ import org.gcube.common.storagehub.model.acls.AccessType;
import org.gcube.common.storagehub.model.expressions.GenericSearchableItem;
import org.gcube.common.storagehub.model.expressions.OrderField;
import org.gcube.common.storagehub.model.expressions.SearchableItem;
import org.gcube.common.storagehub.model.expressions.logical.And;
import org.gcube.common.storagehub.model.expressions.logical.ISDescendant;
import org.gcube.common.storagehub.model.expressions.text.Like;
import org.gcube.common.storagehub.model.items.AbstractFileItem;
import org.gcube.common.storagehub.model.items.GCubeItem;
import org.gcube.common.storagehub.model.items.ImageFile;
import org.gcube.common.storagehub.model.items.Item;
import org.gcube.common.storagehub.model.query.Queries;
import org.gcube.common.storagehub.model.query.Query;
@ -90,7 +86,6 @@ public class TestCall {
String id = itemclient.createFolder(ws.getId(), "ok7SharingTest", "shared folder for test SHM");
String sharedId = itemclient.shareFolder(id, new HashSet<String>(Arrays.asList("giancarlo.panichi")), AccessType.WRITE_OWNER);
itemclient.uploadFile(new FileInputStream("/home/lucio/Downloads/upload.pdf"), sharedId, "sharedFile.pdf" , "shared file in a shared folder");
}
@Test
@ -292,30 +287,16 @@ public class TestCall {
WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build();
//String path = wsclient.getVreFolder("hl:accounting").getPath();
//System.out.println("path is "+path);
query.setExpression(new And(new ISDescendant(Paths.getPath("/Home/massimiliano.assante/Workspace/MySpecialFolders/gcube-devNext-NextNext/")),
new Like(GenericSearchableItem.get().title,"title")));
query.setExpression(new ISDescendant(Paths.getPath("/Home/m.assante/Workspace/")));
query.setLimit(10);
query.setOrder(new OrderField(GenericSearchableItem.get().title));
List<? extends Item> items = wsclient.search(query, "hl:accounting", "jcr:content");
for (Item item: items) {
System.out.println(item.getName()+" "+item.getLastModificationTime().getTimeInMillis());
System.out.println(item.getName()+" "+item.getPath()+" "+item.getLastModificationTime().getTimeInMillis());
}
System.out.println("items are "+items.size());
}
@Test
public void getImage() throws Exception{
ItemManagerClient itemclient = AbstractPlugin.item().build();
ImageFile img = (ImageFile)itemclient.get("58acc91a-c8f9-4d78-be8e-1175042f171d");
String ext = FilenameUtils.getExtension(img.getName());
File imgFile = File.createTempFile("thumb", "."+ext);
try (FileOutputStream f = new FileOutputStream(imgFile)){
for (byte b : img.getContent().getThumbnailData())
f.write(b);
}
System.out.println(imgFile.getAbsolutePath());
}
/*
@Test