`

Java-Pojo类转Flex-Vo类

阅读更多
[size=large]  
在使用openamf的类映射功能时,一般需要在as端也定义和java pojo类似的对象,用于类的映射。

有关使用openamf的类映射,请见之前的《openAMF自定义类映射(custom-class-mapping)的使用》

如果手工去写这些和java对应的flex vo对象比较麻烦,这里用java写了个简单的as vo对象生成的工具,代码如下:

/**
*
*/
package com.nstar.base.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;

import org.apache.commons.lang.StringUtils;


/**
* @author Administrator
*
*/
public class VoUtils {
public VoUtils(){}

//根据java类对象的类型返回vo类型
public static String getClassType(Class c){
   String typeName = c.getSimpleName();
  
   if (typeName.equals("String") || typeName.equals("Date") || typeName.equals("Boolean")) {
    return typeName;
   }else if (typeName.equals("BigDecimal") || typeName.equals("Decimal") ||
      typeName.equals("Double")) {
    return "Number";
   }else if (typeName.equals("Integer")) {
    return "int";
   }else {
    return "*";//其它类型的设置为未知类型,此处由自己去补充完善,并不建议使用"*"
   }
   
}
//重复c字符count次,用于格式化生成的as文件
public static String repeat(String c, int count){
   String temp = "";
   for(int i = 0;i<count ;i++){
    temp += c;
   }
  
   return temp;
}
/**
* 生成as文件
* @param pojoName java对象名称
* @param packageName flex中vo对象的包名
* @throws ClassNotFoundException
* @throws IOException
*/
public static void generateAsFile(String pojoName, String packageName, String folder)
    throws ClassNotFoundException, IOException {
   Class c = Class.forName(pojoName);
   Field[] fields =c.getDeclaredFields();
  
   //as的vo对象名称结尾加上VO标志
   File f = new File(folder+c.getSimpleName()+"VO.as");
   BufferedWriter bw = new BufferedWriter(
           new FileWriter(f));
   //包名,没有设置包名就取和java pojo一样的包名
   if (StringUtils.isEmpty(packageName)){
    bw.write("package "+c.getPackage().getName()+"\n{\n");
   }else{
    bw.write("package "+packageName+"\n{\n");
   }
  
   //写类
   bw.write(repeat(" ",4)+"public class "+c.getSimpleName()+"VO\n");
   bw.write(repeat(" ",4)+"{\n");
  
   //写属性
   for(int i=0;i<fields.length;i++){
    Class fieldType = fields[i].getType();
    String typeName = getClassType(fieldType);
    bw.write(repeat(" ",8)+"private var _"+fields[i].getName()+":"+typeName+";\n");
   }
  
   bw.write("\n\n\n");
   //写空的构造函数
   bw.write(repeat(" ",8)+"public function "+c.getSimpleName()+"VO(){}\n\n");
  
   //写 setter/getter 方法
   for(int i=0;i<fields.length;i++){
    Class fieldType = fields[i].getType();
    String typeName = getClassType(fieldType);
    //setter
    bw.write(repeat(" ",8)+"public function set "+fields[i].getName()+"(value:"+typeName+"):void{\n");
    bw.write(repeat(" ",12)+"this._"+fields[i].getName()+" = value;\n");
    bw.write(repeat(" ",8)+"}\n\n");
    //getter
    bw.write(repeat(" ",8)+"public function get "+fields[i].getName()+"():"+typeName+"{\n");
    bw.write(repeat(" ",12)+"return this._"+fields[i].getName()+";\n");
    bw.write(repeat(" ",8)+"}\n\n\n");
   
   }
   bw.write(repeat(" ",4)+"}\n");
   bw.write("}");
   bw.close();  
}

//测试,写了个测试
public static void main(String[] args) throws ClassNotFoundException, IOException {
   // TODO Auto-generated method stub
   String[] pojos = {
     "com.nstar.model.orderexpress.Area",
     "com.nstar.model.orderexpress.FoodType",
     "com.nstar.model.orderexpress.Holiday",
     "com.nstar.model.orderexpress.ItemSpec",
     "com.nstar.model.orderexpress.ItemSpecType",
     "com.nstar.model.orderexpress.Menu2Rest",
     "com.nstar.model.orderexpress.OrderInfo",
     "com.nstar.model.orderexpress.OrderInfoExp",
     "com.nstar.model.orderexpress.OrderMenu",
     "com.nstar.model.orderexpress.OrderState",
     "com.nstar.model.orderexpress.OrderType",
     "com.nstar.model.orderexpress.Repository",
     "com.nstar.model.orderexpress.RepositoryType",
     "com.nstar.model.orderexpress.RestInfo",
     "com.nstar.model.orderexpress.UserInfo",
     "com.nstar.model.orderexpress.UserLevel",
     "com.nstar.model.orderexpress.UserType"
     };
   for(int i=0;i<pojos.length;i++){
    //Class c = Class.forName(pojos[i]);
    //System.out.println("registerClassAlias('"+pojos[i]+"',com.nstar.orderexpress.vo."+c.getSimpleName()+"VO);");
    VoUtils.generateAsFile(pojos[i],"com.nstar.orderexpress.vo","C:/temp/");
   }
  
}

}

测试时可以随便找个Java对象来测试,下面是其中生成的一个文件(OrderTypeVO)的内容:

package com.nstar.orderexpress.vo
{
    public class OrderTypeVO
    {
        private var _orderTypeId:String;
        private var _name:String;
        private var _remarks:String;

        public function OrderTypeVO(){}

        public function set orderTypeId(value:String):void{
            this._orderTypeId = value;
        }

        public function get orderTypeId():String{
            return this._orderTypeId;
        }


        public function set name(value:String):void{
            this._name = value;
        }

        public function get name():String{
            return this._name;
        }


        public function set remarks(value:String):void{
            this._remarks = value;
        }

        public function get remarks():String{
            return this._remarks;
        }


    }
}[size=large][/size]


  本文是转载自网友的,我们自己可以在此基础上做一些修改使其成为我们的工具类。其实这种做法之前在写Mysql部分的监控时也曾用到了。[/size]
分享到:
评论

相关推荐

    基于SOA和ROA的整体技术架构.docx

    - **POJO (Plain Ordinary Java Object)**:简单的Java对象,可以在不同阶段转化为PO、DTO、VO等。 - **PO (Persistant Object)**:对应数据库实体的持久化对象。 - **VO (View Object)**:用于表示层的对象,...

    卫星轨道模型python仿真比代码

    该代码完成卫星轨道模型仿真,并产生stk模型轨道与仿真结果对比。

    易优文档定时发布插件.zip

    易优文档定时发布插件

    易优百度位置信息展示插件.zip

    易优百度位置信息展示插件.zip

    自我提升-教材-浮游生物学

    内容:浮游生物学Plankton(英文版本) 密码:123***(你猜)

    解放MX架构下嵌入式SRAM的.lib文件自动化生成技术及其应用 Liberate MX

    内容概要:本文详细介绍了嵌入式静态随机存取存储器(SRAM)在芯片设计中的重要性和挑战,特别是关于如何准确高效地生成.lib文件以优化定时、功率和噪声性能。文中重点讨论了Liberate MX工具的工作原理和技术优势,包括自动化生成.lib文件、FastSPICE模拟器的应用、拓扑独立的反馈分析、时钟树识别等功能。此外,文章还展望了未来嵌入式SRAM分析技术的发展方向。 适用人群:从事芯片设计、嵌入式系统开发的技术人员,尤其是对SRAM设计有深入研究的专业人士。 使用场景及目标:适用于需要进行全芯片静态定时分析(STA)的项目,旨在提升SRAM实例的定时、功率和噪声性能,确保芯片设计的高效性和准确性。 其他说明:Liberate MX作为一种高效的自动化工具,在嵌入式SRAM实例分析中发挥了重要作用,未来有望进一步改进和发展,以适应不断变化的设计需求。

    停车场管理系统的Java实现

    ## 功能模块 ### 移动应用端 (parkingSystemMobile) 移动端为用户提供以下功能: 1. **首页展示**:展示附近停车场、空余车位和优惠活动 2. **车位查询**:实时查询停车场空余车位情况 3. **在线支付**:支持多种支付方式缴纳停车费 4. **会员服务**:会员注册、续费和特权查询 5. **停车记录**:查询历史停车记录和消费明细 6. **车位预约**:提前预约车位(高级功能) 7. **个人中心**:管理个人信息、车辆信息和账单 ### 管理后台 (parkingSystemManagement) 管理后台为停车场管理员提供以下功能: 1. **车辆管理**:记录和查询车辆进出信息 2. **车位管理**:管理停车场车位状态和分布 3. **收费管理**:设置收费标准和处理支付记录 4. **会员管理**:管理会员账号和权限 5. **员工管理**:管理停车场工作人员账号和权限 6. **数据统计**:分析停车场使用率、收入等数据 7. **系统设置**:配置系统参数和权限

    Adbom.shx

    拷贝到Auto CAD的Fonts下

    基于一致性算法的改进自适应虚拟阻抗多机并联控制仿真研究 - 解决线路阻抗不匹配问题 电力系统

    内容概要:本文探讨了基于一致性算法的改进自适应虚拟阻抗多机并联控制策略,旨在解决因线路阻抗不匹配导致的无功功率分配不均和环流问题。文中详细介绍了分层控制策略的设计,包括一次控制中的自适应虚拟阻抗控制和二次控制中的电压、频率补偿控制。通过Simulink仿真模型进行了验证,结果显示该策略能有效实现无功功率的精确分配,并使电压和频率迅速跟踪额定值。 适合人群:从事电力系统、分布式发电系统研究的技术人员和研究人员。 使用场景及目标:适用于微电网中多机并联运行的控制系统设计,目标是提升系统的稳定性和运行效率,特别是在解决线路阻抗不匹配的问题上。 其他说明:文章引用了《基于一致性理论的孤岛微电网分布式控制策略研究_熊德超》等文献作为理论支持,并提供了详细的仿真模型和实验数据供进一步研究和验证。

    考虑个性化驾驶员的信号口车速引导研究.zip

    考虑个性化驾驶员的信号口车速引导研究.zip

    带式称重输送机设计.rar

    带式称重输送机设计.rar

    光伏发电与电池储能系统中MPPT增量导纳法及双向Buck-Boost电路的Simulink仿真研究 电池储能 光伏储能系统中的Simulink仿真研究:基于MPPT增量导纳法与双向buck boost

    内容概要:本文探讨了光伏发电与电池储能系统的整合应用及其在Simulink仿真平台上的建模与优化。首先介绍了光伏发电和电池储能的基本概念,随后详细阐述了MPPT(最大功率点跟踪)增量导纳法的应用,该方法通过实时调整光伏系统的阻抗来确保最大功率输出。接着讨论了双向buck-boost电路在储能系统中的重要作用,它可以实现能量的双向传输并在充放电过程中调节电压。最后,文章强调了Simulink仿真平台在系统建模与优化中的重要性,通过仿真可以优化参数配置和控制策略,提升系统性能。 适合人群:从事新能源技术研发的专业人士、高校相关专业师生、对光伏发电和电池储能感兴趣的科研人员。 使用场景及目标:适用于希望深入了解光伏发电与电池储能系统的工作原理和技术细节的研究人员;目标是在实际项目中应用这些技术和仿真工具,以提高系统的效率和可靠性。 阅读建议:读者可以通过本文了解MPPT增量导纳法的具体实现方式,掌握双向buck-boost电路的设计思路,并学会使用Simulink进行系统建模与优化。建议结合实际案例进行深入理解和实践操作。

    蒂森电梯图纸大部分中文标注MC2电气图纸标注.zip

    蒂森电梯图纸大部分中文标注MC2电气图纸标注.zip

    Φ500mm的数控车床总体设计及横向进给设计.rar

    Φ500mm的数控车床总体设计及横向进给设计.rar

    电装新型垂直多关节机器人-VS-050.rar

    电装新型垂直多关节机器人-VS-050.rar

    终端智能化分级研究报告.pdf

    终端智能化分级研究报告.pdf

    钢丝绳芯胶带输送机故障监测的装置的设计.rar

    钢丝绳芯胶带输送机故障监测的装置的设计.rar

    实训商业源码-云易卡客户版-论文模板.zip

    实训商业源码-云易卡客户版-论文模板.zip

    办公软件WPS灵犀免费版接入DeepSeek R1大模型:办公效率全面提升及应用场景详解

    内容概要:WPS灵犀免费版正式接入DeepSeek R1大模型,推出冬季2024灵犀免费版,成为首款国产AI原生办公套件。该版本具有三大颠覆性突破:深度集成DeepSeek R1,无需第三方插件;全免费且覆盖多种办公场景;效率实测提升300%。文章详细介绍了六大应用场景,包括智能写作、表格处理、PPT设计、代码办公、多模态创作和跨文档知识管理,并提供了详细的启用步骤和避坑指南。此外,还针对企业用户和高级用户提供了商用授权和API接入等进阶玩法。 适合人群:学生、职场人士、开发者以及需要高效办公的所有用户。 使用场景及目标:①智能写作,快速生成高质量文档;②表格处理,实现复杂公式的自动推导和异常检测;③PPT设计,自动生成专业美观的演示文稿;④代码办公,生成和优化编程代码;⑤多模态创作,生成流程图和数据可视化图表;⑥跨文档知识管理,快速总结文献和识别合同风险。 其他说明:提供全网独家下载地址和避坑指南,确保用户顺利安装和使用。企业用户需申请商用授权,费用为0.1元/千tokens。用户反馈显示,WPS灵犀版大幅提升了工作效率,解决了多个痛点问题。立即下载体验,开启AI办公新纪元。

    MZ.SHX

    拷贝到Auto CAD的Fonts下

Global site tag (gtag.js) - Google Analytics