-module(${tableName}_manager).
|
-include_lib("stdlib/include/qlc.hrl").
|
|
-compile(export_all).
|
|
-record(${tableName},{
|
<#list columns as column>
|
${column.fieldName?right_pad(30)}<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
}).
|
|
%% 新建表 ${tableName}_manager:create${className}Table(),
|
create${className}Table() ->
|
Ret = mnesia:create_table(${tableName},
|
[{disc_copies, [node()]},
|
{attributes,
|
record_info(fields, ${tableName})}]),
|
io:format("create_${tableName}_table=~p\n",[Ret]),
|
ok.
|
|
%% 更改表的存储类型为磁盘存储 change${className}TableCopyType(NodeName),
|
change${className}TableCopyType(Node) ->
|
table_manager:change_table_copy_type([Node], ${tableName}),
|
ok.
|
|
%% 测试删除 ${tableName}_manager:testDelete${className}().
|
test${className}Delete() ->
|
delete${className}(""),
|
ok.
|
|
%% 删除 ${tableName}_manager:delete${className}().
|
delete${className}(Id) ->
|
Oid = {${tableName}, Id},
|
F = fun() ->
|
mnesia:delete(Oid)
|
end,
|
mnesia:transaction(F).
|
|
%% 测试保存 ${tableName}_manager:testSave${className}().
|
testSave${className}() ->
|
save${className}(
|
<#list columns as column>
|
""<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
),
|
ok.
|
|
%% 保存 ${tableName}_manager:save${className}().
|
save${className}(
|
<#list columns as column>
|
${column.fieldName?cap_first?right_pad(30)}<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
) ->
|
Row =
|
#${tableName}{
|
<#list columns as column>
|
${("${column.fieldName} = ${column.fieldName?cap_first}")?right_pad(60)}<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
},
|
F = fun()->
|
mnesia:write(Row)
|
end,
|
mnesia:transaction(F).
|
|
|
getValue(Name) ->
|
try
|
list_to_binary(Name)
|
catch
|
error:badarg->
|
''
|
end.
|
|
${tableName}_to_json_encodable(#${tableName}{
|
<#list columns as column>
|
${("${column.fieldName} = ${column.fieldName?cap_first}")?right_pad(60)}<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
}) ->
|
[
|
<#list columns as column>
|
{${("${column.fieldName}, getValue(${column.fieldName?cap_first})}")?right_pad(60)}<#if column_has_next>, <#else>${" "}</#if>%% ${(column_index+1)} ${column.label}
|
</#list>
|
].
|
|
%% 查找列表 ${tableName}_manager:find${className}List().
|
find${className}List() ->
|
F = fun() ->
|
Query = qlc:q([X || X <- mnesia:table(${tableName})]),
|
Results = qlc:e(Query)
|
end,
|
{atomic, ${className}List} = mnesia:transaction(F),
|
${className}Json = jsx:encode(lists:map(fun ${tableName}_to_json_encodable/1, ${className}List)),
|
io_lib:format("~s~n", [${className}Json]).
|
|
%% 根据id查询 ${tableName}_manager:find${className}ById("").
|
find${className}ById(Id) ->
|
F = fun() -> mnesia:read({${tableName}, Id}) end,
|
{_, ${className}List} = mnesia:transaction(F),
|
${className}Json = jsx:encode(lists:map(fun ${tableName}_to_json_encodable/1, ${className}List)),
|
io_lib:format("~s~n", [${className}Json]).
|
|
|
|
|
/////java
|
////////////////////Er${className}
|
package com.basic.security.manager.erlang.model;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import com.basic.security.utils.UnicodeUtil;
|
|
public class Er${className} {
|
|
public static final class FieldNames {
|
<#list columns as column>
|
/**
|
* ${column.label}
|
*/
|
public static final String ${column.fieldName} = "${column.fieldName}";
|
</#list>
|
}
|
|
<#list columns as column>
|
// ${column.label}
|
private String ${column.fieldName};
|
</#list>
|
|
<#list columns as column>
|
/**
|
* Get ${column.label}
|
<#list column.remarkLines as remarkLine>
|
* ${remarkLine}
|
</#list>
|
*/
|
<#if column.columnType == "BLOB" || column.columnType == "CLOB">
|
@Lob
|
</#if>
|
<#if column.isVersion>
|
@Version
|
</#if>
|
public String ${column.getterMethodName}() {
|
return ${column.fieldName};
|
}
|
|
/**
|
* Set ${column.label}
|
<#list column.remarkLines as remarkLine>
|
* ${remarkLine}
|
</#list>
|
*/
|
public void ${column.setterMethodName}(String ${column.fieldName}) {
|
<#if column.fieldType=="String" && 1!=1>
|
this.${column.fieldName} = ${column.fieldName} == null ? null : ${column.fieldName}.trim();
|
<#else>
|
this.${column.fieldName} = ${column.fieldName};
|
</#if>
|
}
|
|
</#list>
|
|
/**
|
* 属性转为数组,方便保存
|
* @return
|
*/
|
public String[] toParameters() {
|
return new String[]{
|
<#list columns as column>
|
${("${column.getterMethodName}()")?right_pad(30)}<#if column_has_next>, <#else>${" "}</#if>// ${(column_index+1)} ${column.label}
|
</#list>
|
};
|
}
|
|
public String toString() {
|
List<String> list = new ArrayList();
|
<#list columns as column>
|
String ${column.fieldName} = ${column.getterMethodName}();
|
if (${column.fieldName} != null && !"".equals(${column.fieldName}.trim())) {
|
list.add("${column.label}=" + ${column.fieldName});
|
}
|
</#list>
|
return list.toString();
|
}
|
}
|
|
|
////////////Er${className}Manager
|
|
|
package com.basic.security.manager.erlang;
|
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import com.basic.security.manager.erlang.model.Er${className};
|
import com.ericsson.otp.erlang.OtpErlangList;
|
import com.ericsson.otp.erlang.OtpErlangObject;
|
import com.ericsson.otp.erlang.OtpErlangString;
|
import com.google.gson.Gson;
|
import com.google.gson.reflect.TypeToken;
|
|
@SuppressWarnings("all")
|
public class Er${className}Manager extends ErBaseManager {
|
|
/**
|
* 保存
|
* @param ${tableName} 信息
|
*/
|
public static Object save${className}(Er${className} ${tableName}) {
|
return Rpc.execute(Rpc.save${className}, ${tableName}.toParameters());
|
}
|
|
/**
|
* 删除
|
* @param id
|
*/
|
public static Object delete${className}(String id) {
|
return Rpc.execute(Rpc.delete${className}, id);
|
}
|
|
/**
|
* 查找列表
|
* @return
|
*/
|
public static List<Er${className}> find${className}List() {
|
List<Er${className}> ${tableName}List = Rpc.list(Rpc.find${className}List);
|
return ${tableName}List;
|
}
|
|
/**
|
* 根据id查询过
|
* @param id
|
* @return
|
*/
|
public static Er${className} find${className}ById(String id) {
|
Er${className} ${tableName} = Rpc.one(Rpc.find${className}ById, id);
|
return ${tableName};
|
}
|
|
/**
|
* Erlang Rpc
|
*/
|
private static class Rpc {
|
static Type ${tableName}ListType = new TypeToken<List<Er${className}>>(){}.getType();
|
static String moduleName = "${tableName}_manager";
|
public static String find${className}List = "find${className}List";
|
public static String find${className}ById = "find${className}ById";
|
public static String save${className} = "save${className}";
|
public static String delete${className} = "delete${className}";
|
|
public static List<Er${className}> list(String rpcMethodName, String... parameters) {
|
return rpcFindList(moduleName, rpcMethodName, ${tableName}ListType, parameters);
|
}
|
|
public static Er${className} one(String rpcMethodName, String... parameters) {
|
return (Er${className})rpcFindOne(moduleName, rpcMethodName, ${tableName}ListType, parameters);
|
}
|
|
public static Object execute(String rpcMethodName, String... parameters) {
|
return sendRPCWitParameters(moduleName, rpcMethodName, parameters);
|
}
|
|
}
|
|
}
|
|
|
|
|
/////////////managerTest
|
|
package com.basic.security.manager.erlang.test;
|
|
import org.junit.Before;
|
import org.junit.Test;
|
|
import com.basic.security.manager.erlang.ErBaseManager;
|
import com.basic.security.manager.erlang.Er${className}Manager;
|
import com.basic.security.manager.erlang.model.Er${className};
|
|
public class Er${className}ManagerTest extends ErBaseManager {
|
|
@Before
|
public void before() {
|
createOtpConnection();
|
}
|
|
@Test
|
public void save${className}() {
|
Er${className} ${tableName} = new Er${className}();
|
${tableName}.setId("1");
|
Er${className}Manager.save${className}(${tableName});
|
}
|
|
@Test
|
public void delete${className}() {
|
System.out.println(Er${className}Manager.delete${className}("12"));
|
}
|
|
|
@Test
|
public void find${className}ById() {
|
System.out.println(Er${className}Manager.find${className}ById("1"));
|
}
|
|
@Test
|
public void find${className}List() {
|
System.out.println(Er${className}Manager.find${className}List());
|
}
|
|
}
|