mirror of
https://github.com/Alex-Rachel/TEngine.git
synced 2025-08-14 16:51:28 +00:00
Start TEngine3.0
Start TEngine3.0
This commit is contained in:
108
Luban/Luban.ClientServer/Templates/config/java_json/bean.tpl
Normal file
108
Luban/Luban.ClientServer/Templates/config/java_json/bean.tpl
Normal file
@@ -0,0 +1,108 @@
|
||||
package {{x.namespace_with_top_module}};
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
{{
|
||||
name = x.name
|
||||
parent_def_type = x.parent_def_type
|
||||
export_fields = x.export_fields
|
||||
hierarchy_export_fields = x.hierarchy_export_fields
|
||||
}}
|
||||
|
||||
{{~if x.comment != '' ~}}
|
||||
/**
|
||||
* {{x.escape_comment}}
|
||||
*/
|
||||
{{~end~}}
|
||||
public {{x.java_class_modifier}} class {{name}}{{if parent_def_type}} extends {{x.parent_def_type.full_name_with_top_module}}{{end}} {
|
||||
public {{name}}(JsonObject __json__) {
|
||||
{{~if parent_def_type~}}
|
||||
super(__json__);
|
||||
{{~end~}}
|
||||
{{~ for field in export_fields ~}}
|
||||
{{java_json_deserialize '__json__' field.convention_name field.name field.ctype}}
|
||||
{{~if field.index_field~}}
|
||||
for({{java_box_define_type field.ctype.element_type}} _v : {{field.convention_name}}) {
|
||||
{{field.convention_name}}_Index.put(_v.{{field.index_field.convention_name}}, _v);
|
||||
}
|
||||
{{~end~}}
|
||||
{{~end~}}
|
||||
}
|
||||
|
||||
public {{name}}({{- for field in hierarchy_export_fields }}{{java_define_type field.ctype}} {{field.name}}{{if !for.last}},{{end}} {{end}}) {
|
||||
{{~if parent_def_type~}}
|
||||
super({{ for field in parent_def_type.hierarchy_export_fields }}{{field.name}}{{if !for.last}}, {{end}}{{end}});
|
||||
{{~end~}}
|
||||
{{~ for field in export_fields ~}}
|
||||
this.{{field.convention_name}} = {{field.name}};
|
||||
{{~if field.index_field~}}
|
||||
for({{java_box_define_type field.ctype.element_type}} _v : {{field.convention_name}}) {
|
||||
{{field.convention_name}}_Index.put(_v.{{field.index_field.convention_name}}, _v);
|
||||
}
|
||||
{{~end~}}
|
||||
{{~end~}}
|
||||
}
|
||||
|
||||
public static {{name}} deserialize{{name}}(JsonObject __json__) {
|
||||
{{~if x.is_abstract_type~}}
|
||||
switch (__json__.get("{{x.json_type_name_key}}").getAsString()) {
|
||||
{{~for child in x.hierarchy_not_abstract_children~}}
|
||||
case "{{cs_impl_data_type child x}}": return new {{child.full_name_with_top_module}}(__json__);
|
||||
{{~end~}}
|
||||
default: throw new bright.serialization.SerializationException();
|
||||
}
|
||||
{{~else~}}
|
||||
return new {{name}}(__json__);
|
||||
{{~end~}}
|
||||
}
|
||||
|
||||
{{~ for field in export_fields ~}}
|
||||
{{~if field.comment != '' ~}}
|
||||
/**
|
||||
* {{field.escape_comment}}
|
||||
*/
|
||||
{{~end~}}
|
||||
public final {{java_define_type field.ctype}} {{field.convention_name}};
|
||||
{{~if field.index_field~}}
|
||||
public final java.util.HashMap<{{java_box_define_type field.index_field.ctype}}, {{java_box_define_type field.ctype.element_type}}> {{field.convention_name}}_Index = new java.util.HashMap<>();
|
||||
{{~end~}}
|
||||
{{~if field.gen_ref~}}
|
||||
public {{field.java_ref_validator_define}}
|
||||
{{~end~}}
|
||||
{{~end~}}
|
||||
|
||||
{{~if !x.is_abstract_type && x.parent_def_type~}}
|
||||
public static final int __ID__ = {{x.id}};
|
||||
|
||||
@Override
|
||||
public int getTypeId() { return __ID__; }
|
||||
{{~else if x.is_abstract_type && !x.parent_def_type~}}
|
||||
public abstract int getTypeId();
|
||||
{{~end~}}
|
||||
|
||||
{{~if parent_def_type~}}
|
||||
@Override
|
||||
{{~end~}}
|
||||
public void resolve(java.util.HashMap<String, Object> _tables) {
|
||||
{{~if parent_def_type~}}
|
||||
super.resolve(_tables);
|
||||
{{~end~}}
|
||||
{{~ for field in export_fields ~}}
|
||||
{{~if field.gen_ref~}}
|
||||
{{java_ref_validator_resolve field}}
|
||||
{{~else if field.has_recursive_ref~}}
|
||||
{{java_recursive_resolve field '_tables'}}
|
||||
{{~end~}}
|
||||
{{~end~}}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{{full_name}}{ "
|
||||
{{~for field in hierarchy_export_fields ~}}
|
||||
+ "{{field.convention_name}}:" + {{java_to_string field.convention_name field.ctype}} + ","
|
||||
{{~end~}}
|
||||
+ "}";
|
||||
}
|
||||
}
|
@@ -0,0 +1,99 @@
|
||||
package {{x.namespace_with_top_module}};
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
{{~
|
||||
name = x.name
|
||||
key_type = x.key_ttype
|
||||
key_type1 = x.key_ttype1
|
||||
key_type2 = x.key_ttype2
|
||||
value_type = x.value_ttype
|
||||
~}}
|
||||
|
||||
{{~if x.comment != '' ~}}
|
||||
/**
|
||||
* {{x.escape_comment}}
|
||||
*/
|
||||
{{~end~}}
|
||||
public final class {{name}} {
|
||||
{{~if x.is_map_table ~}}
|
||||
private final java.util.HashMap<{{java_box_define_type key_type}}, {{java_box_define_type value_type}}> _dataMap;
|
||||
private final java.util.ArrayList<{{java_box_define_type value_type}}> _dataList;
|
||||
|
||||
public {{name}}(JsonElement __json__) {
|
||||
_dataMap = new java.util.HashMap<{{java_box_define_type key_type}}, {{java_box_define_type value_type}}>();
|
||||
_dataList = new java.util.ArrayList<{{java_box_define_type value_type}}>();
|
||||
|
||||
for(com.google.gson.JsonElement _e_ : __json__.getAsJsonArray()) {
|
||||
{{java_box_define_type value_type}} _v;
|
||||
{{java_deserialize '_e_.getAsJsonObject()' '_v' value_type}}
|
||||
_dataList.add(_v);
|
||||
_dataMap.put(_v.{{x.index_field.convention_name}}, _v);
|
||||
}
|
||||
}
|
||||
|
||||
public java.util.HashMap<{{java_box_define_type key_type}}, {{java_box_define_type value_type}}> getDataMap() { return _dataMap; }
|
||||
public java.util.ArrayList<{{java_box_define_type value_type}}> getDataList() { return _dataList; }
|
||||
|
||||
{{~if value_type.is_dynamic~}}
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends {{java_box_define_type value_type}}> T getAs({{java_define_type key_type}} key) { return (T)_dataMap.get(key); }
|
||||
{{~end~}}
|
||||
public {{java_box_define_type value_type}} get({{java_define_type key_type}} key) { return _dataMap.get(key); }
|
||||
|
||||
public void resolve(java.util.HashMap<String, Object> _tables) {
|
||||
for({{java_box_define_type value_type}} v : _dataList) {
|
||||
v.resolve(_tables);
|
||||
}
|
||||
}
|
||||
|
||||
{{~else if x.is_list_table ~}}
|
||||
private final java.util.ArrayList<{{java_box_define_type value_type}}> _dataList;
|
||||
|
||||
public {{name}}(JsonElement __json__) {
|
||||
_dataList = new java.util.ArrayList<{{java_box_define_type value_type}}>();
|
||||
|
||||
for(com.google.gson.JsonElement _e_ : __json__.getAsJsonArray()) {
|
||||
{{java_box_define_type value_type}} _v;
|
||||
{{java_deserialize '_e_.getAsJsonObject()' '_v' value_type}}
|
||||
_dataList.add(_v);
|
||||
}
|
||||
}
|
||||
|
||||
public java.util.ArrayList<{{java_box_define_type value_type}}> getDataList() { return _dataList; }
|
||||
|
||||
public {{java_box_define_type value_type}} get(int index) { return _dataList.get(index); }
|
||||
|
||||
public void resolve(java.util.HashMap<String, Object> _tables) {
|
||||
for({{java_box_define_type value_type}} v : _dataList) {
|
||||
v.resolve(_tables);
|
||||
}
|
||||
}
|
||||
|
||||
{{~else~}}
|
||||
private final {{java_define_type value_type}} _data;
|
||||
|
||||
public final {{java_define_type value_type}} data() { return _data; }
|
||||
|
||||
public {{name}}(JsonElement __json__) {
|
||||
int n = __json__.getAsJsonArray().size();
|
||||
if (n != 1) throw new bright.serialization.SerializationException("table mode=one, but size != 1");
|
||||
{{java_deserialize '__json__.getAsJsonArray().get(0).getAsJsonObject()' '_data' value_type}}
|
||||
}
|
||||
|
||||
|
||||
{{~ for field in value_type.bean.hierarchy_export_fields ~}}
|
||||
{{~if field.comment != '' ~}}
|
||||
/**
|
||||
* {{field.escape_comment}}
|
||||
*/
|
||||
{{~end~}}
|
||||
public {{java_define_type field.ctype}} {{field.convention_getter_name}}() { return _data.{{field.convention_name}}; }
|
||||
{{~end~}}
|
||||
|
||||
public void resolve(java.util.HashMap<String, Object> _tables) {
|
||||
_data.resolve(_tables);
|
||||
}
|
||||
|
||||
{{~end~}}
|
||||
}
|
@@ -0,0 +1,37 @@
|
||||
{{~
|
||||
name = x.name
|
||||
namespace = x.namespace
|
||||
tables = x.tables
|
||||
~}}
|
||||
package {{namespace}};
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
|
||||
public final class {{name}}
|
||||
{
|
||||
public interface IJsonLoader {
|
||||
JsonElement load(String file) throws java.io.IOException;
|
||||
}
|
||||
|
||||
{{~for table in tables ~}}
|
||||
{{~if table.comment != '' ~}}
|
||||
/**
|
||||
* {{table.escape_comment}}
|
||||
*/
|
||||
{{~end~}}
|
||||
private final {{table.full_name_with_top_module}} {{table.inner_name}};
|
||||
public {{table.full_name_with_top_module}} get{{table.name}}() { return {{table.inner_name}}; }
|
||||
{{~end~}}
|
||||
|
||||
public {{name}}(IJsonLoader loader) throws java.io.IOException {
|
||||
java.util.HashMap<String, Object> tables = new java.util.HashMap<>();
|
||||
{{~for table in tables ~}}
|
||||
{{table.inner_name}} = new {{table.full_name_with_top_module}}(loader.load("{{table.output_data_file}}"));
|
||||
tables.put("{{table.full_name}}", {{table.inner_name}});
|
||||
{{~end~}}
|
||||
|
||||
{{~ for table in tables ~}}
|
||||
{{table.inner_name}}.resolve(tables);
|
||||
{{~end~}}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user