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: }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.