storagehub-client-library/src/main/java/org/gcube/common/storagehub/client/dsl/ItemContainer.java

76 lines
1.9 KiB
Java
Raw Normal View History

package org.gcube.common.storagehub.client.dsl;
import org.gcube.common.storagehub.client.StreamDescriptor;
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
import org.gcube.common.storagehub.model.items.FolderItem;
import org.gcube.common.storagehub.model.items.Item;
public abstract class ItemContainer<I extends Item> {
protected ItemManagerClient itemclient;
protected String itemId = null;
protected I item;
protected ItemContainer(ItemManagerClient itemclient, I item) {
this.itemclient = itemclient;
this.itemId = item.getId();
}
protected ItemContainer(ItemManagerClient itemclient, String itemId) {
this.itemclient = itemclient;
this.itemId = itemId;
}
protected void setItem(I item) {
this.item = item;
this.itemId = item.getId();
}
protected String getId() {
return this.itemId;
}
public abstract ContainerType getType();
@SuppressWarnings("unchecked")
public I get() {
if (item==null) return (I)itemclient.get(itemId);
else return item;
}
private I get(boolean reset) {
this.item = (I)itemclient.get(itemId);
return this.item;
}
public StreamDescriptor download(String ... nodeIdsToExclude) {
return itemclient.download(this.itemId, nodeIdsToExclude);
}
public ListResolver getAnchestors() {
return new ListResolver((onlyType, excludes) -> itemclient.getAnchestors(this.itemId,excludes) , itemclient);
}
public void delete() {
itemclient.delete(this.itemId);
}
public OpenResolver rename(String newName) {
itemclient.rename(this.getId(), newName);
return new OpenResolver(this.get(true), itemclient);
}
public OpenResolver move(FolderContainer folder) {
itemclient.move(this.getId(), folder.getId());
return new OpenResolver(this.get(true), itemclient);
}
public FolderContainer getRootSharedFolder() {
return new FolderContainer(itemclient, (FolderItem)itemclient.getRootSharedFolder(this.itemId));
}
}