Default resource filter

This commit is contained in:
Fabio Sinibaldi 2020-07-06 15:50:51 +02:00
parent 1f1165d173
commit ed6eb78590
6 changed files with 33 additions and 10 deletions

View File

@ -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).

View File

@ -69,8 +69,14 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
}
@Override
public List<CkanResource> filterResources(CkanItemDescriptor desc) throws ConfigurationException, TransformationException {
Translator tr=new TransformerManager().getByProfile(desc.getProfile());
public List<CkanResource> 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);
}

View File

@ -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<Mapping> 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<CkanResource> 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<CkanResource> toReturn=new HashSet();
for(Filter f:resourceFilter.getFilters()) {
JSONArray filtered=sourceCtx.read(f.getConditions().get(0));

View File

@ -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

View File

@ -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);

View File

@ -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());
}