Default resource filter
This commit is contained in:
parent
1f1165d173
commit
ed6eb78590
11
CHANGELOG.md
11
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).
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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());
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue