nlphub/src/main/java/org/gcube/data/analysis/nlphub/workspace/WorkspaceManager.java

55 lines
1.8 KiB
Java
Executable File

package org.gcube.data.analysis.nlphub.workspace;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import org.gcube.common.storagehub.client.dsl.FileContainer;
import org.gcube.common.storagehub.client.dsl.FolderContainer;
import org.gcube.common.storagehub.client.dsl.StorageHubClient;
import org.gcube.common.storagehub.model.exceptions.StorageHubException;
import org.gcube.data.analysis.nlphub.legacy.NlpHubException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class WorkspaceManager {
private static final Logger logger = LoggerFactory.getLogger(WorkspaceManager.class);
public String uploadFile(byte[] in, String name, String description) throws NlpHubException {
if (name == null || name.isEmpty()) {
String error = "Error uploading the file, the filename is invalid: Null";
logger.error(error);
throw new NlpHubException(error);
}
StorageHubClient shc = new StorageHubClient();
FolderContainer rootContainer = shc.getWSRoot();
InputStream inputStream = new ByteArrayInputStream(in);
FileContainer fileContainer;
try {
fileContainer = rootContainer.uploadFile(inputStream, name, description);
} catch (StorageHubException e) {
String error = "Error uploading the file " + name + " : " + e.getLocalizedMessage();
logger.error(error, e);
throw new NlpHubException(error, e);
}
String itemId = fileContainer.get().getId();
logger.debug("Item id uploaded: " + itemId);
URL url;
try {
url = shc.open(itemId).asFile().getPublicLink();
} catch (StorageHubException e) {
String error = "Error retrieving the public link for the file " + name + " : " + e.getLocalizedMessage();
logger.error(error, e);
throw new NlpHubException(error, e);
}
logger.debug("Item public link: " + url);
return url.toString();
}
}