BeanUtils এর মাধ্যমে Date প্রপার্টি ম্যানেজ করা

Date Handling এবং Custom Converters (তারিখ এবং কাস্টম কনভার্টার) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

301

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;
    }
}

ব্যাখ্যা:

  1. Date টাইপ প্রপার্টি: dob প্রপার্টি হল Date টাইপের।
  2. 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;
    }
}

ব্যাখ্যা:

  1. dobString: এখানে একটি String প্রপার্টি ব্যবহার করা হয়েছে, যা Date টাইপে কনভার্ট হবে।
  2. SimpleDateFormat: dobString থেকে Date টাইপে কনভার্ট করার জন্য SimpleDateFormat ব্যবহার করা হয়েছে।
  3. 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 তৈরি করে টাইপ কনভার্সন বা ম্যানিপুলেশন সম্পন্ন করতে পারেন।
Content added || updated By
Promotion

Are you sure to start over?

Loading...