001 package jp.osdl.jbento2.analyzer; 002 003 import java.util.Iterator; 004 import org.apache.commons.cli.*; 005 006 public class GCAnalyzerCli { 007 008 public static void main(String[] args) throws Exception { 009 Options options = new Options(); 010 options.addOption(OptionBuilder.withArgName("source file").hasArg() 011 .withDescription("source file.").withLongOpt("source").create( 012 "f")); 013 options.addOption(OptionBuilder.withArgName("dest file").hasArg() 014 .withDescription("dest file.").withLongOpt("dest").create("d")); 015 options.addOption(OptionBuilder.withArgName("start time").hasArg() 016 .withDescription("start time[HH:mm:ss]").withLongOpt("start") 017 .create("s")); 018 options.addOption("h", "help", false, "display help"); 019 020 options.addOption(OptionBuilder.withArgName("skip time").hasArg() 021 .withDescription("skip time[sec]").withLongOpt("skip") 022 .create("k")); 023 024 options.addOption(OptionBuilder.withArgName("mean time").hasArg() 025 .withDescription("mean time[sec]").withLongOpt("mean") 026 .create("m")); 027 028 CommandLineParser parser = new PosixParser(); 029 CommandLine line = null; 030 try { 031 line = parser.parse(options, args); 032 } catch (ParseException ex) { 033 throw ex; 034 } 035 036 if (line.hasOption("h") 037 || (line.getOptions().length == 0 && line.getArgs().length == 0)) { 038 HelpFormatter formatter = new HelpFormatter(); 039 formatter.printHelp("GCAnalyzerCli", options, true); 040 return; 041 } 042 043 GCAnalyzer analyzer = new GCAnalyzer(); 044 045 for (Iterator it = line.iterator(); it.hasNext();) { 046 Option o = (Option) it.next(); 047 String longOpt = o.getLongOpt(); 048 if (longOpt.equals("source")) { 049 analyzer.setSrc(o.getValue()); 050 } else if (longOpt.equals("dest")) { 051 analyzer.setDest(o.getValue()); 052 } else if (longOpt.equals("start")) { 053 analyzer.setStartTime(o.getValue()); 054 } else if (longOpt.equals("skip")) { 055 analyzer.setRampUpMillis(Long.parseLong(o.getValue())); 056 } else if (longOpt.equals("mean")) { 057 analyzer.setDurationMillis(Long.parseLong(o.getValue())); 058 } 059 } 060 061 if (analyzer.getSrc() == null) { 062 if (line.getArgs().length < 1) { 063 throw new MissingOptionException("source does not specified."); 064 } else { 065 analyzer.setSrc(line.getArgs()[0]); 066 } 067 } 068 069 analyzer.analyze(); 070 } 071 }