package org.rr.commons.io;
import java.io.PrintWriter;
public class PrintWriterFilter {
public static interface LineFilter {
public String filter(String line, int page);
}
private PrintWriter writer;
private PrintWriterFilter filterWriter;
private LineFilter filter;
public PrintWriterFilter(PrintWriter writer, LineFilter filter) {
this.filter = filter;
this.writer = writer;
}
public PrintWriterFilter(PrintWriterFilter filterWriter, LineFilter filter) {
this.filter = filter;
this.filterWriter = filterWriter;
}
public void println(String line, int page) {
String filtered = filter.filter(line, page);
if (writer != null) {
writer.write(filtered);
} else if (filterWriter != null) {
filterWriter.println(filtered, page);
}
}
public static LineFilter getAcceptAllLineFilter() {
return new LineFilter() {
@Override
public String filter(String line, int page) {
return line;
}
};
}
public void flush() {
if (writer != null) {
writer.flush();
} else if (filterWriter != null) {
filterWriter.flush();
}
}
}