@Override public boolean hasNext() { return pathCursor.hasNext(); }
@Override public IndexRow next() { final IndexRow pathRow = pathCursor.next(); return new IndexRow() { @Override public boolean isVirtualRow() { return currentRow.isVirtual; } @Override public String getPath() { return pathRow.getPath(); } @Override public PropertyValue getValue(String columnName) { // overlay the score if (QueryConstants.JCR_SCORE.equals(columnName)) { return PropertyValues.newDouble(currentRow.score); } if (QueryConstants.REP_SPELLCHECK.equals(columnName) || QueryConstants.REP_SUGGEST.equals(columnName)) { return PropertyValues.newString(Iterables.toString(currentRow.suggestWords)); } if (QueryConstants.REP_EXCERPT.equals(columnName)) { return PropertyValues.newString(currentRow.excerpt); } return pathRow.getValue(columnName); } }; }
@Override public long getSize(SizePrecision precision, long max) { if (cursor == null) { return -1; } return cursor.getSize(precision, max); }
@Test public void intersectionCursorExceptions() { QueryEngineSettings s = new QueryEngineSettings(); Cursor a = new SimpleCursor("1:", "/x", "/b", "/c", "/e", "/e", "/c"); Cursor b = new SimpleCursor("2:", "/a", "/c", "/d", "/b", "/c"); Cursor c = Cursors.newIntersectionCursor(a, b, s); c.next(); c.next(); try { c.remove(); fail(); } catch (UnsupportedOperationException e) { // expected } try { c.next(); fail(); } catch (IllegalStateException e) { // expected } }
@Override public void remove() { pathCursor.remove(); }
@Override public void remove() { pathCursor.remove(); }
@Override public boolean hasNext() { return pathCursor.hasNext(); }
@Override public IndexRow next() { final IndexRow pathRow = pathCursor.next(); return new IndexRow() { @Override public boolean isVirtualRow() { return currentRow.isVirtual; } @Override public String getPath() { return pathRow.getPath(); } @Override public PropertyValue getValue(String columnName) { // overlay the score if (QueryConstants.JCR_SCORE.equals(columnName)) { return PropertyValues.newDouble(currentRow.score); } if (QueryConstants.REP_SPELLCHECK.equals(columnName) || QueryConstants.REP_SUGGEST.equals(columnName)) { return PropertyValues.newString(Iterables.toString(currentRow.suggestWords)); } if (QueryConstants.REP_EXCERPT.equals(columnName)) { return PropertyValues.newString(currentRow.excerpt); } return pathRow.getValue(columnName); } }; }
@Override public long getSize(SizePrecision precision, long max) { return cursor.getSize(precision, max); }
@Override public void remove() { pathCursor.remove(); }
private void fetchNext() { while (true) { if (!first.hasNext()) { closed = true; return; } IndexRow c = first.next(); String p = c.getPath(); if (seen.contains(p)) { continue; } if (secondSet.remove(p) != null) { current = c; markSeen(p); return; } while (second.hasNext()) { IndexRow s = second.next(); String p2 = s.getPath(); if (p.equals(p2)) { current = c; markSeen(p); return; } secondSet.put(p2, s); FilterIterators.checkMemoryLimit(secondSet.size(), settings); } } }
@Override public boolean hasNext() { return pathCursor.hasNext(); }
@Override public IndexRow next() { final IndexRow pathRow = pathCursor.next(); return new IndexRow() {
@Override public long getSize(SizePrecision precision, long max) { return cursor.getSize(precision, max); }
@Override public void remove() { pathCursor.remove(); }
@Override public boolean hasNext() { return pathCursor.hasNext(); }