diff --git a/.classpath b/.classpath
index 25b76d4..7be9cd5 100644
--- a/.classpath
+++ b/.classpath
@@ -1,12 +1,12 @@
-
+
-
+
@@ -35,5 +35,5 @@
-
+
diff --git a/.settings/com.gwtplugins.gdt.eclipse.core.prefs b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
index f4c7db0..1d3439d 100644
--- a/.settings/com.gwtplugins.gdt.eclipse.core.prefs
+++ b/.settings/com.gwtplugins.gdt.eclipse.core.prefs
@@ -1,6 +1,6 @@
eclipse.preferences.version=1
jarsExcludedFromWebInfLib=
-lastWarOutDir=/home/francesco-mangiacrapa/git/workspace-explorer-app/target/workspace-explorer-app-1.3.1
+lastWarOutDir=/home/francescomangiacrapa/git/workspace-explorer-app/target/workspace-explorer-app-1.3.2-SNAPSHOT
launchConfigExternalUrlPrefix=
warSrcDir=src/main/webapp
warSrcDirIsOutput=false
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index d36c6a2..cfc9f1d 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,10 +1,40 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uses
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 206ca38..a4fe9e6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [v1.4.0-SNAPSHOT] - 2021-12-03
+
+[#19786] Integrated items of type "URL"
+
## [v1.3.1] - 2020-09-25
[#19317] Just to include the storagehub-client-wrapper at 1.0.0 version
diff --git a/pom.xml b/pom.xml
index c139342..e3e55cf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
org.gcube.portlets.user
workspace-explorer-app
- 1.3.1
+ 1.4.0-SNAPSHOT
war
@@ -121,7 +121,7 @@
[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)
compile
-
+
org.gcube.core
common-encryption
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceResourcesExplorerPanel.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceResourcesExplorerPanel.java
index 4d30a65..d367d84 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceResourcesExplorerPanel.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/WorkspaceResourcesExplorerPanel.java
@@ -30,7 +30,6 @@ import org.gcube.portlets.user.workspaceexplorerapp.client.view.WorkspaceExplore
import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemType;
-import com.github.gwtbootstrap.client.ui.constants.AlertType;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.RequestBuilder;
@@ -46,49 +45,51 @@ import gwt.material.design.client.ui.MaterialToast;
/**
* The Class WorkspaceResourcesExplorerPanel.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Dec 3, 2015
+ * @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
+ *
+ * Dec 3, 2021
*/
-public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWorskpaceExplorerSelectNotificationListener{
+public class WorkspaceResourcesExplorerPanel extends DockPanel
+ implements HasWorskpaceExplorerSelectNotificationListener {
public HandlerManager eventBus;
private Breadcrumbs breadcrumbs;
private boolean isSelect = false;
private String captionTxt;
-// private WorkspaceExplorerController controller;
private List listeners = new ArrayList();
private VerticalPanel mainVP = new VerticalPanel();
-// private HorizontalPanel footerHP = new HorizontalPanel();
private WorkspaceExplorer wsExplorer;
private ScrollPanel centerScrollable = new ScrollPanel();
-// private ScrollPanel southPanel = new ScrollPanel();
private String folderName;
private Item baseFolder;
- public static final DisplayField[] displayFields = new DisplayField[]{DisplayField.ICON, DisplayField.NAME, DisplayField.OWNER, DisplayField.CREATION_DATE};
+ public static final DisplayField[] displayFields = new DisplayField[] { DisplayField.ICON, DisplayField.NAME,
+ DisplayField.OWNER, DisplayField.CREATION_DATE };
/**
* Instantiates a new workspace folder explorer select panel.
*
- * @param eventBus the event bus
- * @param folderId the folder id like root folder to explore
+ * @param eventBus the event bus
+ * @param folderId the folder id like root folder to explore
* @param folderName the folder name
* @throws Exception the exception
*/
- public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, String folderName) throws Exception {
+ public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, String folderName)
+ throws Exception {
initExplorer(eventBus, folderId, folderName, ItemType.values(), ItemType.values());
}
/**
* Inits the explorer.
*
- * @param eventBus the event bus
- * @param folderId the folder id
- * @param folderName the folder name
+ * @param eventBus the event bus
+ * @param folderId the folder id
+ * @param folderName the folder name
* @param selectableTypes the selectable types
- * @param showableTypes the showable types
+ * @param showableTypes the showable types
* @throws Exception the exception
*/
- private void initExplorer(HandlerManager eventBus, String folderId, String folderName, ItemType[] selectableTypes, ItemType[] showableTypes) throws Exception{
+ private void initExplorer(HandlerManager eventBus, String folderId, String folderName, ItemType[] selectableTypes,
+ ItemType[] showableTypes) throws Exception {
this.folderName = folderName;
this.eventBus = eventBus;
this.breadcrumbs = new Breadcrumbs(eventBus);
@@ -98,7 +99,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
Item item = new Item(folderId, folderName, true);
this.baseFolder = item;
wsExplorer.setBaseFolder(item);
- if(folderId!=null && !folderId.isEmpty())
+ if (folderId != null && !folderId.isEmpty())
wsExplorer.loadFolder(item);
initPanel("");
}
@@ -106,26 +107,27 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
/**
* Instantiates a new workspace explorer select panel.
*
- * @param folderId the folder id
+ * @param eventBus the event bus
+ * @param folderId the folder id
* @param showOnlyFolders the show only folders
* @throws Exception the exception
*/
- public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, boolean showOnlyFolders) throws Exception {
+ public WorkspaceResourcesExplorerPanel(HandlerManager eventBus, String folderId, boolean showOnlyFolders)
+ throws Exception {
- if(showOnlyFolders){
+ if (showOnlyFolders) {
ItemType[] itemsType = new ItemType[1];
itemsType[0] = ItemType.FOLDER;
initExplorer(eventBus, folderId, "", itemsType, itemsType);
- }else{
+ } else {
initExplorer(eventBus, folderId, "", ItemType.values(), ItemType.values());
}
}
-
/**
* Bind events.
*/
- private void bindEvents(){
+ private void bindEvents() {
eventBus.addHandler(ClickItemEvent.TYPE, new ClickItemEventHandler() {
@@ -150,12 +152,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
@Override
public void onLoadFolder(LoadFolderEvent loadFolderEvent) {
-
+
GWT.log("LoadFolderEvent fired");
- Item item = loadFolderEvent.getTargetFolder()==null?baseFolder:loadFolderEvent.getTargetFolder();
+ Item item = loadFolderEvent.getTargetFolder() == null ? baseFolder : loadFolderEvent.getTargetFolder();
- if(item.isFolder()){
+ if (item.isFolder()) {
try {
wsExplorer.loadFolder(item);
loadParentBreadcrumbByItemId(item.getId(), true);
@@ -171,7 +173,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
@Override
public void onBreadcrumbClick(BreadcrumbClickEvent breadcrumbClickEvent) {
- if(breadcrumbClickEvent.getTargetItem()!=null)
+ if (breadcrumbClickEvent.getTargetItem() != null)
eventBus.fireEvent(new LoadFolderEvent(breadcrumbClickEvent.getTargetItem()));
}
});
@@ -182,22 +184,19 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
public void onOrderDataBy(OrderDataByEvent orderDataByEvent) {
wsExplorer.getItTables().sortDataBy(orderDataByEvent.getLabel());
-
- /*ArrayList- items = ItemComparatorUtility.sortItems(DisplayField.NAME, true, wsExplorer.getItTables().getDataProvider().getList());
- wsExplorer.updateExplorer(items);*/
}
});
-
eventBus.addHandler(RightClickItemEvent.TYPE, new RightClickItemEventHandler() {
@Override
public void onClick(RightClickItemEvent rightClickItemEvent) {
- if(rightClickItemEvent.getItem()!=null && rightClickItemEvent.getItem().getId()!=null){
+ if (rightClickItemEvent.getItem() != null && rightClickItemEvent.getItem().getId() != null) {
PopupContextMenu popupCM = new PopupContextMenu(true, eventBus, rightClickItemEvent.getItem());
- popupCM.showPopup(rightClickItemEvent.getXPos(), Window.getScrollTop()+rightClickItemEvent.getYPos());
+ popupCM.showPopup(rightClickItemEvent.getXPos(),
+ Window.getScrollTop() + rightClickItemEvent.getYPos());
}
}
});
@@ -208,24 +207,27 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
public void onDownloadItem(DownloadItemEvent downloadItemEvent) {
GWT.log("Fired event DownloadItemEvent");
String itemIds = "";
- if(downloadItemEvent.getItem()!=null)
- itemIds = downloadItemEvent.getItem().getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
- else{
+ if (downloadItemEvent.getItem() != null)
+ itemIds = downloadItemEvent.getItem().getId() + WorkspaceExplorerAppConstants.IDS_SEPARATOR;
+ else {
List
- lstItems = toList(wsExplorer.getItemsSelected());
for (Item item : lstItems) {
- itemIds +=item.getId()+WorkspaceExplorerAppConstants.IDS_SEPARATOR;
+ itemIds += item.getId() + WorkspaceExplorerAppConstants.IDS_SEPARATOR;
}
}
- GWT.log("itemIds: "+itemIds);
- if(!itemIds.isEmpty()){
+ GWT.log("itemIds: " + itemIds);
+ if (!itemIds.isEmpty()) {
// MaterialToast.fireToast("Download...");
switch (downloadItemEvent.getType()) {
case DOWNLOAD:
MaterialToast.fireToast("Download...");
try {
- new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds, "_self", downloadHandlerCallback);
+ new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
+ WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
+ WorkspaceExplorerAppConstants.IDS + "=" + itemIds, "_self",
+ downloadHandlerCallback);
} catch (Exception e) {
Window.alert("Sorry, an error occurred while contacting server, try again");
}
@@ -234,8 +236,45 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
// break;
case OPEN:
MaterialToast.fireToast("Showing...");
+
+ if (downloadItemEvent.getItem().getType().equals(ItemType.URL_DOCUMENT)) {
+
+ final NewBrowserWindow newBrowserWindow = NewBrowserWindow.open("", "_blank", "");
+
+ final String theItemIds = itemIds;
+
+ WorkspaceExplorerAppConstants.workspaceNavigatorService
+ .getUrlById(downloadItemEvent.getItem().getId(), new AsyncCallback() {
+
+ @Override
+ public void onSuccess(String result) {
+ newBrowserWindow.setUrl(result);
+
+ }
+
+ @Override
+ public void onFailure(Throwable caught) {
+ try {
+ new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
+ WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
+ WorkspaceExplorerAppConstants.IDS + "=" + theItemIds
+ + "&viewContent=true",
+ "_blank", downloadHandlerCallback);
+ } catch (Exception e) {
+ Window.alert(
+ "Sorry, an error occurred while contacting server, try again");
+ }
+ }
+ });
+
+ return;
+ }
+
try {
- new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET, WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE, WorkspaceExplorerAppConstants.IDS+"="+itemIds+"&viewContent=true", "_blank", downloadHandlerCallback);
+ new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,
+ WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE,
+ WorkspaceExplorerAppConstants.IDS + "=" + itemIds + "&viewContent=true", "_blank",
+ downloadHandlerCallback);
} catch (Exception e) {
Window.alert("Sorry, an error occurred while contacting server, try again");
@@ -249,64 +288,61 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
});
}
-
/**
* To list.
*
* @param items the items
* @return the list
*/
- private List
- toList(Set
- items){
- if(items!=null && items.size()>0){
- List
- lstItems = new ArrayList
- (items.size());
+ private List
- toList(Set
- items) {
+ if (items != null && items.size() > 0) {
+ List
- lstItems = new ArrayList
- (items.size());
lstItems.addAll(items);
return lstItems;
}
return null;
}
-
/**
* Load parent breadcrumb by item id.
*
- * @param itemIdentifier the item identifier
+ * @param itemIdentifier the item identifier
* @param includeItemAsParent the include item as parent
*/
- protected void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent){
+ protected void loadParentBreadcrumbByItemId(final String itemIdentifier, boolean includeItemAsParent) {
- GWT.log("Reload Parent Breadcrumb: [Item id: "+itemIdentifier+"]");
+ GWT.log("Reload Parent Breadcrumb: [Item id: " + itemIdentifier + "]");
- WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(itemIdentifier, baseFolder.getId(), includeItemAsParent, new AsyncCallback
>() {
+ WorkspaceExplorerAppConstants.workspaceNavigatorService.getBreadcrumbsByItemIdentifierToParentLimit(
+ itemIdentifier, baseFolder.getId(), includeItemAsParent, new AsyncCallback>() {
- @Override
- public void onFailure(Throwable caught) {
- GWT.log(caught.getMessage());
- Item goToBaseFolder = null;
- //I'm adding go to folder only if is a sub-folder of baseFolder
- if(itemIdentifier!=baseFolder.getId())
- goToBaseFolder = baseFolder;
-
- //wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR, goToBaseFolder);
- }
+ @Override
+ public void onFailure(Throwable caught) {
+ GWT.log(caught.getMessage());
+ Item goToBaseFolder = null;
+ // I'm adding go to folder only if is a sub-folder of baseFolder
+ if (itemIdentifier != baseFolder.getId())
+ goToBaseFolder = baseFolder;
- @Override
- public void onSuccess(List- result) {
- if(result!=null){
- breadcrumbs.setPath(result);
-// clearMoreInfo();
- }
- }
- });
+ // wsExplorer.setAlert(caught.getMessage(), AlertType.ERROR, goToBaseFolder);
+ }
+
+ @Override
+ public void onSuccess(List
- result) {
+ if (result != null) {
+ breadcrumbs.setPath(result);
+ }
+ }
+ });
}
/**
* Refresh root folder view.
*/
- public void refreshRootFolderView(){
- //Item item = new Item(baseFolder.getId(), folderName, true);
+ public void refreshRootFolderView() {
+ // Item item = new Item(baseFolder.getId(), folderName, true);
eventBus.fireEvent(new LoadFolderEvent(baseFolder));
}
-
/**
* Inits the panel.
@@ -319,14 +355,14 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
this.getElement().setAttribute("id", "WorkspaceExplorerContainer");
this.getElement().addClassName("workspace-explorer-container");
- if(this.captionTxt!=null && !this.captionTxt.isEmpty())
+ if (this.captionTxt != null && !this.captionTxt.isEmpty())
setTitle(this.captionTxt);
- setWidth("100%");
- add(breadcrumbs, DockPanel.NORTH);
+ setWidth("100%");
+ add(breadcrumbs, DockPanel.NORTH);
mainVP.add(wsExplorer.getPanel());
- centerScrollable.add(mainVP);
- add(centerScrollable, DockPanel.CENTER);
+ centerScrollable.add(mainVP);
+ add(centerScrollable, DockPanel.CENTER);
}
/**
@@ -334,7 +370,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
*
* @param selected the selected
*/
- private void notifySelectedItem(Item selected){
+ private void notifySelectedItem(Item selected) {
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onSelectedItem(selected);
@@ -344,18 +380,17 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
/**
* Notify aborted.
*/
- private void notifyAborted(){
+ private void notifyAborted() {
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onAborted();
}
}
-
/**
* Notify not valid selection.
*/
- private void notifyNotValidSelection(){
+ private void notifyNotValidSelection() {
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onNotValidSelection();
@@ -368,7 +403,7 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
* @param t the t
*/
@SuppressWarnings("unused")
- private void notifyFailed(Throwable t){
+ private void notifyFailed(Throwable t) {
for (WorskpaceExplorerSelectNotificationListener worskpaceExplorerNotificationListener : listeners) {
worskpaceExplorerNotificationListener.onFailed(t);
@@ -393,22 +428,44 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
return isSelect;
}
- /* (non-Javadoc)
- * @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
+ /**
+ * Adds the workspace explorer select notification listener.
+ *
+ * @param handler the handler
+ */
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.gcube.portlets.widgets.wsexplorer.client.notification.
+ * WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#
+ * addWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.
+ * wsexplorer.client.notification.WorskpaceExplorerNotification.
+ * WorskpaceExplorerNotificationListener)
*/
@Override
public void addWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
- if(handler!=null)
+ if (handler != null)
listeners.add(handler);
}
- /* (non-Javadoc)
- * @see org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.wsexplorer.client.notification.WorskpaceExplorerNotification.WorskpaceExplorerNotificationListener)
+ /**
+ * Removes the workspace explorer select notification listener.
+ *
+ * @param handler the handler
+ */
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.gcube.portlets.widgets.wsexplorer.client.notification.
+ * WorskpaceExplorerNotification.HasWorskpaceExplorerNotificationListener#
+ * removeWorkspaceExplorerNotificationListener(org.gcube.portlets.widgets.
+ * wsexplorer.client.notification.WorskpaceExplorerNotification.
+ * WorskpaceExplorerNotificationListener)
*/
@Override
public void removeWorkspaceExplorerSelectNotificationListener(WorskpaceExplorerSelectNotificationListener handler) {
- if(handler!=null){
- if(listeners.contains(handler))
+ if (handler != null) {
+ if (listeners.contains(handler))
listeners.remove(handler);
}
}
@@ -419,18 +476,19 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
* @param item the item
* @return true, if successful
*/
- public boolean itemIsSelectable(Item item){
- GWT.log("Selectable type: "+wsExplorer.getSelectableTypes());
- GWT.log("item: "+item);
- if (item!=null){
+ public boolean itemIsSelectable(Item item) {
+ GWT.log("Selectable type: " + wsExplorer.getSelectableTypes());
+ GWT.log("item: " + item);
+ if (item != null) {
boolean selectable = wsExplorer.getSelectableTypes().contains(item.getType());
- return selectable?true:false;
+ return selectable ? true : false;
}
return false;
}
-
/**
+ * Gets the ws explorer.
+ *
* @return the wsExplorer
*/
public WorkspaceExplorer getWsExplorer() {
@@ -456,11 +514,12 @@ public class WorkspaceResourcesExplorerPanel extends DockPanel implements HasWor
@Override
public void onSuccess(WindowOpenParameter windowOpenParam) {
- String params = "?"+windowOpenParam.getParameters();
- if(params.length()>1)
- params+="&";
- params+=WorkspaceExplorerAppConstants.REDIRECTONERROR+"="+windowOpenParam.isRedirectOnError();
- windowOpenParam.getBrowserWindow().setUrl(WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE+params);
+ String params = "?" + windowOpenParam.getParameters();
+ if (params.length() > 1)
+ params += "&";
+ params += WorkspaceExplorerAppConstants.REDIRECTONERROR + "=" + windowOpenParam.isRedirectOnError();
+ windowOpenParam.getBrowserWindow()
+ .setUrl(WorkspaceExplorerAppConstants.DOWNLOAD_WORKSPACE_SERVICE + params);
}
};
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/event/DownloadItemEvent.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/event/DownloadItemEvent.java
index 9a63a03..b433825 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/event/DownloadItemEvent.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/event/DownloadItemEvent.java
@@ -1,29 +1,27 @@
package org.gcube.portlets.user.workspaceexplorerapp.client.event;
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
-import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
+import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
import com.google.gwt.event.shared.GwtEvent;
-
/**
* The Class ClickItemEvent.
*
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Jul 6, 2015
+ * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it Jul 6, 2015
*/
public class DownloadItemEvent extends GwtEvent {
public static Type TYPE = new Type();
- private ItemInterface item;
+ private Item item;
private DownloadType type;
/**
* Instantiates a new click item event.
*
* @param itemDownload the item download
- * @param type the type
+ * @param type the type
*/
- public DownloadItemEvent(ItemInterface itemDownload, DownloadType type) {
+ public DownloadItemEvent(Item itemDownload, DownloadType type) {
this.item = itemDownload;
this.type = type;
}
@@ -36,7 +34,9 @@ public class DownloadItemEvent extends GwtEvent {
return type;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see com.google.gwt.event.shared.GwtEvent#getAssociatedType()
*/
@Override
@@ -44,8 +44,12 @@ public class DownloadItemEvent extends GwtEvent {
return TYPE;
}
- /* (non-Javadoc)
- * @see com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.EventHandler)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * com.google.gwt.event.shared.GwtEvent#dispatch(com.google.gwt.event.shared.
+ * EventHandler)
*/
@Override
protected void dispatch(DownloadItemEventHandler handler) {
@@ -54,10 +58,10 @@ public class DownloadItemEvent extends GwtEvent {
/**
* Gets the item.
- *
+ *
* @return the item
*/
- public ItemInterface getItem() {
+ public Item getItem() {
return item;
}
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/grid/MenuMoreOptionsOnItem.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/grid/MenuMoreOptionsOnItem.java
index cbbd32e..ea08a49 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/grid/MenuMoreOptionsOnItem.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/grid/MenuMoreOptionsOnItem.java
@@ -5,7 +5,7 @@ package org.gcube.portlets.user.workspaceexplorerapp.client.grid;
import org.gcube.portlets.user.workspaceexplorerapp.client.download.DownloadType;
import org.gcube.portlets.user.workspaceexplorerapp.client.event.DownloadItemEvent;
-import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
+import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -42,7 +42,7 @@ public class MenuMoreOptionsOnItem extends Composite {
private HandlerManager eventBus;
- private ItemInterface itemToDownload;
+ private Item itemToDownload;
private Command commandOnClick;
@@ -86,7 +86,7 @@ public class MenuMoreOptionsOnItem extends Composite {
* @param itemToDownload the item to download
* @param commandOnClick the command on click
*/
- public void initOnItem(ItemInterface itemToDownload, Command commandOnClick){
+ public void initOnItem(Item itemToDownload, Command commandOnClick){
this.itemToDownload = itemToDownload;
this.commandOnClick = commandOnClick;
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppService.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppService.java
index 2438e4d..4727587 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppService.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppService.java
@@ -21,11 +21,18 @@ public interface WorkspaceExplorerAppService extends RemoteService {
/**
* Gets the folder.
*
- * @param folder the folder @param showableTypes the showable types @param
- * purgeEmpyFolders the purge empy folders @param filterCriteria
- * the filter criteria @return the folder @throws
- * WorkspaceNavigatorServiceException the workspace navigator
- * service exception @throws
+ * @param folder the folder @param showableTypes the showable
+ * types @param purgeEmpyFolders the purge empy
+ * folders @param filterCriteria the filter
+ * criteria @return the folder @throws
+ * WorkspaceNavigatorServiceException the workspace
+ * navigator service exception @throws
+ * @param showableTypes the showable types
+ * @param purgeEmpyFolders the purge empy folders
+ * @param filterCriteria the filter criteria
+ * @return the folder
+ * @throws WorkspaceNavigatorServiceException the workspace navigator service
+ * exception
*/
Item getFolder(Item folder, List showableTypes, boolean purgeEmpyFolders, FilterCriteria filterCriteria)
throws WorkspaceNavigatorServiceException;
@@ -71,12 +78,12 @@ public interface WorkspaceExplorerAppService extends RemoteService {
/**
* Gets the breadcrumbs by item identifier.
*
- * @param itemIdentifier the item identifier
- * @param includeItemAsParent the include item as parent
+ * @param itemId the item id
* @return the breadcrumbs by item identifier
* @throws Exception the exception
*/
- //List
- getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent) throws Exception;
+ // List
- getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean
+ // includeItemAsParent) throws Exception;
/**
* Gets the public link for item id.
@@ -96,4 +103,13 @@ public interface WorkspaceExplorerAppService extends RemoteService {
*/
String getFolderIdFromEncrypted(String encryptedFolderId) throws Exception;
+ /**
+ * Gets the url by id.
+ *
+ * @param itemId the item id
+ * @return the url by id
+ * @throws Exception the exception
+ */
+ String getUrlById(String itemId) throws Exception;
+
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppServiceAsync.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppServiceAsync.java
index 47c860f..7d250f3 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppServiceAsync.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/rpc/WorkspaceExplorerAppServiceAsync.java
@@ -64,12 +64,14 @@ public interface WorkspaceExplorerAppServiceAsync {
/**
* Gets the breadcrumbs by item identifier.
*
- * @param itemIdentifier the item identifier
- * @param includeItemAsParent the include item as parent
- * @param asyncCallback the async callback
+ * @param showableTypes the showable types
+ * @param purgeEmpyFolders the purge empy folders
+ * @param filterCriteria the filter criteria
+ * @param asyncCallback the async callback
* @return the breadcrumbs by item identifier
*/
- //public void getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean includeItemAsParent, AsyncCallback
> asyncCallback);
+ // public void getBreadcrumbsByItemIdentifier(String itemIdentifier, boolean
+ // includeItemAsParent, AsyncCallback> asyncCallback);
/**
* Gets the my special folder.
@@ -95,4 +97,13 @@ public interface WorkspaceExplorerAppServiceAsync {
void getBreadcrumbsByItemIdentifierToParentLimit(String itemIdentifier, String parentLimit,
boolean includeItemAsParent, AsyncCallback> callback);
+ /**
+ * Gets the url by id.
+ *
+ * @param itemId the item id
+ * @param callback the callback
+ * @return the url by id
+ */
+ void getUrlById(String itemId, AsyncCallback callback);
+
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/PopupContextMenu.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/PopupContextMenu.java
index db52470..b2bfec9 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/PopupContextMenu.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/client/view/PopupContextMenu.java
@@ -4,7 +4,7 @@
package org.gcube.portlets.user.workspaceexplorerapp.client.view;
import org.gcube.portlets.user.workspaceexplorerapp.client.grid.MenuMoreOptionsOnItem;
-import org.gcube.portlets.user.workspaceexplorerapp.shared.ItemInterface;
+import org.gcube.portlets.user.workspaceexplorerapp.shared.Item;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.shared.HandlerManager;
@@ -30,7 +30,7 @@ public class PopupContextMenu extends PopupPanel{
* @param eventBus the event bus
* @param itemToDownload the item to download
*/
- public PopupContextMenu(boolean autohide, HandlerManager eventBus, ItemInterface itemToDownload) {
+ public PopupContextMenu(boolean autohide, HandlerManager eventBus, Item itemToDownload) {
super(autohide);
GWT.log("PopupContextMenu opened");
menuOpts = new MenuMoreOptionsOnItem(eventBus);
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java
index 62cf24a..2957e08 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/WorkspaceExplorerAppServiceImpl.java
@@ -15,6 +15,8 @@ import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceFolder;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItem;
import org.gcube.common.storagehubwrapper.shared.tohl.WorkspaceItemType;
import org.gcube.common.storagehubwrapper.shared.tohl.items.FileItem;
+import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem;
+import org.gcube.common.storagehubwrapper.shared.tohl.items.URLItem;
import org.gcube.portlets.user.workspaceexplorerapp.client.WorkspaceExplorerAppConstants;
import org.gcube.portlets.user.workspaceexplorerapp.client.rpc.WorkspaceExplorerAppService;
import org.gcube.portlets.user.workspaceexplorerapp.server.workspace.ItemBuilder;
@@ -461,5 +463,34 @@ public class WorkspaceExplorerAppServiceImpl extends RemoteServiceServlet implem
throw new Exception("Sorry, an error occurred when decrypting the folder id. Try again or contact the support");
}
}
+
+ @Override
+ public String getUrlById(String itemId) throws Exception {
+
+ try {
+
+ if (itemId == null)
+ throw new Exception("Workspace itemId is null");
+
+ logger.debug("get URL by id: " + itemId);
+ Workspace workspace = getWorkspace();
+ WorkspaceItem wsItem = workspace.getItemForExplorer(itemId, false, false, false);
+ // workspace
+
+ if (wsItem instanceof org.gcube.common.storagehubwrapper.shared.tohl.impl.URLFileItem) {
+ URLFileItem fileItem = (URLFileItem) wsItem;
+ return WsInstanceUtil.getUrl(workspace, fileItem);
+ } else if (wsItem instanceof URLItem) {
+ URLItem urlFile = (URLItem) wsItem;
+ return urlFile.getValue().toString();
+ } else {
+ throw new Exception("The itemId " + itemId + " is not a URLFileItem or a URLItem");
+ }
+
+ } catch (Exception e) {
+ logger.error("Error occurred in getUrlById: ", e);
+ throw new Exception(e.getMessage());
+ }
+ }
}
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/ItemBuilder.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/ItemBuilder.java
index 896dd5d..d317e26 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/ItemBuilder.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/ItemBuilder.java
@@ -223,6 +223,8 @@ public class ItemBuilder {
else
return ItemType.UNKNOWN_TYPE;
+ case URL_ITEM:
+ return ItemType.URL_DOCUMENT;
default:
return null;
diff --git a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/WsInstanceUtil.java b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/WsInstanceUtil.java
index 3e4dca9..86a6274 100644
--- a/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/WsInstanceUtil.java
+++ b/src/main/java/org/gcube/portlets/user/workspaceexplorerapp/server/workspace/WsInstanceUtil.java
@@ -3,18 +3,24 @@
*/
package org.gcube.portlets.user.workspaceexplorerapp.server.workspace;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
import javax.servlet.http.HttpSession;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
+import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
+import org.gcube.common.storagehubwrapper.shared.tohl.exceptions.InternalErrorException;
+import org.gcube.common.storagehubwrapper.shared.tohl.items.URLFileItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* The Class WsUtil.
*
- * @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy)
- * Apr 9, 2020
+ * @author Francesco Mangiacrapa at ISTI-CNR Pisa (Italy) Apr 9, 2020
*/
public class WsInstanceUtil {
@@ -35,18 +41,18 @@ public class WsInstanceUtil {
try {
String scope = getScope(httpSession);
String applicationToken = getApplicationToken(httpSession);
-
- if(applicationToken==null || applicationToken.isEmpty()) {
+
+ if (applicationToken == null || applicationToken.isEmpty()) {
throw new Exception("No Application Token found. Impossible to istance the SHUB");
}
-
+
return new StorageHubWrapper(scope, applicationToken, false, false, false);
} catch (Exception e) {
logger.error("Error when instancing the storageHub wrapper", e);
throw new Exception("Error on inizializing the StorageHub wrapper. Please contact the support!");
}
}
-
+
/**
* Gets the workpace.
*
@@ -54,7 +60,8 @@ public class WsInstanceUtil {
* @return the workpace
* @throws Exception the exception
*/
- public static org.gcube.common.storagehubwrapper.server.tohl.Workspace getWorkspace(HttpSession httpSession) throws Exception {
+ public static org.gcube.common.storagehubwrapper.server.tohl.Workspace getWorkspace(HttpSession httpSession)
+ throws Exception {
try {
StorageHubWrapper wrapper = getStorageHubWrapper(httpSession);
@@ -89,7 +96,6 @@ public class WsInstanceUtil {
return scope;
}
-
/**
* Gets the application token.
*
@@ -102,17 +108,54 @@ public class WsInstanceUtil {
String appTokenEnvVarName = null;
try {
logger.info("Reading " + ENVIRONMENT_VARIABLE_TOKEN_NAME + " from web.xml context");
- appTokenEnvVarName = httpSession.getServletContext()
- .getInitParameter(ENVIRONMENT_VARIABLE_TOKEN_NAME);
+ appTokenEnvVarName = httpSession.getServletContext().getInitParameter(ENVIRONMENT_VARIABLE_TOKEN_NAME);
logger.info("Found param-value '" + appTokenEnvVarName
+ "' from web context, reading its value from ENVIRONMENT");
appToken = System.getenv(appTokenEnvVarName);
logger.info("Value of " + appTokenEnvVarName + " from ENVIRONMENT is: " + appToken);
-
- }catch (Exception e) {
- logger.error("Error on reading the ENV VARIABLE '"+appTokenEnvVarName+"' from ENVIRONMENT");
+
+ } catch (Exception e) {
+ logger.error("Error on reading the ENV VARIABLE '" + appTokenEnvVarName + "' from ENVIRONMENT");
}
-
+
return appToken;
}
+
+ /**
+ * Gets the url.
+ *
+ * @param workspace the workspace
+ * @param fileItem the file item
+ * @return the url
+ * @throws Exception the exception
+ */
+ public static String getUrl(Workspace workspace, URLFileItem fileItem) throws Exception {
+ try {
+ return readStreamAsString(
+ workspace.downloadFile(fileItem.getId(), fileItem.getName(), null, null).getStream());
+ } catch (IOException e) {
+ logger.error("GET URL error for file: " + fileItem, e);
+ throw new InternalErrorException(e.getMessage());
+ }
+ }
+
+ /**
+ * Read the entire input stream as string. The system encoding is used.
+ *
+ * @param is the input stream.
+ * @return the read string.
+ * @throws IOException Signals that an I/O exception has occurred.
+ */
+ public static String readStreamAsString(InputStream is) throws java.io.IOException {
+ StringBuilder sb = new StringBuilder(1000);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+ char[] buf = new char[1024];
+ int numRead = 0;
+ while ((numRead = reader.read(buf)) != -1) {
+ sb.append(buf, 0, numRead);
+ }
+ reader.close();
+ return sb.toString();
+ }
+
}
diff --git a/src/test/java/TestFolderIDDecrypt.java b/src/test/java/TestFolderIDDecrypt.java
deleted file mode 100644
index 9c55452..0000000
--- a/src/test/java/TestFolderIDDecrypt.java
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-/**
- *
- */
-/**
- *
- * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
- * Sep 16, 2016
- */
-public class TestFolderIDDecrypt {
-
-
- public static void main(String[] args) {
-
-
-
- }
-}
diff --git a/src/test/java/org/gcube/portlets/user/workspaceexplorerapp/WorkspaceExplorerAppTests.java b/src/test/java/org/gcube/portlets/user/workspaceexplorerapp/WorkspaceExplorerAppTests.java
new file mode 100644
index 0000000..616b15a
--- /dev/null
+++ b/src/test/java/org/gcube/portlets/user/workspaceexplorerapp/WorkspaceExplorerAppTests.java
@@ -0,0 +1,6 @@
+package org.gcube.portlets.user.workspaceexplorerapp;
+
+public class WorkspaceExplorerAppTests {
+
+
+}