diff --git a/CHANGELOG.md b/CHANGELOG.md index 1490605..23536e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,16 @@ # Changelog for org.gcube.data.publishing.ckan2zenodo-library ## [v0.0.2] [r4.25.0] 2020-06-30 + ### Enhancements - Default Ckan2Zenodo translation to comply with mandatory Zenodo fields (https://support.d4science.org/issues/19489) - Ckan2Zenodo library to provide means to apply default translation only (https://support.d4science.org/issues/19490) --Support to "split" on source values (https://support.d4science.org/issues/19534) --Support to "append" to target elements (https://support.d4science.org/issues/19535) --Multiple Date Format parsing (https://support.d4science.org/issues/19540) +- Support to "split" on source values (https://support.d4science.org/issues/19534) +- Support to "append" to target elements (https://support.d4science.org/issues/19535) +- Multiple Date Format parsing (https://support.d4science.org/issues/19540) + + +### Fixes +- Default filter resource is applied in class Ckan2ZenodoImpl.java (https://support.d4science.org/issues/19528) This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). \ No newline at end of file diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java index e69e4a9..43a1bfd 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java @@ -69,8 +69,14 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{ } @Override - public List filterResources(CkanItemDescriptor desc) throws ConfigurationException, TransformationException { - Translator tr=new TransformerManager().getByProfile(desc.getProfile()); + public List filterResources(CkanItemDescriptor desc) throws TransformationException { + Translator tr=null; + try{ + new TransformerManager().getByProfile(desc.getProfile()); + }catch(ConfigurationException e) { + log.warn("Forcing default resource filtering. ",e); + tr=new Translator(); + } return tr.filterResources(desc); } diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java index b4d6cf1..8e703a6 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java @@ -49,11 +49,11 @@ public class Translator { private ResourceFilter resourceFilter; public Translator() { - this(Collections.EMPTY_LIST,new ResourceFilter(Collections.EMPTY_LIST)); + this(Collections.EMPTY_LIST,ResourceFilter.PASS_ALL); } public Translator(List mappings) { - this(mappings,new ResourceFilter(Collections.EMPTY_LIST)); + this(mappings,ResourceFilter.PASS_ALL); } public ZenodoDeposition transform(CkanItemDescriptor toTransform, ZenodoDeposition deposition) throws TransformationException { @@ -261,9 +261,9 @@ public class Translator { public List filterResources(CkanItemDescriptor source) throws TransformationException{ - try { ObjectMapper mapper=Parsing.getMapper(); DocumentContext sourceCtx=JsonPath.using(Parsing.JSON_PATH_ALWAYS_LIST_CONFIG).parse(source.getContent()); + try { HashSet toReturn=new HashSet(); for(Filter f:resourceFilter.getFilters()) { JSONArray filtered=sourceCtx.read(f.getConditions().get(0)); diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/parsing/ResourceFilter.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/parsing/ResourceFilter.java index 139c0e6..2d39e27 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/parsing/ResourceFilter.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/model/parsing/ResourceFilter.java @@ -1,5 +1,6 @@ package org.gcube.data.publishing.ckan2zenodo.model.parsing; +import java.util.Collections; import java.util.List; import lombok.Getter; @@ -12,6 +13,9 @@ import lombok.ToString; @Getter public class ResourceFilter { + public static final ResourceFilter PASS_ALL=new ResourceFilter(Collections.singletonList( + new Filter(Collections.singletonList("$.resources[?(@.format)]")))); + @RequiredArgsConstructor @ToString @Getter diff --git a/src/test/java/org/gcube/tests/TestCommons.java b/src/test/java/org/gcube/tests/TestCommons.java index 26301d4..74f6b25 100644 --- a/src/test/java/org/gcube/tests/TestCommons.java +++ b/src/test/java/org/gcube/tests/TestCommons.java @@ -9,6 +9,7 @@ import java.util.Map; import org.gcube.data.publishing.ckan2zenodo.Fixer; import org.gcube.data.publishing.ckan2zenodo.Translator; import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor; +import org.gcube.data.publishing.ckan2zenodo.model.CkanResource; import org.gcube.data.publishing.ckan2zenodo.model.ZenodoCredentials; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition; @@ -59,6 +60,11 @@ public class TestCommons { System.out.println(dep); System.out.println("As JSON : "); System.out.println(Fixer.fixSending(getMapper().writeValueAsString(dep))); + System.out.println("Filtered resources : "); + for(CkanResource res : transformer.filterResources(desc)) { + System.out.println("AS JSON : "); + System.out.println(Fixer.fixSending(getMapper().writeValueAsString(res))); + } return dep; }catch(Throwable t) { throw new Exception("Errors with json file "+jsonFile,t); diff --git a/src/test/java/org/gcube/tests/TransformationTests.java b/src/test/java/org/gcube/tests/TransformationTests.java index 25cd28e..a2c9dd2 100644 --- a/src/test/java/org/gcube/tests/TransformationTests.java +++ b/src/test/java/org/gcube/tests/TransformationTests.java @@ -65,8 +65,10 @@ public class TransformationTests { String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream("/ResearchObject.json")); CkanItemDescriptor desc=new CkanItemDescriptor(json); - for(CkanResource filtered:t.filterResources(desc)) - System.out.println("NAME : "+filtered.getName()+ " FORMAT : "+filtered.getFormat()); + for(CkanResource filtered:t.filterResources(desc)) + System.out.println("NAME : "+filtered.getName()+ " FORMAT : "+filtered.getFormat()); + + }