diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java index 5b38dec..5eea715 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/AppControllerExplorer.java @@ -147,7 +147,6 @@ import org.gcube.portlets.widgets.workspacesharingwidget.client.SmartConstants; import org.gcube.portlets.widgets.workspacesharingwidget.client.WorkspaceSmartSharingController; import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare; import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel; -import org.gcube.vomanagement.usermanagement.ws.ListUsers; import com.extjs.gxt.ui.client.Registry; import com.extjs.gxt.ui.client.event.BaseEvent; @@ -2161,44 +2160,60 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt */ private void showAddAdministratorsDialog(final FileModel file) { - org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel internalFile = new org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel(file.getIdentifier(), file.getName(), file.isDirectory()); - - WorkspaceSmartSharingController controller = new WorkspaceSmartSharingController(internalFile, null, false, false); - + final org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel internalFile = new org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel(file.getIdentifier(), file.getName(), file.isDirectory()); + SmartConstants.HEADER_TITLE = "Add Administrators to: "+file.getName(); SmartConstants.SHARE_WITH_USERS = "Manage with users"; SmartConstants.ERROR_NO_USER_SELECTED = "You must pick at least one user to add to Administrators"; - final SmartShare sharingWindow = controller.getSharingDialog(); + rpcWorkspaceService.getAdministratorsByFolderId(file.getIdentifier(), new AsyncCallback>() { - sharingWindow.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { - @Override - public void handleEvent(BaseEvent be) { - - if(sharingWindow.isValidForm(true)){ - //THAT'S OK - - List listUsers = sharingWindow.getSharedListUsers(); //@return the selected contacts (as InfoContactModel) - - if(listUsers!=null && listUsers.size()>0){ - - List logins = new ArrayList(listUsers.size()); - - for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : listUsers) { - logins.add(infoContactModel.getLogin()); - } - - doAddAdministratorToFolderId(file, logins); - } + public void onFailure(Throwable arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void onSuccess(List admins) { + + List alreadyAdmins = new ArrayList(); + for (InfoContactModel contact : admins) { + alreadyAdmins.add(new CredentialModel(contact.getId(), contact.getLogin(), contact.isGroup())); } - + + WorkspaceSmartSharingController controller = new WorkspaceSmartSharingController(internalFile, alreadyAdmins, false, false); + + final SmartShare sharingWindow = controller.getSharingDialog(); + + sharingWindow.getButtonById(Dialog.OK).addListener(Events.Select, new Listener() { + + @Override + public void handleEvent(BaseEvent be) { + + if(sharingWindow.isValidForm(true)){ + + List listUsers = sharingWindow.getSharedListUsers(); //@return the selected contacts (as InfoContactModel) + + if(listUsers!=null && listUsers.size()>0){ + + List logins = new ArrayList(listUsers.size()); + + for (org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel infoContactModel : listUsers) { + logins.add(infoContactModel.getLogin()); + } + + doAddAdministratorToFolderId(file, logins); + } + } + + } + }); + + sharingWindow.show(); + } }); - - - sharingWindow.show(); - } diff --git a/src/main/java/org/gcube/portlets/user/workspace/client/interfaces/GXTFolderItemTypeEnum.java b/src/main/java/org/gcube/portlets/user/workspace/client/interfaces/GXTFolderItemTypeEnum.java index 371c4bc..d282c4a 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/client/interfaces/GXTFolderItemTypeEnum.java +++ b/src/main/java/org/gcube/portlets/user/workspace/client/interfaces/GXTFolderItemTypeEnum.java @@ -7,7 +7,6 @@ import java.io.Serializable; * */ public enum GXTFolderItemTypeEnum implements Serializable { -// AQUAMAPS_ITEM("AquaMaps Item"), EXTERNAL_FILE("External File"), EXTERNAL_IMAGE("External Image"), EXTERNAL_PDF_FILE("External PDF File"), @@ -28,23 +27,6 @@ public enum GXTFolderItemTypeEnum implements Serializable { ANNOTATION("Annotation"), FOLDER("Folder"), SHARED_FOLDER("Shared Folder"); -// EXTERNAL_IMAGE, -// EXTERNAL_FILE, -// EXTERNAL_PDF_FILE, -// EXTERNAL_URL, -// QUERY, -// REPORT_TEMPLATE, -// REPORT, -// DOCUMENT, -// METADATA, -// PDF_DOCUMENT, -// IMAGE_DOCUMENT, -// URL_DOCUMENT, -// TIME_SERIES, -// AQUAMAPS_ITEM, -// WORKFLOW_REPORT, -// WORKFLOW_TEMPLATE, -// UNKNOWN_TYPE; protected String label; 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 dfadfff..21d2a4d 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 @@ -255,4 +255,6 @@ public interface GWTWorkspaceService extends RemoteService{ boolean addAdministratorsByFolderId(String folderId, List listContactIds) throws Exception; + List getAdministratorsByFolderId(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 ba09411..37e056a 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 @@ -207,4 +207,9 @@ public interface GWTWorkspaceServiceAsync { void addAdministratorsByFolderId(String folderId, List listLogins, AsyncCallback callback); + /** + * @param identifier + */ + void getAdministratorsByFolderId(String identifier, AsyncCallback> callback); + } diff --git a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java index bf22ebf..d7644ab 100644 --- a/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java +++ b/src/main/java/org/gcube/portlets/user/workspace/server/GWTWorkspaceBuilder.java @@ -899,9 +899,12 @@ public class GWTWorkspaceBuilder { public List buildGxtInfoContactsFromPortalLogins(List listPortalLogin){ List listContact = new ArrayList(); - for (String portalLogin : listPortalLogin) - listContact.add(buildGxtInfoContactFromPortalLogin(portalLogin)); - + + if(listPortalLogin!=null && listPortalLogin.size()>0){ + for (String portalLogin : listPortalLogin) + listContact.add(buildGxtInfoContactFromPortalLogin(portalLogin)); + } + return listContact; } 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 63ce180..36d3d88 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 @@ -3084,19 +3084,9 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item; - - //TODO GET ADMINISTRATORS FROM HL - //FAKE -// admins.add(new InfoContactModel("francesco.mangiacrapa","francesco.mangiacrapa", "Francesco Mangiacrapa", false)); - /* - for (String login : listContactLogins) { - workspaceLogger.info("Setting administator: "+login); - sharedFolder.setAdmin(login); - } - return true; - - */ - return admins; + GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder(); + sharedFolder.getAdministrators(); + return builder.buildGxtInfoContactsFromPortalLogins(sharedFolder.getAdministrators()); }else throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER);