Apache Commons BeanUtils লাইব্রেরি ব্যবহার করে Date প্রপার্টি ম্যানেজ (এনক্যাপসুলেট, কপি বা কনভার্ট) করা সম্ভব। BeanUtils.copyProperties() এবং BeanUtils.setProperty() মেথড ব্যবহার করে আপনি Date টাইপের প্রপার্টি কপি বা সেট করতে পারেন। তবে, Date প্রপার্টি ম্যানিপুলেশন করার সময় কিছু বিশেষ দিকের দিকে নজর দেওয়া প্রয়োজন, যেমন টাইপ কনভার্সন, ফরম্যাটিং এবং null ভ্যালু হ্যান্ডলিং।
1. Date প্রপার্টি ম্যানেজমেন্ট:
BeanUtils-এর মাধ্যমে Date টাইপের প্রপার্টি কপি করার সময় BeanUtils স্বাভাবিকভাবে String এবং Date টাইপের মধ্যে কনভার্সন করে, তবে যদি আপনি কাস্টম ফরম্যাট ব্যবহার করতে চান, তাহলে কিছু অতিরিক্ত কাস্টম লজিক ব্যবহার করতে হতে পারে।
সাধারণভাবে Date প্রপার্টি কপি করার জন্য BeanUtils ব্যবহার করা হয়, তবে এটি String থেকে Date টাইপ কনভার্সনও স্বয়ংক্রিয়ভাবে করতে পারে।
2. BeanUtils এর মাধ্যমে Date প্রপার্টি কপি করা
উদাহরণ ১: সাধারণ Date প্রপার্টি কপি করা
import org.apache.commons.beanutils.BeanUtils;
import java.util.Date;
public class BeanUtilsDateExample {
public static void main(String[] args) {
try {
// Create source object with Date property
Person person1 = new Person("John", new Date());
// Create target object
Person person2 = new Person();
// Copy properties from person1 to person2
BeanUtils.copyProperties(person2, person1);
// Output the copied Date property
System.out.println("Name: " + person2.getName());
System.out.println("Date of Birth: " + person2.getDob()); // Output: Current date
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private Date dob;
public Person() {}
public Person(String name, Date dob) {
this.name = name;
this.dob = dob;
}
// Getter and Setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}ব্যাখ্যা:
Dateটাইপ প্রপার্টি:dobপ্রপার্টি হলDateটাইপের।BeanUtils.copyProperties(): এখানেperson1থেকেperson2তেdobপ্রপার্টি কপি করা হয়েছে। এটি স্বয়ংক্রিয়ভাবেDateটাইপের ডেটা কপি করবে।
আউটপুট:
Name: John
Date of Birth: Fri Nov 17 17:12:22 GMT 2024এখানে Date প্রপার্টি কপি করা হয়েছে। ডেটা টাইপের জন্য কাস্টম কনভার্সন বা ফরম্যাটিংয়ের প্রয়োজন নেই।
3. Date ফরম্যাটিং এবং টাইপ কনভার্সন
যদি আপনি একটি String টাইপের ডেটা (যেমন "2024-11-17") কে Date টাইপে কনভার্ট করতে চান, তবে কিছু অতিরিক্ত কাজ করতে হবে। Apache Commons BeanUtils সরাসরি টাইপ কনভার্সন করার জন্য কাস্টম কনভার্সন ব্যবহার করতে পারে। এতে আপনাকে DateFormat বা SimpleDateFormat ব্যবহার করতে হতে পারে।
উদাহরণ ২: String থেকে Date কনভার্ট করা
import org.apache.commons.beanutils.BeanUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class BeanUtilsDateConversionExample {
public static void main(String[] args) {
try {
// Create source object with String date property
Person person1 = new Person("John", "2024-11-17");
// Create target object
Person person2 = new Person();
// Convert String to Date and copy properties
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = person1.getDobString();
Date date = sdf.parse(dateString); // Convert String to Date
// Set the converted Date to person2
person2.setDob(date);
// Output the copied Date property
System.out.println("Name: " + person2.getName());
System.out.println("Date of Birth: " + person2.getDob()); // Output: Date in Date format
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private Date dob;
private String dobString;
public Person() {}
public Person(String name, String dobString) {
this.name = name;
this.dobString = dobString;
}
// Getter and Setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
public String getDobString() {
return dobString;
}
public void setDobString(String dobString) {
this.dobString = dobString;
}
}ব্যাখ্যা:
dobString: এখানে একটিStringপ্রপার্টি ব্যবহার করা হয়েছে, যা Date টাইপে কনভার্ট হবে।SimpleDateFormat:dobStringথেকেDateটাইপে কনভার্ট করার জন্যSimpleDateFormatব্যবহার করা হয়েছে।setDob(): কনভার্টেডDateপ্রপার্টিperson2-এ সেট করা হয়েছে।
আউটপুট:
Name: John
Date of Birth: Sun Nov 17 00:00:00 GMT 2024এখানে String থেকে Date টাইপে কনভার্সন সফলভাবে সম্পন্ন হয়েছে এবং person2 এর dob প্রপার্টি সেট করা হয়েছে।
4. Date প্রপার্টি ম্যানিপুলেশন (Custom Date Conversion)
যদি আপনি একটি কাস্টম কনভার্সন লজিক ব্যবহার করতে চান (যেমন, Date টাইপের প্রপার্টি মান নির্দিষ্ট ফরম্যাটে রাখতে), তাহলে আপনাকে Apache Commons BeanUtils এর সাথে Custom Converter তৈরি করতে হবে।
উদাহরণ ৩: কাস্টম Date কনভার্সন
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.BeanUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CustomDateConverter implements Converter {
@Override
public Object convert(Class<?> type, Object value) {
if (value == null) {
return null;
}
if (value instanceof String) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.parse((String) value);
} catch (Exception e) {
e.printStackTrace();
}
}
return value;
}
}
public class BeanUtilsCustomDateExample {
public static void main(String[] args) {
try {
// Register custom date converter
BeanUtilsBean beanUtils = new BeanUtilsBean();
beanUtils.getConvertUtils().register(new CustomDateConverter(), Date.class);
// Create source object with String date property
Person person1 = new Person("John", "2024-11-17");
// Create target object
Person person2 = new Person();
// Convert String to Date using custom converter
BeanUtils.copyProperties(person2, person1);
// Output the result
System.out.println("Name: " + person2.getName()); // Output: John
System.out.println("Date of Birth: " + person2.getDob()); // Output: Date in Date format
} catch (Exception e) {
e.printStackTrace();
}
}
}ব্যাখ্যা:
- এখানে
CustomDateConverterতৈরি করা হয়েছে, যা String থেকে Date টাইপে কনভার্ট করবে। BeanUtilsBeanএরgetConvertUtils().register()মেথড ব্যবহার করে কাস্টম কনভার্টার রেজিস্টার করা হয়েছে।BeanUtils.copyProperties()ব্যবহার করেperson1থেকেperson2তে ডেটা কপি করা হয়েছে।
সারাংশ
- Apache Commons BeanUtils এর মাধ্যমে
Dateটাইপের প্রপার্টি কপি এবং টাইপ কনভার্সন করা সম্ভব। SimpleDateFormatবা কাস্টম কনভার্টার ব্যবহার করে String থেকে Date টাইপে কনভার্সন করা যেতে
পারে।
BeanUtils.copyProperties()বাBeanUtils.setProperty()মেথড ব্যবহার করে Date টাইপের প্রপার্টি কপি বা ম্যানিপুলেট করা যায়।- আপনি যদি কাস্টম কনভার্সন করতে চান, তবে একটি কাস্টম Converter তৈরি করে টাইপ কনভার্সন বা ম্যানিপুলেশন সম্পন্ন করতে পারেন।
Read more