// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package cn.com.tisco.upad.common.util.convert; import cn.com.tisco.upad.common.util.ArrayUtilsX; import cn.com.tisco.upad.common.util.validation.Preconditions; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.PropertyUtilsBean; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.BeanWrapperImpl; import org.springframework.beans.BeansException; public final class BeanUtilsX { public BeanUtilsX() { } public static void copyProperty(Object bean, String name, Object value) { try { BeanUtils.copyProperty(bean, name, value); } catch (Exception var4) { throw new RuntimeException("拷贝属性失败!", var4); } } public static void copyProperties(Object source, Object target) { try { BeanUtils.copyProperties(target, source); } catch (Exception var3) { throw new RuntimeException("bean属性复制失败!", var3); } } public static void copyProperties(Object source, Object target, String... excludedProperties) { if(ArrayUtilsX.isEmpty(excludedProperties)) { try { BeanUtils.copyProperties(target, source); } catch (Exception var8) { throw new RuntimeException("Bean属性复制失败!", var8); } } else { Map sourcePropValues = describe(source); String[] arr$ = excludedProperties; int len$ = excludedProperties.length; for(int i$ = 0; i$ < len$; ++i$) { String excludedProp = arr$[i$]; if(sourcePropValues.containsKey(excludedProp)) { sourcePropValues.remove(excludedProp); } } populate(target, sourcePropValues); } } public static void copyProperties(Object source, Object target, boolean copyNull, boolean copyEmpty, String... ignoreProperties) throws BeansException { if(copyNull && copyEmpty) { copyProperties(source, target, ignoreProperties); } else { String[] nullValueProperty = getNullValueProperties(source, !copyNull, !copyEmpty); if(ArrayUtilsX.isEmpty(ignoreProperties) && ArrayUtilsX.isEmpty(nullValueProperty)) { copyProperties(source, target); } else { ignoreProperties = (String[])ArrayUtils.addAll(nullValueProperty, ignoreProperties); copyProperties(source, target, ignoreProperties); } } } private static String[] getNullValueProperties(Object source, boolean includeNull, boolean includeEmpty) { BeanWrapperImpl src = new BeanWrapperImpl(source); PropertyDescriptor[] pds = src.getPropertyDescriptors(); HashSet emptyNames = new HashSet(); PropertyDescriptor[] result = pds; int len$ = pds.length; for(int i$ = 0; i$ < len$; ++i$) { PropertyDescriptor pd = result[i$]; Object srcValue = src.getPropertyValue(pd.getName()); if(includeNull && srcValue == null) { emptyNames.add(pd.getName()); } if(includeEmpty && srcValue instanceof String && StringUtils.isEmpty((String)srcValue)) { emptyNames.add(pd.getName()); } } String[] var11 = new String[emptyNames.size()]; return (String[])emptyNames.toArray(var11); } public static void copySpecificProperties(Object source, Object target, String[] properties) { if(ArrayUtils.isEmpty(properties)) { copyProperties(target, source); } else { Map sourceObjectMap = describe(source); HashMap propValueToCopy = new HashMap(); String[] arr$ = properties; int len$ = properties.length; for(int i$ = 0; i$ < len$; ++i$) { String property = arr$[i$]; if(sourceObjectMap.containsKey(property)) { propValueToCopy.put(property, sourceObjectMap.get(property)); } } populate(target, propValueToCopy); } } public static <T> T cloneBean(T bean) { try { return BeanUtils.cloneBean(bean); } catch (Exception var2) { throw new RuntimeException("bean克隆失败!", var2); } } public static <T> List<T> cloneBeanList(List<T> beans) { ArrayList results = new ArrayList(); Iterator i$ = beans.iterator(); while(i$.hasNext()) { Object bean = i$.next(); results.add(cloneBean(bean)); } return results; } public static Map<String, Object> describe(Object bean) { Map props = null; PropertyUtilsBean pub = new PropertyUtilsBean(); try { props = pub.describe(bean); } catch (Exception var4) { throw new RuntimeException(var4); } props.remove("class"); return props; } public static String[] getArrayProperty(Object bean, String name) { try { return BeanUtils.getArrayProperty(bean, name); } catch (Exception var3) { throw new RuntimeException("获取对象属性值失败!", var3); } } public static String getProperty(Object bean, String name) { try { return BeanUtils.getProperty(bean, name); } catch (Exception var3) { throw new RuntimeException("获取对象属性值失败!", var3); } } public static void populate(Object bean, Map<String, Object> properties) { Preconditions.notNull(bean, "The bean to populate should not be null.", new Object[0]); if(properties != null && properties.size() != 0) { try { Iterator e = properties.keySet().iterator(); while(e.hasNext()) { String propName = (String)e.next(); if(propName != null && !propName.isEmpty()) { PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(bean, propName); if(pd != null) { Method writeMethod = pd.getWriteMethod(); Object propValue = properties.get(pd.getName()); if(writeMethod != null && Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { writeMethod.invoke(bean, new Object[]{ConvertUtils.convert(propValue, pd.getPropertyType())}); } } } } } catch (Exception var7) { throw new IllegalStateException("Failed to populate bean with given map.", var7); } } } public static void setProperty(Object bean, String name, Object value) { try { BeanUtils.setProperty(bean, name, value); } catch (Exception var4) { throw new RuntimeException("设置属性值失败![类:" + bean.getClass().getName() + "][属性名:" + name + "][值:" + value + "]", var4); } } public static Class<?> reflectGetEntity(String className) { try { return Class.forName(className); } catch (Exception var2) { throw new RuntimeException("没有找到类" + className, var2); } } public static Class<?> getPropertyType(Object bean, String property) { try { return (new PropertyUtilsBean()).getPropertyType(bean, property); } catch (Exception var3) { throw new RuntimeException("获取属性类型失败!", var3); } } public static Map<String, Class<?>> getPropTypes(Class<?> clazz) { if(clazz == null) { throw new IllegalArgumentException("clazz must not null!"); } else { HashMap results = new HashMap(); try { BeanInfo e = Introspector.getBeanInfo(clazz); PropertyDescriptor[] arr$ = e.getPropertyDescriptors(); int len$ = arr$.length; for(int i$ = 0; i$ < len$; ++i$) { PropertyDescriptor propertyDescriptor = arr$[i$]; String propName = propertyDescriptor.getName(); if(propertyDescriptor.getReadMethod() != null) { results.put(propName, propertyDescriptor.getPropertyType()); } } results.remove("class"); return results; } catch (IntrospectionException var8) { throw new RuntimeException(var8); } } } public static Set<String> getPropNames(Class<?> clazz) { return getPropTypes(clazz).keySet(); } public static Map<String, Object> getPropValues(Object bean) { if(bean == null) { throw new IllegalArgumentException("Target object must not null!"); } else { HashMap results = new HashMap(); try { BeanInfo e = Introspector.getBeanInfo(bean.getClass()); PropertyDescriptor[] arr$ = e.getPropertyDescriptors(); int len$ = arr$.length; for(int i$ = 0; i$ < len$; ++i$) { PropertyDescriptor propertyDescriptor = arr$[i$]; String propName = propertyDescriptor.getName(); Method readMethod = propertyDescriptor.getReadMethod(); if(readMethod != null) { Object value = readMethod.invoke(bean, new Object[0]); results.put(propName, value); } } results.remove("class"); return results; } catch (Exception var10) { throw new RuntimeException(var10); } } } }