Former-commit-id: af95d282bb768c9e090988921a0b20ad91619791
master
王兵 5 years ago
parent e748ca9390
commit c3f2c07f22

@ -93,8 +93,6 @@ public class RequestReader {
Matcher matcher = p4.matcher(line.trim()); Matcher matcher = p4.matcher(line.trim());
if (matcher.find()) { if (matcher.find()) {
deptReqList.add(matcher.group(1)); deptReqList.add(matcher.group(1));
} else if (matcher.find()) {
deptEntList.add(matcher.group(2));
} }
if (line.contains("@ColumnName") || if (line.contains("@ColumnName") ||
@ -206,7 +204,7 @@ public class RequestReader {
} }
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
RequestReader requestReader = new RequestReader(new File("D:\\wangbing\\Project\\dbtool\\target\\project\\example-web\\src\\main\\java\\com\\example\\module\\system\\rsp\\DictFindResponse.java")); RequestReader requestReader = new RequestReader(new File("E:\\wangbing\\source\\dbtool\\target\\project\\wadmin\\src\\main\\java\\xyz\\wbsite\\module\\system\\req\\DictFindRequest.java"));
System.out.println(); System.out.println();
} }

@ -1,8 +1,22 @@
package xyz.wbsite.dbtool.web.frame.utils; package xyz.wbsite.dbtool.web.frame.utils;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Stack;
/** /**
* ClassUtil * ClassUtil
@ -47,7 +61,7 @@ public class ClassUtil {
* @param pojoClass POJO * @param pojoClass POJO
* @return * @return
*/ */
public static Method getMethod(String name, Class<?> pojoClass) throws RuntimeException { public static Method getMethod(String name, Class<?> pojoClass) {
String getMethodName = "get" + StringUtil.upperFirstWord(name); String getMethodName = "get" + StringUtil.upperFirstWord(name);
try { try {
return pojoClass.getMethod(getMethodName); return pojoClass.getMethod(getMethodName);
@ -73,7 +87,7 @@ public class ClassUtil {
try { try {
return pojoClass.getMethod(setMethodName, type); return pojoClass.getMethod(setMethodName, type);
} catch (Exception e) { } catch (Exception e) {
return null; throw new RuntimeException("can not find[" + name + "]method");
} }
} }
@ -111,4 +125,124 @@ public class ClassUtil {
System.arraycopy(f2, 0, fields, f1.length, f2.length); System.arraycopy(f2, 0, fields, f1.length, f2.length);
return fields; return fields;
} }
/**
* @param javaFile java
* @param classPath
* @return
* @throws IOException
*/
public static boolean compile(File javaFile, String classPath) throws IOException {
return compile(FileUtil.readFileToString(javaFile), javaFile.getName().replaceAll("\\.java$", ""), classPath);
}
/**
* @param source
* @param className
* @param classPath
* @return
*/
public static boolean compile(String source, String className, String classPath) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
try {
Iterable<String> options = Arrays.asList("-d", classPath);
SimpleJavaFileObject sourceObject = new StringSourceJavaObject(className, source);
Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, fileObjects);
return task.call();
} catch (URISyntaxException e) {
e.printStackTrace();
}
return false;
}
private static class StringSourceJavaObject extends SimpleJavaFileObject {
private String content = null;
public StringSourceJavaObject(String name, String content) throws URISyntaxException {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.content = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return content;
}
}
/**
* clazzPath
* <p>
* clazzPath = /classes class/classes/text/test.class
*
* @param classPath
* @throws Exception
*/
public static void loadClass(File classPath) throws Exception {
// 记录加载.class文件的数量
int clazzCount = 0;
//only handle the folder
if (classPath.isFile()) {
classPath = classPath.getParentFile();
}
if (classPath.exists() && classPath.isDirectory()) {
// 获取路径长度
int classPathLen = classPath.getAbsolutePath().length() + 1;
Stack<File> stack = new Stack<>();
stack.push(classPath);
// 遍历类路径
while (stack.isEmpty() == false) {
File path = stack.pop();
File[] classFiles = path.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory() || pathname.getName().endsWith(".class");
}
});
for (File subFile : classFiles) {
if (subFile.isDirectory()) {
stack.push(subFile);
} else {
if (clazzCount++ == 0) {
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
boolean accessible = method.isAccessible();
try {
if (accessible == false) {
method.setAccessible(true);
}
// 设置类加载器
URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
// 将当前类路径加入到类加载器中
method.invoke(classLoader, classPath.toURI().toURL());
} finally {
method.setAccessible(accessible);
}
}
// 文件名称
String className = subFile.getAbsolutePath();
className = className.substring(classPathLen, className.length() - 6);
className = className.replace(File.separatorChar, '.');
// 加载Class类
Class.forName(className);
System.out.println(String.format("读取应用程序类文件[class=%s]", className));
}
}
}
}
}
/**
*
* {@link #loadClass(File)}
*
* @param className (package,)
* @return
* @throws Exception
*/
public static Class<?> getClass(String className) throws Exception {
ClassLoader loader = ClassUtil.class.getClassLoader();
return loader.loadClass(className);
}
} }

