();
+ if (operatorsClassification != null) {
+ for (OperatorCategory cat : operatorsClassification.getOperatorCategories()) {
+ categoryPanels.add(new OperatorCategoryPanel(handler, cat));
+ }
}
+ mapCategoriesPanels.put(currentClassificationName, categoryPanels);
}
- mapCategoriesPanels.put(currentClassificationName, categoryPanels);
- }
- v.clear();
- for (OperatorCategoryPanel panel : categoryPanels) {
- v.add(panel);
+ v.clear();
+ for (OperatorCategoryPanel panel : categoryPanels) {
+ v.add(panel);
- }
- view = View.CATEGORIES;
- if (operatorId != null && !operatorId.isEmpty()) {
- OperatorCategory operatorCategoryDefault = null;
- Operator operatorDefault = null;
- for (Operator op : operators) {
- if (op.getId().compareTo(operatorId) == 0) {
- operatorDefault = op;
- operatorCategoryDefault = op.getCategory();
- break;
- }
}
- if (operatorCategoryDefault != null) {
- for (OperatorCategoryPanel opCategoryPanel : categoryPanels) {
- if (opCategoryPanel.getCategory().compareTo(operatorCategoryDefault) == 0) {
- opCategoryPanel.setOperatorDefault(operatorDefault);
+ view = View.CATEGORIES;
+ if (operatorId != null && !operatorId.isEmpty()) {
+ OperatorCategory operatorCategoryDefault = null;
+ Operator operatorDefault = null;
+ for (Operator op : operators) {
+ if (op.getId().compareTo(operatorId) == 0) {
+ operatorDefault = op;
+ operatorCategoryDefault = op.getCategory();
break;
}
-
}
+ if (operatorCategoryDefault != null) {
+ for (OperatorCategoryPanel opCategoryPanel : categoryPanels) {
+ if (opCategoryPanel.getCategory().compareTo(operatorCategoryDefault) == 0) {
+ opCategoryPanel.setOperatorDefault(operatorDefault);
+ break;
+ }
+
+ }
+ }
+
}
+ forceLayout();
}
- forceLayout();
}
-
}
+ } catch (Throwable e) {
+ Log.error("Error in OperatorsPanel: " + e.getLocalizedMessage(), e);
+ e.printStackTrace();
}
}
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/parametersfield/FileFld.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/parametersfield/FileFld.java
index 9772511..1994dc2 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/parametersfield/FileFld.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/parametersfield/FileFld.java
@@ -19,12 +19,16 @@ import org.gcube.portlets.widgets.dataminermanagerwidget.client.tr.TabularResour
import org.gcube.portlets.widgets.dataminermanagerwidget.client.util.UtilsGXT3;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.SessionExpiredServiceException;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.workspace.ItemDescription;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.event.SelectVariableEvent;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.event.SelectVariableEvent.SelectVariableEventHandler;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.widgets.NetCDFPreviewDialog;
import org.gcube.portlets.widgets.wsexplorer.client.notification.WorkspaceExplorerSelectNotification.WorskpaceExplorerSelectNotificationListener;
import org.gcube.portlets.widgets.wsexplorer.client.select.WorkspaceExplorerSelectDialog;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
@@ -61,6 +65,7 @@ public class FileFld extends AbstractFld {
private TextButton selectTRButton2;
private TextButton cancelButton;
private TextButton downloadButton;
+ private TextButton netcdfButton;
private ItemDescription selectedFileItem = null;
private TabularResourceData tabularResourceData;
@@ -120,14 +125,20 @@ public class FileFld extends AbstractFld {
HtmlLayoutContainer descr;
- if (fileParameter.getDescription() == null) {
+ if (fileParameter.getDescription() == null || fileParameter.getDescription().isEmpty()) {
descr = new HtmlLayoutContainer("");
descr.addStyleName("workflow-fieldDescription");
} else {
- descr = new HtmlLayoutContainer(
- "" + fileParameter.getDescription() + "
");
- descr.addStyleName("workflow-fieldDescription");
+ if (fileParameter.isNetcdf()) {
+ String des = fileParameter.getDescription().replaceFirst("\\[NETCDF\\]", "");
+ descr = new HtmlLayoutContainer("" + des + "
");
+ descr.addStyleName("workflow-fieldDescription");
+ } else {
+ descr = new HtmlLayoutContainer(
+ "" + fileParameter.getDescription() + "
");
+ descr.addStyleName("workflow-fieldDescription");
+ }
}
horiz.add(tabContainer, new BoxLayoutData(new Margins()));
@@ -252,6 +263,16 @@ public class FileFld extends AbstractFld {
});
downloadButton.setToolTip("Download File");
+ netcdfButton = new TextButton("");
+ netcdfButton.setIcon(DataMinerManagerPanel.resources.netcdf());
+ netcdfButton.addSelectHandler(new SelectEvent.SelectHandler() {
+
+ @Override
+ public void onSelect(SelectEvent event) {
+ showNetCDFFile();
+ }
+ });
+
}
private void useTabularResource() {
@@ -261,7 +282,7 @@ public class FileFld extends AbstractFld {
selectedFileItem.setPublicLink(tabularResourceData.getTabularResourceId());
showFieldWithTRSelection();
}
-
+
private void retrieveFileInformation(final Item item) {
Log.debug("Retrieved: " + item);
final ItemDescription itemDescription = new ItemDescription(item.getId(), item.getName(), item.getOwner(),
@@ -323,6 +344,27 @@ public class FileFld extends AbstractFld {
}
+ private void showNetCDFFile() {
+ if (selectedFileItem != null) {
+ GWT.log("NetcdfBasicWidgetsManager");
+
+ // Example
+ SelectVariableEventHandler handler = new SelectVariableEventHandler() {
+
+ @Override
+ public void onResponse(SelectVariableEvent event) {
+ GWT.log("SelectVariable Response: " + event);
+
+ }
+ };
+
+ NetCDFPreviewDialog netcdfDialog = new NetCDFPreviewDialog(selectedFileItem.getPublicLink());
+ netcdfDialog.addSelectVariableEventHandler(handler);
+ netcdfDialog.setZIndex(XDOM.getTopZIndex());
+
+ }
+ }
+
private void showNoSelectionField() {
vp.clear();
vp.add(selectTRButton);
@@ -347,6 +389,9 @@ public class FileFld extends AbstractFld {
h.add(selectTRButton2, new BoxLayoutData(new Margins()));
h.add(selectButton2, new BoxLayoutData(new Margins()));
h.add(downloadButton, new BoxLayoutData(new Margins()));
+ if (fileParameter.isNetcdf()) {
+ h.add(netcdfButton, new BoxLayoutData(new Margins()));
+ }
h.add(cancelButton, new BoxLayoutData(new Margins()));
vp.clear();
vp.add(h);
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/resources/Resources.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/resources/Resources.java
index 86a0107..3635a90 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/resources/Resources.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/resources/Resources.java
@@ -89,6 +89,9 @@ public interface Resources extends ClientBundle {
@Source("download.png")
ImageResource download();
+
+ @Source("show.png")
+ ImageResource netcdf();
@Source("cancel_circle.png")
ImageResource cancelCircle();
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/widgets/FileViewer.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/widgets/FileViewer.java
index f2e37a3..c7c6971 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/widgets/FileViewer.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/widgets/FileViewer.java
@@ -3,8 +3,13 @@ package org.gcube.portlets.widgets.dataminermanagerwidget.client.widgets;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.data.output.FileResource;
import org.gcube.portlets.widgets.dataminermanagerwidget.client.DataMinerManagerPanel;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.event.SelectVariableEvent;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.event.SelectVariableEvent.SelectVariableEventHandler;
+import org.gcube.portlets.widgets.netcdfbasicwidgets.client.widgets.NetCDFPreviewDialog;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
+import com.sencha.gxt.core.client.dom.XDOM;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.button.TextButton;
import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer;
@@ -59,8 +64,43 @@ public class FileViewer extends SimpleContainer {
}
});
+ TextButton netcdfButton = new TextButton("");
+ netcdfButton.setIcon(DataMinerManagerPanel.resources.netcdf());
+ netcdfButton.addSelectHandler(new SelectEvent.SelectHandler() {
+
+ @Override
+ public void onSelect(SelectEvent event) {
+ showNetCDFFile();
+ }
+ });
+
lc.add(downloadBtn, new VerticalLayoutData(-1, -1, new Margins(0)));
+ if (fileResource.isNetcdf()) {
+ lc.add(netcdfButton, new VerticalLayoutData(-1, -1, new Margins(0)));
+ }
add(lc);
}
+ private void showNetCDFFile() {
+ if (fileResource != null && fileResource.getUrl() != null && !fileResource.getUrl().isEmpty()
+ && fileResource.isNetcdf()) {
+ GWT.log("NetcdfBasicWidgetsManager");
+
+ // Example
+ SelectVariableEventHandler handler = new SelectVariableEventHandler() {
+
+ @Override
+ public void onResponse(SelectVariableEvent event) {
+ GWT.log("SelectVariable Response: " + event);
+
+ }
+ };
+
+ NetCDFPreviewDialog netcdfDialog = new NetCDFPreviewDialog(fileResource.getUrl());
+ netcdfDialog.addSelectVariableEventHandler(handler);
+ netcdfDialog.setZIndex(XDOM.getTopZIndex());
+
+ }
+ }
+
}
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
index aee1212..c281524 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
@@ -21,6 +21,11 @@
+
+
+
+
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DataMinerManagerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DataMinerManagerServiceImpl.java
index 5bee3aa..6cd08b5 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DataMinerManagerServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DataMinerManagerServiceImpl.java
@@ -17,8 +17,8 @@ import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.ComputationStatus;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
+import org.gcube.portlets.widgets.dataminermanagerwidget.server.storage.StorageUtil;
import org.gcube.portlets.widgets.dataminermanagerwidget.server.util.DataMinerWorkAreaManager;
-import org.gcube.portlets.widgets.dataminermanagerwidget.server.util.StorageUtil;
import org.gcube.portlets.widgets.dataminermanagerwidget.server.util.TableReader;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.ServiceException;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.session.UserInfo;
@@ -167,7 +167,8 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements
HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
- Map properties = StorageUtil.getProperties(
+ StorageUtil storageUtil = new StorageUtil();
+ Map properties = storageUtil.getProperties(
serviceCredentials.getUserName(), itemDescription.getId());
logger.debug("Properties: " + properties);
@@ -220,7 +221,8 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
logger.debug("DeleteItem(): " + itemDescription);
- StorageUtil.deleteItem(serviceCredentials.getUserName(),
+ StorageUtil storageUtil = new StorageUtil();
+ storageUtil.deleteItem(serviceCredentials.getUserName(),
itemDescription.getId());
return;
@@ -284,7 +286,8 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
logger.debug("GetPublicLink(): " + itemDescription);
- String link = StorageUtil.getPublicLink(
+ StorageUtil storageUtil = new StorageUtil();
+ String link = storageUtil.getPublicLink(
serviceCredentials.getUserName(), itemDescription.getId());
return link;
@@ -355,7 +358,8 @@ public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements
ServiceCredentials serviceCredentials = SessionUtil
.getServiceCredentials(httpRequest);
logger.debug("OutputDataByComputationItemt(): " + itemDescription);
- Map properties = StorageUtil.getProperties(
+ StorageUtil storageUtil = new StorageUtil();
+ Map properties = storageUtil.getProperties(
serviceCredentials.getUserName(), itemDescription.getId());
logger.debug("Properties: " + properties);
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DownloadFolderServlet.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DownloadFolderServlet.java
index 1065d90..d558729 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DownloadFolderServlet.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/DownloadFolderServlet.java
@@ -3,7 +3,11 @@ package org.gcube.portlets.widgets.dataminermanagerwidget.server;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -13,7 +17,7 @@ import javax.servlet.http.HttpSession;
import org.apache.commons.io.IOUtils;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
-import org.gcube.portlets.widgets.dataminermanagerwidget.server.util.StorageUtil;
+import org.gcube.portlets.widgets.dataminermanagerwidget.server.storage.StorageUtil;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -106,15 +110,21 @@ public class DownloadFolderServlet extends HttpServlet {
.getParameter(Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER);
logger.debug("Request: [itemId=" + itemId + ", folderName="
+ folderName + "]");
-
- File tmpZip = StorageUtil.zipFolder(
+ StorageUtil storageUtil=new StorageUtil();
+ InputStream is = storageUtil.zipFolder(
serviceCredentials.getUserName(), itemId);
+ Path tempFile = Files.createTempFile("dataMinerWidgetDownload", ".zip");
+ Files.copy(is, tempFile, StandardCopyOption.REPLACE_EXISTING);
+ File tmpZip= tempFile.toFile();
+
response.setHeader("Content-Disposition", "attachment; filename=\""
+ folderName + ".zip\"");
response.setContentType("application/zip");
response.setHeader("Content-Length",
String.valueOf(tmpZip.length()));
+
+
OutputStream out = response.getOutputStream();
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
@@ -122,7 +132,7 @@ public class DownloadFolderServlet extends HttpServlet {
out.flush();
out.close();
fileTmpZip.close();
- tmpZip.delete();
+ Files.delete(tempFile);
return;
} catch (Throwable e) {
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/storage/StorageUtil.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/storage/StorageUtil.java
new file mode 100644
index 0000000..ceb6bd1
--- /dev/null
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/storage/StorageUtil.java
@@ -0,0 +1,229 @@
+package org.gcube.portlets.widgets.dataminermanagerwidget.server.storage;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.gcube.common.storagehub.client.StreamDescriptor;
+import org.gcube.common.storagehub.client.dsl.FileContainer;
+import org.gcube.common.storagehub.client.dsl.ItemContainer;
+import org.gcube.common.storagehub.client.dsl.ListResolver;
+import org.gcube.common.storagehub.client.dsl.OpenResolver;
+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.Item;
+import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.ServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author Giancarlo Panichi
+ *
+ *
+ */
+public class StorageUtil {
+
+ private static Logger logger = LoggerFactory.getLogger(StorageUtil.class);
+
+ /**
+ *
+ * @param user
+ * user
+ * @param itemId
+ * item id
+ * @return map properties
+ * @throws ServiceException
+ * service exception
+ */
+ public Map getProperties(String user, String itemId) throws ServiceException {
+ try {
+ StorageHubClient shc = new StorageHubClient();
+ Item item = shc.open(itemId).asItem().get();
+ Metadata metadata = item.getPropertyMap();
+ Map itemMap = new HashMap();
+ Map metadataMap = metadata.getValues();
+ for (String key : metadataMap.keySet()) {
+ String s = String.valueOf(metadataMap.get(key));
+ itemMap.put(key, s);
+ }
+ return itemMap;
+
+ } catch (Throwable e) {
+ logger.error("Error retrieving properties: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage(), e);
+ }
+
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param itemId
+ * item id
+ * @return input stream
+ * @throws ServiceException
+ * service exception
+ */
+ public InputStream getInputStreamForItemOnWorkspace(String user, String itemId) throws ServiceException {
+ try {
+ logger.debug("getInputStreamForItemOnWorkspace: [user=" + user + ", itemId=" + itemId + "]");
+ StorageHubClient shc = new StorageHubClient();
+ FileContainer fileContainer = shc.open(itemId).asFile();
+ StreamDescriptor streamDescriptor = fileContainer.download();
+ return streamDescriptor.getStream();
+
+ } catch (Throwable e) {
+ logger.error("Error retrieving InputStream for File: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage(), e);
+ }
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param itemId
+ * item id
+ * @return public link
+ * @throws ServiceException
+ * service exception
+ */
+ public String getPublicLink(String user, String itemId) throws ServiceException {
+ try {
+ logger.debug("getPublicLink: [user=" + user + ", itemId=" + itemId + "]");
+ StorageHubClient shc = new StorageHubClient();
+ URL url = shc.open(itemId).asFile().getPublicLink();
+ return url.toString();
+
+ } catch (Throwable e) {
+ logger.error("Error retrieving public link: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage(), e);
+ }
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param folderId
+ * folder id
+ * @return input stream
+ * @throws ServiceException
+ * service exception
+ */
+ public InputStream zipFolder(String user, String folderId) throws ServiceException {
+ try {
+ logger.debug("zipFolder: [user=" + user + ", folderId=" + folderId + "]");
+ StorageHubClient shc = new StorageHubClient();
+ OpenResolver openResolver = shc.open(folderId);
+
+ ItemContainer- itemContainer = openResolver.asItem();
+ Item item = itemContainer.get();
+ if (item instanceof FolderItem) {
+ StreamDescriptor streamDescriptor = openResolver.asFolder().download();
+ InputStream is = streamDescriptor.getStream();
+ return is;
+ } else {
+ throw new ServiceException("Is not a valid folder!");
+ }
+
+ } catch (Throwable e) {
+ logger.error("Error in zip Folder: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage(), e);
+ }
+
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param itemName
+ * item name
+ * @return workspace item
+ * @throws ServiceException
+ * service exception
+ */
+ public Item getItemInRootFolderOnWorkspace(String user, String itemName) throws ServiceException {
+ try {
+ logger.debug("GetItemInRootFolder: [user=" + user + ", itemName=" + itemName + "]");
+ StorageHubClient shc = new StorageHubClient();
+ ListResolver listResolver = shc.getWSRoot().findByName(itemName);
+ List extends Item> items = listResolver.getItems();
+
+ if (items != null && !items.isEmpty()) {
+ return items.get(0);
+ } else {
+ return null;
+ }
+
+ } catch (Throwable e) {
+ logger.error("Error in get Item in RootFolder: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage());
+ }
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param folderId
+ * folder id
+ * @param itemName
+ * item name
+ * @return workspace item
+ * @throws ServiceException
+ * service exception
+ */
+ public Item getItemInFolderOnWorkspace(String user, String folderId, String itemName) throws ServiceException {
+ try {
+ logger.debug("GetItemInFolder: [user=" + user + ", folderId=" + folderId + ", itemName=" + itemName + "]");
+ StorageHubClient shc = new StorageHubClient();
+ ListResolver listResolver = shc.open(folderId).asFolder().findByName(itemName);
+ List extends Item> items = listResolver.getItems();
+
+ if (items != null && !items.isEmpty()) {
+ return items.get(0);
+ } else {
+ return null;
+ }
+
+ } catch (Throwable e) {
+ logger.error("Error in get Item in Folder: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage());
+ }
+ }
+
+ /**
+ *
+ * @param user
+ * user
+ * @param itemId
+ * item id
+ * @throws ServiceException
+ * service exception
+ */
+ public void deleteItem(String user, String itemId) throws ServiceException {
+ try {
+ logger.debug("User: " + user + ", ItemId:" + itemId);
+ StorageHubClient shc = new StorageHubClient();
+ OpenResolver openResolver = shc.open(itemId);
+
+ ItemContainer
- itemContainer = openResolver.asItem();
+ itemContainer.delete();
+
+ return;
+ } catch (Throwable e) {
+ logger.error("Error deleting Item: " + e.getLocalizedMessage(), e);
+ throw new ServiceException(e.getLocalizedMessage());
+
+ }
+
+ }
+
+}
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/DataMinerWorkAreaManager.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/DataMinerWorkAreaManager.java
index d63acd6..3744f4d 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/DataMinerWorkAreaManager.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/DataMinerWorkAreaManager.java
@@ -1,8 +1,8 @@
package org.gcube.portlets.widgets.dataminermanagerwidget.server.util;
-
-import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
+import org.gcube.common.storagehub.model.items.Item;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
+import org.gcube.portlets.widgets.dataminermanagerwidget.server.storage.StorageUtil;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.ServiceException;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.workspace.Computations;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.workspace.DataMinerWorkArea;
@@ -24,8 +24,7 @@ public class DataMinerWorkAreaManager {
private static final String COMPUTED_DATA_FOLDER = "Output Data Sets";
private static final String COMPUTATIONS_FOLDER = "Computations";
- public static final Logger logger = LoggerFactory
- .getLogger(DataMinerWorkAreaManager.class);
+ public static final Logger logger = LoggerFactory.getLogger(DataMinerWorkAreaManager.class);
private ServiceCredentials serviceCredentials;
@@ -35,10 +34,10 @@ public class DataMinerWorkAreaManager {
public DataMinerWorkArea getDataMinerWorkArea() throws ServiceException {
DataMinerWorkArea dataMinerWorkArea = null;
+ StorageUtil storageUtil = new StorageUtil();
try {
- WorkspaceItem wiDataMinerFolder = StorageUtil
- .getItemInRootFolderOnWorkspace(serviceCredentials.getUserName(),
- DATA_MINER_FOLDER);
+ Item wiDataMinerFolder = storageUtil.getItemInRootFolderOnWorkspace(serviceCredentials.getUserName(),
+ DATA_MINER_FOLDER);
if (wiDataMinerFolder == null) {
dataMinerWorkArea = new DataMinerWorkArea(null);
@@ -46,13 +45,9 @@ public class DataMinerWorkAreaManager {
} else {
ItemDescription dataMinerWorkAreaFolder = null;
- dataMinerWorkAreaFolder = new ItemDescription(
- wiDataMinerFolder.getId(), wiDataMinerFolder.getName(),
- wiDataMinerFolder.getOwner().getPortalLogin(),
- wiDataMinerFolder.getPath(), wiDataMinerFolder
- .getType().name());
- dataMinerWorkArea = new DataMinerWorkArea(
- dataMinerWorkAreaFolder);
+ dataMinerWorkAreaFolder = new ItemDescription(wiDataMinerFolder.getId(), wiDataMinerFolder.getName(),
+ wiDataMinerFolder.getOwner(), wiDataMinerFolder.getPath(), null);
+ dataMinerWorkArea = new DataMinerWorkArea(dataMinerWorkAreaFolder);
}
@@ -65,18 +60,12 @@ public class DataMinerWorkAreaManager {
InputDataSets inputDataSets = null;
try {
- WorkspaceItem wiImportedDataFolder = StorageUtil
- .getItemInFolderOnWorkspace(serviceCredentials.getUserName(),
- dataMinerWorkArea.getDataMinerWorkAreaFolder()
- .getId(), IMPORTED_DATA_FOLDER);
+ Item wiImportedDataFolder = storageUtil.getItemInFolderOnWorkspace(serviceCredentials.getUserName(),
+ dataMinerWorkArea.getDataMinerWorkAreaFolder().getId(), IMPORTED_DATA_FOLDER);
ItemDescription importedDataFolder = null;
- importedDataFolder = new ItemDescription(
- wiImportedDataFolder.getId(),
- wiImportedDataFolder.getName(), wiImportedDataFolder
- .getOwner().getPortalLogin(),
- wiImportedDataFolder.getPath(), wiImportedDataFolder
- .getType().name());
+ importedDataFolder = new ItemDescription(wiImportedDataFolder.getId(), wiImportedDataFolder.getName(),
+ wiImportedDataFolder.getOwner(), wiImportedDataFolder.getPath(), null);
inputDataSets = new InputDataSets(importedDataFolder);
@@ -87,18 +76,12 @@ public class DataMinerWorkAreaManager {
OutputDataSets outputDataSets = null;
try {
- WorkspaceItem wiComputedDataFolder = StorageUtil
- .getItemInFolderOnWorkspace(serviceCredentials.getUserName(),
- dataMinerWorkArea.getDataMinerWorkAreaFolder()
- .getId(), COMPUTED_DATA_FOLDER);
+ Item wiComputedDataFolder = storageUtil.getItemInFolderOnWorkspace(serviceCredentials.getUserName(),
+ dataMinerWorkArea.getDataMinerWorkAreaFolder().getId(), COMPUTED_DATA_FOLDER);
ItemDescription computedDataFolder = null;
- computedDataFolder = new ItemDescription(
- wiComputedDataFolder.getId(),
- wiComputedDataFolder.getName(), wiComputedDataFolder
- .getOwner().getPortalLogin(),
- wiComputedDataFolder.getPath(), wiComputedDataFolder
- .getType().name());
+ computedDataFolder = new ItemDescription(wiComputedDataFolder.getId(), wiComputedDataFolder.getName(),
+ wiComputedDataFolder.getOwner(), wiComputedDataFolder.getPath(), null);
outputDataSets = new OutputDataSets(computedDataFolder);
} catch (Throwable e) {
@@ -108,18 +91,14 @@ public class DataMinerWorkAreaManager {
Computations computations = null;
try {
- WorkspaceItem wiComputationsDataFolder = StorageUtil
- .getItemInFolderOnWorkspace(serviceCredentials.getUserName(),
- dataMinerWorkArea.getDataMinerWorkAreaFolder()
- .getId(), COMPUTATIONS_FOLDER);
+ Item wiComputationsDataFolder = storageUtil.getItemInFolderOnWorkspace(
+ serviceCredentials.getUserName(), dataMinerWorkArea.getDataMinerWorkAreaFolder().getId(),
+ COMPUTATIONS_FOLDER);
ItemDescription computationsDataFolder = null;
- computationsDataFolder = new ItemDescription(
- wiComputationsDataFolder.getId(),
- wiComputationsDataFolder.getName(),
- wiComputationsDataFolder.getOwner().getPortalLogin(),
- wiComputationsDataFolder.getPath(),
- wiComputationsDataFolder.getType().name());
+ computationsDataFolder = new ItemDescription(wiComputationsDataFolder.getId(),
+ wiComputationsDataFolder.getName(), wiComputationsDataFolder.getOwner(),
+ wiComputationsDataFolder.getPath(), null);
computations = new Computations(computationsDataFolder);
} catch (Throwable e) {
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/StorageUtil.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/StorageUtil.java
deleted file mode 100644
index ab2fa3b..0000000
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/StorageUtil.java
+++ /dev/null
@@ -1,288 +0,0 @@
-package org.gcube.portlets.widgets.dataminermanagerwidget.server.util;
-
-import java.io.File;
-import java.io.InputStream;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Map;
-
-import org.gcube.common.homelibrary.home.HomeLibrary;
-import org.gcube.common.homelibrary.home.workspace.Properties;
-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.util.zip.ZipUtil;
-import org.gcube.contentmanagement.blobstorage.service.IClient;
-import org.gcube.contentmanager.storageclient.wrapper.AccessType;
-import org.gcube.contentmanager.storageclient.wrapper.MemoryType;
-import org.gcube.contentmanager.storageclient.wrapper.StorageClient;
-import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.ServiceException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *
- * @author Giancarlo Panichi
- *
- *
- */
-public class StorageUtil {
-
- private static Logger logger = LoggerFactory.getLogger(StorageUtil.class);
-
- /**
- *
- * @param user
- * user
- * @param itemId
- * item id
- * @return map
- * @throws ServiceException
- * service exception
- */
- public static Map getProperties(String user, String itemId) throws ServiceException {
- try {
- Workspace ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem workSpaceItem = ws.getItem(itemId);
- Properties properties = workSpaceItem.getProperties();
-
- return properties.getProperties();
-
- } catch (Throwable e) {
- logger.error(e.getLocalizedMessage());
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
- }
-
- }
-
- /**
- *
- * @param user
- * User
- * @param itemId
- * Item id
- * @return InputStream
- * @throws ServiceException
- * service exception
- */
- public static InputStream getInputStreamForItemOnWorkspace(String user, String itemId) throws ServiceException {
- Workspace ws;
- try {
- ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem workSpaceItem = ws.getItem(itemId);
- if (workSpaceItem.isFolder()) {
- throw new ServiceException("Folder is not valid!");
- }
-
- return getInputStream(user, workSpaceItem);
-
- } catch (Throwable e) {
- logger.error(e.getLocalizedMessage());
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
- }
- }
-
- /**
- *
- * @param user
- * User
- * @param wi
- * WorkspaceItem
- * @return InputStream
- * @throws ServiceException
- * service exception
- */
- private static InputStream getInputStream(String user, WorkspaceItem wi) throws ServiceException {
- InputStream is = null;
- try {
-
- org.gcube.common.homelibrary.home.workspace.folder.items.File gcubeItem = ((org.gcube.common.homelibrary.home.workspace.folder.items.File) wi);
- is = gcubeItem.getData();
- return is;
-
- } catch (Throwable e) {
- logger.error("Error retrieving InputStream from storage", e);
- e.printStackTrace();
- throw new ServiceException("Error retrieving file from storage: " + e.getLocalizedMessage(), e);
- }
-
- }
-
- /**
- *
- * @param user
- * User
- * @param itemId
- * Item id
- * @return link
- * @throws ServiceException
- * service exception
- */
- public static String getPublicLink(String user, String itemId) throws ServiceException {
- Workspace ws;
- try {
- ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem workSpaceItem = ws.getItem(itemId);
- if (workSpaceItem.isFolder()) {
- throw new ServiceException("Attention this is a folder!");
- }
-
- return workSpaceItem.getPublicLink(false);
-
- } catch (Throwable e) {
- logger.error("Error retrieving public link: " + e.getLocalizedMessage());
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
-
- }
- }
-
- /**
- *
- * @param user
- * user
- * @param folderId
- * folder id
- * @return File
- * @throws ServiceException
- * service exception
- */
- public static File zipFolder(String user, String folderId) throws ServiceException {
- Workspace ws;
- try {
- logger.debug("zipFolder: [user=" + user + ", folderId=" + folderId + "]");
- ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem workSpaceItem = ws.getItem(folderId);
- if (!workSpaceItem.isFolder()) {
- throw new ServiceException("Item is not valid folder!");
- }
-
- WorkspaceFolder folder = (WorkspaceFolder) workSpaceItem;
-
- File fileZip = ZipUtil.zipFolder(folder);
-
- return fileZip;
-
- } catch (Throwable e) {
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
- }
-
- }
-
- /**
- *
- * @param user
- * user
- * @param itemName
- * item name
- * @return workspace item
- * @throws ServiceException
- * service exception
- */
- public static WorkspaceItem getItemInRootFolderOnWorkspace(String user, String itemName) throws ServiceException {
- Workspace ws;
- try {
- ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem item = ws.find(itemName, ws.getRoot().getId());
-
- return item;
-
- } catch (Throwable e) {
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
- }
- }
-
- /**
- *
- * @param user
- * user
- * @param folderId
- * folder id
- * @param itemName
- * item name
- * @return workspace item
- * @throws ServiceException
- * service exception
- */
- public static WorkspaceItem getItemInFolderOnWorkspace(String user, String folderId, String itemName)
- throws ServiceException {
- Workspace ws;
- try {
- ws = HomeLibrary.getUserWorkspace(user);
-
- WorkspaceItem item = ws.find(itemName, folderId);
-
- return item;
-
- } catch (Throwable e) {
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
- }
- }
-
- /**
- *
- * @param user
- * user
- * @param itemId
- * item id
- * @throws ServiceException
- * service exception
- */
- public static void deleteItem(String user, String itemId) throws ServiceException {
- Workspace ws;
- try {
- logger.debug("User: " + user + ", ItemId:" + itemId);
- ws = HomeLibrary.getUserWorkspace(user);
-
- ws.removeItems(itemId);
-
- return;
- } catch (Throwable e) {
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage());
-
- }
-
- }
-
- /**
- *
- * @param is
- * input stream
- * @return public link
- * @throws ServiceException
- * service exception
- */
- public static String saveOnStorageInTemporalFile(InputStream is) throws ServiceException {
- try {
- logger.debug("SaveOnStorageInTemporalFile()");
- SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
- Double v = Math.random() * 10000;
- String tempFile = "P_" + sdf.format(new Date()) + "_" + v.intValue() + ".xml";
- String remotePath = "/DataMiner/AlgoritmsParameters/" + tempFile;
- IClient client = new StorageClient("DataAnalysis", "DataMiner", "DataMiner", AccessType.PUBLIC,
- MemoryType.VOLATILE).getClient();
- String storageId = client.put(true).LFile(is).RFile(remotePath);
- logger.debug("Storage id: " + storageId);
- String publicLink = client.getHttpUrl().RFile(remotePath);
- logger.debug("Storage public link: " + publicLink);
- return publicLink;
-
- } catch (Throwable e) {
- logger.error(e.getLocalizedMessage());
- e.printStackTrace();
- throw new ServiceException(e.getLocalizedMessage(), e);
- }
- }
-
-}
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/TableReader.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/TableReader.java
index 9f75eda..8481a4d 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/TableReader.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/server/util/TableReader.java
@@ -12,6 +12,7 @@ import net.sf.csv4j.CSVReader;
import org.gcube.data.analysis.dataminermanagercl.server.util.ServiceCredentials;
import org.gcube.data.analysis.dataminermanagercl.shared.data.ColumnItem;
import org.gcube.data.analysis.dataminermanagercl.shared.data.TableItemSimple;
+import org.gcube.portlets.widgets.dataminermanagerwidget.server.storage.StorageUtil;
import org.gcube.portlets.widgets.dataminermanagerwidget.shared.exception.ServiceException;
import org.gcube.portlets.widgets.wsexplorer.shared.Item;
import org.slf4j.Logger;
@@ -35,15 +36,16 @@ public class TableReader {
}
public TableItemSimple getTableItemSimple() throws ServiceException {
-
- InputStream is = StorageUtil.getInputStreamForItemOnWorkspace(
+ StorageUtil storageUtil = new StorageUtil();
+
+ InputStream is = storageUtil.getInputStreamForItemOnWorkspace(
serviceCredentials.getUserName(), item.getId());
Reader fileReader = new InputStreamReader(is);
CSVReader csvReader = new CSVReader(fileReader);
List firstLine = getFirstLine(csvReader, false);
ArrayList columns = new ArrayList(firstLine);
- String publicLink=StorageUtil.getPublicLink(serviceCredentials.getUserName(), item.getId());
+ String publicLink=storageUtil.getPublicLink(serviceCredentials.getUserName(), item.getId());
TableItemSimple tableItemSimple=new TableItemSimple(publicLink,item.getName(), item.getType().name());
ArrayList columnItemList=new ArrayList();
diff --git a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/shared/Constants.java b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/shared/Constants.java
index b5fbf84..c696a75 100644
--- a/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/shared/Constants.java
+++ b/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/shared/Constants.java
@@ -18,7 +18,7 @@ public class Constants {
public static final String DEFAULT_USER = "giancarlo.panichi";
public final static String DEFAULT_SCOPE = "/gcube/devNext/NextNext";
- public final static String DEFAULT_TOKEN = "ae1208f0-210d-47c9-9b24-d3f2dfcce05f-98187548";
+ public final static String DEFAULT_TOKEN = "";
public static final String DEFAULT_ROLE = "OrganizationMember";
// public final static String DEFAULT_SCOPE = "/gcube/devNext";
diff --git a/src/main/resources/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml b/src/main/resources/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
index 8a2df69..45430ea 100644
--- a/src/main/resources/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
+++ b/src/main/resources/org/gcube/portlets/widgets/dataminermanagerwidget/dataminermanagerwidget.gwt.xml
@@ -20,7 +20,12 @@
-
+
+
+
+
+
diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml
index 62cf720..4f79822 100644
--- a/src/main/webapp/WEB-INF/web.xml
+++ b/src/main/webapp/WEB-INF/web.xml
@@ -28,6 +28,11 @@
workspaceUploadServletStream
org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServletStream
+
+ NetCDFBasicWidgetService
+ org.gcube.portlets.widgets.netcdfbasicwidgets.server.NetCDFBasicWidgetServiceImpl
+
+
@@ -54,6 +59,11 @@
workspaceUploadServletStream
/dataminermanagerwidget/workspaceUploadServletStream
+
+ NetCDFBasicWidgetService
+ /dataminermanagerwidget/netcdfservice
+
+
DataMinerManagerWidget.html