1 package net.avcompris.guixer.core;
2
3 import static com.google.common.base.Preconditions.checkNotNull;
4 import static com.google.common.collect.Maps.newHashMap;
5
6 import java.io.File;
7 import java.io.FileNotFoundException;
8 import java.io.IOException;
9 import java.lang.reflect.Method;
10 import java.util.Map;
11
12 import javax.annotation.Nullable;
13
14 final class ConsoleLogger implements Logger {
15
16 private static final Map<File, ConsoleLogger> LOGGERS = newHashMap();
17
18 private final File dir;
19
20 private ConsoleLogger(final File dir) {
21
22 this.dir = checkNotNull(dir, "dir");
23 }
24
25 public static ConsoleLogger getLogger(final Context context) throws IOException {
26
27 checkNotNull(context, "context");
28
29 final File dir = context.getSubDir();
30
31 if (!dir.isDirectory()) {
32
33 throw new FileNotFoundException("dir should be a directory: " + dir.getCanonicalPath());
34 }
35
36 if (LOGGERS.containsKey(dir)) {
37
38 return LOGGERS.get(dir);
39 }
40
41 final ConsoleLoggergger.html#ConsoleLogger">ConsoleLogger logger = new ConsoleLogger(dir);
42
43 LOGGERS.put(dir, logger);
44
45 return logger;
46 }
47
48 @Override
49 public int hashCode() {
50
51 return dir.hashCode();
52 }
53
54 @Override
55 public boolean equals(@Nullable final Object arg) {
56
57 if (arg == null || !(arg instanceof ConsoleLogger)) {
58
59 return false;
60 }
61
62 return dir.equals(((ConsoleLogger) arg).dir);
63 }
64
65 @Override
66 public String toString() {
67
68 return "[" + dir.getAbsolutePath() + "]";
69 }
70
71 @Override
72 public void setTestContext(final Class<?> testClass, final Method testMethod) {
73
74 System.out.println("> test: " + testClass.getSimpleName()
75 + "." + testMethod.getName() + "()");
76 }
77
78 @Override
79 public void close() {
80
81
82 }
83
84 @Override
85 public void startCommand(@Nullable final String actionShortDescription) {
86
87 if (actionShortDescription == null) {
88
89 System.out.println("command()");
90
91 } else {
92
93 System.out.println("command(\"" + actionShortDescription + "\")");
94 }
95 }
96
97 @Override
98 public void startStep(final String label) {
99
100 System.out.println(" ." + label);
101 }
102
103 @Override
104 public void endStep() throws IOException {
105
106
107 }
108
109 @Override
110 public void error(final Throwable throwable) {
111
112 System.err.println(throwable);
113 }
114 }