Apache Commons CLI লাইব্রেরি ব্যবহার করে কমান্ড-লাইন আর্গুমেন্টগুলির প্রোসেসিং এবং ভ্যালিডেশন করা খুবই সহজ। এই লাইব্রেরি Required এবং Optional আর্গুমেন্ট ভ্যালিডেশন প্রদান করে, যা নিশ্চিত করে যে ইউজারের প্রদান করা আর্গুমেন্টগুলো সঠিক এবং পূর্ণ হয়েছে। এখানে আমরা দেখব কিভাবে Required (অবশ্যই প্রয়োজনীয়) এবং Optional (ঐচ্ছিক) আর্গুমেন্টগুলির ভ্যালিডেশন করা যায় এবং সঠিক ইনপুট নিশ্চিত করা যায়।
১. Required Arguments Validation
Required Arguments হল এমন আর্গুমেন্টগুলো, যেগুলি ইউজারকে কমান্ড-লাইন থেকে প্রদান করতেই হবে। যদি ইউজার এই আর্গুমেন্টগুলি প্রদান না করেন, তবে অ্যাপ্লিকেশনটি একটি ত্রুটি বার্তা দেখাবে এবং সাহায্য মেসেজ প্রদর্শন করবে।
উদাহরণ:
ধরা যাক, আমাদের একটি অ্যাপ্লিকেশন তৈরি করা হচ্ছে, যেখানে ইউজারকে একটি ইনপুট ফাইলের নাম এবং একটি আউটপুট ফাইল নাম প্রদান করতে হবে। ইনপুট ফাইলটি একটি Required Argument।
import org.apache.commons.cli.*;
public class RequiredArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
options.addOption(outputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// ইনপুট ফাইল নাম গ্রহণ
String input = cmd.getOptionValue("f");
System.out.println("Input file: " + input);
// আউটপুট ফাইল নাম গ্রহণ (যদি দেওয়া থাকে)
if (cmd.hasOption("o")) {
String output = cmd.getOptionValue("o");
System.out.println("Output file: " + output);
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("RequiredArgumentValidation", options);
}
}
}
ব্যাখ্যা:
setRequired(true): ইনপুট ফাইল অপশনটি Required করা হয়েছে, অর্থাৎ এই অপশনটি অবশ্যই ইউজারকে প্রদান করতে হবে।HelpFormatter: যদি-fঅপশন প্রদান না করা হয়, তবে সাহায্য মেসেজ প্রদর্শিত হবে।
আউটপুট:
- যদি আপনি
-fঅপশন না দেন:
java RequiredArgumentValidation
আউটপুট:
Error: Missing required option: -f
এখানে -f অপশন না দেওয়ার কারণে একটি ত্রুটি বার্তা প্রদর্শিত হবে এবং সাহায্য মেসেজ দেখানো হবে।
২. Optional Arguments Validation
Optional Arguments হল সেই আর্গুমেন্টগুলো, যেগুলি ইউজার চাইলে দিতে পারে, তবে তা দেওয়া বাধ্যতামূলক নয়। যদিও ইউজার এটি প্রদান না করলেও অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করতে পারে, আপনি চাইলে এগুলোর জন্য কিছু ভ্যালিডেশন প্রয়োগ করতে পারেন।
উদাহরণ:
ধরা যাক, আমরা একটি অ্যাপ্লিকেশন তৈরি করেছি, যেখানে ইউজার একটি ইনপুট ফাইলের নাম (Required) এবং একটি আউটপুট ফাইলের নাম (Optional) প্রদান করতে পারে। তবে, যদি আউটপুট ফাইলের নাম প্রদান করা হয়, তবে তার একটি বৈধ ফাইল এক্সটেনশন থাকতে হবে (যেমন .txt অথবা .csv)।
import org.apache.commons.cli.*;
public class OptionalArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
options.addOption(outputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// ইনপুট ফাইল নাম গ্রহণ
String input = cmd.getOptionValue("f");
System.out.println("Input file: " + input);
// আউটপুট ফাইল নাম গ্রহণ (যদি দেওয়া থাকে)
if (cmd.hasOption("o")) {
String output = cmd.getOptionValue("o");
System.out.println("Output file: " + output);
// আউটপুট ফাইল এক্সটেনশন ভ্যালিডেশন
if (!output.endsWith(".txt") && !output.endsWith(".csv")) {
System.err.println("Error: Output file must be .txt or .csv");
return;
}
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionalArgumentValidation", options);
}
}
}
ব্যাখ্যা:
setRequired(true): ইনপুট ফাইলটি Required আর্গুমেন্ট হিসেবে চিহ্নিত করা হয়েছে, এবং আউটপুট ফাইলটি Optional আর্গুমেন্ট হিসেবে চিহ্নিত।- Output File Validation: আউটপুট ফাইলের নামের এক্সটেনশন যদি
.txtঅথবা.csvনা হয়, তবে একটি ত্রুটি বার্তা প্রদর্শিত হবে।
আউটপুট:
- যদি আউটপুট ফাইল
.txtবা.csvএক্সটেনশনের বাইরে কিছু দেওয়া হয়:
java OptionalArgumentValidation -f input.txt -o output.pdf
আউটপুট:
Input file: input.txt
Output file: output.pdf
Error: Output file must be .txt or .csv
- যদি আউটপুট ফাইল সঠিক এক্সটেনশনসহ প্রদান করা হয়:
java OptionalArgumentValidation -f input.txt -o output.csv
আউটপুট:
Input file: input.txt
Output file: output.csv
৩. Combined Example (Required এবং Optional Arguments Validation)
এখানে আমরা একটি কেস দেখাব যেখানে Required এবং Optional আর্গুমেন্ট দুটি একসাথে ভ্যালিডেট করা হচ্ছে। -f অপশন অবশ্যই প্রদান করতে হবে এবং -o অপশনটি যদি প্রদান করা হয়, তবে তার সঠিক এক্সটেনশন থাকতে হবে।
import org.apache.commons.cli.*;
public class CombinedArgumentValidation {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// ইনপুট ফাইল অপশন (Required)
Option inputFile = new Option("f", "file", true, "Input file path");
inputFile.setRequired(true); // এটি একটি Required অপশন
options.addOption(inputFile);
// আউটপুট ফাইল অপশন (Optional)
Option outputFile = new Option("o", "output", true, "Output file path");
options.addOption(outputFile);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// ইনপুট ফাইল নাম গ্রহণ
String input = cmd.getOptionValue("f");
System.out.println("Input file: " + input);
// আউটপুট ফাইল নাম গ্রহণ (যদি দেওয়া থাকে)
if (cmd.hasOption("o")) {
String output = cmd.getOptionValue("o");
System.out.println("Output file: " + output);
// আউটপুট ফাইল এক্সটেনশন ভ্যালিডেশন
if (!output.endsWith(".txt") && !output.endsWith(".csv")) {
System.err.println("Error: Output file must be .txt or .csv");
return;
}
} else {
System.out.println("No output file specified.");
}
} catch (ParseException e) {
// যদি Required আর্গুমেন্ট না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CombinedArgumentValidation", options);
}
}
}
সারাংশ
Apache Commons CLI ব্যবহার করে আপনি Required এবং Optional আর্গুমেন্টের ভ্যালিডেশন খুব সহজে করতে পারেন। Required আর্গুমেন্টগুলি নিশ্চিত করে যে ইউজার অবশ্যই সেই আর্গুমেন্ট প্রদান করবেন, এবং Optional আর্গুমেন্টের ক্ষেত্রে আপনি অতিরিক্ত শর্ত প্রয়োগ করতে পারেন, যেমন একটি নির্দিষ্ট ফাইল এক্সটেনশন অথবা একটি কাস্টম ভ্যালিডেশন। এটি ইউজারের ইনপুটকে সঠিকভাবে যাচাই করতে সাহায্য করে এবং অ্যাপ্লিকেশনটির কার্যকারিতা উন্নত করে।
Read more