This commit is contained in:
Lucio Lelii 2018-06-21 15:08:26 +00:00
parent 619099c811
commit 4e96a43653
6 changed files with 92 additions and 5 deletions

View File

@ -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<AbstractFileItem> {
protected FileContainer(ItemManagerClient itemclient, AbstractFileItem item) {
super(itemclient, item);
}
protected FileContainer(ItemManagerClient itemclient, String fileId) {
super(itemclient, fileId);
}
}

View File

@ -19,8 +19,8 @@ public class FolderContainer extends ItemContainer<FolderItem>{
super(itemclient, folderId);
}
public List<? extends Item> list() {
return itemclient.getChildren(itemId);
public ListResolver list() {
return new ListResolver(itemclient, itemId);
}
//TODO: change the return to file container

View File

@ -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<String> 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<? extends Item> getItems(){
return itemClient.getChildren(itemId, excludes.toArray(new String[excludes.size()]));
}
public List<ItemContainer<? extends Item>> getContainers(){
List<? extends Item> items = itemClient.getChildren(itemId, excludes.toArray(new String[excludes.size()]));
List<ItemContainer<? extends Item>> toReturn = items.stream().map(i -> Util.getContainerFromItem(i, itemClient)).collect(Collectors.toList());
return toReturn;
}
}

View File

@ -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<Item>(itemclient, item);
}
public FileContainer asFile() {
return new FileContainer(itemclient, (AbstractFileItem)item);
}
}

View File

@ -25,6 +25,6 @@ public class StorageHubClient {
return new OpenResolver(item, itemclient);
}
}

View File

@ -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<? extends Item> 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<Item>(itemClient, item);
}
}