Apache Commons CLI একটি লাইব্রেরি যা কমান্ড লাইন আর্গুমেন্ট প্রোসেসিংয়ের জন্য ব্যবহৃত হয়। অনেক সময় আমাদের কমান্ড লাইন আর্গুমেন্টের সাথে Properties ফাইল বা কনফিগারেশন ব্যবহার করতে হয়। Properties ফাইল ব্যবহার করার মাধ্যমে আমরা অ্যাপ্লিকেশনের কনফিগারেশনগুলো এক্সটার্নালি ম্যানেজ করতে পারি এবং সেটি কমান্ড লাইন আর্গুমেন্টের মাধ্যমে প্রসেসিং করতে পারি।
এই গাইডে, আমরা দেখব কিভাবে Apache Commons CLI এর সাথে Properties ফাইল এবং Command Line Arguments এর সমন্বয় করা যায়।
Properties ফাইল কী?
Properties ফাইল একটি সাধারণ ফাইল যেখানে কনফিগারেশন ডেটা key-value পেয়ার আকারে রাখা হয়। এটি সাধারণত অ্যাপ্লিকেশনের কনফিগারেশন সেটিংস সংরক্ষণের জন্য ব্যবহৃত হয়।
Properties ফাইলের উদাহরণ:
username=admin
password=secret
filePath=/path/to/file
এটি সাধারণত .properties এক্সটেনশনে থাকে এবং Java অ্যাপ্লিকেশনে সহজেই ব্যবহার করা যায়।
Command Line Arguments এবং Properties ফাইলের সমন্বয়
কখনও কখনও আপনাকে কমান্ড লাইন আর্গুমেন্টের সাথে Properties ফাইলের মান ম্যানিপুলেট বা পরিবর্তন করতে হতে পারে। এর মাধ্যমে আপনি ইউজারের দেয়া আর্গুমেন্ট এবং Properties ফাইলের মান নিয়ে কাজ করতে পারবেন। নিচে আমরা দেখাবো কিভাবে Apache Commons CLI এবং Properties ফাইল একসাথে কাজ করে।
ধাপ 1: Maven দিয়ে Apache Commons CLI লাইব্রেরি অন্তর্ভুক্ত করা
প্রথমে pom.xml ফাইলে Apache Commons CLI লাইব্রেরি অন্তর্ভুক্ত করতে হবে।
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-cli</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
ধাপ 2: Properties ফাইল এবং Command Line আর্গুমেন্ট একত্রে ব্যবহার করা
এখন আমরা একটি উদাহরণ তৈরি করব যেখানে Properties ফাইল এবং Command Line Arguments ব্যবহার করা হবে। এখানে, আমরা username এবং filePath কমান্ড লাইন আর্গুমেন্টের মাধ্যমে প্রাপ্ত করব এবং যদি এগুলো Properties ফাইল থেকে পাওয়া না যায়, তাহলে কমান্ড লাইন আর্গুমেন্টগুলো ব্যবহার করা হবে।
Properties ফাইল তৈরি করা
config.properties নামে একটি ফাইল তৈরি করুন:
username=admin
filePath=/default/path
Java কোড উদাহরণ:
import org.apache.commons.cli.*;
import java.io.*;
import java.util.Properties;
public class CLIAndPropertiesExample {
public static void main(String[] args) {
// Options তৈরি করা
Options options = new Options();
// 'username' অপশন তৈরি করা
Option username = new Option("u", "username", true, "Username");
username.setRequired(false); // Optional
options.addOption(username);
// 'filePath' অপশন তৈরি করা
Option filePath = new Option("f", "filePath", true, "File path");
filePath.setRequired(false); // Optional
options.addOption(filePath);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// Properties ফাইল থেকে মান নেয়া
Properties properties = new Properties();
FileInputStream input = new FileInputStream("config.properties");
properties.load(input);
// 'username' কমান্ড লাইন আর্গুমেন্ট বা Properties থেকে নেয়া
String usernameValue = cmd.hasOption("username") ? cmd.getOptionValue("username") : properties.getProperty("username");
System.out.println("Username: " + usernameValue);
// 'filePath' কমান্ড লাইন আর্গুমেন্ট বা Properties থেকে নেয়া
String filePathValue = cmd.hasOption("filePath") ? cmd.getOptionValue("filePath") : properties.getProperty("filePath");
System.out.println("File Path: " + filePathValue);
} catch (ParseException e) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIAndPropertiesExample", options);
} catch (IOException e) {
System.err.println("Error loading properties file: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- CommandLineParser ব্যবহার করে আমরা কমান্ড লাইন আর্গুমেন্ট
usernameএবংfilePathপার্স করছি। - যদি command line argument প্রদান করা না হয়, তাহলে Properties ফাইল থেকে সেগুলোর মান নেয়া হচ্ছে।
- Properties.load() মেথড দিয়ে আমরা Properties ফাইল লোড করে মানগুলো পার্স করি।
ধাপ 3: কমান্ড লাইন আর্গুমেন্ট দিয়ে প্রোগ্রাম চালানো
কমান্ড 1: কমান্ড লাইন আর্গুমেন্ট ব্যবহার করে চালানো
java CLIAndPropertiesExample -u user1 -f /path/to/file
আউটপুট:
Username: user1
File Path: /path/to/file
কমান্ড 2: শুধুমাত্র Properties ফাইল ব্যবহার করা
যদি আপনি কোনো কমান্ড লাইন আর্গুমেন্ট না দেন, তবে Properties ফাইল থেকে ডিফল্ট মান আসবে:
java CLIAndPropertiesExample
আউটপুট:
Username: admin
File Path: /default/path
ধাপ 4: Error Handling এবং HelpFormatter
এছাড়া, যদি কোনো আর্গুমেন্ট ভুলভাবে দেয়া হয়, তাহলে HelpFormatter ব্যবহার করে সাহায্য প্রদর্শন করা যায়। এতে ব্যবহারকারীকে সঠিক আর্গুমেন্টের ফর্ম্যাট দেখানো হয়।
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CLIAndPropertiesExample", options);
সারাংশ
Apache Commons CLI এবং Properties ফাইল এর সমন্বয়ে, আপনি কমান্ড লাইন আর্গুমেন্ট এবং কনফিগারেশন ফাইলের মাধ্যমে আপনার অ্যাপ্লিকেশন কনফিগারেশন ম্যানেজমেন্ট খুব সহজেই করতে পারবেন। আপনি যখন কমান্ড লাইন আর্গুমেন্ট বা Properties ফাইল ব্যবহার করেন, তখন Properties ফাইলের মান ডিফল্ট হিসেবে নেয়া হয় এবং ব্যবহারকারী যদি কমান্ড লাইন আর্গুমেন্ট প্রদান করে, তবে সেই মানগুলোও প্রসেস করা যায়।
এই সমন্বয়টি আপনার অ্যাপ্লিকেশনকে আরও ফ্লেক্সিবল এবং কনফিগারেশন প্রবন্ধে কার্যকর করে তোলে।
Read more