Nested এবং Complex Sub-command Structure তৈরি করা

Sub-commands ব্যবস্থাপনা - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

234

Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট পার্সিংয়ের জন্য একটি শক্তিশালী টুল। এর মাধ্যমে আপনি সহজভাবে কমান্ড লাইন আর্গুমেন্ট তৈরি, প্রক্রিয়া, এবং যাচাই করতে পারেন। কখনও কখনও, আপনার অ্যাপ্লিকেশনটির মধ্যে nested (সাব-কমান্ড) এবং complex sub-command structure থাকতে পারে, যেখানে বিভিন্ন কমান্ড একে অপরের মধ্যে অর্ন্তভুক্ত থাকে এবং প্রতিটি সাব-কমান্ডের জন্য আলাদা আলাদা অপশন থাকতে পারে।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Apache Commons CLI ব্যবহার করে nested এবং complex sub-command structure তৈরি করা যায়।


Nested এবং Complex Sub-command Structure এর ধারণা

  1. Nested Commands:
    • Nested Commands হল যখন এক কমান্ডের ভিতরে আরেকটি কমান্ড থাকে। উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনটি যদি ডাটাবেস অ্যাপ্লিকেশন হয়, তবে আপনার কমান্ড হতে পারে database backup বা database restore, যেখানে database হল মূল কমান্ড এবং backup, restore হল সাব-কমান্ড।
  2. Complex Sub-command Structure:
    • Complex sub-command structure হল এমন একটি কমান্ড যেখানে একাধিক স্তরের কমান্ড এবং তাদের নিজস্ব অপশন থাকে। উদাহরণস্বরূপ, user add বা user remove এর মধ্যে আরো সাব-অপশন থাকতে পারে (যেমন user add --role admin), যেখানে user হল মূল কমান্ড এবং add, remove হল সাব-কমান্ড।

Apache Commons CLI তে Nested এবং Complex Sub-command Structure তৈরি

Apache Commons CLI লাইব্রেরি আপনাকে sub-command তৈরি করতে সহায়তা করে, যেখানে প্রতিটি সাব-কমান্ডের জন্য আলাদা আলাদা অপশন নির্ধারণ করা যায়। এটি কমান্ড লাইন আর্গুমেন্টের উপর ভিত্তি করে বিভিন্ন লজিক্যাল ইউনিট (sub-commands) তৈরিতে কার্যকরী।


উদাহরণ: Nested এবং Complex Sub-command Structure

ধরি, আমাদের একটি অ্যাপ্লিকেশন আছে যেখানে user এবং database নামক দুটি প্রধান কমান্ড আছে। এবং প্রতিটি কমান্ডের সাথে কিছু সাব-কমান্ড (যেমন add, remove, backup, restore) এবং কিছু অপশন (যেমন --role, --file) থাকবে।

কোড উদাহরণ:

import org.apache.commons.cli.*;

public class ComplexSubCommandExample {

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

        // 'user' সাব-কমান্ড অপশন
        Options userOptions = new Options();
        userOptions.addOption("add", false, "Add a new user");
        userOptions.addOption("remove", false, "Remove an existing user");
        userOptions.addOption("role", true, "Set user role");

        // 'database' সাব-কমান্ড অপশন
        Options dbOptions = new Options();
        dbOptions.addOption("backup", false, "Backup database");
        dbOptions.addOption("restore", false, "Restore database");

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

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

            // 'user' কমান্ড চেক করা
            if (args.length > 0 && args[0].equals("user")) {
                CommandLine userLine = parser.parse(userOptions, args, true);

                if (userLine.hasOption("add")) {
                    System.out.println("Adding a new user...");
                    if (userLine.hasOption("role")) {
                        System.out.println("Role: " + userLine.getOptionValue("role"));
                    }
                } else if (userLine.hasOption("remove")) {
                    System.out.println("Removing user...");
                }
            }

            // 'database' কমান্ড চেক করা
            else if (args.length > 0 && args[0].equals("database")) {
                CommandLine dbLine = parser.parse(dbOptions, args, true);

                if (dbLine.hasOption("backup")) {
                    System.out.println("Backing up the database...");
                } else if (dbLine.hasOption("restore")) {
                    System.out.println("Restoring the database...");
                }
            } else {
                formatter.printHelp("ComplexSubCommandExample", globalOptions);
            }

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

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

  1. Global Options: এখানে কোনো গ্লোবাল অপশন সংজ্ঞায়িত করা হয়নি, তবে user এবং database সাব-কমান্ড এর জন্য আলাদা আলাদা অপশন তৈরি করা হয়েছে।
  2. user সাব-কমান্ড:
    • user সাব-কমান্ডের জন্য দুটি অপশন add এবং remove তৈরি করা হয়েছে।
    • add অপশনটি একটি নতুন ব্যবহারকারী যোগ করার জন্য এবং remove অপশনটি একটি ব্যবহারকারী মুছে ফেলার জন্য।
    • role অপশনটি ব্যবহারকারীর রোল সেট করার জন্য।
  3. database সাব-কমান্ড:
    • database সাব-কমান্ডের জন্য দুটি অপশন backup এবং restore তৈরি করা হয়েছে, যা ডাটাবেস ব্যাকআপ বা রিস্টোর করতে ব্যবহৃত হবে।
  4. Parse এবং Handle: প্রথমে কোডটি চেক করবে কোন মূল কমান্ড (যেমন user বা database) ইনপুট হয়েছে, এবং তারপর সেই সাব-কমান্ডের অপশনগুলো পার্স করবে।

আউটপুট:

  • user add কমান্ড:

    java ComplexSubCommandExample user add --role admin
    Adding a new user...
    Role: admin
    
  • user remove কমান্ড:

    java ComplexSubCommandExample user remove
    Removing user...
    
  • database backup কমান্ড:

    java ComplexSubCommandExample database backup
    Backing up the database...
    
  • database restore কমান্ড:

    java ComplexSubCommandExample database restore
    Restoring the database...
    

Nested এবং Complex Sub-command Structure এর সুবিধা

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

সারাংশ

Apache Commons CLI লাইব্রেরির মাধ্যমে আপনি nested এবং complex sub-command structure তৈরি করতে পারেন, যেখানে একটি কমান্ডের অধীনে একাধিক সাব-কমান্ড এবং তাদের অপশন থাকতে পারে। এটি আপনাকে আরও উন্নত এবং পরিষ্কার কমান্ড লাইন অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। সাব-কমান্ডের মাধ্যমে অ্যাপ্লিকেশনের ফিচারগুলোকে একত্রিত এবং সুসংগঠিত করা যায়, যা ব্যবহারকারী-বান্ধব এবং ডেভেলপমেন্টে সহজে মেনটেইনযোগ্য হয়।

Content added By
Promotion

Are you sure to start over?

Loading...