import java.util.Arrays;\r
import java.util.HashSet;\r
import java.util.List;\r
+import java.util.Map;\r
import java.util.Set;\r
import java.util.UUID;\r
\r
@DataSet\r
public final void testFindByDescriptionElementFullText_Paging() throws CorruptIndexException, IOException, ParseException {\r
\r
- TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));\r
+\r
Set<String> uniqueRandomStrs = new HashSet<String>(1024);\r
int numOfItems = 100;\r
while(uniqueRandomStrs.size() < numOfItems){\r
uniqueRandomStrs.add(RandomStringUtils.random(5, true, false));\r
}\r
+\r
for(String rndStr: uniqueRandomStrs){\r
+\r
+ Taxon taxon = Taxon.NewInstance(BotanicalName.NewInstance(null), null);\r
+ taxon.setTitleCache("Tax" + rndStr, true);\r
+ taxonService.save(taxon);\r
+\r
+ TaxonDescription description = TaxonDescription.NewInstance(taxon);\r
description.addElement(CommonTaxonName.NewInstance("Rot" + rndStr, Language.DEFAULT()));\r
+ descriptionService.saveOrUpdate(description);\r
}\r
- descriptionService.saveOrUpdate(description);\r
- commitAndStartNewTransaction(new String[]{"DESCRIPTIONELEMENTBASE"});\r
\r
+ commitAndStartNewTransaction(new String[]{"TAXONBASE"});\r
refreshLuceneIndex();\r
\r
int pageSize = 10;\r
Assert.assertNotNull("last page + 1 must not have any records", pager.getRecords());\r
}\r
\r
+ /**\r
+ * @throws CorruptIndexException\r
+ * @throws IOException\r
+ * @throws ParseException\r
+ */\r
+ @Test\r
+ @DataSet\r
+ public final void testFindByDescriptionElementFullText_Grouping() throws CorruptIndexException, IOException, ParseException {\r
+\r
+ TaxonDescription description = (TaxonDescription) descriptionService.find(UUID.fromString(D_ABIES_ALBA_UUID));\r
+ Set<String> uniqueRandomStrs = new HashSet<String>(1024);\r
+ int numOfItems = 100;\r
+ while(uniqueRandomStrs.size() < numOfItems){\r
+ uniqueRandomStrs.add(RandomStringUtils.random(5, true, false));\r
+ }\r
+ for(String rndStr: uniqueRandomStrs){\r
+ description.addElement(CommonTaxonName.NewInstance("Rot" + rndStr, Language.DEFAULT()));\r
+ }\r
+ descriptionService.saveOrUpdate(description);\r
+\r
+ commitAndStartNewTransaction(new String[]{"DESCRIPTIONELEMENTBASE"});\r
+\r
+ refreshLuceneIndex();\r
+\r
+ int pageSize = 10;\r
+\r
+ Pager<SearchResult<TaxonBase>> pager;\r
+\r
+ boolean highlightFragments = true;\r
+ pager = taxonService.findByDescriptionElementFullText(CommonTaxonName.class, "Rot*", null, null, null, highlightFragments, pageSize, null, null, null);\r
+ Assert.assertEquals("All matches should be grouped in one page", 1, pager.getPagesAvailable().intValue());\r
+ Map<String, String[]> highlightMap = pager.getRecords().get(0).getFieldHighlightMap();\r
+ Assert.assertEquals("expecting " + numOfItems+ " highlighted fragments of field 'name'", numOfItems, highlightMap.get("name").length);\r
+\r
+ }\r
+\r
@SuppressWarnings("rawtypes")\r
@Test\r
@DataSet\r