From bde514721f2f1baddd4320964ab486063cc35324 Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Thu, 12 Sep 2024 14:07:50 -0400 Subject: [PATCH] check for ROR in grantAgency field too --- .../pidproviders/doi/XmlMetadataTemplate.java | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/pidproviders/doi/XmlMetadataTemplate.java b/src/main/java/edu/harvard/iq/dataverse/pidproviders/doi/XmlMetadataTemplate.java index eb99bba2337..93631ad8c0a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/pidproviders/doi/XmlMetadataTemplate.java +++ b/src/main/java/edu/harvard/iq/dataverse/pidproviders/doi/XmlMetadataTemplate.java @@ -623,29 +623,34 @@ private void writeEntityElements(XMLStreamWriter xmlw, String elementName, Strin } if (StringUtils.isNotBlank(affiliation)) { - boolean isROR=false; - String orgName = affiliation; - ExternalIdentifier externalIdentifier = ExternalIdentifier.ROR; - if (externalIdentifier.isValidIdentifier(affiliation)) { - isROR=true; - if(pidProvider instanceof DataCiteDOIProvider dcProvider) { - JsonObject jo = dcProvider.getExternalVocabularyValue(affiliation); - if(jo!=null) { - orgName = jo.getString("termName"); - } + String orgName = getOrganizationFromRORField(affiliation, attributeMap); + XmlWriterUtil.writeFullElementWithAttributes(xmlw, "affiliation", attributeMap, StringEscapeUtils.escapeXml10(orgName)); + } + xmlw.writeEndElement(); + } + + private String getOrganizationFromRORField(String nameOrRor, Map attributeMap) { + boolean isROR=false; + String orgName = nameOrRor; + ExternalIdentifier externalIdentifier = ExternalIdentifier.ROR; + if (externalIdentifier.isValidIdentifier(nameOrRor)) { + isROR=true; + if(pidProvider instanceof DataCiteDOIProvider dcProvider) { + JsonObject jo = dcProvider.getExternalVocabularyValue(nameOrRor); + if(jo!=null) { + orgName = jo.getString("termName"); } } - - attributeMap.clear(); - if (isROR) { + } + + attributeMap.clear(); + if (isROR) { - attributeMap.put("schemeURI", "https://ror.org"); - attributeMap.put("affiliationIdentifierScheme", "ROR"); - attributeMap.put("affiliationIdentifier", affiliation); - } - XmlWriterUtil.writeFullElementWithAttributes(xmlw, "affiliation", attributeMap, StringEscapeUtils.escapeXml10(orgName)); + attributeMap.put("schemeURI", "https://ror.org"); + attributeMap.put("affiliationIdentifierScheme", "ROR"); + attributeMap.put("affiliationIdentifier", nameOrRor); } - xmlw.writeEndElement(); + return orgName; } /** @@ -1493,8 +1498,10 @@ private void writeFundingReferences(XMLStreamWriter xmlw, DvObject dvObject) thr } if (!StringUtils.isBlank(funder)) { fundingReferenceWritten = XmlWriterUtil.writeOpenTagIfNeeded(xmlw, "fundingReferences", fundingReferenceWritten); + Map attributeMap = new HashMap<>(); + funder = getOrganizationFromRORField(funder, attributeMap); xmlw.writeStartElement("fundingReference"); // - XmlWriterUtil.writeFullElement(xmlw, "funderName", StringEscapeUtils.escapeXml10(funder)); + XmlWriterUtil.writeFullElementWithAttributes(xmlw, "funderName", attributeMap, StringEscapeUtils.escapeXml10(funder)); if (StringUtils.isNotBlank(awardNumber)) { XmlWriterUtil.writeFullElement(xmlw, "awardNumber", StringEscapeUtils.escapeXml10(awardNumber)); }