ก็เลยมองหา api ที่ช่วย parse argument
Commons CLI ของ jakarta เป็น api ที่ช่วยในการ parse argument
โดยมีวิธีการใช้ดังนี้
- ระบุ Options ที่โปรแกรมเรารับได้
Options opt = new Options();
opt.addOption("d", true, "extract only specific date");
opt.addOption("w", true, "extract only week that contain given date");
opt.addOption("m", true, "extract for specific month,year");
parameter ตัวที่ 2 ที่เรา pass ให้ method addOption ก็คือ การระบุว่า
option ตัวนี้ต้องมี argument ตามมาด้วยหรือไม่
อย่างในตัวอย่างที่เขียนนี้ ผู้ใช้สามารถเรียกใช้โปรแกรมได้ดังนี้program -d yymmdd -w yymmdd -y yymm infile outfile
กรณีที่เราต้องการให้เลือกเฉพาะ option ใด option หนึ่งเท่านั้น
ก็สามารถเขียนได้ดังนี้Options opt = new Options();
OptionGroup grp = new OptionGroup();
grp.addOption(new Option("d", true, "extract only specific date"));
grp.addOption(new Option("w", true, "extract only week that contain given date")
);
grp.addOption(new Option("m", true, "extract for specific month,year"));
opt.addOptionGroup(grp);
ก็คือเราเปลี่ยนไปใช้ Optiongroup ในการ control ไม่ให้มีการเลือก
มากกว่า 1 choice พร้อมๆกัน - ทำการ parse String[] args โดยระบุ parser ซึ่งเลือกได้ 3 แบบคือ BasicParser, GnuParser, PosixParser
PosixParser parser = new PosixParser();
CommandLine cmdline = parser.parse(opt, args); - เลือกใช้งาน argument หรือ option ผ่านทาง method
getOptionValue
หรือgetArgs()
CommandLine cmdline = parser.parse(opt, args);
File inFile = new File(cmdline.getArgs()[0]);
if (cmdline.hasOption("d")) {
Calendar[] ranges = parseDate(cmdline.getOptionValue("d"));
...
}
if (cmdline.hasOption("w")) {
filter.setWeek(parseWeek(cmdline.getOptionValue("w")));
}
No comments:
Post a Comment