1 package com.ashlux.mavenoc4jplugin.log;
2
3 import org.apache.maven.plugin.logging.Log;
4 import org.apache.commons.lang.StringUtils;
5
6 import java.io.InputStream;
7 import java.io.IOException;
8
9 public class LogStreamGobbler implements Runnable {
10 private static final String lineSeperator = System.getProperty("line.separator");
11
12 private InputStream inputStream;
13 private Log log;
14 private LogLevel logLevel;
15
16 public LogStreamGobbler(InputStream inputStream, Log log, LogLevel logLevel) {
17 this.inputStream = inputStream;
18 this.log = log;
19 this.logLevel = logLevel;
20 }
21
22 public void run() {
23 try {
24 work(inputStream, log, logLevel);
25 inputStream.close();
26 } catch (IOException e) {
27 log.error(e);
28 }
29 }
30
31
32 protected static void work(InputStream inputStream, Log log, LogLevel logLevel) throws IOException {
33 String line = "";
34 int myChar = inputStream.read();
35 while (myChar != -1) {
36
37 if (lineSeperator.equals(String.valueOf((char) myChar))) {
38 log(log, logLevel, line);
39 line = "";
40 } else {
41 line += (char) myChar;
42 }
43 myChar = inputStream.read();
44 }
45
46
47 if (StringUtils.isNotEmpty(line)) {
48 log.error(line);
49 }
50 }
51
52 protected static void log(Log log, LogLevel logLevel, String statement) {
53 switch (logLevel) {
54 case DEBUG:
55 log.debug(statement);
56 break;
57 case INFO:
58 log.info(statement);
59 break;
60 case WARN:
61 log.warn(statement);
62 break;
63 case ERROR:
64 log.error(statement);
65 break;
66 }
67 }
68 }