net.sf.saffron.util
Class OptionsList

java.lang.Object
  |
  +--net.sf.saffron.util.OptionsList

public class OptionsList
extends Object

Command-line option parser.

For example, given the options

Short name Long name Type Default Anonymous
v verbose Boolean true false
f   String   true
c count Number   false

and the command line

-v count=5 Foo.txt
the parser will set verbose = true, count = 5, and file = Foo.txt.

Options can generally be specified using flag syntax (for example -v or -count 5) or property synax (for example verbose=true or count=5).

Boolean options do not have a value following the flag. -v means the same as verbose=true, and +v means the same as verbose=false.

One of the options in a list can be anonymous. Arguments which are not flagged with an option name are assumed to be for this option.
Defining options

You first define what options are available. Options all implement interface OptionsList.Option. You can use one of the built-in option types (OptionsList.StringOption, OptionsList.NumberOption, OptionsList.BooleanOption, OptionsList.EnumeratedOption) or write one of your own.
Parsing options

Once you have defined the options, you can parse an argument list by calling parse(java.lang.String[]).

There are two ways of handling options. By default, when you parse an array of command-line parameters, the values of those parameters are stored in the options themselves. Alternatively, you can specify a handler.

Since:
Sep 4, 2003
Version:
$Id: //open/saffron/src/net/sf/saffron/util/OptionsList.java#7 $
Author:
Julian Hyde

Nested Class Summary
 class OptionsList.BasicOptionHandler
           
static class OptionsList.BooleanOption
           
static class OptionsList.EnumeratedOption
           
private static class OptionsList.Group
           
static class OptionsList.NumberOption
           
static class OptionsList.Option
          Definition of a command-line option, including its short and long names, description, default value, and whether it is mandatory.
(package private) static interface OptionsList.OptionHandler
          Handles the event of setting options.
static class OptionsList.StringOption
           
 
Field Summary
private  ArrayList optionGroups_
           
private  ArrayList options_
           
 
Constructor Summary
OptionsList()
          Creates an options list with no options.
OptionsList(OptionsList.Option[] options)
          Creates an options list with an array of options.
 
Method Summary
 void add(OptionsList.Option option)
           
 void constrain(OptionsList.Option[] options, int minCount, int maxCount)
          Tells the options list that the given options are mutually exclusive.
 void parse(String[] args)
           
 OptionsList.Option[] toArray()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

optionGroups_

private final ArrayList optionGroups_

options_

private final ArrayList options_
Constructor Detail

OptionsList

public OptionsList()
Creates an options list with no options.


OptionsList

public OptionsList(OptionsList.Option[] options)
Creates an options list with an array of options.

Method Detail

add

public void add(OptionsList.Option option)

constrain

public void constrain(OptionsList.Option[] options,
                      int minCount,
                      int maxCount)
Tells the options list that the given options are mutually exclusive. This means that at most one of the given options can be specified.

To create a set mutually exclusive options, specify minCount = 0 or 1, maxCount = 1. To create a set of mutually inclusive options, specify minCount = 1, maxCount = -1.

Parameters:
options - List of mutually exclusive options
minCount - Minimum number of these options which must be specified.
maxCount - Maximum number of these options which must be specified.
Pre-condition:
None of the options must be mandatory.

parse

public void parse(String[] args)

toArray

public OptionsList.Option[] toArray()

SourceForge.net_Logo