优化: 修改模板 构建无方法的源文件

master
曹世达 6 months ago
parent 5ea54ca168
commit 5cbfe7c9ca

@ -34,15 +34,20 @@ public class InfoClsBuilder {
return this;
}
public InfoClsBuilder setInterfacePackageName(String interfacePackageName) {
this.classInfo.setInterfacePackageName(interfacePackageName);
return this;
}
public ClassInfo build() {
classInfo.setControllerSuffix(CfgUtils.getControllerNameSuffix());
classInfo.setFormSuffix(CfgUtils.getFormNameSuffix());
classInfo.setQuerySuffix(CfgUtils.getQueryNameSuffix());
classInfo.setViewSuffix(CfgUtils.getViewNameSuffix());
classInfo.setServiceSuffix(CfgUtils.getServiceNameSuffix());
classInfo.setServieInterfacePrefix(CfgUtils.getServiceInterfacePrefix());
classInfo.setMapperSuffix(CfgUtils.getMapperNameSuffix());
classInfo.setPoSuffix(CfgUtils.getPoNameSuffix());
classInfo.setControllerNameSuffix(CfgUtils.getControllerNameSuffix());
classInfo.setFormNameSuffix(CfgUtils.getFormNameSuffix());
classInfo.setQueryNameSuffix(CfgUtils.getQueryNameSuffix());
classInfo.setViewNameSuffix(CfgUtils.getViewNameSuffix());
classInfo.setServiceNameSuffix(CfgUtils.getServiceNameSuffix());
classInfo.setServieInterfaceNamePrefix(CfgUtils.getServiceInterfacePrefix());
classInfo.setMapperNameSuffix(CfgUtils.getMapperNameSuffix());
classInfo.setPoNameSuffix(CfgUtils.getPoNameSuffix());
return classInfo;
}

