Multiple OptionGroup এর সমন্বয়

Advanced Option এবং Argument হ্যান্ডলিং - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

280

Apache Commons CLI লাইব্রেরি কমান্ড লাইন অ্যাপ্লিকেশনে আর্গুমেন্ট পার্সিং এবং অপশন হ্যান্ডলিংয়ের জন্য খুবই শক্তিশালী একটি টুল। একটি OptionGroup হলো অপশনগুলির একটি গ্রুপ, যেখানে আপনি একটি গ্রুপের মধ্যে থাকা অপশনগুলির মধ্যে শুধুমাত্র একটি নির্বাচন করতে পারবেন।

যখন আপনি Multiple OptionGroups এর সমন্বয় করতে চান, তখন একটি গ্রুপের মধ্যে থাকা একাধিক অপশনকে একসাথে ব্যবহার করা যাবে না, তবে আপনি একাধিক গ্রুপের মধ্যে থাকা অপশনগুলির বিভিন্ন সংমিশ্রণ ব্যবহার করতে পারেন। এই কৌশলটি খুবই কার্যকরী যখন আপনার কমান্ড লাইন অ্যাপ্লিকেশনটিতে বিভিন্ন ধরনের অপশন গ্রুপের প্রয়োজন হয়, যা একে অপরের সাথে সম্পর্কিত হলেও তাদের মধ্যে কিছু সীমাবদ্ধতা থাকতে পারে।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Multiple OptionGroups ব্যবহার করা যায় এবং সেগুলির সমন্বয় কিভাবে করা যায়।


OptionGroup এর ধারণা

OptionGroup হল এমন একটি ধারণা যেখানে আপনি একাধিক অপশন (যেমন -a, -b, -c) সংজ্ঞায়িত করেন এবং ব্যবহারকারীকে সেই গ্রুপের মধ্যে একটিই অপশন নির্বাচন করতে বাধ্য করেন। অর্থাৎ, ব্যবহারকারী যদি একটি অপশন ব্যবহার করেন, তবে অন্য অপশনগুলো ব্যবহার করা যাবে না।

Multiple OptionGroups হলে, আপনি একাধিক গ্রুপ ব্যবহার করতে পারবেন, যেখানে প্রতিটি গ্রুপের মধ্যে শুধুমাত্র একটি অপশন নির্বাচন করা যাবে, কিন্তু একাধিক গ্রুপের অপশন একসাথে ব্যবহার করা যাবে।


Multiple OptionGroup এর উদাহরণ

ধরি, আমাদের একটি অ্যাপ্লিকেশন আছে যেখানে দুটি গ্রুপ রয়েছে:

  1. Action Group: এই গ্রুপের মধ্যে একটি অপশন থাকতে হবে — -start বা -stop
  2. Output Group: এই গ্রুপের মধ্যে একটি অপশন থাকতে হবে — -json বা -xml

আমরা চাই, ব্যবহারকারী একে অপরের সাথে একটি অপশন ব্যবহার করতে পারেন, তবে দুইটি গ্রুপের মধ্যে থেকে একটি অপশন বেছে নিতে হবে।

কোড উদাহরণ:

import org.apache.commons.cli.*;

public class MultipleOptionGroupExample {

    public static void main(String[] args) {
        // অপশন গ্রুপ তৈরি
        Options options = new Options();

        // Action গ্রুপ তৈরি (start বা stop)
        OptionGroup actionGroup = new OptionGroup();
        actionGroup.addOption(new Option("start", false, "Start the application"));
        actionGroup.addOption(new Option("stop", false, "Stop the application"));

        // Output গ্রুপ তৈরি (json বা xml)
        OptionGroup outputGroup = new OptionGroup();
        outputGroup.addOption(new Option("json", false, "Output in JSON format"));
        outputGroup.addOption(new Option("xml", false, "Output in XML format"));

        // অপশন গ্রুপগুলো সংযুক্ত করা
        options.addOptionGroup(actionGroup);
        options.addOptionGroup(outputGroup);

        // পার্সার তৈরি
        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            // কমান্ড লাইন আর্গুমেন্ট পার্স করা
            CommandLine line = parser.parse(options, args);

            // Action গ্রুপ চেক করা
            if (line.hasOption("start")) {
                System.out.println("Application is starting...");
            } else if (line.hasOption("stop")) {
                System.out.println("Application is stopping...");
            } else {
                System.out.println("Error: You must specify either -start or -stop.");
                return;
            }

            // Output গ্রুপ চেক করা
            if (line.hasOption("json")) {
                System.out.println("Output will be in JSON format.");
            } else if (line.hasOption("xml")) {
                System.out.println("Output will be in XML format.");
            } else {
                System.out.println("Error: You must specify either -json or -xml.");
            }

        } catch (ParseException exp) {
            System.out.println("Error parsing the command line: " + exp.getMessage());
            formatter.printHelp("MultipleOptionGroupExample", options);
        }
    }
}

