private Node selectRandomHandleNode(Session session) throws RepositoryException { HippoNodeIterator documents = findAllHandleNodes(session); Node target = null; if (documents.hasNext()) { int index = random.nextInt((int)documents.getTotalSize()); if (index > 0) { documents.skip(index); } if (documents.hasNext()) { target = documents.nextNode(); } } return target; }
@Override protected long getTotal() { try { executeQuery(); return this.hippoNodeIterator.getTotalSize(); } catch (RepositoryException e) { log.warn("Could not retrieve total document count, paging is disabled", e); } return -1; }
public int getTotalSize() { if(totalSize != -2) { return totalSize; } try { NodeIterator iterator = queryResult.getNodes(); if(iterator instanceof HippoNodeIterator) { totalSize = (int)((HippoNodeIterator)iterator).getTotalSize(); if(totalSize == -1) { log.error("getTotalSize returned -1 for query. Should not be possible. Fallback to normal getSize()"); totalSize = getSize(); } else { log.debug("getTotalSize call returned '{}' hits", totalSize); } } else { log.debug("The getTotalSize method only works properly in embedded repository mode. Fallback to normal getSize()"); totalSize = getSize(); } } catch (RepositoryException e) { log.error("RepositoryException. Return 0. {}", e); return 0; } return totalSize; }
final Query query = queryManager.createQuery(ITEMS_QUERY, Query.SQL); final NodeIterator nodes = query.execute().getNodes(); final long totalSize = ((HippoNodeIterator) nodes).getTotalSize(); final long cleanupSize = totalSize - maxitems; for (int i = 0; i < cleanupSize; i++) {