diff --git a/pom.xml b/pom.xml
index d2607b2..f9f4a89 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,7 +124,7 @@
javassist
3.12.1.GA
-
+
+
+ org.gcube.common
+ storagehub-client-library
+ [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+
+
+ org.gcube.common
+ storagehub-model
+ [1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
+
+
xerces
xercesImpl
diff --git a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/dataspace/DataspaceManager.java b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/dataspace/DataspaceManager.java
index 28b243a..2d61f10 100644
--- a/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/dataspace/DataspaceManager.java
+++ b/src/main/java/org/gcube/dataanalysis/wps/statisticalmanager/synchserver/mapping/dataspace/DataspaceManager.java
@@ -13,16 +13,14 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
-import org.gcube.common.homelibrary.home.Home;
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.HomeManager;
-import org.gcube.common.homelibrary.home.HomeManagerFactory;
-import org.gcube.common.homelibrary.home.User;
-import org.gcube.common.homelibrary.home.workspace.Workspace;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
-import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
-import org.gcube.common.homelibrary.util.WorkspaceUtil;
+import org.gcube.common.storagehub.client.dsl.FileContainer;
+import org.gcube.common.storagehub.client.dsl.FolderContainer;
+import org.gcube.common.storagehub.client.dsl.ItemContainer;
+import org.gcube.common.storagehub.client.dsl.StorageHubClient;
+import org.gcube.common.storagehub.model.Metadata;
+import org.gcube.common.storagehub.model.items.FolderItem;
+import org.gcube.common.storagehub.model.items.GCubeItem;
+import org.gcube.common.storagehub.model.items.Item;
import org.gcube.contentmanagement.lexicalmatcher.utils.FileTools;
import org.gcube.dataanalysis.ecoengine.configuration.AlgorithmConfiguration;
import org.gcube.dataanalysis.wps.statisticalmanager.synchserver.mapping.AbstractEcologicalEngineMapper;
@@ -88,43 +86,55 @@ public class DataspaceManager implements Runnable {
}
- public void createFoldersNetwork(Workspace ws, WorkspaceFolder root) throws Exception {
+ public FolderContainer createFoldersNetwork() throws Exception {
LOGGER.debug("Dataspace->Creating folders for DataMiner");
- // manage folders: create the folders network
- if (!ws.exists(dataminerFolder, root.getId())) {
- LOGGER.debug("Dataspace->Creating DataMiner main folder");
- root.createFolder(dataminerFolder, "A folder collecting DataMiner experiments data and computation information");
- ((WorkspaceFolder) root.find(dataminerFolder)).setSystemFolder(true);
- }
- WorkspaceFolder dataminerFolderWS = (WorkspaceFolder) root.find(dataminerFolder);
+ StorageHubClient shc = new StorageHubClient();
- if (!ws.exists(importedDataFolder, dataminerFolderWS.getId())) {
+ FolderContainer root =shc.getWSRoot();
+
+ List> dataminerItems = root.findByName(dataminerFolder).getContainers();
+
+ FolderContainer dataminerFolderContainer;
+
+ // manage folders: create the folders network
+ if (dataminerItems.isEmpty()) {
+ LOGGER.debug("Dataspace->Creating DataMiner main folder");
+ dataminerFolderContainer = root.newFolder(dataminerFolder, "A folder collecting DataMiner experiments data and computation information");
+ //((WorkspaceFolder) root.find(dataminerFolder)).setSystemFolder(true);
+ } else if (dataminerItems.size()>1) throw new Exception("found more than one dataminer folder (impossible!!!)");
+ else dataminerFolderContainer = (FolderContainer) dataminerItems.get(0);
+
+
+ if (dataminerFolderContainer.findByName(importedDataFolder).getContainers().isEmpty()) {
LOGGER.debug("Dataspace->Creating DataMiner imported data folder");
- dataminerFolderWS.createFolder(importedDataFolder, "A folder collecting DataMiner imported data");
+ dataminerFolderContainer.newFolder(importedDataFolder, "A folder collecting DataMiner imported data");
}
- if (!ws.exists(computedDataFolder, dataminerFolderWS.getId())) {
+
+ if (dataminerFolderContainer.findByName(computedDataFolder).getContainers().isEmpty()) {
LOGGER.debug("Dataspace->Creating DataMiner computed data folder");
- dataminerFolderWS.createFolder(computedDataFolder, "A folder collecting DataMiner computed data");
+ dataminerFolderContainer.newFolder(computedDataFolder, "A folder collecting DataMiner computed data");
}
- if (!ws.exists(computationsFolder, dataminerFolderWS.getId())) {
+ if (dataminerFolderContainer.findByName(computationsFolder).getContainers().isEmpty()) {
LOGGER.debug("Dataspace->Creating DataMiner computations folder");
- dataminerFolderWS.createFolder(computationsFolder, "A folder collecting DataMiner computations information");
+ dataminerFolderContainer.newFolder(computationsFolder, "A folder collecting DataMiner computations information");
}
+
+ return dataminerFolderContainer;
}
- public String uploadData(StoredData data, WorkspaceFolder wsFolder) throws Exception {
- return uploadData(data, wsFolder, true);
+
+ public String uploadData(StoredData data, FolderContainer destinationFolder) throws Exception {
+ return uploadData(data, destinationFolder, true);
}
-
- public String uploadData(StoredData data, WorkspaceFolder wsFolder, boolean changename) throws Exception {
+
+ public String uploadData(StoredData data, FolderContainer destinationFolder, boolean changename) throws Exception {
LOGGER.debug("Dataspace->Analysing " + data);
// String filenameonwsString = WorkspaceUtil.getUniqueName(data.name, wsFolder);
String filenameonwsString = data.name ;
if (changename)
filenameonwsString = String.format("%s_(%s)%s", data.name, data.computationId, getExtension(data.payload, data.type));
-
InputStream in = null;
String url = "";
try {
@@ -174,11 +184,13 @@ public class DataspaceManager implements Runnable {
properties.put(data_type, data.type);
properties.put(payload, url);
- FolderItem fileItem = WorkspaceUtil.createExternalFile(wsFolder, filenameonwsString, data.description, in,properties,data.type,size);
+ FileContainer fileContainer = destinationFolder.uploadFile(in, filenameonwsString, data.description);
+ //TODO: add proprerty to file
+ //FolderItem fileItem = WorkspaceUtil.createExternalFile(wsFolder, filenameonwsString, data.description, in,properties,data.type,size);
//fileItem.getProperties().addProperties(properties);
LOGGER.debug("Dataspace->WS OP file saved on the WS " + filenameonwsString);
- url = fileItem.getPublicLink(false);
+ url = fileContainer.getPublicLink().toString();
LOGGER.debug("Dataspace->WS OP url produced for the file " + url);
data.payload = url;
@@ -202,176 +214,167 @@ public class DataspaceManager implements Runnable {
return url;
}
- public List uploadInputData(List inputData, WorkspaceFolder dataminerFolder) throws Exception {
+ public List uploadInputData(List inputData, FolderContainer dataminerFolder) throws Exception {
LOGGER.debug("Dataspace->uploading input data; Number of data: " + inputData.size());
- WorkspaceItem folderItem = dataminerFolder.find(importedDataFolder);
+ FolderContainer destinationFolder = (FolderContainer) dataminerFolder.findByName(importedDataFolder).getContainers().get(0);
List urls = new ArrayList();
- if (folderItem != null && folderItem.isFolder()) {
- WorkspaceFolder destinationFolder = (WorkspaceFolder) folderItem;
- for (StoredData input : inputData) {
- WorkspaceItem item = null;
+ for (StoredData input : inputData) {
+ List> items = null;
- if (input.type.equals("text/csv")||input.type.equals("application/d4science")||input.type.equals("image/png"))
- item = destinationFolder.find(input.name);
+ if (input.type.equals("text/csv")||input.type.equals("application/d4science")||input.type.equals("image/png"))
+ items = destinationFolder.findByName(input.name).getContainers();
- if (item==null){
- String url = uploadData(input, destinationFolder,false);
- LOGGER.debug("Dataspace->returning property "+url);
- urls.add(url);
- }
- else{
- LOGGER.debug("Dataspace->Input item "+input.name+" is already available in the input folder");
- String url = item.getPublicLink(false);
- LOGGER.debug("Dataspace->returning WS url "+url);
- urls.add(url);
- }
+ if (items==null || items.isEmpty()){
+ String url = uploadData(input, destinationFolder,false);
+ LOGGER.debug("Dataspace->returning property "+url);
+ urls.add(url);
}
- } else
- LOGGER.debug("Dataspace->folder is not valid");
+ else{
+ FileContainer item = (FileContainer) items.get(0);
+ LOGGER.debug("Dataspace->Input item "+input.name+" is already available in the input folder");
+ String url = item.getPublicLink().toString();
+ LOGGER.debug("Dataspace->returning WS url "+url);
+ urls.add(url);
+ }
+ }
LOGGER.debug("Dataspace->finished uploading input data");
return urls;
}
- public List uploadOutputData(List outputData, WorkspaceFolder dataminerFolder) throws Exception {
+ public List uploadOutputData(List outputData,FolderContainer dataminerFolder) throws Exception {
LOGGER.debug("Dataspace->uploading output data; Number of data: " + outputData.size());
- WorkspaceItem folderItem = dataminerFolder.find(computedDataFolder);
+ FolderContainer destinationFolder = (FolderContainer)dataminerFolder.findByName(computedDataFolder).getContainers().get(0);
List urls = new ArrayList();
- if (folderItem != null && folderItem.isFolder()) {
- WorkspaceFolder destinationFolder = (WorkspaceFolder) folderItem;
- for (StoredData output : outputData) {
+ for (StoredData output : outputData) {
String url = uploadData(output, destinationFolder);
urls.add(url);
- }
- } else
- LOGGER.debug("Dataspace->folder is not valid");
+ }
LOGGER.debug("Dataspace->finished uploading output data");
return urls;
}
- public void uploadComputationData(ComputationData computation, List inputData, List outputData, WorkspaceFolder dataminerFolder, Workspace ws) throws Exception {
+ public void uploadComputationData(ComputationData computation, List inputData, List outputData, FolderContainer dataminerFolder) throws Exception {
LOGGER.debug("Dataspace->uploading computation data");
- WorkspaceItem folderItem = dataminerFolder.find(computationsFolder);
- if (folderItem != null && folderItem.isFolder()) {
- // create a folder in here
- LOGGER.debug("Dataspace->Creating computation folder " + computation.id);
- WorkspaceFolder cfolder = ((WorkspaceFolder) folderItem);
- String cfoldername = computation.id;
- WorkspaceFolder newcomputationFolder = null;
- try{
- newcomputationFolder = cfolder.createFolder(cfoldername, computation.operatorDescription);
- }catch(java.lang.ClassCastException e){
- LOGGER.debug("Dataspace->concurrency exception - deleting remaining item");
- deleteRunningComputationData();
- newcomputationFolder = cfolder.createFolder(cfoldername, computation.operatorDescription);
- }
- //String itemType = "COMPUTATION";
-
- // create IO folders
- LOGGER.debug("Dataspace->creating IO folders under " + cfoldername);
- newcomputationFolder.createFolder(importedDataFolder, importedDataFolder);
- newcomputationFolder.createFolder(computedDataFolder, computedDataFolder);
-
- // copy IO in those folders
- LOGGER.debug("Dataspace->*****uploading inputs in IO folder*****");
- List inputurls = uploadInputData(inputData, newcomputationFolder);
- LOGGER.debug("Dataspace->*****uploading outputs in IO folder*****");
- List outputurls = uploadOutputData(outputData, newcomputationFolder);
-
- LOGGER.debug("Dataspace->*****adding properties to the folder*****");
-
- LOGGER.debug("Dataspace->creating Folder Properties");
-
- // write a computation item for the computation
- LinkedHashMap properties = new LinkedHashMap();
- properties.put(computation_id, computation.id);
-
- properties.put(hostname, WPSConfig.getInstance().getWPSConfig().getServer().getHostname());
-
- properties.put(vre, computation.vre);
-
- properties.put(operator_name, config.getAgent());
-
- properties.put(operator_id, computation.operatorId);
-
- properties.put(operator_description, computation.operatorDescription);
-
- properties.put(start_date, computation.startDate);
-
- properties.put(end_date, computation.endDate);
-
- properties.put(status, getStatus(computation.status));
-
- properties.put(execution_platform, computation.infrastructure);
-
- int ninput = inputurls.size();
- int noutput = outputurls.size();
-
- LOGGER.debug("Dataspace->Adding input properties for " + ninput + " inputs");
- for (int i = 1; i <= ninput; i++) {
- StoredData input = inputData.get(i - 1);
- if (input.payload.contains("|")){
- String payload = input .payload;
- LOGGER.debug("Dataspace->Managing complex input "+input.name+" : "+payload);
- //delete the names that are not useful
-
- for (StoredData subinput:inputData){
- if (input.description.equals(subinput.description)){
- payload = payload.replace(subinput.name,subinput.payload);
- subinput.name=null;
- }
- }
-
- input.name = null;
-
- //delete last pipe character
- if (payload.endsWith("|"))
- payload = payload.substring(0,payload.length()-1);
- LOGGER.debug("Dataspace->Complex input after processing "+payload);
- properties.put("input" + i + "_" + input.description, payload);
- input.payload=payload;
-
- }
- }
-
- for (int i = 1; i <= ninput; i++) {
- StoredData input = inputData.get(i - 1);
- if (input.name!=null){
- properties.put("input" + i + "_" + input.name, inputurls.get(i - 1));
-
- }
- }
-
- LOGGER.debug("Dataspace->Adding output properties for " + noutput + " outputs");
- for (int i = 1; i <= noutput; i++) {
- properties.put("output" + i + "_" + outputData.get(i - 1).name, outputurls.get(i - 1));
-
- }
-
- LOGGER.debug("Dataspace->Properties of the folder: " + properties);
-
- LOGGER.debug("Dataspace->Saving properties to ProvO XML file " + noutput + " outputs");
-
- /*
- * XStream xstream = new XStream(); String xmlproperties = xstream.toXML(properties);
- */
- try {
- String xmlproperties = ProvOGenerator.toProvO(computation, inputData, outputData);
-
- File xmltosave = new File(config.getPersistencePath(), "prov_o_" + UUID.randomUUID());
- FileTools.saveString(xmltosave.getAbsolutePath(), xmlproperties, true, "UTF-8");
- InputStream sis = new FileInputStream(xmltosave);
- WorkspaceUtil.createExternalFile(newcomputationFolder, computation.id + ".xml", computation.operatorDescription, sis,null,"text/xml",xmltosave.length());
- sis.close();
- xmltosave.delete();
- } catch (Exception e) {
- LOGGER.error("Dataspace->Failed creating ProvO XML file ",e);
- }
- //List scopes = new ArrayList();
- //scopes.add(config.getGcubeScope());
- //ws.createGcubeItem(computation.id, computation.operatorDescription, scopes, computation.user, itemType, properties, newcomputationFolder.getId());
- newcomputationFolder.getProperties().addProperties(properties);
+ FolderContainer computationContainer = (FolderContainer) dataminerFolder.findByName(computationsFolder).getContainers().get(0);
+ // create a folder in here
+ LOGGER.debug("Dataspace->Creating computation folder " + computation.id);
+ String cfoldername = computation.id;
+ FolderContainer newcomputationFolder = null;
+ try{
+ newcomputationFolder = computationContainer.newFolder(cfoldername, computation.operatorDescription);
+ }catch(java.lang.ClassCastException e){
+ LOGGER.debug("Dataspace->concurrency exception - deleting remaining item");
+ deleteRunningComputationData();
+ newcomputationFolder = computationContainer.newFolder(cfoldername, computation.operatorDescription);
}
+ //String itemType = "COMPUTATION";
+
+ // create IO folders
+ LOGGER.debug("Dataspace->creating IO folders under " + cfoldername);
+ newcomputationFolder.newFolder(importedDataFolder, importedDataFolder);
+ newcomputationFolder.newFolder(computedDataFolder, computedDataFolder);
+
+ // copy IO in those folders
+ LOGGER.debug("Dataspace->*****uploading inputs in IO folder*****");
+ List inputurls = uploadInputData(inputData, newcomputationFolder);
+ LOGGER.debug("Dataspace->*****uploading outputs in IO folder*****");
+ List outputurls = uploadOutputData(outputData, newcomputationFolder);
+
+ LOGGER.debug("Dataspace->*****adding properties to the folder*****");
+
+ LOGGER.debug("Dataspace->creating Folder Properties");
+
+ // write a computation item for the computation
+ Map properties = new LinkedHashMap();
+ properties.put(computation_id, computation.id);
+
+ properties.put(hostname, WPSConfig.getInstance().getWPSConfig().getServer().getHostname());
+
+ properties.put(vre, computation.vre);
+
+ properties.put(operator_name, config.getAgent());
+
+ properties.put(operator_id, computation.operatorId);
+
+ properties.put(operator_description, computation.operatorDescription);
+
+ properties.put(start_date, computation.startDate);
+
+ properties.put(end_date, computation.endDate);
+
+ properties.put(status, getStatus(computation.status));
+
+ properties.put(execution_platform, computation.infrastructure);
+
+ int ninput = inputurls.size();
+ int noutput = outputurls.size();
+
+ LOGGER.debug("Dataspace->Adding input properties for " + ninput + " inputs");
+ for (int i = 1; i <= ninput; i++) {
+ StoredData input = inputData.get(i - 1);
+ if (input.payload.contains("|")){
+ String payload = input .payload;
+ LOGGER.debug("Dataspace->Managing complex input "+input.name+" : "+payload);
+ //delete the names that are not useful
+
+ for (StoredData subinput:inputData){
+ if (input.description.equals(subinput.description)){
+ payload = payload.replace(subinput.name,subinput.payload);
+ subinput.name=null;
+ }
+ }
+
+ input.name = null;
+
+ //delete last pipe character
+ if (payload.endsWith("|"))
+ payload = payload.substring(0,payload.length()-1);
+ LOGGER.debug("Dataspace->Complex input after processing "+payload);
+ properties.put("input" + i + "_" + input.description, payload);
+ input.payload=payload;
+
+ }
+ }
+
+ for (int i = 1; i <= ninput; i++) {
+ StoredData input = inputData.get(i - 1);
+ if (input.name!=null){
+ properties.put(String.format("input%d_%s",i, input.name), inputurls.get(i - 1));
+
+ }
+ }
+
+ LOGGER.debug("Dataspace->Adding output properties for " + noutput + " outputs");
+ for (int i = 1; i <= noutput; i++) {
+ properties.put(String.format("output%d_%s",i,outputData.get(i - 1).name), outputurls.get(i - 1));
+
+ }
+
+ LOGGER.debug("Dataspace->Properties of the folder: " + properties);
+
+ LOGGER.debug("Dataspace->Saving properties to ProvO XML file " + noutput + " outputs");
+
+ /*
+ * XStream xstream = new XStream(); String xmlproperties = xstream.toXML(properties);
+ */
+ try {
+ String xmlproperties = ProvOGenerator.toProvO(computation, inputData, outputData);
+
+ File xmltosave = new File(config.getPersistencePath(), "prov_o_" + UUID.randomUUID());
+ FileTools.saveString(xmltosave.getAbsolutePath(), xmlproperties, true, "UTF-8");
+ try(InputStream sis = new FileInputStream(xmltosave)){
+ newcomputationFolder.uploadFile(sis,computation.id + ".xml", computation.operatorDescription);
+ }
+ xmltosave.delete();
+ } catch (Exception e) {
+ LOGGER.error("Dataspace->Failed creating ProvO XML file ",e);
+ }
+ //List scopes = new ArrayList();
+ //scopes.add(config.getGcubeScope());
+ //ws.createGcubeItem(computation.id, computation.operatorDescription, scopes, computation.user, itemType, properties, newcomputationFolder.getId());
+ newcomputationFolder.setMetadata(new Metadata(properties));
+
LOGGER.debug("Dataspace->finished uploading computation data");
}
@@ -389,23 +392,14 @@ public class DataspaceManager implements Runnable {
public void writeProvenance(ComputationData computation, List inputData, List outputData) throws Exception {
LOGGER.debug("Dataspace->connecting to Workspace");
- HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
- HomeManager manager = factory.getHomeManager();
- LOGGER.debug("Dataspace->getting user");
- User user = manager.createUser(computation.user);
- Home home = manager.getHome(user);
- LOGGER.debug("Dataspace->getting root folder");
- Workspace ws = home.getWorkspace();
- WorkspaceFolder root = ws.getRoot();
LOGGER.debug("Dataspace->create folders network");
- createFoldersNetwork(ws, root);
- WorkspaceFolder dataminerItem = (WorkspaceFolder) root.find(dataminerFolder);
+ FolderContainer dataminerFolder = createFoldersNetwork();
LOGGER.debug("Dataspace->****uploading input files****");
- uploadInputData(inputData, dataminerItem);
+ uploadInputData(inputData, dataminerFolder);
LOGGER.debug("Dataspace->****uploading output files****");
- uploadOutputData(outputData, dataminerItem);
+ uploadOutputData(outputData, dataminerFolder);
LOGGER.debug("Dataspace->****uploading computation files****");
- uploadComputationData(computation, inputData, outputData, dataminerItem, ws);
+ uploadComputationData(computation, inputData, outputData, dataminerFolder);
LOGGER.debug("Dataspace->provenance management finished");
LOGGER.debug("Dataspace->deleting generated files");
AbstractEcologicalEngineMapper.deleteGeneratedFiles(generatedFiles);
@@ -418,27 +412,19 @@ public class DataspaceManager implements Runnable {
} catch (Exception e) {
LOGGER.debug("Dataspace->impossible to delete running computation : {} ",e.getMessage());
}
- // LOGGER.debug("Dataspace->updating computation status");
- // LOGGER.debug("Dataspace->connecting to Workspace");
- HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
- HomeManager manager = factory.getHomeManager();
- // LOGGER.debug("Dataspace->getting user");
- User user = manager.createUser(computation.user);
- Home home = manager.getHome(user);
- // LOGGER.debug("Dataspace->getting root folder");
- Workspace ws = home.getWorkspace();
- WorkspaceFolder root = ws.getRoot();
+ StorageHubClient shc = new StorageHubClient();
+
// LOGGER.debug("Dataspace->create folders network");
- createFoldersNetwork(ws, root);
- WorkspaceFolder dataminerFolderWS = (WorkspaceFolder) root.find(dataminerFolder);
- WorkspaceItem computationsFolderItem = dataminerFolderWS.find(computationsFolder);
+ FolderContainer folderContainer = createFoldersNetwork();
+
+ FolderContainer computationsContainer = (FolderContainer) folderContainer.findByName(computationsFolder).getContainers().get(0);
// LOGGER.debug("Dataspace->Creating computation item " + computation.id+" with status"+computation.status);
String itemType = "COMPUTATION";
-
-
-
+
+
+
// write a computation item for the computation
- LinkedHashMap properties = new LinkedHashMap();
+ Map properties = new LinkedHashMap();
properties.put(computation_id, computation.id);
properties.put(hostname, WPSConfig.getInstance().getWPSConfig().getServer().getHostname());
properties.put(vre, computation.vre);
@@ -454,7 +440,15 @@ public class DataspaceManager implements Runnable {
List scopes = new ArrayList();
scopes.add(config.getGcubeScope());
- ws.createGcubeItem(computation.id, computation.operatorDescription, scopes, computation.user, itemType, properties, computationsFolderItem.getId());
+ GCubeItem gcubeItem = new GCubeItem();
+ gcubeItem.setName(computation.id);
+ gcubeItem.setDescription(computation.operatorDescription);
+ gcubeItem.setScopes(scopes.toArray(new String[scopes.size()]));
+ gcubeItem.setItemType(itemType);
+ gcubeItem.setProperty(new Metadata(properties));
+
+ computationsContainer.newGcubeItem(gcubeItem);
+
LOGGER.debug("Dataspace->finished uploading computation data");
}
@@ -481,26 +475,20 @@ public class DataspaceManager implements Runnable {
LOGGER.debug("Dataspace->deleting computation item");
LOGGER.debug("Dataspace->connecting to Workspace");
- HomeManagerFactory factory = HomeLibrary.getHomeManagerFactory();
- HomeManager manager = factory.getHomeManager();
- LOGGER.debug("Dataspace->getting user");
- User user = manager.createUser(computation.user);
- Home home = manager.getHome(user);
- LOGGER.debug("Dataspace->getting root folder");
- Workspace ws = home.getWorkspace();
- WorkspaceFolder root = ws.getRoot();
- WorkspaceFolder dataminerFolderWS = (WorkspaceFolder) root.find(dataminerFolder);
- WorkspaceItem computationsFolderItem = dataminerFolderWS.find(computationsFolder);
+ StorageHubClient shc = new StorageHubClient();
+ FolderContainer dataminerContainer = (FolderContainer) shc.getWSRoot().findByName(dataminerFolder).getContainers().get(0);
+ FolderContainer computationContainer = (FolderContainer) dataminerContainer.findByName(computationsFolder).getContainers().get(0);
LOGGER.debug("Dataspace->removing computation data");
- WorkspaceFolder computationsFolderWs = ((WorkspaceFolder) computationsFolderItem);
- WorkspaceItem wi = computationsFolderWs.find(computation.id);
- if (wi!=null){
- LOGGER.debug("Dataspace->Found "+computation.id+" under "+computationsFolderWs.getName()+" - removing");
- wi.remove();
+
+ List> wi = computationContainer.findByName(computation.id).getContainers();
+ if (wi.isEmpty()){
+ for (ItemContainer extends Item> container : wi)
+ container.delete();
}
else
- LOGGER.debug("Dataspace->Warning Could not find "+computation.id+" under "+computationsFolderWs.getName());
+ LOGGER.debug("Dataspace->Warning Could not find "+computation.id+" under "+computationContainer.get().getName());
+ /*TODO: ASK GIANPAOLO
int maxtries = 3;
int i =1;
while (ws.exists(computation.id,computationsFolderWs.getId()) && ifinished removing computation data - success "+!ws.exists(computation.id,computationsFolderWs.getId()));
+ LOGGER.debug("Dataspace->finished removing computation data ");
}
public static String getExtension(String payload, String type){