//package org.mbari.util;
import java.lang.reflect.Method;
/**
* @author brian
*/
public class BeanUtilities {
/**
* Retrieve a value from a property using
*
* @param obj The object who's property you want to fetch
* @param property The property name
* @param defaultValue A default value to be returned if either a) The property is
* not found or b) if the property is found but the value is null
* @return THe value of the property
*/
public static T getProperty(Object obj, String property, T defaultValue) {
T returnValue = (T) getProperty(obj, property);
if (returnValue == null) {
returnValue = defaultValue;
}
return returnValue;
}
/**
* Fetch a property from an object. For example of you wanted to get the foo
* property on a bar object you would normally call {@code bar.getFoo()}. This
* method lets you call it like {@code BeanUtil.getProperty(bar, "foo")}
* @param obj The object who's property you want to fetch
* @param property The property name
* @return The value of the property or null if it does not exist.
*/
public static Object getProperty(Object obj, String property) {
Object returnValue = null;
try {
String methodName = "get" + property.substring(0, 1).toUpperCase() + property.substring(1, property.length());
Class clazz = obj.getClass();
Method method = clazz.getMethod(methodName, null);
returnValue = method.invoke(obj, null);
}
catch (Exception e) {
// Do nothing, we'll return the default value
}
return returnValue;
}
}