use of org.exist.xquery.XQuery in project exist by eXist-db.
the class MatchListenerTest method nestedContent.
@Test
public void nestedContent() throws PermissionDeniedException, IOException, LockException, CollectionConfigurationException, SAXException, EXistException, XPathException {
configureAndStore(CONF1, XML);
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()))) {
final XQuery xquery = pool.getXQueryService();
assertNotNull(xquery);
Sequence seq = xquery.execute(broker, "//para[ngram:contains(., 'mixed')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
String result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>some paragraph with <hi>" + MATCH_START + "mixed" + MATCH_END + "</hi> content.</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'content')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>some paragraph with <hi>mixed</hi> " + MATCH_START + "content" + MATCH_END + ".</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'nested')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>another paragraph with <note><hi>" + MATCH_START + "nested" + MATCH_END + "</hi> inner</note> elements.</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'content') and ngram:contains(., 'mixed')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>some paragraph with <hi>" + MATCH_START + "mixed" + MATCH_END + "</hi> " + MATCH_START + "content" + MATCH_END + ".</para>", result);
}
}
use of org.exist.xquery.XQuery in project exist by eXist-db.
the class MatchListenerTest method mixedContentQueries.
@Test
public void mixedContentQueries() throws PermissionDeniedException, XPathException, SAXException, EXistException, CollectionConfigurationException, LockException, IOException {
configureAndStore(CONF1, XML);
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()))) {
final XQuery xquery = pool.getXQueryService();
assertNotNull(xquery);
Sequence seq = xquery.execute(broker, "//para[ngram:contains(., 'mixed content')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
String result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>some paragraph with <hi>" + MATCH_START + "mixed" + MATCH_END + "</hi>" + MATCH_START + " content" + MATCH_END + ".</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'with mixed content')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>some paragraph " + MATCH_START + "with " + MATCH_END + "<hi>" + MATCH_START + "mixed" + MATCH_END + "</hi>" + MATCH_START + " content" + MATCH_END + ".</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'with nested')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>another paragraph " + MATCH_START + "with " + MATCH_END + "<note><hi>" + MATCH_START + "nested" + MATCH_END + "</hi> inner</note> elements.</para>", result);
seq = xquery.execute(broker, "//para[ngram:contains(., 'with nested inner elements')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq, 0);
XMLAssert.assertEquals("<para>another paragraph " + MATCH_START + "with " + MATCH_END + "<note><hi>" + MATCH_START + "nested" + MATCH_END + "</hi>" + MATCH_START + " inner" + MATCH_END + "</note>" + MATCH_START + " elements" + MATCH_END + ".</para>", result);
}
}
use of org.exist.xquery.XQuery in project exist by eXist-db.
the class LuceneMatchListenerTest method inlineNodes_whenNotIndenting.
@Test
public void inlineNodes_whenNotIndenting() throws EXistException, PermissionDeniedException, XPathException, SAXException, CollectionConfigurationException, LockException, IOException {
configureAndStore(CONF4, XML1);
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()))) {
XQuery xquery = pool.getXQueryService();
assertNotNull(xquery);
Sequence seq = xquery.execute(broker, "//p[ft:query(., 'mixed')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
String result = queryResult2String(broker, seq);
XMLAssert.assertEquals("<p>Paragraphs with <s>" + MATCH_START + "mix" + MATCH_END + "</s><s>ed</s> content are <s>danger</s>ous.</p>", result);
seq = xquery.execute(broker, "//p[ft:query(., 'ignored')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq);
XMLAssert.assertEquals("<p>A simple<note>sic</note> paragraph with <hi>highlighted</hi> text <note>and a note</note> to be " + MATCH_START + "ignored" + MATCH_END + ".</p>", result);
seq = xquery.execute(broker, "//p[ft:query(., 'highlighted')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq);
XMLAssert.assertEquals("<p>A simple<note>sic</note> paragraph with <hi>" + MATCH_START + "highlighted" + MATCH_END + "</hi> text <note>and a note</note> to be " + "ignored.</p>", result);
seq = xquery.execute(broker, "//p[ft:query(., 'highlighted')]/hi", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq);
XMLAssert.assertEquals("<hi>" + MATCH_START + "highlighted" + MATCH_END + "</hi>", result);
seq = xquery.execute(broker, "//head[ft:query(., 'title')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
result = queryResult2String(broker, seq);
XMLAssert.assertEquals("<head>The <b>" + MATCH_START + "title" + MATCH_END + "</b>of it</head>", result);
}
}
use of org.exist.xquery.XQuery in project exist by eXist-db.
the class LuceneIndexTest method dropDocuments.
@Test
public void dropDocuments() throws EXistException, CollectionConfigurationException, PermissionDeniedException, SAXException, TriggerException, LockException, IOException, XPathException {
configureAndStore(COLLECTION_CONFIG1, SAMPLES.getShakespeareXmlSampleNames());
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
final TransactionManager transact = pool.getTransactionManager();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()))) {
final XQuery xquery = pool.getXQueryService();
assertNotNull(xquery);
try (final Txn transaction = transact.beginTransaction()) {
Sequence seq = xquery.execute(broker, "//LINE[ft:query(., 'bark')]", null);
assertNotNull(seq);
assertEquals(6, seq.getItemCount());
root.removeXMLResource(transaction, broker, XmldbURI.create("r_and_j.xml"));
transact.commit(transaction);
seq = xquery.execute(broker, "//LINE[ft:query(., 'bark')]", null);
assertNotNull(seq);
assertEquals(3, seq.getItemCount());
}
try (final Txn transaction = transact.beginTransaction()) {
root.removeXMLResource(transaction, broker, XmldbURI.create("hamlet.xml"));
transact.commit(transaction);
Sequence seq = xquery.execute(broker, "//LINE[ft:query(., 'bark')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
}
}
}
use of org.exist.xquery.XQuery in project exist by eXist-db.
the class LuceneIndexTest method xupdateRemove.
/**
* Remove nodes from different levels of the tree and check if the index is
* correctly updated.
*/
@Test
public void xupdateRemove() throws EXistException, CollectionConfigurationException, PermissionDeniedException, SAXException, LockException, IOException, XPathException, ParserConfigurationException, QName.IllegalQNameException {
final DocumentSet docs = configureAndStore(COLLECTION_CONFIG2, XML2, "xupdate.xml");
final BrokerPool pool = existEmbeddedServer.getBrokerPool();
final TransactionManager transact = pool.getTransactionManager();
try (final DBBroker broker = pool.get(Optional.of(pool.getSecurityManager().getSystemSubject()));
final Txn transaction = transact.beginTransaction()) {
checkIndex(docs, broker, new QName[] { new QName("description") }, "chair", 1);
checkIndex(docs, broker, new QName[] { new QName("item") }, null, 5);
checkIndex(docs, broker, new QName[] { new QName("condition") }, null, 2);
final XQuery xquery = pool.getXQueryService();
assertNotNull(xquery);
Sequence seq = xquery.execute(broker, "//item[ft:query(description, 'chair')]", null);
assertNotNull(seq);
assertEquals(1, seq.getItemCount());
final XUpdateProcessor proc = new XUpdateProcessor(broker, docs);
assertNotNull(proc);
proc.setBroker(broker);
proc.setDocumentSet(docs);
String xupdate = XUPDATE_START + " <xu:remove select=\"//item[@id='2']/condition\"/>" + XUPDATE_END;
Modification[] modifications = proc.parse(new InputSource(new StringReader(xupdate)));
assertNotNull(modifications);
modifications[0].process(transaction);
proc.reset();
checkIndex(docs, broker, new QName[] { new QName("condition") }, null, 1);
checkIndex(docs, broker, new QName[] { new QName("item") }, null, 4);
checkIndex(docs, broker, new QName[] { new QName("condition") }, "good", 0);
checkIndex(docs, broker, new QName[] { new QName("item") }, "good", 0);
Occurrences[] o = checkIndex(docs, broker, new QName[] { new QName("description") }, "table", 1);
assertEquals("table", o[0].getTerm());
o = checkIndex(docs, broker, new QName[] { new QName("description") }, "cabinet", 1);
assertEquals("cabinet", o[0].getTerm());
o = checkIndex(docs, broker, new QName[] { new QName("item") }, "table", 1);
assertEquals("table", o[0].getTerm());
o = checkIndex(docs, broker, new QName[] { new QName("item") }, "cabinet", 1);
assertEquals("cabinet", o[0].getTerm());
proc.setBroker(broker);
proc.setDocumentSet(docs);
xupdate = XUPDATE_START + " <xu:remove select=\"//item[@id='3']/description/text()\"/>" + XUPDATE_END;
modifications = proc.parse(new InputSource(new StringReader(xupdate)));
assertNotNull(modifications);
modifications[0].process(transaction);
proc.reset();
proc.setBroker(broker);
proc.setDocumentSet(docs);
xupdate = XUPDATE_START + " <xu:remove select=\"//item[@id='1']\"/>" + XUPDATE_END;
modifications = proc.parse(new InputSource(new StringReader(xupdate)));
assertNotNull(modifications);
modifications[0].process(transaction);
proc.reset();
o = checkIndex(docs, broker, new QName[] { new QName("description") }, null, 1);
assertEquals("table", o[0].getTerm());
checkIndex(docs, broker, new QName[] { new QName("description") }, "chair", 0);
checkIndex(docs, broker, new QName[] { new QName("item") }, "chair", 0);
transact.commit(transaction);
}
}
Aggregations