Regarding Java Command Line Arguments
I have the below command line arguments set for the program. argument proc is mandatory argument chgval is optional and argument inputfile is optional.
./test.sh -proc mode1 -chval a -inputfile b.csv
I need to modify the below function so that either one of the optional argument should exists in command line arguments along with the mandatory argument proc . If i have the two optional arguments chval , inputfile in the command line along with the mandatory argument proc it's allowing now. I dont want it to happen it should throw an error.
Listed the valid values below and the rest should be an error
./test.sh -proc mode1 -chval a
./test.sh -proc mode1 -inputfile b.csv
./test.sh -proc mode1
 public static Options usage() {
      Option proc = OptionBuilder.withArgName("proc")
                                      .hasArg()
                                      .isRequired()
                                      .withDescription("Process Mode for testing:")
                                      .create("proc");
      Option chgval = OptionBuilder.withArgName("chgval")
                                      .hasArg()
                                      .withDescription("chg eeds to be Processed")
                                      .create("chgval");
      Option inputFile = OptionBuilder.withArgName("inputfile")
                                      .hasArg()
               开发者_Go百科                       .withDescription("Name of the input file")
                                      .create("inputfile");
      Options options = new Options();
      options.addOption(proc);
      options.addOption(chgval);
      options.addOption(inputFile);
      return options;
  }
What needs to be modified?
Dancrumb was correct, for mutually exclusive options you use OptionGroup. Here's how to use it for your case:
Options options = new Options();
OptionGroup group1 = new OptionGroup();
group1.addOption(chgval);
group1.addOption(inputFile);
options.addOption(proc);
options.addOptionGroup(group1);
So now, chgval and inputFile are mutually exclusive options. On an argument like "-proc mode1 -chgval a -inputfile b.csv", it will throw an AlreadySelectedException: "The option inputfile was specified but an option from this group has already been selected: chgval".
By the way, I also noticed the inconsistency in your post between chval and chgval.
If you mean that inputfile and chgval should be mutually exclusive, then you should use OptionGroup
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论