package org.archive.util.iterator;
import java.io.IOException;
public class PrefixMatchStringIterator extends AbstractPeekableIterator<String>
{
private boolean first = true;
private String key;
private CloseableIterator<String> inner;
public PrefixMatchStringIterator(CloseableIterator<String> inner, String key, boolean alwaysIncludeFirst)
{
this.inner = inner;
this.key = key;
this.first = alwaysIncludeFirst;
}
@Override
public String getNextInner() {
if (!inner.hasNext()) {
return null;
}
String blockLine = inner.next();
// only compare the correct length:
String prefCmp = key;
if (first) {
// always add first:
first = false;
} else if (!blockLine.startsWith(prefCmp)) {
return null;
}
return blockLine;
}
@Override
public void close() throws IOException {
inner.close();
}
}