Former-commit-id: 9ca472529cb4defae3d971b800e38f8688d52090
master
wangbing 5 years ago
parent b5c52620da
commit 037c6ef6b6

@ -5,6 +5,7 @@ import xyz.wbsite.dbtool.javafx.manger.ManagerFactory;
import xyz.wbsite.dbtool.javafx.manger.ProjectManager; import xyz.wbsite.dbtool.javafx.manger.ProjectManager;
import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper; import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper;
import xyz.wbsite.dbtool.javafx.po.Api; import xyz.wbsite.dbtool.javafx.po.Api;
import xyz.wbsite.dbtool.javafx.tool.EntityReader;
import xyz.wbsite.dbtool.javafx.tool.JavaClassReader; import xyz.wbsite.dbtool.javafx.tool.JavaClassReader;
import xyz.wbsite.dbtool.javafx.tool.Tool; import xyz.wbsite.dbtool.javafx.tool.Tool;
@ -12,6 +13,8 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ApiCallable implements Callable { public class ApiCallable implements Callable {
@ -68,15 +71,16 @@ public class ApiCallable implements Callable {
for (Api api : apiList) { for (Api api : apiList) {
if (api.isCheck()) { if (api.isCheck()) {
File module = new File(domain, api.getModule()); File apiModule = new File(domain, api.getModule());
module.mkdirs(); apiModule.mkdirs();
File request = new File(module, "req"); File apiRequest = new File(apiModule, "req");
request.mkdirs(); apiRequest.mkdirs();
File response = new File(module, "rsp"); File apiResponse = new File(apiModule, "rsp");
response.mkdirs(); apiResponse.mkdirs();
File entity = new File(module, "ent"); File entity = new File(apiModule, "ent");
entity.mkdirs(); entity.mkdirs();
List<File> entList = new ArrayList<>();
try { try {
//region 生成request //region 生成request
JavaClassReader javaClassReader = new JavaClassReader(api.getRequestFile()); JavaClassReader javaClassReader = new JavaClassReader(api.getRequestFile());
@ -87,13 +91,6 @@ public class ApiCallable implements Callable {
} }
} }
Method method = new Method();
method.setStringMethod(api.getMethod());
method.setRequest(javaClassReader.getClassName());
method.setTarget(Tool.getRequestTarget(javaClassReader.getClassName()));
method.setMethod(Tool.getRequestAction(javaClassReader.getClassName()));
method.setManager(Tool.getRequestTarget(javaClassReader.getClassName()) + "Manager");
{ {
HashMap<String, Object> ctx = new HashMap<String, Object>(); HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", "package " + javaClassReader.getDomainName() + "." + javaClassReader.getModuleName() + "." + "request;"); ctx.put("package", "package " + javaClassReader.getDomainName() + "." + javaClassReader.getModuleName() + "." + "request;");
@ -108,12 +105,44 @@ public class ApiCallable implements Callable {
ctx.put("tool", tool); ctx.put("tool", tool);
ctx.put("hasList", javaClassReader.isHasList()); ctx.put("hasList", javaClassReader.isHasList());
ctx.put("findOrSearchflag", javaClassReader.getFindOrSearchflag()); ctx.put("findOrSearchflag", javaClassReader.getFindOrSearchflag());
File file = new File(request.getAbsolutePath(), api.getRequestFile().getName()); File file = new File(apiRequest.getAbsolutePath(), api.getRequestFile().getName());
freeMarkerManager.outputTemp(file, "Java_api/module/req/request.java", ctx); freeMarkerManager.outputTemp(file, "Java_api/module/req/request.java", ctx);
System.out.println("生成文件" + file.getName() + "成功"); System.out.println("生成文件" + file.getName() + "成功");
} }
//endregion //endregion
for (String s : javaClassReader.getDeptEntList()) {
Pattern compile = Pattern.compile("(.*\\.ent)\\.(.*)");
Matcher matcher = compile.matcher(s);
if (matcher.find()) {
String Package = matcher.group(1);
String EntName = matcher.group(2);
List<File> files = Tool.find(this.module, EntName + ".java");
for (File file : files) {
EntityReader entReader = new EntityReader(file);
if (Package.equals(entReader.getPackageName())) {
HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", "package " + entReader.getDomainName() + "." + entReader.getModuleName() + "." + "request;");
ctx.put("domain", entReader.getDomainName());
ctx.put("module", entReader.getModuleName());
ctx.put("importList", entReader.getImportList());
ctx.put("annotation", entReader.getAnnotationList());
ctx.put("className", entReader.getClassName().replaceAll("Entity", ""));
ctx.put("body", entReader.getBody());
ctx.put("tool", tool);
File EntFile = new File(entity.getAbsolutePath(), EntName);
freeMarkerManager.outputTemp(EntFile, "Java_api/module/ent/entity.java", ctx);
System.out.println("生成文件" + EntName + "成功");
}
}
}
}
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -128,24 +157,61 @@ public class ApiCallable implements Callable {
} }
} }
List<String> entNames = new ArrayList<>();
for (String s : javaClassReader.getDeptEntList()) {
Pattern compile = Pattern.compile("(.*\\.ent)\\.(.*)");
Matcher matcher = compile.matcher(s);
if (matcher.find()) {
String Package = matcher.group(1);
String EntName = matcher.group(2);
entNames.add(EntName);
List<File> files = Tool.find(this.module, EntName + ".java");
for (File file : files) {
EntityReader entReader = new EntityReader(file);
if (Package.equals(entReader.getPackageName())) {
HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", "package " + entReader.getDomainName() + "." + entReader.getModuleName() + "." + "request;");
ctx.put("domain", entReader.getDomainName());
ctx.put("module", entReader.getModuleName());
ctx.put("importList", entReader.getImportList());
ctx.put("annotation", entReader.getAnnotationList());
ctx.put("className", entReader.getClassName().replaceAll("Entity", ""));
ctx.put("body", entReader.getBody());
ctx.put("tool", tool);
File EntFile = new File(entity.getAbsolutePath(), EntName+".java");
freeMarkerManager.outputTemp(EntFile, "Java_api/module/ent/entity.java", ctx);
System.out.println("生成文件" + EntName + "成功");
}
}
}
}
{ {
HashMap<String, Object> ctx = new HashMap<String, Object>(); HashMap<String, Object> ctx = new HashMap<String, Object>();
ctx.put("package", "package " + javaClassReader.getDomainName() + "." + javaClassReader.getModuleName() + "." + "request;"); ctx.put("package", "package " + javaClassReader.getDomainName() + "." + javaClassReader.getModuleName() + "." + "request;");
ctx.put("domain", javaClassReader.getDomainName()); ctx.put("domain", javaClassReader.getDomainName());
ctx.put("module", javaClassReader.getModuleName()); ctx.put("module", javaClassReader.getModuleName());
ctx.put("importList", javaClassReader.getImportList()); ctx.put("importList", javaClassReader.getImportList());
ctx.put("entNames", entNames);
ctx.put("annotation", javaClassReader.getAnnotationList()); ctx.put("annotation", javaClassReader.getAnnotationList());
ctx.put("className", javaClassReader.getClassName().replaceAll("Response", "")); ctx.put("className", javaClassReader.getClassName().replaceAll("Response", ""));
ctx.put("body", javaClassReader.getBody()); ctx.put("body", javaClassReader.getBody());
ctx.put("tool", tool); ctx.put("tool", tool);
ctx.put("hasList", javaClassReader.isHasList()); ctx.put("hasList", javaClassReader.isHasList());
ctx.put("Tclass", javaClassReader.getTclass()); ctx.put("Tclass", javaClassReader.getTclass());
File file = new File(response.getAbsolutePath(), api.getResponseFile().getName().replaceAll("Request", "Response")); File file = new File(apiResponse.getAbsolutePath(), api.getResponseFile().getName().replaceAll("Request", "Response"));
freeMarkerManager.outputTemp(file, "Java_api/module/rsp/response.java", ctx); freeMarkerManager.outputTemp(file, "Java_api/module/rsp/response.java", ctx);
System.out.println("生成文件" + api.getResponseFile().getName() + "成功"); System.out.println("生成文件" + api.getResponseFile().getName() + "成功");
} }
//endregion //endregion
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -378,53 +444,4 @@ public class ApiCallable implements Callable {
System.out.println("finish"); System.out.println("finish");
return true; return true;
} }
public class Method {
private String request;
private String stringMethod;
private String manager;
private String method;
private String target;
public String getRequest() {
return request;
}
public void setRequest(String request) {
this.request = request;
}
public String getTarget() {
return target;
}
public void setTarget(String target) {
this.target = target;
}
public String getStringMethod() {
return stringMethod;
}
public void setStringMethod(String stringMethod) {
this.stringMethod = stringMethod;
}
public String getManager() {
return manager;
}
public void setManager(String manager) {
this.manager = manager;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method;
}
}
} }

@ -0,0 +1,285 @@
package xyz.wbsite.dbtool.javafx.tool;
import java.io.*;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EntityReader {
private File javaClass;
private String packageName;
private String domainName;
private String moduleName;
private List<String> annotationList;
private List<String> importList;
private Set<String> deptReqList;
private Set<String> deptEntList;
private String className;
private String fatherName;
private List<String> body;
private boolean hasList = false;
private String findOrSearchflag = "0";
private String Tclass = null;
public EntityReader(File javaClass) throws IOException {
this.javaClass = javaClass;
importList = new ArrayList<>();
annotationList = new ArrayList<>();
deptReqList = new HashSet<>();
deptEntList = new HashSet<>();
domainName = "";
read();
}
private void read() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(javaClass), "utf-8"));
int step = 1;//1-读取package2-读取import3-读取类注释4-读取类名、父类5-读取类体
String line = null;
StringBuffer zs = new StringBuffer();
StringBuffer sb = new StringBuffer();
while ((line = bufferedReader.readLine()) != null) {
if (line.matches("\\s*package\\s(.*);")) {
Pattern compile = Pattern.compile("\\s*package\\s(.*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
packageName = matcher.group(1);
}
String s = line.replaceAll("package ", "");
s = s.replaceAll(";", "");
String[] split = s.split("\\.");
if ("req".equals(split[split.length - 1]) || "rsp".equals(split[split.length - 1]) || "ent".equals(split[split.length - 1])) {
moduleName = split[split.length - 2];
for (int i = 0; i < split.length - 2; i++) {
domainName += split[i] + ".";
}
domainName = domainName.substring(0, domainName.length() - 1);
}
continue;
}
if (line.matches("import\\s.*")) {
if (line.contains(".ent.")) {
Pattern compile = Pattern.compile("import\\s+(.*\\.ent\\..*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
String group = matcher.group(1);
deptEntList.add(group);
}
} else if (line.contains(".req.")) {
Pattern compile = Pattern.compile("import\\s+(.*\\.req\\..*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
String group = matcher.group(1);
deptReqList.add(group);
}
} else if (!line.contains("frame")) {
importList.add(line);
}
continue;
}
if (line.contains("/**") || line.contains("*") || line.contains("*/")) {
if (zs != null) {
zs.append(line + "\n");
annotationList.add(line);
if (line.contains("*/")) {
zs = null;
}
}
}
if (line.contains("class")) {
line = line.replaceAll("\\{", " { ");
line = line.replaceAll("}", " } ");
line = line.replaceAll("\\s+", " ");
String[] split = line.split("\\s");
for (int i = 0; i < split.length; i++) {
if ("class".equals(split[i])) {
className = split[i + 1];
}
if ("extends".equals(split[i])) {
fatherName = split[i + 1];
if (fatherName.contains("FindResponse") || fatherName.contains("GetAllResponse")) {
hasList = true;
Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher(fatherName);
if (matcher.find()) {
String group = matcher.group(1);
Tclass = group;
}
}
if (fatherName.contains("FindRequest")) {
findOrSearchflag = "1";
} else if (fatherName.contains("SearchRequest")) {
findOrSearchflag = "2";
}
}
}
}
sb.append(line + "\n");
}
body = new ArrayList<>(Arrays.asList(sb.substring(sb.indexOf("{")).split("\n")));
for (int i = 0; i < body.size(); i++) {
if (body.get(i).contains("{")) {
body.set(i, body.get(i).replaceAll("\\{", ""));
String s = body.get(i);
if (s.length() <= 1) {
body.remove(i);
}
break;
}
}
Iterator<String> iterator = body.iterator();
while (iterator.hasNext()){
String next = iterator.next();
if (next.contains("@ColumnName")){
iterator.remove();
}
if (next.contains("@ColumnDescription")){
iterator.remove();
}
}
for (int i = body.size() - 1; i >= 0; i--) {
if (body.get(i).contains("}")) {
body.set(i, body.get(i).replaceAll("}", ""));
break;
}
}
if (body.size() > 1 && "".equals(body.get(0))) {
body.remove(0);
}
if (body.size() > 1 && "".equals(body.get(body.size() - 1))) {
body.remove(body.size() - 1);
}
bufferedReader.close();
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getDomainName() {
return domainName;
}
public void setDomainName(String domainName) {
this.domainName = domainName;
}
public String getModuleName() {
return moduleName;
}
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
public List<String> getAnnotationList() {
return annotationList;
}
public void setAnnotationList(List<String> annotationList) {
this.annotationList = annotationList;
}
public List<String> getImportList() {
return importList;
}
public void setImportList(List<String> importList) {
this.importList = importList;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getFatherName() {
return fatherName;
}
public void setFatherName(String fatherName) {
this.fatherName = fatherName;
}
public List<String> getBody() {
return body;
}
public void setBody(List<String> body) {
this.body = body;
}
public File getJavaClass() {
return javaClass;
}
public void setJavaClass(File javaClass) {
this.javaClass = javaClass;
}
public boolean isHasList() {
return hasList;
}
public void setHasList(boolean hasList) {
this.hasList = hasList;
}
public String getTclass() {
return Tclass;
}
public String getFindOrSearchflag() {
return findOrSearchflag;
}
public void setFindOrSearchflag(String findOrSearchflag) {
this.findOrSearchflag = findOrSearchflag;
}
public void setTclass(String tclass) {
Tclass = tclass;
}
public Set<String> getDeptReqList() {
return deptReqList;
}
public void setDeptReqList(Set<String> deptReqList) {
this.deptReqList = deptReqList;
}
public Set<String> getDeptEntList() {
return deptEntList;
}
public void setDeptEntList(Set<String> deptEntList) {
this.deptEntList = deptEntList;
}
public static void main(String[] args) throws IOException {
EntityReader javaClassReader = new EntityReader(new File("D:\\wangbing\\Project\\dbtool\\target\\project\\EXAMPLE-WEB\\src\\main\\java\\com\\example\\module\\system\\rsp\\DictFindResponse.java"));
System.out.println();
}
}

