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 f94acd5..189ed83 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/Translator.java @@ -12,8 +12,9 @@ import org.gcube.data.publishing.ckan2zenodo.model.CkanItemDescriptor; import org.gcube.data.publishing.ckan2zenodo.model.CkanResource; import org.gcube.data.publishing.ckan2zenodo.model.faults.TransformationException; import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping; -import org.gcube.data.publishing.ckan2zenodo.model.parsing.ResourceFilter; import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping.Regexp; +import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping.Source.Value; +import org.gcube.data.publishing.ckan2zenodo.model.parsing.ResourceFilter; import org.gcube.data.publishing.ckan2zenodo.model.parsing.ResourceFilter.Filter; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.Contributor; import org.gcube.data.publishing.ckan2zenodo.model.zenodo.DepositionMetadata; @@ -121,17 +122,28 @@ public class Translator { try { // extract source List sourceValues=new ArrayList<>(); - switch(mapping.getSource().getType()) { - case constant : { - sourceValues.add(mapping.getSource().getValue()); - break; + + for(Value v: mapping.getSource().getValues()) { + + switch(v.getType()) { + case constant : { + sourceValues.add(v.getValue()); + break; + } + case jsonPath : { + sourceValues.addAll(sourceCtx.read(v.getValue())); + break; + } + } + + if(!sourceValues.isEmpty()) break; + } - case jsonPath : { - sourceValues.addAll(sourceCtx.read(mapping.getSource().getValue())); - break; - } - } - + + + + + for(String sourceValue:sourceValues) { String resultingValue=sourceValue; diff --git a/src/main/java/org/gcube/data/publishing/ckan2zenodo/commons/IS.java b/src/main/java/org/gcube/data/publishing/ckan2zenodo/commons/IS.java index 9e1d572..eef4034 100644 --- a/src/main/java/org/gcube/data/publishing/ckan2zenodo/commons/IS.java +++ b/src/main/java/org/gcube/data/publishing/ckan2zenodo/commons/IS.java @@ -11,9 +11,10 @@ import org.gcube.common.resources.gcore.GenericResource; import org.gcube.common.resources.gcore.ServiceEndpoint; import org.gcube.data.publishing.ckan2zenodo.model.faults.ConfigurationException; import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping; -import org.gcube.data.publishing.ckan2zenodo.model.parsing.ResourceFilter; import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping.Regexp; import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping.Source; +import org.gcube.data.publishing.ckan2zenodo.model.parsing.Mapping.Source.Value; +import org.gcube.data.publishing.ckan2zenodo.model.parsing.ResourceFilter; import org.gcube.resources.discovery.client.api.DiscoveryClient; import org.gcube.resources.discovery.client.queries.api.SimpleQuery; import org.w3c.dom.Element; @@ -61,8 +62,13 @@ public class IS { for(int i = 0; i values=new ArrayList<>(); } @NonNull diff --git a/src/test/java/org/gcube/tests/ParsingTests.java b/src/test/java/org/gcube/tests/ParsingTests.java index a672ffd..628dd6c 100644 --- a/src/test/java/org/gcube/tests/ParsingTests.java +++ b/src/test/java/org/gcube/tests/ParsingTests.java @@ -142,9 +142,46 @@ public class ParsingTests { String json=TestCommons.convertStreamToString(TransformationTests.class.getResourceAsStream("/ResearchObject.json")); CkanItemDescriptor desc=new CkanItemDescriptor(json); Assert.assertNull(desc.getZenodoDoi()); - desc.setZenodoDoi(new CkanRelatedIdentifier("URL", "isReferencedBy", "http://some.dumb.link.com")); + desc.setZenodoDoi(new CkanRelatedIdentifier("URL", "isReferencedBy", "http://10.5281/zenodo.1000001")); CkanRelatedIdentifier id=desc.getZenodoDoi(); Assert.assertNotNull(id); System.out.println(desc.getContent()); } + + @Test + public void guiTest() throws JsonParseException, JsonMappingException, IOException { + String toParse="{\n" + + " \"metadata\":\n" + + " {\n" + + " \"title\": \"Crop Parameters\",\n" + + " \"description\": \"Parameter definitions for various crops. Can be used as input for a crop \\r\\nsimulation model, such as WOFOST.\",\n" + + " \"access_right\": \"open\",\n" + + " \"license\": \"AFL-3.0\",\n" + + " \"keywords\": [\"crop parameters\", \"crop simulation\", \"input files\", \"wofost\"],\n" + + " \"related_identifiers\": [\n" + + " {\n" + + " \"identifier\": \"http://data.d4science.org/ctlg/AgroClimaticModelling/crop_parameters\",\n" + + " \"relation\": \"compiles\"\n" + + " }],\n" + + " \"contributors\": [\n" + + " {\n" + + " \"type\": \"Producer\",\n" + + " \"name\": \"Knapen Rob\"\n" + + " },\n" + + " {\n" + + " \"type\": \"DataCurator\",\n" + + " \"name\": \"Knapen Rob\"\n" + + " }],\n" + + " \"version\": \"1\",\n" + + " \"upload_type\": \"dataset\",\n" + + " \"creators\": [\n" + + " {\n" + + " \"name\": \"Knapen Rob\",\n" + + " \"type\": \"Producer\"\n" + + " }]\n" + + " }\n" + + "}"; + ZenodoDeposition dep=Parsing.getMapper().readValue(toParse,ZenodoDeposition.class); + System.out.println(dep); + } } diff --git a/src/test/java/org/gcube/tests/TransformationTests.java b/src/test/java/org/gcube/tests/TransformationTests.java index b34eac6..61f40fb 100644 --- a/src/test/java/org/gcube/tests/TransformationTests.java +++ b/src/test/java/org/gcube/tests/TransformationTests.java @@ -24,16 +24,17 @@ public class TransformationTests { Translator basic=new Translator(); TestCommons.readAndTransform("/simpleItem.json",basic); TestCommons.readAndTransform("/FSKXModel.json",basic); - TestCommons.readAndTransform("/ResearchObject.json",basic); - + TestCommons.readAndTransform("/ResearchObject.json",basic); } @Test public void transformWithMappings() throws Exception { - GenericResource res=Resources.unmarshal(GenericResource.class, TransformationTests.class.getResourceAsStream("/ResearchObject.xml")); - TestCommons.readAndTransform("/ResearchObject.json", new Translator(IS.readMappings(res))); + GenericResource res=Resources.unmarshal(GenericResource.class, TransformationTests.class.getResourceAsStream("/ResearchObject.xml")); + Translator t=new Translator(IS.readMappings(res)); +// TestCommons.readAndTransform("/ResearchObject.json", t); + TestCommons.readAndTransform("/crop_parameters.json",t); } diff --git a/src/test/resources/ResearchObject.xml b/src/test/resources/ResearchObject.xml index 3e1c9d2..3296462 100644 --- a/src/test/resources/ResearchObject.xml +++ b/src/test/resources/ResearchObject.xml @@ -17,8 +17,8 @@ - - dataset + + dataset $.metadata upload_type @@ -26,22 +26,23 @@ - - $.extras[?(@.key=='Author')].value + + $.extras[?(@.key=='Author')].value + $.author $.metadata.creators[0] name - + - - - Producer +