package com.revolsys.record.io.format.directory;
import java.util.Iterator;
import java.util.NoSuchElementException;
import com.revolsys.collection.iterator.AbstractIterator;
import com.revolsys.record.Record;
import com.revolsys.record.io.RecordReader;
import com.revolsys.record.query.Condition;
import com.revolsys.record.query.Query;
public class RecordReaderQueryIterator extends AbstractIterator<Record> {
private Iterator<Record> iterator;
private final RecordReader reader;
private final Condition whereCondition;
public RecordReaderQueryIterator(final RecordReader reader, final Query query) {
this.reader = reader;
this.whereCondition = query.getWhereCondition();
}
@Override
protected void closeDo() {
this.reader.close();
}
@Override
protected Record getNext() throws NoSuchElementException {
while (true) {
final Record record = this.iterator.next();
if (this.whereCondition.test(record)) {
return record;
}
}
}
@Override
public synchronized void init() {
this.reader.open();
this.iterator = this.reader.iterator();
}
}