001 package jp.osdl.jbento2.chart; 002 003 import java.io.File; 004 import java.io.IOException; 005 import java.util.Iterator; 006 007 import org.apache.commons.cli.CommandLine; 008 import org.apache.commons.cli.CommandLineParser; 009 import org.apache.commons.cli.HelpFormatter; 010 import org.apache.commons.cli.Option; 011 import org.apache.commons.cli.OptionBuilder; 012 import org.apache.commons.cli.Options; 013 import org.apache.commons.cli.ParseException; 014 import org.apache.commons.cli.PosixParser; 015 016 public class ChartCli { 017 018 public static void main(String[] args) throws ParseException, IOException { 019 Options options = new Options(); 020 021 options.addOption(OptionBuilder.withArgName("source file").hasArg() 022 .isRequired().withDescription("source file.").withLongOpt( 023 "source").create("s")); 024 025 options.addOption(OptionBuilder.withArgName("dest file").hasArg() 026 .withDescription("dest file.").withLongOpt("dest").create("d")); 027 028 options.addOption(OptionBuilder.withArgName("dest file postfix") 029 .hasArg().withDescription("dest file postfix.").withLongOpt( 030 "postfix").create("p")); 031 032 options.addOption(OptionBuilder.withArgName("title").hasArg() 033 .withDescription("title.").withLongOpt("title").create("i")); 034 035 options.addOption(OptionBuilder.withArgName("x Label").hasArg() 036 .withDescription("x-axis Label.").withLongOpt("xLabel") 037 .create()); 038 039 options.addOption(OptionBuilder.withArgName("y Label").hasArg() 040 .withDescription("y-axis Label.").withLongOpt("yLabel") 041 .create()); 042 043 options.addOption(OptionBuilder.withArgName("width").hasArg() 044 .withDescription("width of graph.").withLongOpt("width") 045 .create()); 046 047 options.addOption(OptionBuilder.withArgName("height").hasArg() 048 .withDescription("height of graph.").withLongOpt("height") 049 .create()); 050 051 options.addOption(OptionBuilder.withArgName("x Min").hasArg() 052 .withDescription("minimum number of x-axis.").withLongOpt("xMin") 053 .create()); 054 055 options.addOption(OptionBuilder.withArgName("x Max").hasArg() 056 .withDescription("max number of x-axis.").withLongOpt("xMax") 057 .create("X")); 058 059 options.addOption(OptionBuilder.withArgName("y Min").hasArg() 060 .withDescription("minimum number of y-axis.").withLongOpt("yMin") 061 .create()); 062 063 options.addOption(OptionBuilder.withArgName("y Max").hasArg() 064 .withDescription("max number of y-axis.").withLongOpt("yMax") 065 .create("Y")); 066 067 options.addOption(OptionBuilder.withArgName("no shape") 068 .withDescription("remove shape").withLongOpt("noshape") 069 .create()); 070 071 options.addOption(OptionBuilder.withArgName("categories").hasArgs() 072 .withDescription("categories of graph").withLongOpt( 073 "categories").create("c")); 074 075 options.addOption(OptionBuilder.withArgName("end of data").hasArg() 076 .withDescription("string about end of data in csv file") 077 .withLongOpt("eod").create("e")); 078 079 options.addOption(OptionBuilder.withArgName("chart type").hasArg() 080 .isRequired().withDescription("chart type").withLongOpt("type") 081 .create("t")); 082 083 options.addOption(OptionBuilder.withArgName("dataset builder").hasArg() 084 .isRequired().withDescription("dataset builder name") 085 .withLongOpt("builder").create("b")); 086 087 options.addOption(OptionBuilder.withArgName("renew chart") 088 .withDescription("renew chart").withLongOpt("renew").create()); 089 090 if (args.length == 0) { 091 HelpFormatter formatter = new HelpFormatter(); 092 formatter.printHelp("ChartCli", options, true); 093 return; 094 } 095 096 CommandLineParser parser = new PosixParser(); 097 CommandLine line = null; 098 try { 099 line = parser.parse(options, args); 100 } catch (ParseException ex) { 101 throw ex; 102 } 103 104 if (line.hasOption("h") 105 || (line.getOptions().length == 0 && line.getArgs().length == 0)) { 106 HelpFormatter formatter = new HelpFormatter(); 107 formatter.printHelp("ChartCli", options, true); 108 return; 109 } 110 111 ChartGenerator generator = new ChartGenerator(); 112 113 for (Iterator it = line.iterator(); it.hasNext();) { 114 Option o = (Option) it.next(); 115 String longOpt = o.getLongOpt(); 116 if (longOpt.equals("source")) { 117 generator.setSrc(new File(o.getValue())); 118 } else if (longOpt.equals("dest")) { 119 generator.setDest(new File(o.getValue())); 120 } else if (longOpt.equals("postfix")) { 121 generator.setPostfix(o.getValue()); 122 } else if (longOpt.equals("title")) { 123 generator.setTitle(o.getValue()); 124 } else if (longOpt.equals("xLabel")) { 125 generator.setXlabel(o.getValue()); 126 } else if (longOpt.equals("yLabel")) { 127 generator.setYlabel(o.getValue()); 128 } else if (longOpt.equals("width")) { 129 generator.setWidth(Integer.parseInt(o.getValue())); 130 } else if (longOpt.equals("height")) { 131 generator.setHeight(Integer.parseInt(o.getValue())); 132 } else if (longOpt.equals("xMin")) { 133 generator.setXMin(Long.parseLong(o.getValue())); 134 } else if (longOpt.equals("xMax")) { 135 generator.setXMax(Long.parseLong(o.getValue())); 136 } else if (longOpt.equals("yMin")) { 137 generator.setYMin(Long.parseLong(o.getValue())); 138 } else if (longOpt.equals("yMax")) { 139 generator.setYMax(Long.parseLong(o.getValue())); 140 } else if (longOpt.equals("noshape")) { 141 generator.setShape(false); 142 } else if (longOpt.equals("categories")) { 143 generator.setCategories(o.getValues()); 144 } else if (longOpt.equals("eod")) { 145 generator.setEndOfData(o.getValue()); 146 } else if (longOpt.equals("type")) { 147 generator.setChartType(ChartTypeFactory.create(o.getValue())); 148 } else if (longOpt.equals("builder")) { 149 generator.setDsBuilder(DataSetBuilderFactory 150 .getDataSetBuilder(o.getValue())); 151 } else if (longOpt.equals("renew")) { 152 generator.setRenew(true); 153 } 154 } 155 156 generator.execute(); 157 } 158 }