diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java index ee17eef..60c1ba1 100644 --- a/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java +++ b/src/main/java/org/gcube/common/storagehubwrapper/server/WorkspaceStorageHubClientService.java @@ -11,6 +11,7 @@ import java.util.List; import java.util.Map; import org.apache.commons.lang.Validate; +import org.gcube.common.storagehub.client.StreamDescriptor; import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.types.GenericItemType; @@ -28,6 +29,7 @@ import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolder import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WrongDestinationException; import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WrongItemTypeException; import org.gcube.common.storagehubwrapper.shared.tohl.impl.WorkspaceFolder; +import org.gcube.common.storagehubwrapper.shared.tohl.items.FileStreamDescriptor; import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -552,6 +554,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ * @return true, if is item shared * @throws Exception the exception */ + @Override public boolean isItemShared(String itemId) throws Exception { Validate.notNull(itemId,"The input itemId is null"); try{ @@ -570,6 +573,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ * @return the VRE folders id * @throws Exception the exception */ + @Override public String getVREFoldersId() throws Exception{ try{ return storageHubClientService.getVREFoldersId(); @@ -583,6 +587,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ /* (non-Javadoc) * @see org.gcube.common.storagehubwrapper.server.tohl.Workspace#getTrash() */ + @Override public WorkspaceItem getTrash() throws Exception { try{ @@ -600,6 +605,7 @@ public final class WorkspaceStorageHubClientService implements Workspace{ * * @throws Exception the exception */ + @Override public void emptyTrash() throws Exception{ try{ @@ -611,18 +617,15 @@ public final class WorkspaceStorageHubClientService implements Workspace{ } - - /** - * Restore thrash item. - * - * @param itemId the item id - * @return the item - * @throws Exception the exception + /* (non-Javadoc) + * @see org.gcube.common.storagehubwrapper.server.tohl.Workspace#restoreThrashItem(java.lang.String) */ - public Item restoreThrashItem(String itemId) throws Exception{ + @Override + public WorkspaceItem restoreThrashItem(String itemId) throws Exception{ try{ - return storageHubClientService.restoreThrashItem(itemId); + Item theItem = storageHubClientService.restoreThrashItem(itemId); + return HLMapper.toWorkspaceItem(theItem); }catch(Exception e){ throw new Exception("Error restoring the Trash Item: "+e.getMessage()); @@ -631,6 +634,29 @@ public final class WorkspaceStorageHubClientService implements Workspace{ } + /** + * Download file. + * + * @param itemId the item id + * @param fileName the file name + * @param nodeIdsToExclude the node ids to exclude + * @return the file stream descriptor + * @throws Exception the exception + */ + @Override + public FileStreamDescriptor downloadFile(String itemId, String fileName, String nodeIdsToExclude) throws Exception{ + + try { + StreamDescriptor streamDesc = storageHubClientService.downloadFile(itemId, fileName, nodeIdsToExclude); + return new org.gcube.common.storagehubwrapper.shared.tohl.impl.StreamDescriptor(streamDesc.getStream(), streamDesc.getFileName()); + } catch (Exception e) { + logger.error("Error on downoloading the file: "+fileName+ " with id: "+itemId, e); + throw new Exception("Error on downoloading the file: "+fileName+". Refresh and Try again"); + } + } + + + diff --git a/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java b/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java index d72e0ff..93ee985 100644 --- a/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java +++ b/src/main/java/org/gcube/common/storagehubwrapper/server/tohl/Workspace.java @@ -22,6 +22,7 @@ import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.ItemNotFoundExc import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WorkspaceFolderNotFoundException; import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WrongDestinationException; import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.WrongItemTypeException; +import org.gcube.common.storagehubwrapper.shared.tohl.items.FileStreamDescriptor; import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem; @@ -246,7 +247,7 @@ public interface Workspace{ * @return the item * @throws Exception the exception */ - public Item restoreThrashItem(String itemId) throws Exception; + public WorkspaceItem restoreThrashItem(String itemId) throws Exception; @@ -714,4 +715,19 @@ public interface Workspace{ WorkspaceFolderNotFoundException, InternalErrorException, ItemAlreadyExistException, WrongDestinationException, InsufficientPrivilegesException; + + + /** + * Download file. + * + * @param itemId the item id + * @param fileName the file name + * @param nodeIdsToExclude the node ids to exclude + * @return the file stream descriptor + * @throws Exception the exception + */ + FileStreamDescriptor downloadFile( + String itemId, String fileName, String nodeIdsToExclude) + throws Exception; + }