diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cae817..27b4181 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java index 0c6835b..b35a6c3 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2Zenodo.java @@ -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 * 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 43407ed..e69e4a9 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Ckan2ZenodoImpl.java @@ -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); + } + } 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 50ae1f5..e7d1982 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java @@ -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); diff --git a/src/test/java/org/gcube/tests/TransformationTests.java b/src/test/java/org/gcube/tests/TransformationTests.java index 08aa436..702c871 100644 --- a/src/test/java/org/gcube/tests/TransformationTests.java +++ b/src/test/java/org/gcube/tests/TransformationTests.java @@ -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()); } + + }