List of usage examples for org.apache.commons.cli2 OptionException OptionException
public OptionException(final Option option, final String messageKey)
From source file:com.netease.news.utils.SplitInput.java
/** * Configure this instance based on the command-line arguments contained within provided array. * Calls {@link #validate()} to ensure consistency of configuration. * * @return true if the arguments were parsed successfully and execution should proceed. * @throws Exception if there is a problem parsing the command-line arguments or the particular * combination would violate class invariants. *///from w w w.ja v a2s . com private boolean parseArgs(String[] args) throws Exception { addInputOption(); addOption("trainingOutput", "tr", "The training data output directory", false); addOption("testOutput", "te", "The test data output directory", false); addOption("testSplitSize", "ss", "The number of documents held back as test data for each category", false); addOption("testSplitPct", "sp", "The % of documents held back as test data for each category", false); addOption("splitLocation", "sl", "Location for start of test data expressed as a percentage of the input file " + "size (0=start, 50=middle, 100=end", false); addOption("randomSelectionSize", "rs", "The number of items to be randomly selected as test data ", false); addOption("randomSelectionPct", "rp", "Percentage of items to be randomly selected as test data when using " + "mapreduce mode", false); addOption("charset", "c", "The name of the character encoding of the input files (not needed if using " + "SequenceFiles)", false); addOption(buildOption("sequenceFiles", "seq", "Set if the input files are sequence files. Default is false", false, false, "false")); addOption(DefaultOptionCreator.methodOption().create()); addOption(DefaultOptionCreator.overwriteOption().create()); //TODO: extend this to sequential mode addOption("keepPct", "k", "The percentage of total data to keep in map-reduce mode, the rest will be ignored. " + "Default is 100%", false); addOption("mapRedOutputDir", "mro", "Output directory for map reduce jobs", false); if (parseArguments(args) == null) { return false; } try { inputDirectory = getInputPath(); useMapRed = getOption(DefaultOptionCreator.METHOD_OPTION) .equalsIgnoreCase(DefaultOptionCreator.MAPREDUCE_METHOD); if (useMapRed) { if (!hasOption("randomSelectionPct")) { throw new OptionException(getCLIOption("randomSelectionPct"), "must set randomSelectionPct when mapRed option is used"); } if (!hasOption("mapRedOutputDir")) { throw new OptionException(getCLIOption("mapRedOutputDir"), "mapRedOutputDir must be set when mapRed option is used"); } mapRedOutputDirectory = new Path(getOption("mapRedOutputDir")); if (hasOption("keepPct")) { keepPct = Integer.parseInt(getOption("keepPct")); } if (hasOption(DefaultOptionCreator.OVERWRITE_OPTION)) { HadoopUtil.delete(getConf(), mapRedOutputDirectory); } } else { if (!hasOption("trainingOutput") || !hasOption("testOutput")) { throw new OptionException(getCLIOption("trainingOutput"), "trainingOutput and testOutput must be set if mapRed option is not used"); } if (!hasOption("testSplitSize") && !hasOption("testSplitPct") && !hasOption("randomSelectionPct") && !hasOption("randomSelectionSize")) { throw new OptionException(getCLIOption("testSplitSize"), "must set one of test split size/percentage or randomSelectionSize/percentage"); } trainingOutputDirectory = new Path(getOption("trainingOutput")); testOutputDirectory = new Path(getOption("testOutput")); FileSystem fs = trainingOutputDirectory.getFileSystem(getConf()); if (hasOption(DefaultOptionCreator.OVERWRITE_OPTION)) { HadoopUtil.delete(fs.getConf(), trainingOutputDirectory); HadoopUtil.delete(fs.getConf(), testOutputDirectory); } fs.mkdirs(trainingOutputDirectory); fs.mkdirs(testOutputDirectory); } if (hasOption("charset")) { charset = Charset.forName(getOption("charset")); } if (hasOption("testSplitSize") && hasOption("testSplitPct")) { throw new OptionException(getCLIOption("testSplitPct"), "must have either split size or split percentage " + "option, not BOTH"); } if (hasOption("testSplitSize")) { setTestSplitSize(Integer.parseInt(getOption("testSplitSize"))); } if (hasOption("testSplitPct")) { setTestSplitPct(Integer.parseInt(getOption("testSplitPct"))); } if (hasOption("splitLocation")) { setSplitLocation(Integer.parseInt(getOption("splitLocation"))); } if (hasOption("randomSelectionSize")) { setTestRandomSelectionSize(Integer.parseInt(getOption("randomSelectionSize"))); } if (hasOption("randomSelectionPct")) { setTestRandomSelectionPct(Integer.parseInt(getOption("randomSelectionPct"))); } useSequence = hasOption("sequenceFiles"); } catch (OptionException e) { log.error("Command-line option Exception", e); CommandLineUtil.printHelp(getGroup()); return false; } validate(); return true; }
From source file:com.tamingtext.util.SplitInput.java
/** Configure this instance based on the command-line arguments contained within provided array. * Calls {@link #validate()} to ensure consistency of configuration. * //from w w w .jav a2s . c o m * @return true if the arguments were parsed successfully and execution should proceed. * @throws Exception if there is a problem parsing the command-line arguments or the particular * combination would violate class invariants. */ public boolean parseArgs(String[] args) throws Exception { DefaultOptionBuilder obuilder = new DefaultOptionBuilder(); ArgumentBuilder abuilder = new ArgumentBuilder(); GroupBuilder gbuilder = new GroupBuilder(); Option helpOpt = DefaultOptionCreator.helpOption(); Option inputDirOpt = obuilder.withLongName("inputDir").withRequired(true) .withArgument(abuilder.withName("inputDir").withMinimum(1).withMaximum(1).create()) .withDescription("The input directory").withShortName("i").create(); Option trainingOutputDirOpt = obuilder.withLongName("trainingOutputDir").withRequired(true) .withArgument(abuilder.withName("outputDir").withMinimum(1).withMaximum(1).create()) .withDescription("The training data output directory").withShortName("tr").create(); Option testOutputDirOpt = obuilder.withLongName("testOutputDir").withRequired(true) .withArgument(abuilder.withName("outputDir").withMinimum(1).withMaximum(1).create()) .withDescription("The test data output directory").withShortName("te").create(); Option testSplitSizeOpt = obuilder.withLongName("testSplitSize").withRequired(false) .withArgument(abuilder.withName("splitSize").withMinimum(1).withMaximum(1).create()) .withDescription("The number of documents held back as test data for each category") .withShortName("ss").create(); Option testSplitPctOpt = obuilder.withLongName("testSplitPct").withRequired(false) .withArgument(abuilder.withName("splitPct").withMinimum(1).withMaximum(1).create()) .withDescription("The percentage of documents held back as test data for each category") .withShortName("sp").create(); Option splitLocationOpt = obuilder.withLongName("splitLocation").withRequired(false) .withArgument(abuilder.withName("splitLoc").withMinimum(1).withMaximum(1).create()) .withDescription( "Location for start of test data expressed as a percentage of the input file size (0=start, 50=middle, 100=end") .withShortName("sl").create(); Option randomSelectionSizeOpt = obuilder.withLongName("randomSelectionSize").withRequired(false) .withArgument(abuilder.withName("randomSize").withMinimum(1).withMaximum(1).create()) .withDescription("The number of itemr to be randomly selected as test data ").withShortName("rs") .create(); Option randomSelectionPctOpt = obuilder.withLongName("randomSelectionPct").withRequired(false) .withArgument(abuilder.withName("randomPct").withMinimum(1).withMaximum(1).create()) .withDescription("Percentage of items to be randomly selected as test data ").withShortName("rp") .create(); Option charsetOpt = obuilder.withLongName("charset").withRequired(true) .withArgument(abuilder.withName("charset").withMinimum(1).withMaximum(1).create()) .withDescription("The name of the character encoding of the input files").withShortName("c") .create(); Group group = gbuilder.withName("Options").withOption(inputDirOpt).withOption(trainingOutputDirOpt) .withOption(testOutputDirOpt).withOption(testSplitSizeOpt).withOption(testSplitPctOpt) .withOption(splitLocationOpt).withOption(randomSelectionSizeOpt).withOption(randomSelectionPctOpt) .withOption(charsetOpt).create(); try { Parser parser = new Parser(); parser.setGroup(group); CommandLine cmdLine = parser.parse(args); if (cmdLine.hasOption(helpOpt)) { CommandLineUtil.printHelp(group); return false; } inputDirectory = new Path((String) cmdLine.getValue(inputDirOpt)); trainingOutputDirectory = new Path((String) cmdLine.getValue(trainingOutputDirOpt)); testOutputDirectory = new Path((String) cmdLine.getValue(testOutputDirOpt)); charset = Charset.forName((String) cmdLine.getValue(charsetOpt)); if (cmdLine.hasOption(testSplitSizeOpt) && cmdLine.hasOption(testSplitPctOpt)) { throw new OptionException(testSplitSizeOpt, "must have either split size or split percentage option, not BOTH"); } else if (!cmdLine.hasOption(testSplitSizeOpt) && !cmdLine.hasOption(testSplitPctOpt)) { throw new OptionException(testSplitSizeOpt, "must have either split size or split percentage option"); } if (cmdLine.hasOption(testSplitSizeOpt)) { setTestSplitSize(Integer.parseInt((String) cmdLine.getValue(testSplitSizeOpt))); } if (cmdLine.hasOption(testSplitPctOpt)) { setTestSplitPct(Integer.parseInt((String) cmdLine.getValue(testSplitPctOpt))); } if (cmdLine.hasOption(splitLocationOpt)) { setSplitLocation(Integer.parseInt((String) cmdLine.getValue(splitLocationOpt))); } if (cmdLine.hasOption(randomSelectionSizeOpt)) { setTestRandomSelectionSize(Integer.parseInt((String) cmdLine.getValue(randomSelectionSizeOpt))); } if (cmdLine.hasOption(randomSelectionPctOpt)) { setTestRandomSelectionPct(Integer.parseInt((String) cmdLine.getValue(randomSelectionPctOpt))); } fs.mkdirs(trainingOutputDirectory); fs.mkdirs(testOutputDirectory); } catch (OptionException e) { log.error("Command-line option Exception", e); CommandLineUtil.printHelp(group); return false; } validate(); return true; }