package org.archive.util.iterator; import java.io.IOException; import java.util.Iterator; public class BoundedStringIterator extends AbstractPeekableIterator<String> implements CloseableIterator<String> { private Iterator<String> inner; private String boundary; public BoundedStringIterator(Iterator<String> inner, String boundary) { this.inner = inner; this.boundary = boundary; } @Override public String getNextInner() { String tmp = null; if(inner.hasNext()) { tmp = inner.next(); if(tmp.compareTo(boundary) > 0) { tmp = null; try { close(); } catch (IOException e) { throw new RuntimeException(e); } } } return tmp; } public void close() throws IOException { CloseableIteratorUtil.attemptClose(inner); } }