tanghc 3 years ago
parent
commit
b7dd0cc934

+ 4 - 0
changelog.md

@@ -1,5 +1,9 @@
 # changelog
 
+## 1.4.5
+
+- 可以格式化xml代码(application.properties中添加`gen.format-xml=true`)
+
 ## 1.4.4
 
 - jtds驱动替换成sqljdbc4

+ 6 - 0
gen/pom.xml

@@ -80,6 +80,12 @@
             <version>42.2.14</version>
         </dependency>
 
+        <dependency>
+            <groupId>dom4j</groupId>
+            <artifactId>dom4j</artifactId>
+            <version>1.6.1</version>
+        </dependency>
+
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 17 - 1
gen/src/main/java/com/gitee/gen/service/GeneratorService.java

@@ -9,14 +9,17 @@ import com.gitee.gen.gen.SQLService;
 import com.gitee.gen.gen.SQLServiceFactory;
 import com.gitee.gen.gen.TableDefinition;
 import com.gitee.gen.gen.TableSelector;
+import com.gitee.gen.util.FormatUtil;
 import com.gitee.gen.util.VelocityUtil;
 import org.apache.velocity.VelocityContext;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -26,13 +29,17 @@ import java.util.concurrent.Executors;
 @Service
 public class GeneratorService {
 
+    static ExecutorService executorService = Executors.newFixedThreadPool(2);
+
     @Autowired
     private TemplateConfigService templateConfigService;
 
     @Autowired
     private GenerateHistoryService generateHistoryService;
 
-    static ExecutorService executorService = Executors.newFixedThreadPool(2);
+    @Value("${gen.format-xml:false}")
+    private String formatXml;
+
 
     /**
      * 生成代码内容,map的
@@ -53,6 +60,7 @@ public class GeneratorService {
                 String folder = template.getName();
                 String fileName = doGenerator(sqlContext, template.getFileName());
                 String content = doGenerator(sqlContext, template.getContent());
+                content = this.formatCode(fileName, content);
                 CodeFile codeFile = new CodeFile();
                 codeFile.setFolder(folder);
                 codeFile.setFileName(fileName);
@@ -68,6 +76,14 @@ public class GeneratorService {
         return codeFileList;
     }
 
+    // 格式化代码
+    private String formatCode(String fileName, String content) {
+        if (Objects.equals("true", formatXml) && fileName.endsWith(".xml")) {
+            return FormatUtil.formatXml(content);
+        }
+        return content;
+    }
+
 
     /**
      * 返回SQL上下文列表

+ 50 - 0
gen/src/main/java/com/gitee/gen/util/FormatUtil.java

@@ -0,0 +1,50 @@
+package com.gitee.gen.util;
+
+import org.dom4j.Document;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.SAXReader;
+import org.dom4j.io.XMLWriter;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+/**
+ * 代码格式化
+ * @author tanghc
+ */
+public class FormatUtil {
+    
+    public static String formatXml(String input) {
+        try{
+            SAXReader reader = new SAXReader();
+            // System.out.println(reader);
+            // 注释:创建一个串的字符输入流
+            StringReader in = new StringReader(input);
+            Document doc = reader.read(in);
+            // System.out.println(doc.getRootElement());
+            // 注释:创建输出格式
+            OutputFormat formater = OutputFormat.createPrettyPrint();
+            // formater=OutputFormat.createCompactFormat();
+            // 注释:设置xml的输出编码
+            formater.setEncoding("utf-8");
+            // TAB缩进
+            formater.setIndent("    ");
+            // 注释:创建输出(目标)
+            StringWriter out = new StringWriter();
+            // 注释:创建输出流
+            XMLWriter writer = new XMLWriter(out, formater);
+            // 注释:输出格式化的串到目标中,执行后。格式化后的串保存在out中。
+            writer.write(doc);
+    
+            writer.close();
+            // 注释:返回我们格式化后的结果
+            return out.toString();
+        }catch (Exception e) {
+            e.printStackTrace();
+            return input;
+        }
+    }
+    
+    
+    
+}

+ 4 - 0
gen/src/main/resources/application.properties

@@ -22,4 +22,8 @@ mybatis.mapper-locations=classpath:mybatis/*.xml
 # 下划线格式转换成驼峰格式
 mybatis.configuration.map-underscore-to-camel-case=true
 
+# 格式化xml代码,默认false
+# 开启后生成速度会稍微慢一点
+gen.format-xml=false
+
 logging.file.path=log