From 7bb0dd576a21b28a88c9f3f33c714d010d7a035f Mon Sep 17 00:00:00 2001 From: "massimiliano.assante" Date: Mon, 4 Mar 2019 11:35:23 +0000 Subject: [PATCH] Feature #12796 Workspace widget: recent documents has a different behaviour on URL items git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/workspace-widget-portlet@178446 82a268e6-3cf1-43bd-a215-b396298e98cf --- distro/changelog.xml | 4 +++ pom.xml | 2 +- .../user/wswidget/StorageHubServiceUtil.java | 2 +- .../user/wswidget/WorkspaceWidget.java | 29 ++++++++++++++----- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/distro/changelog.xml b/distro/changelog.xml index 7ee32b7..af67d01 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,4 +1,8 @@ + + Feature #12796 Workspace widget: recent documents has a different behaviour on URL items + Added mazimise feature diff --git a/pom.xml b/pom.xml index 14c7d2b..d1d5c48 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ workspace-widget-portlet war workspace-widget-portlet Portlet - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT Workspace Widget diff --git a/src/main/java/org/gcube/portlets/user/wswidget/StorageHubServiceUtil.java b/src/main/java/org/gcube/portlets/user/wswidget/StorageHubServiceUtil.java index 85a2651..1d7d99c 100644 --- a/src/main/java/org/gcube/portlets/user/wswidget/StorageHubServiceUtil.java +++ b/src/main/java/org/gcube/portlets/user/wswidget/StorageHubServiceUtil.java @@ -68,7 +68,7 @@ public class StorageHubServiceUtil { String authorizationToken = Utils.getCurrentUserToken(scope, userName); SecurityTokenProvider.instance.set(authorizationToken); ItemManagerClient client = AbstractPlugin.item().build(); - return client.childrenCount(itemId); + return client.childrenCount(itemId, false); } /** * diff --git a/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java b/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java index 546bf96..6ca8a26 100644 --- a/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java +++ b/src/main/java/org/gcube/portlets/user/wswidget/WorkspaceWidget.java @@ -3,6 +3,7 @@ package org.gcube.portlets.user.wswidget; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Scanner; import javax.portlet.PortletException; import javax.portlet.PortletSession; @@ -13,8 +14,9 @@ import javax.servlet.http.HttpServletResponse; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.storagehub.client.StreamDescriptor; +import org.gcube.common.storagehub.client.dsl.FileContainer; +import org.gcube.common.storagehub.client.dsl.StorageHubClient; import org.gcube.common.storagehub.client.plugins.AbstractPlugin; -import org.gcube.common.storagehub.client.proxies.ItemManagerClient; import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient; import org.gcube.common.storagehub.model.items.Item; import org.gcube.portlets.user.wswidget.shared.AuthorizedUser; @@ -39,6 +41,7 @@ public class WorkspaceWidget extends MVCPortlet { private static com.liferay.portal.kernel.log.Log _log = LogFactoryUtil.getLog(WorkspaceWidget.class); public static String BREADCRUMB_ATTR = "BREADCRUMB_ATTR_name"; public final static int LIMIT = 5; + public final static String ITEM_URL_TYPE = "nthl:externalUrl"; /** * all the AJAX calls are served by this method, to discriminate the operation we use the parameters: @@ -52,12 +55,22 @@ public class WorkspaceWidget extends MVCPortlet { if (fileToDownloadId != null) { setAuthorizationToken(resourceRequest); String selectedItemId = fileToDownloadId.split("=")[1]; - ItemManagerClient client = AbstractPlugin.item().build(); - StreamDescriptor streamDescr = client.download(selectedItemId); + StorageHubClient client = new StorageHubClient(); + FileContainer fileContainer = client.open(selectedItemId).asFile(); + StreamDescriptor streamDescr = fileContainer.download(selectedItemId); HttpServletResponse httpRes = PortalUtil.getHttpServletResponse(resourceResponse); - HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest); - ServletResponseUtil.sendFile(httpReq,httpRes, streamDescr.getFileName(), streamDescr.getStream(), "application/download"); - streamDescr.getStream().close(); + if (ITEM_URL_TYPE.compareTo(fileContainer.get().getPrimaryType()) == 0) { //if is a type URL we open drectly the link + Scanner sc = new Scanner( streamDescr.getStream()); + String text = sc.useDelimiter("\\A").next(); + sc.close(); + streamDescr.getStream().close(); + httpRes.sendRedirect(text); + } + else { + HttpServletRequest httpReq = PortalUtil.getHttpServletRequest(resourceRequest); + ServletResponseUtil.sendFile(httpReq,httpRes, streamDescr.getFileName(), streamDescr.getStream(), "application/download"); + streamDescr.getStream().close(); + } } //the user is browsing the workspace or asking for recents else { @@ -103,7 +116,7 @@ public class WorkspaceWidget extends MVCPortlet { count = StorageHubServiceUtil.getItemChildrenCount(request, itemId); } else if (itemId.compareTo("recents") == 0) { //is in a VRE and asking for recents files - + itemsList = StorageHubServiceUtil.getRecentItems(authUser); count = offset; toSet = (Breadcrumb) request.getPortletSession().getAttribute(BREADCRUMB_ATTR, PortletSession.APPLICATION_SCOPE); @@ -118,7 +131,7 @@ public class WorkspaceWidget extends MVCPortlet { computeBreadcrumb(clicked, toSet); count = StorageHubServiceUtil.getItemChildrenCount(request, itemId); } - + JSONObject tableData = buildJSONResponse(itemsList, start, offset, draw, count, request); ServletResponseUtil.write(PortalUtil.getHttpServletResponse(resourceResponse),tableData.toString()); } catch (Exception e) {