packagexxx;importorg.dozer.DozerBeanMapper;importorg.dozer.Mapper;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Locale;importjava.util.Map;importjava.util.Set;public classBeansCopy {private static Logger log = LoggerFactory.getLogger(BeansCopy.class);private static Mapper mapper = newDozerBeanMapper();privateObject fromObj;private List>fromList;privateBeansCopy() {
}public staticBeansCopy getInstance() {return newBeansCopy();
}private staticMapper getMapperInstance() {returnmapper;
}publicBeansCopy from(Object fromObj) {this.fromObj =fromObj;return this;
}public BeansCopy from(List>fromList) {this.fromList =fromList;return this;
}public T to(ClasstoClass) {return this.fromObj == null ? null : getMapperInstance().map(this.fromObj, toClass);
}public List toList(ClasstoClass) {if (this.fromList == null) {return null;
}else{
List listTo = newArrayList();
Iterator var3= this.fromList.iterator();while(var3.hasNext()) {
Object myFromObj=var3.next();
T toObj=getMapperInstance().map(myFromObj, toClass);
listTo.add(toObj);
}returnlistTo;
}
}public static voidcopy(Object from, Object to) {
Method[] methods=from.getClass().getMethods();
Map fromObj = newHashMap();
Method[] var4=methods;int var5 =methods.length;for(int var6 = 0; var6 < var5; ++var6) {
Method method=var4[var6];
String m=method.getName();if (m.startsWith("get")) {try{
Object result=method.invoke(from);if (result != null) {
String field= m.substring(3).toLowerCase(Locale.getDefault());
fromObj.put(field, result);
}
}catch (IllegalArgumentException | InvocationTargetException |IllegalAccessException var11) {
log.warn("{}", var11);
}
}
}
Set fields =fromObj.keySet();
Iterator var13=fields.iterator();while(var13.hasNext()) {
String str=(String)var13.next();
invoke(to, str, fromObj.get(str));
}
}public staticObject invoke(Object o, String field, Object value) {
Method[] methods=o.getClass().getMethods();
Method[] var4=methods;int var5 =methods.length;for(int var6 = 0; var6 < var5; ++var6) {
Method method=var4[var6];
String m=method.getName();if (m.startsWith("set")) {
String s= m.substring(3);if(s.equalsIgnoreCase(field)) {try{
method.invoke(o, value);
}catch (IllegalArgumentException | InvocationTargetException |IllegalAccessException var11) {
log.warn("{}", var11);
}break;
}
}
}returno;
}
}