POJO2VO

20973 단어
POJO2VO
최근에 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() + "
{
");
 102:         } else {
 103:             bw.write("package " + voPackageName + "
{
");
 104:         }
 105:  
 106:         //   
 107:         bw.write(repeat(" ", 4) + "public class " + c.getSimpleName().replace("BO", "VO") + "
");
 108:         bw.write(repeat(" ", 4) + "{
");
 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 + ";
");
 116:         }
 117:  
 118:         bw.write("


");
 119:         //        
 120:         bw.write(repeat(" ", 8) + "public function " + c.getSimpleName().replace("BO", "VO")
 121:                 + "(){}

");
 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{
");
 130:             bw.write(repeat(" ", 12) + "this._" + fields[i].getName()
 131:                     + " = value;
");
 132:             bw.write(repeat(" ", 8) + "}

");
 133:             // getter
 134:             bw.write(repeat(" ", 8) + "public function get "
 135:                     + fields[i].getName() + "():" + typeName + "{
");
 136:             bw.write(repeat(" ", 12) + "return this._" + fields[i].getName()
 137:                     + ";
");
 138:             bw.write(repeat(" ", 8) + "}


");
 139:  
 140:         }
 141:         bw.write(repeat(" ", 4) + "}
");
 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: }

좋은 웹페이지 즐겨찾기