From f75a291489a91f50801eea77220be7d1eb88ac37 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Thu, 22 Dec 2016 22:53:30 +0000 Subject: [PATCH] getOrgName fixed: now it retrieves the groups per scope git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/widgets/ckan-metadata-publisher-widget@141391 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/CKanPublisherService.java | 4 +++- .../client/CKanPublisherServiceAsync.java | 4 +++- .../client/ui/CreateDatasetForm.java | 6 +++--- .../server/CKANPublisherServicesImpl.java | 11 +++++------ 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherService.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherService.java index 96fd6be..f466364 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherService.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherService.java @@ -70,9 +70,11 @@ public interface CKanPublisherService extends RemoteService { /** * Retrieve the list of groups the user can choose to associate this product with. + * @param orgName retrieve the groups in the context linked to this name. If null, returns + * the one in the current context. * @return a list of groups' beans */ - List getUserGroups(); + List getUserGroups(String orgName); // /** // * Return a tree object representing the whole folder hierarchy diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherServiceAsync.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherServiceAsync.java index 9a2c6a9..19201be 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherServiceAsync.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/CKanPublisherServiceAsync.java @@ -78,7 +78,9 @@ public interface CKanPublisherServiceAsync { /** * Retrieve the list of groups the user can choose to associate this product with. + * @param orgName retrieve the groups in the context linked to this name. If null, returns + * the one in the current context. * @return a list of groups' beans */ - void getUserGroups(AsyncCallback> callback); + void getUserGroups(String orgName, AsyncCallback> callback); } diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java index 8263932..3381e77 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/ui/CreateDatasetForm.java @@ -418,7 +418,7 @@ public class CreateDatasetForm extends Composite{ setAlertBlock("Retrieving groups, please wait...", AlertType.INFO, true); // request groups - ckanServices.getUserGroups(new AsyncCallback>() { + ckanServices.getUserGroups(null, new AsyncCallback>() { @Override public void onSuccess(List groups) { @@ -483,7 +483,7 @@ public class CreateDatasetForm extends Composite{ // get the name of the organization from the title String selectedOrganizationTitle = organizationsListbox.getSelectedItemText(); - String orgName = nameTitleOrganizationMap.get(selectedOrganizationTitle); + final String orgName = nameTitleOrganizationMap.get(selectedOrganizationTitle); // try to retrieve the profiles setAlertBlock("Retrieving profiles, please wait...", AlertType.INFO, true); @@ -513,7 +513,7 @@ public class CreateDatasetForm extends Composite{ setAlertBlock("Retrieving groups, please wait...", AlertType.INFO, true); // request groups - ckanServices.getUserGroups(new AsyncCallback>() { + ckanServices.getUserGroups(orgName, new AsyncCallback>() { @Override public void onSuccess(List groups) { diff --git a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java index 4289607..0d3f581 100644 --- a/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java +++ b/src/main/java/org/gcube/portlets/widgets/ckandatapublisherwidget/server/CKANPublisherServicesImpl.java @@ -44,7 +44,7 @@ import eu.trentorise.opendata.jackan.model.CkanLicense; * @author Costantino Perciante at ISTI-CNR (costantino.perciante@isti.cnr.it) */ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements CKanPublisherService{ - + private static final long serialVersionUID = 7252248774050361697L; // Logger @@ -272,7 +272,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C String datasetId = utils.createCKanDatasetMultipleCustomFields (userApiKey, title, null, organizationNameOrId, author, authorMail, maintainer, - maintainerMail, version, description, licenseId, listOfTags, customFields, resources, setPublic); + maintainerMail, version, description, licenseId, listOfTags, customFields, resources, setPublic); if(datasetId != null){ @@ -282,7 +282,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C // retrieve the url String datasetUrl = utils.getUrlFromDatasetIdOrName(datasetId); toCreate.setSource(datasetUrl); - + // add also this information as custom field Map> addField = new HashMap>(); addField.put(PRODUCT_URL_FIELD, Arrays.asList(datasetUrl)); @@ -505,7 +505,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C // } @Override - public List getUserGroups() { + public List getUserGroups(String orgName) { List toReturn = new ArrayList(); @@ -516,7 +516,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C // get http session HttpSession httpSession = getThreadLocalRequest().getSession(); - String scope = Utils.getScopeFromClientUrl(getThreadLocalRequest()); + String scope = orgName != null ? getScopeFromOrgName(orgName) : Utils.getScopeFromClientUrl(getThreadLocalRequest()); // check if they are in session String keyPerScopeGroups = UtilMethods.concatenateSessionKeyScope(SessionCatalogueAttributes.CKAN_GROUPS_MEMBER, scope); @@ -531,7 +531,6 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C String apiKey = catalogue.getApiKeyFromUsername(username); - // Members/Admin of the group for (CkanGroup ckanGroup : ckanGroups) { String role = catalogue.getRoleOfUserInGroup(username, ckanGroup.getName(), apiKey); if(role == null)