ref #9575: adapt findTaxaAndNames for doAuthors, add test case
authorKatja Luther <k.luther@bgbm.org>
Wed, 28 Apr 2021 11:50:06 +0000 (13:50 +0200)
committerKatja Luther <k.luther@bgbm.org>
Wed, 28 Apr 2021 11:50:06 +0000 (13:50 +0200)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java
cdmlib-persistence/src/test/resources/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.xml

index 2fd7e705c8309c7bcff23d3c6fe9f6a359f05467..1c1b4da0f8ac1ed83bc87f8cde66b9a50af16801 100755 (executable)
@@ -270,8 +270,9 @@ public class TaxonDaoHibernateImpl
                        return resultObjects;
                }
         }
+        String searchField = includeAuthors ? "titleCache" : "nameCache";
         Query query = prepareTaxaByNameForEditor(doTaxa, doSynonyms, doMisappliedNames, doCommonNames, includeUnpublished,
-                "nameCache", queryString, classification, subtree, matchMode, namedAreas, doCount, order);
+                searchField, queryString, classification, subtree, matchMode, namedAreas, doCount, order);
 
         if (query != null){
             List<Object[]> results = query.list();
index cc50ade2fe1049495f58cfc6276a56ff0d4ad126..065cbe8f7cc86b5a70f5ef201af36c472603d8be 100644 (file)
@@ -124,6 +124,8 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
     private static final boolean noMisapplied = false;
     private static final boolean doCommonNames = true;
     private static final boolean noCommonNames = false;
+    private static final boolean doAuthors = true;
+    private static final boolean noAuthors = false;
 
     @SuppressWarnings("unused")
     private static final String[] TABLE_NAMES = new String[] {
@@ -331,34 +333,42 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
         List<UuidAndTitleCache<? extends IdentifiableEntity>> results;
 
         results = taxonDao.getTaxaByNameForEditor(
-                doTaxa, doSynonyms, noMisapplied, noCommonNames, false, includeUnpublished, "Acher", null, subtree, MatchMode.BEGINNING, null, null);
+                doTaxa, doSynonyms, noMisapplied, noCommonNames, false, includeUnpublished, noAuthors, "Acher", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertFalse("The list should not be empty", results.isEmpty());
         assertEquals(4, results.size());
 
-        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, noMisapplied, noCommonNames, false,includeUnpublished, "A", null, subtree, MatchMode.BEGINNING, null, null);
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, noMisapplied, noCommonNames, false,includeUnpublished, noAuthors,"A", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals(7, results.size());
 
-        results = taxonDao.getTaxaByNameForEditor(doTaxa, noSynonyms, noMisapplied, noCommonNames, false, includeUnpublished, "A", null, subtree, MatchMode.BEGINNING, null, null);
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, noSynonyms, noMisapplied, noCommonNames, false, includeUnpublished,noAuthors, "A", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals(5, results.size());
         assertEquals(results.get(0).getType(), Taxon.class);
 
-        results = taxonDao.getTaxaByNameForEditor(noTaxa, doSynonyms, noMisapplied, noCommonNames, false, includeUnpublished, "A", null, subtree, MatchMode.BEGINNING, null, null);
+        results = taxonDao.getTaxaByNameForEditor(noTaxa, doSynonyms, noMisapplied, noCommonNames, false, includeUnpublished, noAuthors, "A", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals(2, results.size());
         assertEquals(results.get(0).getType(), Synonym.class);
 
-        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, noMisapplied, noCommonNames, false,includeUnpublished, "Aus", null, subtree, MatchMode.EXACT, null, null);
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, noMisapplied, noCommonNames, false,includeUnpublished, noAuthors, "Aus", null, subtree, MatchMode.EXACT, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals("Results list should contain one entity",1,results.size());
 
-        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, "A", null, subtree, MatchMode.BEGINNING, null, null);
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, noAuthors, "A", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals("Results list should contain 8 entities", 8, results.size());
 
-        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, "Orphaned", null, subtree, MatchMode.BEGINNING, null, null);
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, doAuthors, "Acherontia styxx Westwood", null, subtree, MatchMode.BEGINNING, null, null);
+        assertNotNull("getTaxaByName should return a List", results);
+        assertEquals("Results list should contain 1 entity", 1, results.size());
+
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, noAuthors, "Acherontia styxx Westwood", null, subtree, MatchMode.BEGINNING, null, null);
+        assertNotNull("getTaxaByName should return a List", results);
+        assertEquals("Results list should contain no entities", 0, results.size());
+
+        results = taxonDao.getTaxaByNameForEditor(doTaxa, doSynonyms, doMisapplied, noCommonNames, false, includeUnpublished, noAuthors, "Orphaned", null, subtree, MatchMode.BEGINNING, null, null);
         assertNotNull("getTaxaByName should return a List", results);
         assertEquals("Results list should contain one entity, the orphaned synonym", 1, results.size());
 
