Changeset 3068
- Timestamp:
- 01/19/12 09:13:49 (4 months ago)
- Files:
-
- 2 added
- 6 edited
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliArguments.java (modified) (2 diffs)
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliOutputType.java (added)
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliProgressAnalysisListener.java (modified) (3 diffs)
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliRunner.java (modified) (6 diffs)
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/Main.java (modified) (3 diffs)
-
AnalyzerBeans/trunk/cli/src/test/java/org/eobjects/analyzer/cli/MainTest.java (modified) (9 diffs)
-
AnalyzerBeans/trunk/cli/src/test/resources/log4j.xml (added)
-
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/bootstrap/Bootstrap.java (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliArguments.java
r2719 r3068 93 93 private String tableName; 94 94 95 @Option(name = "-ot", aliases = { "--output-type" }, usage = "How to represent the result of the job") 96 private CliOutputType outputType; 97 98 @Option(name = "-of", aliases = { "--output-file" }, usage = "File in which to save the result of the job", required = false) 99 private File outputFile; 100 95 101 @Option(name = "-v", aliases = { "-var", "--variable" }, multiValued = true) 96 102 private Map<String, String> variableOverrides; … … 134 140 } 135 141 142 public File getOutputFile() { 143 return outputFile; 144 } 145 146 public CliOutputType getOutputType() { 147 if (outputFile == null) { 148 return CliOutputType.TEXT; 149 } 150 return outputType; 151 } 152 136 153 /** 137 154 * Gets whether the arguments have been sufficiently set to execute a CLI -
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliProgressAnalysisListener.java
r3040 r3068 38 38 39 39 import org.eobjects.metamodel.schema.Table; 40 import org.slf4j.Logger; 41 import org.slf4j.LoggerFactory; 40 42 41 43 final class CliProgressAnalysisListener implements AnalysisListener { 44 45 private static final Logger logger = LoggerFactory.getLogger(CliProgressAnalysisListener.class); 42 46 43 47 private Map<Table, AtomicInteger> rowCounts = new HashMap<Table, AtomicInteger>(); … … 54 58 public void rowProcessingBegin(AnalysisJob job, RowProcessingMetrics metrics) { 55 59 Table table = metrics.getTable(); 56 System.out.println("Analyzing rows from table: " +table.getName());60 logger.info("Analyzing rows from table: {}", table.getName()); 57 61 rowCounts.put(table, new AtomicInteger(0)); 58 62 } … … 75 79 @Override 76 80 public void rowProcessingSuccess(AnalysisJob job, RowProcessingMetrics metrics) { 77 System.out.println("Done processing rows from table: " +metrics.getTable().getName());81 logger.info("Done processing rows from table: {}", metrics.getTable().getName()); 78 82 } 79 83 -
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/CliRunner.java
r2817 r3068 21 21 22 22 import java.io.BufferedInputStream; 23 import java.io.Closeable; 23 24 import java.io.File; 24 25 import java.io.FileInputStream; … … 55 56 import org.eobjects.metamodel.schema.Schema; 56 57 import org.eobjects.metamodel.schema.Table; 58 import org.eobjects.metamodel.util.FileHelper; 57 59 import org.slf4j.Logger; 58 60 import org.slf4j.LoggerFactory; … … 63 65 * @author Kasper SÞrensen 64 66 */ 65 public final class CliRunner {67 public final class CliRunner implements Closeable { 66 68 67 69 private final static Logger logger = LoggerFactory.getLogger(CliRunner.class); … … 69 71 private final CliArguments _arguments; 70 72 private final PrintWriter _out; 71 72 public CliRunner(CliArguments arguments, PrintWriter out) { 73 private final boolean _closeOut; 74 75 /** 76 * Alternative constructor that will specifically specifies the output 77 * writer. Should be used only for testing, since normally the CliArguments 78 * should be used to decide which outputwriter to use 79 * 80 * @param arguments 81 * @param out 82 */ 83 protected CliRunner(CliArguments arguments, PrintWriter out) { 73 84 _arguments = arguments; 74 _out = out; 85 if (out == null) { 86 final File outputFile = arguments.getOutputFile(); 87 if (outputFile == null) { 88 _out = new PrintWriter(System.out); 89 } else { 90 _out = new PrintWriter(FileHelper.getWriter(outputFile)); 91 } 92 _closeOut = true; 93 } else { 94 _out = out; 95 _closeOut = false; 96 } 97 } 98 99 public CliRunner(CliArguments arguments) { 100 this(arguments, null); 75 101 } 76 102 … … 293 319 throwable.printStackTrace(_out); 294 320 } 295 321 296 322 throw errors.get(0); 297 323 } … … 397 423 } 398 424 } 425 426 @Override 427 public void close() { 428 if (_closeOut) { 429 FileHelper.safeClose(_out); 430 } 431 } 399 432 } -
AnalyzerBeans/trunk/cli/src/main/java/org/eobjects/analyzer/cli/Main.java
r2817 r3068 22 22 import java.io.PrintWriter; 23 23 24 import org.eobjects.metamodel.util.FileHelper; 25 24 26 /** 25 27 * Main class for the AnalyzerBeans Command-line interface (CLI). … … 28 30 */ 29 31 public final class Main { 30 31 private static PrintWriter out = new PrintWriter(System.out);32 32 33 33 /** … … 41 41 CliArguments arguments = CliArguments.parse(args); 42 42 if (arguments.isSet() && !arguments.isUsageMode()) { 43 CliRunner runner = new CliRunner(arguments, out); 44 runner.run(); 43 CliRunner runner = new CliRunner(arguments); 44 try { 45 runner.run(); 46 } finally { 47 runner.close(); 48 } 45 49 } else { 46 CliArguments.printUsage(out); 50 PrintWriter out = new PrintWriter(System.out); 51 printUsage(out); 52 FileHelper.safeClose(out); 47 53 } 48 out.flush();49 54 } 50 55 51 p ublic static void setOut(PrintWriter out) {52 Main.out = out;56 private static void printUsage(PrintWriter out) { 57 CliArguments.printUsage(out); 53 58 } 54 59 } -
AnalyzerBeans/trunk/cli/src/test/java/org/eobjects/analyzer/cli/MainTest.java
r3053 r3068 20 20 package org.eobjects.analyzer.cli; 21 21 22 import java.io.PrintWriter; 22 import java.io.IOException; 23 import java.io.OutputStream; 24 import java.io.PrintStream; 23 25 import java.io.StringWriter; 24 26 25 27 import junit.framework.TestCase; 26 28 29 import org.apache.log4j.PropertyConfigurator; 30 27 31 public class MainTest extends TestCase { 28 32 33 private StringWriter _stringWriter; 34 private PrintStream _originalSysOut; 35 36 @Override 37 protected void setUp() throws Exception { 38 _stringWriter = new StringWriter(); 39 _originalSysOut = System.out; 40 useAsSystemOut(_stringWriter); 41 42 PropertyConfigurator.configure("src/test/resources/log4j.xml"); 43 } 44 45 private void useAsSystemOut(StringWriter stringWriter) { 46 OutputStream out = new OutputStream() { 47 @Override 48 public void write(int b) throws IOException { 49 _stringWriter.write(b); 50 } 51 }; 52 System.setOut(new PrintStream(out)); 53 } 54 55 @Override 56 protected void tearDown() throws Exception { 57 super.tearDown(); 58 System.setOut(_originalSysOut); 59 } 60 29 61 public void testUsage() throws Throwable { 30 StringWriter stringWriter = new StringWriter();31 Main.setOut(new PrintWriter(stringWriter));32 33 62 Main.main("-usage".split(" ")); 34 63 35 String out1 = stringWriter.toString();64 String out1 = _stringWriter.toString(); 36 65 37 66 String[] lines = out1.split("\n"); 38 67 39 assertEquals( 8, lines.length);68 assertEquals(10, lines.length); 40 69 41 70 assertEquals( … … 53 82 assertEquals("DATASTORES | SCHEMAS | TABLES | COLUMNS] : configuration", lines[5].trim()); 54 83 assertEquals( 84 "-of (--output-file) FILE : File in which to save the result of the job", 85 lines[6].trim()); 86 assertEquals("-ot (--output-type) [TEXT | HTML | SERIALIZED] : How to represent the result of the job", 87 lines[7].trim()); 88 assertEquals( 55 89 "-s (-schema, --schema-name) VAL : Name of schema when printing a list of tables or columns", 56 lines[ 6].trim());90 lines[8].trim()); 57 91 assertEquals( 58 92 "-t (-table, --table-name) VAL : Name of table when printing a list of columns", 59 lines[ 7].trim());93 lines[9].trim()); 60 94 61 95 // again without the -usage flag 62 stringWriter = new StringWriter();63 Main.setOut(new PrintWriter(stringWriter));96 _stringWriter = new StringWriter(); 97 useAsSystemOut(_stringWriter); 64 98 Main.main(new String[0]); 65 99 66 String out2 = stringWriter.toString();100 String out2 = _stringWriter.toString(); 67 101 assertEquals(out1, out2); 68 102 } 69 103 70 104 public void testListDatastores() throws Throwable { 71 StringWriter stringWriter = new StringWriter();72 Main.setOut(new PrintWriter(stringWriter));73 74 105 Main.main("-conf examples/conf.xml -list DATASTORES".split(" ")); 75 106 76 String out = stringWriter.toString().replaceAll("\r\n", "\n");107 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 77 108 assertEquals("Datastores:\n-----------\nall_datastores\nemployees_csv\norderdb\n", out); 78 109 } 79 110 80 111 public void testListSchemas() throws Throwable { 81 StringWriter stringWriter = new StringWriter();82 Main.setOut(new PrintWriter(stringWriter));83 84 112 Main.main("-conf examples/conf.xml -ds orderdb -list SCHEMAS".split(" ")); 85 113 86 String out = stringWriter.toString().replaceAll("\r\n", "\n");114 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 87 115 assertEquals("Schemas:\n" + "--------\n" + "INFORMATION_SCHEMA\n" + "PUBLIC\n", out); 88 116 } 89 117 90 118 public void testListTables() throws Throwable { 91 StringWriter stringWriter = new StringWriter();92 Main.setOut(new PrintWriter(stringWriter));93 94 119 Main.main("-conf examples/conf.xml -ds orderdb -schema PUBLIC -list TABLES".split(" ")); 95 120 96 String out = stringWriter.toString().replaceAll("\r\n", "\n");121 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 97 122 assertEquals( 98 123 "Tables:\n-------\nCUSTOMERS\nCUSTOMER_W_TER\nDEPARTMENT_MANAGERS\nDIM_TIME\nEMPLOYEES\nOFFICES\nORDERDETAILS\nORDERFACT\nORDERS\nPAYMENTS\nPRODUCTS\nQUADRANT_ACTUALS\nTRIAL_BALANCE\n", … … 101 126 102 127 public void testListColumns() throws Throwable { 103 StringWriter stringWriter = new StringWriter();104 Main.setOut(new PrintWriter(stringWriter));105 106 128 Main.main("-conf examples/conf.xml -ds orderdb -schema PUBLIC -table EMPLOYEES -list COLUMNS".split(" ")); 107 129 108 String out = stringWriter.toString().replaceAll("\r\n", "\n");130 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 109 131 assertEquals( 110 132 "Columns:\n--------\nEMPLOYEENUMBER\nLASTNAME\nFIRSTNAME\nEXTENSION\nEMAIL\nOFFICECODE\nREPORTSTO\nJOBTITLE\n", … … 113 135 114 136 public void testListTransformers() throws Throwable { 115 StringWriter stringWriter = new StringWriter();116 Main.setOut(new PrintWriter(stringWriter));117 118 137 Main.main("-conf examples/conf.xml -list TRANSFORMERS".split(" ")); 119 138 120 String out = stringWriter.toString().replaceAll("\r\n", "\n");139 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 121 140 String[] lines = out.split("\n"); 122 141 … … 128 147 129 148 public void testListFilters() throws Throwable { 130 StringWriter stringWriter = new StringWriter();131 Main.setOut(new PrintWriter(stringWriter));132 133 149 Main.main("-conf examples/conf.xml -list FILTERS".split(" ")); 134 150 135 String out = stringWriter.toString().replaceAll("\r\n", "\n");151 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 136 152 String[] lines = out.split("\n"); 137 153 … … 143 159 144 160 public void testListAnalyzers() throws Throwable { 145 StringWriter stringWriter = new StringWriter();146 Main.setOut(new PrintWriter(stringWriter));147 148 161 Main.main("-conf examples/conf.xml -list ANALYZERS".split(" ")); 149 162 150 String out = stringWriter.toString().replaceAll("\r\n", "\n");163 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 151 164 String[] lines = out.split("\n"); 152 165 … … 158 171 159 172 public void testListExplorers() throws Throwable { 160 StringWriter stringWriter = new StringWriter();161 Main.setOut(new PrintWriter(stringWriter));162 163 173 Main.main("-conf examples/conf.xml -list EXPLORERS".split(" ")); 164 174 165 String out = stringWriter.toString().replaceAll("\r\n", "\n");175 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 166 176 String[] lines = out.split("\n"); 167 177 … … 172 182 173 183 public void testExampleEmployeesJob() throws Throwable { 174 StringWriter stringWriter = new StringWriter();175 Main.setOut(new PrintWriter(stringWriter));176 184 Main.main("-conf examples/conf.xml -job examples/employees_job.xml".split(" ")); 177 185 178 String out = stringWriter.toString().replaceAll("\r\n", "\n");186 String out = _stringWriter.toString().replaceAll("\r\n", "\n"); 179 187 String[] lines = out.split("\n"); 180 assertEquals("SUCCESS!", lines[0]);181 188 182 189 assertTrue(out.indexOf("Top values:\n" + " - company.com: 4\n" + " - eobjects.org: 2") != -1); … … 184 191 assertTrue(lines.length > 80); 185 192 assertTrue(lines.length < 90); 193 194 assertEquals("SUCCESS!", lines[0]); 186 195 } 187 196 } -
DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/bootstrap/Bootstrap.java
r3028 r3068 94 94 if (arguments.isUsageMode()) { 95 95 final PrintWriter out = new PrintWriter(System.out); 96 CliArguments.printUsage(out); 96 try { 97 CliArguments.printUsage(out); 98 } finally { 99 FileHelper.safeClose(out); 100 } 97 101 98 102 exitCommandLine(null, 1); … … 123 127 if (cliMode) { 124 128 125 final PrintWriter out = new PrintWriter(System.out);126 129 // run in CLI mode 127 130 128 131 int exitCode = 0; 132 final CliArguments arguments = _options.getCommandLineArguments(); 133 final CliRunner runner = new CliRunner(arguments); 129 134 try { 130 final CliArguments arguments = _options.getCommandLineArguments();131 final CliRunner runner = new CliRunner(arguments, out);132 135 runner.run(configuration); 133 136 } catch (Throwable e) { … … 135 138 exitCode = 1; 136 139 } finally { 137 out.flush();140 runner.close(); 138 141 exitCommandLine(configuration, exitCode); 139 142 } … … 143 146 final MacOSManager macOsManager = injector.getInstance(MacOSManager.class); 144 147 macOsManager.init(); 145 148 146 149 // run in GUI mode 147 150 final AnalysisJobBuilderWindow analysisJobBuilderWindow = injector.getInstance(AnalysisJobBuilderWindow.class);
Note: See TracChangeset
for help on using the changeset viewer.
