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.common.storagehub.model.items.VreFolder;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.Util;
|
import org.gcube.portlets.widgets.wsexplorer.client.Util;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
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.FilterCriteria;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemType;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -92,7 +92,7 @@ public class ItemBuilder {
|
||||||
String itemId = item.getId();
|
String itemId = item.getId();
|
||||||
ItemManagerClient client = AbstractPlugin.item().build();
|
ItemManagerClient client = AbstractPlugin.item().build();
|
||||||
List<? extends Item> theChildren = null;
|
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) {
|
for (Item child : theChildren) {
|
||||||
String itemPath = workspaceItemPath+"/"+child.getName();
|
String itemPath = workspaceItemPath+"/"+child.getName();
|
||||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
|
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();
|
String itemId = item.getId();
|
||||||
ItemManagerClient client = AbstractPlugin.item().build();
|
ItemManagerClient client = AbstractPlugin.item().build();
|
||||||
List<? extends Item> theChildren = null;
|
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) {
|
for (Item child : theChildren) {
|
||||||
String itemPath = workspaceItemPath+"/"+child.getName();
|
String itemPath = workspaceItemPath+"/"+child.getName();
|
||||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemChild = getItem(item, child, itemPath, showableTypes, filterCriteria, false, loadGcubeProperties);
|
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.common.storagehub.model.items.SharedFolder;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
import org.gcube.portlets.widgets.wsexplorer.client.WorkspaceExplorerConstants;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.client.rpc.WorkspaceExplorerService;
|
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.FilterCriteria;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemCategory;
|
||||||
import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface;
|
import org.gcube.portlets.widgets.wsexplorer.shared.ItemInterface;
|
||||||
|
@ -54,7 +54,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
SecurityTokenProvider.instance.set(authorizationToken);
|
SecurityTokenProvider.instance.set(authorizationToken);
|
||||||
|
|
||||||
_log.trace("Start getRoot...");
|
_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);
|
org.gcube.portlets.widgets.wsexplorer.shared.Item rootItem = ItemBuilder.getItem(null, root, root.getPath(), showableTypes, filterCriteria, true, false);
|
||||||
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
|
rootItem.setName(WorkspaceExplorerConstants.HOME_LABEL);
|
||||||
|
@ -92,7 +92,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
||||||
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
||||||
SecurityTokenProvider.instance.set(authorizationToken);
|
SecurityTokenProvider.instance.set(authorizationToken);
|
||||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
|
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), item.getId());
|
||||||
_log.trace("GetFolder - Replying folder");
|
_log.trace("GetFolder - Replying folder");
|
||||||
|
|
||||||
//TO AVOID SLOW CALL getPATH()
|
//TO AVOID SLOW CALL getPATH()
|
||||||
|
@ -140,7 +140,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
|
|
||||||
switch(category){
|
switch(category){
|
||||||
case HOME:{
|
case HOME:{
|
||||||
Item root = Whorespace.getRoot(getThreadLocalRequest());
|
Item root = StorageHubServiceUtil.getRoot(getThreadLocalRequest());
|
||||||
String fullName = pContext.getCurrentUser(getThreadLocalRequest()).getFullname();
|
String fullName = pContext.getCurrentUser(getThreadLocalRequest()).getFullname();
|
||||||
if(fullName.indexOf(" ")>0){
|
if(fullName.indexOf(" ")>0){
|
||||||
fullName = fullName.substring(0, fullName.indexOf(" "));
|
fullName = fullName.substring(0, fullName.indexOf(" "));
|
||||||
|
@ -151,8 +151,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case VRE_FOLDER:{
|
case VRE_FOLDER:{
|
||||||
String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
|
String vreFolderId = StorageHubServiceUtil.getVREFoldersId(getThreadLocalRequest());
|
||||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
|
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), vreFolderId);
|
||||||
item = new org.gcube.portlets.widgets.wsexplorer.shared.Item(
|
item = new org.gcube.portlets.widgets.wsexplorer.shared.Item(
|
||||||
null,
|
null,
|
||||||
folder.getId(),
|
folder.getId(),
|
||||||
|
@ -192,8 +192,8 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
String scope = pContext.getCurrentScope(getThreadLocalRequest());
|
||||||
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
String authorizationToken = pContext.getCurrentUserToken(scope, userName);
|
||||||
SecurityTokenProvider.instance.set(authorizationToken);
|
SecurityTokenProvider.instance.set(authorizationToken);
|
||||||
String vreFolderId = Whorespace.getVREFoldersId(getThreadLocalRequest());
|
String vreFolderId = StorageHubServiceUtil.getVREFoldersId(getThreadLocalRequest());
|
||||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), vreFolderId);
|
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), vreFolderId);
|
||||||
|
|
||||||
org.gcube.portlets.widgets.wsexplorer.shared.Item itemFolder = ItemBuilder.getItem(null, folder, folder.getPath(), showableTypes, filterCriteria, true, false);
|
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
|
//OVERRIDING VRE FOLDERS NAME - SET SPECIAL FOLDER /Workspace/MySpecialFolders
|
||||||
|
@ -240,7 +240,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
throws Exception {
|
throws Exception {
|
||||||
System.out.println("ListParents By Item id "+ itemIdentifier + " name="+itemName);
|
System.out.println("ListParents By Item id "+ itemIdentifier + " name="+itemName);
|
||||||
try {
|
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());
|
ArrayList<org.gcube.portlets.widgets.wsexplorer.shared.Item> toReturn = new ArrayList<>(parents.size());
|
||||||
for (Item item : parents) {
|
for (Item item : parents) {
|
||||||
if (item instanceof FolderItem)
|
if (item instanceof FolderItem)
|
||||||
|
@ -273,7 +273,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
|
|
||||||
parentLimit = parentLimit!=null?parentLimit:"";
|
parentLimit = parentLimit!=null?parentLimit:"";
|
||||||
try {
|
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());
|
ArrayList<org.gcube.portlets.widgets.wsexplorer.shared.Item> toWorkOn = new ArrayList<>(parents.size());
|
||||||
for (Item item : parents) {
|
for (Item item : parents) {
|
||||||
if (item instanceof FolderItem)
|
if (item instanceof FolderItem)
|
||||||
|
@ -281,7 +281,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
}
|
}
|
||||||
Collections.reverse(toWorkOn);
|
Collections.reverse(toWorkOn);
|
||||||
|
|
||||||
Item folderItem = Whorespace.getItem(getThreadLocalRequest(), itemIdentifier);
|
Item folderItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemIdentifier);
|
||||||
String theClickedFolderName = folderItem.getTitle();
|
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;
|
theClickedFolderName = WorkspaceExplorerConstants.VRE_FOLDERS_LABEL;
|
||||||
|
@ -324,7 +324,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
public Long getSizeByItemId(String itemId) throws Exception {
|
public Long getSizeByItemId(String itemId) throws Exception {
|
||||||
_log.debug("get Size By ItemId "+ itemId);
|
_log.debug("get Size By ItemId "+ itemId);
|
||||||
try {
|
try {
|
||||||
Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemId);
|
Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId);
|
||||||
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
_log.trace("workspace retrieve 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;
|
return null;
|
||||||
|
@ -352,7 +352,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
public String getMimeType(String itemId) throws Exception {
|
public String getMimeType(String itemId) throws Exception {
|
||||||
_log.debug("get MimeType By ItemId "+ itemId);
|
_log.debug("get MimeType By ItemId "+ itemId);
|
||||||
try {
|
try {
|
||||||
Item wsItem = Whorespace.getItem(getThreadLocalRequest(), itemId);
|
Item wsItem = StorageHubServiceUtil.getItem(getThreadLocalRequest(), itemId);
|
||||||
_log.trace("workspace retrieve item name: "+wsItem.getName());
|
_log.trace("workspace retrieve 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;
|
return null;
|
||||||
|
@ -376,24 +376,12 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getUserACLForFolderId(String folderId) throws Exception{
|
public String getUserACLForFolderId(String folderId) throws Exception{
|
||||||
//TODO: missing implementation on the back-end
|
try {
|
||||||
return "unknown";
|
return StorageHubServiceUtil.getUserACLForFolderId(getThreadLocalRequest(), folderId);
|
||||||
// try {
|
}catch(Exception e) {
|
||||||
// logger.info("Get user ACL to FOLDER id: "+folderId);
|
e.printStackTrace();
|
||||||
// Item wsItem = Whorespace.getItem(getThreadLocalRequest(), folderId);
|
}
|
||||||
// logger.trace("workspace retrieve item name: "+wsItem.getName());
|
return "UNKNOWN";
|
||||||
//
|
|
||||||
// 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);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -536,7 +524,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
Item folder = Whorespace.getItem(getThreadLocalRequest(), item.getId());
|
Item folder = StorageHubServiceUtil.getItem(getThreadLocalRequest(), item.getId());
|
||||||
|
|
||||||
int searchStartIndex = startIndex < serverStartIndex? serverStartIndex : startIndex;
|
int searchStartIndex = startIndex < serverStartIndex? serverStartIndex : startIndex;
|
||||||
_log.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit);
|
_log.debug("MyLg getFolder searchIndex: "+searchStartIndex+", limit: "+limit);
|
||||||
|
@ -550,7 +538,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
_log.debug("MyLg Total item returning is: "+currentListCount);
|
_log.debug("MyLg Total item returning is: "+currentListCount);
|
||||||
|
|
||||||
FolderItem hlFolder = (FolderItem) folder;
|
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);
|
_log.debug("MyLg Folder children count is: "+folderChildrenCount);
|
||||||
|
|
||||||
if(currentListCount == limit || folderChildrenCount==0){
|
if(currentListCount == limit || folderChildrenCount==0){
|
||||||
|
@ -622,7 +610,7 @@ public class WorkspaceExplorerServiceImpl extends RemoteServiceServlet implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getFolderChildrenCount(org.gcube.portlets.widgets.wsexplorer.shared.Item item){
|
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;
|
package org.gcube.portlets.widgets.wsexplorer.server.stohub;
|
||||||
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
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.plugins.AbstractPlugin;
|
||||||
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
import org.gcube.common.storagehub.client.proxies.ItemManagerClient;
|
||||||
import org.gcube.common.storagehub.client.proxies.WorkspaceManagerClient;
|
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 org.gcube.common.storagehub.model.items.Item;
|
||||||
|
|
||||||
import com.liferay.portal.kernel.log.Log;
|
import com.liferay.portal.kernel.log.Log;
|
||||||
import com.liferay.portal.kernel.log.LogFactoryUtil;
|
import com.liferay.portal.kernel.log.LogFactoryUtil;
|
||||||
|
|
||||||
|
|
||||||
public class Whorespace {
|
public class StorageHubServiceUtil {
|
||||||
private static Log _log = LogFactoryUtil.getLog(Whorespace.class);
|
private static Log _log = LogFactoryUtil.getLog(StorageHubServiceUtil.class);
|
||||||
public static final String ACCOUNTING_HL_NODE_NAME = "hl:accounting";
|
public static final String ACCOUNTING_HL_NODE_NAME = "hl:accounting";
|
||||||
|
|
||||||
public static Item getRoot(HttpServletRequest request) {
|
public static Item getRoot(HttpServletRequest request) {
|
||||||
|
@ -86,6 +85,30 @@ public class Whorespace {
|
||||||
return toReturn;
|
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