From 4b05ed4e978b93f81611a0ea4947da7be617363b Mon Sep 17 00:00:00 2001 From: "francesco.mangiacrapa" Date: Tue, 9 Feb 2021 17:55:44 +0100 Subject: [PATCH] updated createDataset and addResource --- pom.xml | 17 ++----- .../ckanutillibrary/server/DataCatalogue.java | 2 +- .../server/DataCatalogueImpl.java | 14 ++++-- .../server/utils/CKANConveter.java | 10 ++-- .../test/TestDataCatalogueLib.java | 46 ++++++++++--------- 5 files changed, 45 insertions(+), 44 deletions(-) diff --git a/pom.xml b/pom.xml index b66c1c0..6d62d9d 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.datacatalogue catalogue-util-library - 0.1.0-SNAPSHOT + 0.2.0-SNAPSHOT Ckan utility library @@ -27,7 +27,6 @@ data-catalogue - 0.4.2 9.4.1208.jre7 UTF-8 UTF-8 @@ -40,7 +39,7 @@ org.gcube.distribution maven-portal-bom - LATEST + 3.6.0 pom import @@ -54,14 +53,6 @@ provided - - - - - - - - org.gcube.common gcube-jackson-core @@ -105,9 +96,9 @@ - org.gcube.data-publishing + org.gcube.data-catalogue gcat-client - [1.0.0, 2.0.0) + [2.0.0-SNAPSHOT, 3.0.0) compile diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java index 682bc5c..52925ff 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogue.java @@ -111,7 +111,7 @@ public interface DataCatalogue { * Retrieve a ckan dataset given its id. * * @param datasetId the dataset id - * @param apiKey the api key + * @param apiKey the api key. If null uses gCat to get the Dataset * @return the dataset */ CkanDataset getDataset(String datasetId, String apiKey); diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java index 905b22e..e7f5169 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/DataCatalogueImpl.java @@ -234,6 +234,9 @@ public class DataCatalogueImpl implements DataCatalogue { return ckanCaller.getLicenseList(); } + /* (non-Javadoc) + * @see org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogue#getDataset(java.lang.String, java.lang.String) + */ @Override public CkanDataset getDataset(String datasetId, String apiKey) { LOG.info("Request ckan dataset with id " + datasetId); @@ -854,7 +857,7 @@ public class DataCatalogueImpl implements DataCatalogue { */ @Override - public String createCkanDatasetMultipleCustomFields(String username, String title, String name, String organizationNameOrId, + public String createCkanDatasetMultipleCustomFields(String username, String title, String name, String organizationName, String author, String authorMail, String maintainer, String maintainerMail, long version, String description, String licenseId, List tags, Map> customFieldsMultiple, List resources, boolean setPublic, boolean setSearchable, boolean socialPost) throws Exception { @@ -862,13 +865,16 @@ public class DataCatalogueImpl implements DataCatalogue { // checks (minimum) checkNotNull(username); - checkNotNull(organizationNameOrId); - checkArgument(!organizationNameOrId.isEmpty()); + //checkNotNull(organizationNameOrId); + //checkArgument(!organizationNameOrId.isEmpty()); checkArgument(!(title == null && name == null || title.isEmpty() && name.isEmpty()), "Name and Title cannot be empty/null at the same time!"); try { + + //TODO IF THE SCOPE IS ROOT OR VO WE NEED TO PASS THE ORGNAME TO gCAT, no otherwise + // String ckanUsername = getUserFromApiKey(apiKey).getName(); - CkanDataset dataset = CKANConveter.toCkanDataset(ckanCaller, username, title, name, organizationNameOrId, author, authorMail, + CkanDataset dataset = CKANConveter.toCkanDataset(ckanCaller, username, title, name, organizationName, author, authorMail, maintainer, maintainerMail, version, description, licenseId, tags, null, customFieldsMultiple, resources, setPublic, setSearchable); diff --git a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/utils/CKANConveter.java b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/utils/CKANConveter.java index b815ee5..efb58c4 100644 --- a/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/utils/CKANConveter.java +++ b/src/main/java/org/gcube/datacatalogue/ckanutillibrary/server/utils/CKANConveter.java @@ -39,7 +39,7 @@ public class CKANConveter { * @param username the username * @param title the title * @param name the name - * @param organizationNameOrId the organization name or id + * @param organizationName the organization name or id * @param author the author * @param authorMail the author mail * @param maintainer the maintainer @@ -55,7 +55,7 @@ public class CKANConveter { * @param setSearchable the set searchable * @return the ckan dataset */ - public static CkanDataset toCkanDataset(ExtendCkanClient ckanCaller, String username, String title, String name, String organizationNameOrId, String author, + public static CkanDataset toCkanDataset(ExtendCkanClient ckanCaller, String username, String title, String name, String organizationName, String author, String authorMail, String maintainer, String maintainerMail, long version, String description, String licenseId, List tags, Map customFields, Map> customFieldsMultipleValues, List resources, boolean setPublic, boolean setSearchable) { @@ -81,8 +81,10 @@ public class CKANConveter { dataset.setTitle(title); //TODO SHOULD BE REVISITED by gCAT? - CkanOrganization orgOwner = ckanCaller.getOrganization(organizationNameOrId); - dataset.setOwnerOrg(orgOwner.getId()); + if(organizationName!=null) { + CkanOrganization orgOwner = ckanCaller.getOrganization(organizationName); + dataset.setOwnerOrg(orgOwner.getId()); + } dataset.setAuthor(author); dataset.setAuthorEmail(authorMail); diff --git a/src/test/java/org/gcube/datacatalogue/ckanutillibrary/test/TestDataCatalogueLib.java b/src/test/java/org/gcube/datacatalogue/ckanutillibrary/test/TestDataCatalogueLib.java index b823889..7fdbb59 100644 --- a/src/test/java/org/gcube/datacatalogue/ckanutillibrary/test/TestDataCatalogueLib.java +++ b/src/test/java/org/gcube/datacatalogue/ckanutillibrary/test/TestDataCatalogueLib.java @@ -14,6 +14,7 @@ import org.gcube.datacatalogue.ckanutillibrary.server.ApplicationProfileScopePer import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueFactory; import org.gcube.datacatalogue.ckanutillibrary.server.DataCatalogueImpl; import org.gcube.datacatalogue.ckanutillibrary.shared.ResourceBean; +import org.gcube.datacatalogue.ckanutillibrary.shared.jackan.model.CkanDataset; import org.gcube.datacatalogue.ckanutillibrary.shared.jackan.model.CkanGroup; import org.gcube.datacatalogue.ckanutillibrary.shared.jackan.model.CkanOrganization; import org.gcube.datacatalogue.ckanutillibrary.shared.jackan.model.CkanUser; @@ -223,8 +224,8 @@ public class TestDataCatalogueLib { ScopeProvider.instance.set(scope); SecurityTokenProvider.instance.set(authorizationToken); - DataCatalogueImpl instance = factory.getUtilsPerScope(scope); + DataCatalogueImpl instance = factory.getUtilsPerScope(scope); String licenseId = instance.getLicenses().get(0).getId(); Map> customFieldsMultiple = new HashMap>(); @@ -247,6 +248,8 @@ public class TestDataCatalogueLib { //System.out.println("Org name by VRE: "+orgName); LOG.debug("Org name by VRE: "+orgName); + orgName = null; + int random = new Random().nextInt(); String datasetTitle = "a dataset created by catalogue-util-library "+random; String datasetName = datasetTitle.replace(" ", ""); @@ -278,8 +281,10 @@ public class TestDataCatalogueLib { //@Test public void createGroup() throws Exception{ + ScopeProvider.instance.set(scope); SecurityTokenProvider.instance.set(authorizationToken); + DataCatalogueImpl instance = factory.getUtilsPerScope(scope); int random = new Random().nextInt(); String groupTitle = "a grop created by catalogue-util-library "+random; @@ -287,6 +292,23 @@ public class TestDataCatalogueLib { CkanGroup ckanGroup = instance.createGroup(groupName, groupTitle, "description"); LOG.info("Created the group: "+ckanGroup); } + + + @Test + public void testAddResource() throws Exception{ + + ScopeProvider.instance.set(scope); + SecurityTokenProvider.instance.set(authorizationToken); + + DataCatalogueImpl instance = factory.getUtilsPerScope(scope); + CkanDataset dataset = instance.getDataset("adatasetcreatedbycatalogue-util-library-1644679434", null); + + for (int i = 0; i < 5; i++) { + ResourceBean resourceBean = new ResourceBean("https://google.com", "resouce "+i, "description "+i, null, testUser, dataset.getId(), null); + instance.addResourceToDataset(resourceBean); + } + } + @@ -577,27 +599,7 @@ public class TestDataCatalogueLib { // // } // -// //@Test -// public void testAddResource() throws Exception{ -// -// DataCatalogueImpl instance = factory.getUtilsPerScope(scope); -// String datasetId = "test_publish_folder_15_44"; -// //instance.assignDatasetToGroup(groupName, datasetId, instance.getApiKeyFromUsername("costantino_perciante")); -// -// String api = instance.getApiKeyFromUsername("costantino_perciante"); -// CheckedCkanClient client = new CheckedCkanClient(instance.getCatalogueUrl(), api); -// List randomName = Arrays.asList("FIRMS", "RAM", "FishSource"); -// for (int i = 0; i < 100; i++) { -// -// CkanResource resource = new CkanResource("https://goo.gl/FH5AQ5", datasetId); -// String name = randomName.get((int)Math.round(Math.ceil(Math.random() * 3))); -// -// resource.setName(name); -// client.createResource(resource); -// -// } -// } -// + // //@Test // public void checkGroupRole() throws Exception{ //