BeanUtilsBean ক্লাস কাস্টমাইজ করা

BeanUtilsBean Customization (বিনইউটিলস বিন কাস্টমাইজেশন) - জাভা বীনইউটিলস (Java BeanUtils) - Computer Programming

299

Apache Commons BeanUtils লাইব্রেরি BeanUtilsBean ক্লাস প্রদান করে, যা BeanUtils এর জন্য একটি কাস্টম কনফিগারেশন এবং প্রপার্টি কপি, টাইপ কনভার্সন, বা টাইপ কাস্টমাইজেশনের কাজ করতে ব্যবহৃত হয়। সাধারণত, BeanUtilsBean ক্লাসটি BeanUtils এর কার্যকারিতা কাস্টমাইজ করার জন্য ব্যবহৃত হয়, যেখানে ডিফল্ট কনফিগারেশন উপযুক্ত না হলে কাস্টম কনভার্সন বা প্রপার্টি কপি প্রক্রিয়া করা যায়।

BeanUtilsBean এর মাধ্যমে আপনি কাস্টম কনভার্সন (custom conversion) এবং কাস্টম কপি (custom copy) প্রক্রিয়া সংজ্ঞায়িত করতে পারেন।

1. BeanUtilsBean ক্লাসের ভূমিকা

BeanUtilsBean ক্লাসটি মূলত BeanUtils লাইব্রেরির জন্য কাস্টম কনফিগারেশন দেয়। আপনি যদি কিছু নির্দিষ্ট প্রপার্টির জন্য কাস্টম কনভার্সন বা কাস্টম কপি প্রক্রিয়া করতে চান, তবে BeanUtilsBean এর মাধ্যমে এটি করা সম্ভব।

  • Customization: সাধারণত, BeanUtilsBean কাস্টম PropertyEditor বা Converter ব্যবহারের জন্য কাস্টম কনফিগারেশন সমর্থন করে।
  • এক্সটেনশন: আপনি যদি BeanUtils এর কিছু ডিফল্ট কার্যকারিতা পরিবর্তন করতে চান, তবে BeanUtilsBean ক্লাস এক্সটেন্ড (extend) করে সেই কার্যকারিতা কাস্টমাইজ করা সম্ভব।

2. BeanUtilsBean কাস্টমাইজ করার প্রক্রিয়া

আপনি BeanUtilsBean ক্লাস কাস্টমাইজ করার জন্য সাধারণত নিচের পদক্ষেপগুলি অনুসরণ করতে পারেন:

১. Custom Converter তৈরি করা

BeanUtils এর ডিফল্ট কনভার্সন পদ্ধতি যদি আপনার প্রয়োজন মেটাতে না পারে, তবে আপনি একটি কাস্টম Converter তৈরি করতে পারেন।

import org.apache.commons.beanutils.Converter;

public class MyCustomConverter implements Converter {
    @Override
    public Object convert(Class<?> type, Object value) {
        if (value == null) {
            return null;
        }

        if (value instanceof String) {
            String strValue = (String) value;
            // Custom conversion logic (e.g., trimming a string)
            return strValue.trim();
        }

        return value;
    }
}

২. BeanUtilsBean ক্লাস কাস্টমাইজ করা

এখন, BeanUtilsBean ক্লাস কাস্টমাইজ করতে হবে যাতে আমরা আমাদের কাস্টম কনভার্সন লজিক ব্যবহার করতে পারি।

import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.converters.DateConverter;
import org.apache.commons.beanutils.converters.IntegerConverter;

public class CustomBeanUtilsBean extends BeanUtilsBean {
    public CustomBeanUtilsBean() {
        // Registering custom converter for String to Integer conversion
        super();
        // Register your custom converter here
        this.getConvertUtils().register(new MyCustomConverter(), String.class);
    }

    @Override
    public void copyProperty(Object bean, String name, Object value) throws IllegalAccessException, InvocationTargetException {
        // Custom logic to copy properties
        super.copyProperty(bean, name, value);
    }
}

৩. BeanUtilsBean এর ব্যবহার

