some small changes delting unneeded imports. two new exceptions in mir.storage. usage...
[mir.git] / source / mir / log / LoggerToWriterAdapter.java
1 package mir.log;
2
3 import java.io.Writer;
4
5 public class LoggerToWriterAdapter extends Writer {
6   private LoggerWrapper logger;
7   private int messageType;
8   private StringBuffer lineBuffer;
9   private String lineSeparator;
10
11   public LoggerToWriterAdapter(LoggerWrapper aLogger, int aMessageType) {
12     lineBuffer = new StringBuffer();
13     logger = aLogger;
14     messageType = aMessageType;
15     lineSeparator = System.getProperty("line.separator");
16   }
17
18   public LoggerToWriterAdapter(Logger aLogger, int aMessageType) {
19     this(new LoggerWrapper(aLogger), aMessageType);
20   }
21
22   public void close() {
23     flush();
24   }
25
26   public void flush() {
27     if (lineBuffer.length()>0) {
28       logger.message(messageType, lineBuffer.toString());
29       lineBuffer.delete(0, lineBuffer.length());
30     }
31   }
32
33   protected void checkBuffer() {
34     int from = 0;
35     int until = lineBuffer.toString().indexOf(lineSeparator, from);
36
37     while (until>-1) {
38       String line = lineBuffer.substring(from, until);
39       logger.message(messageType, line);
40       from = until + lineSeparator.length();
41       until = lineBuffer.toString().indexOf(lineSeparator, from);
42     }
43
44     lineBuffer.delete(0, from);
45   };
46
47   public void write(char[] aBuffer, int anOffset, int aLength)  {
48     lineBuffer.append(aBuffer, anOffset, aLength);
49     checkBuffer();
50   }
51 }