import	org.apache.commons.cli.CommandLine;
import	org.apache.commons.cli.CommandLineParser;
import	org.apache.commons.cli.HelpFormatter;
import	org.apache.commons.cli.MissingArgumentException;
import	org.apache.commons.cli.Options;
import	org.apache.commons.cli.OptionBuilder;
import	org.apache.commons.cli.ParseException;
import	org.apache.commons.cli.PosixParser;

class cmdopt {
	public static void main(String[] args) {
		CommandLineParser	parser = new PosixParser();
		Options	options = new Options();
		options.addOption(OptionBuilder.withArgName("o").withLongOpt("output").isRequired(true).withDescription("set output").create("o"));
		options.addOption("q","quote",false,"set quote");
		options.addOption("d","debug",true,"set debug level");
		try {
			CommandLine	command = parser.parse(options,args);
			if (	(command.hasOption("d") &&
						(	Integer.parseInt(command.getOptionValue("d")) < 0 ||
							Integer.parseInt(command.getOptionValue("d")) > 2)) ||
					command.getArgs().length == 0)
				throw new MissingArgumentException("invalid argument.");
			System.out.println("[オプション情報]");
			System.out.println("o(output):\t"+(command.hasOption("o") ? "ON" : "OFF"));
			System.out.println("q(quote):\t"+(command.hasOption("q") ? "ON" : "OFF"));
			System.out.println("d(debug):\t"+(command.hasOption("d") ? command.getOptionValue("d") : "2"));
			System.out.println();
			System.out.println("[パラメータ情報]");
			System.out.printf("指定数:\t%d\n",command.getArgs().length);
			for (int i=0;i<command.getArgs().length;i++)
				System.out.printf("%d:\t%s\n",i+1,command.getArgs()[i]);
		} catch(ParseException ex) {
			HelpFormatter	formatter = new HelpFormatter();
			formatter.printHelp("cmdopt",options);
		} catch(Exception ex) {
			ex.printStackTrace();
		}
	}
}

