33
44from parse import DataParser
55from util import camel_case , first_upper , first_chars , spinal_case , pyinstaller_get_full_path
6+ from languagetype import Language
67
78DEFINITION_TEMPLATE = '\t private {0} {1};'
89GETTER_TEMPLATE = '\t public {0} get{1}() {{\n \t \t return this.{2};\n \t }}'
910SETTER_TEMPLATE = '\t public void set{0}({1} {2}) {{\n \t \t this.{2} = {2};\n \t }}'
1011TOSTRING_TEMPLATE = '"[{0}] [{1}]"'
1112TOSTRING_INNER_TEMPLATE = '{}=" + {} + "'
13+ ROWMAP_SETTER_TEMPLATE = '\t \t {0}.set{1}(rs.get{1}("{2}"));'
14+ TYPESCRIPT_DEFINITION_TEMPLATE = ' {0}: {1};'
15+
1216
1317class Generator (object ):
1418 data = []
@@ -42,16 +46,16 @@ def load_file(self, data_file):
4246 for idx , cell in enumerate (line_data ):
4347 self .types [header [idx ]] = self .parser .parse_type (cell ), camel_case (header [idx ])
4448
45- # {'ACTIONITEMIMPACTID': ('int', 'actionItemImpactId'), 'ACTIONITEMID': ('int', 'actionItemId'), 'APPID': ('int', 'appId'), 'APPNAME': (None, 'appName'), 'UPDATEDBY': ('String', 'updatedBy'), 'LASTUPDATED': ('String', 'lastUpdated'), 'DISTANCE': ('float', 'distance')}
46- print (self .types )
49+ print (self .types ) # TODO: Pretty print the mappings to the console
4750
48- def generate_entity_files (self , entity_name , folder_path ):
51+ def generate_entity_files (self , entity_name , folder_path , create_typescript = False ):
4952 if not os .path .isdir (folder_path ):
50- # Create folder
5153 os .mkdir (folder_path )
5254
53- # Make Bean
5455 self ._make_bean (entity_name , folder_path )
56+ self ._make_bean_rowmapper (entity_name , folder_path )
57+ if create_typescript :
58+ self ._make_typescript (entity_name , folder_path )
5559
5660 def _make_bean (self , entity_name , folder_path ):
5761 if not entity_name [0 ].isupper ():
@@ -60,20 +64,9 @@ def _make_bean(self, entity_name, folder_path):
6064 print ('Generating {0}.java' .format (entity_name ))
6165
6266 declarations = '\n ' .join (self ._generate_definitions ())
63-
6467 getter_setter = '\n ' .join (self ._generate_getters_setters ())
65-
6668 to_string = self ._generate_tostring (entity_name )
6769
68-
69- #to_string = '" ' + entity_name + ' ['
70-
71-
72- #for t in types:
73- # "[%ENTITY%] [[%VARIABLE%]=" + [%VARIABLE%] + ", Name=" + name + ", Designation=" + designation + ", Salary=" + salary + "]";
74- # to_string = to_string + t.var_name + '= " + ' + t.var_name + ' + ", '
75- #to_string = ''.join(to_string[:len(to_string)-3]) + '"]";'
76-
7770 template = ''
7871 path = pyinstaller_get_full_path ('templates/Entity.java' )
7972
@@ -87,20 +80,73 @@ def _make_bean(self, entity_name, folder_path):
8780 with open (output_path , 'w+' ) as out_file :
8881 out_file .write (template )
8982
83+ def _make_bean_rowmapper (self , entity_name , folder_path ):
84+ if not entity_name [0 ].isupper ():
85+ entity_name = first_upper (entity_name )
86+
87+ print ('Generating {0}RowMapper.java' .format (entity_name ))
88+
89+ template = ''
90+ path = pyinstaller_get_full_path ('templates/EntityRowMapper.java' )
91+
92+ with open (path , 'r' ) as in_file :
93+ template = in_file .read ()
94+
95+ row_maps = '\n ' .join (self ._generate_rowmap (entity_name ))
96+
97+ template = template .replace ('[%ENTITY%]' , first_upper (entity_name )).replace ('[%ENTITYVAR%]' , first_chars (entity_name )).replace ('[%ROWMAPPER%]' , row_maps )
98+ output_path = os .path .join (folder_path , entity_name + 'RowMapper.java' )
99+
100+ with open (output_path , 'w+' ) as out_file :
101+ out_file .write (template )
102+
103+ def _make_typescript (self , entity_name , folder_path ):
104+ print ('Generating {0}.ts' .format (spinal_case (entity_name ).lower ()))
105+
106+ template = ''
107+ path = pyinstaller_get_full_path ('templates/entity.ts' )
108+ with open (path , 'r' ) as in_file :
109+ template = in_file .read ()
110+
111+ definitions = '\n ' .join (self ._generate_typescript_definitions ())
112+
113+ template = template .replace ('[%ENTITY%]' , first_upper (entity_name )).replace ('[%DEFINITIONS%]' , definitions )
114+ output_path = os .path .join (folder_path , spinal_case (entity_name ).lower () + '.ts' )
115+
116+ with open (output_path , 'w+' ) as out_file :
117+ out_file .write (template )
118+
119+ def _generate_typescript_definitions (self ):
120+ code_lines = []
121+ for key in self .types :
122+ var = self .types [key ]
123+ code_lines .append (TYPESCRIPT_DEFINITION_TEMPLATE .format (var [1 ], self .parser .translate_type (var [0 ], Language .Typescript )))
124+ return code_lines
125+
126+ def _generate_rowmap (self , entity_name ):
127+ entity_var_name = first_chars (entity_name )
128+
129+ code_lines = []
130+ for key in self .types :
131+ var = self .types [key ]
132+ code_lines .append (ROWMAP_SETTER_TEMPLATE .format (entity_var_name , first_upper (var [1 ]), key ))
133+ return code_lines
134+
90135 def _generate_getters_setters (self ):
91136 code_lines = []
92137 for key in self .types :
93138 var = self .types [key ]
94- code_lines .append (GETTER_TEMPLATE .format (var [0 ], first_upper (var [1 ]), var [1 ]))
95- code_lines .append (SETTER_TEMPLATE .format (var [0 ], first_upper (var [1 ]), var [1 ]))
96- print (code_lines )
139+ java_type = self .parser .translate_type (var [0 ], Language .Java )
140+ print ('GETTER: Type for {0}: {1}' .format (var [1 ], java_type ))
141+ code_lines .append (GETTER_TEMPLATE .format (java_type , first_upper (var [1 ]), var [1 ]))
142+ code_lines .append (SETTER_TEMPLATE .format (first_upper (java_type ), java_type , var [1 ]))
97143 return code_lines
98144
99145 def _generate_definitions (self ):
100146 code_lines = []
101147 for key in self .types :
102148 var = self .types [key ]
103- code_lines .append (DEFINITION_TEMPLATE .format (var [0 ], var [1 ]))
149+ code_lines .append (DEFINITION_TEMPLATE .format (self . parser . translate_type ( var [0 ], Language . Java ) , var [1 ]))
104150 print (code_lines )
105151 return code_lines
106152
0 commit comments