VO与PO之间的转换代码

 
 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 {

    /* (non-Javadoc)
     * @see junit.framework.TestCase#setUp()
     */
    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) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(vo.getPwd());
    }
}

你可能感兴趣的:(apache,bean,JUnit,J#)