@ -1,9 +1,7 @@
package xyz.wbsite.dbtool.javafx.tool; package xyz.wbsite.dbtool.javafx.tool;
import java.io.*; import java.io.*;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -15,6 +13,8 @@ public class JavaClassReader {
private String moduleName; private String moduleName;
private List<String> annotationList; private List<String> annotationList;
private List<String> importList; private List<String> importList;
private Set<String> deptReqList;
private Set<String> deptEntList;
private String className; private String className;
private String fatherName; private String fatherName;
private List<String> body; private List<String> body;
@ -26,6 +26,8 @@ public class JavaClassReader {
this.javaClass = javaClass; this.javaClass = javaClass;
importList = new ArrayList<>(); importList = new ArrayList<>();
annotationList = new ArrayList<>(); annotationList = new ArrayList<>();
deptReqList = new HashSet<>();
deptEntList = new HashSet<>();
domainName = ""; domainName = "";
read(); read();
} }
@ -39,8 +41,12 @@ public class JavaClassReader {
StringBuffer zs = new StringBuffer(); StringBuffer zs = new StringBuffer();
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
while ((line = bufferedReader.readLine()) != null) { while ((line = bufferedReader.readLine()) != null) {
if (line.startsWith("package")) { if (line.matches("\\s*package\\s(.*);")) {
packageName = line; Pattern compile = Pattern.compile("\\s*package\\s(.*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
packageName = matcher.group(1);
}
String s = line.replaceAll("package ", ""); String s = line.replaceAll("package ", "");
s = s.replaceAll(";", ""); s = s.replaceAll(";", "");
@ -56,11 +62,24 @@ public class JavaClassReader {
continue; continue;
} }
if (line.startsWith("import")) { if (line.matches("import\\s.*")) {
if (!line.contains("frame")) { if (line.contains(".ent.")) {
Pattern compile = Pattern.compile("import\\s+(.*\\.ent\\..*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
String group = matcher.group(1);
deptEntList.add(group);
}
} else if (line.contains(".req.")) {
Pattern compile = Pattern.compile("import\\s+(.*\\.req\\..*);");
Matcher matcher = compile.matcher(line);
if (matcher.find()) {
String group = matcher.group(1);
deptReqList.add(group);
}
} else if (!line.contains("frame")) {
importList.add(line); importList.add(line);
} }
continue; continue;
} }
if (line.contains("/**") || line.contains("*") || line.contains("*/")) { if (line.contains("/**") || line.contains("*") || line.contains("*/")) {
@ -229,8 +248,24 @@ public class JavaClassReader {
Tclass = tclass; Tclass = tclass;
} }
public Set<String> getDeptReqList() {
return deptReqList;
}
public void setDeptReqList(Set<String> deptReqList) {
this.deptReqList = deptReqList;
}
public Set<String> getDeptEntList() {
return deptEntList;
}
public void setDeptEntList(Set<String> deptEntList) {
this.deptEntList = deptEntList;
}
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
JavaClassReader javaClassReader = new JavaClassReader(new File("C:\\dbtool\\auth\\src\\main\\java\\edu\\services\\auth\\rsp\\FileFindResponse.java")); JavaClassReader javaClassReader = new JavaClassReader(new File("D:\\wangbing\\Project\\dbtool\\target\\project\\EXAMPLE-WEB\\src\\main\\java\\com\\example\\module\\system\\rsp\\DictFindResponse.java"));
System.out.println(); System.out.println();
} }

@ -23,6 +23,7 @@ public class ${className}Request <#if findOrSearchflag=='1'>extends ApiFindReque
${i} ${i}
</#if> </#if>
</#list> </#list>
public void check() { public void check() {
} }

@ -3,6 +3,9 @@ package ${domain}.${module}.rsp;
<#list importList as i> <#list importList as i>
${i} ${i}
</#list> </#list>
<#list entNames as entName>
import ${domain}.${module}.ent.${entName};
</#list>
<#if hasList> <#if hasList>
import ${domain}.ApiFindResponse; import ${domain}.ApiFindResponse;
<#else> <#else>

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wb</groupId>
<artifactId>${api}</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<#--<!-- 属性注解验证依赖包 &ndash;&gt;-->
<#--<dependency>-->
<#--<groupId>org.hibernate.validator</groupId>-->
<#--<artifactId>hibernate-validator</artifactId>-->
<#--<version>6.0.10.Final</version>-->
<#--</dependency>-->
<#--<dependency>-->
<#--<groupId>org.glassfish</groupId>-->
<#--<artifactId>javax.el</artifactId>-->
<#--<version>3.0.0</version>-->
<#--</dependency>-->
</dependencies>
<build>
<!-- 项目名称 -->
<finalName>${r"${artifactId}"}-${r"${version}"}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- ${r"${project.build.directory}"}为Maven内置变量缺省为target -->
<outputDirectory>${r"${project.build.directory}"}/lib</outputDirectory>
<!-- 表示是否不包含间接依赖的包 -->
<excludeTransitive>false</excludeTransitive>
<!-- 表示复制的jar文件去掉版本信息 -->
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.example.ApiClient</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Loading…
Cancel
Save

Powered by TurnKey Linux.