package com.revolsys.io;
import java.util.Iterator;
import java.util.function.Predicate;
import javax.annotation.PreDestroy;
import com.revolsys.collection.iterator.FilterIterator;
import com.revolsys.collection.map.MapEx;
public class FilterReader<T> extends AbstractReader<T> {
private Predicate<T> filter;
private Reader<T> reader;
public FilterReader(final Predicate<T> filter, final Reader<T> reader) {
this.filter = filter;
this.reader = reader;
}
@Override
@PreDestroy
public void close() {
super.close();
if (this.reader != null) {
this.reader.close();
}
this.filter = null;
this.reader = null;
}
protected Predicate<T> getFilter() {
return this.filter;
}
@Override
public MapEx getProperties() {
return this.reader.getProperties();
}
protected Reader<T> getReader() {
return this.reader;
}
@Override
public Iterator<T> iterator() {
final Iterator<T> iterator = this.reader.iterator();
return new FilterIterator<>(this.filter, iterator);
}
@Override
public void open() {
this.reader.open();
}
}