কোডের ব্যাখ্যা:

  1. OptionGroup তৈরি করা হয়েছে দুটি — একটির নাম actionGroup এবং অন্যটির নাম outputGroup
  2. Action Group এর মধ্যে দুটি অপশন রয়েছে — -start এবং -stop
  3. Output Group এর মধ্যে দুটি অপশন রয়েছে — -json এবং -xml
  4. OptionGroup.addOption() মেথড ব্যবহার করে প্রতিটি গ্রুপে অপশন যোগ করা হয়েছে এবং তারপর সেগুলোকে Options অবজেক্টে যুক্ত করা হয়েছে।
  5. কমান্ড লাইন আর্গুমেন্ট পার্স করার পরে, hasOption() মেথড ব্যবহার করে গ্রুপের অপশন চেক করা হচ্ছে। গ্রুপে একটি অপশন থাকতে হবে এবং অন্যটি নির্বাচন করা যাবে না।

আউটপুট:

  • যদি -start এবং -json অপশন দেওয়া হয়:

    java MultipleOptionGroupExample -start -json
    Application is starting...
    Output will be in JSON format.
    
  • যদি -stop এবং -xml অপশন দেওয়া হয়:

    java MultipleOptionGroupExample -stop -xml
    Application is stopping...
    Output will be in XML format.
    
  • যদি একাধিক অপশন একসাথে দেওয়া হয় (যেমন -start -stop), তাহলে এটি ত্রুটি দেখাবে:

    java MultipleOptionGroupExample -start -stop
    Error: You must specify either -start or -stop.
    
  • যদি কোনো অপশন দেওয়া না হয়:

    java MultipleOptionGroupExample
    Error: You must specify either -start or -stop.
    

Multiple OptionGroup এর সুবিধা

  1. বিভিন্ন আর্গুমেন্ট গ্রুপ ব্যবস্থাপনা: যখন আপনার অ্যাপ্লিকেশনটি একাধিক ধরনের ইনপুট গ্রহণ করে, তখন OptionGroup এর মাধ্যমে সেই ইনপুটগুলোকে গ্রুপ করে রাখা সহজ হয়।
  2. সুসংগঠিত এবং পরিষ্কার কমান্ড লাইন: একাধিক অপশন একত্রে না গিয়ে, একে অপরের সঙ্গে সম্পর্কিত অপশনগুলোকে একটি গ্রুপের মধ্যে রাখলে কমান্ড লাইন আর্গুমেন্ট আরো পরিষ্কার হয়।
  3. কমান্ড লাইন ত্রুটি হ্যান্ডলিং: OptionGroup এর মাধ্যমে আপনি সহজেই যাচাই করতে পারেন যে ব্যবহারকারী গ্রুপের মধ্যে একাধিক অপশন ব্যবহার করছেন কিনা এবং সেই অনুযায়ী ত্রুটি বার্তা প্রদান করতে পারেন।

সারাংশ

Apache Commons CLI এর Multiple OptionGroup ব্যবহার করে আপনি সহজেই একাধিক অপশন গ্রুপ তৈরি করতে পারেন, যেখানে প্রতিটি গ্রুপের মধ্যে একটি অপশন থাকতে হবে এবং অন্যান্য অপশন নির্বাচন করা যাবে না। এটি অ্যাপ্লিকেশনটির আর্গুমেন্ট হ্যান্ডলিং আরও সুসংগঠিত এবং ব্যবহারকারী-বান্ধব করে তোলে। OptionGroup ব্যবহার করে আপনি গ্রুপের মধ্যে থাকা অপশনগুলোকে একত্রিত করতে পারেন এবং সেগুলির মধ্যে সঠিক সমন্বয় বজায় রাখতে পারেন, যাতে অ্যাপ্লিকেশনটি আরও শক্তিশালী এবং উন্নত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...