157 lines
4.6 KiB
Plaintext
157 lines
4.6 KiB
Plaintext
from enum import Enum
|
|
{{
|
|
|
|
func table_key_list
|
|
table = $0
|
|
varName = $1
|
|
indexList = table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
|
|
ret array.join indexList ', '
|
|
end
|
|
|
|
func table_param_name_list
|
|
table = $0
|
|
paramList = table.index_list |array.each do; ret $0.index_field.name; end
|
|
ret array.join paramList ', '
|
|
end
|
|
}}
|
|
|
|
{{~for enum in __enums~}}
|
|
{{~if enum.comment != '' ~}}
|
|
'''
|
|
{{enum.comment | html.escape}}
|
|
'''
|
|
{{~end~}}
|
|
class {{full_name enum}}(Enum):
|
|
{{~ for item in enum.items ~}}
|
|
{{~if item.comment_or_alias != '' ~}}
|
|
'''
|
|
{{item.comment_or_alias | html.escape}}
|
|
'''
|
|
{{~end~}}
|
|
{{item.name}} = {{item.value}}
|
|
{{~end~}}
|
|
{{~if enum.items.empty?~}}
|
|
pass
|
|
{{~end~}}
|
|
|
|
{{~end~}}
|
|
|
|
{{~for bean in __beans
|
|
name = (full_name bean)
|
|
~}}
|
|
class {{name}} {{if bean.parent_def_type}}({{full_name bean.parent_def_type}}){{end}}:
|
|
{{~if bean.is_abstract_type~}}
|
|
_childrenTypes = None
|
|
@staticmethod
|
|
def fromJson(_json_):
|
|
childrenTypes = {{name}}._childrenTypes
|
|
if not childrenTypes:
|
|
childrenTypes = {{name}}._childrenTypes = {
|
|
{{~ for child in bean.hierarchy_not_abstract_children~}}
|
|
'{{impl_data_type child bean}}': {{name}},
|
|
{{~end~}}
|
|
}
|
|
type = _json_['$type']
|
|
child = {{name}}._childrenTypes.get(type)
|
|
if child != None:
|
|
return child(_json_)
|
|
else:
|
|
raise Exception()
|
|
{{~end~}}
|
|
def __init__(self, _json_):
|
|
{{~if bean.parent_def_type~}}
|
|
{{full_name bean.parent_def_type}}.__init__(self, _json_)
|
|
{{~end~}}
|
|
{{~ for field in bean.export_fields ~}}
|
|
{{deserialize_field ('self.' + (format_field_name __code_style field.name)) '_json_' field.name field.ctype}}
|
|
{{~end~}}
|
|
{{~if bean.export_fields.empty?}}
|
|
pass
|
|
{{~end~}}
|
|
|
|
{{~end~}}
|
|
|
|
{{~for table in __tables
|
|
value_type = table.value_ttype
|
|
~}}
|
|
class {{full_name table}}:
|
|
{{~if table.is_map_table ~}}
|
|
|
|
def __init__(self, _json_ ):
|
|
self._dataMap = {}
|
|
self._dataList = []
|
|
|
|
for _json2_ in _json_:
|
|
{{deserialize '_v' '_json2_' value_type}}
|
|
self._dataList.append(_v)
|
|
self._dataMap[_v.{{format_field_name __code_style table.index_field.name}}] = _v
|
|
|
|
def getDataMap(self) : return self._dataMap
|
|
def getDataList(self) : return self._dataList
|
|
|
|
def get(self, key) : return self._dataMap.get(key)
|
|
{{~else if table.is_union_index~}}
|
|
|
|
def __init__(self, _json_ ):
|
|
self._dataMap = {}
|
|
self._dataList = []
|
|
|
|
for _json2_ in _json_:
|
|
{{deserialize '_v' '_json2_' value_type}}
|
|
self._dataList.append(_v)
|
|
self._dataMap[({{table_key_list table '_v'}})] = _v
|
|
|
|
def getDataMap(self) : return self._dataMap
|
|
def getDataList(self) : return self._dataList
|
|
|
|
def get(self, {{table_param_name_list table}}) : return self._dataMap.get(({{table_param_name_list table}}))
|
|
|
|
{{~else if table.is_list_table ~}}
|
|
|
|
def __init__(self, _json_ ):
|
|
self._dataList = []
|
|
{{~for idx in table.index_list~}}
|
|
self._dataMap_{{idx.index_field.name}} = {}
|
|
{{~end~}}
|
|
for _json2_ in _json_:
|
|
{{deserialize '_v' '_json2_' value_type}}
|
|
self._dataList.append(_v)
|
|
{{~for idx in table.index_list~}}
|
|
self._dataMap_{{idx.index_field.name}}[_v.{{format_property_name __code_style idx.index_field.name}}] = _v
|
|
{{~end~}}
|
|
|
|
def getDataList(self) : return self._dataList
|
|
|
|
def get(self, index) : return self._dataList[index]
|
|
{{~for idx in table.index_list~}}
|
|
def get_by_{{format_property_name __code_style idx.index_field.name}}(self, key): return self._dataMap_{{idx.index_field.name}}.get(key)
|
|
{{~end~}}
|
|
{{~else~}}
|
|
|
|
def __init__(self, _json_):
|
|
if (len(_json_) != 1): raise Exception('table mode=one, but size != 1')
|
|
{{deserialize 'self._data' '_json_[0]' value_type}}
|
|
|
|
def getData(self) : return self._data
|
|
|
|
{{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
|
|
{{~if field.comment != ''
|
|
name = format_field_name __code_style field.name
|
|
~}}
|
|
'''
|
|
{{escape_comment field.comment}}
|
|
'''
|
|
{{~end~}}
|
|
def {{name}}(self) : return self._data.{{name}}
|
|
{{~end~}}
|
|
{{~end~}}
|
|
|
|
{{~end~}}
|
|
|
|
|
|
class {{str_full_name __full_name}}:
|
|
def __init__(self, loader):
|
|
{{~for table in __tables ~}}
|
|
self.{{format_method_name __code_style table.name}} = {{full_name table}}(loader('{{table.output_data_file}}'));
|
|
{{~end~}}
|