Default translation management

This commit is contained in:
Fabio Sinibaldi 2020-06-18 13:46:19 +02:00
parent 18333060ec
commit a44ae2b201
5 changed files with 49 additions and 12 deletions

View File

@ -3,6 +3,7 @@
## [Unreleased]
### 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)

View File

@ -39,6 +39,18 @@ public interface Ckan2Zenodo {
*/
public ZenodoDeposition translate(CkanItemDescriptor desc) throws InvalidItemException, ZenodoException, ConfigurationException, TransformationException;
/**
* Forces translation of passed @param desc without raising Configuration Exception
*
* @param desc
* @return *
* @throws TransformationException
* @throws ZenodoException
* @throws InvalidItemException
*/
public ZenodoDeposition forceTranslation(CkanItemDescriptor desc) throws InvalidItemException, ZenodoException, TransformationException;
/**
* Create / update metadata of @param toUpdate into the Zenodo instance declared in current VRE
*

View File

@ -12,7 +12,6 @@ import org.gcube.data.publishing.ckan2zenodo.clients.Zenodo;
import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor;
import org.gcube.data.publishing.ckan2zenodo.model.CkanRelatedIdentifier;
import org.gcube.data.publishing.ckan2zenodo.model.CkanResource;
import org.gcube.data.publishing.ckan2zenodo.model.UploadPolicy;
import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.GcatException;
import org.gcube.data.publishing.ckan2zenodo.model.faults.InvalidItemException;
@ -47,14 +46,7 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
@Override
public ZenodoDeposition translate(CkanItemDescriptor desc) throws InvalidItemException, ZenodoException, ConfigurationException, TransformationException {
ZenodoDeposition toUpdate=null;
CkanRelatedIdentifier doi=desc.getZenodoDoi();
if(doi!=null) {
Zenodo z=getZenodo();
toUpdate=z.readDeposition(doi.getZenodoId());
}
Translator tr=new TransformerManager().getByProfile(desc.getProfile());
return tr.transform(desc, toUpdate);
return translate(desc,false);
}
@Override
@ -109,6 +101,38 @@ public class Ckan2ZenodoImpl implements Ckan2Zenodo{
return toReturn;
}
@Override
public ZenodoDeposition forceTranslation(CkanItemDescriptor desc) throws InvalidItemException, ZenodoException, TransformationException {
try {
return translate(desc,true);
} catch (ConfigurationException e) {
log.error("Unexpected Exception. ",e);
throw new InvalidItemException("Unexpected exception. Please try again later");
}
}
// LOGIC
private ZenodoDeposition translate(CkanItemDescriptor desc, boolean skipErrors) throws InvalidItemException, ZenodoException, ConfigurationException, TransformationException {
ZenodoDeposition toUpdate=null;
Translator tr=null;
try {
CkanRelatedIdentifier doi=desc.getZenodoDoi();
if(doi!=null) {
Zenodo z=getZenodo();
toUpdate=z.readDeposition(doi.getZenodoId());
}
tr=new TransformerManager().getByProfile(desc.getProfile());
}catch (InvalidItemException e) {
if(!skipErrors) throw e;
} catch (ZenodoException e) {
if(!skipErrors) throw e;
} catch (ConfigurationException e) {
if(!skipErrors) tr=new Translator();
}
return tr.transform(desc, toUpdate);
}
}

View File

@ -126,7 +126,7 @@ public class Translator {
// D4Science as contributor
Contributor d4Science=new Contributor(Contributor.Type.HostingInstitution);
d4Science.setName("D4Science");
contributors.add(d4Science);
meta.setContributors(contributors);
meta.setCreators(creators);

View File

@ -11,8 +11,6 @@ import org.junit.Test;
import com.fasterxml.jackson.databind.ObjectMapper;
import junit.framework.Assert;
public class TransformationTests {
static ObjectMapper mapper=null;
@ -52,4 +50,6 @@ public class TransformationTests {
for(CkanResource filtered:t.filterResources(desc))
System.out.println("NAME : "+filtered.getName()+ " FORMAT : "+filtered.getFormat());
}
}