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