Refine search
@Override public boolean isTraversal(ResourceResolver resourceResolver, String language, String statement) throws RepositoryException { final QueryManager queryManager = resourceResolver.adaptTo(Session.class).getWorkspace().getQueryManager(); final Query query = queryManager.createQuery("explain " + statement, language); final QueryResult queryResult = query.execute(); final RowIterator rows = queryResult.getRows(); final Row firstRow = rows.nextRow(); final String plan = firstRow.getValue("plan").getString(); return StringUtils.contains(plan, " /* traverse "); }
public Object call(Query query) throws RepositoryException { RowIterator rows = query.execute().getRows(); assertTrue("empty result", rows.hasNext()); Row r = rows.nextRow(); assertEquals("unexpected value", TEST_VALUE, r.getValue(columnName1).getString()); assertEquals("unexpected value", TEST_VALUE, r.getValue(columnName2).getString()); return null; } });
@Override public void run( Session s ) throws RepositoryException { // Count the nodes below the root, excluding the '/jcr:system' branch ... String queryStr = "SELECT [jcr:primaryType] FROM [nt:base]"; Query query = s.getWorkspace().getQueryManager().createQuery(queryStr, Query.JCR_SQL2); numNonSystemNodes += query.execute().getRows().getSize(); if (tools != null) tools.print(" # nodes NOT in '/jcr:system' branch: " + numNonSystemNodes); } }
javax.jcr.query.QueryResult result = query.execute(); RowIterator iter = result.getRows(); while ( iter.hasNext() ) { Row row = iter.nextRow(); Value value = row.getValue("dateField"); // Our query won't return a null, since `jcr:created' is mandatory // and autocreated on `mix:created`, so we don't have to check // value for null. Other properties, however, may not be mandatory // so you might need to check null for other queries ... int year = value.getDate().get(Calendar.YEAR); // do something with the year }
@Override public boolean isLast() throws SQLException { this.notClosed(); if (this.row != null && !this.rowIter.hasNext() && this.rowIter.getPosition() == this.rowIter.getSize()) { return true; } return false; }
session.save(); ValueFactory vf = session.getValueFactory(); QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery("select id from [nt:base] where data >= $data order by id", Query.JCR_SQL2); q.bindValue("data", vf.createValue("x")); for (int limit = 0; limit < 5; limit++) { q.setLimit(limit); for (int offset = 0; offset < 3; offset++) { q.setOffset(offset); QueryResult r = q.execute(); RowIterator it = r.getRows(); int l = Math.min(Math.max(0, 3 - offset), limit); assertEquals(l, r.getRows().getSize()); assertEquals(l, r.getNodes().getSize()); Row row; assertTrue(it.hasNext()); row = it.nextRow(); assertEquals("" + x, row.getValue("id").getString()); assertFalse(it.hasNext());
@Test public void firstSelector() throws Exception { Session session = getAdminSession(); Node root = session.getRootNode(); Node a = root.addNode("a"); a.setProperty("test", true); Node b = a.addNode("b"); b.setProperty("test", true); session.save(); QueryResult r = session.getWorkspace().getQueryManager() .createQuery("//a[@test]/b[@test]", "xpath").execute(); String firstSelector = r.getSelectorNames()[0]; RowIterator rows = r.getRows(); Row row = rows.nextRow(); String path = row.getPath(firstSelector); assertEquals("/a/b", path); }
private RowIterator executeJcrQuery(String jcrQuery, String jcrQueryLanguage) { try { QueryManager qm = session.getWorkspace().getQueryManager(); RowIterator nodes = qm.createQuery(jcrQuery, jcrQueryLanguage).execute().getRows(); if (filter != null) { nodes = new FilteredRowIterator(nodes); } if (offset > 0) { try { nodes.skip(offset); } catch (NoSuchElementException e) { return RowIteratorAdapter.EMPTY; } } if (numResults == Integer.MAX_VALUE) { return new RowIterAdapter(nodes, nodes.getSize()); } List<Row> resultRows = new ArrayList<Row>(); while (numResults-- > 0 && nodes.hasNext()) { resultRows.add(nodes.nextRow()); } return new RowIterAdapter(resultRows, resultRows.size()); } catch (RepositoryException e) { // in case of error return empty result return RowIteratorAdapter.EMPTY; } }
/** * @param repository the repository * @return a double of the size of the fedora:datastream binary content * @throws RepositoryException if repository exception occurred */ public static long getRepositorySize(final Repository repository) throws RepositoryException { final Session session = repository.login(); try { long sum = 0; final QueryManager queryManager = session.getWorkspace().getQueryManager(); final String querystring = "SELECT [" + CONTENT_SIZE + "] FROM [" + FEDORA_NON_RDF_SOURCE_DESCRIPTION + "]"; final QueryResult queryResults = queryManager.createQuery(querystring, JCR_SQL2).execute(); for (final RowIterator rows = queryResults.getRows(); rows.hasNext(); ) { final Value value = rows.nextRow().getValue(CONTENT_SIZE); sum += value.getLong(); } return sum; } finally { session.logout(); } }
@Test public void testSearchDescendentUsingXPath() throws Exception { Session adminSession = getAdminSession(); String testNodePath = "/home/users/geometrixx-outdoors/emily.andrews@mailinator.com/social/relationships/following/aaron.mcdonald@mailinator.com"; Node testNode = JcrUtils.getOrCreateByPath(testNodePath, null, adminSession); testNode.setProperty("id", "aaron.mcdonald@mailinator.com"); AccessControlManager acMgr = adminSession.getAccessControlManager(); JackrabbitAccessControlList tmpl = AccessControlUtils.getAccessControlList(acMgr, "/home/users/geometrixx-outdoors"); ValueFactory vf = adminSession.getValueFactory(); Map<String, Value> restrictions = new HashMap<String, Value>(); restrictions.put("rep:glob", vf.createValue("*/social/relationships/following/*")); tmpl.addEntry(EveryonePrincipal.getInstance(), new Privilege[]{acMgr.privilegeFromName(Privilege.JCR_READ)}, true, restrictions); acMgr.setPolicy(tmpl.getPath(), tmpl); adminSession.save(); Session anonymousSession = getRepository().login(new GuestCredentials()); QueryManager qm = anonymousSession.getWorkspace().getQueryManager(); Query q = qm.createQuery("/jcr:root/home//social/relationships/following//*[@id='aaron.mcdonald@mailinator.com']", Query.XPATH); QueryResult r = q.execute(); RowIterator it = r.getRows(); Assert.assertTrue(it.hasNext()); anonymousSession.logout(); }
public void testVersionFromQuery() throws RepositoryException, NotExecutableException { Node n = testRootNode.addNode(nodeName1, testNodeType); n.addMixin(mixVersionable); superuser.save(); VersionManager vMgr = superuser.getWorkspace().getVersionManager(); vMgr.checkpoint(n.getPath()); QueryManager qm = superuser.getWorkspace().getQueryManager(); Version v = vMgr.getBaseVersion(n.getPath()); Query q = qm.createQuery("//element(*, nt:version)[@jcr:uuid = '" + v.getIdentifier() + "']", Query.XPATH); NodeIterator nodes = q.execute().getNodes(); assertTrue(nodes.hasNext()); assertTrue(nodes.nextNode() instanceof Version); RowIterator rows = q.execute().getRows(); assertTrue(rows.hasNext()); assertTrue(rows.nextRow().getNode() instanceof Version); }
private boolean performQuery(@NotNull final TestContext ec) throws RepositoryException { QueryManager qm = ec.session.getWorkspace().getQueryManager(); ValueFactory vf = ec.session.getValueFactory(); Query q = qm.createQuery("SELECT * FROM [nt:base] WHERE [title] = $title", Query.JCR_SQL2); q.bindValue("title", vf.createValue(ec.title)); LOG.trace("statement: {} - title: {}", q.getStatement(), ec.title); RowIterator rows = q.execute().getRows(); if (rows.hasNext()) { rows.nextRow().getPath(); return true; } else { return false; } }
final QueryManager queryManager = request.getResourceResolver().adaptTo(Session.class).getWorkspace() .getQueryManager(); final Query query = queryManager.createQuery("explain " + statement, config.getQueryLanguage()); final QueryResult queryResult = query.execute(); final RowIterator rows = queryResult.getRows(); while (rows.hasNext()) { final Row row = rows.nextRow(); String[] cols = queryResult.getColumnNames(); Value[] values = row.getValues(); details.put(cols[i], values[i].getString());
/** * Verifies character encoding on a node property that does not contain any * excerpt info */ public void testEncodeIllegalCharsNoHighlights() throws RepositoryException { String text = "bla <strong>bla</strong> bla"; String excerpt = createExcerpt("bla <strong>bla</strong> bla"); Node n = testRootNode.addNode(nodeName1); n.setProperty("text", text); n.setProperty("other", "foo"); superuser.save(); String stmt = getStatement("foo"); QueryResult result = executeQuery(stmt); RowIterator rows = result.getRows(); assertEquals(1, rows.getSize()); String ex = rows.nextRow().getValue("rep:excerpt(text)").getString(); assertEquals("Expected " + excerpt + ", but got ", excerpt, ex); }
@SuppressWarnings("deprecation") @Override protected void runTest(TestContext ec) throws Exception { QueryManager qm = ec.session.getWorkspace().getQueryManager(); // TODO verify why "order by jcr:score()" accounts for what looks // like > 20% of the perf lost in Collections.sort for (String word : ec.words) { Query q = qm.createQuery("//*[jcr:contains(@text, '" + word + "')] ", Query.XPATH); QueryResult r = q.execute(); RowIterator it = r.getRows(); for (int rows = 0; it.hasNext() && rows < maxRowsToFetch; rows++) { Node n = it.nextRow().getNode(); ec.hash += n.getProperty("text").getString().hashCode(); ec.hash += n.getProperty("title").getString().hashCode(); } } }
QueryManager qm = session.getWorkspace().getQueryManager(); Query q1 = qm.createQuery(statement1, "xpath"); QueryResult r1 = q1.execute(); RowIterator rows1 = r1.getRows(); Query q2 = qm.createQuery(statement2, "xpath"); QueryResult r2 = q2.execute(); RowIterator rows2 = r2.getRows(); List<Row> rowsMerged = new ArrayList<Row>(); while (rows1.hasNext()) { rowsMerged.add(rows1.nextRow()); } while (rows2.hasNext()) { rowsMerged.add(rows2.nextRow()); }
public void testPositionEmptyResult() throws RepositoryException { QueryManager qm = superuser.getWorkspace().getQueryManager(); String stmt = testPath + "/*[@" + propertyName1 + " > 1000]"; QueryResult result = qm.createQuery(stmt, Query.XPATH).execute(); assertEquals("Wrong position", 0, result.getNodes().getPosition()); assertEquals("Wrong position", 0, result.getRows().getPosition()); stmt += " order by jcr:score()"; result = qm.createQuery(stmt, Query.XPATH).execute(); assertEquals("Wrong position", 0, result.getNodes().getPosition()); assertEquals("Wrong position", 0, result.getRows().getPosition()); } }
public void testFacetsOfResultSetThatDoesntContainDim() throws Exception { Node content = testRootNode.addNode("absentDimFacets"); // create a document with a simple/tags property Node foo = content.addNode("foo"); Node fooSimple = foo.addNode("jc"); foo.setProperty("text", "lorem lorem"); fooSimple.setProperty("text", new String[]{"tag1", "tag2"}); // now create a document without simple/tags property Node bar = content.addNode("bar"); bar.setProperty("text", "lorem ipsum"); superuser.save(); String query = "select [rep:facet(jc/text)] from [nt:base] where contains(*, 'ipsum')"; Query q = qm.createQuery(query, Query.JCR_SQL2); QueryResult result = q.execute(); FacetResult facetResult = new FacetResult(result); assertNotNull(facetResult); assertTrue(facetResult.getDimensions().isEmpty()); RowIterator rows = result.getRows(); assertTrue(rows.hasNext()); assertEquals(bar.getPath(), rows.nextRow().getPath()); assertFalse(rows.hasNext()); }
public void testDistinctUnionWithDifferentFacetsOnSubQueries() throws Exception { Node n1 = testRootNode.addNode("node1"); n1.setProperty("text", "t1"); n1.setProperty("name","Node1"); // make sure that facet values from both ends of OR clause are different // the test is essentially that facet columns don't define uniqueness of a row Node n3 = testRootNode.addNode("node3"); n3.setProperty("text", "t1"); n3.setProperty("name","Node3"); superuser.save(); String xpath = "//*[@text = 't1' or @name = 'Node1']/(rep:facet(text))"; Query q = qm.createQuery(xpath, Query.XPATH); QueryResult result = q.execute(); RowIterator rows=result.getRows(); assertEquals(2, rows.getSize()); }