import eu.etaxonomy.cdm.common.monitor.DefaultProgressMonitor;\r
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.description.CategoricalData;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.name.IBotanicalName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
-import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
+import eu.etaxonomy.cdm.model.name.TaxonName;\r
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;\r
import eu.etaxonomy.cdm.model.reference.Reference;\r
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;\r
import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
\r
/**\r
* @author a.babadshanjan, a.kohlbecker\r
- * @created 04.02.2009\r
+ * @since 04.02.2009\r
*/\r
public class TaxonServiceSearchTest extends CdmTransactionalIntegrationTest {\r
\r
- private static final String ABIES_BALSAMEA_UUID = "f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8";\r
-\r
- private static final String ABIES_ALBA_UUID = "7dbd5810-a3e5-44b6-b563-25152b8867f4";\r
-\r
- private static final String CLASSIFICATION_UUID = "2a5ceebb-4830-4524-b330-78461bf8cb6b";\r
+ private static Logger logger = Logger.getLogger(TaxonServiceSearchTest.class);\r
\r
- private static final String CLASSIFICATION_ALT_UUID = "d7c741e3-ae9e-4a7d-a566-9e3a7a0b51ce";\r
+ private static final int BENCHMARK_ROUNDS = 300;\r
\r
- private static final String D_ABIES_BALSAMEA_UUID = "900108d8-e6ce-495e-b32e-7aad3099135e";\r
+ private static final UUID ABIES_BALSAMEA_UUID = UUID.fromString("f65d47bd-4f49-4ab1-bc4a-bc4551eaa1a8");\r
+ private static final UUID ABIES_ALBA_UUID = UUID.fromString("7dbd5810-a3e5-44b6-b563-25152b8867f4");\r
+ private static final UUID CLASSIFICATION_UUID = UUID.fromString("2a5ceebb-4830-4524-b330-78461bf8cb6b");\r
+ private static final UUID CLASSIFICATION_ALT_UUID = UUID.fromString("d7c741e3-ae9e-4a7d-a566-9e3a7a0b51ce");\r
+ private static final UUID ABIES_SUBALPINA_UUID = UUID.fromString("9fee273c-c819-4f1f-913a-cd910465df51");\r
+ private static final UUID ABIES_LASIOCARPA_UUID = UUID.fromString("9ce1fecf-c1ad-4127-be01-85d5d9f847ce");\r
\r
- private static final String D_ABIES_ALBA_UUID = "ec8bba03-d993-4c85-8472-18b14942464b";\r
+ private static final UUID ROOTNODE_CLASSIFICATION_5000 = UUID.fromString("a8266e45-091f-432f-87ae-c625e6aa9bbc");\r
\r
- private static final String D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID = "e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1";\r
+ private static final UUID DESC_ABIES_BALSAMEA_UUID = UUID.fromString("900108d8-e6ce-495e-b32e-7aad3099135e");\r
+ private static final UUID DESC_ABIES_ALBA_UUID = UUID.fromString("ec8bba03-d993-4c85-8472-18b14942464b");\r
+ private static final UUID DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID = UUID.fromString("e9d8c2fd-6409-46d5-9c2e-14a2bbb1b2b1");\r
\r
private static final int NUM_OF_NEW_RADOM_ENTITIES = 1000;\r
\r
- private static Logger logger = Logger.getLogger(TaxonServiceSearchTest.class);\r
-\r
-\r
+ private boolean includeUnpublished = true;\r
\r
@SpringBeanByType\r
private ITaxonService taxonService;\r
@SpringBeanByType\r
private IDescriptionService descriptionService;\r
@SpringBeanByType\r
- private INameService nameService;\r
+ private IDescriptionElementService descriptionElementService;\r
@SpringBeanByType\r
- private ICdmMassIndexer indexer;\r
-\r
+ private INameService nameService;\r
@SpringBeanByType\r
private ITaxonNodeService nodeService;\r
\r
- private static final int BENCHMARK_ROUNDS = 300;\r
+ @SpringBeanByType\r
+ private ICdmMassIndexer indexer;\r
\r
private Set<Class<? extends CdmBase>> typesToIndex = null;\r
\r
private NamedArea germany;\r
- private NamedArea france ;\r
- private NamedArea russia ;\r
- private NamedArea canada ;\r
+ private NamedArea france;\r
+ private NamedArea russia;\r
+ private NamedArea canada;\r
\r
- /**\r
- * @throws java.lang.Exception\r
- */\r
@Before\r
public void setUp() throws Exception {\r
- typesToIndex = new HashSet<Class<? extends CdmBase>>();\r
+ typesToIndex = new HashSet<>();\r
typesToIndex.add(DescriptionElementBase.class);\r
typesToIndex.add(TaxonBase.class);\r
typesToIndex.add(TaxonRelationship.class);\r
russia = Country.RUSSIANFEDERATION();\r
canada = Country.CANADA();\r
\r
-\r
+ includeUnpublished = true;\r
}\r
\r
@Test\r
assertNotNull("nameService should exist", nameService);\r
}\r
\r
-\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet\r
public final void testPurgeAndReindex() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByFullText(null, "Abies", null, null, true, null, null, null, null); // --> 8\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByFullText(null, "Abies", null, subtree,\r
+ includeUnpublished, null, true, null, null, null, null); // --> 8\r
Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
\r
indexer.purge(null);\r
commitAndStartNewTransaction(null);\r
\r
- pager = taxonService.findByFullText(null, "Abies", null, null, true, null, null, null, null); // --> 0\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 0\r
Assert.assertEquals("Expecting no entities since the index has been purged", 0, pager.getCount().intValue());\r
\r
indexer.reindex(indexer.indexedClasses(), null);\r
commitAndStartNewTransaction(null);\r
\r
- pager = taxonService.findByFullText(null, "Abies", null, null, true, null, null, null, null); // --> 8\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 8\r
Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
}\r
\r
-\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet\r
public final void testFindByDescriptionElementFullText_CommonName() throws IOException,\r
LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
refreshLuceneIndex();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne", null, null, null,\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne",\r
+ null, subtree, null, null,\r
false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for CommonTaxonName", 1,\r
pager.getCount().intValue());\r
\r
// the description containing the Nulltanne has no taxon attached,\r
// taxon.id = null\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Nulltanne", null, null, null,\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Nulltanne", null, subtree, null, null,\r
false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for 'Nulltanne' ", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne", null, null,\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne", null, subtree, null,\r
Arrays.asList(new Language[] { Language.GERMAN() }), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching in German", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne", null, null,\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"tanne", null, subtree, null,\r
Arrays.asList(new Language[] { Language.RUSSIAN() }), false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching in Russian", 0, pager.getCount().intValue());\r
-\r
}\r
\r
@SuppressWarnings("rawtypes")\r
public final void testFindByDescriptionElementFullText_Distribution() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
// by Area\r
- pager = taxonService.findByDescriptionElementFullText(null, "Canada", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(null, "Canada", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for arae 'Canada'", 1, pager.getCount().intValue());\r
// by Status\r
- pager = taxonService.findByDescriptionElementFullText(null, "present", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(null, "present", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for status 'present'", 1, pager.getCount().intValue());\r
}\r
\r
public final void testFindByDescriptionElementFullText_wildcard() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"*", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"*", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for CommonTaxonName", 1, pager.getCount().intValue());\r
}\r
\r
@DataSet\r
public final void testFindByDescriptionElementFullText_TooManyClauses() throws IOException, LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
+\r
// generate 1024 terms to reproduce the bug\r
- TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));\r
- Set<String> uniqueRandomStrs = new HashSet<String>(1024);\r
+ TaxonDescription description = (TaxonDescription) descriptionService.find(DESC_ABIES_ALBA_UUID);\r
+ Set<String> uniqueRandomStrs = new HashSet<>(1024);\r
while(uniqueRandomStrs.size() < 1024){\r
uniqueRandomStrs.add(RandomStringUtils.random(10, true, false));\r
}\r
\r
refreshLuceneIndex();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting all 1024 entities grouped into one SearchResult item when searching for Rot*", 1, pager.getCount().intValue());\r
}\r
\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class)\r
- @Ignore\r
public final void testFullText_Paging() throws IOException, LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
Reference sec = ReferenceFactory.newDatabase();\r
referenceService.save(sec);\r
\r
- Set<String> uniqueRandomStrs = new HashSet<String>(1024);\r
+ Set<String> uniqueRandomStrs = new HashSet<>(1024);\r
int numOfItems = 100;\r
while(uniqueRandomStrs.size() < numOfItems){\r
uniqueRandomStrs.add(RandomStringUtils.random(5, true, false));\r
descriptionService.saveOrUpdate(description);\r
}\r
\r
- commitAndStartNewTransaction(new String[]{"TAXONBASE"});\r
+ commitAndStartNewTransaction(new String[]{/*"TAXONBASE"*/});\r
refreshLuceneIndex();\r
\r
int pageSize = 10;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, false, pageSize, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, subtree, null, null, false, pageSize, null, null, null);\r
Assert.assertEquals("unexpeted number of pages", Integer.valueOf(numOfItems / pageSize), pager.getPagesAvailable());\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, false, pageSize, 9, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, subtree, null, null, false, pageSize, 9, null, null);\r
Assert.assertNotNull("last page must have records", pager.getRecords());\r
Assert.assertNotNull("last item on last page must exist", pager.getRecords().get(0));\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, false, pageSize, 10, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, subtree, null, null, false, pageSize, 10, null, null);\r
Assert.assertNotNull("last page + 1 must not have any records", pager.getRecords());\r
}\r
\r
@Ignore // test fails, maybe the assumptions made here are not compatible with the lucene scoring mechanism see http://lucene.apache.org/core/3_6_1/scoring.html\r
public final void testFullText_ScoreAndOrder_1() throws IOException, LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
int numOfTaxa = 3;\r
\r
UUID[] taxonUuids = new UUID[numOfTaxa];\r
commitAndStartNewTransaction(null);\r
refreshLuceneIndex();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Rot", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Rot", null, subtree, null, null, false, null, null, null, null);\r
for(int i = 0; i < numOfTaxa; i++){\r
Assert.assertEquals("taxa should be orderd by relevance (= score)", taxonUuids[numOfTaxa - i - 1], pager.getRecords().get(i).getEntity().getUuid());\r
}\r
@Ignore // test fails, maybe the assumptions made here are not compatible with the lucene scoring mechanism see http://lucene.apache.org/core/3_6_1/scoring.html\r
public final void testFullText_ScoreAndOrder_2() throws IOException, LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
int numOfTaxa = 3;\r
\r
UUID[] taxonUuids = new UUID[numOfTaxa];\r
commitAndStartNewTransaction(null);\r
refreshLuceneIndex();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Rot", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Rot", null, subtree, null, null, false, null, null, null, null);\r
for(int i = 0; i < numOfTaxa; i++){\r
Assert.assertEquals("taxa should be orderd by relevance (= score)", taxonUuids[numOfTaxa - i - 1], pager.getRecords().get(i).getEntity().getUuid());\r
}\r
@DataSet\r
public final void testFullText_Grouping() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
- TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));\r
- Set<String> uniqueRandomStrs = new HashSet<String>(1024);\r
+ TaxonNode subtree = null;\r
+ TaxonDescription description = (TaxonDescription) descriptionService.find(DESC_ABIES_ALBA_UUID);\r
+ Set<String> uniqueRandomStrs = new HashSet<>(1024);\r
int numOfItems = 100;\r
while(uniqueRandomStrs.size() < numOfItems){\r
uniqueRandomStrs.add(RandomStringUtils.random(5, true, false));\r
\r
int pageSize = 10;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- boolean highlightFragments = true;\r
+ boolean highlightFragments = true;\r
\r
// test with findByDescriptionElementFullText\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, highlightFragments, pageSize, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, subtree, null, null, highlightFragments, pageSize, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertEquals("All matches should be grouped into a single SearchResult element", 1, pager.getRecords().size());\r
Assert.assertEquals("The count property of the pager must be set correctly", 1, pager.getCount().intValue());\r
Assert.assertEquals("expecting 10 highlighted fragments of field 'name'", maxDocsPerGroup, highlightMap.get("name").length);\r
\r
// test with findByEverythingFullText\r
- pager = taxonService.findByEverythingFullText( "Rot*", null, null, highlightFragments, pageSize, null, null, null);\r
+ pager = taxonService.findByEverythingFullText( "Rot*", null, subtree, includeUnpublished, null, highlightFragments, pageSize, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertEquals("All matches should be grouped into a single SearchResult element", 1, pager.getRecords().size());\r
Assert.assertEquals("The count property of the pager must be set correctly", 1, pager.getCount().intValue());\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet\r
- @Ignore\r
public final void testFindByDescriptionElementFullText_TextData() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Abies", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Abies", null, subtree, null, null, false, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertEquals("Expecting one entity when searching for any TextData", 1, pager.getCount().intValue());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getEntity().getTitleCache());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getDocs().iterator().next().get("inDescription.taxon.titleCache"));\r
\r
\r
- pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for any type", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, Arrays.asList(new Feature[]{Feature.UNKNOWN()}), null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, subtree, Arrays.asList(new Feature[]{Feature.UNKNOWN()}), null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for any type and for Feature DESCRIPTION", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, Arrays.asList(new Feature[]{Feature.CHROMOSOME_NUMBER()}), null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, subtree, Arrays.asList(new Feature[]{Feature.CHROMOSOME_NUMBER()}), null, false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for any type and for Feature CHROMOSOME_NUMBER", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, Arrays.asList(new Feature[]{Feature.CHROMOSOME_NUMBER(), Feature.UNKNOWN()}), null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(null, "Abies", null, subtree, Arrays.asList(new Feature[]{Feature.CHROMOSOME_NUMBER(), Feature.UNKNOWN()}), null, false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for any type and for Feature DESCRIPTION or CHROMOSOME_NUMBER", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(Distribution.class, "Abies", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(Distribution.class, "Abies", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity when searching for Distribution", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, null, Arrays.asList(new Language[]{}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, subtree, null, Arrays.asList(new Language[]{}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", 1, pager.getCount().intValue());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getEntity().getTitleCache());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, subtree, null, Arrays.asList(new Language[]{Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", 1, pager.getCount().intValue());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getEntity().getTitleCache());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Бальзам", null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting no entity", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", 1, pager.getCount().intValue());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getEntity().getTitleCache());\r
}\r
public final void testFindByDescriptionElementFullText_MultipleWords() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
// Pflanzenart aus der Gattung der Tannen\r
long start = System.currentTimeMillis();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Tannen", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Tannen", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("OR search : Expecting one entity", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Wespen", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Wespen", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("OR search : Expecting one entity", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Tannen", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Tannen", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("AND search : Expecting one entity", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Wespen", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Wespen", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("AND search : Expecting no entity", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Tannen\"", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Tannen\"", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Phrase search : Expecting one entity", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Wespen\"", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Wespen\"", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Phrase search : Expecting one entity", 0, pager.getCount().intValue());\r
\r
logger.info("testFindByDescriptionElementFullText_MultipleWords() duration: " + (System.currentTimeMillis() - start) + "ms");\r
public final void testFindByDescriptionElementFullText_modify_DescriptionElement() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
//\r
// modify the DescriptionElement\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertTrue("Search did not return any results", pager.getRecords().size() > 0);\r
Assert.assertTrue("Expecting only one doc", pager.getRecords().get(0).getDocs().size() == 1);\r
Document indexDocument = pager.getRecords().get(0).getDocs().iterator().next();\r
String[] descriptionElementUuidStr = indexDocument.getValues("uuid");\r
String[] inDescriptionUuidStr = indexDocument.getValues("inDescription.uuid");\r
// is only one uuid!\r
- DescriptionElementBase textData = descriptionService.getDescriptionElementByUuid(UUID.fromString(descriptionElementUuidStr[0]));\r
+ DescriptionElementBase textData = descriptionElementService.find(UUID.fromString(descriptionElementUuidStr[0]));\r
\r
((TextData)textData).removeText(Language.GERMAN());\r
((TextData)textData).putText(Language.SPANISH_CASTILIAN(), "abeto bals"+UTF8.SMALL_A_ACUTE+"mico");\r
\r
- descriptionService.saveDescriptionElement(textData);\r
+ descriptionElementService.save(textData);\r
commitAndStartNewTransaction(null);\r
// printDataSet(System.out, new String[] {\r
// "DESCRIPTIONELEMENTBASE", "LANGUAGESTRING", "DESCRIPTIONELEMENTBASE_LANGUAGESTRING" }\r
// );\r
\r
//\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN(), Language.RUSSIAN()}), false, null, null, null, null);\r
Assert.assertEquals("The german 'Balsam-Tanne' TextData should no longer be indexed", 0, pager.getCount().intValue());\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, subtree, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto bals"+UTF8.SMALL_A_ACUTE+"mico'", 1, pager.getCount().intValue());\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "bals"+UTF8.SMALL_A_ACUTE+"mico", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "bals"+UTF8.SMALL_A_ACUTE+"mico", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("expecting to find the SPANISH_CASTILIAN 'abeto bals"+UTF8.SMALL_A_ACUTE+"mico'", 1, pager.getCount().intValue());\r
\r
//\r
}\r
descriptionService.saveOrUpdate(description);\r
commitAndStartNewTransaction(null);\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "abeto", null, subtree, null, Arrays.asList(new Language[]{Language.SPANISH_CASTILIAN()}), false, null, null, null, null);\r
Assert.assertEquals("The spanish 'abeto bals"+UTF8.SMALL_A_ACUTE+"mico' TextData should no longer be indexed", 0, pager.getCount().intValue());\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "balsamiczna", null, null, Arrays.asList(new Language[]{Language.POLISH()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "balsamiczna", null, subtree, null, Arrays.asList(new Language[]{Language.POLISH()}), false, null, null, null, null);\r
Assert.assertEquals("expecting to find the POLISH 'Jod"+UTF8.POLISH_L+"a balsamiczna'", 1, pager.getCount().intValue());\r
}\r
\r
public final void testFindByDescriptionElementFullText_modify_Taxon() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- Taxon t_abies_balsamea = (Taxon)taxonService.find(UUID.fromString(ABIES_BALSAMEA_UUID));\r
- TaxonDescription d_abies_balsamea = (TaxonDescription)descriptionService.find(UUID.fromString(D_ABIES_BALSAMEA_UUID));\r
+ Taxon t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);\r
+ TaxonDescription d_abies_balsamea = (TaxonDescription)descriptionService.find(DESC_ABIES_BALSAMEA_UUID);\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne",\r
+ null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("expecting to find the GERMAN 'Balsam-Tanne'", 1, pager.getCount().intValue());\r
\r
// exchange the Taxon with another one via the Taxon object\r
\r
t_abies_balsamea = (Taxon)taxonService.find(t_abies_balsamea.getUuid());\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne",\r
+ null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("'Balsam-Tanne' should no longer be found", 0, pager.getCount().intValue());\r
\r
// 2.) create new description and add to taxon:\r
t_abies_balsamea.addDescription(d_abies_balsamea_new);\r
// set authorshipCache to null to avoid validation exception,\r
// this is maybe not needed in future, see ticket #3344\r
- IBotanicalName abies_balsamea = CdmBase.deproxy(t_abies_balsamea.getName(), TaxonNameBase.class);\r
+ IBotanicalName abies_balsamea = CdmBase.deproxy(t_abies_balsamea.getName(), TaxonName.class);\r
abies_balsamea.setAuthorshipCache(null);\r
printDataSet(System.err, new String[] {"LANGUAGESTRING_AUD"});\r
taxonService.saveOrUpdate(t_abies_balsamea);\r
// "DESCRIPTIONBASE"\r
// });\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "mittelgro"+UTF8.SHARP_S+"er Baum", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "mittelgro"+UTF8.SHARP_S+"er Baum",\r
+ null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("the taxon should be found via the new Description", 1, pager.getCount().intValue());\r
}\r
\r
public final void testFindByDescriptionElementFullText_modify_Classification() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
-\r
- Pager<SearchResult<TaxonBase>> pager;\r
+ TaxonNode subtree = null;\r
\r
// put taxon into other classification, new taxon node\r
- Classification classification = classificationService.find(UUID.fromString(CLASSIFICATION_UUID));\r
- Classification alternateClassification = classificationService.find(UUID.fromString(CLASSIFICATION_ALT_UUID));\r
+ Classification classification = classificationService.find(CLASSIFICATION_UUID);\r
+ Classification alternateClassification = classificationService.find(CLASSIFICATION_ALT_UUID);\r
\r
// TODO: why is the test failing when the childNode is already retrieved here, and not after the following four lines?\r
//TaxonNode childNode = classification.getChildNodes().iterator().next();\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", null, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("expecting to find the GERMAN 'Balsam-Tanne' even if filtering by classification", 1, pager.getCount().intValue());\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", alternateClassification, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", alternateClassification, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("GERMAN 'Balsam-Tanne' should NOT be found in other classification", 0, pager.getCount().intValue());\r
\r
// check for the right taxon node\r
TaxonNode childNode = classification.getChildNodes().iterator().next();\r
- Assert.assertEquals("expecting Abies balsamea sec.", childNode.getTaxon().getUuid().toString(), ABIES_BALSAMEA_UUID);\r
- Assert.assertEquals("expecting default classification", childNode.getClassification().getUuid().toString(), CLASSIFICATION_UUID);\r
+ Assert.assertEquals("expecting Abies balsamea sec.", childNode.getTaxon().getUuid(), ABIES_BALSAMEA_UUID);\r
+ Assert.assertEquals("expecting default classification", childNode.getClassification().getUuid(), CLASSIFICATION_UUID);\r
\r
// moving the taxon around, the rootnode is only a proxy\r
alternateClassification.setRootNode(HibernateProxyHelper.deproxy(alternateClassification.getRootNode(), TaxonNode.class));\r
// });\r
\r
// reload classification\r
- classification = classificationService.find(UUID.fromString(CLASSIFICATION_UUID));\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", alternateClassification, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ classification = classificationService.find(CLASSIFICATION_UUID);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne",\r
+ alternateClassification, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("GERMAN 'Balsam-Tanne' should now be found in other classification", 1, pager.getCount().intValue());\r
\r
classification.getChildNodes().clear();\r
classificationService.saveOrUpdate(classification);\r
commitAndStartNewTransaction(null);\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne", classification, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Balsam-Tanne",\r
+ classification, subtree, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("Now the GERMAN 'Balsam-Tanne' should NOT be found in original classification", 0, pager.getCount().intValue());\r
\r
}\r
@DataSet\r
public final void testFindByDescriptionElementFullText_CategoricalData() throws IOException, LuceneParseException {\r
\r
+ TaxonNode subtree = null;\r
// add CategoricalData\r
- DescriptionBase d_abies_balsamea = descriptionService.find(UUID.fromString(D_ABIES_BALSAMEA_UUID));\r
+ DescriptionBase d_abies_balsamea = descriptionService.find(DESC_ABIES_BALSAMEA_UUID);\r
// Categorical data\r
CategoricalData cdata = CategoricalData.NewInstance();\r
cdata.setFeature(Feature.DESCRIPTION());\r
\r
refreshLuceneIndex();\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- pager = taxonService.findByDescriptionElementFullText(CategoricalData.class, "green", null, null, null, false, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(CategoricalData.class, "green", null, subtree, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting one entity", 1, pager.getCount().intValue());\r
Assert.assertEquals("Abies balsamea sec. Kohlbecker, A., Testcase standart views, 2013", pager.getRecords().get(0).getEntity().getTitleCache());\r
Assert.assertTrue("Expecting only one doc", pager.getRecords().get(0).getDocs().size() == 1);\r
public final void testFindByDescriptionElementFullText_Highlighting() throws IOException, LuceneParseException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Abies", null, null, null, true, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDescriptionElementFullText(TextData.class, "Abies", null, subtree, null, null, true, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for any TextData", 1, pager.getCount().intValue());\r
SearchResult<TaxonBase> searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("the map of highlighted fragments should contain at least one item", searchResult.getFieldHighlightMap().size() > 0);\r
String[] fragments = searchResult.getFieldHighlightMap().values().iterator().next();\r
Assert.assertTrue("first fragments should contains serch term", fragments[0].contains("<B>Abies</B>"));\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Tannen", null, null, null, true, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Pflanzenart Tannen", null, subtree, null, null, true, null, null, null, null);\r
searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("Phrase search : Expecting at least one item in highlighted fragments", searchResult.getFieldHighlightMap().size() > 0);\r
fragments = searchResult.getFieldHighlightMap().values().iterator().next();\r
Assert.assertTrue("first fragments should contains serch term", fragments[0].contains("<B>Pflanzenart</B>") || fragments[0].contains("<B>Tannen</B>"));\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Tannen", null, null, null, true, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "+Pflanzenart +Tannen", null, subtree, null, null, true, null, null, null, null);\r
searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("Phrase search : Expecting at least one item in highlighted fragments", searchResult.getFieldHighlightMap().size() > 0);\r
fragments = searchResult.getFieldHighlightMap().values().iterator().next();\r
Assert.assertTrue("first fragments should contains serch term", fragments[0].contains("<B>Pflanzenart</B>") && fragments[0].contains("<B>Tannen</B>"));\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Tannen\"", null, null, null, true, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "\"Pflanzenart aus der Gattung der Tannen\"", null, subtree, null, null, true, null, null, null, null);\r
searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("Phrase search : Expecting at least one item in highlighted fragments", searchResult.getFieldHighlightMap().size() > 0);\r
fragments = searchResult.getFieldHighlightMap().values().iterator().next();\r
Assert.assertTrue("first fragments should contains serch term", fragments[0].contains("<B>Pflanzenart</B> <B>aus</B> <B>der</B> <B>Gattung</B> <B>der</B> <B>Tannen</B>"));\r
\r
- pager = taxonService.findByDescriptionElementFullText(TextData.class, "Gatt*", null, null, null, true, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(TextData.class, "Gatt*", null, subtree, null, null, true, null, null, null, null);\r
searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("Wildcard search : Expecting at least one item in highlighted fragments", searchResult.getFieldHighlightMap().size() > 0);\r
fragments = searchResult.getFieldHighlightMap().values().iterator().next();\r
\r
refreshLuceneIndex();\r
\r
- Classification europeanAbiesClassification = classificationService.find(UUID.fromString(CLASSIFICATION_UUID));\r
+ classificationService.find(CLASSIFICATION_UUID);\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
+ boolean NO_UNPUBLISHED = false;\r
\r
- pager = taxonService.findByFullText(null, "Abies", null, null, true, null, null, null, null); // --> 7\r
- logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByFullText(null, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 7\r
+// logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
\r
- pager = taxonService.findByFullText(Taxon.class, "Abies", null, null, true, null, null, null, null); // --> 6\r
+ //subtree\r
+ subtree = nodeService.find(ROOTNODE_CLASSIFICATION_5000);\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 0\r
+ Assert.assertEquals("Expecting 2 entities", 2, pager.getCount().intValue());\r
+ subtree = null;\r
+\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, NO_UNPUBLISHED, null, true, null, null, null, null); // --> 7\r
+// logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+ Assert.assertEquals("Expecting 6 entities", 6, pager.getCount().intValue());\r
+ Synonym abiesSubalpina = (Synonym)taxonService.find(ABIES_SUBALPINA_UUID);\r
+\r
+ //accepted published, syn not published\r
+ abiesSubalpina.getAcceptedTaxon().setPublish(true);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, NO_UNPUBLISHED, null, true, null, null, null, null); // --> 7\r
Assert.assertEquals("Expecting 7 entities", 7, pager.getCount().intValue());\r
\r
- pager = taxonService.findByFullText(Synonym.class, "Abies", null, null, true, null, null, null, null); // --> 1\r
+ //accepted published, syn published\r
+ abiesSubalpina = (Synonym)taxonService.find(abiesSubalpina.getUuid());\r
+ abiesSubalpina.setPublish(true);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, NO_UNPUBLISHED, null, true, null, null, null, null); // --> 7\r
+ Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
+\r
+ //accepted not published, syn published\r
+ abiesSubalpina = (Synonym)taxonService.find(abiesSubalpina.getUuid());\r
+ abiesSubalpina.getAcceptedTaxon().setPublish(false);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findByFullText(null, "Abies", null, subtree, NO_UNPUBLISHED, null, true, null, null, null, null); // --> 7\r
+ Assert.assertEquals("Expecting 6 entities. Synonym and accepted should not be found, though synonym is published",\r
+ 6, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findByFullText(Taxon.class, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 6\r
+ Assert.assertEquals("Expecting 7 entities", 7, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findByFullText(Synonym.class, "Abies", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 1\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
+ pager = taxonService.findByFullText(Synonym.class, "Abies", null, subtree, NO_UNPUBLISHED, null, true, null, null, null, null); // --> 1\r
+ Assert.assertEquals("Expecting 0 entity", 0, pager.getCount().intValue());\r
\r
- pager = taxonService.findByFullText(TaxonBase.class, "sec", null, null, true, null, null, null, null); // --> 7\r
+ pager = taxonService.findByFullText(TaxonBase.class, "sec", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 7\r
Assert.assertEquals("Expecting 8 entities", 9, pager.getCount().intValue());\r
\r
- pager = taxonService.findByFullText(null, "genus", null, null, true, null, null, null, null); // --> 1\r
+ pager = taxonService.findByFullText(null, "genus", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 1\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByFullText(Taxon.class, "subalpina", null, null, true, null, null, null, null); // --> 0\r
+ pager = taxonService.findByFullText(Taxon.class, "subalpina", null, subtree, includeUnpublished, null, true, null, null, null, null); // --> 0\r
Assert.assertEquals("Expecting 0 entities", 0, pager.getCount().intValue());\r
\r
+\r
// synonym in classification ???\r
}\r
\r
@DataSet\r
public final void testPrepareByAreaSearch() throws IOException, LuceneParseException {\r
\r
- List<PresenceAbsenceTerm> statusFilter = new ArrayList<PresenceAbsenceTerm>();\r
- List<NamedArea> areaFilter = new ArrayList<NamedArea>();\r
+ List<PresenceAbsenceTerm> statusFilter = new ArrayList<>();\r
+ List<NamedArea> areaFilter = new ArrayList<>();\r
areaFilter.add(germany);\r
areaFilter.add(canada);\r
areaFilter.add(russia);\r
\r
- Pager<SearchResult<TaxonBase>> pager = taxonService.findByDistribution(areaFilter, statusFilter, null, 20, 0, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByDistribution(areaFilter, statusFilter, null, null, 20, 0, null, null);\r
Assert.assertEquals("Expecting 2 entities", Integer.valueOf(2), Integer.valueOf(pager.getRecords().size()));\r
\r
}\r
\r
@Test\r
@DataSet\r
- public final void testFindTaxaAndNamesByFullText() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
+ public final void testFindTaxaAndNamesByFullText_synonymClassificationSubtree() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
+ Classification classification = null;\r
+ TaxonNode subtree = null;\r
\r
+ //\r
Pager<SearchResult<TaxonBase>> pager;\r
+ EnumSet<TaxaAndNamesSearchMode> taxaAndSynonyms = EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished);\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaAndSynonyms, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms & unpublished", 8, pager.getCount().intValue());\r
+\r
+ EnumSet<TaxaAndNamesSearchMode> taxaOnly = EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.includeUnpublished);\r
\r
- Classification alternateClassification = classificationService.find(UUID.fromString(CLASSIFICATION_ALT_UUID));\r
+ //classification\r
+ classification = classificationService.find(CLASSIFICATION_UUID);\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaAndSynonyms, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms & unpublished", 2, pager.getCount().intValue());\r
+ //taxa only\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaOnly, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & unpublished", 1, pager.getCount().intValue());\r
+ //synonyms only\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaOnly, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doSynonyms & unpublished", 1, pager.getCount().intValue());\r
+\r
+ classification = null;\r
+\r
+ //subtree\r
+ subtree = nodeService.find(ROOTNODE_CLASSIFICATION_5000);\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaAndSynonyms, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms & unpublished", 2, pager.getCount().intValue());\r
+ //taxa only\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ taxaOnly, "Abies", classification, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & unpublished", 1, pager.getCount().intValue());\r
+ subtree = null;\r
\r
+ }\r
+\r
+ @Test\r
+ @DataSet\r
+ public final void testFindTaxaAndNamesByFullText() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
+ refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
+\r
+ Classification alternateClassification = classificationService.find(CLASSIFICATION_ALT_UUID);\r
+ Synonym abiesSubalpina = (Synonym)taxonService.find(ABIES_SUBALPINA_UUID);\r
+\r
+ Pager<SearchResult<TaxonBase>> pager;\r
+ EnumSet<TaxaAndNamesSearchMode> modes = EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished);\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, null, null, null, true, null, null, null, null);\r
-// logPagerRecords(pager, Level.DEBUG);\r
- Assert.assertEquals("doTaxa & doSynonyms", 8, pager.getCount().intValue());\r
+ modes, "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms & unpublished", 8, pager.getCount().intValue());\r
+// logPagerRecords(pager, Level.DEBUG);\r
+\r
+ //unpublished\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, published only", 6, pager.getCount().intValue());\r
+\r
+ //accepted published, syn not published\r
+ abiesSubalpina.getAcceptedTaxon().setPublish(true);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, accepted published", 7, pager.getCount().intValue());\r
+\r
+ //accepted published, syn published\r
+ abiesSubalpina = (Synonym)taxonService.find(abiesSubalpina.getUuid());\r
+ abiesSubalpina.setPublish(true);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
+\r
+ //accepted not published, syn published\r
+ abiesSubalpina = (Synonym)taxonService.find(abiesSubalpina.getUuid());\r
+ abiesSubalpina.getAcceptedTaxon().setPublish(false);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 6 entities. Synonym and accepted should not be found, though synonym is published",\r
+ 6, pager.getCount().intValue());\r
\r
+ EnumSet<TaxaAndNamesSearchMode> searchMode = EnumSet.allOf(TaxaAndNamesSearchMode.class);\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.allOf(TaxaAndNamesSearchMode.class),\r
- "Abies", null, null, null, null, true, null, null, null, null);\r
+ searchMode, "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
// logPagerRecords(pager, Level.DEBUG);\r
Assert.assertEquals("all search modes", 8, pager.getCount().intValue());\r
-\r
+ searchMode.remove(TaxaAndNamesSearchMode.includeUnpublished);\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.allOf(TaxaAndNamesSearchMode.class),\r
- "Abies", alternateClassification, null, null, null, true, null, null, null, null);\r
+ searchMode, "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("all search modes except unpublished", 6, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findTaxaAndNamesByFullText(EnumSet.allOf(TaxaAndNamesSearchMode.class),\r
+ "Abies", alternateClassification, subtree, null, null, null, true, null, null, null, null);\r
// logPagerRecords(pager, Level.DEBUG);\r
Assert.assertEquals("all search modes, filtered by alternateClassification", 1, pager.getCount().intValue());\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, null, null, null, true, null, null, null, null);\r
- Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
- SearchResult<TaxonBase> searchResult = pager.getRecords().get(0);\r
- Assert.assertEquals(Synonym.class, searchResult.getEntity().getClass());\r
- // Abies subalpina sec. Kohlbecker, A., Testcase standart views, 2013\r
+ EnumSet.of(TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 2 entity", 2, pager.getCount().intValue());\r
+ Set<UUID> uuids = getTaxonUuidSet(pager);\r
+ Assert.assertTrue("The real synonym should be contained", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("The pro parte synonym should be contained",uuids.contains(ABIES_LASIOCARPA_UUID));\r
+ //without published\r
+ pager = taxonService.findTaxaAndNamesByFullText(EnumSet.of(TaxaAndNamesSearchMode.doSynonyms),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 0 entities", 0, pager.getCount().intValue());\r
\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames),\r
- "Abies", null, null, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, null, null, null, true, null, null, null, null);\r
Assert.assertEquals("Expecting 0 entity", 0, pager.getCount().intValue());\r
\r
-\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames),\r
- "Tanne", null, null, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Tanne", null, subtree, null, null, null, true, null, null, null, null);\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getRecords().size());\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames),\r
+ "Tanne", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 0 entity", 0, pager.getRecords().size());\r
\r
+ //misapplied names\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
- "kawakamii", null, null, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "kawakamii", (Classification)null, subtree, null, null, null, true, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
+ //unpublish accepted taxon\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
+ "kawakamii", (Classification)null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 0 entities", 0, pager.getCount().intValue());\r
+ //published accepted taxon/misapplied name\r
+ Taxon abiesBalsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);\r
+ abiesBalsamea.setPublish(true);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
+ "kawakamii", (Classification)null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 1 entities", 1, pager.getCount().intValue());\r
+ //unpublished misapplied name\r
+ Taxon misapplied = (Taxon)taxonService.find(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);\r
+ misapplied.setPublish(false);\r
+ commitAndStartNewTransaction();\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
+ "kawakamii", (Classification)null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("Expecting 0 entities", 0, pager.getCount().intValue());\r
\r
}\r
\r
@Test\r
@DataSet\r
- public final void testFindTaxaAndNamesByFullText_PhraseQuery() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
+ public final void testFindTaxaAndNamesByFullText_wildcard() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
Pager<SearchResult<TaxonBase>> pager;\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "Abi*", null, subtree, null, null, null, true, null, null, null, null);\r
+// logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms published only", 6, pager.getCount().intValue());\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "*bies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, published only", 6, pager.getCount().intValue());\r
+ // logFreeTextSearchResults(pager, Level.ERROR, null);\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "?bies", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, published only", 6, pager.getCount().intValue());\r
+ // logFreeTextSearchResults(pager, Level.ERROR, null);\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "*", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, published only", 7, pager.getCount().intValue());\r
+ }\r
\r
+ @Test\r
+ @DataSet\r
+ // @Ignore // FIXME: fails due org.apache.lucene.queryparser.classic.ParseException: Cannot parse 'relatedFrom.titleCache:()': Encountered " ")" ") "" at line 1, column 24.\r
+ public final void testFindTaxaAndNamesByFullText_empty_querString() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
- pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "\"Abies alba\"", null, null, null, null, true, null, null, null, null);\r
+ refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
+\r
+ Pager<SearchResult<TaxonBase>> pager;\r
+ pager = taxonService.findTaxaAndNamesByFullText(EnumSet.of(TaxaAndNamesSearchMode.doTaxa),\r
+ "", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa, published only", 7, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findTaxaAndNamesByFullText(TaxaAndNamesSearchMode.taxaAndSynonyms(),\r
+ "", null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doSynonyms, published only", 7, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findTaxaAndNamesByFullText(EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doMisappliedNames),\r
+ null, null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doMisappliedNames published only", 7, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findTaxaAndNamesByFullText(EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.doTaxaByCommonNames),\r
+ null, null, subtree, null, null, null, true, null, null, null, null);\r
+ Assert.assertEquals("doTaxa & doMisappliedNames & doTaxaByCommonNames , published only", 7, pager.getCount().intValue());\r
+ // logFreeTextSearchResults(pager, Level.ERROR, null);\r
+ }\r
+\r
+ @Test\r
+ @DataSet\r
+ //test for https://dev.e-taxonomy.eu/redmine/issues/7486\r
+ public final void testFindTaxaAndNamesByFullText_synonymsAndMisapplied_7486() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
+\r
+ refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
+\r
+ //misapplied names\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", (Classification)null, subtree, null, null, null, true, null, null, null, null);\r
+ logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+ Assert.assertEquals("Expecting 3 entity", 3, pager.getCount().intValue());\r
+ Set<UUID> uuids = getTaxonUuidSet(pager);\r
+ Assert.assertTrue("The real synonym should be contained", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("The pro parte synonym should be contained",uuids.contains(ABIES_LASIOCARPA_UUID));\r
+ Assert.assertTrue("The misapplied name should be contained",uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
+ }\r
+\r
+ @Test\r
+ @DataSet\r
+ public final void testFindTaxaAndNamesByFullText_PhraseQuery() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
+\r
+ refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
+\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "\"Abies alba\"", null, subtree, null, null, null, true, null, null, null, null);\r
// logPagerRecords(pager, Level.DEBUG);\r
Assert.assertEquals("doTaxa & doSynonyms with simple phrase query", 1, pager.getCount().intValue());\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "\"Abies al*\"", null, null, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "\"Abies al*\"", null, subtree, null, null, null, true, null, null, null, null);\r
// logPagerRecords(pager, Level.DEBUG);\r
Assert.assertEquals("doTaxa & doSynonyms with complex phrase query", 1, pager.getCount().intValue());\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "\"Abies*\"", null, null, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "\"Abies*\"", null, subtree, null, null, null, true, null, null, null, null);\r
+// logPagerRecords(pager, Level.DEBUG);\r
+ Assert.assertEquals("doTaxa & doSynonyms with simple phrase query", 8, pager.getCount().intValue());\r
+\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "\"Abies*\"", null, subtree, null, null, null, true, null, null, null, null);\r
// logPagerRecords(pager, Level.DEBUG);\r
Assert.assertEquals("doTaxa & doSynonyms with simple phrase query", 8, pager.getCount().intValue());\r
\r
public final void testFindTaxaAndNamesByFullText_Sort() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- List<OrderHint> orderHints = new ArrayList<OrderHint>();\r
+ List<OrderHint> orderHints = new ArrayList<>();\r
\r
- String[] docFields2log = new String[]{"id"};\r
+// String[] docFields2log = new String[]{"id"};\r
\r
// SortById\r
orderHints.addAll(OrderHint.ORDER_BY_ID.asList());\r
- pager = taxonService.findTaxaAndNamesByFullText(\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
EnumSet.of(TaxaAndNamesSearchMode.doTaxa),\r
- "Abies", null, null, null, null, true, null, null, orderHints, null);\r
+ "Abies", null, subtree, null, null, null, true, null, null, orderHints, null);\r
// logSearchResults(pager, Level.DEBUG, docFields2log);\r
int lastId = -1;\r
for(SearchResult<TaxonBase> rs : pager.getRecords()){\r
orderHints.addAll(OrderHint.ORDER_BY_ID.asList());\r
pager = taxonService.findTaxaAndNamesByFullText(\r
EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, null, null, null, true, null, null, orderHints, null);\r
+ "Abies", null, subtree, null, null, null, true, null, null, orderHints, null);\r
// logSearchResults(pager, Level.DEBUG, docFields2log);\r
\r
lastId = -1;\r
orderHints.addAll(OrderHint.NOMENCLATURAL_SORT_ORDER.asList());\r
pager = taxonService.findTaxaAndNamesByFullText(\r
EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, null, null, null, true, null, null, orderHints, null);\r
+ "Abies", null, subtree, null, null, null, true, null, null, orderHints, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
\r
}\r
\r
+ @Test\r
+ @DataSet\r
+ @Ignore //ignore until #7487 is fixed\r
+ public final void testFindTaxaAndNamesByFullText_AreaFilter_7487() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
+ refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
+ Set<NamedArea> a_germany_canada_russia = new HashSet<>();\r
+ a_germany_canada_russia.add(germany);\r
+ a_germany_canada_russia.add(canada);\r
+ a_germany_canada_russia.add(russia);\r
+\r
+ Set<PresenceAbsenceTerm> present_native = new HashSet<>();\r
+ present_native.add(PresenceAbsenceTerm.PRESENT());\r
+ present_native.add(PresenceAbsenceTerm.NATIVE());\r
+\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ Assert.assertEquals("Synonyms with matching area filter", 2, pager.getCount().intValue());\r
+ Set<UUID> uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Pro parte synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
+\r
+ //pro parte syn => partial syn\r
+ Taxon t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);\r
+ Set<TaxonRelationship> relsTo = t_abies_balsamea.getProParteAndPartialSynonymRelations();\r
+ Assert.assertEquals(1, relsTo.size());\r
+ TaxonRelationship taxonRelation = relsTo.iterator().next();\r
+ taxonRelation.setType(TaxonRelationshipType.PARTIAL_SYNONYM_FOR());\r
+ taxonService.saveOrUpdate(t_abies_balsamea);\r
+ commitAndStartNewTransaction(null);\r
+\r
+ //should give same results as above\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+// Assert.assertEquals("Synonyms with matching area filter", 2, pager.getCount().intValue());\r
+// uuids = this.getTaxonUuidSet(pager);\r
+// Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+// Assert.assertTrue("Partial synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
+\r
+ ///MISAPPLIED\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ Assert.assertEquals("misappliedNames with matching area & status filter", 3, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Misapplied name should be in", uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
+\r
+ t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);\r
+ relsTo = t_abies_balsamea.getMisappliedNameRelations();\r
+ Assert.assertEquals(1, relsTo.size());\r
+ taxonRelation = relsTo.iterator().next();\r
+ Assert.assertEquals(taxonRelation.getFromTaxon().getUuid(), DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);\r
+ taxonRelation.setType(TaxonRelationshipType.PRO_PARTE_MISAPPLIED_NAME_FOR());\r
+ taxonService.saveOrUpdate(t_abies_balsamea);\r
+ commitAndStartNewTransaction(null);\r
+\r
+ //strange it works here before fixing #7487 already\r
+ pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ Assert.assertEquals("misappliedNames with matching area & status filter", 3, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Pro parte misapplied name should be in", uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
+\r
+ }\r
+\r
+\r
@Test\r
@DataSet\r
public final void testFindTaxaAndNamesByFullText_AreaFilter() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
- Set<NamedArea> a_germany_canada_russia = new HashSet<NamedArea>();\r
+ Set<NamedArea> a_germany_canada_russia = new HashSet<>();\r
a_germany_canada_russia.add(germany);\r
a_germany_canada_russia.add(canada);\r
a_germany_canada_russia.add(russia);\r
\r
- Set<NamedArea> a_russia = new HashSet<NamedArea>();\r
+ Set<NamedArea> a_russia = new HashSet<>();\r
a_russia.add(russia);\r
\r
- Set<PresenceAbsenceTerm> present = new HashSet<PresenceAbsenceTerm>();\r
+ Set<PresenceAbsenceTerm> present = new HashSet<>();\r
present.add(PresenceAbsenceTerm.PRESENT());\r
\r
- Set<PresenceAbsenceTerm> present_native = new HashSet<PresenceAbsenceTerm>();\r
+ Set<PresenceAbsenceTerm> present_native = new HashSet<>();\r
present_native.add(PresenceAbsenceTerm.PRESENT());\r
present_native.add(PresenceAbsenceTerm.NATIVE());\r
\r
- Set<PresenceAbsenceTerm> absent = new HashSet<PresenceAbsenceTerm>();\r
+ Set<PresenceAbsenceTerm> absent = new HashSet<>();\r
absent.add(PresenceAbsenceTerm.ABSENT());\r
\r
- pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa),\r
- "Abies", null, a_germany_canada_russia, null, null, true, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, null, null, true, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+ Assert.assertEquals("Synonyms with matching area filter", 2, pager.getCount().intValue());\r
+ Set<UUID> uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Abies alba (accepted with distribution) should be in", uuids.contains(ABIES_ALBA_UUID));\r
+ Assert.assertTrue("Abies balsamea (accepted with distribution) should be in", uuids.contains(ABIES_BALSAMEA_UUID));\r
\r
- // abies_kawakamii_sensu_komarov as missapplied name for t_abies_balsamea\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
- Assert.assertEquals("synonyms with matching area filter", 1, pager.getCount().intValue());\r
+ EnumSet.of(TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ Assert.assertEquals("Synonyms with matching area filter", 2, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Pro parte synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, a_germany_canada_russia, null, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, null, null, true, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
- Assert.assertEquals("taxa and synonyms with matching area filter", 3, pager.getCount().intValue());\r
+ Assert.assertEquals("taxa and synonyms with matching area filter", 4, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Accepted taxon with area should be in", uuids.contains(ABIES_ALBA_UUID));\r
+ Assert.assertTrue("Accepted taxon with area should be in", uuids.contains(ABIES_BALSAMEA_UUID));\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Pro parte synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
+ Assert.assertFalse("Misapplied name should NOT be in", uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
- Assert.assertEquals("taxa and synonyms with matching area & status filter 1", 3, pager.getCount().intValue());\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ Assert.assertEquals("taxa and synonyms with matching area & status filter 4", 4, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Accepted taxon with area should be in", uuids.contains(ABIES_ALBA_UUID));\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Pro parte synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, a_germany_canada_russia, present, null, true, null, null, null, null);\r
- Assert.assertEquals("taxa and synonyms with matching area & status filter 2", 2, pager.getCount().intValue());\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present, null, true, null, null, null, null);\r
+ Assert.assertEquals("taxa and synonyms with matching area & status filter 3", 3, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Abies balsamea (accepted taxon) should be in", uuids.contains(ABIES_BALSAMEA_UUID));\r
+ Assert.assertTrue("Synonym of balsamea should be in", uuids.contains(ABIES_SUBALPINA_UUID));\r
+ Assert.assertTrue("Pro parte synonym of balsamea should be in", uuids.contains(ABIES_LASIOCARPA_UUID));\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms),\r
- "Abies", null, a_russia, present, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxa, TaxaAndNamesSearchMode.doSynonyms, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_russia, present, null, true, null, null, null, null);\r
Assert.assertEquals("taxa and synonyms with non matching area & status filter", 0, pager.getCount().intValue());\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames),\r
- "Tanne", null, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doTaxaByCommonNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Tanne", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
Assert.assertEquals("ByCommonNames with area filter", 1, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Abies balsamea should be in", uuids.contains(ABIES_BALSAMEA_UUID));\r
\r
// abies_kawakamii_sensu_komarov as misapplied name for t_abies_balsamea\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
- "Abies", null, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
Assert.assertEquals("misappliedNames with matching area & status filter", 1, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Misapplied name should be in", uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
\r
\r
// 1. remove existing taxon relation\r
- Taxon t_abies_balsamea = (Taxon)taxonService.find(UUID.fromString(ABIES_BALSAMEA_UUID));\r
- Set<TaxonRelationship> relsTo = t_abies_balsamea.getRelationsToThisTaxon();\r
+ Taxon t_abies_balsamea = (Taxon)taxonService.find(ABIES_BALSAMEA_UUID);\r
+ Set<TaxonRelationship> relsTo = t_abies_balsamea.getMisappliedNameRelations();\r
Assert.assertEquals(1, relsTo.size());\r
TaxonRelationship taxonRelation = relsTo.iterator().next();\r
t_abies_balsamea.removeTaxonRelation(taxonRelation);\r
commitAndStartNewTransaction(null);\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
- "Abies", null, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, present_native, null, true, null, null, null, null);\r
Assert.assertEquals("misappliedNames with matching area & status filter, should match nothing now", 0, pager.getCount().intValue());\r
\r
- // 2. now add abies_kawakamii_sensu_komarov as misapplied name for t_abies_alba and search for misapplications in russia: ABSENT\r
- Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(UUID.fromString(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
- Taxon t_abies_alba = (Taxon)taxonService.find(UUID.fromString(ABIES_ALBA_UUID));\r
+ // 2. now add abies_kawakamii_sensu_komarov as misapplied name for t_abies_alba and search for misapplications in Russia: ABSENT\r
+ Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);\r
+ Taxon t_abies_alba = (Taxon)taxonService.find(ABIES_ALBA_UUID);\r
t_abies_alba.addMisappliedName(t_abies_kawakamii_sensu_komarov, null, null);\r
-\r
taxonService.update(t_abies_kawakamii_sensu_komarov);\r
-\r
commitAndStartNewTransaction(null);\r
\r
pager = taxonService.findTaxaAndNamesByFullText(\r
- EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
- "Abies", null, a_germany_canada_russia, absent, null, true, null, null, null, null);\r
+ EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames, TaxaAndNamesSearchMode.includeUnpublished),\r
+ "Abies", null, subtree, a_germany_canada_russia, absent, null, true, null, null, null, null);\r
Assert.assertEquals("misappliedNames with matching area & status filter, should find one", 1, pager.getCount().intValue());\r
+ uuids = this.getTaxonUuidSet(pager);\r
+ Assert.assertTrue("Misapplied name should be in", uuids.contains(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
\r
}\r
\r
@Test\r
@DataSet\r
- @Ignore // remove once http://dev.e-taxonomy.eu/trac/ticket/5477 is solved\r
+ //https://dev.e-taxonomy.eu/redmine/issues/5477\r
public final void testFindTaxaAndNamesByFullText_AreaFilter_issue5477() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
- Set<NamedArea> a_germany_canada_russia = new HashSet<NamedArea>();\r
+ TaxonNode subtree = null;\r
+ Set<NamedArea> a_germany_canada_russia = new HashSet<>();\r
a_germany_canada_russia.add(germany);\r
a_germany_canada_russia.add(canada);\r
a_germany_canada_russia.add(russia);\r
\r
\r
- Set<PresenceAbsenceTerm> absent = new HashSet<PresenceAbsenceTerm>();\r
+ Set<PresenceAbsenceTerm> absent = new HashSet<>();\r
absent.add(PresenceAbsenceTerm.ABSENT());\r
\r
- Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(UUID.fromString(D_ABIES_KAWAKAMII_SEC_KOMAROV_UUID));\r
- Taxon t_abies_alba = (Taxon)taxonService.find(UUID.fromString(ABIES_ALBA_UUID));\r
+ Taxon t_abies_kawakamii_sensu_komarov = (Taxon)taxonService.find(DESC_ABIES_KAWAKAMII_SEC_KOMAROV_UUID);\r
+ Taxon t_abies_alba = (Taxon)taxonService.find(ABIES_ALBA_UUID);\r
t_abies_alba.addMisappliedName(t_abies_kawakamii_sensu_komarov, null, null);\r
\r
/* Since the upgrade from hibernate search 4 to 5.5\r
*/\r
taxonService.update(t_abies_alba);\r
\r
- commitAndStartNewTransaction(null);\r
+ commitAndStartNewTransaction(null);\r
\r
- Pager pager = taxonService.findTaxaAndNamesByFullText(\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(\r
EnumSet.of(TaxaAndNamesSearchMode.doMisappliedNames),\r
- "Abies", null, a_germany_canada_russia, absent, null, true, null, null, null, null);\r
- Assert.assertEquals("misappliedNames with matching area & status filter, should find one", 1, pager.getCount().intValue());\r
+ "Abies", null, subtree, a_germany_canada_russia, absent, null, true, null, null, null, null);\r
+ Assert.assertEquals("misappliedNames with matching area & status filter, should find one", 1, pager.getCount().intValue());\r
}\r
\r
\r
public final void testFindByEverythingFullText() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
-\r
- Pager<SearchResult<TaxonBase>> pager;\r
-\r
+ TaxonNode subtree = null;\r
+ EnumSet<TaxaAndNamesSearchMode> mode = TaxaAndNamesSearchMode.taxaAndSynonymsWithUnpublished();\r
// via Taxon\r
- pager = taxonService.findByEverythingFullText("Abies", null, null, true, null, null, null, null);\r
+ Pager<SearchResult<TaxonBase>>pager = taxonService.findByEverythingFullText("Abies", null, subtree, includeUnpublished, null, true, null, null, null, null);\r
+// Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(mode,\r
+// "Abies", null, null, null, null, true, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
Assert.assertTrue("Expecting at least 7 entities for 'Abies'", pager.getCount() > 7);\r
Assert.assertNotNull("Expecting entity", pager.getRecords().get(0).getEntity());\r
- Assert.assertEquals("Expecting Taxon entity", Taxon.class, pager.getRecords().get(0).getEntity().getClass());\r
+// Assert.assertEquals("Expecting Taxon entity", Taxon.class, pager.getRecords().get(0).getEntity().getClass());\r
\r
// via DescriptionElement\r
- pager = taxonService.findByEverythingFullText("present", null, null, true, null, null, null, null);\r
+ pager = taxonService.findByEverythingFullText("present", null, subtree, includeUnpublished, null, true, null, null, null, null);\r
+ //this is not covered by findTaxaAndNamesByFullText\r
+// pager = taxonService.findTaxaAndNamesByFullText(mode,\r
+// "present", null, null, null, null, true, null, null, null, null);\r
Assert.assertEquals("Expecting one entity when searching for area 'present'", 1, pager.getCount().intValue());\r
Assert.assertNotNull("Expecting entity", pager.getRecords().get(0).getEntity());\r
Assert.assertEquals("Expecting Taxon entity", Taxon.class, CdmBase.deproxy(pager.getRecords().get(0).getEntity()).getClass());\r
- Assert.assertEquals("Expecting Taxon ", ABIES_BALSAMEA_UUID, pager.getRecords().get(0).getEntity().getUuid().toString());\r
+ Assert.assertEquals("Expecting Taxon ", ABIES_BALSAMEA_UUID, pager.getRecords().get(0).getEntity().getUuid());\r
\r
}\r
\r
public final void findByEveryThingFullText() throws IOException, LuceneParseException, LuceneMultiSearchException {\r
\r
refreshLuceneIndex();\r
+ TaxonNode subtree = null;\r
\r
- Pager<SearchResult<TaxonBase>> pager;\r
+ Classification classification = null;\r
+ EnumSet<TaxaAndNamesSearchMode> mode = TaxaAndNamesSearchMode.taxaAndSynonymsWithUnpublished();\r
\r
- pager = taxonService.findByEverythingFullText("genus", null, null, false, null, null, null, null); // --> 1\r
+ Pager<SearchResult<TaxonBase>> pager = taxonService.findByEverythingFullText("genus", null, subtree, includeUnpublished, null, false, null, null, null, null); // --> 1\r
+// Pager<SearchResult<TaxonBase>> pager = taxonService.findTaxaAndNamesByFullText(mode,\r
+// "genus", classification, null, null, null, false, null, null, null, null);\r
Assert.assertEquals("Expecting 1 entity", 1, pager.getCount().intValue());\r
\r
//FIXME FAILS: abies balamea is returned twice, see also testFullText_Grouping()\r
- pager = taxonService.findByEverythingFullText("Balsam", null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
+ pager = taxonService.findByEverythingFullText("Balsam", null, subtree, includeUnpublished, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
logFreeTextSearchResults(pager, Level.DEBUG, null);\r
+// pager = taxonService.findTaxaAndNamesByFullText(EnumSet.allOf(TaxaAndNamesSearchMode.class),\r
+// "Balsam", classification, null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("expecting to find the Abies balsamea via the GERMAN DescriptionElements", 1, pager.getCount().intValue());\r
\r
- pager = taxonService.findByEverythingFullText("Abies", null, null, true, null, null, null, null);\r
+ //TODO fieldHighlight does not yet work\r
+ pager = taxonService.findByEverythingFullText("Abies", null, subtree, includeUnpublished, null, true, null, null, null, null);\r
+// pager = taxonService.findTaxaAndNamesByFullText(mode,\r
+// "Abies", classification, null, null, Arrays.asList(new Language[]{Language.GERMAN()}), false, null, null, null, null);\r
Assert.assertEquals("Expecting 8 entities", 8, pager.getCount().intValue());\r
SearchResult<TaxonBase> searchResult = pager.getRecords().get(0);\r
Assert.assertTrue("the map of highlighted fragments should contain at least one item", searchResult.getFieldHighlightMap().size() > 0);\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet\r
- public final void benchmarkFindByCommonNameHql() throws IOException, LuceneParseException {\r
+ public final void benchmarkFindByCommonNameHql() {\r
\r
// printDataSet(System.err, new String[] { "TaxonBase" });\r
\r
createRandomTaxonWithCommonName(NUM_OF_NEW_RADOM_ENTITIES);\r
\r
- IFindTaxaAndNamesConfigurator configurator = new FindTaxaAndNamesConfiguratorImpl<>();\r
+ IFindTaxaAndNamesConfigurator configurator = FindTaxaAndNamesConfiguratorImpl.NewInstance();\r
configurator.setTitleSearchString("Wei"+UTF8.SHARP_S+"%");\r
configurator.setMatchMode(MatchMode.BEGINNING);\r
configurator.setDoTaxa(false);\r
@Test\r
@DataSet\r
public final void benchmarkFindByCommonNameLucene() throws IOException, LuceneParseException {\r
-\r
+ TaxonNode subtree = null;\r
createRandomTaxonWithCommonName(NUM_OF_NEW_RADOM_ENTITIES);\r
\r
refreshLuceneIndex();\r
\r
long startMillis = System.currentTimeMillis();\r
for (int indx = 0; indx < BENCHMARK_ROUNDS; indx++) {\r
- pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"*", null, null, null, false, null, null, null, null);\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Wei"+UTF8.SHARP_S+"*", null, subtree, null, null, false, null, null, null, null);\r
if (logger.isDebugEnabled()) {\r
logger.debug("[" + indx + "]" + pager.getRecords().get(0).getEntity().getTitleCache());\r
}\r
logger.info("Benchmark result - [find taxon by CommonName via lucene] : " + duration + "ms (" + BENCHMARK_ROUNDS + " benchmark rounds )");\r
}\r
\r
+ /**\r
+ *\r
+ */\r
+ private void refreshLuceneIndex() {\r
+\r
+// commitAndStartNewTransaction(null);\r
+ commit();\r
+ endTransaction();\r
+ indexer.purge(DefaultProgressMonitor.NewInstance());\r
+ indexer.reindex(typesToIndex, DefaultProgressMonitor.NewInstance());\r
+ startNewTransaction();\r
+// commitAndStartNewTransaction(null);\r
+ }\r
+\r
+ /**\r
+ * @param numberOfNew\r
+ *\r
+ */\r
+ private void createRandomTaxonWithCommonName(int numberOfNew) {\r
+\r
+ logger.debug(String.format("creating %1$s random taxan with CommonName", numberOfNew));\r
+\r
+ commitAndStartNewTransaction(null);\r
+\r
+ Reference sec = ReferenceFactory.newBook();\r
+ referenceService.save(sec);\r
+\r
+ for (int i = numberOfNew; i < numberOfNew; i++) {\r
+ RandomStringUtils.randomAlphabetic(10);\r
+ String radomName = RandomStringUtils.randomAlphabetic(5) + " " + RandomStringUtils.randomAlphabetic(10);\r
+ String radomCommonName = RandomStringUtils.randomAlphabetic(10);\r
+\r
+ IBotanicalName name = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());\r
+ name.setNameCache(radomName, true);\r
+ Taxon taxon = Taxon.NewInstance(name, sec);\r
+ taxonService.save(taxon);\r
+\r
+ TaxonDescription description = TaxonDescription.NewInstance(taxon);\r
+ description.addElement(CommonTaxonName.NewInstance(radomCommonName, Language.GERMAN()));\r
+ descriptionService.save(description);\r
+ }\r
+\r
+ commitAndStartNewTransaction(null);\r
+ }\r
+\r
+ private <T extends CdmBase> void logFreeTextSearchResults(Pager<SearchResult<T>> pager, Level level, String[] docFields){\r
+ if(level == null){\r
+ level = Level.DEBUG;\r
+ }\r
+ if(logger.isEnabledFor(level)){\r
+ StringBuilder b = new StringBuilder();\r
+ b.append("\n");\r
+ int i = 0;\r
+ for(SearchResult<?> sr : pager.getRecords()){\r
+\r
+ b.append(" ").append(i++).append(" - ");\r
+ b.append("score:").append(sr.getScore()).append(", ");\r
+\r
+ if(docFields != null){\r
+ b.append("docs : ");\r
+ for(Document doc : sr.getDocs()) {\r
+ b.append("<");\r
+ for(String f : docFields){\r
+ b.append(f).append(":").append(Arrays.toString(doc.getValues(f)));\r
+ }\r
+ b.append(">");\r
+ }\r
+ }\r
+\r
+ CdmBase entity = sr.getEntity();\r
+ if(entity == null){\r
+ b.append("NULL");\r
+ } else {\r
+ b.append(entity.getClass().getSimpleName()).\r
+ append(" [").append(entity.getId()).\r
+ append(" | ").append(entity.getUuid()).append("] : ").\r
+ append(entity.toString());\r
+\r
+ }\r
+ b.append("\n");\r
+ }\r
+ logger.log(level, b);\r
+ }\r
+ }\r
+\r
+ private Set<UUID> getTaxonUuidSet(@SuppressWarnings("rawtypes") Pager<SearchResult<TaxonBase>> pager) {\r
+ Set<UUID> result = new HashSet<>();\r
+ for (@SuppressWarnings("rawtypes") SearchResult<TaxonBase> searchResult : pager.getRecords()){\r
+ result.add(searchResult.getEntity().getUuid());\r
+ }\r
+ return result;\r
+ }\r
+\r
+\r
/**\r
* uncomment @Test annotation to create the dataset for this test\r
*/\r
@Override\r
- // @Test\r
- @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="BlankDataSet.xml")\r
+// @Test\r
+ @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="../../database/ClearDBDataSet.xml")\r
public final void createTestDataSet() throws FileNotFoundException {\r
\r
Classification europeanAbiesClassification = Classification.NewInstance("European Abies");\r
- europeanAbiesClassification.setUuid(UUID.fromString(CLASSIFICATION_UUID));\r
+ europeanAbiesClassification.setUuid(CLASSIFICATION_UUID);\r
classificationService.save(europeanAbiesClassification);\r
\r
Classification alternativeClassification = Classification.NewInstance("Abies alternative");\r
- alternativeClassification.setUuid(UUID.fromString(CLASSIFICATION_ALT_UUID));\r
+ alternativeClassification.setUuid(CLASSIFICATION_ALT_UUID);\r
classificationService.save(alternativeClassification);\r
\r
Reference sec = ReferenceFactory.newBook();\r
IBotanicalName n_abies_alba = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());\r
n_abies_alba.setNameCache("Abies alba", true);\r
Taxon t_abies_alba = Taxon.NewInstance(n_abies_alba, sec);\r
- t_abies_alba.setUuid(UUID.fromString(ABIES_ALBA_UUID));\r
+ t_abies_alba.setUuid(ABIES_ALBA_UUID);\r
taxonService.save(t_abies_alba);\r
\r
IBotanicalName n_abies_subalpina = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());\r
IBotanicalName n_abies_balsamea = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());\r
n_abies_balsamea.setNameCache("Abies balsamea", true);\r
Taxon t_abies_balsamea = Taxon.NewInstance(n_abies_balsamea, sec);\r
- t_abies_balsamea.setUuid(UUID.fromString(ABIES_BALSAMEA_UUID));\r
+ t_abies_balsamea.setUuid(ABIES_BALSAMEA_UUID);\r
t_abies_balsamea.addSynonym(s_abies_subalpina, SynonymType.SYNONYM_OF());\r
taxonService.save(t_abies_balsamea);\r
\r
TaxonDescription d_abies_alba = TaxonDescription.NewInstance(t_abies_alba);\r
TaxonDescription d_abies_balsamea = TaxonDescription.NewInstance(t_abies_balsamea);\r
\r
- d_abies_alba.setUuid(UUID.fromString(D_ABIES_ALBA_UUID));\r
- d_abies_balsamea.setUuid(UUID.fromString(D_ABIES_BALSAMEA_UUID));\r
+ d_abies_alba.setUuid(DESC_ABIES_ALBA_UUID);\r
+ d_abies_balsamea.setUuid(DESC_ABIES_BALSAMEA_UUID);\r
\r
\r
// CommonTaxonName\r
\r
\r
writeDbUnitDataSetFile(new String[] {\r
- "TAXONBASE", "TAXONNAMEBASE",\r
+ "TAXONBASE", "TAXONNAME",\r
"TAXONRELATIONSHIP",\r
"REFERENCE", "DESCRIPTIONELEMENTBASE", "DESCRIPTIONBASE",\r
"AGENTBASE", "HOMOTYPICALGROUP",\r
\r
}\r
\r
- /**\r
- *\r
- */\r
- private void refreshLuceneIndex() {\r
-\r
-// commitAndStartNewTransaction(null);\r
- commit();\r
- endTransaction();\r
- indexer.purge(DefaultProgressMonitor.NewInstance());\r
- indexer.reindex(typesToIndex, DefaultProgressMonitor.NewInstance());\r
- startNewTransaction();\r
-// commitAndStartNewTransaction(null);\r
- }\r
-\r
- /**\r
- * @param numberOfNew\r
- *\r
- */\r
- private void createRandomTaxonWithCommonName(int numberOfNew) {\r
-\r
- logger.debug(String.format("creating %1$s random taxan with CommonName", numberOfNew));\r
-\r
- commitAndStartNewTransaction(null);\r
-\r
- Reference sec = ReferenceFactory.newBook();\r
- referenceService.save(sec);\r
-\r
- for (int i = numberOfNew; i < numberOfNew; i++) {\r
- RandomStringUtils.randomAlphabetic(10);\r
- String radomName = RandomStringUtils.randomAlphabetic(5) + " " + RandomStringUtils.randomAlphabetic(10);\r
- String radomCommonName = RandomStringUtils.randomAlphabetic(10);\r
-\r
- IBotanicalName name = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());\r
- name.setNameCache(radomName, true);\r
- Taxon taxon = Taxon.NewInstance(name, sec);\r
- taxonService.save(taxon);\r
-\r
- TaxonDescription description = TaxonDescription.NewInstance(taxon);\r
- description.addElement(CommonTaxonName.NewInstance(radomCommonName, Language.GERMAN()));\r
- descriptionService.save(description);\r
- }\r
-\r
- commitAndStartNewTransaction(null);\r
- }\r
-\r
- private <T extends CdmBase> void logFreeTextSearchResults(Pager<SearchResult<T>> pager, Level level, String[] docFields){\r
- if(level == null){\r
- level = Level.DEBUG;\r
- }\r
- if(logger.isEnabledFor(level)){\r
- StringBuilder b = new StringBuilder();\r
- b.append("\n");\r
- int i = 0;\r
- for(SearchResult sr : pager.getRecords()){\r
-\r
- b.append(" ").append(i++).append(" - ");\r
- b.append("score:").append(sr.getScore()).append(", ");\r
-\r
- if(docFields != null){\r
- b.append("docs : ");\r
- for(Document doc : sr.getDocs()) {\r
- b.append("<");\r
- for(String f : docFields){\r
- b.append(f).append(":").append(Arrays.toString(doc.getValues(f)));\r
- }\r
- b.append(">");\r
- }\r
- }\r
-\r
- CdmBase entity = sr.getEntity();\r
- if(entity == null){\r
- b.append("NULL");\r
- } else {\r
- b.append(entity.getClass().getSimpleName()).\r
- append(" [").append(entity.getId()).\r
- append(" | ").append(entity.getUuid()).append("] : ").\r
- append(entity.toString());\r
-\r
- }\r
- b.append("\n");\r
- }\r
- logger.log(level, b);\r
- }\r
- }\r
-\r
}\r