This commit is contained in:
Lucio Lelii 2018-06-26 13:30:30 +00:00
parent 4209d0d5a7
commit b6824fa421
6 changed files with 58 additions and 10 deletions

View File

@ -24,7 +24,7 @@ public class FolderContainer extends ItemContainer<FolderItem>{
}
public ListResolver list() {
return new ListResolver(itemclient, itemId);
return new ListResolver(excludes -> itemclient.getChildren(itemId, excludes), itemclient);
}
public FileContainer uploadFile(InputStream stream, String filename, String description) {
@ -40,4 +40,9 @@ public class FolderContainer extends ItemContainer<FolderItem>{
return itemclient.getACL(this.itemId);
}
public ListResolver findByName(String namePattern) {
return new ListResolver(excludes -> itemclient.findChildrenByNamePattern(itemId, namePattern , excludes), itemclient);
}
}

View File

@ -12,14 +12,15 @@ import org.gcube.common.storagehub.model.items.Item;
public class ListResolver {
private ItemManagerClient itemClient;
private String itemId;
ListRetriever retriever;
ItemManagerClient itemClient;
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;
protected ListResolver(ListRetriever retriever, ItemManagerClient itemClient) {
this.retriever = retriever;
this.itemClient = itemClient;
}
public ListResolver withAccounting(){
@ -38,11 +39,11 @@ public class ListResolver {
}
public List<? extends Item> getItems(){
return itemClient.getChildren(itemId, excludes.toArray(new String[excludes.size()]));
return retriever.getList(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<? extends Item> items = getItems();
List<ItemContainer<? extends Item>> toReturn = items.stream().map(i -> Util.getContainerFromItem(i, itemClient)).collect(Collectors.toList());
return toReturn;
}

View File

@ -0,0 +1,10 @@
package org.gcube.common.storagehub.client.dsl;
import java.util.List;
import org.gcube.common.storagehub.model.items.Item;
public interface ListRetriever {
List<? extends Item> getList(String ... excludes);
}

View File

@ -142,6 +142,27 @@ public class DefaultItemManager implements ItemManagerClient {
}
}
@Override
public List<? extends Item> findChildrenByNamePattern(String id, String name, String... excludeNodes) {
Call<WebTarget, ItemList> call = new Call<WebTarget, ItemList>() {
@Override
public ItemList call(WebTarget manager) throws Exception {
WebTarget myManager = manager.path(id).path("items").path(name);
if (excludeNodes !=null && excludeNodes.length>0)
myManager = myManager.queryParam("exclude",excludeNodes);
Invocation.Builder builder = myManager.request(MediaType.APPLICATION_JSON);
ItemList response = builder.get(ItemList.class);
return response;
}
};
try {
ItemList result = delegate.make(call);
return result.getItemlist();
}catch(Exception e) {
throw new RuntimeException(e);
}
}
@Override
public Integer childrenCount(String id) {

View File

@ -35,5 +35,7 @@ public interface ItemManagerClient {
void delete(String id);
URL getPublickLink(String id);
List<? extends Item> findChildrenByNamePattern(String id, String name, String[] excludeNodes);
}

View File

@ -34,7 +34,7 @@ public class Items {
String afi = null;
try (InputStream is = new FileInputStream(new File("/home/lucio/Downloads/rockandroll.jpeg"))){
shc.getWSRoot().uploadFile(is, "tes-image.jpeg", "descr");
shc.getWSRoot().uploadFile(is, "test2-image.jpeg", "descr");
System.out.println(afi);
} catch (Exception e) {
@ -53,6 +53,15 @@ public class Items {
System.out.println(shc.open("c2573eec-3942-47ec-94a7-04869e97bb69").asFile().getPublicLink());
}
@Test
public void findByName() throws Exception{
StorageHubClient shc = new StorageHubClient();
List<? extends Item> containers = shc.getWSRoot().findByName("DataMiner").getItems();
for (Item container : containers) {
System.out.println("name is :"+container.getName());
}
}
@Test
public void downloadFile() {
StorageHubClient shc = new StorageHubClient();