Advanced Option Parsing Techniques

Custom Command Line Parsing - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

274

Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্ট প্রসেসিং সহজ করার জন্য ডিজাইন করা হয়েছে। তবে যখন অ্যাপ্লিকেশনটি আরো জটিল হয় এবং আরো সুনির্দিষ্ট আর্গুমেন্ট ম্যানেজমেন্টের প্রয়োজন হয়, তখন Advanced Option Parsing টেকনিকগুলো ব্যবহার করা দরকার। এই গাইডে, আমরা Apache Commons CLI ব্যবহার করে কিভাবে উন্নত অপশন পার্সিং (Advanced Option Parsing) করা যায় তা দেখবো।


Advanced Option Parsing Techniques

  1. Option with Multiple Values: একাধিক মানের সাথে একটি অপশন ব্যবহার করা।
  2. Option with Default Value: একটি অপশন সেট না করলে ডিফল্ট মান দেয়া।
  3. Option with Long and Short Forms: অপশনের জন্য সংক্ষিপ্ত এবং দীর্ঘ দুটি ফর্ম ব্যবহার।
  4. Required and Optional Option Handling: বিভিন্ন অপশনের মধ্যে কীভাবে Required এবং Optional অপশন ব্যবস্থাপনা করা যায়।
  5. Argument Validation: আর্গুমেন্টের মানের যাচাই করা।
  6. 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 আর্গুমেন্ট ব্যবস্থাপনা করতে পারবেন। এগুলি আপনার অ্যাপ্লিকেশনকে আরো শক্তিশালী এবং ব্যবহারকারী বান্ধব করে তুলবে।


Content added By
Promotion

Are you sure to start over?

Loading...