Home > DeveloperSection > Forums > Preserve argument ordering in help sections?
Barbara Jones

Total Post:13

Points:91
Posted on    October-29-2014 12:33 AM

 Java Java 
Ratings:


 1 Reply(s)
 634  View(s)
Rate this:

I have following arguments to add to CLI
-sbx
-CSWConfig
-stripInfo
-modelSources
-catchArchive
-swSupplierName
-modelsSWExchnage

but while displaying help it is showing these options in sorted order(as shown below) which I dont want, I want all the options to be in order as they are added.
-CatchArchive
-CSWConfig
-modelSources
-sbx
-stripInfo
-swSupplierName


private void print_help() {

    String CONST_STR_CLI_INFO = "ercli.exe custzip";

    HelpFormatter formatter = new HelpFormatter();

    formatter.setOptionComparator(new Comparator() {

 

        @Override

        public int compare(Object o1, Object o2) {

            Option op1=(Option) o1;

            Option op2=(Option) o2;

            return //what to do here?

        }

    });

    formatter.printHelp(CONST_STR_CLI_INFO, null, options, "", true);

}



Mark Devid
Mark Devid

Total Post:102

Points:714
Posted on    October-29-2014 12:35 AM

As the Options() class stores the options in Maps internally, it does not keep any ordering. That means you need to provide your own order as you already found out.

To get the ordering, you can put the keys in a List upfront to have an index of required order for each element:

final List<String> optionKeys = new ArrayList<>();

        optionKeys.add("sbx");

        optionKeys.add("CSWConfig");

        optionKeys.add("stripInfo");

        optionKeys.add("modelSources");

        optionKeys.add("catchArchive");

        optionKeys.add("swSupplierName");

        optionKeys.add("modelsSWExchnage");

Then in the Comparator you can compare by index in this list:

@Override

    public int compare(Object o1, Object o2) {

        Option op1=(Option) o1;

        Option op2=(Option) o2;

        return Integer.compare(optionKeys.indexOf(op1.getLongOpt()), optionKeys.indexOf(op1.getLongOpt()));

    }


Modified On Jun-26-2016 11:16:01 PM

Don't want to miss updates? Please click the below button!

Follow MindStick