From a2f5be0a06a8ab479a65a5b0d09c4fc06e5fee9c Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Mon, 8 Oct 2018 09:50:17 +0000 Subject: [PATCH] Fixed bug on breadcrumb git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@172016 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/WorkspaceExplorerEntryPoint.java | 5 -- .../select/WorkspaceExplorerSelectDialog.java | 39 +++++++++--- .../select/WorkspaceExplorerSelectPanel.java | 1 - .../server/WorkspaceExplorerServiceImpl.java | 61 +++++++++++-------- 4 files changed, 63 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java index d7bcec1..09d8065 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/WorkspaceExplorerEntryPoint.java @@ -1,11 +1,6 @@ package org.gcube.portlets.widgets.wsexplorer.client; -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 com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.shared.GWT; /** diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java index aaf73fa..7e92340 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectDialog.java @@ -59,7 +59,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace */ public WorkspaceExplorerSelectDialog(String captionTxt) { controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); - loadExplorer(captionTxt, null); + loadExplorer(captionTxt, null, null); } /** @@ -70,7 +70,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace */ public WorkspaceExplorerSelectDialog(String captionTxt, FilterCriteria filterCriteria) { controller = new WorkspaceExplorerController(filterCriteria, WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); - loadExplorer(captionTxt, null); + loadExplorer(captionTxt, null, null); } /** @@ -88,7 +88,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace itemsType = selectableTypes.toArray(itemsType); setSelectableTypes(selectableTypes.toArray(itemsType)); } - loadExplorer(captionTxt, null); + loadExplorer(captionTxt, null, null); } @@ -117,7 +117,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace setShowableTypes(showableTypes.toArray(itemsType)); } - loadExplorer(captionTxt, folderId); + loadExplorer(captionTxt, folderId, null); } @@ -141,7 +141,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace setShowableTypes(itemsType); } - loadExplorer(captionTxt, null); + loadExplorer(captionTxt, null, null); } /** @@ -151,7 +151,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace * @param showOnlyFolders the show only folders * @param baseFolderId the base folder id */ - public WorkspaceExplorerSelectDialog(String captionTxt, boolean showOnlyFolders, String baseFolderId) { + public WorkspaceExplorerSelectDialog(String captionTxt, boolean showOnlyFolders, String baseFolderId, String baseFolderName) { controller = new WorkspaceExplorerController(WorkspaceExplorerConstants.HEIGHT_EXPLORER_PANEL); if(showOnlyFolders){ ItemType[] itemsType = new ItemType[4]; @@ -164,7 +164,7 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace setShowableTypes(itemsType); } - loadExplorer(captionTxt, baseFolderId); + loadExplorer(captionTxt, baseFolderId, baseFolderName); } /** @@ -190,10 +190,29 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace setShowableTypes(showableTypes.toArray(itemsType)); } - loadExplorer(captionTxt, null); + loadExplorer(captionTxt, null, null); } +// /** +// * Load explorer. +// * If folder id is null or empty the explorer loads the root element +// * Otherwise, it loads the folder id +// * +// * @param captionTxt the caption txt +// * @param folderId the folder id +// */ +// private void loadExplorer(String captionTxt, String folderId){ +// +// if(folderId==null || folderId.isEmpty()) +// controller.getEventBus().fireEvent(new LoadRootEvent()); +// else{ +// Item item = new Item(folderId, "", true); +// controller.getEventBus().fireEvent(new LoadFolderEvent(item)); +// } +// initDialog(captionTxt); +// } + /** * Load explorer. * If folder id is null or empty the explorer loads the root element @@ -202,12 +221,12 @@ public class WorkspaceExplorerSelectDialog extends Modal implements HasWorskpace * @param captionTxt the caption txt * @param folderId the folder id */ - private void loadExplorer(String captionTxt, String folderId){ + private void loadExplorer(String captionTxt, String folderId, String baseFolderName){ if(folderId==null || folderId.isEmpty()) controller.getEventBus().fireEvent(new LoadRootEvent()); else{ - Item item = new Item(folderId, "", true); + Item item = new Item(folderId, baseFolderName, true); controller.getEventBus().fireEvent(new LoadFolderEvent(item)); } initDialog(captionTxt); diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java index cab9806..d7e931f 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/client/select/WorkspaceExplorerSelectPanel.java @@ -4,7 +4,6 @@ package org.gcube.portlets.widgets.wsexplorer.client.select; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import org.gcube.portlets.widgets.wsexplorer.client.Util; diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java index 3184394..1f99a6c 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/WorkspaceExplorerServiceImpl.java @@ -10,7 +10,6 @@ import java.util.Map; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; import org.gcube.common.portal.PortalContext; import org.gcube.common.storagehub.client.dsl.StorageHubClient; -import org.gcube.common.storagehub.model.Metadata; import org.gcube.common.storagehub.model.items.AbstractFileItem; import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; @@ -45,9 +44,9 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement */ @Override public org.gcube.portlets.widgets.wsexplorer.shared.Item getRoot( - List showableTypes, - boolean purgeEmpyFolders, - FilterCriteria filterCriteria) + List showableTypes, + boolean purgeEmpyFolders, + FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException { _log.trace("getRoot showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+ filterCriteria); try { @@ -82,10 +81,10 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement */ @Override public org.gcube.portlets.widgets.wsexplorer.shared.Item getFolder( - ItemInterface item, List showableTypes, - boolean purgeEmpyFolders, - FilterCriteria filterCriteria, - boolean loadGcubeProperties) + ItemInterface item, List showableTypes, + boolean purgeEmpyFolders, + FilterCriteria filterCriteria, + boolean loadGcubeProperties) throws WorkspaceNavigatorServiceException { _log.trace("getFolder folderId: "+item.getId()+" showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria); @@ -95,7 +94,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement String userName = pContext.getCurrentUser(getThreadLocalRequest()).getUsername(); String scope = pContext.getCurrentScope(getThreadLocalRequest()); String authorizationToken = pContext.getCurrentUserToken(scope, userName); - SecurityTokenProvider.instance.set(authorizationToken); + SecurityTokenProvider.instance.set(authorizationToken); Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), item.getId()); _log.trace("GetFolder - Replying folder"); @@ -158,14 +157,14 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement String vreFolderId = StorageHubServiceUtil.getVREFoldersId(getThreadLocalRequest()); Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), vreFolderId); item = new org.gcube.portlets.widgets.wsexplorer.shared.Item( - null, - folder.getId(), - WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, - ItemType.FOLDER, - folder.getPath(), - folder.getOwner(), - null, - true, + null, + folder.getId(), + WorkspaceExplorerConstants.VRE_FOLDERS_LABEL, + ItemType.FOLDER, + folder.getPath(), + folder.getOwner(), + null, + true, false); //SET SPECIAL FOLDER /Workspace/MySpecialFolders item.setSpecialFolder(true); @@ -184,9 +183,9 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement */ @Override public org.gcube.portlets.widgets.wsexplorer.shared.Item getMySpecialFolder( - List showableTypes, - boolean purgeEmpyFolders, - FilterCriteria filterCriteria) + List showableTypes, + boolean purgeEmpyFolders, + FilterCriteria filterCriteria) throws WorkspaceNavigatorServiceException { _log.trace("GetMySpecialFolder showableTypes: "+showableTypes+" purgeEmpyFolders: "+purgeEmpyFolders+" filterCriteria: "+filterCriteria); @@ -240,7 +239,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement */ @Override public ArrayList getBreadcrumbsByItemIdentifier( - String itemIdentifier, String itemName, boolean includeItemAsParent) + String itemIdentifier, String itemName, boolean includeItemAsParent) throws Exception { System.out.println("ListParents By Item id "+ itemIdentifier + " name="+itemName); try { @@ -253,7 +252,15 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement } Collections.reverse(toReturn); - String theClickedFolderName = (itemName == null || itemName.equals("")) ? "current folder" : itemName; + + Item theFolder; + if(itemName==null || itemName.isEmpty()){ + theFolder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemIdentifier); + itemName = theFolder.getName(); + } + + String theClickedFolderName = itemName == null || itemName.equals("") ? "current folder" : itemName; + toReturn.add(new org.gcube.portlets.widgets.wsexplorer.shared.Item(itemIdentifier, theClickedFolderName, true)); //this is the last non clickable item on the BC return toReturn; } catch (Exception e) { @@ -287,11 +294,11 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement Item folderItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemIdentifier); String theClickedFolderName = folderItem.getTitle(); - if((theClickedFolderName.compareTo(WorkspaceExplorerConstants.SPECIAL_FOLDERS_NAME) == 0)){ + if(theClickedFolderName.compareTo(WorkspaceExplorerConstants.SPECIAL_FOLDERS_NAME) == 0){ theClickedFolderName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL; } else { ItemType type = ItemBuilder.getItemType(folderItem); - boolean isSharedFolder = (type.equals(ItemType.SHARED_FOLDER) || type.equals(ItemType.VRE_FOLDER )) ? true : false; + boolean isSharedFolder = type.equals(ItemType.SHARED_FOLDER) || type.equals(ItemType.VRE_FOLDER ) ? true : false; if(isSharedFolder){ SharedFolder shared = (SharedFolder) folderItem; theClickedFolderName = shared.isVreFolder() ? shared.getDisplayName() : folderItem.getTitle(); @@ -305,7 +312,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement for (org.gcube.portlets.widgets.wsexplorer.shared.Item item : toWorkOn) { if (item.getId().compareTo(parentLimit)==0) found = true; if (found) - toReturn.add(item); + toReturn.add(item); } return toReturn; } catch (Exception e) { @@ -329,7 +336,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement _log.debug("get Size By ItemId "+ itemId); Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId); _log.trace("workspace retrieved item name: "+wsItem.getName()); - if((wsItem instanceof FolderItem)) //if is a folder no Size + if(wsItem instanceof FolderItem) //if is a folder no Size return 0L; AbstractFileItem file = (AbstractFileItem) wsItem; @@ -351,7 +358,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement _log.debug("get MimeType By ItemId "+ itemId); Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId); _log.trace("workspace retrieved item name: "+wsItem.getName()); - if((wsItem instanceof FolderItem)) //if is a folder no mime + if(wsItem instanceof FolderItem) //if is a folder no mime return null; AbstractFileItem file = (AbstractFileItem) wsItem; return file.getContent().getMimeType();