001 package jp.osdl.jbento2.analyzer;
002
003 import java.util.Iterator;
004 import org.apache.commons.cli.*;
005
006 public class AnalyzerCli {
007
008 public static void main(String[] args) throws Exception {
009 Options options = new Options();
010 options.addOption(
011 OptionBuilder.
012 withArgName("source file").
013 hasArg().
014 withDescription("source file.").
015 withLongOpt("source").
016 create("f"));
017 options.addOption(
018 OptionBuilder.
019 withArgName("dest dir").
020 hasArg().
021 withDescription("dest directory.").
022 withLongOpt("dest").
023 create("d"));
024 options.addOption(
025 OptionBuilder.
026 withArgName("parser name").
027 hasArg().
028 withDescription("parser name. available value is 'jbento'.").
029 withLongOpt("parser").
030 create("p"));
031 options.addOption(
032 OptionBuilder.
033 withArgName("ramp-up seconds").
034 hasArg().
035 withDescription("seconds to ignore ramp-up.").
036 withLongOpt("ramp-up").
037 create("U"));
038 options.addOption(
039 OptionBuilder.
040 withArgName("ramp-down seconds").
041 hasArg().
042 withDescription("seconds to ignore ramp-down.").
043 withLongOpt("ramp-down").
044 create("D"));
045 options.addOption(
046 OptionBuilder.
047 withArgName("duration seconds").
048 hasArg().
049 withDescription("seconds to duration.").
050 withLongOpt("duration").
051 create("R"));
052 options.addOption("h", "help", false, "display help");
053
054 CommandLineParser parser = new PosixParser();
055 CommandLine line = null;
056 try {
057 line = parser.parse(options, args);
058 } catch (ParseException ex) {
059 throw ex;
060 }
061
062 if (line.hasOption("h") ||
063 (line.getOptions().length == 0 && line.getArgs().length == 0)) {
064 HelpFormatter formatter = new HelpFormatter();
065 formatter.printHelp("AnalyzerCli", options, true);
066 return;
067 }
068
069 Analyzer analyzer = new Analyzer();
070
071 for (Iterator it = line.iterator(); it.hasNext();) {
072 Option o = (Option)it.next();
073 String longOpt = o.getLongOpt();
074 if (longOpt.equals("source")) {
075 analyzer.setSrc(o.getValue());
076 } else if (longOpt.equals("dest")) {
077 analyzer.setDest(o.getValue());
078 } else if (longOpt.equals("parser")) {
079 analyzer.setParser(o.getValue());
080 } else if (longOpt.equals("ramp-up")) {
081 analyzer.setRampUpMillis(Integer.parseInt(o.getValue()) * 1000);
082 } else if (longOpt.equals("ramp-down")) {
083 analyzer.setRampDownMillis(Integer.parseInt(o.getValue()) * 1000);
084 } else if (longOpt.equals("duration")) {
085 analyzer.setDurationMillis(Long.parseLong(o.getValue()) * 1000);
086 }
087 }
088
089 if (analyzer.getSrc() == null) {
090 if (line.getArgs().length < 1) {
091 throw new MissingOptionException("source does not specified.");
092 } else {
093 analyzer.setSrc(line.getArgs()[0]);
094 }
095 }
096
097 analyzer.analyze();
098 }
099 }