Skip to content

Commit 2b247b6

Browse files
authored
Merge pull request #12171 from GlobalDataverseCommunityConsortium/DataCite_reRegister_handle_unregistered_DOI_case
DataCite reRegsiter: fix handling when DOI doesn't exist at DataCite
2 parents b761723 + 2d8d6a2 commit 2b247b6

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/pidproviders/doi/datacite/DOIDataCiteRegisterService.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,24 @@ public String reRegisterIdentifier(String identifier, Map<String, String> metada
8383
String numericIdentifier = identifier.substring(identifier.indexOf(":") + 1);
8484
String xmlMetadata = getMetadataFromDvObject(identifier, metadata, dvObject);
8585
String target = metadata.get("_target");
86-
String currentMetadata = client.getMetadata(numericIdentifier);
87-
Diff myDiff = DiffBuilder.compare(xmlMetadata)
88-
.withTest(currentMetadata).ignoreWhitespace().checkForSimilar()
89-
.build();
90-
91-
if (myDiff.hasDifferences()) {
92-
for(Difference d : myDiff.getDifferences()) {
93-
94-
logger.fine(d.toString());
86+
String currentMetadata = null;
87+
boolean hasDifferences = false;
88+
try {
89+
currentMetadata = client.getMetadata(numericIdentifier);
90+
Diff myDiff = DiffBuilder.compare(xmlMetadata).withTest(currentMetadata).ignoreWhitespace().checkForSimilar()
91+
.build();
92+
hasDifferences = myDiff.hasDifferences();
93+
if (hasDifferences) {
94+
for (Difference d : myDiff.getDifferences()) {
95+
logger.fine(d.toString());
96+
}
9597
}
98+
} catch (RuntimeException e) {
99+
logger.log(Level.INFO, "DOI " + numericIdentifier + " not registered with DataCite, registering now.");
100+
hasDifferences = true;
101+
}
102+
103+
if (hasDifferences) {
96104
retString = "metadata:\\r" + client.postMetadata(xmlMetadata) + "\\r";
97105
}
98106
String currentUrl = null;

0 commit comments

Comments
 (0)