From 4e96a4365313d3385f2aebe586796b5d8ca82084 Mon Sep 17 00:00:00 2001 From: Lucio Lelii Date: Thu, 21 Jun 2018 15:08:26 +0000 Subject: [PATCH] git-svn-id: https://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/Common/storagehub-client@169390 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../storagehub/client/dsl/FileContainer.java | 16 ++++++ .../client/dsl/FolderContainer.java | 4 +- .../storagehub/client/dsl/ListResolver.java | 51 +++++++++++++++++++ .../storagehub/client/dsl/OpenResolver.java | 5 +- .../client/dsl/StorageHubClient.java | 4 +- .../common/storagehub/client/dsl/Util.java | 17 +++++++ 6 files changed, 92 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java create mode 100644 src/main/java/org/gcube/common/storagehub/client/dsl/ListResolver.java create mode 100644 src/main/java/org/gcube/common/storagehub/client/dsl/Util.java diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java b/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java new file mode 100644 index 0000000..c505aae --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/FileContainer.java @@ -0,0 +1,16 @@ +package org.gcube.common.storagehub.client.dsl; + +import org.gcube.common.storagehub.client.proxies.ItemManagerClient; +import org.gcube.common.storagehub.model.items.AbstractFileItem; + +public class FileContainer extends ItemContainer { + + protected FileContainer(ItemManagerClient itemclient, AbstractFileItem item) { + super(itemclient, item); + } + + protected FileContainer(ItemManagerClient itemclient, String fileId) { + super(itemclient, fileId); + } + +} 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 83997c2..01e5e83 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 @@ -19,8 +19,8 @@ public class FolderContainer extends ItemContainer{ super(itemclient, folderId); } - public List list() { - return itemclient.getChildren(itemId); + public ListResolver list() { + return new ListResolver(itemclient, itemId); } //TODO: change the return to file container diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/ListResolver.java b/src/main/java/org/gcube/common/storagehub/client/dsl/ListResolver.java new file mode 100644 index 0000000..4ae7f08 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/ListResolver.java @@ -0,0 +1,51 @@ +package org.gcube.common.storagehub.client.dsl; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.gcube.common.storagehub.client.proxies.ItemManagerClient; +import org.gcube.common.storagehub.model.NodeConstants; +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 ListResolver { + + private ItemManagerClient itemClient; + private String itemId; + + Set excludes = new HashSet<>(Arrays.asList(NodeConstants.ACCOUNTING_NAME, NodeConstants.CONTENT_NAME, NodeConstants.METADATA_NAME)); + + protected ListResolver(ItemManagerClient itemclient, String itemId) { + this.itemClient = itemclient; + this.itemId = itemId; + } + + public ListResolver withAccounting(){ + excludes.remove(NodeConstants.ACCOUNTING_NAME); + return this; + } + + public ListResolver withContent(){ + excludes.remove(NodeConstants.CONTENT_NAME); + return this; + } + + public ListResolver withMetadata(){ + excludes.remove(NodeConstants.METADATA_NAME); + return this; + } + + public List getItems(){ + return itemClient.getChildren(itemId, excludes.toArray(new String[excludes.size()])); + } + + public List> getContainers(){ + List items = itemClient.getChildren(itemId, excludes.toArray(new String[excludes.size()])); + List> toReturn = items.stream().map(i -> Util.getContainerFromItem(i, itemClient)).collect(Collectors.toList()); + return toReturn; + } +} diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/OpenResolver.java b/src/main/java/org/gcube/common/storagehub/client/dsl/OpenResolver.java index 1d345e4..7333dcf 100644 --- a/src/main/java/org/gcube/common/storagehub/client/dsl/OpenResolver.java +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/OpenResolver.java @@ -1,6 +1,7 @@ package org.gcube.common.storagehub.client.dsl; 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; @@ -14,7 +15,6 @@ public class OpenResolver { this.itemclient = itemclient; }; - public FolderContainer asFolder() { if (item instanceof FolderItem) return new FolderContainer(itemclient, (FolderItem)item); @@ -25,4 +25,7 @@ public class OpenResolver { return new ItemContainer(itemclient, item); } + public FileContainer asFile() { + return new FileContainer(itemclient, (AbstractFileItem)item); + } } diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java b/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java index 43b36ff..7a1cb08 100644 --- a/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/StorageHubClient.java @@ -25,6 +25,6 @@ public class StorageHubClient { return new OpenResolver(item, itemclient); } - - + + } diff --git a/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java b/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java new file mode 100644 index 0000000..b435d29 --- /dev/null +++ b/src/main/java/org/gcube/common/storagehub/client/dsl/Util.java @@ -0,0 +1,17 @@ +package org.gcube.common.storagehub.client.dsl; + +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 Util { + + protected static ItemContainer getContainerFromItem(Item item,ItemManagerClient itemClient){ + if (item instanceof AbstractFileItem) + return new FileContainer(itemClient, (AbstractFileItem)item); + else if (item instanceof FolderItem) + return new FolderContainer(itemClient, (FolderItem)item); + else return new ItemContainer(itemClient, item); + } +}