Custom CommandLineParser তৈরি করা

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

241

Custom CommandLineParser কি?

Custom CommandLineParser হল এমন একটি কাস্টম ক্লাস বা পদ্ধতি যা Apache Commons CLI লাইব্রেরির মাধ্যমে আপনার প্রোগ্রামে কমান্ড-লাইন আর্গুমেন্ট হ্যান্ডলিং এবং পার্সিং প্রক্রিয়াকে কাস্টমাইজ করে। সাধারণত, Apache Commons CLI তে DefaultParser ক্লাস ব্যবহার করা হয়, যা সরল কমান্ড লাইন আর্গুমেন্ট পার্সিং প্রক্রিয়া সম্পাদন করে। তবে, কিছু পরিস্থিতিতে আপনি যদি আর্গুমেন্ট পার্সিং প্রক্রিয়াকে আপনার বিশেষ প্রয়োজন অনুযায়ী কাস্টমাইজ করতে চান, তবে আপনি একটি Custom CommandLineParser তৈরি করতে পারেন।

এই পদ্ধতির মাধ্যমে আপনি কমান্ড-লাইন আর্গুমেন্টগুলি যেমন কাস্টম ফরম্যাট, ভ্যালিডেশন, কাস্টম হ্যান্ডলিং ইত্যাদি করতে পারবেন।


Custom CommandLineParser তৈরি করার ধাপ

1. CommandLineParser ইন্টারফেস বুঝে নেয়া

Apache Commons CLI লাইব্রেরি CommandLineParser ইন্টারফেস প্রদান করে, যার মাধ্যমে আপনি কাস্টম পার্সিং মেথডগুলি তৈরি করতে পারেন। DefaultParser ক্লাস এই ইন্টারফেসের একটি সাধারণ বাস্তবায়ন, তবে আপনি চাইলে এর কাস্টম সংস্করণ তৈরি করতে পারেন।

CommandLineParser ইন্টারফেসের মেথডগুলি হল:

  • parse(): এই মেথডটি আর্গুমেন্টের তালিকা গ্রহণ করে এবং সেই অনুযায়ী অপশন এবং আর্গুমেন্টগুলিকে পার্স করে।
  • hasOption(): এটি চেক করে যে একটি নির্দিষ্ট অপশন আছে কিনা।
  • getOptionValue(): অপশনের মান ফেরত দেয়।

2. Custom CommandLineParser তৈরি করা

এখন আমরা একটি কাস্টম CommandLineParser তৈরি করব যা আর্গুমেন্টগুলি ভিন্নভাবে পার্স করবে। আমাদের উদাহরণে, আমরা একটি কাস্টম অপশন হ্যান্ডলিং প্রক্রিয়া তৈরি করব, যা আর্গুমেন্টে একটি নির্দিষ্ট ফ্ল্যাগ এবং তার মান থাকতে হবে।

উদাহরণ: Custom CommandLineParser তৈরি করা

import org.apache.commons.cli.*;
import java.util.List;

public class CustomCommandLineParser implements CommandLineParser {

    @Override
    public CommandLine parse(Options options, String[] args) throws ParseException {
        CommandLine commandLine = new DefaultParser().parse(options, args);
        
        // কাস্টম অপশন হ্যান্ডলিং: "file" অপশনে কিছু শর্ত যোগ করা
        if (commandLine.hasOption("f")) {
            String filePath = commandLine.getOptionValue("f");
            if (filePath == null || filePath.isEmpty()) {
                throw new ParseException("File path must be specified with -f option");
            }
        }

        // অন্য কাস্টম চেকিং, যেমন কিছু অপশন বাধ্যতামূলক করা ইত্যাদি
        if (!commandLine.hasOption("v") && !commandLine.hasOption("h")) {
            throw new ParseException("At least one of the options -v or -h should be provided.");
        }

        return commandLine;
    }

    @Override
    public void setStrict() {
        // কোনো কাস্টম আচরণ এখানে যুক্ত করতে পারবেন
    }

    @Override
    public void setLocale(java.util.Locale locale) {
        // লোকাল সেটিংস যদি কাস্টমাইজ করতে চান
    }
}

