From 591ed6fcd921f197656468917aa374fed6790bc5 Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Thu, 5 Oct 2023 09:31:56 +0300 Subject: [PATCH] check for grant, since it is not a mandatory field --- .../mapper/DMPToZenodoMapper.java | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java b/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java index f4a6085..512a05f 100644 --- a/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java +++ b/src/main/java/eu/eudat/depositinterface/zenodorepository/mapper/DMPToZenodoMapper.java @@ -234,27 +234,31 @@ public class DMPToZenodoMapper { deposit.getMetadata().getContributors().addAll(contributors1); deposit.getMetadata().getContributors().addAll(researchers); - if (dmp.getGrant().getReference() == null) { - dmp.getGrant().setReference("dmp:" + dmp.getGrant().getId()); - } - String grantReferenceHead = dmp.getGrant().getReference().split(":")[0]; - if (grantReferenceHead.equals("openaire")) { - String grantReferenceTail = dmp.getGrant().getReference().split(":")[3]; - List doiFunders = new ArrayList<>(); - try { - List> tempdoiFunders = objectMapper.readValue(configLoader.getStreamFromPath(zenodoConfig.getDoiFunder()), List.class); - doiFunders = tempdoiFunders.stream().map(map -> objectMapper.convertValue(map, DOIFunder.class) ).collect(Collectors.toList()); - } catch (IOException e) { - logger.error(e.getLocalizedMessage(), e); + if (dmp.getGrant() != null) { + if (dmp.getGrant().getReference() == null) { + dmp.getGrant().setReference("dmp:" + dmp.getGrant().getId()); } - DOIFunder doiFunder = doiFunders.stream() - .filter(doiFunder1 -> dmp.getGrant().getFunder().getLabel().contains(doiFunder1.getFunder()) || doiFunder1.getFunder().contains(dmp.getGrant().getFunder().getLabel())) - .findFirst().orElse(null); - if (doiFunder != null) { - String finalId = doiFunder.getDOI() + "::" + grantReferenceTail; - ZenodoGrant grant = new ZenodoGrant(); - grant.setId(finalId); - deposit.getMetadata().getGrants().add(grant); + String grantReferenceHead = dmp.getGrant().getReference().split(":")[0]; + if (grantReferenceHead.equals("openaire")) { + String grantReferenceTail = dmp.getGrant().getReference().split(":")[3]; + List doiFunders = new ArrayList<>(); + try { + List> tempdoiFunders = objectMapper.readValue(configLoader.getStreamFromPath(zenodoConfig.getDoiFunder()), List.class); + doiFunders = tempdoiFunders.stream().map(map -> objectMapper.convertValue(map, DOIFunder.class)).collect(Collectors.toList()); + } catch (IOException e) { + logger.error(e.getLocalizedMessage(), e); + } + if (dmp.getGrant().getFunder() != null && dmp.getGrant().getFunder().getLabel() != null) { + DOIFunder doiFunder = doiFunders.stream() + .filter(doiFunder1 -> dmp.getGrant().getFunder().getLabel().contains(doiFunder1.getFunder()) || doiFunder1.getFunder().contains(dmp.getGrant().getFunder().getLabel())) + .findFirst().orElse(null); + if (doiFunder != null) { + String finalId = doiFunder.getDOI() + "::" + grantReferenceTail; + ZenodoGrant grant = new ZenodoGrant(); + grant.setId(finalId); + deposit.getMetadata().getGrants().add(grant); + } + } } } ZenodoCreator creator = new ZenodoCreator();