View Javadoc
1   package org.slf4j.impl;
2   
3   import java.io.PrintStream;
4   
5   /**
6    * This class encapsulates the user's choice of output target.
7    * 
8    * @author Ceki Gülcü
9    *
10   */
11  class OutputChoice {
12  
13      enum OutputChoiceType {
14          SYS_OUT, CACHED_SYS_OUT, SYS_ERR, CACHED_SYS_ERR, FILE;
15      }
16  
17      final OutputChoiceType outputChoiceType;
18      final PrintStream targetPrintStream;
19  
20      OutputChoice(OutputChoiceType outputChoiceType) {
21          if (outputChoiceType == OutputChoiceType.FILE) {
22              throw new IllegalArgumentException();
23          }
24          this.outputChoiceType = outputChoiceType;
25          if (outputChoiceType == OutputChoiceType.CACHED_SYS_OUT) {
26              this.targetPrintStream = System.out;
27          } else if (outputChoiceType == OutputChoiceType.CACHED_SYS_ERR) {
28              this.targetPrintStream = System.err;
29          } else {
30              this.targetPrintStream = null;
31          }
32      }
33  
34      OutputChoice(PrintStream printStream) {
35          this.outputChoiceType = OutputChoiceType.FILE;
36          this.targetPrintStream = printStream;
37      }
38  
39      PrintStream getTargetPrintStream() {
40          switch (outputChoiceType) {
41          case SYS_OUT:
42              return System.out;
43          case SYS_ERR:
44              return System.err;
45          case CACHED_SYS_ERR:
46          case CACHED_SYS_OUT:
47          case FILE:
48              return targetPrintStream;
49          default:
50              throw new IllegalArgumentException();
51          }
52  
53      }
54  
55  }