package com.horstmann.violet.framework.util;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class PropertyUtils
{
public static void copyProperties(Object fromBean, Object toBean) {
try
{
BeanInfo info = Introspector.getBeanInfo(fromBean.getClass());
PropertyDescriptor[] descriptors = (PropertyDescriptor[]) info.getPropertyDescriptors().clone();
for (int i = 0; i < descriptors.length; i++) {
PropertyDescriptor prop = descriptors[i];
Method getter = prop.getReadMethod();
Method setter = prop.getWriteMethod();
if (getter != null && setter != null) {
Object value = getter.invoke(fromBean, new Object[] {});
setter.invoke(toBean, new Object[] {value});
}
}
}
catch (IntrospectionException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
catch (InvocationTargetException e)
{
e.printStackTrace();
}
}
public static void setProperty(Object bean, String propertyName, Object propertyValue)
{
try
{
BeanInfo info = Introspector.getBeanInfo(bean.getClass());
for (PropertyDescriptor prop : info.getPropertyDescriptors())
{
if (prop.getName().equals(propertyName))
{
Method setter = prop.getWriteMethod();
if (setter != null)
setter.invoke(bean, propertyValue);
return;
}
}
}
catch (IntrospectionException e)
{
e.printStackTrace();
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
catch (InvocationTargetException e)
{
e.printStackTrace();
}
}
}