/** * @inheritDoc */ @Override public Node findNode(Name propertyName, String value, Name ntName) throws RepositoryException { Query query = buildQuery(value, Collections.singleton(propertyName), ntName, true, 1); NodeIterator res = query.execute().getNodes(); if (res.hasNext()) { return res.nextNode(); } return null; }
@Test public void testSearchForAreasContainingImage() throws InvalidQueryException, RepositoryException { String statement = "select * from [mgnl:component] where image is not null"; NodeIterator result = QueryUtil.search("website", statement, Query.JCR_SQL2, NodeTypes.Area.NAME); while (result.hasNext()) { Node node = result.nextNode(); assertEquals(NodeTypes.Area.NAME, node.getPrimaryNodeType().getName()); assertEquals("/queryTest/subPage2/subPage2/content", node.getPath()); } }
private Node getLastChild(Node parent, Collection<String> childNames) throws RepositoryException { Node lastMatch = null; NodeIterator nodes = parent.getNodes(); while (nodes.hasNext()) { Node child = nodes.nextNode(); if (childNames.contains(child.getName())) { lastMatch = child; } } return lastMatch; }
/** * @inheritDoc */ @Override public Node findNode(Name propertyName, String value, Name ntName) throws RepositoryException { Query query = buildQuery(value, Collections.singleton(propertyName), ntName, true, 1); NodeIterator res = query.execute().getNodes(); if (res.hasNext()) { return res.nextNode(); } return null; }
public boolean hasTranslation(String language) throws RepositoryException { String id = node.getProperty(HippoTranslationNodeType.ID).getString(); Query query = node.getSession().getWorkspace().getQueryManager().createQuery( "SELECT * FROM " + HippoTranslationNodeType.NT_TRANSLATED + " WHERE " + HippoTranslationNodeType.ID + "='" + id + "'" + " AND " + HippoTranslationNodeType.LOCALE + "='" + language + "'", Query.SQL); final QueryResult result = query.execute(); NodeIterator nodes = result.getNodes(); return nodes.hasNext(); }
protected Node getUserNode(Session session) throws RepositoryException { String userId = session.getUserID(); StringBuilder statement = new StringBuilder(); statement.append("//element"); statement.append("(*, ").append(HippoNodeType.NT_USER).append(")"); statement.append('[').append("fn:name() = ").append("'").append(NodeNameCodec.encode(userId, true)).append( "'").append(']'); Query q; q = session.getWorkspace().getQueryManager().createQuery(statement.toString(), Query.XPATH); QueryResult result = q.execute(); if (result.getNodes().hasNext()) { return result.getNodes().nextNode(); } return null; }
@Override protected void runTest() throws Exception { QueryManager qm = session.getWorkspace().getQueryManager(); Query q = qm.createQuery(getQuery(), Query.JCR_SQL2); QueryResult r = q.execute(); NodeIterator nodes = r.getNodes(); int counter = 0; while(nodes.hasNext() && counter++<FETCH_NODES) { nodes.next(); } }
public Object call(Query query) throws RepositoryException { QueryResult result = query.execute(); String[] names = result.getSelectorNames(); assertNotNull(names); assertEquals(1, names.length); assertEquals("s", names[0]); NodeIterator it = result.getNodes(); while (it.hasNext()) { assertTrue("Wrong node type", it.nextNode().isNodeType(testNodeType)); } return null; } });
/** * Tests the method <code>NodeIterator.getPosition()</code> on an empty * <code>NodeIterator</code>. * @throws NotExecutableException */ public void testGetPositionEmptyIterator() throws RepositoryException, NotExecutableException { QueryResult rs = execute(xpathRoot + "/" + nodeName4, qsXPATH); NodeIterator it = rs.getNodes(); assertFalse("NodeIterator must be empty.", it.hasNext()); assertEquals("Empty NodeIterator must return 0 on getPosition()", 0, it.getPosition()); }
/** * @return the overall size of the query without limit */ private long getResultSetSize(String queryString) throws RepositoryException { QueryResult qr = doQuery(queryString, Integer.MAX_VALUE, 0); NodeIterator iter = NodeUtil.filterDuplicates(NodeUtil.filterParentNodeType(qr.getNodes(), NodeTypes.Page.NAME)); long count = 0; while (iter.hasNext()) { iter.nextNode(); count++; } return count; }