From 505d0b8d6f48f912fcee8244aec4b1a3c09c695c Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Wed, 24 Sep 2014 10:55:32 +0000 Subject: [PATCH] changed method getPrivilege git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@100183 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/rpc/GWTWorkspaceService.java | 2 + .../client/rpc/GWTWorkspaceServiceAsync.java | 3 + .../view/sharing/DialogShareFolder.java | 29 ++++++++- .../view/sharing/PanelTogglePermission.java | 64 +++++-------------- .../server/GWTWorkspaceServiceImpl.java | 41 ++++++++++++ 5 files changed, 89 insertions(+), 50 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java index 086c418..e2bedc4 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceService.java @@ -258,4 +258,6 @@ public interface GWTWorkspaceService extends RemoteService{ List getAdministratorsByFolderId(String identifier) throws Exception; + WorkspaceACL getACLBySharedFolderId(String identifier) throws Exception; + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java index 07f878d..610bff9 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/rpc/GWTWorkspaceServiceAsync.java @@ -212,5 +212,8 @@ public interface GWTWorkspaceServiceAsync { * @param identifier */ void getAdministratorsByFolderId(String identifier, AsyncCallback> callback); + + + void getACLBySharedFolderId(String identifier, AsyncCallback callback); } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java index 77c9b09..ee5d4f1 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/DialogShareFolder.java @@ -86,7 +86,7 @@ public class DialogShareFolder extends Dialog { * @param folder * @param type */ - public DialogShareFolder(String folderParentName, FileModel folder, HandlerManager eventBus) { + public DialogShareFolder(String folderParentName, final FileModel folder, HandlerManager eventBus) { initLayout(folderParentName); this.parentFolder = folder; this.setIcon(Resources.getIconShareFolder()); @@ -154,6 +154,11 @@ public class DialogShareFolder extends Dialog { @Override public void onSuccess(List result) { permission = new PanelTogglePermission(result); + + //ONLY IF FOLDER IS ALREADY SHARED, LOOADING CURRENT ACL FROM HL + if(folder.isShared()) + selectAclForFolder(folder); + hpPermission.add(permission); hpPermission.layout(); layout(); @@ -502,4 +507,26 @@ public class DialogShareFolder extends Dialog { return permission.getSelectedACL(); return null; } + + private void selectAclForFolder(FileModel folder){ + GWT.log("Loading ACL to: "+folder); + AppControllerExplorer.rpcWorkspaceService.getACLBySharedFolderId(folder.getIdentifier(), new AsyncCallback() { + + @Override + public void onFailure(Throwable arg0) { + GWT.log("An error occurred on selecting current ACL "+arg0); + + } + + @Override + public void onSuccess(WorkspaceACL arg0) { + GWT.log("Loaded ACL "+arg0); + permission.selectACL(arg0); + hpPermission.layout(); + layout(); + } + }); + + } + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java index b6eba89..f993fa5 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/view/sharing/PanelTogglePermission.java @@ -1,5 +1,6 @@ package org.gcube.portlets.user.workspace.client.view.sharing; +import java.util.ArrayList; import java.util.List; import org.gcube.portlets.user.workspace.client.util.GetPermissionIconByACL; @@ -21,11 +22,12 @@ import com.google.gwt.user.client.ui.AbstractImagePrototype; public class PanelTogglePermission extends LayoutContainer { protected static final String WORKSPACEACLGROUP = "WORKSPACEACLGROUP"; -// private ButtonGroup buttonGroup; - + private HorizontalPanel hp = new HorizontalPanel(); private WorkspaceACL selectedAcl = null; + + private List toggles; public PanelTogglePermission(List acls) { @@ -36,15 +38,14 @@ public class PanelTogglePermission extends LayoutContainer { hp.mask("Loading ACLs"); hp.setVerticalAlign(VerticalAlignment.MIDDLE); hp.setStyleAttribute("padding-left", "35px"); + toggles = new ArrayList(acls.size()); for (WorkspaceACL acl : acls) { if(acl.getUserType().equals(USER_TYPE.OTHER)){ ToggleButton toggle = createToggle(acl); toggle.setToggleGroup(WORKSPACEACLGROUP); toggle.setStyleAttribute("margin-right", "10px"); -// buttonGroup.add(toggle); -// listToogle.add(toggle); -// add(toggle); + toggles.add(toggle); hp.add(toggle); } } @@ -82,59 +83,24 @@ public class PanelTogglePermission extends LayoutContainer { if(img!=null) bToggle.setIcon(img); -// setIcon(bToggle, acl.getId()); return bToggle; - } -// private void setIcon(ToggleButton bToggle, String id){ -// -// if(id.compareTo("ADMINISTRATOR")==0){ -// -// }else if(id.compareTo("READ_ONLY")==0){ -// bToggle.setIcon(Resources.getIconReadOnly()); -// }else if(id.compareTo("WRITE_OWNER")==0){ -// bToggle.setIcon(Resources.getIconWriteOwn()); -// }else if(id.compareTo("WRITE_ALL")==0){ -// bToggle.setIcon(Resources.getIconWriteAll()); -// } -// -// } public WorkspaceACL getSelectedACL() { GWT.log("Selected ACL is: "+selectedAcl); return selectedAcl; } - - /* - public List getCheckedGroupList() { - - List listDS = new ArrayList(); - - List values = new ArrayList(); - - if (radioGroup.getValue()!=null){ - Radio radio = radioGroup.getValue(); - values.add((Radio) radio); - } - else { - List> listChecks = radioGroup.getAll(); - for (Field field : listChecks) { - values.add((Radio) field); + + public void selectACL(WorkspaceACL acl){ + for (ToggleButton toogle : toggles) { + GWT.log("Comparing toogle.getId(): "+toogle.getId() +" and acl.getId(): "+acl.getId()); + if(toogle.getId().compareTo(acl.getId())==0){ + GWT.log("Toogle: "+acl); + toogle.toggle(true); + selectedAcl = acl; + return; } } - - for (Radio radio : values) { - if (radio.isEnabled()){ - WorkspaceACL acl = (WorkspaceACL) radio.getData(WORKSPACEACL); - listDS.add(acl); - } - } - - if (listDS.size() == 0) - return null; - - return listDS; } - */ } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java index 2146708..5df42db 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceServiceImpl.java @@ -3105,5 +3105,46 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT throw new Exception(error); } } + + /* (non-Javadoc) + * @see org.gcube.portlets.user.workspace.client.rpc.GWTWorkspaceService#getACLBySharedFolderId(java.lang.String) + */ + @Override + public WorkspaceACL getACLBySharedFolderId(String identifier) throws Exception { + workspaceLogger.info("Getting ACLBySharedFolderId: "+identifier); + if(identifier==null || identifier.isEmpty()){ + workspaceLogger.warn("Getting ACLBySharedFolderId identifier is null or empty, returning null"); + return null; + } + try { + + Workspace workspace = getWorkspace(); + WorkspaceItem item = workspace.getItem(identifier); + + if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ + WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item; + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + + workspaceLogger.info("Read getPrivilege from HL: "+sharedFolder.getACLUser()); + List wsAcls = builder.getWorkspaceACLFromACLs(Arrays.asList(sharedFolder.getPrivilege())); + + if(wsAcls==null || wsAcls.isEmpty()){ + workspaceLogger.info("Converted ACLBySharedFolderId is null or empty, returning null"); + return null; + } + + workspaceLogger.info("Returning first acl with id: "+wsAcls.get(0).getId()); + return wsAcls.get(0); + + }else + throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER); + + } catch (Exception e) { + workspaceLogger.error("Error in server ACLBySharedFolderId: "+e.getMessage()); + workspaceLogger.error(e); + String error = ConstantsExplorer.SERVER_ERROR +" getting ACL of WorkspaceSharedFolder"; + throw new Exception(error); + } + } }