|
|
@ -2,7 +2,6 @@ package space.caoshd.otone.builder;
|
|
|
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import space.caoshd.otone.entity.ClassInfo;
|
|
|
|
|
|
|
|
import space.caoshd.otone.entity.ContextInfo;
|
|
|
|
import space.caoshd.otone.entity.ContextInfo;
|
|
|
|
import space.caoshd.otone.entity.OutputInfo;
|
|
|
|
import space.caoshd.otone.entity.OutputInfo;
|
|
|
|
import space.caoshd.otone.entity.TableInfo;
|
|
|
|
import space.caoshd.otone.entity.TableInfo;
|
|
|
@ -10,6 +9,7 @@ import space.caoshd.otone.helper.PropHelper;
|
|
|
|
import space.caoshd.otone.util.CfgUtils;
|
|
|
|
import space.caoshd.otone.util.CfgUtils;
|
|
|
|
import space.caoshd.otone.util.FileUtils;
|
|
|
|
import space.caoshd.otone.util.FileUtils;
|
|
|
|
import space.caoshd.otone.util.PathConsts;
|
|
|
|
import space.caoshd.otone.util.PathConsts;
|
|
|
|
|
|
|
|
import space.caoshd.otone.util.StrUtils;
|
|
|
|
import space.caoshd.otone.util.VelocityUtils;
|
|
|
|
import space.caoshd.otone.util.VelocityUtils;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
@ -29,13 +29,6 @@ public class SourceBuilder {
|
|
|
|
private List<TableInfo> tableInfoList;
|
|
|
|
private List<TableInfo> tableInfoList;
|
|
|
|
private List<OutputInfo> outputInfoList;
|
|
|
|
private List<OutputInfo> outputInfoList;
|
|
|
|
|
|
|
|
|
|
|
|
private static ClassInfo buildClassInfo(TableInfo tableInfo, OutputInfo outputInfo) {
|
|
|
|
|
|
|
|
return new InfoClsBuilder().setTableName(tableInfo.getTableName())
|
|
|
|
|
|
|
|
.setPackageName(outputInfo.getPackageName())
|
|
|
|
|
|
|
|
.setInterfacePackageName(outputInfo.getInterfacePackageName())
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public SourceBuilder setTableInfo(TableInfo tableInfo) {
|
|
|
|
public SourceBuilder setTableInfo(TableInfo tableInfo) {
|
|
|
|
this.tableInfo = tableInfo;
|
|
|
|
this.tableInfo = tableInfo;
|
|
|
|
return this;
|
|
|
|
return this;
|
|
|
@ -96,10 +89,10 @@ public class SourceBuilder {
|
|
|
|
// 创建数据文件夹
|
|
|
|
// 创建数据文件夹
|
|
|
|
FileUtils.mkdir(outputInfo.getPackagePath());
|
|
|
|
FileUtils.mkdir(outputInfo.getPackagePath());
|
|
|
|
// 创建上下文环境信息
|
|
|
|
// 创建上下文环境信息
|
|
|
|
ClassInfo classInfo = buildClassInfo(tableInfo, outputInfo);
|
|
|
|
ContextInfo contextInfo = createContextInfo(tableInfo);
|
|
|
|
ContextInfo contextInfo = createContextInfo(tableInfo, classInfo);
|
|
|
|
|
|
|
|
// 判断输出文件是否已存在
|
|
|
|
// 判断输出文件是否已存在
|
|
|
|
String outputPath = outputInfo.getOutputPath(classInfo.getClassName());
|
|
|
|
String className = (String) contextInfo.getExtra().get("ClassName");
|
|
|
|
|
|
|
|
String outputPath = outputInfo.getOutputPath(className);
|
|
|
|
if (!FileUtils.exists(outputPath)) {
|
|
|
|
if (!FileUtils.exists(outputPath)) {
|
|
|
|
// 输出文件不存在 直接生成
|
|
|
|
// 输出文件不存在 直接生成
|
|
|
|
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
|
|
|
|
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
|
|
|
@ -111,30 +104,33 @@ public class SourceBuilder {
|
|
|
|
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
|
|
|
|
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
// 配置不可以执行覆盖 提示错误消息
|
|
|
|
// 配置不可以执行覆盖 提示错误消息
|
|
|
|
LOGGER.warn("output file already exists: {}, " + "please remove it or enable auto " + "cover exist file,"
|
|
|
|
LOGGER.warn(
|
|
|
|
|
|
|
|
"output file already exists: {}, " + "please remove it or enable auto "
|
|
|
|
|
|
|
|
+ "cover exist file,"
|
|
|
|
+ " config.properties should like [output.cover_if_exists=true]",
|
|
|
|
+ " config.properties should like [output.cover_if_exists=true]",
|
|
|
|
outputPath
|
|
|
|
outputPath
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private ContextInfo createContextInfo(TableInfo tableInfo, ClassInfo classInfo) {
|
|
|
|
private ContextInfo createContextInfo(TableInfo tableInfo) {
|
|
|
|
ContextInfo result = new ContextInfo();
|
|
|
|
ContextInfo result = new ContextInfo();
|
|
|
|
// 设置表信息
|
|
|
|
// 设置表信息
|
|
|
|
result.setTableInfo(tableInfo);
|
|
|
|
result.setTableInfo(tableInfo);
|
|
|
|
// 设置类信息
|
|
|
|
|
|
|
|
result.setClassInfo(classInfo);
|
|
|
|
|
|
|
|
// 设置附加信息
|
|
|
|
// 设置附加信息
|
|
|
|
result.setExtra(loadExtra());
|
|
|
|
result.setExtra(loadExtra(tableInfo.getTableName()));
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private Map<String, Object> loadExtra() {
|
|
|
|
private Map<String, Object> loadExtra(String tableName) {
|
|
|
|
extra.put("mapperPackageName", CfgUtils.getMapperPackageName());
|
|
|
|
extra.put("mapperPackageName", CfgUtils.getMapperPackageName());
|
|
|
|
extra.put("entityPackageName", CfgUtils.getEntityPackageName());
|
|
|
|
extra.put("entityPackageName", CfgUtils.getEntityPackageName());
|
|
|
|
extra.put("resPackageName", CfgUtils.getResPackageName());
|
|
|
|
extra.put("resPackageName", CfgUtils.getResPackageName());
|
|
|
|
extra.put("reqPackageName", CfgUtils.getReqPackageName());
|
|
|
|
extra.put("reqPackageName", CfgUtils.getReqPackageName());
|
|
|
|
extra.put("queryPackageName", CfgUtils.getQueryPackageName());
|
|
|
|
extra.put("queryPackageName", CfgUtils.getQueryPackageName());
|
|
|
|
|
|
|
|
extra.put("servicePackageName", CfgUtils.getServicePackageName());
|
|
|
|
|
|
|
|
extra.put("controllerPackageName", CfgUtils.getControllerPackageName());
|
|
|
|
|
|
|
|
extra.put("serviceInterfacePackageName", CfgUtils.getServiceInterfacePackageName());
|
|
|
|
extra.put("controllerNameSuffix", CfgUtils.getControllerNameSuffix());
|
|
|
|
extra.put("controllerNameSuffix", CfgUtils.getControllerNameSuffix());
|
|
|
|
extra.put("serviceNameSuffix", CfgUtils.getServiceNameSuffix());
|
|
|
|
extra.put("serviceNameSuffix", CfgUtils.getServiceNameSuffix());
|
|
|
|
extra.put("servieInterfaceNamePrefix", CfgUtils.getServiceInterfacePrefix());
|
|
|
|
extra.put("servieInterfaceNamePrefix", CfgUtils.getServiceInterfacePrefix());
|
|
|
@ -144,9 +140,21 @@ public class SourceBuilder {
|
|
|
|
extra.put("reqNameSuffix", CfgUtils.getReqNameSuffix());
|
|
|
|
extra.put("reqNameSuffix", CfgUtils.getReqNameSuffix());
|
|
|
|
extra.put("queryNameSuffix", CfgUtils.getQueryNameSuffix());
|
|
|
|
extra.put("queryNameSuffix", CfgUtils.getQueryNameSuffix());
|
|
|
|
extra.put("mybatisMapperEnable", CfgUtils.mybatisMapperEnable());
|
|
|
|
extra.put("mybatisMapperEnable", CfgUtils.mybatisMapperEnable());
|
|
|
|
|
|
|
|
String tableNameWithoutPrefix = getTableNameWithoutPrefix(tableName);
|
|
|
|
|
|
|
|
extra.put("ClassName", StrUtils.toCamelCase(tableNameWithoutPrefix, true));
|
|
|
|
|
|
|
|
extra.put("className", StrUtils.toCamelCase(tableNameWithoutPrefix, false));
|
|
|
|
|
|
|
|
|
|
|
|
return extra;
|
|
|
|
return extra;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String getTableNameWithoutPrefix(String tableNameWithoutPrefix) {
|
|
|
|
|
|
|
|
List<String> tablePrefixes = CONFIG.getStringList(CfgUtils.DATABASE_TABLE_PREFIXES);
|
|
|
|
|
|
|
|
for (String tablePrefix : tablePrefixes) {
|
|
|
|
|
|
|
|
tableNameWithoutPrefix = StrUtils.removePrefix(tableNameWithoutPrefix, tablePrefix);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return tableNameWithoutPrefix;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void build(TableInfo tableInfo, List<OutputInfo> outputInfoList) {
|
|
|
|
private void build(TableInfo tableInfo, List<OutputInfo> outputInfoList) {
|
|
|
|
// 循环输出信息
|
|
|
|
// 循环输出信息
|
|
|
|
for (OutputInfo outputInfo : outputInfoList) {
|
|
|
|
for (OutputInfo outputInfo : outputInfoList) {
|
|
|
@ -157,57 +165,61 @@ public class SourceBuilder {
|
|
|
|
|
|
|
|
|
|
|
|
private List<OutputInfo> defaultOutputInfoList() {
|
|
|
|
private List<OutputInfo> defaultOutputInfoList() {
|
|
|
|
return Arrays.asList(
|
|
|
|
return Arrays.asList(
|
|
|
|
// PO
|
|
|
|
// ENTITY
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getEntityNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getEntityNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getEntityTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getEntityTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getEntityPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getEntityPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getEntityPackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// MAPPER
|
|
|
|
// MAPPER
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getMapperNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getMapperNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getMapperTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getMapperTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getMapperPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getMapperPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getMapperPackageName())
|
|
|
|
|
|
|
|
.setEntityPackageName(CfgUtils.getEntityPackageName())
|
|
|
|
|
|
|
|
.setQueryPackageName(CfgUtils.getQueryPackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// SERVICE
|
|
|
|
// SERVICE
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getServiceNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getServiceTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getServiceTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getServicePackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getServicePackagePath())
|
|
|
|
.setPackageName(CfgUtils.getServicePackageName())
|
|
|
|
|
|
|
|
.setInterfacePackageName(CfgUtils.getServiceInterfacePackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// SERVICE INTERFACE
|
|
|
|
// SERVICE INTERFACE
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
.setNamePrefix(CfgUtils.getServiceInterfacePrefix())
|
|
|
|
.setNamePrefix(CfgUtils.getServiceInterfacePrefix())
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getServiceNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getServiceInterfaceTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getServiceInterfaceTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getServiceInterfacePackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getServiceInterfacePackagePath())
|
|
|
|
.setPackageName(CfgUtils.getServiceInterfacePackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// CONTROLLER
|
|
|
|
// CONTROLLER
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getControllerNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getControllerNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getControllerTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getControllerTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getControllerPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getControllerPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getControllerPackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// VIEW
|
|
|
|
// VIEW
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getResNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getResNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getResTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getResTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getResPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getResPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getResPackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// FORM
|
|
|
|
// FORM
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getReqNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getReqNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getReqTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getReqTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getReqPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getReqPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getReqPackageName())
|
|
|
|
|
|
|
|
.build(),
|
|
|
|
.build(),
|
|
|
|
// QUERY
|
|
|
|
// QUERY
|
|
|
|
new InfoOutBuilder().setNameSuffix(CfgUtils.getQueryNameSuffix())
|
|
|
|
new InfoOutBuilder()
|
|
|
|
|
|
|
|
.setNamePrefix("")
|
|
|
|
|
|
|
|
.setNameSuffix(CfgUtils.getQueryNameSuffix())
|
|
|
|
.setTemplatePath(CfgUtils.getQueryTemplatePath())
|
|
|
|
.setTemplatePath(CfgUtils.getQueryTemplatePath())
|
|
|
|
.setPackagePath(CfgUtils.getQueryPackagePath())
|
|
|
|
.setPackagePath(CfgUtils.getQueryPackagePath())
|
|
|
|
.setPackageName(CfgUtils.getQueryPackageName())
|
|
|
|
|
|
|
|
.build()
|
|
|
|
.build()
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|