From e4ddb99c700256c4354adc4ea65909e446b1b3f9 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Thu, 18 Sep 2014 17:02:41 +0000 Subject: [PATCH] enhancements on realizing a Simple Multi-Drag Panel to contacts git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@100034 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 3 ++ pom.xml | 2 +- .../client/SimpleMultiDragContact.java | 41 ++++++++++++++----- .../WorkspaceSharingWidgetEntryPoint.java | 25 ++++++++++- .../client/rpc/WorkspaceSharingService.java | 3 +- .../client/view/sharing/UserStore.java | 6 +-- .../server/GWTWorkspaceSharingBuilder.java | 13 +++--- .../server/WorkspaceSharingServiceImpl.java | 36 ++++++++++------ .../server/util/UserUtil.java | 2 - .../shared/InfoContactModel.java | 28 ++++++++++--- 10 files changed, 114 insertions(+), 45 deletions(-) diff --git a/.classpath b/.classpath index d0909a5..985b709 100644 --- a/.classpath +++ b/.classpath @@ -30,5 +30,8 @@ + + + diff --git a/pom.xml b/pom.xml index 05858c7..c14b3ef 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.gcube.portlets.widgets workspace-sharing-widget jar - 1.2.0-SNAPSHOT + 1.3.0-SNAPSHOT gCube Workspace Sharing Widget gCube Workspace Sharing Widget diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/SimpleMultiDragContact.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/SimpleMultiDragContact.java index 431e0c6..c3f5e12 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/SimpleMultiDragContact.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/SimpleMultiDragContact.java @@ -23,7 +23,7 @@ public class SimpleMultiDragContact { private UserStore userStore = new UserStore(); private LOAD_CONTACTS_AS loadContactAs; - public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR, NONE} + public static enum LOAD_CONTACTS_AS{SHARED_USER, ADMINISTRATOR} private MultiDragContact multiDragContact = new MultiDragContact(); private List targets = new ArrayList(); /** @@ -31,11 +31,33 @@ public class SimpleMultiDragContact { */ public SimpleMultiDragContact(LOAD_CONTACTS_AS load, String workspaceItemId, final boolean readGroupsFromHL, final boolean readGroupsFromPortal) { this.loadContactAs = load; - - switch (loadContactAs) { + case ADMINISTRATOR: + + //LOADING LIST OF ALREADY SHARED USER + userStore.getAdministratorsByFolderId(workspaceItemId, new AsyncCallback>() { + @Override + public void onFailure(Throwable caught) { + GWT.log("Error on loading admnistrators"); + } + + @Override + public void onSuccess(List result) { + GWT.log("Returned "+result.size()+" admin/s"); + for (InfoContactModel infoContactModel : result) { + if(infoContactModel.getName()!=null){ + multiDragContact.addTargetContact(infoContactModel); + targets.add(infoContactModel); + } + } + + loadAllContacts(readGroupsFromHL, readGroupsFromPortal); + + } + }); + break; case SHARED_USER: @@ -46,7 +68,7 @@ public class SimpleMultiDragContact { @Override public void onSuccess(List result) { - + GWT.log("Returned "+result.size()+" contact/s"); for (InfoContactModel infoContactModel : result) { if(infoContactModel.getName()!=null){ multiDragContact.addTargetContact(infoContactModel); @@ -66,10 +88,6 @@ public class SimpleMultiDragContact { break; - case NONE: - - break; - default: break; } @@ -82,7 +100,6 @@ public class SimpleMultiDragContact { } private void loadAllContacts(boolean readGroupsFromHL, boolean readGroupsFromPortal){ - userStore.getListContact(addSourceContacts, false, readGroupsFromHL, readGroupsFromPortal); } @@ -102,5 +119,9 @@ public class SimpleMultiDragContact { multiDragContact.addSourceContacts(exclusiveContacts); } } - }; + }; + + public MultiDragContact getMultiDragContact() { + return multiDragContact; + } } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java index 944b5ff..ed171c5 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/WorkspaceSharingWidgetEntryPoint.java @@ -1,5 +1,6 @@ package org.gcube.portlets.widgets.workspacesharingwidget.client; +import org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragContact.LOAD_CONTACTS_AS; import org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.SmartShare; import org.gcube.portlets.widgets.workspacesharingwidget.shared.CredentialModel; import org.gcube.portlets.widgets.workspacesharingwidget.shared.FileModel; @@ -21,7 +22,7 @@ import com.google.gwt.user.client.ui.RootPanel; */ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint { - public static String ITEMID = "3f461fcf-c60f-4243-9212-4f7c89dbf7bc"; + public static String ITEMID = "3cf934a0-decf-4104-8e23-47eb64010017"; /** * This is the entry point method. @@ -47,7 +48,7 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint { */ - FileModel file = new FileModel("123", "test", false); + /*FileModel file = new FileModel("123", "test", false); WorkspaceSmartSharingController controller = new WorkspaceSmartSharingController(file, null, false, false); SmartConstants.HEADER_TITLE = "puppa"; @@ -89,9 +90,29 @@ public class WorkspaceSharingWidgetEntryPoint implements EntryPoint { } }); + */ + + showSimpleMultiDrag(); + } catch (Exception e) { e.printStackTrace(); } } + + private void showSimpleMultiDrag(){ + + final SimpleMultiDragContact multiDragContact = new SimpleMultiDragContact(LOAD_CONTACTS_AS.SHARED_USER, ITEMID, true, false); + + Button openSharingWindow = new Button("Show Simple Multi Drag", + new ClickHandler() { + public void onClick(ClickEvent event) { + + multiDragContact.getMultiDragContact().show(); + + } + }); + + RootPanel.get("workpacesharingwidget").add(openSharingWindow); + } } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/rpc/WorkspaceSharingService.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/rpc/WorkspaceSharingService.java index 7f2e3d1..a2a973d 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/rpc/WorkspaceSharingService.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/rpc/WorkspaceSharingService.java @@ -74,8 +74,7 @@ public interface WorkspaceSharingService extends RemoteService { * @return * @throws Exception */ - List getInfoContactModelsFromCredential( - List listAlreadySharedContact) throws Exception; + List getInfoContactModelsFromCredential(List listAlreadySharedContact) throws Exception; List getAdministratorsByFolderId(String sharedFolderId) throws Exception; diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/UserStore.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/UserStore.java index 5743d3b..a2e22c3 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/UserStore.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/client/view/sharing/UserStore.java @@ -139,7 +139,7 @@ public class UserStore implements ContactFetcher{ * @see org.gcube.portlets.widgets.workspacesharingwidget.client.view.sharing.ContactFetcher#getAdministratorsByFolderId(java.lang.String, com.google.gwt.user.client.rpc.AsyncCallback) */ @Override - public void getAdministratorsByFolderId(String sharedFolderId, AsyncCallback> callback) { + public void getAdministratorsByFolderId(String sharedFolderId, final AsyncCallback> callback) { if(sharedFolderId==null || sharedFolderId.isEmpty()) return; @@ -147,13 +147,13 @@ public class UserStore implements ContactFetcher{ @Override public void onFailure(Throwable caught) { - // TODO Auto-generated method stub + callback.onFailure(caught); } @Override public void onSuccess(List result) { - // TODO Auto-generated method stub + callback.onSuccess(result); } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java index 060da0d..35dd8ee 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/GWTWorkspaceSharingBuilder.java @@ -256,8 +256,7 @@ public class GWTWorkspaceSharingBuilder { * @param listPortalLogin * @return */ - public List buildGxtInfoContactsFromPortalLogins( - List listPortalLogin) { + public List buildGxtInfoContactsFromPortalLogins(List listPortalLogin) { List listContact = new ArrayList(); for (String portalLogin : listPortalLogin) @@ -271,8 +270,7 @@ public class GWTWorkspaceSharingBuilder { * @param portalLogin * @return */ - protected InfoContactModel buildGxtInfoContactFromPortalLogin( - String portalLogin) { + protected InfoContactModel buildGxtInfoContactFromPortalLogin(String portalLogin) { if (portalLogin == null) { logger.warn("portal login is null, return empty"); @@ -280,8 +278,7 @@ public class GWTWorkspaceSharingBuilder { } // TODO ISGROUP - return new InfoContactModel(portalLogin, portalLogin, - UserUtil.getUserFullName(portalLogin), false); + return new InfoContactModel(portalLogin, portalLogin,UserUtil.getUserFullName(portalLogin), false); } @@ -291,14 +288,14 @@ public class GWTWorkspaceSharingBuilder { * @param listPortalLogin * @return */ - protected List buildGxtInfoContactFromPortalLoginTestMode( - List listPortalLogin) { + protected List buildGxtInfoContactFromPortalLoginTestMode(List listPortalLogin) { List listContact = new ArrayList(); for (String portalLogin : listPortalLogin) listContact.add(getHashTestUsers().get(portalLogin)); + logger.trace("returning "+listContact.size()+" info contacts test"); return listContact; } diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java index 765f251..7b07148 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/WorkspaceSharingServiceImpl.java @@ -91,21 +91,27 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements if(isTestMode()){ logger.warn("WORKSPACE PORTLET IS IN TEST MODE - RETURN TEST USERS AND GROUPS"); + GWTWorkspaceSharingBuilder.getHashTestUsers(); List listContactsModel = new ArrayList(); -// //TEST USERS - listContactsModel.add(new InfoContactModel("federico.defaveri", "federico.defaveri", "Federico de Faveri", false)); - listContactsModel.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia", false)); - listContactsModel.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi", false)); - listContactsModel.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano", false)); -// listContactsModel.add(new InfoContactModel(WsUtil.TEST_USER, WsUtil.TEST_USER, WsUtil.TEST_USER_FULL_NAME)); - listContactsModel.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa", false)); - listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante", false)); - listContactsModel.add(new InfoContactModel("valentina.marioli", "valentina.marioli", "Valentina Marioli", false)); - listContactsModel.add(new InfoContactModel("leonardo.candela", "leonardo.candela", "Leonardo Candela", false)); + for (String key : GWTWorkspaceSharingBuilder.getHashTestUsers().keySet()) { + InfoContactModel contact = GWTWorkspaceSharingBuilder.getHashTestUsers().get(key); + listContactsModel.add(contact); + } - listContactsModel.add(new InfoContactModel("/gube/devsec/devVRE", "/gube/devsec/devVRE", "devVRE", true)); +// +// listContactsModel.add(new InfoContactModel("antonio.gioia", "antonio.gioia", "Antonio Gioia", false)); +// listContactsModel.add(new InfoContactModel("fabio.sinibaldi", "fabio.sinibaldi", "Fabio Sinibaldi", false)); +// listContactsModel.add(new InfoContactModel("pasquale.pagano", "pasquale.pagano", "Pasquale Pagano", false)); +//// listContactsModel.add(new InfoContactModel(WsUtil.TEST_USER, WsUtil.TEST_USER, WsUtil.TEST_USER_FULL_NAME)); +// listContactsModel.add(new InfoContactModel("francesco.mangiacrapa", "francesco.mangiacrapa", "Francesco Mangiacrapa", false)); +// listContactsModel.add(new InfoContactModel("massimiliano.assante", "massimiliano.assante", "Massimiliano Assante", false)); +// listContactsModel.add(new InfoContactModel("valentina.marioli", "valentina.marioli", "Valentina Marioli", false)); +// listContactsModel.add(new InfoContactModel("leonardo.candela", "leonardo.candela", "Leonardo Candela", false)); +// +// listContactsModel.add(new InfoContactModel("/gube/devsec/devVRE", "/gube/devsec/devVRE", "devVRE", true)); // listContactsModel.addAll(getFakeGroups()); + return listContactsModel; } @@ -491,7 +497,13 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements if(item!=null && item.getType().equals(WorkspaceItemType.SHARED_FOLDER)){ WorkspaceSharedFolder sharedFolder = (WorkspaceSharedFolder) item; GWTWorkspaceSharingBuilder builder = getGWTWorkspaceBuilder(); - return builder.buildGxtInfoContactsFromPortalLogins(sharedFolder.getAdministrators()); + List admins = sharedFolder.getAdministrators(); + logger.info("Converting "+admins.size()+" administator/s List"); + + if(isTestMode()) + return builder.buildGxtInfoContactFromPortalLoginTestMode(admins); + + return builder.buildGxtInfoContactsFromPortalLogins(admins); }else throw new Exception("The item is null or not instanceof "+WorkspaceItemType.SHARED_FOLDER); diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java index bbb5679..a5b546c 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/server/util/UserUtil.java @@ -45,10 +45,8 @@ public class UserUtil { curr = um.getUserByScreenName(portalLogin); } catch (UserManagementSystemException e) { - logger.error("An error occurred in getUserFullName "+e,e); } catch (UserRetrievalFault e) { - logger.error("An error occurred in getUserFullName "+e,e); } } catch (UserManagementPortalException ume) { diff --git a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/shared/InfoContactModel.java b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/shared/InfoContactModel.java index be8fdf8..89860f7 100644 --- a/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/shared/InfoContactModel.java +++ b/src/main/java/org/gcube/portlets/widgets/workspacesharingwidget/shared/InfoContactModel.java @@ -9,14 +9,13 @@ import com.extjs.gxt.ui.client.data.BaseModelData; * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * */ -public class InfoContactModel extends BaseModelData implements Serializable { +public class InfoContactModel extends BaseModelData implements Serializable, Comparable { /** * */ - private static final long serialVersionUID = -4098652774574958363L; - + private static final long serialVersionUID = -6158514541724213534L; protected static final String ID = "id"; public static final String FULLNAME = "fullname"; @@ -69,10 +68,10 @@ public class InfoContactModel extends BaseModelData implements Serializable { } - public static Comparator COMPARATOR = new Comparator() { + public static Comparator COMPARATORLOGINS = new Comparator() { // This is where the sorting happens. public int compare(InfoContactModel o1, InfoContactModel o2) { - return o1.getName().compareToIgnoreCase(o2.getName()); + return o1.getLogin().compareToIgnoreCase(o2.getLogin()); } }; @@ -91,6 +90,25 @@ public class InfoContactModel extends BaseModelData implements Serializable { this.referenceCredential = referenceCredential; } + + + /* (non-Javadoc) + * @see java.lang.Comparable#compareTo(java.lang.Object) + */ + @Override + public int compareTo(InfoContactModel o) { + return InfoContactModel.COMPARATORLOGINS.compare(this, o); + } + + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + int compare = compareTo((InfoContactModel) obj); + return compare == 0? true:false; + } + @Override public String toString() { StringBuilder builder = new StringBuilder();