Skip to content

Commit 1a2163a

Browse files
committed
1. 增加代码格式化的工具类
1 parent 580d200 commit 1a2163a

File tree

4 files changed

+107
-63
lines changed

4 files changed

+107
-63
lines changed

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,13 @@
205205
<version>1.4.0</version>
206206
</dependency>
207207

208+
<!-- 代码格式化依赖-->
209+
<dependency>
210+
<groupId>com.google.googlejavaformat</groupId>
211+
<artifactId>google-java-format</artifactId>
212+
<version>1.17.0</version> <!-- 请使用最新版本 -->
213+
</dependency>
214+
208215
</dependencies>
209216

210217
<build>
Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.tml.otowbackend.engine.generator.template.java;
22

3-
43
import com.baomidou.mybatisplus.annotation.FieldFill;
54
import com.baomidou.mybatisplus.annotation.TableField;
65
import com.baomidou.mybatisplus.annotation.TableId;
@@ -54,6 +53,7 @@ public InitTemplate(FuncPackManager funcPackManager, String className, String ta
5453
}
5554

5655
public void initTemplate() {
56+
judgeMetalField();
5757
entityTemplate = getEntityTemplate();
5858
mapperTemplate = getMapperTemplate();
5959
serviceTemplate = getServiceTemplate();
@@ -68,78 +68,60 @@ private String generateStringWithTemplate(VelocityOTOWTemplate template) {
6868
public String generateEntity() {
6969
return generateStringWithTemplate(entityTemplate);
7070
}
71+
7172
public String generateMapper() {
7273
return generateStringWithTemplate(mapperTemplate);
7374
}
75+
7476
public String generateService() {
7577
return generateStringWithTemplate(serviceTemplate);
7678
}
79+
7780
public String generateServiceImpl() {
7881
return generateStringWithTemplate(serviceImplTemplate);
7982
}
83+
8084
public String generateController() {
8185
return generateStringWithTemplate(controllerTemplate);
8286
}
8387

84-
// 加强判断
85-
private static List<MetalField> judgeMetalField(List<MetalField> fields){
86-
MetaAnnotation fillAnnotation = new MetaAnnotation(TableField.class, "fill", "FieldFill.INSERT_UPDATE", FieldFill.class);
87-
MetaAnnotation tableId = new MetaAnnotation(TableId.class);
88-
// 判断id 加入时间 逻辑删除
89-
for (MetalField metalField : fields) {
90-
// 判断是否是 id 字段,若是则添加 @TableId 注解 和 类型
91-
if (metalField.getName().equals("id")) {
92-
metalField.addAnnotations(java.util.List.of(tableId)); // 添加 TableId 注解
93-
metalField.setClazz("String");
94-
}
95-
// 判断是否有 类型 ,没有就添加为String
96-
if (StringUtils.isBlank(metalField.getClazz())){
97-
metalField.setClazz("String");
98-
}
99-
}
100-
// 添加 createTime、updateTime、逻辑删除字段(假设为 "deleted")
101-
MetalField createTime = new MetalField("createTime", Date.class, fillAnnotation);
102-
MetalField updateTime = new MetalField("updateTime", Date.class, fillAnnotation);
103-
MetalField deleted = new MetalField("deleted",String.class);
104-
105-
fields.add(createTime);
106-
fields.add(updateTime);
107-
fields.add(deleted);
108-
109-
return fields;
110-
}
111-
11288
// 根据给定的实体类名、字段生成实体模板
11389
private EntityTemplate getEntityTemplate() {
11490
EntityTemplate entityTemplate = new EntityTemplate(entityPackagePath, className, tableName);
115-
116-
fields = judgeMetalField(fields);
11791
entityTemplate.addModelFields(fields);
11892
return entityTemplate;
11993
}
12094

121-
// 生成 ServiceTemplate
95+
private MapperTemplate getMapperTemplate() {
96+
return new MapperTemplate(mapperPackagePath, className, entityTemplate);
97+
}
98+
12299
private ServiceTemplate getServiceTemplate() {
123100
ServiceTemplate userService = new ServiceTemplate(servicePackagePath, className);
124101
MetaMethodParam metaMethodParam = new MetaMethodParam(className, userService.getAllPackagePath(), className.toLowerCase());
125-
126-
// 添加功能包
127102
for (String featureId : featureIds) {
128103
AbstrateFunctionPack pack = funcPackManager.getFunctionPackById(featureId);
129104
pack.addParams("metaMethodParam", metaMethodParam);
130105
pack.generateService(userService);
131106
}
132-
133107
return userService;
134108
}
135109

136-
// 根据选择生成,返回
137-
private ControllerTemplate getControllerTemplate(){
138-
ControllerTemplate userController = new ControllerTemplate(entityPackagePath, className, "/"+className.toLowerCase());
110+
private ServiceImplTemplate getServiceImplTemplate() {
111+
ServiceImplTemplate serviceImplTemplate = new ServiceImplTemplate(serviceImplPackagePath, className, serviceTemplate);
112+
serviceImplTemplate.addMapper(mapperTemplate);
113+
for (String featureId : featureIds) {
114+
AbstrateFunctionPack pack = funcPackManager.getFunctionPackById(featureId);
115+
pack.addParams("className", className);
116+
pack.generateServiceImpl(serviceImplTemplate);
117+
}
118+
return serviceImplTemplate;
119+
}
120+
121+
private ControllerTemplate getControllerTemplate() {
122+
ControllerTemplate userController = new ControllerTemplate(entityPackagePath, className, "/" + className.toLowerCase());
139123
userController.addService(serviceTemplate);
140124
String classLower = serviceTemplate.getClassName().toLowerCase();
141-
142-
// 功能包
143125
for (String featureId : featureIds) {
144126
AbstrateFunctionPack pack = funcPackManager.getFunctionPackById(featureId);
145127
pack.addParams("className", className);
@@ -149,22 +131,29 @@ private ControllerTemplate getControllerTemplate(){
149131
return userController;
150132
}
151133

152-
153-
private MapperTemplate getMapperTemplate(){
154-
MapperTemplate mapperTemplate = new MapperTemplate(mapperPackagePath,className, entityTemplate);
155-
return mapperTemplate;
156-
}
157-
158-
private ServiceImplTemplate getServiceImplTemplate(){
159-
ServiceImplTemplate serviceImplTemplate = new ServiceImplTemplate(serviceImplPackagePath, className, serviceTemplate);
160-
serviceImplTemplate.addMapper(mapperTemplate);
161-
162-
// 添加功能包
163-
for (String featureId : featureIds) {
164-
AbstrateFunctionPack pack = funcPackManager.getFunctionPackById(featureId);
165-
pack.addParams("className", className);
166-
pack.generateServiceImpl(serviceImplTemplate);
134+
// 加强判断
135+
private void judgeMetalField() {
136+
MetaAnnotation fillAnnotation = new MetaAnnotation(TableField.class, "fill", "FieldFill.INSERT_UPDATE", FieldFill.class);
137+
MetaAnnotation tableId = new MetaAnnotation(TableId.class);
138+
// 判断id 加入时间 逻辑删除
139+
for (MetalField metalField : fields) {
140+
// 判断是否是 id 字段,若是则添加 @TableId 注解 和 类型
141+
if (metalField.getName().equals("id")) {
142+
metalField.addAnnotations(java.util.List.of(tableId)); // 添加 TableId 注解
143+
metalField.setClazz("String");
144+
}
145+
// 判断是否有 类型 ,没有就添加为String
146+
if (StringUtils.isBlank(metalField.getClazz())) {
147+
metalField.setClazz("String");
148+
}
167149
}
168-
return serviceImplTemplate;
150+
// 添加 createTime、updateTime、逻辑删除字段(假设为 "deleted")
151+
MetalField createTime = new MetalField("createTime", Date.class, fillAnnotation);
152+
MetalField updateTime = new MetalField("updateTime", Date.class, fillAnnotation);
153+
MetalField deleted = new MetalField("deleted", String.class);
154+
155+
fields.add(createTime);
156+
fields.add(updateTime);
157+
fields.add(deleted);
169158
}
170159
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.tml.otowbackend.util;
2+
3+
import com.google.googlejavaformat.java.Formatter;
4+
import com.google.googlejavaformat.java.FormatterException;
5+
import lombok.extern.slf4j.Slf4j;
6+
7+
import java.util.ArrayList;
8+
import java.util.Arrays;
9+
import java.util.List;
10+
11+
/**
12+
* 描述: 代码格式化工具类
13+
* @author suifeng
14+
* 日期: 2024/12/18
15+
*/
16+
@Slf4j
17+
public class CodeFormatterUtil {
18+
19+
/**
20+
* 格式化 Java 代码
21+
*
22+
* @param code 未格式化的 Java 代码
23+
* @return 格式化后的 Java 代码
24+
*/
25+
public static String formatCode(String code) {
26+
Formatter formatter = new Formatter();
27+
try {
28+
return formatter.formatSource(code);
29+
} catch (FormatterException e) {
30+
log.error("代码格式化失败");
31+
return code;
32+
}
33+
}
34+
35+
/**
36+
* 将代码字符串切分成行,并保留空行
37+
*
38+
* @param code 代码字符串
39+
* @return 包含代码每一行的 List,空行也作为一个元素
40+
*/
41+
public static List<String> splitCodeIntoLines(String code) {
42+
if (code == null || code.isEmpty()) {
43+
return new ArrayList<>();
44+
}
45+
// 使用正则表达式 "\r?\n" 兼容 Windows 和 Unix 的换行符
46+
return Arrays.asList(code.split("\\r?\\n"));
47+
}
48+
}

src/test/java/com/tml/otowbackend/GenerateTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
import com.tml.otowbackend.engine.generator.template.java.InitConfigTemplate;
55
import com.tml.otowbackend.engine.generator.template.java.InitTemplate;
66
import com.tml.otowbackend.engine.generator.template.meta.MetalField;
7+
import com.tml.otowbackend.util.CodeFormatterUtil;
78
import lombok.extern.slf4j.Slf4j;
89
import org.junit.Test;
910
import org.junit.runner.RunWith;
1011
import org.springframework.boot.test.context.SpringBootTest;
1112
import org.springframework.test.context.junit4.SpringRunner;
12-
import org.springframework.test.context.web.WebAppConfiguration;
1313

1414
import javax.annotation.Resource;
1515
import java.util.ArrayList;
@@ -35,21 +35,21 @@ public void generateInitTemplate() {
3535
fields.add(new MetalField("uid", String.class));
3636
fields.add(new MetalField("uid", String.class));
3737
fields.add(new MetalField("avatar", String.class));
38-
fields.add(new MetalField("cid", int.class));
38+
fields.add(new MetalField("cid", Integer.class));
3939

4040
System.out.println("================================================================================");
4141
InitTemplate initTemplate = new InitTemplate(funcPackManager, className, tableName, fields, List.of("1001", "1002", "1003", "1004"));
4242
initTemplate.initTemplate();
4343

44-
System.out.println(initTemplate.generateEntity());
44+
System.out.println(CodeFormatterUtil.formatCode(initTemplate.generateEntity()));
4545
System.out.println("================================================================================");
46-
System.out.println(initTemplate.generateMapper());
46+
System.out.println(CodeFormatterUtil.formatCode(initTemplate.generateMapper()));
4747
System.out.println("================================================================================");
48-
System.out.println(initTemplate.generateService());
48+
System.out.println(CodeFormatterUtil.formatCode(initTemplate.generateService()));
4949
System.out.println("================================================================================");
50-
System.out.println(initTemplate.generateServiceImpl());
50+
System.out.println(CodeFormatterUtil.formatCode(initTemplate.generateServiceImpl()));
5151
System.out.println("================================================================================");
52-
System.out.println(initTemplate.generateController());
52+
System.out.println(CodeFormatterUtil.formatCode(initTemplate.generateController()));
5353
}
5454

5555
@Test

0 commit comments

Comments
 (0)