@ -7,7 +7,7 @@ package ${domain}.frame.base;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class BaseUpdateRequest<T> extends BaseRequest{ public class BaseUpdateRequest<T extends BaseResponse> extends BaseRequest<T> {
/** /**
* *

@ -10,6 +10,8 @@ import ${domain}.module.${module}.ent.${entName};
import ${domain}.frame.base.BaseRequest; import ${domain}.frame.base.BaseRequest;
<#elseif fatherName == 'BaseFindRequest'> <#elseif fatherName == 'BaseFindRequest'>
import ${domain}.frame.base.BaseFindRequest; import ${domain}.frame.base.BaseFindRequest;
<#elseif fatherName == 'BaseUpdateRequest'>
import ${domain}.frame.base.BaseUpdateRequest;
<#elseif fatherName == 'BaseSearchRequest'> <#elseif fatherName == 'BaseSearchRequest'>
import ${domain}.frame.base.BaseSearchRequest; import ${domain}.frame.base.BaseSearchRequest;
</#if> </#if>

@ -1,8 +1,22 @@
package ${basePackage}.frame.utils; package ${basePackage}.frame.utils;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
import javax.tools.SimpleJavaFileObject;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.*; import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.Collection;
import java.util.Stack;
/** /**
* ClassUtil * ClassUtil
@ -111,4 +125,124 @@ public class ClassUtil {
System.arraycopy(f2, 0, fields, f1.length, f2.length); System.arraycopy(f2, 0, fields, f1.length, f2.length);
return fields; return fields;
} }
/**
* @param javaFile java
* @param classPath
* @return
* @throws IOException
*/
public static boolean compile(File javaFile, String classPath) throws IOException {
return compile(FileUtil.readFileToString(javaFile), javaFile.getName().replaceAll("\\.java$", ""), classPath);
}
/**
* @param source
* @param className
* @param classPath
* @return
*/
public static boolean compile(String source, String className, String classPath) {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
try {
Iterable<String> options = Arrays.asList("-d", classPath);
SimpleJavaFileObject sourceObject = new StringSourceJavaObject(className, source);
Iterable<? extends JavaFileObject> fileObjects = Arrays.asList(sourceObject);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, null, options, null, fileObjects);
return task.call();
} catch (URISyntaxException e) {
e.printStackTrace();
}
return false;
}
private static class StringSourceJavaObject extends SimpleJavaFileObject {
private String content = null;
public StringSourceJavaObject(String name, String content) throws URISyntaxException {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.content = content;
}
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
return content;
}
}
/**
* clazzPath
* <p>
* clazzPath = /classes class/classes/text/test.class
*
* @param classPath
* @throws Exception
*/
public static void loadClass(File classPath) throws Exception {
// 记录加载.class文件的数量
int clazzCount = 0;
//only handle the folder
if (classPath.isFile()) {
classPath = classPath.getParentFile();
}
if (classPath.exists() && classPath.isDirectory()) {
// 获取路径长度
int classPathLen = classPath.getAbsolutePath().length() + 1;
Stack<File> stack = new Stack<>();
stack.push(classPath);
// 遍历类路径
while (stack.isEmpty() == false) {
File path = stack.pop();
File[] classFiles = path.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory() || pathname.getName().endsWith(".class");
}
});
for (File subFile : classFiles) {
if (subFile.isDirectory()) {
stack.push(subFile);
} else {
if (clazzCount++ == 0) {
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
boolean accessible = method.isAccessible();
try {
if (accessible == false) {
method.setAccessible(true);
}
// 设置类加载器
URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
// 将当前类路径加入到类加载器中
method.invoke(classLoader, classPath.toURI().toURL());
} finally {
method.setAccessible(accessible);
}
}
// 文件名称
String className = subFile.getAbsolutePath();
className = className.substring(classPathLen, className.length() - 6);
className = className.replace(File.separatorChar, '.');
// 加载Class类
Class.forName(className);
System.out.println(String.format("读取应用程序类文件[class=%s]", className));
}
}
}
}
}
/**
*
* {@link #loadClass(File)}
*
* @param className (package,)
* @return
* @throws Exception
*/
public static Class<?> getClass(String className) throws Exception {
ClassLoader loader = xyz.wbsite.frame.utils.ClassUtil.class.getClassLoader();
return loader.loadClass(className);
}
} }

@ -1,6 +1,6 @@
package ${basePackage}.module.${moduleName}.req; package ${basePackage}.module.${moduleName}.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since ${date?string("yyyy-MM-dd")} * @since ${date?string("yyyy-MM-dd")}
*/ */
public class ${table.getCName()}DeleteRequest extends BaseUpdateRequest { public class ${table.getCName()}DeleteRequest extends BaseRequest {
<#if table.sys> <#if table.sys>
/** /**

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class DeptDeleteRequest extends BaseUpdateRequest { public class DeptDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class DictDeleteRequest extends BaseUpdateRequest { public class DictDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class DictItemDeleteRequest extends BaseUpdateRequest { public class DictItemDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class FileDeleteRequest extends BaseUpdateRequest { public class FileDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class LogErrDeleteRequest extends BaseUpdateRequest { public class LogErrDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2020-05-24 * @since 2020-05-24
*/ */
public class ProfilesDeleteRequest extends BaseUpdateRequest { public class ProfilesDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class ResDeleteRequest extends BaseUpdateRequest { public class ResDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class RoleDeleteRequest extends BaseUpdateRequest { public class RoleDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class RoleResDeleteRequest extends BaseUpdateRequest { public class RoleResDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2020-05-24 * @since 2020-05-24
*/ */
public class TaskSqlDeleteRequest extends BaseUpdateRequest { public class TaskSqlDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotBlank;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class TokensDeleteRequest extends BaseUpdateRequest { public class TokensDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,7 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -10,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class UserDeleteRequest extends BaseUpdateRequest { public class UserDeleteRequest extends BaseRequest {
/** /**
* *

@ -1,6 +1,6 @@
package ${basePackage}.module.system.req; package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest; import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull;
* @version 0.0.1 * @version 0.0.1
* @since 2017-01-01 * @since 2017-01-01
*/ */
public class UserRoleDeleteRequest extends BaseUpdateRequest { public class UserRoleDeleteRequest extends BaseRequest {
/** /**
* *

Loading…
Cancel
Save

Powered by TurnKey Linux.