diff --git a/pom.xml b/pom.xml index 8457d70..64db6ce 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ org.gcube.common storagehub-client-library - 1.2.2 + 1.3.0-SNAPSHOT storagehub-client-library @@ -26,7 +26,7 @@ org.gcube.distribution gcube-bom - 1.3.1 + 2.0.1 pom import @@ -54,13 +54,9 @@ org.gcube.common storagehub-model - [1.0.0,2.0.0-SNAPSHOT) - - - com.fasterxml.jackson.jaxrs - jackson-jaxrs-json-provider - 2.3.0 + [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT) + org.glassfish.jersey.media jersey-media-json-jackson @@ -99,7 +95,6 @@ ch.qos.logback logback-classic - 1.0.13 test @@ -108,7 +103,12 @@ 2.4 test - + + com.opencsv + opencsv + 5.3 + test + diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java index 3235496..009a1cc 100644 --- a/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/AbstractPlugin.java @@ -7,6 +7,7 @@ import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; import org.gcube.common.storagehub.client.Constants; import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; +import org.gcube.common.storagehub.client.proxies.MessageManagerClient; import org.gcube.common.storagehub.client.proxies.UserManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; @@ -20,6 +21,7 @@ public abstract class AbstractPlugin implements Plugin { private static final WorkspaceManagerPlugin workspace_plugin = new WorkspaceManagerPlugin(); private static final UserManagerPlugin user_plugin = new UserManagerPlugin(); private static final GroupManagerPlugin group_plugin = new GroupManagerPlugin(); + private static final MessageManagerPlugin messages_plugin = new MessageManagerPlugin(); public static ProxyBuilder item() { @@ -37,6 +39,10 @@ public abstract class AbstractPlugin implements Plugin { public static ProxyBuilder workspace() { return new ProxyBuilderImpl(workspace_plugin); } + + public static ProxyBuilder messages() { + return new ProxyBuilderImpl(messages_plugin); + } public final String name; diff --git a/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java b/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java new file mode 100644 index 0000000..ec03afa --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/plugins/MessageManagerPlugin.java @@ -0,0 +1,53 @@ +package org.gcube.common.storagehub.client.plugins; + +import javax.xml.transform.dom.DOMResult; +import javax.xml.ws.EndpointReference; + +import org.gcube.common.calls.jaxrs.GcubeService; +import org.gcube.common.calls.jaxrs.TargetFactory; +import org.gcube.common.clients.config.ProxyConfig; +import org.gcube.common.clients.delegates.ProxyDelegate; +import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; +import org.gcube.common.gxrest.response.entity.SerializableErrorEntityTextReader; +import org.gcube.common.storagehub.client.Constants; +import org.gcube.common.storagehub.client.MyInputStreamProvider; +import org.gcube.common.storagehub.client.proxies.DefaultMessageManager; +import org.gcube.common.storagehub.client.proxies.MessageManagerClient; +import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.w3c.dom.Node; + +public class MessageManagerPlugin extends AbstractPlugin { + + public MessageManagerPlugin() { + super("storagehub/workspace"); + } + + @Override + public Exception convert(Exception e, ProxyConfig arg1) { + return e; + } + + @Override + public MessageManagerClient newProxy(ProxyDelegate delegate) { + return new DefaultMessageManager(delegate); + } + + @Override + public GXWebTargetAdapterRequest resolve(EndpointReference epr, ProxyConfig config) + throws Exception { + DOMResult result = new DOMResult(); + epr.writeTo(result); + Node node =result.getNode(); + Node child=node.getFirstChild(); + String address = child.getTextContent(); + //GXWebTargetAdapterRequest request = GXWebTargetAdapterRequest.newRequest(address).path(this.name).path("items"); + GcubeService service = GcubeService.service().withName(Constants.MANAGER_QNAME).andPath("messages"); + GXWebTargetAdapterRequest requestAdapter = TargetFactory.stubFor(service).getAsGxRest(address); + requestAdapter.register(SerializableErrorEntityTextReader.class); + requestAdapter.register(MyInputStreamProvider.class); + requestAdapter.register(MultiPartFeature.class); + return requestAdapter; + + } + +} diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java index 01a65f6..6f76b97 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultItemManager.java @@ -587,12 +587,13 @@ public class DefaultItemManager implements ItemManagerClient { Objects.requireNonNull(id, "id cannot be null"); Objects.requireNonNull(id, "name cannot be null"); - GXWebTargetAdapterRequest myManager = manager.path(id).path("items").path(name); + GXWebTargetAdapterRequest myManager = manager.path(id).path("items"); Map params = new HashMap<>(); if (excludeNodes !=null && excludeNodes.length>0) params.put("exclude",excludeNodes); - + params.put("name", new Object[] {name}); + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java new file mode 100644 index 0000000..6fe70e8 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/DefaultMessageManager.java @@ -0,0 +1,257 @@ +package org.gcube.common.storagehub.client.proxies; + +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +import javax.ws.rs.client.Entity; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.MultivaluedHashMap; +import javax.ws.rs.core.MultivaluedMap; + +import org.gcube.common.clients.Call; +import org.gcube.common.clients.delegates.ProxyDelegate; +import org.gcube.common.gxrest.request.GXWebTargetAdapterRequest; +import org.gcube.common.gxrest.response.inbound.GXInboundResponse; +import org.gcube.common.storagehub.model.exceptions.BackendGenericError; +import org.gcube.common.storagehub.model.exceptions.StorageHubException; +import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; +import org.gcube.common.storagehub.model.items.Item; +import org.gcube.common.storagehub.model.messages.Message; +import org.gcube.common.storagehub.model.service.ItemList; +import org.gcube.common.storagehub.model.types.MessageList; + +public class DefaultMessageManager implements MessageManagerClient { + + private final ProxyDelegate delegate; + + + public DefaultMessageManager(ProxyDelegate config){ + this.delegate = config; + } + + + @Override + public Message get(String id) throws StorageHubException { + Call call = new Call() { + @Override + public Message call(GXWebTargetAdapterRequest manager) throws Exception { + Objects.requireNonNull(id, "id cannot be null"); + GXWebTargetAdapterRequest myManager = manager.path(id); + + GXInboundResponse response = myManager.get(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError("HTTP error code is "+response.getHTTPCode()); + } + + Message item = response.getSource().readEntity(Message.class); + + + return item; + } + }; + try { + return delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + } + + @Override + public List getReceivedMessages(int reduceBody) throws StorageHubException { + return getMessages("inbox", reduceBody); + } + + @Override + public List getSentMessages(int reduceBody) throws StorageHubException { + return getMessages("sent", reduceBody); + } + + @Override + public List getReceivedMessages() throws StorageHubException { + return getMessages("inbox", -1); + } + + + @Override + public List getSentMessages() throws StorageHubException { + return getMessages("sent", -1); + } + + @Override + public void setRead(String id, Boolean value) throws StorageHubException { + setBooleanProp("hl:read", value, id); + } + + @Override + public void setOpened(String id, Boolean value) throws StorageHubException { + setBooleanProp("hl:open", value, id); + } + + + private void setBooleanProp(String prop, Boolean bool, String id) throws StorageHubException { + Call call = new Call() { + @Override + public Void call(GXWebTargetAdapterRequest manager) throws Exception { + GXWebTargetAdapterRequest myManager = manager.path(id).path(prop); + + GXInboundResponse response = myManager.put(Entity.json(Boolean.TRUE)); + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError("HTTP error code is "+response.getHTTPCode()); + } + + return null; + } + }; + try { + delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + + } + + @Override + public String sendMessage(List recipients, String subject, String body, List attachments) throws StorageHubException { + Call call = new Call() { + @Override + public String call(GXWebTargetAdapterRequest manager) throws Exception { + Objects.requireNonNull(recipients, "recipients cannot be null"); + Objects.requireNonNull(subject, "subject cannot be null"); + Objects.requireNonNull(body, "body cannot be null"); + GXWebTargetAdapterRequest myManager = manager.path("send"); + MultivaluedMap formData = new MultivaluedHashMap(); + + recipients.forEach(r-> formData.add("to[]", r)); + formData.add("subject", subject); + formData.add("body", body); + if (attachments!=null) + attachments.forEach(a -> formData.add("attachemnts[]", a)); + + System.out.println(formData.toString()); + GXInboundResponse response = myManager.post(Entity.entity(formData, MediaType.APPLICATION_FORM_URLENCODED)); + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError("HTTP error code is "+response.getHTTPCode()); + } + + return response.getSource().readEntity(String.class); + } + }; + try { + return delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + + } + + + @Override + public void delete(String id) throws StorageHubException { + Call call = new Call() { + @Override + public Void call(GXWebTargetAdapterRequest manager) throws Exception { + Objects.requireNonNull(id, "id cannot be null"); + GXWebTargetAdapterRequest myManager = manager.path(id); + + GXInboundResponse response = myManager.delete(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else + throw new BackendGenericError("HTTP error code is "+response.getHTTPCode()); + } + + return null; + } + }; + try { + delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + + } + + + public List getAttachments(String messageId) throws StorageHubException{ + Call call = new Call() { + @Override + public ItemList call(GXWebTargetAdapterRequest manager) throws Exception { + GXWebTargetAdapterRequest myManager = manager.path(messageId).path("attachments"); + GXInboundResponse response = myManager.get(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else if (response.getHTTPCode()==403) + throw new UserNotAuthorizedException("the call to this method is not allowed for the user"); + else + throw new BackendGenericError(); + } + + + return response.getSource().readEntity(ItemList.class); + } + }; + try { + return delegate.make(call).getItemlist(); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + } + + + private List getMessages(final String path, int reduceBody ) throws StorageHubException{ + Call> call = new Call>() { + @Override + public List call(GXWebTargetAdapterRequest manager) throws Exception { + GXWebTargetAdapterRequest myManager = manager.path(path); + if (reduceBody>0) + myManager.queryParams(Collections.singletonMap("reduceBody", new Object[]{reduceBody})); + GXInboundResponse response = myManager.get(); + + if (response.isErrorResponse()) { + if (response.hasException()) + throw response.getException(); + else if (response.getHTTPCode()==403) + throw new UserNotAuthorizedException("the call to this method is not allowed for the user"); + else + throw new BackendGenericError(); + } + + + return response.getSource().readEntity(MessageList.class).getMessages(); + } + }; + try { + return delegate.make(call); + }catch(StorageHubException e) { + throw e; + }catch(Exception e1) { + throw new RuntimeException(e1); + } + } + +} diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java new file mode 100644 index 0000000..67a6ab7 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/MessageManagerClient.java @@ -0,0 +1,32 @@ +package org.gcube.common.storagehub.client.proxies; + +import java.util.List; + +import org.gcube.common.storagehub.model.exceptions.StorageHubException; +import org.gcube.common.storagehub.model.items.Item; +import org.gcube.common.storagehub.model.messages.Message; + +public interface MessageManagerClient { + + Message get(String id) throws StorageHubException; + + List getAttachments(String id) throws StorageHubException; + + List getReceivedMessages(int reduceBody) throws StorageHubException; + + List getSentMessages(int reduceBody) throws StorageHubException; + + List getReceivedMessages() throws StorageHubException; + + List getSentMessages() throws StorageHubException; + + + void delete(String id) throws StorageHubException; + + String sendMessage(List recipients, String subject, String body, List attachments) + throws StorageHubException; + + void setRead(String id, Boolean value) throws StorageHubException; + + void setOpened(String id, Boolean value) throws StorageHubException; +} diff --git a/src/test/java/org/gcube/data/access/fs/AddUserToVRes.java b/src/test/java/org/gcube/data/access/fs/AddUserToVRes.java deleted file mode 100644 index 3eab5b0..0000000 --- a/src/test/java/org/gcube/data/access/fs/AddUserToVRes.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.gcube.data.access.fs; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.Arrays; -import java.util.List; - -import org.junit.Test; - -public class AddUserToVRes { - - - List DORNE_VRE = Arrays.asList("mister.brown", - "jesus.santamariafernandez", - "noah.matovu", - "andrea.rossi", - "francesco.mangiacrapa", - "mister.pink", - "kostas.kakaletris", - "massimiliano.assante", - "mister.white", - "mister.blonde", - "aureliano.gentile", - "mister.blue", - "mister.orange", - "lucio.lelii"); - - List PARTHENOS_VRE = Arrays.asList("francesco.mangiacrapa", - "massimiliano.assante", - "costantino.perciante", - "luca.frosini", - "pasquale.pagano", - "alessia.bardi", - "roberto.cirillo"); - - List PRE_VRE = Arrays.asList("fabio.sinibaldi", - "valentina.marioli", - "statistical.manager", - "roberto.cirillo", - "francesco.mangiacrapa", - "leonardo.candela", - "costantino.perciante", - "mariaantonietta.digirolamo", - "gantzoulatos", - "massimiliano.assante", - "lucio.lelii", - "panagiota.koltsida", - "ngalante", - "efthymios", - "nikolas.laskaris", - "andrea.dellamico", - "gianpaolo.coro", - "giancarlo.panichi", - "kostas.kakaletris", - "scarponi", - "andrea.rossi", - "pasquale.pagano", - "mister.blue", - "m.assante", - "yannis.marketakis", - "grsf.publisher", - "kgiannakelos", - "mister.pink", - "luca.frosini", - "dkatris", - "paolo.fabriani", - "mister.brown", - "mister.white", - "mister.orange", - "gabriele.giammatteo"); - - @Test - public void add() throws Exception{ - String group = "pred4s-preprod-preVRE"; - URL addGroupUrl = new URL("http://storagehub.pre.d4science.net/storagehub/workspace/groups/"+group+"?gcube-token="); - - for (String user : PRE_VRE) { - try { - HttpURLConnection connection =(HttpURLConnection)addGroupUrl.openConnection(); - connection.setRequestMethod("PUT"); - StringBuilder postData = new StringBuilder(); - postData.append("userId"); - postData.append("="); - postData.append(user); - /*postData.append("&"); - postData.append("password"); - postData.append("="); - postData.append("pwd"+user.hashCode());*/ - byte[] postDataBytes = postData.toString().getBytes("UTF-8"); - connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - connection.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); - connection.setDoOutput(true); - connection.getOutputStream().write(postDataBytes); - Reader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); - - for (int c; (c = in.read()) >= 0;) - System.out.print((char)c); - }catch (Exception e) { - System.out.println("error for user "+user); - e.printStackTrace(); - } - } - } -} diff --git a/src/test/java/org/gcube/data/access/fs/Items.java b/src/test/java/org/gcube/data/access/fs/Items.java index 8d0b76e..a7e35dd 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -7,10 +7,11 @@ import java.io.FileOutputStream; import java.io.InputStream; import java.nio.file.Files; import java.util.Arrays; +import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Map.Entry; -import java.util.Set; +import java.util.Properties; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.scope.api.ScopeProvider; @@ -24,6 +25,7 @@ import org.gcube.common.storagehub.client.proxies.UserManagerClient; import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.acls.AccessType; import org.gcube.common.storagehub.model.exceptions.StorageHubException; +import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.junit.BeforeClass; import org.junit.Test; @@ -32,61 +34,127 @@ import org.junit.Test; public class Items { + private static final String propFile = "C:\\Users\\tilli\\Documents\\eclipse\\tokens.properties"; + + private static final String tokens = "dev-root"; + //private static final String tokens = "prod-root"; + @BeforeClass public static void setUp(){ - SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); - ScopeProvider.instance.set("/gcube"); + + try(InputStream is = new FileInputStream(new File(propFile))){ + Properties prop = new Properties(); + prop.load(is); + String value =(String)prop.get(tokens); + String[] splitValue = value.split(","); + String context = splitValue[0]; + String token = splitValue[1]; + SecurityTokenProvider.instance.set(token); + ScopeProvider.instance.set(context); + } catch (Exception e) { + e.printStackTrace(); + } + } - - + @Test - public void search() throws Exception{ + public void addUserToVRe() throws StorageHubException { StorageHubClient shc = new StorageHubClient(); - /*List s = shc.getWSRoot().search("WD%",false).getItems(); - s.forEach(i -> System.out.println(i.getName()+" "+i.getId()));*/ - Item item = shc.restoreThrashItem("b7ad6691-ae43-4b61-9538-0961b0b98c5d").get(); - System.out.println("item id "+item.getId()+" path "+item.getPath()+" parent "+item.getParentId()); + + String vresFile = "C:\\Users\\tilli\\Downloads\\vresToAddGCat.txt"; + + try(InputStream is = new FileInputStream(new File(vresFile))){ + Properties prop = new Properties(); + prop.load(is); + Enumeration enumer = prop.keys(); + while (enumer.hasMoreElements()) { + try { + String vre= (String) enumer.nextElement(); + shc.getVreFolderManager(vre).addUser("gCat"); + System.out.println("added to "+vre); + }catch (Exception e) { + e.printStackTrace(); + } + } + + }catch (Exception e) { + e.printStackTrace(); + } + + + } - + + @Test + public void search() { + try { + StorageHubClient shc = new StorageHubClient(); + List s = shc.getWSRoot().search("WD%",false).getItems(); + s.forEach(i -> System.out.println(i.getName()+" "+i.getId())); + }catch (Exception e ) { + e.printStackTrace(); + } + } + @Test public void forceDelete() throws Exception{ StorageHubClient shc = new StorageHubClient(); //shc.open("41b904cd-128a-4121-8fd7-82498187ca06").asFolder().getAnchestors().getItems().forEach(i -> System.out.println(i.getTitle())); shc.open("7ac99eea-d768-4864-a248-6d4ccf43d931").asFile().setDescription("new descr"); - - - } @Test public void changeAcls() throws Exception{ StorageHubClient shc = new StorageHubClient(); - + System.out.println(shc.open("65e502ff-92ef-46cc-afbd-3e91f4b680be").asFolder().canWrite()); - + } - - - + + + @Test + public void setAdmin() throws Exception{ + try { + StorageHubClient shc = new StorageHubClient(); + + shc.getVreFolderManager("gcube-devsec-devVRE").setAdmin("giancarlo.panichi"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + + @Test + public void removeAdmin() throws Exception{ + try { + StorageHubClient shc = new StorageHubClient(); + + shc.getVreFolderManager("gcube-devsec-devVRE").removeAdmin("luca.frosini"); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Test public void renameFile() throws Exception{ StorageHubClient shc = new StorageHubClient(); - - + + FolderContainer myRoot = shc.getWSRoot(); - + myRoot.findByName(""); - - + + 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"); @@ -112,14 +180,14 @@ public class Items { @Test public void uploadAndcopyFile() throws Exception { StorageHubClient shc = new StorageHubClient(); - + FileContainer file = null; - try(InputStream is = new FileInputStream(new File("/home/lucio/Downloads/_upwelling_index.py"))){ - file = shc.getWSRoot().uploadFile(is, "._upwelling_index.py", "test"); + try(InputStream is = new FileInputStream(new File("c:\\Users\\tilli\\Downloads\\expired.png"))){ + file = shc.getWSRoot().uploadFile(is, "expired/exp.png", "test"); } - - - + + + //file.copy(shc.getWSRoot(), "firstCopy.jpg"); } @@ -127,8 +195,8 @@ public class Items { public void download() throws Exception { StorageHubClient shc = new StorageHubClient(); - - StreamDescriptor streamDescr = shc.open("abb59b44-e3cb-408d-a1ff-73d6d8ad2ca1").asFile().downloadSpecificVersion("1.1"); + + StreamDescriptor streamDescr = shc.open("abb59b44-e3cb-408d-a1ff-73d6d8ad2ca1").asFile().download(); System.out.println("length "+streamDescr.getContentLenght()); long start = System.currentTimeMillis(); @@ -141,10 +209,10 @@ public class Items { } } - - + + System.out.println("file written "+output.getAbsolutePath()+" in "+(System.currentTimeMillis()-start)); - + } @Test @@ -159,31 +227,31 @@ public class Items { @Test public void changeProp() throws Exception { StorageHubClient shc = new StorageHubClient(); - + ItemContainer item = shc.open("6399daa7-2173-4314-b4f7-2afa24eae8f8").asItem(); Metadata first = item.get().getMetadata(); first.getMap().put("lucio", "ok"); - + item.setMetadata(first); - + Metadata second = item.get().getMetadata(); for (Entry entry: second.getMap().entrySet()) System.out.println(entry.getKey()+" "+entry.getValue()); - - + + second.getMap().put("lucio", null); second.getMap().put("lelii", "0"); - + item.setMetadata(second); - + Metadata third = item.get().getMetadata(); for (Entry entry: third.getMap().entrySet()) System.out.println(entry.getKey()+" "+entry.getValue()); - + } - + @Test public void uploadArchive() throws Exception { @@ -226,14 +294,33 @@ public class Items { @Test public void delete() throws Exception{ - try { - StorageHubClient shc = new StorageHubClient(); - shc.open("328d0097-e024-43fd-afc8-3926a34a5953").asFile().delete(); - }catch(Exception e) { - e.printStackTrace(); + StorageHubClient shc = new StorageHubClient(); + FolderContainer container = shc.getWSRoot(); + try { + FolderContainer attachmentFolder = container.openByRelativePath("Attachment").asFolder(); + FolderItem folder = attachmentFolder.get(); + } catch (StorageHubException e) { + System.out.println("creating folder"); + container.newFolder("Attachment","Folder created automatically by the System"); } + } + @Test + public void createFolderWhenNotExists() throws Exception{ + StorageHubClient shc = new StorageHubClient(); + FolderContainer container = shc.openVREFolder(); + + try { + FolderContainer attachmentFolder = container.openByRelativePath("Attachment-Lucio").asFolder(); + System.out.println("fodler name is "+attachmentFolder.get().getName()); + } catch (StorageHubException e) { + System.out.println("creating folder"); + container.newFolder("Attachment-Lucio","Folder created automatically by the System"); + } + + } + @Test public void downloadFile() throws Exception{ StorageHubClient shc = new StorageHubClient(); @@ -310,7 +397,7 @@ public class Items { public void downloadFolderWithExcludes() throws Exception{ StorageHubClient shc = new StorageHubClient(); - + StreamDescriptor streamDescr = shc.open("6eb20db1-2921-41ec-ab79-909edd9b58fd").asItem().download("05098be5-61a2-423a-b382-9399a04df11e"); File tmpFile = Files.createTempFile(streamDescr.getFileName(),"").toFile(); @@ -328,21 +415,21 @@ public class Items { } - @Test - public void deleteUnusefulUsers() throws Exception{ - final UserManagerClient client = AbstractPlugin.users().build(); - List users = client.getUsers(); - StorageHubClient shc = new StorageHubClient(); - for (String user : users) - if (user.startsWith("userm")) { - shc.deleteUserAccount(user); - System.out.println("user "+user+"removed"); - } - } + @Test + public void deleteUnusefulUsers() throws Exception{ + final UserManagerClient client = AbstractPlugin.users().build(); + List users = client.getUsers(); + StorageHubClient shc = new StorageHubClient(); + for (String user : users) + if (user.startsWith("userm")) { + shc.deleteUserAccount(user); + System.out.println("user "+user+"removed"); + } + } + + + - - - /* static String baseUrl="http://workspace-repository1-d.d4science.org/storagehub"; diff --git a/src/test/java/org/gcube/data/access/fs/TestCall.java b/src/test/java/org/gcube/data/access/fs/TestCall.java index f82b509..c088e09 100644 --- a/src/test/java/org/gcube/data/access/fs/TestCall.java +++ b/src/test/java/org/gcube/data/access/fs/TestCall.java @@ -4,12 +4,14 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; +import java.io.InputStream; import java.net.URI; import java.nio.file.Files; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -25,14 +27,13 @@ import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.client.plugins.AbstractPlugin; import org.gcube.common.storagehub.client.proxies.GroupManagerClient; import org.gcube.common.storagehub.client.proxies.ItemManagerClient; -import org.gcube.common.storagehub.client.proxies.UserManagerClient; +import org.gcube.common.storagehub.client.proxies.MessageManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.Paths; import org.gcube.common.storagehub.model.acls.ACL; import org.gcube.common.storagehub.model.acls.AccessType; import org.gcube.common.storagehub.model.exceptions.StorageHubException; -import org.gcube.common.storagehub.model.exceptions.UserNotAuthorizedException; import org.gcube.common.storagehub.model.expressions.GenericSearchableItem; import org.gcube.common.storagehub.model.expressions.OrderField; import org.gcube.common.storagehub.model.expressions.SearchableItem; @@ -54,59 +55,87 @@ public class TestCall { private static Logger log = LoggerFactory.getLogger(TestCall.class); + private static final String propFile = "C:\\Users\\tilli\\Documents\\eclipse\\tokens.properties"; + + private static final String tokens = "dev-root"; + @BeforeClass public static void setUp(){ - + + try(InputStream is = new FileInputStream(new File(propFile))){ + Properties prop = new Properties(); + prop.load(is); + String value =(String)prop.get(tokens); + String[] splitValue = value.split(","); + String context = splitValue[0]; + String token = splitValue[1]; + SecurityTokenProvider.instance.set(token); + ScopeProvider.instance.set(context); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Test - public void removeUserFromGroup() throws StorageHubException { - GroupManagerClient client = AbstractPlugin.groups().build(); - client.removeUserFromGroup("andrea.rossi", "gcube-devsec-devVRE"); + public void sendMessages() throws StorageHubException { + MessageManagerClient client = AbstractPlugin.messages().build(); + for (int i=1500; i<3000; i++ ) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + client.sendMessage(Arrays.asList("andrea.rossi"), "testMessage"+i, "body for ttrtetatrtrrttrtrtrar\ndfafsdfadsfafdsdsfafdsafaddsffdsf\nfsdafdjdjskhjghshjhdahjkasdhjjhsd" + + "\ndfsjkfdasjklòjffafadjksò\ndfskfjklaajjfadsjkòfjòfdsajòfadòjk\ndsaffadsffbdsfajfdsbsafdsjkfdsakjlsdafjfkdsjklajlkfadsjfsasjd\n" + + "dsfjkfdsajhdsfsdfahhflhjfdkshlkjfhjafdsjhlkjkhfjkdshjkfhsjklsdah fhadfjahlfdsjfdhjfads fdsfdhsajdfsahjfdsaljhhfahafshjsfdalhlfash\n" + + "dfsakldfjdajfdsjòdsfaj fdsajkadskk dfsjòkdsfaj sjdfsjdja aòfs jsfadfsdò saj òa fafòadsj jsafads\n" + + "dsfjfdhdsaljkhfdsljhdfsajkhsf fdshsajkhshjksdfhjkfdsh dsfjkh h dfshj ds\n" + + "dfjdfahjklhjhaajkshkshjdsafhldslhkdsfaljkadsfhlfjasjkhdasfjhkhfdf ads hldfsasahfdsdfshjfdsa jjhfdsh dfhjs hsajfdhdfhfdshhjdfsjhdf\n" + + "fdsjadsjkdfahjlkdfshkjdshjkfsdhjklsadfjkhjsaslfdhjalkdsfhjfshkfjlsldshjfsdhj\ndastest\n\n\nMessage"+i, null ); + System.out.println("sending message "+i); + } } - - @Test + + public void addUserToGroup() throws StorageHubException { GroupManagerClient client = AbstractPlugin.groups().build(); client.addUserToGroup("andrea.rossi", "gcube-devsec-devVRE"); } - - @Test(expected=UserNotAuthorizedException.class) + public void createNotAuthorized() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.createFolder("3bc977be-37f0-4518-888f-a7cb96c9be8e", "cannot create", "", false); } - @Test public void createFolderAndShare() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.createFolder("fakeId", "test", "test", false); - + /*WorkspaceManagerClient client = AbstractPlugin.workspace().build(); Item ws = client.getWorkspace(); String id = itemclient.createFolder(ws.getId(), "ok7SharingTest", "shared folder for test SHM"); String sharedId = itemclient.shareFolder(id, new HashSet(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 public void shareAnAlreadySharedFolder() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.shareFolder("86e8472a-6f66-4608-9d70-20102c9172ce", new HashSet<>(Arrays.asList("costantino.perciante")), AccessType.READ_ONLY); } - @Test public void restore() throws Exception{ WorkspaceManagerClient client = AbstractPlugin.workspace().build(); System.out.println(client.restoreFromTrash("4fc0a9df-9a51-42ef-98f2-06c21bd0669b", "f3d336cc-cd00-48ba-8339-2bffcbef825e")); } - @Test public void unshareFolder() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.unshareFolder("86e8472a-6f66-4608-9d70-20102c9172ce", new HashSet<>(Arrays.asList("giancarlo.panichi"))); @@ -114,7 +143,6 @@ public class TestCall { } - @Test public void delete() throws Exception{ ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.delete("7af3d5cb-5e74-4a80-be81-acb2fec74cd9"); @@ -123,7 +151,6 @@ public class TestCall { - @Test public void getById() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().build(); List items = client.getAnchestors("29b417e2-dc2f-419a-be0b-7f49e76c9d7c", "hl:accounting", "jcr:content"); @@ -136,7 +163,6 @@ public class TestCall { System.in.read(); } - @Test public void setMetadata() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().build(); Metadata meta = new Metadata(); @@ -147,7 +173,6 @@ public class TestCall { client.setMetadata("8822478a-4fd3-41d5-87de-9ff161d0935e", meta); } - @Test public void createGcubeItem() throws Exception { final ItemManagerClient client = AbstractPlugin.item().build(); GCubeItem item = new GCubeItem(); @@ -163,7 +188,6 @@ public class TestCall { client.createGcubeItem(ws.getId(), item); } - @Test public void upload() throws Exception{ //final ItemManagerClient client = AbstractPlugin.item().at(new URI("http://workspace-repository1-d.d4science.org:8080/storagehub")).build(); @@ -186,7 +210,6 @@ public class TestCall { } - @Test public void uploadArchive() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().at(new URI("http://workspace-repository1-d.d4science.org:8080/storagehub")).build(); @@ -196,7 +219,6 @@ public class TestCall { - @Test public void getACL() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().build(); try { @@ -212,7 +234,6 @@ public class TestCall { } } - @Test public void download() throws Exception{ ItemManagerClient client = AbstractPlugin.item().build(); StreamDescriptor streamDescr = client.download("6875651d-6510-4b82-a0f3-cc3356c1a143"); @@ -228,7 +249,6 @@ public class TestCall { System.out.println("file written "+output.getAbsolutePath()); } - @Test public void getCount() throws Exception{ final ItemManagerClient client = AbstractPlugin.item().build(); long start = System.currentTimeMillis(); @@ -239,7 +259,6 @@ public class TestCall { System.in.read(); } - @Test public void getVreFolder() { ItemManagerClient itemclient = AbstractPlugin.item().build(); WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build(); @@ -250,9 +269,9 @@ public class TestCall { } - @Test public void getRecents() { ItemManagerClient itemclient = AbstractPlugin.item().build(); + WorkspaceManagerClient wsclient = AbstractPlugin.workspace().build(); List items = wsclient.getRecentModifiedFilePerVre(); @@ -262,7 +281,6 @@ public class TestCall { System.out.println(item.getName()+ " "+item.getPath()); } - @Test public void createFolder() throws Exception{ long start= System.currentTimeMillis(); ItemManagerClient itemclient = AbstractPlugin.item().build(); @@ -275,7 +293,6 @@ public class TestCall { System.out.println("creating folder took total "+(System.currentTimeMillis()-start)); } - @Test public void share() throws Exception { ItemManagerClient itemclient = AbstractPlugin.item().build(); itemclient.shareFolder("4fd4a4ca-c615-4076-8eaa-70268e4f6166", new HashSet<>(Arrays.asList("francesco.mangiacrapa","massimiliano.assante","giancarlo.panichi")), AccessType.WRITE_OWNER); @@ -324,8 +341,8 @@ public class TestCall { boolean b = m.find(); System.out.println("result: "+!b); } - - + + /* private InputStream getThumbnailAsPng(ImagePlus img, int thumbWidth, int thumbHeight) throws IOException {