package com.icil.booking.service.util;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import com.icil.fw.logging.ICILLogger;
import com.icil.fw.logging.ICILLoggerFactory; import net.sf.cglib.beans.BeanCopier;
import net.sf.cglib.core.Converter; public class CglibBeanCopierUtils { private static final ICILLogger logger = ICILLoggerFactory
.getInstance(CglibBeanCopierUtils.class); public static Map<String, BeanCopier> beanCopierMap = new HashMap<String, BeanCopier>(); /**
* @Title: copyProperties
* @Description: TODO(bean属性转换)
* @param source
* 资源类
* @param target
* 目标类
* @author yushaojian
* @date 2015年11月25日下午4:56:44
*/
public static void copyProperties(Object source, Object target) {
String beanKey = generateKey(source.getClass(), target.getClass());
BeanCopier copier = null;
if (!beanCopierMap.containsKey(beanKey)) {
copier = BeanCopier.create(source.getClass(), target.getClass(),
true);
beanCopierMap.put(beanKey, copier);
} else {
copier = beanCopierMap.get(beanKey);
}
copier.copy(source, target, new Converter() {
private final Map<String, BeanCopier> bcMap = new HashMap<String, BeanCopier>(); @Override
public Object convert(Object sourcePropVal, Class targetPropClazz,
Object targetSetMethodName) {
/*logger.debug("======>>>>> sourcePropVal " + sourcePropVal
+ "======>>>>>targetPropClazz " + targetPropClazz
+ "======>>>>>targetSetMethodName "
+ targetSetMethodName);*/
/*if (BigDecimal.class.equals(targetPropClazz)) {
BigDecimal bd = null;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
bd = new BigDecimal(sourcePropVal.toString());
bd=bd.setScale(4, BigDecimal.ROUND_HALF_UP);
}
return bd;
} else if (Integer.class.equals(targetPropClazz)) {
Integer value = null;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
value = Integer.parseInt(sourcePropVal.toString());
}
return value;
} else if (Date.class.equals(targetPropClazz)) {
Date date = null;
if(sourcePropVal!=null && !"".equals(sourcePropVal)){
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
try {
date = sdf.parse((String)sourcePropVal);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return date;
}else if (int.class.equals(targetPropClazz)){
int value =0 ;
if (sourcePropVal != null && !"".equals(sourcePropVal)) {
value = Integer.parseInt(sourcePropVal.toString());
}
return value;
}*/
return sourcePropVal;
}
});
} protected static Object convertListGenericType(Object sourcePropVal) {
// TODO Auto-generated method stub
return null;
} private static String generateKey(Class<?> class1, Class<?> class2) {
return class1.toString() + class2.toString();
}
}

最新文章

  1. DDD设计中的Unitwork与DomainEvent如何相容?
  2. MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
  3. BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
  4. ES6新特性:Javascript中的Map和WeakMap对象
  5. leetcode Container With Most Water
  6. StudyFoxCMS-8
  7. Battle Over Cities (25)(DFS、连通图)
  8. [Hadoop源码解读](四)MapReduce篇之Counter相关类
  9. tp集成支付宝担保支付
  10. flink-conf.yaml
  11. Got a packet bigger than‘max_allowed_packet’bytes错误的解决方法
  12. java请求参数转换
  13. MySQL yum 在线与本地包方式安装
  14. nignx知识点总结
  15. Linux基础命令---uniq
  16. PTA 7-50 畅通工程之局部最小花费问题(最小生成树Kruskal)
  17. HDU 6150 Vertex Cover(构造)
  18. innodb 源码分析 --锁
  19. java Activiti6 工作流引擎 websocket 即时聊天 SSM源码 支持手机即时通讯聊天
  20. node后台启动

热门文章

  1. JQuery输入框获取/失去焦点行为
  2. LG3898 [湖南集训]大新闻
  3. test20181016 B君的第二题
  4. element组件知识点总结
  5. ehci及其伴随ohci主机控制器驱动分析
  6. Mac OSX 正确地同时安装Python 2.7 和Python3
  7. Angular 4 父组件调用子组件中的方法
  8. 【数据库】使用JMeter创建数据库(Mysql)测试
  9. MongoDB配置成系统服务(Win)
  10. War包反编译过程