Advanced Validation এবং Argument Parsing

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

274

Apache Commons CLI একটি শক্তিশালী লাইব্রেরি যা Java অ্যাপ্লিকেশনগুলিতে কমান্ড লাইন আর্গুমেন্ট পার্সিং এবং অপশন হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়। এটি একটি সহজ এবং কার্যকরী উপায় প্রদান করে, যা আপনাকে কমান্ড লাইন আর্গুমেন্টগুলির মধ্যে ফ্ল্যাগ এবং অপশনগুলো সহজে পার্স করতে সাহায্য করে। তবে, যখন অ্যাপ্লিকেশনটির কমপ্লেক্স ইনপুট প্রক্রিয়া করা হয়, তখন Advanced Validation এবং Argument Parsing বেশ গুরুত্বপূর্ণ হয়ে ওঠে।

এই টিউটোরিয়ালে, আমরা Advanced Validation এবং Argument Parsing কৌশলগুলো দেখে নেব, যা Apache Commons CLI ব্যবহার করে আপনার কমান্ড লাইন অ্যাপ্লিকেশনের ইনপুট যাচাই এবং প্রসেসিংয়ের কাজকে আরও উন্নত ও নিরাপদ করবে।


Advanced Validation Techniques

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


1. Custom Validation for Numeric Inputs

ধরি, আমাদের একটি অ্যাপ্লিকেশন আছে যেখানে ব্যবহারকারী numeric ইনপুট দিতে চায়, যেমন port number বা age। আমরা নিশ্চিত করতে চাই যে ব্যবহারকারী শুধুমাত্র বৈধ সংখ্যার মান প্রবেশ করছেন।

উদাহরণ: Numeric Validation

import org.apache.commons.cli.*;

public class NumericValidationExample {

    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("p", "port", true, "Port number (between 1024 and 65535)");

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("p")) {
                String port = line.getOptionValue("p");

                // Custom validation: Port number must be between 1024 and 65535
                try {
                    int portNumber = Integer.parseInt(port);
                    if (portNumber < 1024 || portNumber > 65535) {
                        System.out.println("Error: Port number must be between 1024 and 65535.");
                        return;
                    }
                    System.out.println("Valid port: " + portNumber);
                } catch (NumberFormatException e) {
                    System.out.println("Error: Port must be a valid integer.");
                }
            }

        } catch (ParseException exp) {
            System.out.println("Error: " + exp.getMessage());
            formatter.printHelp("NumericValidationExample", options);
        }
    }
}

কেন এটি কার্যকরী:

  • Custom validation ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে numeric inputs সঠিকভাবে যাচাই করা হয়েছে, যেমন একটি পোর্ট নাম্বার অবশ্যই 1024 থেকে 65535 এর মধ্যে থাকতে হবে।
  • NumberFormatException এবং Range Validation ব্যবহার করে আপনি ভুল ইনপুটগুলো ধরতে পারেন।

2. Custom Validation for File Paths

কখনও কখনও, আপনার ইনপুটটি ফাইল পাথ হতে পারে, এবং আপনি নিশ্চিত করতে চাইবেন যে এটি একটি বৈধ পাথ, এবং ফাইলটি আসলেই উপস্থিত রয়েছে।

উদাহরণ: File Path Validation

import org.apache.commons.cli.*;
import java.io.File;

public class FilePathValidationExample {

    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("f", "file", true, "Path to the input file");

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("f")) {
                String filePath = line.getOptionValue("f");
                File file = new File(filePath);

                // Custom validation: Check if the file exists and is a file
                if (!file.exists() || !file.isFile()) {
                    System.out.println("Error: The specified file does not exist or is not a valid file.");
                    return;
                }
                System.out.println("Valid file: " + filePath);
            }

        } catch (ParseException exp) {
            System.out.println("Error: " + exp.getMessage());
            formatter.printHelp("FilePathValidationExample", options);
        }
    }
}

কেন এটি কার্যকরী:

  • File validation নিশ্চিত করে যে যে ফাইলটি দেওয়া হয়েছে তা প্রকৃতপক্ষে বিদ্যমান এবং ফাইল ফরম্যাটে রয়েছে।
  • এটি ত্রুটির সম্ভাবনা কমিয়ে অ্যাপ্লিকেশনকে আরও সুরক্ষিত এবং স্থিতিশীল করে।

3. Date Validation

যদি আপনি ডেটা ইনপুট চান (যেমন, date of birth বা event date), তবে আপনি date validation ব্যবহার করতে পারেন যাতে ইউজার সঠিক তারিখ ইনপুট দেন।

উদাহরণ: Date Validation

