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
|
# Changelog for org.gcube.data.publishing.ckan2zenodo-library
|
||||||
|
|
||||||
## [v0.0.2] [r4.25.0] 2020-06-30
|
## [v0.0.2] [r4.25.0] 2020-06-30
|
||||||
|
|
||||||
### Enhancements
|
### Enhancements
|
||||||
- Default Ckan2Zenodo translation to comply with mandatory Zenodo fields (https://support.d4science.org/issues/19489)
|
- 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)
|
- 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 "split" on source values (https://support.d4science.org/issues/19534)
|
||||||
-Support to "append" to target elements (https://support.d4science.org/issues/19535)
|
- Support to "append" to target elements (https://support.d4science.org/issues/19535)
|
||||||
-Multiple Date Format parsing (https://support.d4science.org/issues/19540)
|
- 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).
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
@ -69,8 +69,14 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<CkanResource> filterResources(CkanItemDescriptor desc) throws ConfigurationException, TransformationException {
|
public List<CkanResource> filterResources(CkanItemDescriptor desc) throws TransformationException {
|
||||||
Translator tr=new TransformerManager().getByProfile(desc.getProfile());
|
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);
|
return tr.filterResources(desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,11 +49,11 @@ public class Translator {
|
||||||
private ResourceFilter resourceFilter;
|
private ResourceFilter resourceFilter;
|
||||||
|
|
||||||
public Translator() {
|
public Translator() {
|
||||||
this(Collections.EMPTY_LIST,new ResourceFilter(Collections.EMPTY_LIST));
|
this(Collections.EMPTY_LIST,ResourceFilter.PASS_ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Translator(List<Mapping> mappings) {
|
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 {
|
public ZenodoDeposition transform(CkanItemDescriptor toTransform, ZenodoDeposition deposition) throws TransformationException {
|
||||||
|
@ -261,9 +261,9 @@ public class Translator {
|
||||||
|
|
||||||
|
|
||||||
public List<CkanResource> filterResources(CkanItemDescriptor source) throws TransformationException{
|
public List<CkanResource> filterResources(CkanItemDescriptor source) throws TransformationException{
|
||||||
try {
|
|
||||||
ObjectMapper mapper=Parsing.getMapper();
|
ObjectMapper mapper=Parsing.getMapper();
|
||||||
DocumentContext sourceCtx=JsonPath.using(Parsing.JSON_PATH_ALWAYS_LIST_CONFIG).parse(source.getContent());
|
DocumentContext sourceCtx=JsonPath.using(Parsing.JSON_PATH_ALWAYS_LIST_CONFIG).parse(source.getContent());
|
||||||
|
try {
|
||||||
HashSet<CkanResource> toReturn=new HashSet();
|
HashSet<CkanResource> toReturn=new HashSet();
|
||||||
for(Filter f:resourceFilter.getFilters()) {
|
for(Filter f:resourceFilter.getFilters()) {
|
||||||
JSONArray filtered=sourceCtx.read(f.getConditions().get(0));
|
JSONArray filtered=sourceCtx.read(f.getConditions().get(0));
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.gcube.data.publishing.ckan2zenodo.model.parsing;
|
package org.gcube.data.publishing.ckan2zenodo.model.parsing;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
@ -12,6 +13,9 @@ import lombok.ToString;
|
||||||
@Getter
|
@Getter
|
||||||
public class ResourceFilter {
|
public class ResourceFilter {
|
||||||
|
|
||||||
|
public static final ResourceFilter PASS_ALL=new ResourceFilter(Collections.singletonList(
|
||||||
|
new Filter(Collections.singletonList("$.resources[?(@.format)]"))));
|
||||||
|
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ToString
|
@ToString
|
||||||
@Getter
|
@Getter
|
||||||
|
|
|
@ -9,6 +9,7 @@ import java.util.Map;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.Fixer;
|
import org.gcube.data.publishing.ckan2zenodo.Fixer;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.Translator;
|
import org.gcube.data.publishing.ckan2zenodo.Translator;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
|
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.ZenodoCredentials;
|
||||||
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
|
import org.gcube.data.publishing.ckan2zenodo.model.zenodo.ZenodoDeposition;
|
||||||
|
|
||||||
|
@ -59,6 +60,11 @@ public class TestCommons {
|
||||||
System.out.println(dep);
|
System.out.println(dep);
|
||||||
System.out.println("As JSON : ");
|
System.out.println("As JSON : ");
|
||||||
System.out.println(Fixer.fixSending(getMapper().writeValueAsString(dep)));
|
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;
|
return dep;
|
||||||
}catch(Throwable t) {
|
}catch(Throwable t) {
|
||||||
throw new Exception("Errors with json file "+jsonFile,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"));
|
String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream("/ResearchObject.json"));
|
||||||
CkanItemDescriptor desc=new CkanItemDescriptor(json);
|
CkanItemDescriptor desc=new CkanItemDescriptor(json);
|
||||||
|
|
||||||
for(CkanResource filtered:t.filterResources(desc))
|
for(CkanResource filtered:t.filterResources(desc))
|
||||||
System.out.println("NAME : "+filtered.getName()+ " FORMAT : "+filtered.getFormat());
|
System.out.println("NAME : "+filtered.getName()+ " FORMAT : "+filtered.getFormat());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue