论坛首页 Java版 Hibernate

PO2VO和VO2PO转换层的类.附源码!

浏览 4693 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2004-06-04
下面的代码是我的程序自动生成器根据数据库字段自动生成的.初步试用了一下,没发现问题.

代码中的InitFilter 类是对录入词句自动进行过滤的一个STRUTS插件类. 对录入和输出过滤进行双向控制.(将另文介绍)

package com.yours.admin.map;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.apache.log4j.Logger;
import com.iclass.plugin.InitFiltrate;

import com.yours.admin.web.UserActionForm;
import com.yours.admin.jdo.User;
/**
* <p>Title:VO和PO的转换 </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author 段洪杰
* @version 1.0
*/
public class UserMap {

   private static Logger log = Logger.getLogger(UserMap.class);

  /**
   * @param userActionForm UserActionForm
   * @return User
   */
  public User getUser(UserActionForm userActionForm){
    User user=new User();

    /* 转换 ID(id) */
    try {
      user.setId(userActionForm.getId());
     }
    catch (Exception ex) {
     }

    /* 转换 用户名(name) */
    try {
      user.setName(InitFiltrate.getFiltrate().inExchange(userActionForm.getName()));
     }
    catch (Exception ex) {
     }

    /* 转换 注册名(registername) */
    try {
      user.setRegistername(InitFiltrate.getFiltrate().inExchange(userActionForm.getRegistername()));
     }
    catch (Exception ex) {
     }

    /* 转换 性别(sex) */
    try {
      user.setSex(InitFiltrate.getFiltrate().inExchange(userActionForm.getSex()));
     }
    catch (Exception ex) {
     }

    /* 转换 年龄(age) */
    try {
    user.setAge(Integer.parseInt(userActionForm.getAge()));
    }
    catch (Exception ex) {
     }

    /* 转换 口令(password) */
    try {
      user.setPassword(InitFiltrate.getFiltrate().inExchange(userActionForm.getPassword()));
     }
    catch (Exception ex) {
     }

    /* 转换 地址(address) */
    try {
      user.setAddress(InitFiltrate.getFiltrate().inExchange(userActionForm.getAddress()));
     }
    catch (Exception ex) {
     }

    /* 转换 电话(phone) */
    try {
      user.setPhone(InitFiltrate.getFiltrate().inExchange(userActionForm.getPhone()));
     }
    catch (Exception ex) {
     }

    /* 转换 传真(fax) */
    try {
      user.setFax(InitFiltrate.getFiltrate().inExchange(userActionForm.getFax()));
     }
    catch (Exception ex) {
     }

    /* 转换 电子邮件(email) */
    try {
      user.setEmail(InitFiltrate.getFiltrate().inExchange(userActionForm.getEmail()));
     }
    catch (Exception ex) {
     }

    /* 转换 主页(homepage) */
    try {
      user.setHomepage(InitFiltrate.getFiltrate().inExchange(userActionForm.getHomepage()));
     }
    catch (Exception ex) {
     }

    /* 转换 问题(question) */
    try {
      user.setQuestion(InitFiltrate.getFiltrate().inExchange(userActionForm.getQuestion()));
     }
    catch (Exception ex) {
     }

    /* 转换 答案(answer) */
    try {
      user.setAnswer(InitFiltrate.getFiltrate().inExchange(userActionForm.getAnswer()));
     }
    catch (Exception ex) {
     }

    /* 转换 ip(ip) */
    try {
      user.setIp(userActionForm.getIp());
     }
    catch (Exception ex) {
     }

    /* 转换 组织ID(teamid) */
    try {
      user.setTeamid(InitFiltrate.getFiltrate().inExchange(userActionForm.getTeamid()));
     }
    catch (Exception ex) {
     }

    /* 转换 角色ID(roleid) */
    try {
      user.setRoleid(InitFiltrate.getFiltrate().inExchange(userActionForm.getRoleid()));
     }
    catch (Exception ex) {
     }

    /* 转换 失效期(outdate) */
    DateFormat dateFormatOutdate = new SimpleDateFormat("yyyy-MM-dd");
    Date dateOutdate = null;
    try {
       dateOutdate = dateFormatOutdate.parse(userActionForm.getOutdate());
    user.setOutdate(dateOutdate);
    }
    catch (Exception ex) {
     }

    /* 转换 时间(createdate) */
    DateFormat dateFormatCreatedate = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm");
    Date dateCreatedate = null;
    try {
       dateCreatedate = dateFormatCreatedate.parse(userActionForm.getCreatedate());
       user.setCreatedate(dateCreatedate);
    }
    catch (Exception ex) {
     }

    /* 转换 单位名称(company) */
    try {
      user.setCompany(InitFiltrate.getFiltrate().inExchange(userActionForm.getCompany()));
     }
    catch (Exception ex) {
     }

    /* 转换 部门(office) */
    try {
      user.setOffice(InitFiltrate.getFiltrate().inExchange(userActionForm.getOffice()));
     }
    catch (Exception ex) {
     }

    /* 转换 单位地址(companyaddress) */
    try {
      user.setCompanyaddress(InitFiltrate.getFiltrate().inExchange(userActionForm.getCompanyaddress()));
     }
    catch (Exception ex) {
     }

    /* 转换 职位(position) */
    try {
      user.setPosition(InitFiltrate.getFiltrate().inExchange(userActionForm.getPosition()));
     }
    catch (Exception ex) {
     }

    /* 转换 用户等级(usergrade) */
    try {
      user.setUsergrade(InitFiltrate.getFiltrate().inExchange(userActionForm.getUsergrade()));
     }
    catch (Exception ex) {
     }

    /* 转换 单位等级(businessgrade) */
    try {
      user.setBusinessgrade(InitFiltrate.getFiltrate().inExchange(userActionForm.getBusinessgrade()));
     }
    catch (Exception ex) {
     }

    /* 转换 是否是单位注册(isbusiness) */
    try {
    user.setIsbusiness(Integer.parseInt(userActionForm.getIsbusiness()));
    }
    catch (Exception ex) {
     }

    /* 转换 审核(isauditing) */
    try {
    user.setIsauditing(Integer.parseInt(userActionForm.getIsauditing()));
    }
    catch (Exception ex) {
     }

    /* 转换 说明(message) */
    try {
      user.setMessage(InitFiltrate.getFiltrate().inExchange(userActionForm.getMessage()));
     }
    catch (Exception ex) {
     }


    return user;
  }
  /**
   * @param user User
   * @return UserActionForm
   */
  public UserActionForm getUserActionForm(User user){
    UserActionForm userActionForm=new UserActionForm();

    /* 转换 ID(id) */
    try {
      userActionForm.setId(user.getId());
     }
     catch (Exception ex) {
      }

    /* 转换 用户名(name) */
    try {
      userActionForm.setName(InitFiltrate.getFiltrate().outExchange(user.getName()));
     }
     catch (Exception ex) {
      }

    /* 转换 注册名(registername) */
    try {
      userActionForm.setRegistername(InitFiltrate.getFiltrate().outExchange(user.getRegistername()));
     }
     catch (Exception ex) {
      }

    /* 转换 性别(sex) */
    try {
      userActionForm.setSex(InitFiltrate.getFiltrate().outExchange(user.getSex()));
     }
     catch (Exception ex) {
      }

    /* 转换 年龄(age) */
    try {
    userActionForm.setAge(user.getAge()+"");
    }
    catch (Exception ex) {
     }

    /* 转换 口令(password) */
    try {
      userActionForm.setPassword(InitFiltrate.getFiltrate().outExchange(user.getPassword()));
     }
     catch (Exception ex) {
      }

    /* 转换 地址(address) */
    try {
      userActionForm.setAddress(InitFiltrate.getFiltrate().outExchange(user.getAddress()));
     }
     catch (Exception ex) {
      }

    /* 转换 电话(phone) */
    try {
      userActionForm.setPhone(InitFiltrate.getFiltrate().outExchange(user.getPhone()));
     }
     catch (Exception ex) {
      }

    /* 转换 传真(fax) */
    try {
      userActionForm.setFax(InitFiltrate.getFiltrate().outExchange(user.getFax()));
     }
     catch (Exception ex) {
      }

    /* 转换 电子邮件(email) */
    try {
      userActionForm.setEmail(InitFiltrate.getFiltrate().outExchange(user.getEmail()));
     }
     catch (Exception ex) {
      }

    /* 转换 主页(homepage) */
    try {
      userActionForm.setHomepage(InitFiltrate.getFiltrate().outExchange(user.getHomepage()));
     }
     catch (Exception ex) {
      }

    /* 转换 问题(question) */
    try {
      userActionForm.setQuestion(InitFiltrate.getFiltrate().outExchange(user.getQuestion()));
     }
     catch (Exception ex) {
      }

    /* 转换 答案(answer) */
    try {
      userActionForm.setAnswer(InitFiltrate.getFiltrate().outExchange(user.getAnswer()));
     }
     catch (Exception ex) {
      }

    /* 转换 ip(ip) */
    try {
      userActionForm.setIp(user.getIp());
     }
     catch (Exception ex) {
      }

    /* 转换 组织ID(teamid) */
    try {
      userActionForm.setTeamid(InitFiltrate.getFiltrate().outExchange(user.getTeamid()));
     }
     catch (Exception ex) {
      }

    /* 转换 角色ID(roleid) */
    try {
      userActionForm.setRoleid(InitFiltrate.getFiltrate().outExchange(user.getRoleid()));
     }
     catch (Exception ex) {
      }

    /* 转换 失效期(outdate) */
    DateFormat dateFormatOutdate = new SimpleDateFormat("yyyy-MM-dd");
    String dateStringOutdate = "";
    try {
       dateStringOutdate = dateFormatOutdate.format(user.getOutdate());
       userActionForm.setOutdate(dateStringOutdate);
    }
    catch (Exception ex) {
     }

    /* 转换 时间(createdate) */
    DateFormat dateFormatCreatedate = new SimpleDateFormat("yyyy-MM-dd hh:ss:mm");
    String dateStringCreatedate = "";
    try {
       dateStringCreatedate = dateFormatCreatedate.format(user.getCreatedate());
       userActionForm.setCreatedate(dateStringCreatedate);
    }
    catch (Exception ex) {
     }

    /* 转换 单位名称(company) */
    try {
      userActionForm.setCompany(InitFiltrate.getFiltrate().outExchange(user.getCompany()));
     }
     catch (Exception ex) {
      }

    /* 转换 部门(office) */
    try {
      userActionForm.setOffice(InitFiltrate.getFiltrate().outExchange(user.getOffice()));
     }
     catch (Exception ex) {
      }

    /* 转换 单位地址(companyaddress) */
    try {
      userActionForm.setCompanyaddress(InitFiltrate.getFiltrate().outExchange(user.getCompanyaddress()));
     }
     catch (Exception ex) {
      }

    /* 转换 职位(position) */
    try {
      userActionForm.setPosition(InitFiltrate.getFiltrate().outExchange(user.getPosition()));
     }
     catch (Exception ex) {
      }

    /* 转换 用户等级(usergrade) */
    try {
      userActionForm.setUsergrade(InitFiltrate.getFiltrate().outExchange(user.getUsergrade()));
     }
     catch (Exception ex) {
      }

    /* 转换 单位等级(businessgrade) */
    try {
      userActionForm.setBusinessgrade(InitFiltrate.getFiltrate().outExchange(user.getBusinessgrade()));
     }
     catch (Exception ex) {
      }

    /* 转换 是否是单位注册(isbusiness) */
    try {
    userActionForm.setIsbusiness(user.getIsbusiness()+"");
    }
    catch (Exception ex) {
     }

    /* 转换 审核(isauditing) */
    try {
    userActionForm.setIsauditing(user.getIsauditing()+"");
    }
    catch (Exception ex) {
     }

    /* 转换 说明(message) */
    try {
      userActionForm.setMessage(InitFiltrate.getFiltrate().outExchange(user.getMessage()));
     }
     catch (Exception ex) {
      }


    return userActionForm;
   }
 
/**
  * 成批转换
  * @param  Iterator
  * @return Iterator
  */
  public Iterator getUserActionForms(Iterator users){
    List list=new Vector();
    while(users.hasNext()){
      User user=(User)users.next();
      UserActionForm userActionForm=this.getUserActionForm(user);
      list.add(userActionForm);
    }
    return list.iterator();
  }

}
   
最后更新时间:2004-06-05
每个属性都要写一个转换,不累啊,
考虑一下beanutils吧。
   
0 请登录后投票
最后更新时间:2004-06-05
你这样太麻烦了吧?
   我是通过通用的反射来实现的,因为反射性能的原因,所以我要求我的程序员在8个以下属性的对象赋值就直接赋值了。
   
0 请登录后投票
最后更新时间:2004-06-05
顺带问一下楼上,beanutils是哪里的东东,介绍介绍
   
0 请登录后投票
最后更新时间:2004-06-05
如果我没记错的话,beanutils是Apache的Common lib里面的东东。另外我同意你的做法,要copy的话还是反射来的爽些。
   
0 请登录后投票
最后更新时间:2004-06-05
射覆请客 写道
每个属性都要写一个转换,不累啊,
考虑一下beanutils吧。


已经说明过了,这个类是用程序自动生成的,我不需要写. 我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了.

我又说过,这里面还加了一个过滤层,做成一个STRUTS的插入件了,通过配置XML来增加过滤的语句,这样几个功能集中起来了.

在VO和PO转换时,中间加一个过滤器,是一个好办法.
   
0 请登录后投票
最后更新时间:2004-06-05
dhj1 写道
我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了.


没有明白你所说的jsp显示和vo,po转换有什么关系。以你这个例子而言,只是在User和UserActionForm之间copy properties,页面的显示的是UserActionForm,跟你怎么转换没有什么关系吧,你的UserActionFrom中的属性类型是不会因为你怎么转换而改变的。

