Apache Commons CLI লাইব্রেরি দিয়ে আপনি কমান্ড লাইন আর্গুমেন্টের মাধ্যমে অ্যাপ্লিকেশন কনফিগার করতে পারেন। Option Group ব্যবস্থাপনা আপনাকে একাধিক অপশন একসাথে গ্রুপ করে তা পরিচালনা করতে সহায়তা করে, যাতে আপনি নির্দিষ্ট শর্তের অধীনে একাধিক অপশনকে যৌথভাবে ব্যবহার করতে পারেন। এটি বিশেষত তখন ব্যবহৃত হয়, যখন কিছু অপশন একসাথে ব্যবহার করা যাবে না বা নির্দিষ্ট প্যারামিটার নির্দিষ্ট অপশনগুলির সাথে সম্পর্কিত থাকে।
Option Group কী?
Option Group ব্যবস্থাপনা আপনাকে একাধিক অপশনকে একটি গ্রুপের মধ্যে সংযুক্ত করতে দেয়। যদি আপনি একটি অপশন নির্বাচন করেন, তবে অন্য সব অপশন নিষ্ক্রিয় হয়ে যাবে। এর মাধ্যমে আপনি এমন একটি শর্ত তৈরি করতে পারেন যেখানে শুধুমাত্র একটি অপশন ব্যবহার করা যেতে পারে, যাতে অন্যান্য অপশনগুলি ব্লক হয়ে যায়।
Option Group ব্যবস্থাপনা ব্যবহার করার জন্য ধাপসমূহ
- Option Group তৈরি করা – একাধিক অপশনকে একটি গ্রুপের মধ্যে নিয়ে আসা।
- Group Validation – গ্রুপের মধ্যে একাধিক অপশন নির্বাচন করার অনুমতি না দেওয়া।
- CommandLine Parsing – গ্রুপের মাধ্যমে অপশনগুলো যাচাই করা।
Option Group উদাহরণ
ধরা যাক, আমাদের একটি প্রোগ্রাম আছে যেখানে ব্যবহারকারীকে দুটি ধরনের অপশন নির্বাচন করতে বলা হয়েছে:
-vবা--verbose(Verbose Mode)-qবা--quiet(Quiet Mode)
এই দুটি অপশন একসাথে ব্যবহার করা যাবে না। আমাদের এই দুটি অপশন একটি গ্রুপে অন্তর্ভুক্ত করতে হবে, যাতে যদি ব্যবহারকারী একটিকে নির্বাচন করেন, তাহলে অন্যটি অক্ষম হয়ে যায়।
Step 1: Option Group তৈরি করা
import org.apache.commons.cli.*;
public class OptionGroupExample {
public static void main(String[] args) {
// অপশন বিল্ডার তৈরি
Options options = new Options();
// অপশন তৈরি করা
Option verbose = new Option("v", "verbose", false, "Enable verbose mode");
Option quiet = new Option("q", "quiet", false, "Enable quiet mode");
// অপশন গ্রুপ তৈরি করা
OptionGroup group = new OptionGroup();
group.addOption(verbose);
group.addOption(quiet);
group.setRequired(true); // গ্রুপের মধ্যে একটিকে অবশ্যই সিলেক্ট করতে হবে
// অপশন গ্রুপকে Options এ যোগ করা
options.addOptionGroup(group);
// কমান্ড লাইন আর্গুমেন্ট পার্সিং
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// আর্গুমেন্ট যাচাই করা
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled.");
} else if (cmd.hasOption("q")) {
System.out.println("Quiet mode enabled.");
}
} catch (ParseException e) {
System.err.println("Parsing failed. Reason: " + e.getMessage());
}
}
}
Step 2: অপশন গ্রুপের ব্যবহার
এখন এই কোডের মাধ্যমে আমরা একটি OptionGroup তৈরি করেছি, যেখানে দুটি অপশন রয়েছে: -v (Verbose) এবং -q (Quiet)। এগুলো একসাথে ব্যবহার করা যাবে না। যদি ব্যবহারকারী -v অপশনটি নির্বাচন করেন, তবে -q অপশনটি নির্বাচন করা যাবে না এবং উল্টো।
Step 3: অপশন গ্রুপ পার্সিং
এই কোডটি যদি চলানো হয়:
java OptionGroupExample -v
তবে আউটপুট হবে:
Verbose mode enabled.
এবং যদি:
java OptionGroupExample -q
তবে আউটপুট হবে:
Quiet mode enabled.
তবে যদি কেউ দুটি অপশন একসাথে চালানোর চেষ্টা করেন:
java OptionGroupExample -v -q
তবে ParseException ঘটবে এবং নিচের মেসেজটি দেখাবে:
Parsing failed. Reason: Found unrecognized option: -q
Option Group এর বৈশিষ্ট্য
- একটি অপশনকে গ্রুপের মধ্যে অন্তর্ভুক্ত করা: একাধিক অপশনকে একটি গ্রুপের মধ্যে রাখলে গ্রুপের মধ্যে একমাত্র একটি অপশন সিলেক্ট করা যেতে পারে।
- অবশ্যই এক অপশন সিলেক্ট করা: গ্রুপের মধ্যে কমপক্ষে একটি অপশন সিলেক্ট করার জন্য
setRequired(true)ব্যবহার করা যায়। - গ্রুপের মধ্যে একাধিক অপশন নিষ্ক্রিয় করা: একবার একটি অপশন সিলেক্ট করলে অন্যগুলো নিষ্ক্রিয় হয়ে যাবে।
সারাংশ
Apache Commons CLI এর Option Group ব্যবস্থাপনা ব্যবহারকারীদের জন্য শক্তিশালী এবং নমনীয় উপায় প্রদান করে, যা একাধিক অপশনকে একটি গ্রুপের মধ্যে শর্তাবলী ভিত্তিক সংযুক্ত করতে সাহায্য করে। এটি বিশেষত তখন কাজে আসে যখন আপনি চান যে, একটি নির্দিষ্ট শর্তের মধ্যে শুধু একটি অপশন সিলেক্ট করা যাবে এবং অন্যান্য অপশন নিষ্ক্রিয় থাকবে। এটি CLI অ্যাপ্লিকেশনে ব্যবহারকারীদের ইনপুট এবং আর্গুমেন্ট প্রক্রিয়া করা আরও সহজ এবং কাঠামোবদ্ধ করে।
অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) একটি শক্তিশালী লাইব্রেরি যা কমান্ড লাইন আর্গুমেন্টস (Command Line Arguments) প্রক্রিয়াজাতকরণের জন্য ব্যবহৃত হয়। কমান্ড লাইন আর্গুমেন্টস পরিচালনা করার সময় বিভিন্ন ধরনের আর্গুমেন্টের সমন্বয়ে একটি সুসংগঠিত ব্যবস্থা প্রয়োজন। এই ব্যবস্থাপনা এবং আর্গুমেন্টের সংগঠন সহজ করার জন্য Option Group ব্যবহার করা হয়।
Option Group একটি ফিচার যা আপনাকে নির্দিষ্ট অপশনগুলিকে একটি গ্রুপে একত্রিত করার সুযোগ দেয়। এটি ব্যবহার করার মাধ্যমে আপনি কিছু নির্দিষ্ট অপশন একসাথে গ্রুপ করে, তাদের মধ্যে সম্পর্ক স্থাপন এবং একসাথে ব্যবহার করার সুবিধা প্রদান করতে পারেন। একটি গ্রুপে থাকা অপশনগুলির মধ্যে শুধুমাত্র একটি অপশন একসাথে পাস হতে পারে, অর্থাৎ গ্রুপের একাধিক অপশন একসাথে পাস করা সম্ভব নয়।
Option Group কি?
Option Group অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরির একটি বৈশিষ্ট্য যা একই ধরনের অপশনগুলির মধ্যে সম্পর্ক তৈরি করে। এটি একাধিক অপশনকে একটি গ্রুপে একত্রিত করতে সহায়তা করে এবং এই গ্রুপের মধ্যে যেকোনো একটি অপশন পাস করার অনুমতি দেয়। এর মাধ্যমে আপনি একটি নির্দিষ্ট পরিস্থিতিতে একাধিক অপশন ব্যবহারের বিধিনিষেধ নির্ধারণ করতে পারেন।
উদাহরণস্বরূপ, যদি একটি অ্যাপ্লিকেশনে ব্যবহারকারীকে -a অথবা -b অপশন পাস করতে বলা হয়, তবে আপনি এই দুটি অপশনকে একটি Option Group এ গ্রুপ করতে পারেন, যাতে ব্যবহারকারী শুধুমাত্র একটি অপশন নির্বাচন করতে পারে।
Option Group কেন প্রয়োজন?
Option Group ব্যবহার করার জন্য কিছু গুরুত্বপূর্ণ কারণ রয়েছে:
১. একাধিক অপশনের মধ্যে সম্পর্ক তৈরি করা
একটি গ্রুপের মধ্যে সম্পর্কিত অপশনগুলো রাখতে আপনি Option Group ব্যবহার করতে পারেন, যাতে এগুলোর মধ্যে একটি অপশন পাস করা হয় এবং বাকিগুলি নিষিদ্ধ হয়। এটি আপনার অ্যাপ্লিকেশনের ব্যবহারকারী ইন্টারফেসকে আরও সুষম ও ব্যবহারযোগ্য করে তোলে।
২. একাধিক অপশন একসাথে ব্যবহারের উপর বিধিনিষেধ
অনেক সময়, কিছু অপশন একসাথে ব্যবহার করা ঠিক হয় না। উদাহরণস্বরূপ, -verbose এবং -quiet অপশন একই সাথে পাস করা যেতে পারে না, কারণ এগুলি বিপরীত উদ্দেশ্যে কাজ করে। এমন ক্ষেত্রে Option Group ব্যবহার করা হয় যাতে একসাথে এই দুটি অপশন পাস করা না যায়।
৩. হেল্প মেসেজে স্বচ্ছতা বৃদ্ধি
যখন আপনি Option Group ব্যবহার করেন, তখন এটি স্বয়ংক্রিয়ভাবে হেল্প মেসেজে অপশনগুলির মধ্যে সম্পর্ক এবং ব্যবহারের নিয়ম স্পষ্টভাবে প্রদর্শন করে, যা ব্যবহারকারীকে সহজে বুঝতে সাহায্য করে।
অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) এ Option Group ব্যবহার
উদাহরণ: Option Group এর ব্যবহার
import org.apache.commons.cli.*;
public class OptionGroupExample {
public static void main(String[] args) {
// অপশন তৈরি করা
Options options = new Options();
Option optionA = new Option("a", "optionA", false, "Option A");
Option optionB = new Option("b", "optionB", false, "Option B");
// Option Group তৈরি করা
OptionGroup group = new OptionGroup();
group.addOption(optionA);
group.addOption(optionB);
group.setRequired(true); // কমপালসরি
// অপশনগুলো অ্যাড করা
options.addOptionGroup(group);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্টস পার্স করা
cmd = parser.parse(options, args);
// আর্গুমেন্টস থেকে ভ্যালু নেয়া
if (cmd.hasOption("a")) {
System.out.println("Option A selected");
} else if (cmd.hasOption("b")) {
System.out.println("Option B selected");
}
} catch (ParseException e) {
System.out.println("Parsing failed. Reason: " + e.getMessage());
}
}
}
এখানে, Option A এবং Option B দুটি অপশনকে OptionGroup এ রাখা হয়েছে। এর মাধ্যমে একসাথে শুধু একটি অপশন পাস করা যাবে। যদি ব্যবহারকারী দুটি অপশন একসাথে পাস করার চেষ্টা করে, তাহলে একটি ত্রুটি বার্তা দেখানো হবে।
কমান্ড লাইন আর্গুমেন্টস
java OptionGroupExample -a
এই কমান্ডটি সফলভাবে Option A selected মেসেজ প্রিন্ট করবে। তবে যদি আপনি একই সাথে দুটি অপশন পাস করার চেষ্টা করেন:
java OptionGroupExample -a -b
এখন, অ্যাপ্লিকেশনটি একটি ত্রুটি দেখাবে, কারণ গ্রুপে থাকা অপশনগুলির মধ্যে একসাথে একটিই পাস করা যাবে।
সারাংশ
Option Group অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরির একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা কমান্ড লাইন আর্গুমেন্টস পরিচালনা এবং সঠিক আর্গুমেন্ট পাস নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি একাধিক অপশনকে একটি গ্রুপে সংযুক্ত করে এবং এই গ্রুপের মধ্যে শুধুমাত্র একটি অপশন পাস করার অনুমতি দেয়। এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করে এবং একটি সুষম, পরিষ্কার এবং কার্যকরী CLI অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
Apache Commons CLI লাইব্রেরি কমান্ড-লাইন আর্গুমেন্ট হ্যান্ডলিং সহজ এবং কার্যকরী করে তোলে। এর একটি শক্তিশালী বৈশিষ্ট্য হলো Option Group তৈরি এবং ব্যবস্থাপনা, যা আপনাকে একটি নির্দিষ্ট গ্রুপে থাকা অপশনগুলিকে একসাথে পরিচালনা করতে সহায়তা করে। Option Group ব্যবহার করলে আপনি কিছু অপশনকে একত্রিত করতে পারেন এবং নির্দিষ্ট শর্তের অধীনে সেগুলির মধ্যে শুধুমাত্র একটি অপশন নির্বাচন করার জন্য বাধ্য করতে পারেন।
Option Group তৈরি এবং ব্যবস্থাপনা
Option Group এমন একটি কনসেপ্ট যেখানে একাধিক অপশন থাকে, এবং ব্যবহারকারীকে সেগুলোর মধ্যে থেকে একটি অপশন নির্বাচন করতে বাধ্য করা হয়। এর মাধ্যমে আপনি কিছু অপশনকে একত্রিত করতে পারেন, যেমন ইউজারের জন্য "output" অপশনটি ব্যবহার করা বাধ্যতামূলক করতে পারেন, তবে একাধিক আউটপুট ফাইল ফরম্যাট হতে পারে (যেমন .txt, .pdf, .csv)।
১. Maven Dependency:
প্রথমে, আপনার pom.xml ফাইলে Apache Commons CLI যুক্ত করুন:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
২. Option Group তৈরি করা:
আপনার প্রোজেক্টে Option Group তৈরি করতে, প্রথমে কিছু অপশন তৈরি করতে হবে এবং তারপর সেগুলিকে একটি OptionGroup এ যুক্ত করতে হবে। নিচে একটি উদাহরণ দেওয়া হয়েছে যেখানে তিনটি অপশন একত্রিত করা হয়েছে এবং ইউজারকে শুধুমাত্র একটি অপশন নির্বাচন করতে বলা হয়েছে।
উদাহরণ:
import org.apache.commons.cli.*;
public class OptionGroupExample {
public static void main(String[] args) {
// অপশন কনফিগারেশন
Options options = new Options();
// দুটি অপশন তৈরি করা
Option option1 = new Option("t", "text", false, "Text output option");
Option option2 = new Option("p", "pdf", false, "PDF output option");
Option option3 = new Option("c", "csv", false, "CSV output option");
// Option Group তৈরি করা
OptionGroup group = new OptionGroup();
group.addOption(option1);
group.addOption(option2);
group.addOption(option3);
// অপশন গ্রুপের জন্য একাধিক অপশন একত্রিত করা
group.setRequired(true); // গ্রুপ থেকে একটি অপশন নির্বাচন করতেই হবে
options.addOptionGroup(group);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// নির্বাচিত অপশন চেক করা
if (cmd.hasOption("t")) {
System.out.println("Selected Text Output");
} else if (cmd.hasOption("p")) {
System.out.println("Selected PDF Output");
} else if (cmd.hasOption("c")) {
System.out.println("Selected CSV Output");
}
} catch (ParseException e) {
// যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionGroupExample", options);
}
}
}
ব্যাখ্যা:
- OptionGroup: তিনটি অপশন তৈরি করা হয়েছে, যেমন
text,pdf, এবংcsv। এগুলোকে একটি OptionGroup এ যুক্ত করা হয়েছে। - setRequired(true):
OptionGroupএর মধ্যে যেকোনো একটি অপশন অবশ্যই নির্বাচিত হতে হবে। এটি নিশ্চিত করে যে, গ্রুপের একাধিক অপশন থাকতে পারে, তবে ইউজার শুধুমাত্র একটি অপশনই নির্বাচিত করতে পারবেন। - CommandLineParser: এটি অপশনগুলো পার্স করে এবং ইউজারের ইনপুট অনুযায়ী সঠিক অপশন চেক করে।
- HelpFormatter: যদি ইউজার কোনো অপশন সঠিকভাবে প্রদান না করে, তবে
HelpFormatterএর মাধ্যমে সাহায্য মেসেজ প্রদর্শন করা হয়।
আউটপুট:
- যদি আপনি
-tঅপশন প্রদান করেন:
java OptionGroupExample -t
আউটপুট:
Selected Text Output
- যদি আপনি
-pঅপশন প্রদান করেন:
java OptionGroupExample -p
আউটপুট:
Selected PDF Output
- যদি আপনি
-cঅপশন প্রদান করেন:
java OptionGroupExample -c
আউটপুট:
Selected CSV Output
- যদি আপনি একটি অপশনও প্রদান না করেন:
java OptionGroupExample
আউটপুট:
Error: At least one of the options -t, -p, -c must be specified.
এখানে, যদি কোনো অপশন উল্লেখ না করা হয়, তবে সাহায্য মেসেজ প্রদর্শিত হবে এবং একটি অপশন অবশ্যই নির্বাচন করতে হবে।
৩. Option Group এর আরো ব্যবহার
Option Group এর মাধ্যমে আপনি আরও অনেক কাস্টমাইজেশন করতে পারেন। উদাহরণস্বরূপ, আপনি একাধিক অপশন গ্রুপ তৈরি করতে পারেন, যেখানে প্রতিটি গ্রুপে বিভিন্ন ধরনের অপশন থাকতে পারে, এবং প্রতি গ্রুপের মধ্যে এক বা একাধিক অপশন নির্বাচন বাধ্যতামূলক করতে পারেন।
উদাহরণ: একাধিক অপশন গ্রুপের ব্যবহার
import org.apache.commons.cli.*;
public class MultipleOptionGroupsExample {
public static void main(String[] args) {
Options options = new Options();
// প্রথম গ্রুপের অপশন
Option option1 = new Option("t", "text", false, "Text output option");
Option option2 = new Option("p", "pdf", false, "PDF output option");
OptionGroup group1 = new OptionGroup();
group1.addOption(option1);
group1.addOption(option2);
group1.setRequired(true); // প্রথম গ্রুপে একটি অপশন অবশ্যই প্রয়োজন
// দ্বিতীয় গ্রুপের অপশন
Option option3 = new Option("c", "csv", false, "CSV output option");
Option option4 = new Option("x", "xml", false, "XML output option");
OptionGroup group2 = new OptionGroup();
group2.addOption(option3);
group2.addOption(option4);
group2.setRequired(true); // দ্বিতীয় গ্রুপে একটি অপশন অবশ্যই প্রয়োজন
// গ্রুপগুলো অপশন হিসেবে যোগ করা
options.addOptionGroup(group1);
options.addOptionGroup(group2);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্সিং
cmd = parser.parse(options, args);
// প্রথম গ্রুপের অপশন নির্বাচন চেক করা
if (cmd.hasOption("t")) {
System.out.println("Selected Text Output");
} else if (cmd.hasOption("p")) {
System.out.println("Selected PDF Output");
}
// দ্বিতীয় গ্রুপের অপশন নির্বাচন চেক করা
if (cmd.hasOption("c")) {
System.out.println("Selected CSV Output");
} else if (cmd.hasOption("x")) {
System.out.println("Selected XML Output");
}
} catch (ParseException e) {
// যদি আর্গুমেন্টগুলো সঠিকভাবে না দেওয়া হয়
System.err.println("Error: " + e.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("MultipleOptionGroupsExample", options);
}
}
}
আউটপুট:
- যদি আপনি দুটি গ্রুপের অপশন নির্বাচন করেন:
java MultipleOptionGroupsExample -t -c
আউটপুট:
Selected Text Output
Selected CSV Output
সারাংশ
Apache Commons CLI এর মাধ্যমে Option Group তৈরি করা এবং সেগুলির মধ্যে অপশনগুলির ব্যবস্থাপনা করা খুবই সহজ। এটি ব্যবহারকারীকে বিভিন্ন গ্রুপের মধ্যে থেকে একাধিক অপশন নির্বাচন করতে বাধ্য করে এবং এর মাধ্যমে কমান্ড-লাইন অ্যাপ্লিকেশনের জন্য আরও কাস্টমাইজড এবং উন্নত ইনপুট হ্যান্ডলিং নিশ্চিত করে। OptionGroup ব্যবহার করে আপনি অপশনগুলিকে গ্রুপবদ্ধ করে একটি নির্দিষ্ট গ্রুপের মধ্যে সঠিক অপশন নির্বাচিত করতে বাধ্য করতে পারেন।
Apache Commons CLI লাইব্রেরি কমান্ড লাইন অ্যাপ্লিকেশনগুলিতে আর্গুমেন্ট পার্সিং সহজ করে তোলে। এটি কমান্ড লাইন থেকে আর্গুমেন্ট গ্রহণ এবং তাদের প্রক্রিয়াকরণে সহায়তা করে, যাতে ডেভেলপাররা কাস্টমাইজড ইনপুট গ্রহণ করতে পারেন। এ ছাড়া, exclusive এবং inclusive options ধারণাগুলি অত্যন্ত গুরুত্বপূর্ণ যখন একাধিক অপশন ব্যবহার করা হয়।
Exclusive এবং Inclusive Options এর ধারণা
- Exclusive Options:
- Exclusive Options হল এমন অপশন যা একসঙ্গে ব্যবহার করা যাবে না। একাধিক অপশনগুলির মধ্যে একটি নির্বাচন করতে হবে।
- উদাহরণস্বরূপ, আপনি যদি দুটি অপশন (যেমন
-aএবং-b) ব্যবহার করেন, তবে একে অপরের সাথে একসাথে ব্যবহার করা যাবে না; ব্যবহারকারীকে একটিই নির্বাচন করতে হবে। একে mutually exclusive অপশন বলা হয়।
- Inclusive Options:
- Inclusive Options হল এমন অপশন যা একসঙ্গে একাধিক বার ব্যবহার করা যেতে পারে। ব্যবহারকারী একাধিক অপশন একত্রে ব্যবহার করতে পারবেন এবং সেগুলি কোন সমস্যা ছাড়াই একসাথে কাজ করবে।
- উদাহরণস্বরূপ, আপনি যদি একাধিক ফ্ল্যাগ বা আর্গুমেন্ট (
-a,-b,-c) ব্যবহার করতে চান, তবে সেগুলি একসাথে কাজ করবে। এগুলিকে inclusive অপশন বলা হয়।
Apache Commons CLI তে Exclusive এবং Inclusive Options বাস্তবায়ন
এখন, আমরা দেখব কিভাবে Apache Commons CLI লাইব্রেরি ব্যবহার করে exclusive এবং inclusive অপশন বাস্তবায়ন করা যায়।
Exclusive Options উদাহরণ
ধরি, আমাদের একটি অ্যাপ্লিকেশন আছে যা দুটি অপশন গ্রহণ করে:
-aঅপশন এবং-bঅপশন
এই দুটি অপশন একসাথে ব্যবহার করা যাবে না, অর্থাৎ ব্যবহারকারীকে একটি অপশন নির্বাচন করতে হবে।
উদাহরণ: Exclusive Options
import org.apache.commons.cli.*;
public class ExclusiveOptionsExample {
public static void main(String[] args) {
// অপশন তৈরি
Options options = new Options();
options.addOption("a", "optionA", false, "Use option A");
options.addOption("b", "optionB", false, "Use option B");
// পার্সার তৈরি
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
CommandLine line = parser.parse(options, args);
// এক্সক্লুসিভ অপশন চেক করা
if (line.hasOption("a") && line.hasOption("b")) {
System.out.println("Error: You cannot use both -a and -b together.");
} else if (line.hasOption("a")) {
System.out.println("Option A selected");
} else if (line.hasOption("b")) {
System.out.println("Option B selected");
} else {
System.out.println("No options selected");
}
} catch (ParseException exp) {
System.out.println("Error parsing the command line: " + exp.getMessage());
formatter.printHelp("ExclusiveOptionsExample", options);
}
}
}
আউটপুট:
যদি
-aএবং-bএকসাথে ব্যবহার করা হয়:java ExclusiveOptionsExample -a -b Error: You cannot use both -a and -b together.যদি
-aব্যবহার করা হয়:java ExclusiveOptionsExample -a Option A selectedযদি
-bব্যবহার করা হয়:java ExclusiveOptionsExample -b Option B selected
এখানে, -a এবং -b একসাথে ব্যবহার করা যাবে না, এবং ব্যবহারকারীকে একটি অপশন নির্বাচন করতে হবে।
Inclusive Options উদাহরণ
ধরি, আমাদের একটি অ্যাপ্লিকেশন আছে যা multiple অপশন গ্রহণ করে:
-fঅপশন, যা ফাইল পাথ গ্রহণ করবে,-vঅপশন, যা ভার্সন তথ্য প্রদর্শন করবে,-dঅপশন, যা ডিবাগ মোড চালু করবে।
এই তিনটি অপশন একসাথে ব্যবহার করা যেতে পারে, অর্থাৎ, inclusive options হিসাবে তারা একসাথে ব্যবহৃত হতে পারে।
উদাহরণ: Inclusive Options
import org.apache.commons.cli.*;
public class InclusiveOptionsExample {
public static void main(String[] args) {
// অপশন তৈরি
Options options = new Options();
options.addOption("f", "file", true, "Path to the input file");
options.addOption("v", "version", false, "Show version");
options.addOption("d", "debug", false, "Enable debug mode");
// পার্সার তৈরি
CommandLineParser parser = new DefaultParser();
HelpFormatter formatter = new HelpFormatter();
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
CommandLine line = parser.parse(options, args);
// ইনক্লুসিভ অপশন চেক করা
if (line.hasOption("f")) {
System.out.println("File path: " + line.getOptionValue("f"));
}
if (line.hasOption("v")) {
System.out.println("Version 1.0.0");
}
if (line.hasOption("d")) {
System.out.println("Debug mode enabled");
}
} catch (ParseException exp) {
System.out.println("Error parsing the command line: " + exp.getMessage());
formatter.printHelp("InclusiveOptionsExample", options);
}
}
}
আউটপুট:
যদি
-f,-vএবং-dএকসাথে ব্যবহার করা হয়:java InclusiveOptionsExample -f /path/to/file -v -d File path: /path/to/file Version 1.0.0 Debug mode enabledযদি শুধুমাত্র
-fব্যবহার করা হয়:java InclusiveOptionsExample -f /path/to/file File path: /path/to/file
এখানে, multiple options একসাথে ব্যবহার করা যেতে পারে এবং এটি কোনও সমস্যা ছাড়াই কাজ করবে।
Exclusive এবং Inclusive Options এর মধ্যে পার্থক্য
| Feature | Exclusive Options | Inclusive Options |
|---|---|---|
| সংজ্ঞা | একাধিক অপশন একসাথে ব্যবহার করা যাবে না। | একাধিক অপশন একসাথে ব্যবহার করা যেতে পারে। |
| ব্যবহার | একসাথে ব্যবহার করতে পারবেন না, একটি অপশনই নির্বাচন করতে হবে। | একাধিক অপশন একসাথে ব্যবহার করা যাবে। |
| উদাহরণ | -a এবং -b একসাথে ব্যবহার করা যাবে না। | -f, -v, -d একসাথে ব্যবহার করা যেতে পারে। |
| পদ্ধতি | এক্সক্লুসিভ অপশন চেক করতে hasOption() ব্যবহার করা হয়। | একাধিক অপশন একসাথে ব্যবহার করার জন্য getOptionValues() ব্যবহার করা হয়। |
সারাংশ
Apache Commons CLI লাইব্রেরি exclusive এবং inclusive options এর মাধ্যমে কমান্ড লাইন আর্গুমেন্ট হ্যান্ডলিংকে আরও শক্তিশালী এবং ফ্লেক্সিবল করে তোলে। Exclusive options ব্যবহৃত হয় যখন দুটি বা তার বেশি অপশন একসাথে ব্যবহার করা যাবে না, এবং inclusive options ব্যবহৃত হয় যখন একাধিক অপশন একসাথে ব্যবহার করা সম্ভব। Apache Commons CLI ব্যবহার করে এই অপশনগুলোকে খুব সহজে এবং কার্যকরভাবে পরিচালনা করা যায়, যা কমান্ড লাইন অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করতে সহায়ক।
Apache Commons CLI লাইব্রেরি OptionGroup এবং বিকল্পগুলির মধ্যে সম্পর্কিত বিকল্পগুলির সঠিক নির্বাচন নিশ্চিত করার জন্য OptionGroup এর মাধ্যমে ভ্যালিডেশন (validation) পরিচালনা করতে সাহায্য করে। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার অ্যাপ্লিকেশনটি কমান্ড লাইনের মধ্যে কিছু বিকল্প একসাথে নির্বাচন করার ক্ষেত্রে বিধিনিষেধ আরোপ করতে চায়।
OptionGroup ব্যবহার করে আপনি বিভিন্ন বিকল্পগুলির মধ্যে সম্পর্ক তৈরি করতে পারেন, যেমন নির্দিষ্ট বিকল্প একসাথে নির্বাচন করা যাবে না বা একাধিক বিকল্পের মধ্যে শুধুমাত্র একটি নির্বাচন করতে হবে। এই ভ্যালিডেশনটি ব্যবহারকারীর জন্য কমান্ড লাইনে আর্গুমেন্ট প্রক্রিয়াকরণ সহজ এবং ত্রুটিহীন রাখে।
Option Group Validation এর ভূমিকা
Option Group Validation হল এমন একটি প্রক্রিয়া যেখানে একটি গ্রুপের মধ্যে শুধুমাত্র একটি বিকল্প নির্বাচন করা যেতে পারে। এই প্রক্রিয়া আপনার অ্যাপ্লিকেশনটিকে গ্যারান্টি দেয় যে, ব্যবহারকারী যদি দুটি বিকল্প একসাথে প্রদান করেন যা একই গ্রুপে অন্তর্ভুক্ত, তবে এটি একটি ত্রুটি তৈরি করবে।
এটি তখন ব্যবহারী হয়, যখন আপনাকে একই সময়ে দুটি বা তার বেশি বিকল্পের মধ্যে একটির জন্য ব্যবহারকারীকে চয়ন করতে বাধ্য করতে হয়।
OptionGroup ব্যবহার করে Validation
Apache Commons CLI-তে OptionGroup ক্লাস এমন বিকল্পগুলির একটি গ্রুপ তৈরি করতে ব্যবহৃত হয়, যেখানে একটি গ্রুপের মধ্যে শুধুমাত্র একটি বিকল্প নির্বাচন করা যেতে পারে। যদি ব্যবহারকারী একাধিক বিকল্প নির্বাচন করেন, তবে একটি ত্রুটি বার্তা প্রদর্শিত হয়।
উদাহরণ: OptionGroup এর মাধ্যমে Validation
import org.apache.commons.cli.*;
public class OptionGroupValidationExample {
public static void main(String[] args) {
// বিকল্প তৈরি
Options options = new Options();
Option helpOption = new Option("h", "help", false, "Show help");
Option verboseOption = new Option("v", "verbose", false, "Enable verbose output");
Option debugOption = new Option("d", "debug", false, "Enable debug mode");
options.addOption(helpOption);
options.addOption(verboseOption);
options.addOption(debugOption);
// OptionGroup তৈরি
OptionGroup group = new OptionGroup();
group.addOption(verboseOption);
group.addOption(debugOption);
// OptionGroup কে options-এ যোগ করা
options.addOptionGroup(group);
// কমান্ড লাইন পার্সার
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
cmd = parser.parse(options, args);
// --help চেক করা
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("OptionGroupValidationExample", options);
return;
}
// --verbose অথবা --debug চেক করা
if (cmd.hasOption("v")) {
System.out.println("Verbose mode enabled");
} else if (cmd.hasOption("d")) {
System.out.println("Debug mode enabled");
}
} catch (ParseException e) {
System.out.println("Error parsing command line: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- OptionGroup তৈরি:
verboseOptionএবংdebugOptionএকটিOptionGroupতে যোগ করা হয়েছে, অর্থাৎ, ব্যবহারকারী একসাথে এই দুটি বিকল্প নির্বাচন করতে পারবেন না।OptionGroupএর মাধ্যমে একে অপরের সাথে সম্পর্কিত বিকল্পগুলিকে একটি গ্রুপে রাখা হয় এবং একসাথে একটির বেশি নির্বাচন করা যাবে না। - Error Handling: যদি ব্যবহারকারী একই গ্রুপের একাধিক বিকল্প নির্বাচন করেন, তাহলে এটি একটি ত্রুটি তৈরি করবে, এবং এটি ব্যবহারকারীকে সঠিক আর্গুমেন্ট ব্যবহার করার জন্য সহায়ক বার্তা প্রদানের মাধ্যমে সতর্ক করবে।
- Help Command:
--helpআর্গুমেন্ট চেক করা হয়েছে এবং ব্যবহারকারীর জন্য সহায়ক বার্তা প্রদর্শন করা হয়েছে যাতে তারা কীভাবে কমান্ড ব্যবহার করবে তা জানে।
OptionGroup এর ভ্যালিডেশন কেন গুরুত্বপূর্ণ?
- একাধিক বিকল্প নিষিদ্ধ করা: একসাথে একাধিক বিকল্প নির্বাচন নিষিদ্ধ করার মাধ্যমে আপনার অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করার নিশ্চয়তা প্রদান করে। উদাহরণস্বরূপ, যদি
--verboseএবং--debugবিকল্প দুটি একসাথে ব্যবহার করা না যায়, তবে এটি সিস্টেমের মধ্যে কনফ্লিক্ট সৃষ্টি করতে পারে। - সহজ ইন্টারফেস: ব্যবহারকারীদের জন্য একটি স্পষ্ট এবং সহজ CLI (Command Line Interface) প্রদান করে, যেখানে তারা বুঝতে পারে কোন বিকল্পগুলি একে অপরের সাথে সম্পর্কিত এবং কোনগুলি একসাথে ব্যবহার করা যাবে না।
- সহায়ক ত্রুটি বার্তা: যদি কোনো ব্যবহারকারী ভুলভাবে একাধিক বিকল্প নির্বাচন করে, তবে এটি ত্রুটি বার্তা প্রদর্শন করবে, যা তাদের সঠিকভাবে আর্গুমেন্ট প্রদান করতে সহায়তা করবে।
Apache Commons CLI-তে OptionGroup ব্যবহার করে আপনি সম্পর্কিত বিকল্পগুলির মধ্যে কেবল একটি বিকল্প নির্বাচন করার অনুমতি দিতে পারেন, এবং অন্যগুলি নিষিদ্ধ করতে পারেন। এটি OptionGroup Validation নামে পরিচিত, যা আপনার অ্যাপ্লিকেশনকে ডেটা ইন্টিগ্রিটি বজায় রাখতে সাহায্য করে। OptionGroup ব্যবহার করে আপনি একসাথে সম্পর্কিত বিকল্পগুলির মধ্যে সঠিক বিকল্পের নির্বাচনের নিশ্চয়তা দিতে পারেন, যা কমান্ড লাইন অ্যাপ্লিকেশনগুলির জন্য অত্যন্ত কার্যকরী এবং গুরুত্বপূর্ণ।
Read more