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

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

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

    樂在其中

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

    首頁 新隨筆 聯(lián)系 管理
      43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

    最近用Flex做UI,但是和業(yè)務(wù)層不好結(jié)合,特地寫了個業(yè)務(wù)BO轉(zhuǎn)VO的class

    只需要指定需要生成的目錄,就可以批量將*BO.java轉(zhuǎn)換為*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:         // 數(shù)值型的都轉(zhuǎn)成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;// 其它類型的設(shè)置為未知類型
      40:             } else {
      41:                 return typeName + "VO";// 自定義類型的,加上VO結(jié)尾
      42:             }
      43:         }
      44:  
      45:     }
      46:  
      47:     // 是否基本的數(shù)據(jù)類型
      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對象名稱結(jié)尾加上VO標(biāo)志
      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:         // 包名,沒有設(shè)置包名就取和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:         // 寫空的構(gòu)造函數(shù)
     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,. 閱讀(229) 評論(0)  編輯  收藏 所屬分類: J2EE
    ©2005-2008 Suprasoft Inc., All right reserved.
    主站蜘蛛池模板: 日韩一级视频免费观看| 国产亚洲精午夜久久久久久 | 老外毛片免费视频播放| 亚洲区小说区图片区| 无码囯产精品一区二区免费 | 少妇中文字幕乱码亚洲影视| 成人免费午夜在线观看| 日韩在线视频免费| 中文字幕亚洲精品资源网| 永久黄网站色视频免费观看| 99re6在线视频精品免费| 国产成人亚洲综合网站不卡| 久久久久亚洲AV综合波多野结衣 | 国产精品美女午夜爽爽爽免费| 亚洲国产免费综合| 色婷五月综激情亚洲综合| 国产亚洲午夜高清国产拍精品| 久久不见久久见中文字幕免费| a毛片久久免费观看| 亚洲熟妇久久精品| 亚洲国产精品第一区二区| 日本免费无遮挡吸乳视频电影| 少妇无码一区二区三区免费| 色www免费视频| 亚洲香蕉在线观看| 国产亚洲人成网站在线观看不卡| 日韩免费视频观看| 波多野结衣在线免费视频| A级毛片成人网站免费看| 亚洲精品成a人在线观看☆| 亚洲成AV人片在线播放无码| 四虎影视永久免费观看地址| 成人免费无遮挡无码黄漫视频| 国产精品免费久久久久久久久| 亚洲heyzo专区无码综合| 亚洲在成人网在线看| 亚洲AV综合色区无码一区| 亚洲一区二区精品视频| 免费黄色大片网站| 久久精品无码一区二区三区免费| 777爽死你无码免费看一二区|