beanutils的copyproperty是自动适配目标属性的类型的,用起来很方便。
   
0 请登录后投票
最后更新时间:2004-06-05
另外还有一个不明白的地方,你的InitFiltrate只是设置了一些过滤规则,过滤的时候依然需要自行调用InExchange方法,plugin有什么作用,只是完成初始化?
如果只是这样,我觉得还不如不要plugin,程序看起来还清楚一些。(个人意见)
   
0 请登录后投票
最后更新时间:2004-06-05
dhj1 写道


已经说明过了,这个类是用程序自动生成的,我不需要写. 我认为beanutils 是有缺点的. 在JSP显示,整型,日期,浮点型之类的要转为String,如果用beanutils 还得手工转一下. 而自已做的,自动转了.


beanutils.copyproperties(JavaBean, JavaBean)只要属性名称相同,对于整形,日期,浮点数等都会帮你自动转换。
dhj1 写道

我又说过,这里面还加了一个过滤层,做成一个STRUTS的插入件了,通过配置XML来增加过滤的语句,这样几个功能集中起来了.

在VO和PO转换时,中间加一个过滤器,是一个好办法.

我认为在中间加一个转换器是有必要的,因为毕竟beanutils有缺点(深度copy),而且有时候满足不了需求
   
0 请登录后投票
最后更新时间:2004-06-05
射覆请客 写道
另外还有一个不明白的地方,你的InitFiltrate只是设置了一些过滤规则,过滤的时候依然需要自行调用InExchange方法,plugin有什么作用,只是完成初始化?
如果只是这样,我觉得还不如不要plugin,程序看起来还清楚一些。(个人意见)


当然需要,否则为什么要用plugin .当然也可以不要,但是会麻烦很多.什么原因我就不说了,只有读了InitFiltrate 的代码就知道了.
   
0 请登录后投票
论坛首页 Java版 Hibernate

跳转论坛:
JavaEye推荐