mwgencode 1.4.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gencode/__init__.py +140 -0
- gencode/dd_models.py +256 -0
- gencode/ext.py +19 -0
- gencode/gen_code.py +343 -0
- gencode/gencode/__init__.py +0 -0
- gencode/gencode/export_class2swgclass.py +206 -0
- gencode/gencode/gen_bo_models_code.py +719 -0
- gencode/gencode/gen_state_code.py +171 -0
- gencode/gencode/gen_swagger_code.py +94 -0
- gencode/gencode/gen_tests_code.py +113 -0
- gencode/gencode/sample/__init__.py +2 -0
- gencode/gencode/sample/babel.cfg +3 -0
- gencode/gencode/sample/config-sample.ini +9 -0
- gencode/gencode/sample/config.ini +14 -0
- gencode/gencode/sample/create_new_table_run.pys +19 -0
- gencode/gencode/sample/dockerignore.dock +57 -0
- gencode/gencode/sample/file_utils.pys +396 -0
- gencode/gencode/sample/gencode.xmi +33 -0
- gencode/gencode/sample/gitignore.git +14 -0
- gencode/gencode/sample/migrate_run.bat +5 -0
- gencode/gencode/sample/migrate_run.pys +9 -0
- gencode/gencode/sample/requirements.txt +17 -0
- gencode/gencode/sample/run.sh +27 -0
- gencode/gencode/sample/seeds/__init__.py +0 -0
- gencode/gencode/sample/seeds/models_rm.pys +187 -0
- gencode/gencode/sample/seeds/seed_dev_data.pys +21 -0
- gencode/gencode/sample/seeds/seed_init.pys +17 -0
- gencode/gencode/sample/seeds/seed_rm.pys +39 -0
- gencode/gencode/sample/seeds/seed_run.pys +13 -0
- gencode/gencode/sample/seeds/seed_utils.pys +23 -0
- gencode/gencode/sample/test__init__.pys +6 -0
- gencode/gencode/sample/test_run.pys +4 -0
- gencode/gencode/sample/utils.pys +92 -0
- gencode/gencode/template/Dockerfile.tmp +55 -0
- gencode/gencode/template/README.md +91 -0
- gencode/gencode/template/__init__.py +0 -0
- gencode/gencode/template/__init__.pys +99 -0
- gencode/gencode/template/config.pys +134 -0
- gencode/gencode/template/default.conf +21 -0
- gencode/gencode/template/docker-compose-dev.yaml +52 -0
- gencode/gencode/template/docker-compose.yaml +55 -0
- gencode/gencode/template/drone.tmp +45 -0
- gencode/gencode/template/flask_models.pys +107 -0
- gencode/gencode/template/flask_models_base.pys +159 -0
- gencode/gencode/template/gen_code_flask.yaml +21 -0
- gencode/gencode/template/gen_code_run.pys +28 -0
- gencode/gencode/template/k8s-tmp.yml +141 -0
- gencode/gencode/template/run.pys +52 -0
- gencode/gencode/template/sample.mdj +1193 -0
- gencode/gencode/template/setup.tmp +48 -0
- gencode/gencode/template/supervisord.conf +21 -0
- gencode/gencode/template/swagger_file.yaml +195 -0
- gencode/gencode/template/swg_class.tmp +41 -0
- gencode/gencode/template/swg_ctrl_code.pys +130 -0
- gencode/gencode/template/swg_package_mng.tmp +4423 -0
- gencode/gencode/template/test_test_base.tmp +34 -0
- gencode/gencode/template/tests/__init__.py +0 -0
- gencode/gencode/template/tests/__init__.pys +5 -0
- gencode/gencode/template/tests/init_test_data.pys +80 -0
- gencode/gencode/template/tests/run.pys +4 -0
- gencode/gencode/template/tests/test_base.pys +87 -0
- gencode/gencode/template/tests/test_classmng.pys +58 -0
- gencode/gencode/template/uwsgi.ini +20 -0
- gencode/gencode/template/uwsgi_run.pys +44 -0
- gencode/importmdj/__init__.py +0 -0
- gencode/importmdj/import_dd_classes.py +369 -0
- gencode/importmdj/import_swagger2_class.py +371 -0
- gencode/importmdj/import_uml_models.py +466 -0
- gencode/importxmi/__init__.py +1 -0
- gencode/importxmi/import_classes.py +342 -0
- gencode/importxmi/import_sequences.py +291 -0
- gencode/importxmi/import_states.py +150 -0
- gencode/importxmi/import_swagger.py +151 -0
- gencode/swg2_class_models.py +179 -0
- gencode/uml_class_models.py +295 -0
- gencode/upgrade.py +113 -0
- gencode/utils.py +225 -0
- manage.py +194 -0
- mwgencode-1.4.1.dist-info/METADATA +325 -0
- mwgencode-1.4.1.dist-info/RECORD +84 -0
- mwgencode-1.4.1.dist-info/WHEEL +5 -0
- mwgencode-1.4.1.dist-info/entry_points.txt +2 -0
- mwgencode-1.4.1.dist-info/licenses/LICENSE.txt +19 -0
- mwgencode-1.4.1.dist-info/top_level.txt +2 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
try: # 导入模块
|
|
2
|
+
import xml.etree.cElementTree as ET
|
|
3
|
+
except ImportError:
|
|
4
|
+
import xml.etree.ElementTree as ET
|
|
5
|
+
from gencode.dd_models import *
|
|
6
|
+
from gencode.ext import Session,engine
|
|
7
|
+
from gencode.importmdj.import_uml_models import Import_uml_models
|
|
8
|
+
from gencode.uml_class_models import *
|
|
9
|
+
|
|
10
|
+
from gencode.utils import Keytype,FieldFrom,DBDataType,DBDataType_len,convert2dbType
|
|
11
|
+
|
|
12
|
+
class ImportDDModels():
|
|
13
|
+
def __init__(self):
|
|
14
|
+
self.project = None
|
|
15
|
+
self.database = None
|
|
16
|
+
self.tables = {}
|
|
17
|
+
self.roles = []
|
|
18
|
+
|
|
19
|
+
def _create_db(self,project):
|
|
20
|
+
database = Databasedictionary()
|
|
21
|
+
database.name = project.name
|
|
22
|
+
database.description = project.doc
|
|
23
|
+
database.id = project.id
|
|
24
|
+
self.session = Session()
|
|
25
|
+
return database
|
|
26
|
+
# self.session.add(db)
|
|
27
|
+
|
|
28
|
+
def _create_tb(self, cls):
|
|
29
|
+
if cls.isabstract:
|
|
30
|
+
return
|
|
31
|
+
table = Tabledictionary()
|
|
32
|
+
table.databasedictionaryid = self.database.id
|
|
33
|
+
table.tablename = cls.name.lower()
|
|
34
|
+
table.is_assoc_table = cls.is_assoc_class
|
|
35
|
+
table.isabstract = cls.isabstract
|
|
36
|
+
table.id = cls.id
|
|
37
|
+
table.description = cls.doc
|
|
38
|
+
if cls.stereotype:
|
|
39
|
+
stereotype = cls.stereotype.split('/')
|
|
40
|
+
for stype in stereotype:
|
|
41
|
+
if stype.lower().startswith('map'):
|
|
42
|
+
# 如:customerid = map{c_id}
|
|
43
|
+
table.maptablename = stype[4:-1].lower()
|
|
44
|
+
elif stype.lower().startswith('bind'):
|
|
45
|
+
table.bind_db=stype[5:-1].lower()
|
|
46
|
+
if not table.maptablename:
|
|
47
|
+
table.maptablename = table.tablename
|
|
48
|
+
return table
|
|
49
|
+
|
|
50
|
+
def _create_idfld(self,clsidvalue):
|
|
51
|
+
field = Fielddictionary()
|
|
52
|
+
field.id = clsidvalue
|
|
53
|
+
field.tabledictionaryid = clsidvalue
|
|
54
|
+
field.fieldname = 'id'
|
|
55
|
+
# if self.isIntID:
|
|
56
|
+
field.fieldtype = DBDataType.int.value
|
|
57
|
+
field.fieldsize = DBDataType_len.int.value
|
|
58
|
+
# else:
|
|
59
|
+
# field.fieldtype = DBDataType.varchar.value
|
|
60
|
+
# field.fieldsize = DBDataType_len.varchar.value
|
|
61
|
+
field.englishname = field.fieldname.lower()
|
|
62
|
+
field.othername = field.fieldname.lower()
|
|
63
|
+
field.keytype = Keytype.key.value
|
|
64
|
+
field.fieldfrom = FieldFrom.database.value
|
|
65
|
+
field.gb32name = field.fieldname.lower()
|
|
66
|
+
field.isallownull = False
|
|
67
|
+
return field
|
|
68
|
+
|
|
69
|
+
def _assign_fld_value(self,source,target):
|
|
70
|
+
'''
|
|
71
|
+
source赋值给target
|
|
72
|
+
:param source:
|
|
73
|
+
:param target:
|
|
74
|
+
:return:
|
|
75
|
+
'''
|
|
76
|
+
field = target
|
|
77
|
+
# field.id = source.id
|
|
78
|
+
# field.tabledictionaryid = source.tabledictionaryid
|
|
79
|
+
field.fieldname = source.fieldname
|
|
80
|
+
field.fieldtype = source.fieldtype
|
|
81
|
+
field.fieldsize = source.fieldsize
|
|
82
|
+
field.englishname = source.englishname
|
|
83
|
+
field.othername = source.othername
|
|
84
|
+
field.keytype = source.keytype
|
|
85
|
+
field.fieldfrom = source.fieldfrom
|
|
86
|
+
field.gb32name = source.gb32name
|
|
87
|
+
field.isallownull = source.isallownull
|
|
88
|
+
|
|
89
|
+
def _create_fld(self,attr,table):
|
|
90
|
+
field = Fielddictionary()
|
|
91
|
+
field.id = attr.id
|
|
92
|
+
field.tabledictionaryid = table.id
|
|
93
|
+
field.fieldname = attr.name.lower()
|
|
94
|
+
field.fieldtype = convert2dbType(attr.type)
|
|
95
|
+
type_s = attr.type.lower().strip()
|
|
96
|
+
if type_s.startswith('string') and len(type_s)>6:
|
|
97
|
+
type_len = int(type_s[6:])
|
|
98
|
+
else:
|
|
99
|
+
type_len = DBDataType_len[field.fieldtype].value
|
|
100
|
+
field.fieldsize = type_len
|
|
101
|
+
field.englishname = field.fieldname.lower()
|
|
102
|
+
field.othername = field.fieldname.lower()
|
|
103
|
+
field.gb32name = field.fieldname.lower()
|
|
104
|
+
field.big5name = field.fieldname.lower()
|
|
105
|
+
if attr.isid:
|
|
106
|
+
field.keytype = Keytype.key.value
|
|
107
|
+
else:
|
|
108
|
+
field.keytype = Keytype.notkey.value
|
|
109
|
+
if attr.isunique:
|
|
110
|
+
field.repfields = field.fieldname.lower()
|
|
111
|
+
field.fieldfrom = FieldFrom.database.value
|
|
112
|
+
if attr.multiplicity:
|
|
113
|
+
field.fieldsize = int(attr.multiplicity)
|
|
114
|
+
field.defaultvalue = attr.defaultvalue
|
|
115
|
+
field.gb32name = attr.doc
|
|
116
|
+
field.doc = attr.doc
|
|
117
|
+
if attr.stereotype:
|
|
118
|
+
# print(' stype:', attr_stype.attrib)
|
|
119
|
+
stypes = attr.stereotype.split('/')
|
|
120
|
+
for stype in stypes:
|
|
121
|
+
if stype.lower() == 'req':
|
|
122
|
+
field.isallownull = False
|
|
123
|
+
elif stype.lower() == 'rep':
|
|
124
|
+
field.repfields = field.fieldname.lower()
|
|
125
|
+
elif stype.lower().startswith('map'):
|
|
126
|
+
# 如:customerid = map{c_id}
|
|
127
|
+
field.mapname = stype[4:-1].lower()
|
|
128
|
+
elif stype.lower().startswith('rep'):
|
|
129
|
+
# 如:rep{id;name}
|
|
130
|
+
# stype[4:-1].split(';')=>['id','name']
|
|
131
|
+
stype_l = stype[4:-1].lower().split(';')
|
|
132
|
+
stype_l.append(field.fieldname)
|
|
133
|
+
field.repfields = ';'.join(stype_l)
|
|
134
|
+
elif stype.lower().startswith('plk'):
|
|
135
|
+
field.plkfieldcode = field.gb32name
|
|
136
|
+
field.plkfieldpath = stype[4:-1].lower()
|
|
137
|
+
field.fieldfrom = FieldFrom.lookup.value
|
|
138
|
+
# if not field.mapname :
|
|
139
|
+
# field.mapname = field.fieldname
|
|
140
|
+
return field
|
|
141
|
+
|
|
142
|
+
def _create_role(self,memb,table):
|
|
143
|
+
def getMultiplicitye(multi):
|
|
144
|
+
upperv = multi.split('..')[-1]
|
|
145
|
+
if upperv == '*':
|
|
146
|
+
return 65535
|
|
147
|
+
elif upperv == '1':
|
|
148
|
+
return 1
|
|
149
|
+
else:
|
|
150
|
+
return 65535
|
|
151
|
+
|
|
152
|
+
def getReqire(multi):
|
|
153
|
+
lowerv = multi.split('..')[0]
|
|
154
|
+
return lowerv != '0'
|
|
155
|
+
|
|
156
|
+
def get_map_name(end):
|
|
157
|
+
stereotype = end.stereotype.split('/')
|
|
158
|
+
for stype in stereotype:
|
|
159
|
+
if stype.lower().startswith('map'):
|
|
160
|
+
return stype[4:-1].lower()
|
|
161
|
+
|
|
162
|
+
def get_st_code(st_name,stereotype):
|
|
163
|
+
if isinstance(stereotype,str):
|
|
164
|
+
stereotype = stereotype.split('/')
|
|
165
|
+
for stype in stereotype:
|
|
166
|
+
if stype.lower().startswith(st_name):
|
|
167
|
+
return stype[len(st_name)+1:-1]
|
|
168
|
+
return ''
|
|
169
|
+
|
|
170
|
+
def getRole(assoc, end1, end2, table, stereotype):
|
|
171
|
+
'''
|
|
172
|
+
1,1 -> 1 只有单向关系
|
|
173
|
+
2,* -> 1 lookup的关系 (非组合或聚合的关系视为单向)
|
|
174
|
+
3,1 <-> * 组合或聚合关系 (为双向)
|
|
175
|
+
'''
|
|
176
|
+
def exchange_end(end1,end2):
|
|
177
|
+
# 交换end1和end2,让o2m和m2o的role关系处理起来更自然
|
|
178
|
+
end1_multi = getMultiplicitye(end1.multiplicity)
|
|
179
|
+
end2_multi = getMultiplicitye(end2.multiplicity)
|
|
180
|
+
relationship_value = get_relationship_type(end1_multi, end2_multi,
|
|
181
|
+
end1.navigable, end2.navigable)
|
|
182
|
+
# 1对一,如果方向反则交换
|
|
183
|
+
if relationship_value == Relationship_type.o2o.value and not end2.navigable:
|
|
184
|
+
return end2,end1
|
|
185
|
+
if relationship_value == Relationship_type.o2m.value and end1_multi>1:
|
|
186
|
+
return end2,end1
|
|
187
|
+
elif relationship_value ==Relationship_type.m2o.value and end1_multi==1:
|
|
188
|
+
return end2, end1
|
|
189
|
+
return end1,end2
|
|
190
|
+
end1,end2 = exchange_end(end1,end2)
|
|
191
|
+
role = Roledictionary()
|
|
192
|
+
role.id = assoc.id
|
|
193
|
+
role.is_assoc_table = assoc.is_assoc_class
|
|
194
|
+
role.assoc_tableid = assoc.assoc_class_id
|
|
195
|
+
role.underline = '_id' in stereotype
|
|
196
|
+
role.ownertableid = assoc.parentid
|
|
197
|
+
role.ddid = self.database.id
|
|
198
|
+
role.req = 'req' in stereotype
|
|
199
|
+
if not role.req:
|
|
200
|
+
end_multiplicity = '0'
|
|
201
|
+
if getMultiplicitye(end1.multiplicity)==1:
|
|
202
|
+
end_multiplicity = end1.multiplicity
|
|
203
|
+
elif getMultiplicitye(end2.multiplicity)==1:
|
|
204
|
+
end_multiplicity = end2.multiplicity
|
|
205
|
+
role.req = getReqire(end_multiplicity)
|
|
206
|
+
role.ref = 'ref' in stereotype
|
|
207
|
+
role.flt = get_st_code('flt',stereotype)
|
|
208
|
+
role.ord = get_st_code('ord',stereotype)
|
|
209
|
+
role.end1_lazy = get_st_code('lazy',end1.stereotype)
|
|
210
|
+
role.end2_lazy = get_st_code('lazy',end2.stereotype)
|
|
211
|
+
# role.end1 = end1
|
|
212
|
+
# route.end2= end2
|
|
213
|
+
role.end1_aggregation = end1.aggregation.lower()
|
|
214
|
+
role.end2_aggregation = end2.aggregation.lower()
|
|
215
|
+
role.end1_multiplicity = getMultiplicitye(end1.multiplicity)
|
|
216
|
+
role.end1_rolename = end1.name.lower().replace(' ', '')
|
|
217
|
+
if role.end1_rolename == '':
|
|
218
|
+
role.end1_rolename = end1.reference.name.lower()
|
|
219
|
+
role.end1_mapid = get_map_name(end1)
|
|
220
|
+
role.end1_navigable = end1.navigable
|
|
221
|
+
role.end1_reftableid = end1.referenceid
|
|
222
|
+
role.end2_reftableid = end2.referenceid
|
|
223
|
+
role.end2_rolename = end2.name.lower().replace(' ', '')
|
|
224
|
+
if role.end2_rolename== '' :
|
|
225
|
+
role.end2_rolename=end2.reference.name.lower()
|
|
226
|
+
role.end2_multiplicity = getMultiplicitye(end2.multiplicity)
|
|
227
|
+
role.end2_navigable = end2.navigable
|
|
228
|
+
role.end2_mapid = get_map_name(end2)
|
|
229
|
+
# 图形上都为True或False时再图上效果一样,都为False时设为True
|
|
230
|
+
if not role.end1_navigable and not role.end2_navigable:
|
|
231
|
+
role.end1_navigable = True
|
|
232
|
+
role.end2_navigable = True
|
|
233
|
+
return role
|
|
234
|
+
|
|
235
|
+
if not memb.end1 or not memb.end2:
|
|
236
|
+
return
|
|
237
|
+
stereotype = []
|
|
238
|
+
if memb.stereotype:
|
|
239
|
+
stereotype = memb.stereotype.split('/')
|
|
240
|
+
return getRole(memb,memb.end1,memb.end2,table,stereotype)
|
|
241
|
+
|
|
242
|
+
def __create_operations(self,table,operation):
|
|
243
|
+
op = Ddoperation()
|
|
244
|
+
op.parentid = table.id
|
|
245
|
+
op.id = operation.id
|
|
246
|
+
op.stereotype = operation.stereotype
|
|
247
|
+
op.doc = operation.doc
|
|
248
|
+
op.name = operation.name
|
|
249
|
+
op.isabstract = operation.isabstract
|
|
250
|
+
op.isquery = operation.isquery
|
|
251
|
+
op.isstatic = operation.isstatic
|
|
252
|
+
op.specification = operation.specification
|
|
253
|
+
op.py_params = operation.py_params
|
|
254
|
+
return op
|
|
255
|
+
|
|
256
|
+
def handle_cls(self,cls):
|
|
257
|
+
table = self._create_tb(cls)
|
|
258
|
+
if not table:
|
|
259
|
+
return
|
|
260
|
+
self.tables[table.id] = table
|
|
261
|
+
self.session.add(table)
|
|
262
|
+
hasid = False
|
|
263
|
+
for attr in cls.propertys:
|
|
264
|
+
field = self._create_fld(attr,table)
|
|
265
|
+
if field.keytype == Keytype.key.value:
|
|
266
|
+
hasid = True
|
|
267
|
+
self.session.add(field)
|
|
268
|
+
if not hasid:
|
|
269
|
+
self.session.add(self._create_idfld(table.id))
|
|
270
|
+
|
|
271
|
+
for op in cls.operations:
|
|
272
|
+
self.session.add(self.__create_operations(table,op))
|
|
273
|
+
|
|
274
|
+
for assoc in cls.associations:
|
|
275
|
+
roles = self._create_role(assoc, table)
|
|
276
|
+
self.roles.append(roles)
|
|
277
|
+
# for gen in cls.umlgeneralizations:
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def handle_classes(self):
|
|
281
|
+
classes = self.session.query(Class).\
|
|
282
|
+
filter(Class.isswagger==False).\
|
|
283
|
+
filter(Class.type=='UMLClass').\
|
|
284
|
+
filter(Class.projectid==self.project.id).all()
|
|
285
|
+
for cls in classes:
|
|
286
|
+
self.handle_cls(cls)
|
|
287
|
+
|
|
288
|
+
def handle_generalization(self):
|
|
289
|
+
gens = self.session.query(Umlgeneralization).\
|
|
290
|
+
join(Class,Class.id==Umlgeneralization.parentid).\
|
|
291
|
+
filter(Umlgeneralization.isswagger==False). \
|
|
292
|
+
filter(Class.type == 'UMLClass'). \
|
|
293
|
+
filter(Class.projectid == self.project.id).all()
|
|
294
|
+
for gen in gens:
|
|
295
|
+
stereotype = gen.stereotype.split('/')
|
|
296
|
+
target = self.session.query(Tabledictionary).filter(Tabledictionary.id == gen.targetid).first()
|
|
297
|
+
# target = Tabledictionary()
|
|
298
|
+
target.is_sigletable='sng' in stereotype
|
|
299
|
+
# sng 类不需要子类,orm中查询出错
|
|
300
|
+
target.is_need_sonboclass = not target.is_sigletable
|
|
301
|
+
target.is_parentclass=True
|
|
302
|
+
source = self.session.query(Tabledictionary).filter(Tabledictionary.id==gen.sourceid).first()
|
|
303
|
+
# source = Tabledictionary()
|
|
304
|
+
source.is_sigletable = 'sng' in stereotype
|
|
305
|
+
# sng 类不需要子类,orm中查询出错
|
|
306
|
+
source.is_need_sonboclass = not source.is_sigletable
|
|
307
|
+
source.parentid = target.id
|
|
308
|
+
# source.parent = target
|
|
309
|
+
source_key = target.get_keyfield()
|
|
310
|
+
target_key = source.get_keyfield()
|
|
311
|
+
self._assign_fld_value(source_key,target_key)
|
|
312
|
+
self.session.add_all([source,target,target_key])
|
|
313
|
+
self.session.commit()
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def init_database(self):
|
|
317
|
+
Base.metadata.create_all(engine) # 创建资料库结构
|
|
318
|
+
|
|
319
|
+
def handleRoles(self):
|
|
320
|
+
for role in self.roles:
|
|
321
|
+
if role.end2_rolename == '':
|
|
322
|
+
role.end2_rolename=role.end2_reftable.tablename.lower()
|
|
323
|
+
self.session.add_all(self.roles)
|
|
324
|
+
self.session.commit()
|
|
325
|
+
|
|
326
|
+
def handleEnum(self):
|
|
327
|
+
enumrations = self.session.query(Enumeration).\
|
|
328
|
+
filter(Enumeration.isswagger==False).\
|
|
329
|
+
filter(Enumeration.projectid==self.project.id).\
|
|
330
|
+
all()
|
|
331
|
+
get_value = lambda v_st,v_ind:v_st if v_st else str(v_ind)
|
|
332
|
+
for enuma in enumrations:
|
|
333
|
+
dbenma = DBEnumeration(id = enuma.id,
|
|
334
|
+
name=enuma.name.lower(),
|
|
335
|
+
doc=enuma.doc,
|
|
336
|
+
type=enuma.stereotype.lower(),
|
|
337
|
+
ddid=self.database.id
|
|
338
|
+
)
|
|
339
|
+
self.session.add(dbenma)
|
|
340
|
+
for indx,eitm in enumerate(enuma.enumeitems,1):
|
|
341
|
+
dbeitm = DBEnumeitem(id=eitm.id,
|
|
342
|
+
name=eitm.name.lower(),
|
|
343
|
+
doc=eitm.doc,
|
|
344
|
+
type=dbenma.type.lower(),
|
|
345
|
+
value = get_value(eitm.stereotype.split('value')[-1][1:-1],indx),
|
|
346
|
+
enumerationid=eitm.enumerationid)
|
|
347
|
+
self.session.add(dbeitm)
|
|
348
|
+
self.session.commit()
|
|
349
|
+
|
|
350
|
+
def impUMLModels(self,file):
|
|
351
|
+
self.project = Import_uml_models(file).import_model()
|
|
352
|
+
self.init_database()
|
|
353
|
+
self.database = self._create_db(self.project)
|
|
354
|
+
self.session.add(self.database)
|
|
355
|
+
self.session.commit()
|
|
356
|
+
self.handle_classes()
|
|
357
|
+
self.handleRoles()
|
|
358
|
+
self.handleEnum()
|
|
359
|
+
self.handle_generalization()
|
|
360
|
+
return self.database
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
if __name__ == '__main__':
|
|
364
|
+
session = Session()
|
|
365
|
+
i = ImportDDModels()
|
|
366
|
+
i.impUMLModels(r"D:\mwwork\projects\gencode\docs\test5.json")
|
|
367
|
+
print(session.query(DBEnumeration).all())
|
|
368
|
+
print(session.query(DBEnumeitem).all())
|
|
369
|
+
# i.impxml(r"test.xml")
|