From 6193c8c1c884b27bafe631c503449ffdcbe2449d Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Mon, 23 May 2016 10:14:00 +0000 Subject: [PATCH] refs 2521: Explore the possibility to port the StatMan interface onto Dataminer https://support.d4science.org/issues/2521 Added Folder Download git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@128772 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../ComputationsExecutedPanel.java | 79 ++++++---- .../client/dataspace/InputDataSetsPanel.java | 75 +++++---- .../client/dataspace/OutputDataSetsPanel.java | 70 +++++---- .../server/DownloadFolderServlet.java | 118 +++++++++----- .../server/storage/StorageUtil.java | 10 +- .../dataminermanager/shared/Constants.java | 7 +- src/main/webapp/WEB-INF/web.xml | 147 ++++++++++-------- 7 files changed, 317 insertions(+), 189 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/computations/ComputationsExecutedPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/computations/ComputationsExecutedPanel.java index 80ba861..ae1db40 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/computations/ComputationsExecutedPanel.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/computations/ComputationsExecutedPanel.java @@ -16,6 +16,7 @@ import org.gcube.portlets.user.dataminermanager.client.events.UIStateEvent; import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync; import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaElementType; import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; +import org.gcube.portlets.user.dataminermanager.shared.Constants; import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException; import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription; import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener; @@ -27,6 +28,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria; import org.gcube.portlets.widgets.wsexplorer.shared.Item; 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.sencha.gxt.cell.core.client.ButtonCell.ButtonScale; @@ -144,7 +146,8 @@ public class ComputationsExecutedPanel extends FramedPanel { private void manageDataMinerWorkAreaEvents(DataMinerWorkAreaEvent event) { - Log.debug("ComputationsExecutedPanel recieved DataMinerWorkAreaEvent: " + event); + Log.debug("ComputationsExecutedPanel recieved DataMinerWorkAreaEvent: " + + event); if (event == null) { Log.error("DataMinerWorkAreaEvent null"); return; @@ -227,7 +230,8 @@ public class ComputationsExecutedPanel extends FramedPanel { wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel( event.getDataMinerWorkArea().getComputations().getFolder() - .getId(), false, showProperties, filterCriteria, true); + .getId(), false, showProperties, filterCriteria, + true); WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() { @Override public void onSelectedItem(Item item) { @@ -462,39 +466,56 @@ public class ComputationsExecutedPanel extends FramedPanel { } private void downloadFile() { - if (selectedItem != null && !selectedItem.isFolder()) { + if (selectedItem != null) { + if (selectedItem.isFolder()) { + StringBuilder actionUrl = new StringBuilder(); + actionUrl.append(GWT.getModuleBaseURL()); + actionUrl + .append(Constants.DOWNLOAD_FOLDER_SERVLET + + "?" + + Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER + + "=" + + selectedItem.getId() + + "&" + + Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER + + "=" + selectedItem.getName()); - final ItemDescription itemDescription = new ItemDescription( - selectedItem.getId(), selectedItem.getName(), - selectedItem.getOwner(), selectedItem.getPath(), - selectedItem.getType().name()); + Log.debug("Retrieved link: " + actionUrl); + Window.open(actionUrl.toString(), selectedItem.getName(), ""); - DataMinerPortletServiceAsync.INSTANCE.getPublicLink( - itemDescription, new AsyncCallback() { + } else { + + final ItemDescription itemDescription = new ItemDescription( + selectedItem.getId(), selectedItem.getName(), + selectedItem.getOwner(), selectedItem.getPath(), + selectedItem.getType().name()); + + DataMinerPortletServiceAsync.INSTANCE.getPublicLink( + itemDescription, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof ExpiredSessionServiceException) { + EventBusProvider.INSTANCE + .fireEvent(new SessionExpiredEvent()); + } else { + Log.error("Error open file: " + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error", + caught.getLocalizedMessage()); + } + caught.printStackTrace(); - @Override - public void onFailure(Throwable caught) { - if (caught instanceof ExpiredSessionServiceException) { - EventBusProvider.INSTANCE - .fireEvent(new SessionExpiredEvent()); - } else { - Log.error("Error open file: " - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error", - caught.getLocalizedMessage()); } - caught.printStackTrace(); - } - - @Override - public void onSuccess(String link) { - Log.debug("Retrieved link: " + link); - Window.open(link, itemDescription.getName(), ""); - } - - }); + @Override + public void onSuccess(String link) { + Log.debug("Retrieved link: " + link); + Window.open(link, itemDescription.getName(), ""); + } + }); + } } else { UtilsGXT3.info("Attention", "Select a file!"); } diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java index 8047067..ee565bc 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/InputDataSetsPanel.java @@ -14,6 +14,7 @@ import org.gcube.portlets.user.dataminermanager.client.events.UIStateEvent; import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync; import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaElementType; import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; +import org.gcube.portlets.user.dataminermanager.shared.Constants; import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException; import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription; import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener; @@ -25,6 +26,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria; import org.gcube.portlets.widgets.wsexplorer.shared.Item; 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.sencha.gxt.cell.core.client.ButtonCell.ButtonScale; @@ -221,7 +223,8 @@ public class InputDataSetsPanel extends FramedPanel { wsResourcesExplorerPanel = new WorkspaceResourcesExplorerPanel( event.getDataMinerWorkArea().getInputDataSets().getFolder() - .getId(), false, showProperties, filterCriteria, true); + .getId(), false, showProperties, filterCriteria, + true); WorskpaceExplorerSelectNotificationListener wsResourceExplorerListener = new WorskpaceExplorerSelectNotificationListener() { @Override public void onSelectedItem(Item item) { @@ -393,39 +396,55 @@ public class InputDataSetsPanel extends FramedPanel { } private void downloadFile() { - if (selectedItem != null && !selectedItem.isFolder()) { + if (selectedItem != null) { + if (selectedItem.isFolder()) { + StringBuilder actionUrl = new StringBuilder(); + actionUrl.append(GWT.getModuleBaseURL()); + actionUrl + .append(Constants.DOWNLOAD_FOLDER_SERVLET + + "?" + + Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER + + "=" + + selectedItem.getId() + + "&" + + Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER + + "=" + selectedItem.getName()); - final ItemDescription itemDescription = new ItemDescription( - selectedItem.getId(), selectedItem.getName(), - selectedItem.getOwner(), selectedItem.getPath(), - selectedItem.getType().name()); + Log.debug("Retrieved link: " + actionUrl); + Window.open(actionUrl.toString(), selectedItem.getName(), ""); + } else { - DataMinerPortletServiceAsync.INSTANCE.getPublicLink( - itemDescription, new AsyncCallback() { + final ItemDescription itemDescription = new ItemDescription( + selectedItem.getId(), selectedItem.getName(), + selectedItem.getOwner(), selectedItem.getPath(), + selectedItem.getType().name()); + + DataMinerPortletServiceAsync.INSTANCE.getPublicLink( + itemDescription, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof ExpiredSessionServiceException) { + EventBusProvider.INSTANCE + .fireEvent(new SessionExpiredEvent()); + } else { + Log.error("Error open file: " + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error", + caught.getLocalizedMessage()); + } + caught.printStackTrace(); - @Override - public void onFailure(Throwable caught) { - if (caught instanceof ExpiredSessionServiceException) { - EventBusProvider.INSTANCE - .fireEvent(new SessionExpiredEvent()); - } else { - Log.error("Error open file: " - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error", - caught.getLocalizedMessage()); } - caught.printStackTrace(); - } - - @Override - public void onSuccess(String link) { - Log.debug("Retrieved link: " + link); - Window.open(link, itemDescription.getName(), ""); - } - - }); + @Override + public void onSuccess(String link) { + Log.debug("Retrieved link: " + link); + Window.open(link, itemDescription.getName(), ""); + } + }); + } } else { UtilsGXT3.info("Attention", "Select a file!"); } diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/OutputDataSetsPanel.java b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/OutputDataSetsPanel.java index 96d7877..4d3f927 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/OutputDataSetsPanel.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/client/dataspace/OutputDataSetsPanel.java @@ -14,6 +14,7 @@ import org.gcube.portlets.user.dataminermanager.client.events.UIStateEvent; import org.gcube.portlets.user.dataminermanager.client.rpc.DataMinerPortletServiceAsync; import org.gcube.portlets.user.dataminermanager.client.type.DataMinerWorkAreaElementType; import org.gcube.portlets.user.dataminermanager.client.util.UtilsGXT3; +import org.gcube.portlets.user.dataminermanager.shared.Constants; import org.gcube.portlets.user.dataminermanager.shared.exception.ExpiredSessionServiceException; import org.gcube.portlets.user.dataminermanager.shared.workspace.ItemDescription; import org.gcube.portlets.widgets.workspaceuploader.client.WorkspaceUploadNotification.WorskpaceUploadNotificationListener; @@ -25,6 +26,7 @@ import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria; import org.gcube.portlets.widgets.wsexplorer.shared.Item; 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.sencha.gxt.cell.core.client.ButtonCell.ButtonScale; @@ -394,38 +396,54 @@ public class OutputDataSetsPanel extends FramedPanel { } private void downloadFile() { - if (selectedItem != null && !selectedItem.isFolder()) { + if (selectedItem != null) { + if (selectedItem.isFolder()) { + StringBuilder actionUrl = new StringBuilder(); + actionUrl.append(GWT.getModuleBaseURL()); + actionUrl + .append(Constants.DOWNLOAD_FOLDER_SERVLET + + "?" + + Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER + + "=" + + selectedItem.getId() + + "&" + + Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER + + "=" + selectedItem.getName()); - final ItemDescription itemDescription = new ItemDescription( - selectedItem.getId(), selectedItem.getName(), - selectedItem.getOwner(), selectedItem.getPath(), - selectedItem.getType().name()); + Log.debug("Retrieved link: " + actionUrl); + Window.open(actionUrl.toString(), selectedItem.getName(), ""); + } else { + final ItemDescription itemDescription = new ItemDescription( + selectedItem.getId(), selectedItem.getName(), + selectedItem.getOwner(), selectedItem.getPath(), + selectedItem.getType().name()); - DataMinerPortletServiceAsync.INSTANCE.getPublicLink( - itemDescription, new AsyncCallback() { + DataMinerPortletServiceAsync.INSTANCE.getPublicLink( + itemDescription, new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof ExpiredSessionServiceException) { + EventBusProvider.INSTANCE + .fireEvent(new SessionExpiredEvent()); + } else { + Log.error("Error open file: " + + caught.getLocalizedMessage()); + UtilsGXT3.alert("Error", + caught.getLocalizedMessage()); + } + caught.printStackTrace(); - @Override - public void onFailure(Throwable caught) { - if (caught instanceof ExpiredSessionServiceException) { - EventBusProvider.INSTANCE - .fireEvent(new SessionExpiredEvent()); - } else { - Log.error("Error open file: " - + caught.getLocalizedMessage()); - UtilsGXT3.alert("Error", - caught.getLocalizedMessage()); } - caught.printStackTrace(); - } + @Override + public void onSuccess(String link) { + Log.debug("Retrieved link: " + link); + Window.open(link, itemDescription.getName(), ""); + } - @Override - public void onSuccess(String link) { - Log.debug("Retrieved link: " + link); - Window.open(link, itemDescription.getName(), ""); - } - - }); + }); + } } else { UtilsGXT3.info("Attention", "Select a file!"); diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DownloadFolderServlet.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DownloadFolderServlet.java index e28be9d..9e73097 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DownloadFolderServlet.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DownloadFolderServlet.java @@ -1,67 +1,113 @@ package org.gcube.portlets.user.dataminermanager.server; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.OutputStream; + import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.io.IOUtils; +import org.gcube.application.framework.core.session.ASLSession; +import org.gcube.portlets.user.dataminermanager.server.storage.StorageUtil; +import org.gcube.portlets.user.dataminermanager.shared.Constants; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * DownloadFolder Servlet + * + * @author Giancarlo Panichi + * email: g.panichi@isti.cnr.it + * + * Download Folder Servlet + * */ -@WebServlet("/DownloadFolderServlet") public class DownloadFolderServlet extends HttpServlet { - private static final long serialVersionUID = 1L; - - /** - * @see HttpServlet#HttpServlet() - */ - public DownloadFolderServlet() { - super(); - // TODO Auto-generated constructor stub - } + private static final long serialVersionUID = -1838255772767180518L; + private static Logger logger = LoggerFactory + .getLogger(DownloadFolderServlet.class); /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) + * @see HttpServlet#HttpServlet() */ - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + public DownloadFolderServlet() { + super(); + // TODO Auto-generated constructor stub + } + + /** + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doGet(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { createResponse(request, response); } /** - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse + * response) */ - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + protected void doPost(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { createResponse(request, response); } - - - private void createResponse(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ - /*try { - - request.getParameter("c") - - File tmpZip = ZipUtil.zipFolder((WorkspaceFolder) item); - resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" ); - resp.setContentType("application/zip"); - resp = setContentLength(resp, tmpZip.length()); - OutputStream out = resp.getOutputStream(); + + private void createResponse(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + try { + logger.info("DownloadFolderServlet"); + + HttpSession session = request.getSession(); + + if (session == null) { + logger.error("Error getting the session, no session valid found: " + + session); + response.sendError( + HttpServletResponse.SC_INTERNAL_SERVER_ERROR, + "ERROR-Error getting the user session, no session found " + + session); + return; + } + logger.debug("DownloadFolderServlet session id: " + session.getId()); + + ASLSession aslSession = SessionUtil.getASLSession(session); + + String itemId = request.getParameter(Constants.DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER); + String folderName = request.getParameter(Constants.DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER); + logger.debug("Request: [itemId=" + itemId + ", folderName=" + + folderName + "]"); + + File tmpZip = StorageUtil.zipFolder(aslSession.getUsername(), + itemId); + 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); - IOUtils.copy(fileTmpZip, resp.getOutputStream()); - fileTmpZip.close(); - + IOUtils.copy(fileTmpZip, response.getOutputStream()); + out.flush(); out.close(); + fileTmpZip.close(); tmpZip.delete(); return; - } catch (Exception e) { - logger.error("Error during folder compression "+itemId,e); - handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during folder compression: "+e.getMessage()); - return; + } catch (Throwable e) { + logger.error("Error in DownloadFolderServlet: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new ServletException("Error:" + + e.getLocalizedMessage(), e); + } - }*/ } } diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java index 2cf0281..1f6784c 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/storage/StorageUtil.java @@ -219,10 +219,18 @@ public class StorageUtil { } } - public File zipFolder(String user, String folderId) + /** + * + * @param user + * @param folderId + * @return + * @throws ServiceException + */ + 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); diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/shared/Constants.java b/src/main/java/org/gcube/portlets/user/dataminermanager/shared/Constants.java index af7f5da..2615533 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/shared/Constants.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/shared/Constants.java @@ -50,7 +50,12 @@ public class Constants { //public static final String WPSToken = "45943442-74ef-408b-be64-d26b42cf4c08 "; //public static final String WPSUser = "statistical.manager@gmail.com"; - + + //DownloadFolderServlet + public static final String DOWNLOAD_FOLDER_SERVLET= "DownloadFolderServlet"; + public static final String DOWNLOAD_FOLDER_SERVLET_ITEM_ID_PARAMETER = "itemId"; + public static final String DOWNLOAD_FOLDER_SERVLET_FOLDER_NAME_PARAMETER = "folderName"; + } diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 07c8b03..f897e40 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,70 +1,81 @@ - - - DataMinerManagerServlet - org.gcube.portlets.user.dataminermanager.server.DataMinerManagerServiceImpl - - - jUnitHostImpl - com.google.gwt.junit.server.JUnitHostImpl - - - DownloadService - org.gcube.portlets.user.dataminermanager.server.DownloadServlet - - - workspaceExplorer - org.gcube.portlets.widgets.wsexplorer.server.WorkspaceExplorerServiceImpl - - - workspaceUploaderService - org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploaderServiceImpl - - - workspaceUploadServletStream - org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServletStream - - - checkServlet - org.gcube.portlets.widgets.sessionchecker.server.SessionCheckerServiceImpl - - - scopeService - org.gcube.portlets.user.gcubewidgets.server.ScopeServiceImpl - - - DataMinerManagerServlet - /dataminermanager/dataminerman - - - jUnitHostImpl - /dataminermanager/junithost/* - - - DownloadService - /dataminermanager/DownloadService - - - workspaceExplorer - /dataminermanager/WorkspaceExplorerService - - - workspaceUploaderService - /dataminermanager/workspaceUploaderService - - - workspaceUploadServletStream - /dataminermanager/workspaceUploadServletStream - - - checkServlet - /dataminermanager/checksession - - - scopeService - /dataminermanager/scopeService - - - DataMinerManager.html - + + + DataMinerManagerServlet + org.gcube.portlets.user.dataminermanager.server.DataMinerManagerServiceImpl + + + jUnitHostImpl + com.google.gwt.junit.server.JUnitHostImpl + + + DownloadService + org.gcube.portlets.user.dataminermanager.server.DownloadServlet + + + DownloadFolderServlet + org.gcube.portlets.user.dataminermanager.server.DownloadFolderServlet + + + workspaceExplorer + org.gcube.portlets.widgets.wsexplorer.server.WorkspaceExplorerServiceImpl + + + workspaceUploaderService + org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploaderServiceImpl + + + workspaceUploadServletStream + org.gcube.portlets.widgets.workspaceuploader.server.WorkspaceUploadServletStream + + + checkServlet + org.gcube.portlets.widgets.sessionchecker.server.SessionCheckerServiceImpl + + + scopeService + org.gcube.portlets.user.gcubewidgets.server.ScopeServiceImpl + + + DataMinerManagerServlet + /dataminermanager/dataminerman + + + jUnitHostImpl + /dataminermanager/junithost/* + + + DownloadService + /dataminermanager/DownloadService + + + DownloadFolderServlet + /dataminermanager/DownloadFolderServlet + + + workspaceExplorer + /dataminermanager/WorkspaceExplorerService + + + workspaceUploaderService + /dataminermanager/workspaceUploaderService + + + workspaceUploadServletStream + /dataminermanager/workspaceUploadServletStream + + + checkServlet + /dataminermanager/checksession + + + scopeService + /dataminermanager/scopeService + + + DataMinerManager.html + \ No newline at end of file