diff --git a/matching-ws/src/main/java/life/catalogue/matching/DatasetIndex.java b/matching-ws/src/main/java/life/catalogue/matching/DatasetIndex.java index 32c5ceeff..a062c6787 100644 --- a/matching-ws/src/main/java/life/catalogue/matching/DatasetIndex.java +++ b/matching-ws/src/main/java/life/catalogue/matching/DatasetIndex.java @@ -57,6 +57,7 @@ public class DatasetIndex { final static NameUsageMatch NO_MATCH = NameUsageMatch.builder() .diagnostics( Diagnostics.builder() + .confidence(100) .matchType(MatchType.NONE) .build()) .build(); diff --git a/matching-ws/src/main/java/life/catalogue/matching/NameUsageMatch.java b/matching-ws/src/main/java/life/catalogue/matching/NameUsageMatch.java index d32073fcc..c591642b9 100644 --- a/matching-ws/src/main/java/life/catalogue/matching/NameUsageMatch.java +++ b/matching-ws/src/main/java/life/catalogue/matching/NameUsageMatch.java @@ -7,12 +7,8 @@ import java.util.Optional; import io.swagger.v3.oas.annotations.media.Schema; -import life.catalogue.api.vocab.TaxonomicStatus; - import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; - import org.gbif.nameparser.api.Rank; /** @@ -41,6 +37,8 @@ public class NameUsageMatch implements LinneanClassification { List additionalStatus = new ArrayList<>(); private String nameFor(Rank rank) { + if (classification == null) + return null; return getClassification().stream() .filter(c -> c.getRank().equals(rank)) .findFirst() @@ -49,6 +47,8 @@ private String nameFor(Rank rank) { } private String keyFor(Rank rank) { + if (classification == null) + return null; return getClassification().stream() .filter(c -> c.getRank().equals(rank)) .findFirst() @@ -57,8 +57,11 @@ private String keyFor(Rank rank) { } private void setNameFor(String value, Rank rank) { + if (classification == null) { + this.classification = new ArrayList<>(); + } Optional name = - this.getClassification().stream().filter(c -> c.getRank().equals(rank)).findFirst(); + this.classification.stream().filter(c -> c.getRank().equals(rank)).findFirst(); if (name.isPresent()) { name.get().setName(value); name.get().setCanonicalName(value); @@ -67,7 +70,7 @@ private void setNameFor(String value, Rank rank) { newRank.setRank(rank); newRank.setName(value); newRank.setCanonicalName(value); - this.getClassification().add(newRank); + this.classification.add(newRank); } } diff --git a/matching-ws/src/test/java/life/catalogue/matching/NameUsageBuilder.java b/matching-ws/src/test/java/life/catalogue/matching/NameUsageBuilder.java index 8e18eb739..bf013e9f8 100644 --- a/matching-ws/src/test/java/life/catalogue/matching/NameUsageBuilder.java +++ b/matching-ws/src/test/java/life/catalogue/matching/NameUsageBuilder.java @@ -37,7 +37,7 @@ public static NameUsageMatch newNameUsageMatch( String subgenusKey, String speciesKey) { - NameUsageMatch m = NameUsageMatch.builder().build(); + NameUsageMatch m = NameUsageMatch.builder().diagnostics(Diagnostics.builder().build()).build(); m.setUsage(new RankedName()); m.getUsage().setKey(usageKey); m.getUsage().setName(scientificName);