View Javadoc
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  		// do nothing
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 		// do nothing
107 	}
108 
109 	@Override
110 	public void error(final Throwable throwable) {
111 
112 		System.err.println(throwable);
113 	}
114 }