Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট প্রসেসিং সহজ করার জন্য ডিজাইন করা হয়েছে। তবে যখন অ্যাপ্লিকেশনটি আরো জটিল হয় এবং আরো সুনির্দিষ্ট আর্গুমেন্ট ম্যানেজমেন্টের প্রয়োজন হয়, তখন Advanced Option Parsing টেকনিকগুলো ব্যবহার করা দরকার। এই গাইডে, আমরা Apache Commons CLI ব্যবহার করে কিভাবে উন্নত অপশন পার্সিং (Advanced Option Parsing) করা যায় তা দেখবো।
Advanced Option Parsing Techniques
- Option with Multiple Values: একাধিক মানের সাথে একটি অপশন ব্যবহার করা।
- Option with Default Value: একটি অপশন সেট না করলে ডিফল্ট মান দেয়া।
- Option with Long and Short Forms: অপশনের জন্য সংক্ষিপ্ত এবং দীর্ঘ দুটি ফর্ম ব্যবহার।
- Required and Optional Option Handling: বিভিন্ন অপশনের মধ্যে কীভাবে Required এবং Optional অপশন ব্যবস্থাপনা করা যায়।
- Argument Validation: আর্গুমেন্টের মানের যাচাই করা।
- Positional Arguments: কমান্ড লাইনে positional আর্গুমেন্ট ব্যবহার করা।
1. Option with Multiple Values
Multiple values সহ একটি অপশন ব্যবহার করার জন্য, আপনি Option এর setArgs(int) মেথড ব্যবহার করতে পারেন। এটি আপনাকে একাধিক আর্গুমেন্ট ধারণ করতে সক্ষম করে।
উদাহরণ: Multiple values সহ অপশন
import org.apache.commons.cli.*;
public class MultipleValuesOptionExample {
public static void main(String[] args) {
Options options = new Options();
// 'files' অপশন তৈরি করা যা একাধিক মান গ্রহণ করবে
Option files = new Option("f", "files", true, "Input files");
files.setArgs(Option.UNLIMITED_VALUES); // একাধিক মান গ্রহণ করার জন্য সেট করা
options.addOption(files);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'files' অপশন থেকে একাধিক মান বের করা
if (cmd.hasOption("files")) {
String[] filesList = cmd.getOptionValues("files");
for (String file : filesList) {
System.out.println("File: " + file);
}
}
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("MultipleValuesOptionExample", options);
}
}
}
উদাহরণ চালানো:
java MultipleValuesOptionExample -f file1.txt file2.txt file3.txt
আউটপুট:
File: file1.txt
File: file2.txt
File: file3.txt
এখানে, -f অপশনটি একাধিক ফাইল নাম গ্রহণ করছে।
2. Option with Default Value
কিছু অপশনের জন্য আপনি ডিফল্ট মান নির্ধারণ করতে পারেন যদি ব্যবহারকারী সেই অপশনটি প্রদান না করে। এটি করার জন্য Option এর setRequired(false) এবং setValueSeparator মেথড ব্যবহার করা যেতে পারে।
উদাহরণ: Default value সহ অপশন
import org.apache.commons.cli.*;
public class DefaultValueOptionExample {
public static void main(String[] args) {
Options options = new Options();
// 'logLevel' অপশন তৈরি করা যা একটি ডিফল্ট মান গ্রহণ করবে
Option logLevel = new Option("l", "logLevel", true, "Set log level");
logLevel.setRequired(false); // এটি Optional অপশন
logLevel.setArgs(1);
logLevel.setArgName("level");
options.addOption(logLevel);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'logLevel' অপশন না দিলে ডিফল্ট মান হবে "INFO"
String logLevelValue = cmd.getOptionValue("logLevel", "INFO");
System.out.println("Log Level: " + logLevelValue);
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("DefaultValueOptionExample", options);
}
}
}
উদাহরণ চালানো:
java DefaultValueOptionExample -l DEBUG
আউটপুট:
Log Level: DEBUG
যদি আপনি -l অপশনটি না দেন, তাহলে ডিফল্ট মান হিসেবে INFO থাকবে।
3. Option with Long and Short Forms
অপশনগুলোকে সংক্ষিপ্ত (Short) এবং দীর্ঘ (Long) ফর্মে ব্যবহার করা যায়। যেমন -f (short) এবং --file (long)।
উদাহরণ: Long এবং Short Forms সহ অপশন
import org.apache.commons.cli.*;
public class LongShortFormsExample {
public static void main(String[] args) {
Options options = new Options();
// 'input' অপশন তৈরি করা যা Short এবং Long দুটি ফর্মেই থাকবে
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true);
options.addOption(input);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন থেকে ফাইল নাম বের করা
System.out.println("Input file: " + cmd.getOptionValue("input"));
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("LongShortFormsExample", options);
}
}
}
উদাহরণ চালানো:
java LongShortFormsExample -i input.txt
অথবা
java LongShortFormsExample --input input.txt
এখানে, আপনি -i বা --input যেকোনো ফর্ম ব্যবহার করতে পারবেন।
4. Required and Optional Option Handling
যখন আপনি Required এবং Optional অপশন ম্যানেজ করতে চান, তখন আপনি setRequired(true) এবং setRequired(false) ব্যবহার করতে পারেন।
উদাহরণ: Required এবং Optional অপশন
import org.apache.commons.cli.*;
public class RequiredOptionalOptionsExample {
public static void main(String[] args) {
Options options = new Options();
// 'input' অপশন যা Required
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true); // এটি Required অপশন
options.addOption(input);
// 'output' অপশন যা Optional
Option output = new Option("o", "output", true, "Output file");
output.setRequired(false); // এটি Optional অপশন
options.addOption(output);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন চেক করা
if (cmd.hasOption("input")) {
System.out.println("Input file: " + cmd.getOptionValue("input"));
}
// 'output' অপশন চেক করা
if (cmd.hasOption("output")) {
System.out.println("Output file: " + cmd.getOptionValue("output"));
}
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("RequiredOptionalOptionsExample", options);
}
}
}
উদাহরণ চালানো:
java RequiredOptionalOptionsExample -i input.txt -o output.txt
এখানে, input অপশনটি required, এবং output অপশনটি optional।
5. Argument Validation
আপনি কমান্ড লাইন আর্গুমেন্টের মান যাচাই করার জন্য Validator ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি চেক করতে পারেন যে একটি ইমেইল ফরম্যাট সঠিক কি না।
উদাহরণ: Argument Validation
import org.apache.commons.cli.*;
public class ArgumentValidationExample {
public static void main(String[] args) {
Options options = new Options();
// 'email' অপশন তৈরি করা
Option email = new Option("e", "email", true, "User email");
email.setRequired(true);
options.addOption(email);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
String emailValue = cmd.getOptionValue("email");
// ইমেইল যাচাই করা
if (!emailValue.contains("@")) {
System.out.println("Invalid email format!");
} else {
System.out.println("Valid email: " + emailValue);
}
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("ArgumentValidationExample", options);
}
}
}
উদাহরণ চালানো:
java ArgumentValidationExample -e invalidEmail.com
এখানে, ইমেইল যাচাই করার জন্য একটি কাস্টম লজিক প্রয়োগ করা হয়েছে।
সারাংশ
Apache Commons CLI দিয়ে Advanced Option Parsing টেকনিক ব্যবহার করা আপনাকে আরও শক্তিশালী এবং নমনীয় কমান্ড লাইন আর্গুমেন্ট পার্সিং করতে সহায়তা করে। আপনি একাধিক মানের অপশন, ডিফল্ট মান, সংক্ষিপ্ত এবং দীর্ঘ ফর্ম, required এবং optional অপশন, আর্গুমেন্ট ভ্যালিডেশন এবং positional আর্গুমেন্ট ব্যবস্থাপনা করতে পারবেন। এগুলি আপনার অ্যাপ্লিকেশনকে আরো শক্তিশালী এবং ব্যবহারকারী বান্ধব করে তুলবে।
Read more