@ -8,12 +8,8 @@ import java.util.List;
public class InfoOutBuilder {
private OutputInfo outputInfo = new OutputInfo();
private final OutputInfo outputInfo = new OutputInfo();
public InfoOutBuilder init(OutputInfo outputInfo) {
this.outputInfo = outputInfo;
return this;
}
public InfoOutBuilder setTableInfoList(List<TableInfo> tableInfoList) {
this.outputInfo.setTableInfoList(tableInfoList);
@ -45,18 +41,18 @@ public class InfoOutBuilder {
return this;
}
public InfoOutBuilder setClassName(String className) {
String outputPath = CfgUtils.getJavaFilePath(
this.outputInfo.getPackagePath(),
className,
this.outputInfo.getNameSuffix(),
this.outputInfo.getNamePrefix()
);
this.outputInfo.setOutputPath(outputPath);
public InfoOutBuilder setInterfacePackageName(String interfacePackageName) {
this.outputInfo.setInterfacePackageName(interfacePackageName);
return this;
}
public OutputInfo build() {
this.outputInfo.setOutputFunction(className -> CfgUtils.getJavaFilePath(
this.outputInfo.getPackagePath(),
className,
this.outputInfo.getNameSuffix(),
this.outputInfo.getNamePrefix()
));
return this.outputInfo;
}

@ -32,6 +32,7 @@ public class SourceBuilder {
private static ClassInfo buildClassInfo(TableInfo tableInfo, OutputInfo outputInfo) {
return new InfoClsBuilder().setTableName(tableInfo.getTableName())
.setPackageName(outputInfo.getPackageName())
.setInterfacePackageName(outputInfo.getInterfacePackageName())
.build();
}
@ -92,51 +93,42 @@ public class SourceBuilder {
}
private void build(TableInfo tableInfo, OutputInfo outputInfo) {
// 创建数据文件夹
FileUtils.mkdir(outputInfo.getPackagePath());
// 创建上下文环境信息
ContextInfo contextInfo = new ContextInfo();
// 设置表信息
contextInfo.setTableInfo(tableInfo);
// 设置类信息
ClassInfo classInfo = buildClassInfo(tableInfo, outputInfo);
contextInfo.setConfigInfo(classInfo);
// 完善输出信息 计算输出路径
enhanceOutputInfo(outputInfo, classInfo);
ContextInfo contextInfo = createContextInfo(tableInfo, classInfo);
// 判断输出文件是否已存在
if (!FileUtils.exists(outputInfo.getOutputPath())) {
String outputPath = outputInfo.getOutputPath(classInfo.getClassName());
if (!FileUtils.exists(outputPath)) {
// 输出文件不存在 直接生成
VelocityUtils.render(
outputInfo.getTemplatePath(),
outputInfo.getOutputPath(),
contextInfo
);
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
}
// 输出文件存在 判断是否可以覆盖
if (CONFIG.getBoolean(CfgUtils.OUTPUT_COVER_IF_EXIST)) {
// 配置可以执行覆盖 覆盖生成
VelocityUtils.render(
outputInfo.getTemplatePath(),
outputInfo.getOutputPath(),
contextInfo
);
VelocityUtils.render(outputInfo.getTemplatePath(), outputPath, contextInfo);
} else {
// 配置不可以执行覆盖 提示错误消息
LOGGER.warn(
"output file already exists: {}, " + "please remove it or enable auto "
+ "cover exist file,"
+ " config.properties should like [output.cover_if_exists=true]",
outputInfo.getOutputPath()
outputPath
);
}
}
private void enhanceOutputInfo(OutputInfo outputInfo, ClassInfo classInfo) {
new InfoOutBuilder().init(outputInfo).setClassName(classInfo.getClassName()).build();
private ContextInfo createContextInfo(TableInfo tableInfo, ClassInfo classInfo) {
ContextInfo result = new ContextInfo();
// 设置表信息
result.setTableInfo(tableInfo);
// 设置类信息
result.setClassInfo(classInfo);
// 设置附加信息
result.setExtra(extra);
return result;
}
private void build(TableInfo tableInfo, List<OutputInfo> outputInfoList) {
@ -166,6 +158,7 @@ public class SourceBuilder {
.setTemplatePath(CfgUtils.getServiceTemplatePath())
.setPackagePath(CfgUtils.getServicePackagePath())
.setPackageName(CfgUtils.getServicePackageName())
.setInterfacePackageName(CfgUtils.getServiceInterfacePackageName())
.build(),
// SERVICE INTERFACE
new InfoOutBuilder().setNameSuffix(CfgUtils.getServiceNameSuffix())

@ -4,23 +4,25 @@ public class ClassInfo {
private String packageName;
private String interfacePackageName;
private String className;
private String controllerSuffix;
private String controllerNameSuffix;
private String serviceSuffix;
private String serviceNameSuffix;
private String servieInterfacePrefix;
private String servieInterfaceNamePrefix;
private String mapperSuffix;
private String mapperNameSuffix;
private String poSuffix;
private String poNameSuffix;
private String viewSuffix;
private String viewNameSuffix;
private String formSuffix;
private String formNameSuffix;
private String querySuffix;
private String queryNameSuffix;
public String getPackageName() {
return packageName;
@ -30,6 +32,14 @@ public class ClassInfo {
this.packageName = packageName;
}
public String getInterfacePackageName() {
return interfacePackageName;
}
public void setInterfacePackageName(String interfacePackageName) {
this.interfacePackageName = interfacePackageName;
}
public String getClassName() {
return className;
}
@ -38,67 +48,67 @@ public class ClassInfo {
this.className = className;
}
public String getControllerSuffix() {
return controllerSuffix;
public String getControllerNameSuffix() {
return controllerNameSuffix;
}
public void setControllerSuffix(String controllerSuffix) {
this.controllerSuffix = controllerSuffix;
public void setControllerNameSuffix(String controllerNameSuffix) {
this.controllerNameSuffix = controllerNameSuffix;
}
public String getServiceSuffix() {
return serviceSuffix;
public String getServiceNameSuffix() {
return serviceNameSuffix;
}
public void setServiceSuffix(String serviceSuffix) {
this.serviceSuffix = serviceSuffix;
public void setServiceNameSuffix(String serviceNameSuffix) {
this.serviceNameSuffix = serviceNameSuffix;
}
public String getServieInterfacePrefix() {
return servieInterfacePrefix;
public String getServieInterfaceNamePrefix() {
return servieInterfaceNamePrefix;
}
public void setServieInterfacePrefix(String servieInterfacePrefix) {
this.servieInterfacePrefix = servieInterfacePrefix;
public void setServieInterfaceNamePrefix(String servieInterfaceNamePrefix) {
this.servieInterfaceNamePrefix = servieInterfaceNamePrefix;
}
public String getMapperSuffix() {
return mapperSuffix;
public String getMapperNameSuffix() {
return mapperNameSuffix;
}
public void setMapperSuffix(String mapperSuffix) {
this.mapperSuffix = mapperSuffix;
public void setMapperNameSuffix(String mapperNameSuffix) {
this.mapperNameSuffix = mapperNameSuffix;
}
public String getPoSuffix() {
return poSuffix;
public String getPoNameSuffix() {
return poNameSuffix;
}
public void setPoSuffix(String poSuffix) {
this.poSuffix = poSuffix;
public void setPoNameSuffix(String poNameSuffix) {
this.poNameSuffix = poNameSuffix;
}
public String getViewSuffix() {
return viewSuffix;
public String getViewNameSuffix() {
return viewNameSuffix;
}
public void setViewSuffix(String viewSuffix) {
this.viewSuffix = viewSuffix;
public void setViewNameSuffix(String viewNameSuffix) {
this.viewNameSuffix = viewNameSuffix;
}
public String getFormSuffix() {
return formSuffix;
public String getFormNameSuffix() {
return formNameSuffix;
}
public void setFormSuffix(String formSuffix) {
this.formSuffix = formSuffix;
public void setFormNameSuffix(String formNameSuffix) {
this.formNameSuffix = formNameSuffix;
}
public String getQuerySuffix() {
return querySuffix;
public String getQueryNameSuffix() {
return queryNameSuffix;
}
public void setQuerySuffix(String querySuffix) {
this.querySuffix = querySuffix;
public void setQueryNameSuffix(String queryNameSuffix) {
this.queryNameSuffix = queryNameSuffix;
}
}

@ -1,11 +1,15 @@
package space.caoshd.otone.entity;
import java.util.Map;
public class ContextInfo {
private TableInfo tableInfo;
private ClassInfo classInfo;
private Map<String, Object> extra;
public TableInfo getTableInfo() {
return tableInfo;
}
@ -14,11 +18,20 @@ public class ContextInfo {
this.tableInfo = tableInfo;
}
public ClassInfo getConfigInfo() {
public ClassInfo getClassInfo() {
return classInfo;
}
public void setConfigInfo(ClassInfo classInfo) {
public void setClassInfo(ClassInfo classInfo) {
this.classInfo = classInfo;
}
public Map<String, Object> getExtra() {
return extra;
}
public void setExtra(Map<String, Object> extra) {
this.extra = extra;
}
}

@ -1,6 +1,7 @@
package space.caoshd.otone.entity;
import java.util.List;
import java.util.function.Function;
public class OutputInfo {
@ -10,9 +11,11 @@ public class OutputInfo {
private String packageName;
private String interfacePackageName;
private String packagePath;
private String outputPath;
private Function<String, String> outputFunction;
private String nameSuffix = "";
@ -42,6 +45,14 @@ public class OutputInfo {
this.packageName = packageName;
}
public String getInterfacePackageName() {
return interfacePackageName;
}
public void setInterfacePackageName(String interfacePackageName) {
this.interfacePackageName = interfacePackageName;
}
public String getPackagePath() {
return packagePath;
}
@ -50,6 +61,10 @@ public class OutputInfo {
this.packagePath = packagePath;
}
public void setOutputFunction(Function<String, String> outputFunction) {
this.outputFunction = outputFunction;
}
public String getNameSuffix() {
return nameSuffix;
}
@ -66,11 +81,9 @@ public class OutputInfo {
this.namePrefix = namePrefix;
}
public String getOutputPath() {
return outputPath;
public String getOutputPath(String className) {
return outputFunction.apply(className);
}
public void setOutputPath(String outputPath) {
this.outputPath = outputPath;
}
}

@ -26,7 +26,8 @@ public class VelocityUtils {
VelocityContext context = new VelocityContext();
context.put("tbl", ctx.getTableInfo());
context.put("cfg", ctx.getConfigInfo());
context.put("cls", ctx.getClassInfo());
context.put("ext", ctx.getExtra());
Template template = Velocity.getTemplate(templatePath, StandardCharsets.UTF_8.name());
try (FileWriter fw = new FileWriter(outputPath)) {

@ -12,6 +12,7 @@ public class SourceBuilderTest {
public void build() {
new SourceBuilder()
.addExtra("author", "caoshd")
.addExtra("version", "202403")
.build();
}

@ -1,4 +1,13 @@
package ${context.packageName};
package ${cls.packageName};
public class ${context.className}$!{context.classNameSuffix} {
import org.springframework.web.bind.annotation.RestController;
/**
* $!{tbl.comment}控制器
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
@RestController
public class ${cls.className}$!{cls.controllerNameSuffix} {
}

@ -1,4 +1,10 @@
package ${context.packageName};
package ${cls.packageName};
public class ${context.className}$!{context.classNameSuffix} {
/**
* $!{tbl.comment}表单提交
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.formNameSuffix} {
}

@ -1,4 +1,10 @@
package ${context.packageName};
package ${cls.packageName};
public class ${context.className}$!{context.classNameSuffix} {
/**
* $!{tbl.comment}数据访问
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.mapperNameSuffix} {
}

@ -1,4 +1,9 @@
package ${context.packageName};
public class ${context.className}$!{context.classNameSuffix} {
package ${cls.packageName};
/**
* $!{tbl.comment}数据实体
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.poNameSuffix} {
}

@ -1,4 +1,11 @@
package ${context.packageName};
package ${cls.packageName};
/**
* $!{tbl.comment}查询
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.queryNameSuffix} {
public class ${context.className}$!{context.classNameSuffix} {
}

@ -1,4 +1,11 @@
package ${context.packageName};
package ${cls.packageName};
/**
* $!{tbl.comment}服务接口
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public interface $!{cls.servieInterfaceNamePrefix}${cls.className}$!{cls.serviceNameSuffix} {
public class $!{context.classNamePrefix}${context.className}$!{context.classNameSuffix} {
}

@ -1,4 +1,13 @@
package ${context.packageName};
package ${cls.packageName};
import ${cls.interfacePackageName}.$!{cls.servieInterfaceNamePrefix}${cls.className}$!{cls.serviceNameSuffix};
/**
* $!{tbl.comment}服务
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.serviceNameSuffix} implements $!{cls.servieInterfaceNamePrefix}${cls.className}$!{cls.serviceNameSuffix} {
public class ${context.className}$!{context.classNameSuffix} {
}

@ -1,4 +1,11 @@
package ${context.packageName};
package ${cls.packageName};
/**
* $!{tbl.comment}视图
*
* @author $!{ext.author}
* @version $!{ext.version}
*/
public class ${cls.className}$!{cls.viewNameSuffix} {
public class ${context.className}$!{context.classNameSuffix} {
}
Loading…
Cancel
Save