Java Beans এবং Apache Commons BeanUtils লাইব্রেরি ব্যবহার করার সময় Date, Number, এবং Complex Types (যেমন, Custom Objects) এর টাইপ কনভার্সন করার প্রয়োজন হয়। BeanUtils এ টাইপ কনভার্সন সাধারণত Converters এর মাধ্যমে করা হয়, যেখানে DateConverter, NumberConverter, এবং Custom Converters ব্যবহার করা হয়।
এই কনভার্সন প্রক্রিয়াটি String থেকে নির্দিষ্ট টাইপে ডেটা কনভার্ট করার জন্য ব্যবহৃত হয়।
Date, Number, এবং Complex Type এর কনভার্টার ব্যবহারের উদাহরণ
1. DateConverter
DateConverter ব্যবহার করা হয় String থেকে Date টাইপে ডেটা কনভার্ট করতে। এটি patterns সেট করার মাধ্যমে বিভিন্ন ফরম্যাটে ডেটা কনভার্ট করতে সাহায্য করে।
উদাহরণ: DateConverter ব্যবহার করে String থেকে Date কনভার্ট করা
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.BeanUtils;
import java.util.Date;
public class DateConverterExample {
public static void main(String[] args) {
try {
// Create a DateConverter instance with custom date formats
DateConverter dateConverter = new DateConverter(null);
dateConverter.setPatterns(new String[]{"yyyy-MM-dd", "MM/dd/yyyy"});
// Register the date converter with BeanUtils
BeanUtils.getConvertUtils().register(dateConverter, Date.class);
// Create a map with a date string
String dateStr = "2024-11-15";
Date convertedDate = (Date) BeanUtils.convert(dateStr, Date.class);
// Output the converted date
System.out.println("Converted Date: " + convertedDate); // Output: Fri Nov 15 00:00:00 UTC 2024
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- এখানে আমরা একটি
DateConverterতৈরি করেছি, যা "yyyy-MM-dd" এবং "MM/dd/yyyy" এই ফরম্যাটে ডেটা কনভার্ট করতে সক্ষম। BeanUtils.convert()ব্যবহার করে, একটি String টাইপের ডেটাকে Date টাইপে কনভার্ট করা হয়েছে।
2. NumberConverter
NumberConverter ব্যবহার করা হয় String থেকে Number (যেমন Integer, Double) টাইপে কনভার্ট করতে। এটি সাধারণত বিভিন্ন সংখ্যার ফরম্যাটের জন্য ব্যবহৃত হয়, যেমন দশমিক সহ সংখ্যা বা বড় সংখ্যার ফরম্যাট।
উদাহরণ: NumberConverter ব্যবহার করে String থেকে Number কনভার্ট করা
import org.apache.commons.beanutils.converters.NumberConverter;
import org.apache.commons.beanutils.BeanUtils;
public class NumberConverterExample {
public static void main(String[] args) {
try {
// Create a NumberConverter instance
NumberConverter numberConverter = new NumberConverter(null);
// Register the NumberConverter with BeanUtils
BeanUtils.getConvertUtils().register(numberConverter, Number.class);
// Convert a String to an Integer
String numberStr = "1234";
Integer convertedNumber = (Integer) BeanUtils.convert(numberStr, Integer.class);
// Output the converted number
System.out.println("Converted Number: " + convertedNumber); // Output: 1234
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- এখানে
NumberConverterব্যবহার করা হয়েছে String টাইপ থেকে Integer কনভার্ট করার জন্য। BeanUtils.convert()মেথড ব্যবহার করে,Stringথেকে Integer টাইপে কনভার্ট করা হয়েছে।
3. Complex Type Converters (Custom Types)
Complex Types কনভার্ট করার জন্য আপনি Custom Converters তৈরি করতে পারেন। যখন একটি Java Bean অন্য Bean ধারণ করে বা একটি কমপ্লেক্স অবজেক্ট থাকে, তখন এই কাস্টম কনভার্টার প্রয়োজন হতে পারে।
উদাহরণ: Complex Type Converters (Custom Bean) কনভার্ট করা
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;
import java.util.HashMap;
public class ComplexTypeConverterExample {
public static void main(String[] args) {
try {
// Create a custom converter for converting String to Person object
BeanUtils.getConvertUtils().register(new Converter() {
public Object convert(Class type, Object value) {
if (value == null) {
return null;
}
String[] data = ((String) value).split(",");
return new Person(data[0], Integer.parseInt(data[1]));
}
}, Person.class);
// Create a Map with String data for Person
Map<String, String> personMap = new HashMap<>();
personMap.put("name", "John");
personMap.put("age", "30");
// Convert Map to Person object using BeanUtils
Person person = new Person();
BeanUtils.populate(person, personMap);
// Output the converted Person object
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Age: " + person.getAge()); // Output: 30
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter and setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}ব্যাখ্যা:
- এখানে একটি custom converter তৈরি করা হয়েছে যা String টাইপের ডেটা (যেমন
"John,30") কে Person অবজেক্টে কনভার্ট করবে। BeanUtils.populate()মেথড ব্যবহার করে, Map থেকে Person অবজেক্ট populate করা হয়েছে, যেখানে কাস্টম কনভার্টার ব্যবহার করা হয়েছে।
সারাংশ
- DateConverter, NumberConverter, এবং Complex Type Converters ব্যবহার করে আপনি সহজেই String থেকে Date, Number, এবং Custom Types (যেমন, Bean) এ ডেটা কনভার্ট করতে পারেন।
- DateConverter এবং NumberConverter মেথড গুলি ডেটা টাইপ কনভার্সনের জন্য ব্যবহৃত হয়।
- Complex Type Converters কাস্টম অবজেক্টের কনভার্সন করতে ব্যবহৃত হয়, যেমন একটি
Stringথেকে একটি কাস্টম Java Bean তৈরি করা।
Read more