From 9067bee0fab89103e1778dea4b5ef91de2473bb0 Mon Sep 17 00:00:00 2001 From: Massimiliano Assante Date: Tue, 29 May 2018 13:16:45 +0000 Subject: [PATCH] ok git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@167824 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../server/WorkspaceExplorerServiceImpl.java | 80 ++++++------------- .../server/stohub/StorageHubServiceUtil.java | 14 +++- 2 files changed, 37 insertions(+), 57 deletions(-) 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 8a5baa1..684c220 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 @@ -1,6 +1,7 @@ package org.gcube.portlets.widgets.wsexplorer.server; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; @@ -418,62 +419,31 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement * @throws Exception the exception */ @Override - public org.gcube.portlets.widgets.wsexplorer.shared.Item createFolder(String nameFolder, String description, String parentId) throws Exception { + public org.gcube.portlets.widgets.wsexplorer.shared.Item createFolder(String folderName, String description, String parentId) throws Exception { - _log.debug("creating folder: "+nameFolder +", parent id: "+parentId); - //TODO - return null; - // try { - // - // if(parentId==null || parentId.isEmpty()) - // throw new Exception("Parent id is null or empty"); - // - // if(nameFolder == null) - // nameFolder = "Empty Folder"; - // - // Workspace workspace = getWorkspace(); - // WorkspaceFolder wsFolder = workspace.createFolder(nameFolder, description, parentId); - // - //// _log.info("Path returned by HL: "+wsFolder.getPath()); - // - // List allTypes = Arrays.asList(ItemType.values()); - // - // org.gcube.portlets.widgets.wsexplorer.shared.Item parent = null; - // try{ - // String parentPath = wsFolder.getParent()!=null?wsFolder.getParent().getPath():""; - // parent = ItemBuilder.getItem(null, wsFolder.getParent(), parentPath, allTypes, null, false, false); - // }catch(Exception e){ - // logger.error("Get parent thown an exception, is it the root id? "+parentId); - // } - // - // //TODO PATCH TO AVOID PROBLEM ON GETPATH. FOR EXAMPLE WHEN PARENT IS ROOT - // String itemPath = null; - // try{ - // itemPath = wsFolder.getPath(); - // logger.info("itemPath: "+itemPath); - // }catch(Exception e){ - // logger.error("Get path thrown an exception, for id: "+wsFolder.getId() +" name: "+wsFolder.getName(), e); - //// itemPath= wsFolder.isFolder()?workspace.getRoot().getPath()+"/"+wsFolder.getName():workspace.getRoot().getPath(); - // //PATCH TO RETURN ABSOLUTE PATH - // itemPath= workspace.getRoot().getPath()+"/"+wsFolder.getName(); - // logger.warn("returning base path: "+itemPath); - // } - // - // return ItemBuilder.getItem(parent, wsFolder, itemPath, allTypes, null, false, false); - // - // } catch(InsufficientPrivilegesException e){ - // String error = "Insufficient Privileges to create the folder"; - // logger.error(error, e); - // throw new Exception(error); - // } catch (ItemAlreadyExistException e) { - // String error = "An error occurred on creating folder, " +e.getMessage(); - // logger.error(error, e); - // throw new Exception(error); - // } catch (Exception e) { - // String error = "An error occurred on the sever during creating folder. Try again"; - // logger.error(error, e); - // throw new Exception(error); - // } + _log.debug("creating folder: "+folderName +", parent id: "+parentId); + if(parentId==null || parentId.isEmpty()) + throw new Exception("Parent id is null or empty"); + if(folderName == null) + folderName = "New Folder"; + try { + FolderItem createdFolder = StorageHubServiceUtil.createFolder(getThreadLocalRequest(), parentId, folderName, description); + _log.info("Path returned by StoHub: "+createdFolder.getPath()); + List allTypes = Arrays.asList(ItemType.values()); + return ItemBuilder.getItem(null, createdFolder, createdFolder.getPath(), allTypes, null, false, false); +// } catch(InsufficientPrivilegesException e){ +// String error = "Insufficient Privileges to create the folder"; +// _log.error(error, e); +// throw new Exception(error); +// } catch (ItemAlreadyExistException e) { +// String error = "An error occurred on creating folder, " +e.getMessage(); +// _log.error(error, e); +// throw new Exception(error); + } catch (Exception e) { + String error = "An error occurred on the sever during creating folder. Try again"; + _log.error(error, e); + throw new Exception(error); + } } diff --git a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/StorageHubServiceUtil.java b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/StorageHubServiceUtil.java index de46c97..25e716b 100644 --- a/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/StorageHubServiceUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/wsexplorer/server/stohub/StorageHubServiceUtil.java @@ -11,9 +11,9 @@ 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.acls.ACL; +import org.gcube.common.storagehub.model.items.FolderItem; import org.gcube.common.storagehub.model.items.Item; import org.gcube.common.storagehub.model.items.SharedFolder; -import org.gcube.common.storagehub.model.items.VreFolder; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; @@ -58,6 +58,17 @@ public class StorageHubServiceUtil { List toReturn = client.getAnchestors(itemId, ACCOUNTING_HL_NODE_NAME); return toReturn; } + + public static FolderItem createFolder(HttpServletRequest request, String parentId, String name, String description) { + PortalContext pContext = PortalContext.getConfiguration(); + String userName = pContext.getCurrentUser(request).getUsername(); + String scope = pContext.getCurrentScope(request); + String authorizationToken = pContext.getCurrentUserToken(scope, userName); + ScopeProvider.instance.set(scope); + SecurityTokenProvider.instance.set(authorizationToken); + ItemManagerClient client = AbstractPlugin.item().build(); + return client.createFolder(parentId, userName, description); + } /** * @@ -106,7 +117,6 @@ public class StorageHubServiceUtil { boolean found = false; //this is needed because in case o VRE Foder the permission is assigned ot the group and not to the user. for (ACL acl : acls) { - System.out.println("ACL: "+acl.getPricipal().toString() + " types: "+ acl.getAccessTypes().toString()); if (acl.getPricipal().compareTo(userName) == 0) { found = true; return acl.getAccessTypes().get(0).toString();