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 39bd794..f8cf328 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 @@ -73,13 +73,24 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C } + /** + * Get the scope in which we look for metadata + * @return + */ + private String getMetadataScope(){ + if(isWithinPortal()) + return ScopeProvider.instance.get(); + else + return "/gcube/devsec/devVRE"; // Development + } + /** * Return the ckan catalogue url for this scope. * @return */ private String getCatalogueUrl(){ - logger.info("Request for catalogue url"); + logger.debug("Request for catalogue url"); try{ String currentScope = getCurrentScope(); @@ -98,7 +109,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C */ private String getCKANApikeyFromUser(String owner) { - logger.info("Request for user api key"); + logger.debug("Request for user api key"); try{ String currentScope = getCurrentScope(); @@ -117,7 +128,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C */ private List getUserOrganizationsList(String owner) { - logger.info("Request for user " + owner + " organizations list"); + logger.debug("Request for user " + owner + " organizations list"); try{ @@ -173,7 +184,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C try { - ScopeProvider.instance.set("/gcube/devsec/devVRE"); // TODO remove + ScopeProvider.instance.set(getMetadataScope()); // TODO remove DataCalogueMetadataFormatReader reader = new DataCalogueMetadataFormatReader(); for (MetadataType mt : reader.getListOfMetadataTypes()) { @@ -203,7 +214,7 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C wrapperList.add(wrapperObj); } - + // wrap the mt as well MetaDataTypeWrapper typeWrapper = new MetaDataTypeWrapper(); typeWrapper.setDescription(mt.getDescription()); @@ -412,8 +423,8 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C dataset.setName(nameFromTitle(toCreate.getTitle())); dataset.setTitle(toCreate.getTitle()); - CkanOrganization orgTest = client.getOrganization(toCreate.getSelectedOrganization()); - dataset.setOwnerOrg(orgTest.getId()); + CkanOrganization orgOwner = client.getOrganization(toCreate.getSelectedOrganization()); + dataset.setOwnerOrg(orgOwner.getId()); dataset.setAuthor(toCreate.getAuthor()); dataset.setAuthorEmail(toCreate.getAuthorEmail()); dataset.setMaintainer(toCreate.getMaintainer()); @@ -428,9 +439,6 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C logger.debug("Description (escaped is ) " + htmlRend.toString()); - // visibility TODO - dataset.setOpen(toCreate.getVisibility()); - // iterate over the licenses to find the id of the chosen one String chosenLicense = toCreate.getLicense(); String licenseId = findLicenseIdByLicense(chosenLicense); @@ -509,10 +517,14 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C try{ res = client.createDataset(dataset); - + // add source and id to the incoming bean toCreate.setId(res.getId()); toCreate.setSource(getCatalogueUrl() + "/dataset/" + res.getName()); + + // set visibility + setVisibility(toCreate, orgOwner.getId()); + }catch(Exception e){ @@ -530,6 +542,22 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C return toCreate; } + + /** + * Set the dataset visibility. + * @param created + * @param orgOwnerId + * @throws Exception + */ + private void setVisibility(DatasetMetadataBean created, String orgOwnerId) throws Exception{ + + // set its visibility (true means public, false means private) + boolean mustbePrivate = !created.getVisibility(); + String currentScope = getCurrentScope(); + CKanUtilsFactory.getInstance(). + getCkanUtilsForScope(currentScope).setDatasetPrivate(mustbePrivate, orgOwnerId, created.getId(), getCKANApikeyFromUser(created.getOwnerIdentifier())); + + } /** * Generate the catalogue's dataset name from its title @@ -537,7 +565,8 @@ public class CKANPublisherServicesImpl extends RemoteServiceServlet implements C * @return */ private String nameFromTitle(String title) { - String convertedName = title.replaceAll(" ", "_").replaceAll(".", "_"); + String convertedName = title.replaceAll(" ", "_"); + convertedName = convertedName.replaceAll("\\.", "_"); convertedName = convertedName.toLowerCase(); if(convertedName.endsWith("_")) convertedName = convertedName.substring(0, convertedName.length() - 2); diff --git a/src/test/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Tests.java b/src/test/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Tests.java index 68b0f12..1b70882 100644 --- a/src/test/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Tests.java +++ b/src/test/java/org/gcube/portlets/widgets/ckandatapublisherwidget/client/Tests.java @@ -1,5 +1,6 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client; + /** * * @author Costantino Perciante at ISTI-CNR @@ -8,5 +9,4 @@ package org.gcube.portlets.widgets.ckandatapublisherwidget.client; */ public class Tests { - }