From 5857fd38c1bc8550e62fecfd5a4823b15e2202b3 Mon Sep 17 00:00:00 2001 From: Claudio Atzori Date: Sun, 21 Apr 2024 08:29:09 +0200 Subject: [PATCH] avoid NPEs in common Oaf merge utilities --- .../eu/dnetlib/dhp/oa/merge/AuthorMerger.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/dhp-common/src/main/java/eu/dnetlib/dhp/oa/merge/AuthorMerger.java b/dhp-common/src/main/java/eu/dnetlib/dhp/oa/merge/AuthorMerger.java index b413a0bb9..39725f6eb 100644 --- a/dhp-common/src/main/java/eu/dnetlib/dhp/oa/merge/AuthorMerger.java +++ b/dhp-common/src/main/java/eu/dnetlib/dhp/oa/merge/AuthorMerger.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.StringUtils; import com.wcohen.ss.JaroWinkler; import eu.dnetlib.dhp.schema.oaf.Author; +import eu.dnetlib.dhp.schema.oaf.Qualifier; import eu.dnetlib.dhp.schema.oaf.StructuredProperty; import eu.dnetlib.pace.model.Person; import scala.Tuple2; @@ -146,10 +147,20 @@ public class AuthorMerger { } public static String pidToComparableString(StructuredProperty pid) { - final String classid = pid.getQualifier().getClassid() != null ? pid.getQualifier().getClassid().toLowerCase() - : ""; - return (pid.getQualifier() != null ? classid : "") - + (pid.getValue() != null ? pid.getValue().toLowerCase() : ""); + final String classId = Optional + .ofNullable(pid) + .map( + p -> Optional + .ofNullable(p.getQualifier()) + .map(Qualifier::getClassid) + .map(String::toLowerCase) + .orElse("")) + .orElse(""); + return Optional + .ofNullable(pid) + .map(StructuredProperty::getValue) + .map(v -> String.join("|", v, classId)) + .orElse(""); } public static int countAuthorsPids(List authors) {