HelloWorld_8

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!