- import java.beans.PropertyDescriptor;
- import java.util.Collection;
-
- import org.apache.commons.beanutils.PropertyUtils;
-
-
-
-
-
- public class CopyUtil {
-
-
-
-
-
-
-
-
- public static Object copyProperties(Object dest, Object orig) {
- if (dest == null || orig == null ) {
- return dest;
- }
-
- PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
- try {
- for ( int i = 0 ; i < destDesc.length; i ++ ) {
- Class destType = destDesc[i].getPropertyType();
- Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
- if (destType != null && destType.equals(origType)
- && ! destType.equals(Class. class )) {
- if ( ! Collection. class .isAssignableFrom(origType)) {
- try {
- Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
- PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
- } catch (Exception ex) {
- }
- }
- }
- }
-
- return dest;
- } catch (Exception ex) {
- throw new CopyException(ex);
-
- }
- }
-
-
-
-
-
-
-
-
-
- public static Object copyProperties(Object dest, Object orig, String[] ignores) {
- if (dest == null || orig == null ) {
- return dest;
- }
-
- PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
- try {
- for ( int i = 0 ; i < destDesc.length; i ++ ) {
- if (contains(ignores, destDesc[i].getName())) {
- continue ;
- }
-
- Class destType = destDesc[i].getPropertyType();
- Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
- if (destType != null && destType.equals(origType)
- && ! destType.equals(Class. class )) {
- if ( ! Collection. class .isAssignableFrom(origType)) {
- Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
- PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
- }
- }
- }
-
- return dest;
- } catch (Exception ex) {
- throw new CopyException(ex);
- }
- }
-
- static boolean contains(String[] ignores, String name) {
- boolean ignored = false ;
- for ( int j = 0 ; ignores != null && j < ignores.length; j ++ ) {
- if (ignores[j].equals(name)) {
- ignored = true ;
- break ;
- }
- }
-
- return ignored;
- }
-
import java.beans.PropertyDescriptor;
import java.util.Collection;
import org.apache.commons.beanutils.PropertyUtils;
/**
* CopyUtil
*/
public class CopyUtil {
/**
* Copy properties of orig to dest
* Exception the Entity and Collection Type
* @param dest
* @param orig
* @return the dest bean
*/
public static Object copyProperties(Object dest, Object orig) {
if (dest == null || orig == null ) {
return dest;
}
PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
try {
for ( int i = 0 ; i < destDesc.length; i ++ ) {
Class destType = destDesc[i].getPropertyType();
Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
if (destType != null && destType.equals(origType)
&& ! destType.equals(Class. class )) {
if ( ! Collection. class .isAssignableFrom(origType)) {
try {
Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
} catch (Exception ex) {
}
}
}
}
return dest;
} catch (Exception ex) {
throw new CopyException(ex);
// return dest;
}
}
/**
* Copy properties of orig to dest
* Exception the Entity and Collection Type
* @param dest
* @param orig
* @param ignores 例如:vo.setUserName copy po.setUserName,应该写UserName
* @return the dest bean
*/
public static Object copyProperties(Object dest, Object orig, String[] ignores) {
if (dest == null || orig == null ) {
return dest;
}
PropertyDescriptor[] destDesc = PropertyUtils.getPropertyDescriptors(dest);
try {
for ( int i = 0 ; i < destDesc.length; i ++ ) {
if (contains(ignores, destDesc[i].getName())) {
continue ;
}
Class destType = destDesc[i].getPropertyType();
Class origType = PropertyUtils.getPropertyType(orig, destDesc[i].getName());
if (destType != null && destType.equals(origType)
&& ! destType.equals(Class. class )) {
if ( ! Collection. class .isAssignableFrom(origType)) {
Object value = PropertyUtils.getProperty(orig, destDesc[i].getName());
PropertyUtils.setProperty(dest, destDesc[i].getName(), value);
}
}
}
return dest;
} catch (Exception ex) {
throw new CopyException(ex);
}
}
static boolean contains(String[] ignores, String name) {
boolean ignored = false ;
for ( int j = 0 ; ignores != null && j < ignores.length; j ++ ) {
if (ignores[j].equals(name)) {
ignored = true ;
break ;
}
}
return ignored;
}
}
- public class PO2VO extends TestCase {
-
-
-
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- public void testPO2VO(){
- TUserBasicVO vo = new TUserBasicVO();
- TUserBasic po = new TUserBasic();
- po.setPwd("111");
- po.setUserName("222");
- String[] a={"Pwd","UserName"};
- try {
- CopyUtil.copyProperties(vo, po,a);
- } catch (Exception e) {
-
- e.printStackTrace();
- }
- System.out.println(vo.getPwd());
- }
- }