added acl for folder id
git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-explorer@167821 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
fef8b056a3
commit
de0f8b49ba
|
@ -20,7 +20,7 @@ import org.gcube.common.storagehub.model.items.SharedFolder;
|
|||
import org.gcube.common.storagehub.model.items.VreFolder;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.Util;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||
import org.gcube.portlets.widgets.wsexplorer.server.stohub.Whorespace;
|
||||
import org.gcube.portlets.widgets.wsexplorer.server.stohub.StorageHubServiceUtil;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -92,7 +92,7 @@ public class ItemBuilder {
|
|||
String itemId = item.getId();
|
||||
ItemManagerClient client = AbstractPlugin.item().build();
|
||||
List<? extends Item> theChildren = null;
|
||||
theChildren = client.getChildren(itemId, Whorespace.ACCOUNTING_HL_NODE_NAME);
|
||||
theChildren = client.getChildren(itemId, StorageHubServiceUtil.ACCOUNTING_HL_NODE_NAME);
|
||||
for (Item child : theChildren) {
|
||||
String itemPath = workspaceItemPath+"/"+child.getName();
|
||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
|
||||
|
@ -168,7 +168,7 @@ public class ItemBuilder {
|
|||
String itemId = item.getId();
|
||||
ItemManagerClient client = AbstractPlugin.item().build();
|
||||
List<? extends Item> theChildren = null;
|
||||
theChildren = client.getChildren(itemId, startIdx, limit, Whorespace.ACCOUNTING_HL_NODE_NAME);
|
||||
theChildren = client.getChildren(itemId, startIdx, limit, StorageHubServiceUtil.ACCOUNTING_HL_NODE_NAME);
|
||||
for (Item child : theChildren) {
|
||||
String itemPath = workspaceItemPath+"/"+child.getName();
|
||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
|
||||
|
|
|
@ -13,7 +13,7 @@ import org.gcube.common.storagehub.model.items.Item;
|
|||
import org.gcube.common.storagehub.model.items.SharedFolder;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
||||
import org.gcube.portlets.widgets.wsexplorer.server.stohub.Whorespace;
|
||||
import org.gcube.portlets.widgets.wsexplorer.server.stohub.StorageHubServiceUtil;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.FilterCriteria;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface;
|
||||
|
@ -54,7 +54,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
|
||||
_log.trace("Start getRoot...");
|
||||
Item root = Whorespace.getRoot(getThreadLocalRequest());
|
||||
Item root = StorageHubServiceUtil.getRoot(getThreadLocalRequest());
|
||||
|
||||
org.gcube.portlets.widgets.wsexplorer.shared.Item rootItem = ItemBuilder.getItem(null, root, root.getPath(), showableTypes, filterCriteria, true, false);
|
||||
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
|
||||
|
@ -92,7 +92,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
||||
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
||||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
|
||||
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), item.getId());
|
||||
_log.trace("GetFolder - Replying folder");
|
||||
|
||||
//TO AVOID SLOW CALL getPATH()
|
||||
|
@ -140,7 +140,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
switch(category){
|
||||
case HOME:{
|
||||
Item root = Whorespace.getRoot(getThreadLocalRequest());
|
||||
Item root = StorageHubServiceUtil.getRoot(getThreadLocalRequest());
|
||||
String fullName = pContext.getCurrentUser(getThreadLocalRequest()).getFullname();
|
||||
if(fullName.indexOf(" ")>0){
|
||||
fullName = fullName.substring(0, fullName.indexOf(" "));
|
||||
|
@ -151,8 +151,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
break;
|
||||
}
|
||||
case VRE_FOLDER:{
|
||||
String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
|
||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
|
||||
String vreFolderId = StorageHubServiceUtil.getVREFoldersId(getThreadLocalRequest());
|
||||
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), vreFolderId);
|
||||
item = new org.gcube.portlets.widgets.wsexplorer.shared.Item(
|
||||
null,
|
||||
folder.getId(),
|
||||
|
@ -192,8 +192,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
||||
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
||||
SecurityTokenProvider.instance.set(authorizationToken);
|
||||
String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
|
||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
|
||||
String vreFolderId = StorageHubServiceUtil.getVREFoldersId(getThreadLocalRequest());
|
||||
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), vreFolderId);
|
||||
|
||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemFolder = ItemBuilder.getItem(null, folder, folder.getPath(), showableTypes, filterCriteria, true, false);
|
||||
//OVERRIDING VRE FOLDERS NAME - SET SPECIAL FOLDER /Workspace/MySpecialFolders
|
||||
|
@ -240,7 +240,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
throws Exception {
|
||||
System.out.println("ListParents By Item id "+ itemIdentifier + " name="+itemName);
|
||||
try {
|
||||
List<? extends Item> parents = Whorespace.getParents(getThreadLocalRequest(), itemIdentifier);
|
||||
List<? extends Item> parents = StorageHubServiceUtil.getParents(getThreadLocalRequest(), itemIdentifier);
|
||||
ArrayList<org.gcube.portlets.widgets.wsexplorer.shared.Item> toReturn = new ArrayList<>(parents.size());
|
||||
for (Item item : parents) {
|
||||
if (item instanceof FolderItem)
|
||||
|
@ -273,7 +273,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
parentLimit = parentLimit!=null?parentLimit:"";
|
||||
try {
|
||||
List<? extends Item> parents = Whorespace.getParents(getThreadLocalRequest(), itemIdentifier);
|
||||
List<? extends Item> parents = StorageHubServiceUtil.getParents(getThreadLocalRequest(), itemIdentifier);
|
||||
ArrayList<org.gcube.portlets.widgets.wsexplorer.shared.Item> toWorkOn = new ArrayList<>(parents.size());
|
||||
for (Item item : parents) {
|
||||
if (item instanceof FolderItem)
|
||||
|
@ -281,7 +281,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
}
|
||||
Collections.reverse(toWorkOn);
|
||||
|
||||
Item folderItem = Whorespace.getItem(getThreadLocalRequest(), itemIdentifier);
|
||||
Item folderItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemIdentifier);
|
||||
String theClickedFolderName = folderItem.getTitle();
|
||||
if((theClickedFolderName.compareTo(WorkspaceExplorerConstants.SPECIAL_FOLDERS_NAME) == 0)){
|
||||
theClickedFolderName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
|
||||
|
@ -324,7 +324,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
public Long getSizeByItemId(String itemId) throws Exception {
|
||||
_log.debug("get Size By ItemId "+ itemId);
|
||||
try {
|
||||
Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemId);
|
||||
Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId);
|
||||
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
||||
if((wsItem instanceof FolderItem)) //if is a folder no mime
|
||||
return null;
|
||||
|
@ -352,7 +352,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
public String getMimeType(String itemId) throws Exception {
|
||||
_log.debug("get MimeType By ItemId "+ itemId);
|
||||
try {
|
||||
Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemId);
|
||||
Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId);
|
||||
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
||||
if((wsItem instanceof FolderItem)) //if is a folder no mime
|
||||
return null;
|
||||
|
@ -376,24 +376,12 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
*/
|
||||
@Override
|
||||
public String getUserACLForFolderId(String folderId) throws Exception{
|
||||
//TODO: missing implementation on the back-end
|
||||
return "unknown";
|
||||
// try {
|
||||
// logger.info("Get user ACL to FOLDER id: "+folderId);
|
||||
// Item wsItem = Whorespace.getItem(getThreadLocalRequest(), folderId);
|
||||
// logger.trace("workspace retrieve item name: "+wsItem.getName());
|
||||
//
|
||||
// if(!isASharedFolder(wsItem, false)) {
|
||||
// return "OWNER";
|
||||
// }
|
||||
// else {
|
||||
// return "NOT IMPLEMENTED";//TODO
|
||||
// }
|
||||
// } catch (Exception e) {
|
||||
// logger.error("Error in server get UserACLForFolderId", e);
|
||||
// String error = "An error occurred when getting ACL rules for selected folder. "+e.getMessage();
|
||||
// throw new Exception(error);
|
||||
// }
|
||||
try {
|
||||
return StorageHubServiceUtil.getUserACLForFolderId(getThreadLocalRequest(), folderId);
|
||||
}catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return "UNKNOWN";
|
||||
}
|
||||
|
||||
|
||||
|
@ -536,10 +524,10 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
try {
|
||||
|
||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
|
||||
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), item.getId());
|
||||
|
||||
int searchStartIndex = startIndex < serverStartIndex? serverStartIndex : startIndex;
|
||||
_log.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit);
|
||||
_log.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit);
|
||||
|
||||
//TO AVOID SLOW CALL getPATH()
|
||||
String folderPath = item.getPath()!=null && !item.getPath().isEmpty()?item.getPath():folder.getPath();
|
||||
|
@ -550,7 +538,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
_log.debug("MyLg Total item returning is: "+currentListCount);
|
||||
|
||||
FolderItem hlFolder = (FolderItem) folder;
|
||||
int folderChildrenCount = Whorespace.getItemChildrenCount(getThreadLocalRequest(), hlFolder.getId());
|
||||
int folderChildrenCount = StorageHubServiceUtil.getItemChildrenCount(getThreadLocalRequest(), hlFolder.getId());
|
||||
_log.debug("MyLg Folder children count is: "+folderChildrenCount);
|
||||
|
||||
if(currentListCount == limit || folderChildrenCount==0){
|
||||
|
@ -622,7 +610,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
|||
|
||||
@Override
|
||||
public int getFolderChildrenCount(org.gcube.portlets.widgets.wsexplorer.shared.Item item){
|
||||
return Whorespace.getItemChildrenCount(getThreadLocalRequest(), item.getId());
|
||||
return StorageHubServiceUtil.getItemChildrenCount(getThreadLocalRequest(), item.getId());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package org.gcube.portlets.widgets.wsexplorer.server.stohub;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
@ -11,15 +10,15 @@ import org.gcube.common.scope.api.ScopeProvider;
|
|||
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.FolderItem;
|
||||
import org.gcube.common.storagehub.model.acls.ACL;
|
||||
import org.gcube.common.storagehub.model.items.Item;
|
||||
|
||||
import com.liferay.portal.kernel.log.Log;
|
||||
import com.liferay.portal.kernel.log.LogFactoryUtil;
|
||||
|
||||
|
||||
public class Whorespace {
|
||||
private static Log _log = LogFactoryUtil.getLog(Whorespace.class);
|
||||
public class StorageHubServiceUtil {
|
||||
private static Log _log = LogFactoryUtil.getLog(StorageHubServiceUtil.class);
|
||||
public static final String ACCOUNTING_HL_NODE_NAME = "hl:accounting";
|
||||
|
||||
public static Item getRoot(HttpServletRequest request) {
|
||||
|
@ -86,6 +85,30 @@ public class Whorespace {
|
|||
return toReturn;
|
||||
}
|
||||
|
||||
|
||||
public static String getUserACLForFolderId(HttpServletRequest request, String folderId) {
|
||||
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);
|
||||
|
||||
Item theFolder = getItem(request, folderId);
|
||||
if (!theFolder.isShared()) {
|
||||
return "OWNER";
|
||||
} else {
|
||||
ItemManagerClient client = AbstractPlugin.item().build();
|
||||
List<ACL> acls = client.getACL(folderId);
|
||||
for (ACL acl : acls) {
|
||||
if (acl.getPricipal().compareTo(userName) == 0)
|
||||
return acl.getAccessTypes().toString();
|
||||
}
|
||||
}
|
||||
return "NO PERMISSIONS";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
Loading…
Reference in New Issue