The following example uses a QualifiedSwitch to allow the user to specify the language(s) to use in verbose mode.
public static void main(String[] args) throws Exception { JSAP jsap = new JSAP(); FlaggedOption opt1 = new FlaggedOption("count") .setStringParser(new IntegerStringParser()) .setDefault("1") .setRequired(true) .setShortFlag('n') .setLongFlag(JSAP.NO_LONGFLAG); opt1.setHelp("The number of times to say hello (default=1)."); jsap.registerParameter(opt1); QualifiedSwitch sw1 = (QualifiedSwitch) (new QualifiedSwitch("verbose") .setShortFlag('v') .setLongFlag("verbose") .setList(true) .setListSeparator(',')); sw1.setHelp("Requests verbose output."); jsap.registerParameter(sw1); UnflaggedOption opt2 = new UnflaggedOption("name") .setStringParser(new StringStringParser()) .setDefault("World") .setRequired(true) .setGreedy(true); opt2.setHelp("One or more names of people you would like to greet."); jsap.registerParameter(opt2); JSAPResult config = jsap.parse(args); if (!config.success()) { System.err.println(); // print out specific error messages describing the problems // with the command line, THEN print usage, THEN print full // help. This is called "beating the user with a clue stick." for (java.util.Iterator errs = config.getErrorMessageIterator(); errs.hasNext();) { System.err.println("Error: " + errs.next()); } System.err.println(); System.err.println("Usage: java " + Manual_HelloWorld_8.class.getName()); System.err.println(" " + jsap.getUsage()); System.err.println(); System.err.println(jsap.getHelp()); System.exit(1); } String[] names = config.getStringArray("name"); String[] languages = config.getStringArray("verbose"); if (languages.length == 0) languages = new String[] {"en"}; for (int lang = 0; lang < languages.length; ++lang) { for (int i = 0; i < config.getInt("count"); ++i) { for (int j = 0; j < names.length; ++j) { System.out.println((config.getBoolean("verbose") ? getVerboseHello(languages[lang]) : "Hi") + ", " + names[j] + "!"); } } } } private static String getVerboseHello(String language) { if ((language == null) || "en".equalsIgnoreCase(language)) { return("Hello"); } else if ("de".equalsIgnoreCase(language)) { return("Guten Tag"); } else { return("(Barely audible grunt)"); } }
[mlamb@morbo]$ java com.martiansoftware.jsap.examples.Manual_HelloWorld_8 -n 2 --verbose Zoidberg Hello, Zoidberg! Hello, Zoidberg! [mlamb@morbo]$ java com.martiansoftware.jsap.examples.Manual_HelloWorld_8 --verbose:de Farnsworth Guten Tag, Farnsworth! [mlamb@morbo]$ java com.martiansoftware.jsap.examples.Manual_HelloWorld_8 -v:de,en Branigan Guten Tag, Branigan! Hello, Branigan! [mlamb@morbo]$ java com.martiansoftware.jsap.examples.Manual_HelloWorld_8 Horrible_Gelatanous_Blob Hi, Horrible_Gelatanous_Blob!