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

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

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

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

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

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

@ -1,11 +1,15 @@
package space.caoshd.otone.entity; package space.caoshd.otone.entity;
import java.util.Map;
public class ContextInfo { public class ContextInfo {
private TableInfo tableInfo; private TableInfo tableInfo;
private ClassInfo classInfo; private ClassInfo classInfo;
private Map<String, Object> extra;
public TableInfo getTableInfo() { public TableInfo getTableInfo() {
return tableInfo; return tableInfo;
} }
@ -14,11 +18,20 @@ public class ContextInfo {
this.tableInfo = tableInfo; this.tableInfo = tableInfo;
} }
public ClassInfo getConfigInfo() { public ClassInfo getClassInfo() {
return classInfo; return classInfo;
} }
public void setConfigInfo(ClassInfo classInfo) { public void setClassInfo(ClassInfo classInfo) {
this.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; package space.caoshd.otone.entity;
import java.util.List; import java.util.List;
import java.util.function.Function;
public class OutputInfo { public class OutputInfo {
@ -10,9 +11,11 @@ public class OutputInfo {
private String packageName; private String packageName;
private String interfacePackageName;
private String packagePath; private String packagePath;
private String outputPath; private Function<String, String> outputFunction;
private String nameSuffix = ""; private String nameSuffix = "";
@ -42,6 +45,14 @@ public class OutputInfo {
this.packageName = packageName; this.packageName = packageName;
} }
public String getInterfacePackageName() {
return interfacePackageName;
}
public void setInterfacePackageName(String interfacePackageName) {
this.interfacePackageName = interfacePackageName;
}
public String getPackagePath() { public String getPackagePath() {
return packagePath; return packagePath;
} }
@ -50,6 +61,10 @@ public class OutputInfo {
this.packagePath = packagePath; this.packagePath = packagePath;
} }
public void setOutputFunction(Function<String, String> outputFunction) {
this.outputFunction = outputFunction;
}
public String getNameSuffix() { public String getNameSuffix() {
return nameSuffix; return nameSuffix;
} }
@ -66,11 +81,9 @@ public class OutputInfo {
this.namePrefix = namePrefix; this.namePrefix = namePrefix;
} }
public String getOutputPath() { public String getOutputPath(String className) {
return outputPath; return outputFunction.apply(className);
} }
public void setOutputPath(String outputPath) {
this.outputPath = outputPath;
}
} }

@ -26,7 +26,8 @@ public class VelocityUtils {
VelocityContext context = new VelocityContext(); VelocityContext context = new VelocityContext();
context.put("tbl", ctx.getTableInfo()); 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()); Template template = Velocity.getTemplate(templatePath, StandardCharsets.UTF_8.name());
try (FileWriter fw = new FileWriter(outputPath)) { try (FileWriter fw = new FileWriter(outputPath)) {

@ -12,6 +12,7 @@ public class SourceBuilderTest {
public void build() { public void build() {
new SourceBuilder() new SourceBuilder()
.addExtra("author", "caoshd") .addExtra("author", "caoshd")
.addExtra("version", "202403")
.build(); .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}; package ${cls.packageName};
/**
public class ${context.className}$!{context.classNameSuffix} { * $!{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