1 9 package com.vladium.emma.report; 10 11 import java.io.IOException ; 12 13 import com.vladium.util.ClassLoaderResolver; 14 import com.vladium.util.Strings; 15 import com.vladium.util.args.IOptsParser; 16 import com.vladium.util.asserts.$assert; 17 import com.vladium.emma.Command; 18 import com.vladium.emma.IAppConstants; 19 import com.vladium.emma.IAppErrorCodes; 20 import com.vladium.emma.EMMARuntimeException; 21 22 26 public 27 final class reportCommand extends Command 28 { 29 31 public reportCommand (final String usageToolName, final String [] args) 32 { 33 super (usageToolName, args); 34 } 35 36 public synchronized void run () 37 { 38 ClassLoader loader; 39 try 40 { 41 loader = ClassLoaderResolver.getClassLoader (); 42 } 43 catch (Throwable t) 44 { 45 loader = getClass ().getClassLoader (); 46 } 47 48 try 49 { 50 { 52 final IOptsParser parser = getOptParser (loader); 53 final IOptsParser.IOpts parsedopts = parser.parse (m_args); 54 55 { 57 final int usageRequestLevel = parsedopts.usageRequestLevel (); 58 59 if (usageRequestLevel > 0) 60 { 61 usageexit (parser, usageRequestLevel, null); 62 return; 63 } 64 } 65 66 final IOptsParser.IOpt [] opts = parsedopts.getOpts (); 67 68 if (opts == null) { 70 parsedopts.error (m_out, STDOUT_WIDTH); 71 usageexit (parser, IOptsParser.SHORT_USAGE, null); 72 return; 73 } 74 75 77 try 78 { 79 for (int o = 0; o < opts.length; ++ o) 80 { 81 final IOptsParser.IOpt opt = opts [o]; 82 final String on = opt.getCanonicalName (); 83 84 if (! processOpt (opt)) 85 { 86 if ("in".equals (on)) 87 { 88 m_datapath = getListOptValue (opt, PATH_DELIMITERS, true); 89 } 90 else if ("sp".equals (on)) 91 { 92 m_srcpath = getListOptValue (opt, PATH_DELIMITERS, true); 93 } 94 else if ("r".equals (on)) 95 { 96 m_reportTypes = Strings.merge (opt.getValues (), COMMA_DELIMITERS, true); 97 } 98 } 99 } 100 101 103 if (! processFilePropertyOverrides ()) return; 104 105 107 processCmdPropertyOverrides (parsedopts); 108 } 109 catch (IOException ioe) 110 { 111 throw new EMMARuntimeException (IAppErrorCodes.ARGS_IO_FAILURE, ioe); 112 } 113 114 { 116 } 117 } 118 119 { 121 final ReportProcessor processor = ReportProcessor.create (); 122 processor.setAppName (IAppConstants.APP_NAME); 124 processor.setDataPath (m_datapath); 125 processor.setSourcePath (m_srcpath); 126 if ($assert.ENABLED) $assert.ASSERT (m_reportTypes != null, "m_reportTypes no set"); 127 processor.setReportTypes (m_reportTypes); processor.setPropertyOverrides (m_propertyOverrides); 129 130 processor.run (); 131 } 132 } 133 catch (EMMARuntimeException yre) 134 { 135 137 exit (true, yre.getMessage (), yre, RC_UNEXPECTED); return; 139 } 140 catch (Throwable t) 141 { 142 145 exit (true, "unexpected failure: ", t, RC_UNEXPECTED); return; 147 } 148 149 exit (false, null, null, RC_OK); 150 } 151 152 154 155 protected void initialize () 156 { 157 super.initialize (); 158 } 159 160 protected String usageArgsMsg () 161 { 162 return "[options]"; 163 } 164 165 167 169 170 private String [] m_datapath; private String [] m_srcpath; 172 private String [] m_reportTypes; 173 174 }
| Popular Tags
|