package com.qxueyou.scc.base.util;
|
|
import java.lang.reflect.InvocationTargetException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.beanutils.PropertyUtils;
|
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.Logger;
|
|
/**
|
* Bean ¹¤¾ßÀà
|
* @author Ïĵ»¢
|
*
|
*/
|
public class QBeanUtils {
|
|
private static final Logger log = LogManager.getLogger("QBeanUtils");
|
|
/**
|
* ½« Bean ת»»³É Map,Ö§³Ö ½« id ת»»Îª id1
|
* @param src bean¶ÔÏó
|
* @param propertyMap ×Ö¶ÎÓ³Éä
|
* @return
|
*/
|
public static final <T> Map<String,Object> bean2Map(T src,Map<String,String> propertyMap) {
|
|
Map<String, Object> result=null;
|
try {
|
result = new HashMap<String,Object>(10);
|
|
for(String key:propertyMap.keySet()) {
|
|
Object value = null;
|
|
if(key.contains(".")) {
|
|
String[] keys = key.split("\\.");
|
value = PropertyUtils.getProperty(PropertyUtils.getProperty(src, keys[0]),keys[1]);
|
|
result.put(propertyMap.get(key), value);
|
}else {
|
value = PropertyUtils.getProperty(src, key);
|
}
|
|
|
if(propertyMap.get(key).contains(",")) {
|
String[] destKeys = propertyMap.get(key).split(",");
|
for(String destKey:destKeys) {
|
result.put(destKey, value);
|
}
|
}else {
|
result.put(propertyMap.get(key), value);
|
}
|
}
|
|
} catch (IllegalAccessException e) {
|
log.error(e,e);
|
} catch (InvocationTargetException e) {
|
log.error(e,e);
|
} catch (NoSuchMethodException e) {
|
log.error(e,e);
|
}
|
|
return result;
|
}
|
|
/**
|
* ½«List<T> ת»»³É List<Map>,Ö§³Ö ½« id ת»»Îª id1
|
* @param src List<T>¶ÔÏó
|
* @param propertyMap ×Ö¶ÎÓ³Éä
|
* @return
|
*/
|
public static final <T> List<Map<String,Object>> listBean2ListMap(List<T> src,Map<String,String> propertyMap) {
|
if(src==null || src.isEmpty()){
|
return new ArrayList<Map<String,Object>>();
|
}
|
|
List<Map<String,Object>> result = new ArrayList<Map<String,Object>>(src.size()*2);
|
|
for(T t:src) {
|
result.add(bean2Map(t,propertyMap));
|
}
|
|
return result;
|
}
|
|
/**
|
* ½«List<T> ת»»³É List<Map>,Ö§³Ö ½« id ת»»Îª id1
|
* @param src List<T>¶ÔÏó
|
* @param propertyMap ×Ö¶ÎÓ³Éä
|
* @return
|
* @throws NoSuchMethodException
|
* @throws InvocationTargetException
|
* @throws IllegalAccessException
|
*/
|
@SuppressWarnings("unchecked")
|
public static final <T,V> List<V> listPropertyVal(List<T> src,String propName){
|
if(src==null || src.size()==0){
|
return null;
|
}
|
List<V> result = new ArrayList<V>(src.size());
|
try{
|
for(T t:src){
|
V value = null;
|
if(propName.contains(".")) {
|
String[] propertyNames = propName.split("\\.");
|
value = (V) PropertyUtils.getProperty(PropertyUtils.getProperty(t, propertyNames[0]),propertyNames[1]);
|
}else {
|
value = (V) PropertyUtils.getProperty(t, propName);
|
}
|
result.add(value);
|
}
|
} catch (IllegalAccessException e) {
|
log.error(e,e);
|
} catch (InvocationTargetException e) {
|
log.error(e,e);
|
} catch (NoSuchMethodException e) {
|
log.error(e,e);
|
}
|
return result;
|
}
|
|
/**
|
* ½«beanÁбíÖеÄÒ»¸öÊôÐÔÖµ×÷ΪKEY£¬ÁíÒ»¸öÊôÐÔÖµ×÷Ϊvalue
|
* @param src
|
* @param propertyKey
|
* @param propertyVal
|
* @return
|
* @throws NoSuchMethodException
|
* @throws InvocationTargetException
|
* @throws IllegalAccessException
|
*/
|
@SuppressWarnings("unchecked")
|
public static final <T,K,V> Map<K,V> mapProperty(List<T> src,String keyProp,String valProp){
|
if(src==null || src.size()==0){
|
return null;
|
}
|
|
Map<K,V> result = new HashMap<K,V>(src.size());
|
|
try{
|
for(T t:src){
|
K key = null;
|
V val = null;
|
if(keyProp.contains(".")) {
|
String[] keyProps = keyProp.split("\\.");
|
key = (K) PropertyUtils.getProperty(PropertyUtils.getProperty(t, keyProps[0]),keyProps[1]);
|
}else {
|
key = (K) PropertyUtils.getProperty(t, keyProp);
|
}
|
|
if(valProp.contains(".")) {
|
String[] valProps = valProp.split("\\.");
|
val = (V) PropertyUtils.getProperty(PropertyUtils.getProperty(t, valProps[0]),valProps[1]);
|
}else {
|
val = (V) PropertyUtils.getProperty(t, valProp);
|
}
|
|
result.put(key, val);
|
}
|
} catch (IllegalAccessException e) {
|
log.error(e,e);
|
} catch (InvocationTargetException e) {
|
log.error(e,e);
|
} catch (NoSuchMethodException e) {
|
log.error(e,e);
|
}
|
return result;
|
}
|
|
|
/**
|
* ½«Object Ìôѡָ¶¨ÊôÐÔת»»³É Map<String,Object>
|
* @param src Ô´Ä¿±ê
|
* @param propertyMap ×Ö¶ÎÓ³Éä
|
* @return
|
*/
|
public static final Map<String,Object> copyPropertiesToMap(Object src,Map<String,String> propertyMap) {
|
|
Map<String,Object> dest = new HashMap<String,Object>(propertyMap.size()*2);
|
|
try {
|
for(String key:propertyMap.keySet()) {
|
dest.put(propertyMap.get(key),PropertyUtils.getProperty(src, key));
|
}
|
} catch (IllegalAccessException e) {
|
log.error(e,e);
|
} catch (InvocationTargetException e) {
|
log.error(e,e);
|
} catch (NoSuchMethodException e) {
|
log.error(e,e);
|
}
|
|
return dest;
|
}
|
|
}
|