import org.apache.commons.cli.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateValidationExample {

    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("d", "date", true, "Date in the format dd-MM-yyyy");

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("d")) {
                String dateStr = line.getOptionValue("d");
                SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
                format.setLenient(false);

                // Custom validation: Check if the date is valid
                try {
                    Date date = format.parse(dateStr);
                    System.out.println("Valid date: " + format.format(date));
                } catch (Exception e) {
                    System.out.println("Error: Invalid date format. Please use dd-MM-yyyy.");
                }
            }

        } catch (ParseException exp) {
            System.out.println("Error: " + exp.getMessage());
            formatter.printHelp("DateValidationExample", options);
        }
    }
}

কেন এটি কার্যকরী:

  • Date validation নিশ্চিত করে যে ইউজার সঠিক তারিখ ফরম্যাটে ইনপুট দিচ্ছে।
  • এটি নির্দিষ্ট ফরম্যাটে তারিখ যাচাই করার জন্য SimpleDateFormat ব্যবহার করে।

4. Multiple Arguments for an Option (Handling Lists)

অনেক সময়, আপনার একটি অপশনের জন্য একাধিক মান প্রয়োজন হতে পারে (যেমন, একাধিক ফাইল পাথ বা ব্যবহারকারীর আইডি)। এই ক্ষেত্রে, আপনি Option.UNLIMITED_VALUES ব্যবহার করতে পারেন, যা একাধিক মান গ্রহণ করতে সহায়তা করবে।

উদাহরণ: Multiple Arguments for an Option

import org.apache.commons.cli.*;

public class MultipleArgumentsExample {

    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("i", "ids", true, "List of user IDs")
               .setArgs(Option.UNLIMITED_VALUES);  // Multiple values allowed

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

        try {
            CommandLine line = parser.parse(options, args);

            if (line.hasOption("i")) {
                String[] ids = line.getOptionValues("i");
                System.out.println("User IDs:");
                for (String id : ids) {
                    System.out.println(id);
                }
            }

        } catch (ParseException exp) {
            System.out.println("Error: " + exp.getMessage());
            formatter.printHelp("MultipleArgumentsExample", options);
        }
    }
}

কেন এটি কার্যকরী:

  • Option.UNLIMITED_VALUES ব্যবহার করে আপনি একাধিক মান সংরক্ষণ করতে পারেন, যেমন একাধিক ইউজার আইডি বা ফাইল পাথ, যা একটি অপশনের জন্য সুবিধাজনক।

5. HelpFormatter এর ব্যবহার

HelpFormatter আপনাকে কমান্ড লাইন অপশনগুলির জন্য পরিষ্কার এবং ব্যবহারকারী-বান্ধব হেল্প আউটপুট তৈরি করতে সহায়তা করে। এটি Advanced Validation এবং অপশন পার্সিংয়ের পরে ইউজারকে নির্দেশিকা প্রদান করার জন্য গুরুত্বপূর্ণ।

উদাহরণ: HelpFormatter ব্যবহার

import org.apache.commons.cli.*;

public class HelpFormatterExample {

    public static void main(String[] args) {
        Options options = new Options();
        options.addOption("v", "version", false, "Display version information");
        options.addOption("f", "file", true, "Input file path");

        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("HelpFormatterExample", options);
    }
}

কেন এটি কার্যকরী:

  • HelpFormatter কমান্ড লাইন অ্যাপ্লিকেশনের জন্য খুবই সহায়ক হেল্প পৃষ্ঠা তৈরি করে, যা ব্যবহারকারীকে কমান্ড লাইন অপশন সম্পর্কে সঠিক তথ্য দেয়।
  • এটি আপনার অ্যাপ্লিকেশনকে আরও ব্যবহারকারী-বান্ধব এবং সুনির্দিষ্ট করে তোলে।

সারাংশ

Apache Commons CLI লাইব্রেরি Advanced Validation এবং Argument Parsing জন্য কিছু শক্তিশালী কৌশল সরবরাহ করে। আপনি custom validation ব্যবহার করে ইনপুট যাচাই করতে পারেন, যেমন numeric inputs, file paths, date formats ইত্যাদি। এছাড়াও, multiple values, help formatting, এবং OptionGroup এর মতো বৈশিষ্ট্যগুলি আপনার CLI অ্যাপ্লিকেশনটিকে আরও উন্নত এবং কার্যকরী করে তোলে। এই কৌশলগুলির মাধ্যমে আপনি আপনার কমান্ড লাইন অ্যাপ্লিকেশনের সঠিকতা, নিরাপত্তা এবং ব্যবহারযোগ্যতা নিশ্চিত করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...