<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    樂在其中

    以JEE為主攻,以Flex為點綴,以Eclipse RCP為樂趣
    請訪問http://www.inframesh.org

    首頁 新隨筆 聯系 管理
      43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

    最近用Flex做UI,但是和業務層不好結合,特地寫了個業務BO轉VO的class

    只需要指定需要生成的目錄,就可以批量將*BO.java轉換為*VO.as

    代碼如下:

       1: /**
       2:  * 
       3:  */
       4: package com.suprasoft.utils.flex;
       5:  
       6: /**
       7:  * @作者 Charles <chio.yang@gmail.com> Suprasoft Inc.,
       8:  * 
       9:  * 2008-12-25
      10:  */
      11:  
      12: import java.io.BufferedWriter;
      13: import java.io.File;
      14: import java.io.FileWriter;
      15: import java.io.IOException;
      16: import java.lang.reflect.Field;
      17:  
      18: import org.apache.commons.lang.StringUtils;
      19:  
      20: public class POJO2VO {
      21:     public POJO2VO() {
      22:     }
      23:  
      24:     public static String getClassType(Class c) {
      25:         String typeName = c.getSimpleName();
      26: //        System.out.println("typename " + typeName);
      27:         // 數值型的都轉成Number
      28:         if (typeName.equals("BigDecimal") || typeName.equals("Decimal")
      29:                 || typeName.equals("Double") || typeName.equals("int")
      30:                 || typeName.equals("Integer") || typeName.equals("Long")
      31:                 || typeName.equals("long")) {
      32:             return "Number";
      33:         } else if (typeName.equals("Boolean")) {
      34:             return "boolean";
      35:         } else if (typeName.equals("Set")) {
      36:             return "Array";
      37:         } else {
      38:             if (isBasicType(typeName)) {
      39:                 return typeName;// 其它類型的設置為未知類型
      40:             } else {
      41:                 return typeName + "VO";// 自定義類型的,加上VO結尾
      42:             }
      43:         }
      44:  
      45:     }
      46:  
      47:     // 是否基本的數據類型
      48:     public static boolean isBasicType(String type) {
      49:         return type.equals("String") || type.equals("BigDecimal")
      50:                 || type.equals("Decimal") || type.equals("Double")
      51:                 || type.equals("int") || type.equals("Integer")
      52:                 || type.equals("Boolean") || type.equals("Set")
      53:                 || type.equals("Long") || type.equals("long")
      54:                 || type.equals("Date");
      55:     }
      56:  
      57:     public static String repeat(String c, int count) {
      58:         String temp = "";
      59:         for (int i = 0; i < count; i++) {
      60:             temp += c;
      61:         }
      62:  
      63:         return temp;
      64:     }
      65:     
      66:     public static void makeDirByPackageName(String rootFolder, String packageName) {
      67:  
      68:         File folder = new File(rootFolder + "\\" + packageName.replace(".", "\\"));
      69:         if(!folder.exists()) {
      70:             folder.mkdirs();
      71:         }
      72:     }
      73:     
      74:     public static void generateAsFiles(String pojoQualifiedName ){
      75:         
      76:     }
      77:  
      78:     /**
      79:      * 生成as文件
      80:      * 
      81:      * @param pojoQualifiedName
      82:      * @param voPackageName
      83:      * @param folders
      84:      * @throws ClassNotFoundException
      85:      * @throws IOException
      86:      */
      87:     public static void generateAsFile(String pojoQualifiedName, String voPackageRootFolder, String voPackageName) throws ClassNotFoundException, IOException {
      88:         //pojoName必須帶包名的Qualified Name
      89:         Class c = Class.forName(pojoQualifiedName);
      90:         Field[] fields = c.getDeclaredFields();
      91:  
      92:         POJO2VO.makeDirByPackageName(voPackageRootFolder, voPackageName);
      93:         // as的vo對象名稱結尾加上VO標志
      94:         File f = new File(voPackageRootFolder + "\\" 
      95:                         + voPackageName.replace(".", "\\") + "\\"
      96:                         + c.getSimpleName().replace("BO", "VO") + ".as");
      97:         
      98:         BufferedWriter bw = new BufferedWriter(new FileWriter(f));
      99:         // 包名,沒有設置包名就取和java pojo一樣的包名
     100:         if (StringUtils.isEmpty(voPackageName)) {
     101:             bw.write("package " + c.getPackage().getName() + "\n{\n");
     102:         } else {
     103:             bw.write("package " + voPackageName + "\n{\n");
     104:         }
     105:  
     106:         // 寫類
     107:         bw.write(repeat(" ", 4) + "public class " + c.getSimpleName().replace("BO", "VO") + "\n");
     108:         bw.write(repeat(" ", 4) + "{\n");
     109:  
     110:         // 寫屬性
     111:         for (int i = 0; i < fields.length; i++) {
     112:             Class fieldType = fields[i].getType();
     113:             String typeName = getClassType(fieldType);
     114:             bw.write(repeat(" ", 8) + "private var _" + fields[i].getName()
     115:                     + ":" + typeName + ";\n");
     116:         }
     117:  
     118:         bw.write("\n\n\n");
     119:         // 寫空的構造函數
     120:         bw.write(repeat(" ", 8) + "public function " + c.getSimpleName().replace("BO", "VO")
     121:                 + "(){}\n\n");
     122:  
     123:         // 寫 setter/getter 方法
     124:         for (int i = 0; i < fields.length; i++) {
     125:             Class fieldType = fields[i].getType();
     126:             String typeName = getClassType(fieldType);
     127:             // setter
     128:             bw.write(repeat(" ", 8) + "public function set "
     129:                     + fields[i].getName() + "(value:" + typeName + "):void{\n");
     130:             bw.write(repeat(" ", 12) + "this._" + fields[i].getName()
     131:                     + " = value;\n");
     132:             bw.write(repeat(" ", 8) + "}\n\n");
     133:             // getter
     134:             bw.write(repeat(" ", 8) + "public function get "
     135:                     + fields[i].getName() + "():" + typeName + "{\n");
     136:             bw.write(repeat(" ", 12) + "return this._" + fields[i].getName()
     137:                     + ";\n");
     138:             bw.write(repeat(" ", 8) + "}\n\n\n");
     139:  
     140:         }
     141:         bw.write(repeat(" ", 4) + "}\n");
     142:         bw.write("}");
     143:         bw.close();
     144:     }
     145:     
     146:     public static void generateAsFileBatch(String pojoPackageRootFolder, String pojoPackageName, String voPackageRootFolder, String voPackageName) throws ClassNotFoundException, IOException {
     147:         String packageFolder = pojoPackageRootFolder + "\\" + pojoPackageName.replace(".", "\\");
     148:         File dir = new File(packageFolder);
     149:         File[] files = dir.listFiles();
     150:         for(File file : files){
     151:             if(file.isDirectory()) continue;
     152:             
     153:             if(file.getName().endsWith("BO.java")){
     154:                 String pojoName = pojoPackageName + "." + file.getName().replace(".java", "");
     155:                 POJO2VO.generateAsFile(pojoName, voPackageRootFolder, voPackageName);
     156:             }
     157:         }
     158:     }
     159:  
     160:  
     161:     /*
     162:      * 測試
     163:      */
     164:     public static void main(String[] args) throws ClassNotFoundException, IOException {
     165:         
     166: //        String[] pojos = { "com.bankcomm.icms.domain.migrate.RawCollateralBasicBO" };
     167: //        for (int i = 0; i < pojos.length; i++) {
     168: //            POJO2VO.generateAsFile(pojos[i], "C:", "com.bankcomm.icms.domain");
     169: //        }
     170:  
     171:         POJO2VO.generateAsFileBatch("D:\\ICMS\\eclipse\\workspace\\Utils\\src\\", 
     172:                 "com.bankcomm.icms.domain.migrate", 
     173:                 "C:\\Documents and Settings\\Administrator\\My Documents\\Flex Builder 3\\Temp\\src", 
     174:                 "com.bankcomm.icms.domain");
     175:     }
     176: }
    posted on 2008-12-25 20:13 suprasoft Inc,. 閱讀(228) 評論(0)  編輯  收藏 所屬分類: J2EE
    ©2005-2008 Suprasoft Inc., All right reserved.
    主站蜘蛛池模板: 久久久无码精品亚洲日韩软件| 猫咪社区免费资源在线观看| 亚洲午夜爱爱香蕉片| 亚洲JIZZJIZZ妇女| 日韩免费a级在线观看| 亚洲av片不卡无码久久| 国产啪精品视频网免费| 亚洲女人影院想要爱| 91成年人免费视频| 亚洲av无码电影网| 成人免费777777| 色欲aⅴ亚洲情无码AV蜜桃| 四虎影视精品永久免费网站| 阿v免费在线观看| 国产L精品国产亚洲区久久| a级特黄毛片免费观看| 亚洲综合国产精品| 人成午夜免费视频在线观看| 涩涩色中文综合亚洲| 日产乱码一卡二卡三免费| 一级黄色免费毛片| 亚洲av无码一区二区三区不卡| 99久久久国产精品免费牛牛四川| 亚洲国产夜色在线观看| 精品国产免费一区二区| 一级特级女人18毛片免费视频| 亚洲午夜久久久久久久久久| 午夜免费福利片观看| 亚洲制服丝袜第一页| 日本免费v片一二三区| 成人国产精品免费视频| 亚洲国产精品人久久| 国内一级一级毛片a免费| 亚洲五月午夜免费在线视频| 亚洲综合婷婷久久| 精品国产一区二区三区免费看| 国产精品无码免费专区午夜| 亚洲视频在线观看视频| 国产人成免费视频| 色欲A∨无码蜜臀AV免费播| 亚洲av永久无码天堂网|