diff --git a/nomer/src/main/java/org/globalbioticinteractions/nomer/util/AppenderUtil.java b/nomer/src/main/java/org/globalbioticinteractions/nomer/util/AppenderUtil.java index 80b3b71d..54837a68 100644 --- a/nomer/src/main/java/org/globalbioticinteractions/nomer/util/AppenderUtil.java +++ b/nomer/src/main/java/org/globalbioticinteractions/nomer/util/AppenderUtil.java @@ -59,9 +59,7 @@ public static String valueForTaxonProperty(Taxon taxon, } else if (StringUtils.equalsIgnoreCase(taxonPropertyName, "path.authorship")) { colValue = taxon.getPathAuthorships(); } else if (StringUtils.startsWith(taxonPropertyName, "path.") - && ranks.size() > 0 - && ranks.size() == ids.size() - && names.size() == ids.size()) { + && ranks.size() > 0) { String[] split = StringUtils.split(taxonPropertyName, '.'); if (split != null && split.length > 1) { String rank = split[1]; @@ -69,11 +67,11 @@ public static String valueForTaxonProperty(Taxon taxon, if (i1 > -1) { if (split.length > 2) { String propertyName = split[2]; - if ("id".equalsIgnoreCase(propertyName)) { + if ("id".equalsIgnoreCase(propertyName) && ranks.size() == ids.size()) { colValue = ids.get(i1); - } else if ("name".equalsIgnoreCase(propertyName)) { + } else if ("name".equalsIgnoreCase(propertyName) && ranks.size() == names.size()) { colValue = names.get(i1); - } else if ("authorship".equalsIgnoreCase(propertyName)) { + } else if ("authorship".equalsIgnoreCase(propertyName) && ranks.size() == authorships.size()) { colValue = authorships.get(i1); } } else { diff --git a/nomer/src/test/java/org/globalbioticinteractions/nomer/util/AppenderUtilTest.java b/nomer/src/test/java/org/globalbioticinteractions/nomer/util/AppenderUtilTest.java index eb3f3ecf..dc9e3787 100644 --- a/nomer/src/test/java/org/globalbioticinteractions/nomer/util/AppenderUtilTest.java +++ b/nomer/src/test/java/org/globalbioticinteractions/nomer/util/AppenderUtilTest.java @@ -22,6 +22,18 @@ public void getKingdomFromPath() { assertThat(kingdomName, is("someKingdom")); } + @Test + public void getKingdomFromPath2() { + TaxonImpl taxon = new TaxonImpl("someName", "someId"); + taxon.setPath("Animalia | Arthropoda | Insecta | Hymenoptera | Apidae | Apinae | Apini | None | Apis | Apis | Apis mellifera"); + taxon.setPathNames("kingdom | phylum | class | order | family | subfamily | tribe | subtribe | genus | subgenus | species"); + String kingdomName = AppenderUtil.valueForTaxonProperty( + taxon, + "path.kingdom.name"); + + assertThat(kingdomName, is("Animalia")); + } + @Test public void getUnknownKingdomFromPath() { TaxonImpl taxon = new TaxonImpl("someName", "someId");