@@ -51,110 +51,66 @@ define(function (require, exports, module) {
51
51
CMD_JAVA_GENERATE = 'java.generate' ,
52
52
CMD_JAVA_REVERSE = 'java.reverse' ;
53
53
54
- // TODO: Return $.Promise
55
- function checkConfig ( callback ) {
56
- var baseModel = JavaCodeGenerator . getBaseModel ( ) ,
57
- targetDir = JavaCodeGenerator . getTargetDirectory ( ) ;
58
- var dir = FileSystem . getDirectoryForPath ( targetDir ) ;
59
- if ( dir && dir . _isDirectory === true ) {
60
- if ( baseModel instanceof type . UMLPackage ) {
61
- callback ( true , baseModel , targetDir ) ;
62
- } else {
63
- callback ( false ) ;
64
- }
65
- } else {
66
- callback ( false ) ;
67
- }
68
- }
54
+ /**
55
+ * CommandManager.execute로부터 파라미터를 받아서 코드 생성 가능하게 한다.
56
+ * 파라미터가 없으면 baseModel, targetDir을 사용한다.
57
+ * @param {Object } options
58
+ * @return {$.Promise }
59
+ */
60
+ function _handleGenerate ( options ) {
61
+ var result = new $ . Deferred ( ) ;
69
62
70
- function generate ( baseModel , targetDir ) {
71
- var i , len ;
72
- for ( i = 0 , len = baseModel . ownedElements . length ; i < len ; i ++ ) {
73
- var elem = baseModel . ownedElements [ i ] ;
74
- if ( elem instanceof type . UMLPackage ) {
75
- var dir = targetDir + "/" + elem . name ;
76
- FileSystem . makeDir ( dir , 0 , function ( err ) {
77
- if ( err === FileSystem . NO_ERROR ) {
78
- generate ( elem , dir ) ;
63
+ // If options is not passed, get from preference
64
+ options = JavaPreferences . getGenOptions ( ) ;
65
+
66
+ // If options.base is not assigned, popup ElementPicker
67
+ if ( ! options . base ) {
68
+ ElementPicker . showDialog ( "Select a base model to generate codes" , null , type . UMLPackage )
69
+ . done ( function ( buttonId , selected ) {
70
+ if ( buttonId === Dialogs . DIALOG_BTN_OK && selected ) {
71
+ options . base = selected ;
72
+
73
+ // If options.path is not assigned, popup Open Dialog to select a folder
74
+ if ( ! options . path ) {
75
+ FileSystem . showOpenDialog ( false , true , "Select a folder where generated codes to be located" , null , null , function ( err , files ) {
76
+ if ( ! err ) {
77
+ if ( files . length > 0 ) {
78
+ options . path = files [ 0 ] ;
79
+ JavaCodeGenerator . generate ( options ) . then ( result . resolve , result . reject ) ;
80
+ } else {
81
+ result . reject ( FileSystem . USER_CANCELED ) ;
82
+ }
83
+ } else {
84
+ result . reject ( err ) ;
85
+ }
86
+ } ) ;
87
+ } else {
88
+ JavaCodeGenerator . generate ( options ) . then ( result . resolve , result . reject ) ;
89
+ }
79
90
} else {
80
- console . log ( "[Java] Failed to make directory - " + dir ) ;
81
- }
82
- } ) ;
83
- } else if ( elem instanceof type . UMLClass ) {
84
- var file = targetDir + "/" + elem . name + ".java" ;
85
- var codeWriter = new CodeGenUtils . CodeWriter ( ) ;
86
- JavaCodeGenerator . writePackageDeclaration ( codeWriter , elem ) ;
87
- codeWriter . writeLine ( ) ;
88
- codeWriter . writeLine ( "import java.util.ArrayList;" ) ;
89
- codeWriter . writeLine ( ) ;
90
- JavaCodeGenerator . writeClass ( codeWriter , elem ) ;
91
- FileSystem . writeFile ( file , codeWriter . getData ( ) , "utf8" , function ( err ) {
92
- if ( err !== FileSystem . NO_ERROR ) {
93
- console . log ( "[Java] Failed to generate - " + file ) ;
94
- }
95
- } ) ;
96
- } else if ( elem instanceof type . UMLInterface ) {
97
- var file = targetDir + "/" + elem . name + ".java" ;
98
- var codeWriter = new CodeGenUtils . CodeWriter ( ) ;
99
- JavaCodeGenerator . writePackageDeclaration ( codeWriter , elem ) ;
100
- codeWriter . writeLine ( ) ;
101
- codeWriter . writeLine ( "import java.util.ArrayList;" ) ;
102
- codeWriter . writeLine ( ) ;
103
- JavaCodeGenerator . writeInterface ( codeWriter , elem ) ;
104
- FileSystem . writeFile ( file , codeWriter . getData ( ) , "utf8" , function ( err ) {
105
- if ( err !== FileSystem . NO_ERROR ) {
106
- console . log ( "[Java] Failed to generate - " + file ) ;
91
+ result . reject ( ) ;
107
92
}
108
93
} ) ;
109
- } else if ( elem instanceof type . UMLEnumeration ) {
110
- var file = targetDir + "/" + elem . name + ".java" ;
111
- var codeWriter = new CodeGenUtils . CodeWriter ( ) ;
112
- JavaCodeGenerator . writePackageDeclaration ( codeWriter , elem ) ;
113
- codeWriter . writeLine ( ) ;
114
- JavaCodeGenerator . writeEnum ( codeWriter , elem ) ;
115
- FileSystem . writeFile ( file , codeWriter . getData ( ) , "utf8" , function ( err ) {
116
- if ( err !== FileSystem . NO_ERROR ) {
117
- console . log ( "[Java] Failed to generate - " + file ) ;
94
+ } else {
95
+ // If options.path is not assigned, popup Open Dialog to select a folder
96
+ if ( ! options . path ) {
97
+ FileSystem . showOpenDialog ( false , true , "Select a folder where generated codes to be located" , null , null , function ( err , files ) {
98
+ if ( ! err ) {
99
+ if ( files . length > 0 ) {
100
+ options . path = files [ 0 ] ;
101
+ JavaCodeGenerator . generate ( options ) . then ( result . resolve , result . reject ) ;
102
+ } else {
103
+ result . reject ( FileSystem . USER_CANCELED ) ;
104
+ }
105
+ } else {
106
+ result . reject ( err ) ;
118
107
}
119
108
} ) ;
120
- }
121
- }
122
- }
123
-
124
- function traverse ( dir , analyzer ) {
125
- dir . getContents ( function ( err , entries , stats ) {
126
- if ( entries && entries . length > 0 ) {
127
- for ( var i = 0 , len = entries . length ; i < len ; i ++ ) {
128
- var entry = entries [ i ] ;
129
- analyzer ( entry ) ;
130
- if ( entry . _isDirectory === true ) {
131
- traverse ( entry , analyzer ) ;
132
- }
133
- }
134
- }
135
- } ) ;
136
- }
137
-
138
- /**
139
- * CommandManager.execute로부터 파라미터를 받아서 코드 생성 가능하게 한다.
140
- * 파라미터가 없으면 baseModel, targetDir을 사용한다.
141
- * options = {
142
- * base: (model)
143
- * path: "/User/niklaus/..."
144
- * javaDoc: true,
145
- * useTab: false,
146
- * indentSpaces: 4,
147
- * headerComment: true
148
- * }
149
- */
150
- function _handleGenerate ( options ) {
151
- checkConfig ( function ( configured , baseModel , targetDir ) {
152
- if ( configured ) {
153
- generate ( baseModel , targetDir ) ;
154
109
} else {
155
- Dialogs . showAlertDialog ( "Java Code Generation is not configured." ) ;
110
+ JavaCodeGenerator . generate ( options ) . then ( result . resolve , result . reject ) ;
156
111
}
157
- } ) ;
112
+ }
113
+ return result . promise ( ) ;
158
114
}
159
115
160
116
/**
@@ -169,24 +125,26 @@ define(function (require, exports, module) {
169
125
* 파라미터가 없으면 baseModel, targetDir을 사용한다.
170
126
* Must return $.Promise
171
127
*/
172
- // TODO: options.path 가 주어져 있으면 showOpenDialog를 하지 않는다.
173
128
function _handleReverse ( options ) {
174
129
var result = new $ . Deferred ( ) ;
175
- FileSystem . showOpenDialog ( false , true , "Select Folder" , null , null , function ( err , files ) {
176
- if ( ! err ) {
177
- if ( files && files . length > 0 ) {
178
- var options = {
179
- association : true ,
180
- path : files [ 0 ]
181
- } ;
182
- JavaReverseEngineer . analyze ( options ) . then ( result . resolve , result . reject ) ;
130
+ // If options is not passed, get from preference
131
+ options = JavaPreferences . getRevOptions ( ) ;
132
+
133
+ // If options.path is not assigned, popup Open Dialog to select a folder
134
+ if ( ! options . path ) {
135
+ FileSystem . showOpenDialog ( false , true , "Select Folder" , null , null , function ( err , files ) {
136
+ if ( ! err ) {
137
+ if ( files . length > 0 ) {
138
+ options . path = files [ 0 ] ;
139
+ JavaReverseEngineer . analyze ( options ) . then ( result . resolve , result . reject ) ;
140
+ } else {
141
+ result . reject ( FileSystem . USER_CANCELED ) ;
142
+ }
183
143
} else {
184
- result . reject ( ) ;
144
+ result . reject ( err ) ;
185
145
}
186
- } else {
187
- result . reject ( err ) ;
188
- }
189
- } ) ;
146
+ } ) ;
147
+ }
190
148
return result . promise ( ) ;
191
149
}
192
150
0 commit comments