index 345838026b4c0c5ae6ffc1304308a2821bf030f4..5d859be36ea7d934dda1b3e69ddd9292da28ed5e 100644 (file)
@@ -77,7 +77,7 @@
   <TAXONNAME NAMETYPE="ICZN"   ID="29" UUID="ea1f496a-c4cc-49e4-96d6-f46d58d23297" TITLECACHE="Brachyglossa Boisduval, 1828"          PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Boisduval, 1828"  NAMECACHE="Brachyglossa" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="774" GENUSORUNINOMIAL="Brachyglossa"  SPECIFICEPITHET="[null]" INFRASPECIFICEPITHET="[null]"/>\r
   <TAXONNAME NAMETYPE="ICZN"   ID="35" UUID="866278ea-0a6a-4308-acb3-e7e22624e5ea" TITLECACHE="Acherontia atropos (Linnaeus, 1758)"   PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="(Linnaeus, 1758)" NAMECACHE="Acherontia atropos" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="765" GENUSORUNINOMIAL="Acherontia"  SPECIFICEPITHET="atropos" INFRASPECIFICEPITHET="[null]"/>\r
   <TAXONNAME NAMETYPE="ICZN"   ID="36" UUID="7969821b-a2cf-4d01-95ec-6a5ed0ca3f69" TITLECACHE="Acherontia lachesis (Fabricius, 1798)" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="(Fabricius, 1798)" NAMECACHE="Acherontia lachesis" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="765" GENUSORUNINOMIAL="Acherontia"  SPECIFICEPITHET="lachesis" INFRASPECIFICEPITHET="[null]"/>\r
-  <TAXONNAME NAMETYPE="ICZN"   ID="37" UUID="61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7" TITLECACHE="Acherontia styxx Westwood, 1847"       PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Westwood, 1847"    NAMECACHE="Acherontia styx" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="765" GENUSORUNINOMIAL="Acherontia"  SPECIFICEPITHET="styx" INFRASPECIFICEPITHET="[null]"/>\r
+  <TAXONNAME NAMETYPE="ICZN"   ID="37" UUID="61b1dcae-8aa6-478a-bcd6-080cf0eb6ad7" TITLECACHE="Acherontia styxx Westwood, 1847"       PROTECTEDTITLECACHE="false" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="Westwood, 1847"    NAMECACHE="Acherontia styx" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false"  BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="765" GENUSORUNINOMIAL="Acherontia"  SPECIFICEPITHET="styx" INFRASPECIFICEPITHET="[null]"/>\r
   <TAXONNAME NAMETYPE="ICNAFP" ID="38" UUID="c9e7124b-2e60-4df2-996c-b7d024c85d33" TITLECACHE="Cryptocoryne x purpurea nothovar borneoensis N.Jacobsen, Bastm. &amp; Yuji Sasaki" PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="N.Jacobsen, Bastm. &amp; Yuji Sasaki" NAMECACHE="Cryptocoryne x purpurea nothovar borneoensis" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="true" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="761" GENUSORUNINOMIAL="Cryptocoryne" SPECIFICEPITHET="purpurea" INFRASPECIFICEPITHET="borneoensis"/>\r
   <TAXONNAME NAMETYPE="ICNAFP" ID="39" UUID="17de5598-1642-4983-9ba8-1002aeefb8b4" TITLECACHE="Acacia subg. Phyllodineae N.Jacobsen, Bastm. &amp; Yuji Sasaki"                    PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="N.Jacobsen, Bastm. &amp; Yuji Sasaki" NAMECACHE="Acacia subg. Phyllodineae" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="773" GENUSORUNINOMIAL="Acacia" SPECIFICEPITHET="" INFRASPECIFICEPITHET="[null]" INFRAGENERICEPITHET="Phyllodineae"/>\r
   <TAXONNAME NAMETYPE="ICNAFP" ID="40" UUID="9df4d5c2-c806-4671-abf3-043cee273498" TITLECACHE="Orphaned synonym"                      PROTECTEDTITLECACHE="true" PARSINGPROBLEM="0" FULLTITLECACHE="" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="true" AUTHORSHIPCACHE="" NAMECACHE="Orphaned synonym" PROTECTEDAUTHORSHIPCACHE="true" PROTECTEDNAMECACHE="true" ANAMORPHIC="false" BINOMHYBRID="false" HYBRIDFORMULA="false" MONOMHYBRID="false" TRINOMHYBRID="false" RANK_ID="773" GENUSORUNINOMIAL="Orphaned" SPECIFICEPITHET="" INFRASPECIFICEPITHET="[null]" INFRAGENERICEPITHET="Synonym"/>\r