From 6e8600bbf3e0e94c4a19b1dfd3a91ed8e776a9c4 Mon Sep 17 00:00:00 2001 From: lucio Date: Mon, 16 Mar 2020 16:58:12 +0100 Subject: [PATCH] setHidden for items added search with excludeHidden added --- pom.xml | 1 - .../client/dsl/FolderContainer.java | 14 +++++- .../client/proxies/DefaultItemManager.java | 44 +++++++++++++++++-- .../client/proxies/ItemManagerClient.java | 4 +- .../java/org/gcube/data/access/fs/Items.java | 20 +++++++-- 5 files changed, 73 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index af7356e..116504d 100644 --- a/pom.xml +++ b/pom.xml @@ -115,7 +115,6 @@ maven-compiler-plugin - 2.3.2 1.8 1.8 diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java b/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java index 04af142..f5eb23f 100644 --- a/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/FolderContainer.java @@ -190,6 +190,18 @@ public class FolderContainer extends ItemContainer{ return new OpenResolver(itemclient.getByRelativePath(id, relativePath), itemclient); } + /** + * + * returns the items that matches the name pattern searching recursively on all subfolders filtering the trashed Items + * + * @return {@ListResolver} + * @throws {@InvalidItemException} + * @throws {@UserNotAuthorizedException} if user is not authorized to read this folder + */ + public ListResolver search(String nameTomatch, boolean excludeTrashed) throws StorageHubException { + return new ListResolver((onlyType, includeHidden, excludes) -> itemclient.search(itemId, onlyType, includeHidden, excludeTrashed, nameTomatch, excludes), itemclient); + } + /** * * returns the items that matches the name pattern searching recursively on all subfolders @@ -199,7 +211,7 @@ public class FolderContainer extends ItemContainer{ * @throws {@UserNotAuthorizedException} if user is not authorized to read this folder */ public ListResolver search(String nameTomatch) throws StorageHubException { - return new ListResolver((onlyType, includeHidden, excludes) -> itemclient.search(itemId, onlyType, includeHidden, nameTomatch, excludes), itemclient); + return search(nameTomatch, true); } /** 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 92f5a76..213e59e 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 @@ -2,6 +2,7 @@ package org.gcube.common.storagehub.client.proxies; import java.io.InputStream; import java.net.URL; +import java.net.URLEncoder; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -197,7 +198,7 @@ public class DefaultItemManager implements ItemManagerClient { return getChildren(id, null, showHidden, excludeNodes); } - public List search(String id, Class onlyOfType, boolean showHidden, String nameToMatch, String ... excludeNodes) throws StorageHubException{ + public List search(String id, Class onlyOfType, boolean showHidden, boolean excludeTrashed, String nameToMatch, String ... excludeNodes) throws StorageHubException{ Call call = new Call() { @Override public ItemList call(GXWebTargetAdapterRequest manager) throws StorageHubException, Exception { @@ -210,8 +211,9 @@ public class DefaultItemManager implements ItemManagerClient { if (onlyOfType!=null) params.put("onlyType", new Object[] {resolveNodeType(onlyOfType)}); params.put("showHidden", new Object[] {showHidden}); - params.put("name", new Object[] {nameToMatch}); - + params.put("name", new String[] {URLEncoder.encode( nameToMatch, "UTF-8" )}); + params.put("excludeTrashed", new Object[] {excludeTrashed}); + GXInboundResponse response = myManager.queryParams(params).get(); if (response.isErrorResponse()) { @@ -1272,6 +1274,42 @@ public class DefaultItemManager implements ItemManagerClient { } } + + + + @Override + public String setHidden(String id, Boolean value) throws StorageHubException { + Call call = new Call() { + @Override + public String call(GXWebTargetAdapterRequest manager) throws Exception { + Objects.requireNonNull(id, "id cannot be null"); + Objects.requireNonNull(value, "value cannot be null"); + + + GXWebTargetAdapterRequest myManager = manager.path(id) + .path("hidden"); + + GXInboundResponse response = myManager.put(Entity.json(value)); + + 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 String setMetadata(String id, Metadata metadata) throws StorageHubException { diff --git a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java index 20cf517..b1234ad 100644 --- a/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/proxies/ItemManagerClient.java @@ -28,7 +28,7 @@ public interface ItemManagerClient { List getAnchestors(String id, String ... excludeNodes) throws StorageHubException; - List search(String id, Class onlyOfType, boolean includeHidden, String nameToMatch, String ... excludeNodes) throws StorageHubException; + List search(String id, Class onlyOfType, boolean includeHidden, boolean excludeTrashed, String nameToMatch, String ... excludeNodes) throws StorageHubException; Integer childrenCount(String id,boolean includeHidden) throws StorageHubException ; @@ -83,6 +83,8 @@ public interface ItemManagerClient { StreamDescriptor downloadSpecificVersion(String id, String version) throws StorageHubException; String setMetadata(String id,Metadata metadata) throws StorageHubException; + + String setHidden(String id,Boolean value) throws StorageHubException; String createGcubeItem(String parentId, GCubeItem item) throws StorageHubException; 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 2aa2bbc..a2b56dc 100644 --- a/src/test/java/org/gcube/data/access/fs/Items.java +++ b/src/test/java/org/gcube/data/access/fs/Items.java @@ -18,6 +18,8 @@ import org.gcube.common.storagehub.client.dsl.FileContainer; import org.gcube.common.storagehub.client.dsl.FolderContainer; import org.gcube.common.storagehub.client.dsl.ItemContainer; import org.gcube.common.storagehub.client.dsl.StorageHubClient; +import org.gcube.common.storagehub.client.plugins.AbstractPlugin; +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; @@ -31,15 +33,15 @@ public class Items { @BeforeClass public static void setUp(){ - SecurityTokenProvider.instance.set("52e1492d-4bd1-4058-946f-d2fe5059ddc4-843339462"); - ScopeProvider.instance.set("/d4science.research-infrastructures.eu"); + SecurityTokenProvider.instance.set("b7c80297-e4ed-42ab-ab42-fdc0b8b0eabf-98187548"); + ScopeProvider.instance.set("/gcube"); } @Test public void search() throws Exception{ StorageHubClient shc = new StorageHubClient(); - List s = shc.getWSRoot().search("pippo").getItems(); + List s = shc.getWSRoot().search("%data%").getItems(); s.forEach(i -> System.out.println(i.getPath()+" "+i.getName())); } @@ -327,7 +329,17 @@ 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"); + } + } /*