এখন আপনি কাস্টম BeanUtilsBean ব্যবহার করতে পারেন। আপনার তৈরি করা CustomBeanUtilsBean এর মাধ্যমে প্রপার্টি কপি এবং কাস্টম কনভার্সন করা হবে।

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.BeanUtilsBean;

public class CustomBeanUtilsExample {
    public static void main(String[] args) {
        try {
            // Create CustomBeanUtilsBean instance
            CustomBeanUtilsBean customBeanUtilsBean = new CustomBeanUtilsBean();

            // Source object
            Person person1 = new Person(" John Doe ", 30);

            // Target object
            Person person2 = new Person();

            // Copy properties with custom converter logic
            customBeanUtilsBean.copyProperties(person2, person1);

            // Output the result
            System.out.println("Name: " + person2.getName()); // Output: John Doe (Trimmed)
            System.out.println("Age: " + person2.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;
    }

    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: এখানে আমরা একটি কাস্টম Converter তৈরি করেছি যা String কে ট্রিম করতে পারে।
  • Custom BeanUtilsBean: CustomBeanUtilsBean ক্লাস তৈরি করা হয়েছে যাতে আমরা কাস্টম কনভার্সন লজিক ব্যবহার করতে পারি।
  • Using copyProperties(): copyProperties() মেথড ব্যবহার করে কাস্টম কনভার্সন লজিক এবং প্রপার্টি কপি করা হচ্ছে।

3. BeanUtilsBean কাস্টমাইজেশনের আরও উদাহরণ

১. কাস্টম টাইপ কনভার্সন

ধরা যাক, আপনি একটি String প্রপার্টি থেকে Integer প্রপার্টিতে কাস্টম কনভার্সন করতে চান। আপনি এর জন্য কাস্টম কনভার্টার তৈরি করতে পারেন।

public class IntegerConverter implements Converter {
    @Override
    public Object convert(Class<?> type, Object value) {
        if (value instanceof String) {
            return Integer.parseInt((String) value);
        }
        return value;
    }
}

এটি ব্যবহার করতে, BeanUtilsBean কাস্টমাইজ করুন এবং কাস্টম কনভার্টার রেজিস্টার করুন।

২. কাস্টম টাইপ কনভার্সন এবং প্রপার্টি কপি

এখন, BeanUtilsBean কাস্টমাইজ করা হয়েছে যাতে কাস্টম টাইপ কনভার্সন এবং প্রপার্টি কপি করা যায়।

public class CustomBeanUtilsExample {
    public static void main(String[] args) {
        try {
            // Create CustomBeanUtilsBean instance
            CustomBeanUtilsBean customBeanUtilsBean = new CustomBeanUtilsBean();

            // Source object
            Person person1 = new Person("123", "John Doe");

            // Target object
            Person person2 = new Person();

            // Copy properties with custom converter logic
            customBeanUtilsBean.copyProperties(person2, person1);

            // Output the result
            System.out.println("ID: " + person2.getId()); // Output: 123 (String to Integer converted)
            System.out.println("Name: " + person2.getName()); // Output: John Doe
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • Custom IntegerConverter: String থেকে Integer কনভার্ট করতে কাস্টম কনভার্টার তৈরি করা হয়েছে।
  • CustomBeanUtilsBean: CustomBeanUtilsBean কাস্টমাইজ করা হয়েছে যাতে কাস্টম কনভার্সন ব্যবহার করা হয়।

সারাংশ

BeanUtilsBean ক্লাসটি Apache Commons BeanUtils লাইব্রেরির জন্য কাস্টম কনফিগারেশন প্রদান করে। আপনি এটি ব্যবহার করে property copy এবং type conversion কাস্টমাইজ করতে পারেন। Custom converter তৈরি করে এবং BeanUtilsBean কাস্টমাইজ করে আপনি Java Bean-এর প্রপার্টি কপি বা টাইপ কনভার্সন প্রক্রিয়া সম্পূর্ণভাবে কাস্টমাইজ করতে পারবেন।

Content added || updated By
Promotion

Are you sure to start over?

Loading...