এখানে, CustomCommandLineParser ক্লাসটি CommandLineParser ইন্টারফেস ইমপ্লিমেন্ট করেছে। আমরা parse() মেথডের মধ্যে কাস্টম আর্গুমেন্ট পার্সিং যুক্ত করেছি, যেখানে:

  1. -f অপশনের জন্য একটি ফাইল পাথ থাকতে হবে, অন্যথায় ত্রুটি নিক্ষেপ করা হবে।
  2. -v বা -h অপশন বাধ্যতামূলক রাখা হয়েছে, যেহেতু দুটি অপশনেই আর্গুমেন্ট থাকা আবশ্যক।

3. Custom CommandLineParser ব্যবহার করা

একবার আপনি কাস্টম CommandLineParser তৈরি করলে, আপনি সেটি ব্যবহার করে কমান্ড লাইন আর্গুমেন্ট পার্স করতে পারেন। এখানে একটি উদাহরণ দেওয়া হলো যেখানে আমরা আমাদের কাস্টম পার্সার ব্যবহার করে অপশনগুলির মান যাচাই করব।

উদাহরণ: Custom CommandLineParser ব্যবহার করা

import org.apache.commons.cli.*;

public class CommandLineApp {
    public static void main(String[] args) {
        // অপশন তৈরি করা
        Options options = new Options();
        options.addOption("f", "file", true, "Specify the file path");
        options.addOption("v", "verbose", false, "Enable verbose output");
        options.addOption("h", "help", false, "Show help");

        // কাস্টম CommandLineParser ব্যবহার করা
        CommandLineParser parser = new CustomCommandLineParser();
        HelpFormatter formatter = new HelpFormatter();

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

            // --file অপশন চেক করা
            if (cmd.hasOption("f")) {
                String filePath = cmd.getOptionValue("f");
                System.out.println("File to process: " + filePath);
            }

            // --verbose অপশন চেক করা
            if (cmd.hasOption("v")) {
                System.out.println("Verbose output enabled");
            }

            // --help অপশন চেক করা
            if (cmd.hasOption("h")) {
                formatter.printHelp("CommandLineApp", options);
            }

        } catch (ParseException e) {
            // যদি কোনো ত্রুটি হয়, হেল্প বার্তা প্রদর্শন করা
            System.out.println("Parsing failed. Reason: " + e.getMessage());
            formatter.printHelp("CommandLineApp", options);
        }
    }
}

এখানে, আমরা আমাদের CustomCommandLineParser ক্লাস ব্যবহার করে আর্গুমেন্ট পার্স করছি এবং কিছু কাস্টম শর্ত (যেমন -f অপশনের জন্য ফাইল পাথ প্রয়োজনীয়তা) যাচাই করছি। যদি আর্গুমেন্ট ভুল থাকে, তাহলে একটি ত্রুটি বার্তা দেখানো হবে।

কমান্ড চালানোর উদাহরণ:

java CommandLineApp -f input.txt -v

এটি আউটপুট করবে:

File to process: input.txt
Verbose output enabled

এবং যদি আপনি -f অপশনটি না দেন বা ভুলভাবে কমান্ড চালান, তাহলে ত্রুটি হবে:

java CommandLineApp -f
Parsing failed. Reason: File path must be specified with -f option
CommandLineApp [options]

Options:
  -f, --file <arg>     Specify the file path
  -v, --verbose        Enable verbose output
  -h, --help           Show help

সারাংশ

Custom CommandLineParser তৈরি করার মাধ্যমে আপনি Apache Commons CLI এর আর্গুমেন্ট পার্সিং প্রক্রিয়াটি কাস্টমাইজ করতে পারেন। এটি আপনাকে বিশেষ শর্ত, কাস্টম ভ্যালিডেশন এবং আর্গুমেন্ট হ্যান্ডলিংয়ের জন্য আরও নিয়ন্ত্রণ প্রদান করে। কাস্টম পার্সারের মাধ্যমে আপনি আর্গুমেন্ট চেক করতে, অপশন বাধ্যতামূলক করতে এবং ব্যবহারকারীর ইনপুট যাচাই করতে সক্ষম হবেন, যা আপনার প্রোগ্রামটির কার্যকারিতা এবং নিরাপত্তা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...