package dmg.util;
import java.io.Writer;
/**
* Buffered LineWriter adaptor implementing the Writer interface.
*/
public class BufferedLineWriter
extends Writer
{
private final LineWriter _writer;
private final StringBuilder _buffer;
public BufferedLineWriter(LineWriter writer)
{
_writer = writer;
_buffer = new StringBuilder();
}
@Override
public void close()
{
flush();
}
private void flushCompletedLines()
{
int i;
while ((i = _buffer.indexOf("\n")) > -1) {
_writer.writeLine(_buffer.substring(0, i));
_buffer.delete(0, i + 1);
}
}
@Override
public void flush()
{
flushCompletedLines();
if (_buffer.length() > 0) {
_writer.writeLine(_buffer.toString());
_buffer.delete(0, _buffer.length());
}
}
@Override
public void write(char[] cbuf, int off, int len)
{
_buffer.append(cbuf, off, len);
flushCompletedLines();
}
}