]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/reporting/SCLReportingWriter.java
Added SCLReportingWriter to org.simantics.scl.runtime. (refs #7000)
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / reporting / SCLReportingWriter.java
1 package org.simantics.scl.runtime.reporting;\r
2 \r
3 import java.io.Writer;\r
4 \r
5 public class SCLReportingWriter extends Writer {\r
6         \r
7         StringBuilder builder = null;\r
8         \r
9         public SCLReportingWriter() {\r
10                 builder = new StringBuilder();\r
11         }\r
12         \r
13         @Override\r
14         public void close() {\r
15                 flush();\r
16         }\r
17 \r
18         @Override\r
19         public void flush() {\r
20                 if (builder.length() > 0) {\r
21                         SCLReporting.print(builder.toString());\r
22                         builder.setLength(0);\r
23                 }\r
24         }\r
25 \r
26         @Override\r
27         public void write(char[] buf, int off, int len) {\r
28                 if (len == 0) return;\r
29                 \r
30                 if (len < 0) throw new IllegalArgumentException("Negative buffer region length");\r
31                 if (off < 0) throw new IllegalArgumentException("Negative buffer region offset");\r
32                 if (off + len > buf.length) throw new IllegalArgumentException("Buffer region overflow");\r
33                 \r
34                 for (int i = 0; i < len; i++) {\r
35                         if (buf[off + i] == '\n') {\r
36                                 SCLReporting.print(builder.toString());\r
37                                 builder.setLength(0);\r
38                         }\r
39                         else {\r
40                                 builder.append(buf[off + i]);\r
41                         }\r
42                 }\r
43         }\r
44 }\r