.
This commit is contained in:
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/target/
|
||||
.project
|
||||
.classpath
|
||||
/.settings/
|
||||
/.externalToolBuilders/
|
||||
/bin/
|
||||
*.iml
|
||||
.idea/
|
||||
/.idea/
|
||||
/out/
|
||||
/tmp/
|
||||
/libs/
|
||||
12
qtask/.gitignore
vendored
Normal file
12
qtask/.gitignore
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/target/
|
||||
.project
|
||||
.classpath
|
||||
/.settings/
|
||||
/.externalToolBuilders/
|
||||
/bin/
|
||||
*.iml
|
||||
.idea/
|
||||
/.idea/
|
||||
/out/
|
||||
/tmp/
|
||||
/libs/
|
||||
34
qtask/pom.xml
Normal file
34
qtask/pom.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?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>net.tccn</groupId>
|
||||
<artifactId>qtask</artifactId>
|
||||
<version>1.0</version>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>8</source>
|
||||
<target>8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
43
qtask/src/main/java/net/tccn/E.java
Normal file
43
qtask/src/main/java/net/tccn/E.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package net.tccn;
|
||||
|
||||
|
||||
import net.tccn.base.Kv;
|
||||
|
||||
/**
|
||||
* cate:mysql
|
||||
* queryId: select * from user where userid=#(userid)
|
||||
* comment: 查询用户列表
|
||||
* para: {userid:1}
|
||||
*
|
||||
* cate:method
|
||||
* queryId:com.test.abc.take
|
||||
* comment:调用Java函数take
|
||||
* para:{name:xxx,age:12}
|
||||
*
|
||||
* cate:http
|
||||
* query:http://127.0.0.1/meta/db_plat_list
|
||||
* comment:查询数据平台列表
|
||||
* para:{platToken:3421432}
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class E {
|
||||
|
||||
public String cate;//MYSQL,ES,METHOD,HTTP
|
||||
public String queryId;
|
||||
public String dbPlatId;// MYSQL, ES,METHOD,http
|
||||
public String comment;
|
||||
public Kv para;
|
||||
|
||||
public String restType;//List, Map
|
||||
|
||||
public E(String cate, String queryId, String comment, Kv para) {
|
||||
this.cate = cate;
|
||||
this.queryId = queryId;
|
||||
this.comment = comment;
|
||||
this.para = para;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
20
qtask/src/main/java/net/tccn/QRuner.java
Normal file
20
qtask/src/main/java/net/tccn/QRuner.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package net.tccn;
|
||||
|
||||
import net.tccn.qtask.QTaskHttp;
|
||||
import net.tccn.qtask.QTaskMethod;
|
||||
import net.tccn.qtask.QTaskMysql;
|
||||
|
||||
public class QRuner {
|
||||
|
||||
public static Object query(E e) {
|
||||
switch (e.cate.toLowerCase()) {
|
||||
case "mysql":
|
||||
return new QTaskMysql(e).execute();
|
||||
case "method":
|
||||
return new QTaskMethod(e).execute();
|
||||
case "http":
|
||||
return new QTaskHttp(e).execute();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
21
qtask/src/main/java/net/tccn/base/Kv.java
Normal file
21
qtask/src/main/java/net/tccn/base/Kv.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package net.tccn.base;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
/**
|
||||
* Created by liangxianyou@eversec.cn at 2018/3/12 14:17.
|
||||
*/
|
||||
public class Kv<K,V> extends LinkedHashMap {
|
||||
public static Kv of(){
|
||||
return new Kv();
|
||||
}
|
||||
|
||||
public static Kv of(Object k, Object v){
|
||||
return new Kv().set(k,v);
|
||||
}
|
||||
|
||||
public Kv<K, V> set(K k, V v){
|
||||
put(k, v);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
9
qtask/src/main/java/net/tccn/qtask/QTask.java
Normal file
9
qtask/src/main/java/net/tccn/qtask/QTask.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
|
||||
public interface QTask {
|
||||
E getE();
|
||||
|
||||
Object execute();
|
||||
}
|
||||
17
qtask/src/main/java/net/tccn/qtask/QTaskAbs.java
Normal file
17
qtask/src/main/java/net/tccn/qtask/QTaskAbs.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
|
||||
public abstract class QTaskAbs implements QTask {
|
||||
|
||||
private E e;
|
||||
|
||||
public QTaskAbs(E e) {
|
||||
this.e = e;
|
||||
}
|
||||
|
||||
@Override
|
||||
public E getE() {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
16
qtask/src/main/java/net/tccn/qtask/QTaskEs.java
Normal file
16
qtask/src/main/java/net/tccn/qtask/QTaskEs.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
|
||||
public class QTaskEs extends QTaskAbs {
|
||||
|
||||
public QTaskEs(E e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object execute() {
|
||||
//find result by es api todo:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
71
qtask/src/main/java/net/tccn/qtask/QTaskHttp.java
Normal file
71
qtask/src/main/java/net/tccn/qtask/QTaskHttp.java
Normal file
@@ -0,0 +1,71 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou at 2019/1/20 11:07.
|
||||
*/
|
||||
public class QTaskHttp extends QTaskAbs implements QTask {
|
||||
|
||||
public QTaskHttp(E e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
private URLConnection getConnection() {
|
||||
try {
|
||||
URI uri = URI.create(getE().queryId);
|
||||
URL url = uri.toURL();
|
||||
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
|
||||
StringBuilder content = new StringBuilder();
|
||||
getE().para.forEach((k,v) -> {
|
||||
content.append(k).append("=").append(v).append("&");
|
||||
});
|
||||
if (content.length() > 0) {
|
||||
content.deleteCharAt(content.length() - 1);
|
||||
}
|
||||
|
||||
|
||||
connection.setDoOutput(true);
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setRequestProperty("Accept-Charset", "utf-8");
|
||||
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||
connection.setRequestProperty("Content-Length", String.valueOf(content.length()));
|
||||
connection.getOutputStream().write(content.toString().getBytes());
|
||||
|
||||
return connection;
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object execute() {
|
||||
try (
|
||||
InputStream is = getConnection().getInputStream();
|
||||
InputStreamReader reader = new InputStreamReader(is);
|
||||
BufferedReader br = new BufferedReader(reader);
|
||||
|
||||
){
|
||||
String content = "";
|
||||
String line;
|
||||
while ((line = br.readLine()) != null) {
|
||||
content += line + System.lineSeparator();
|
||||
}
|
||||
return content;
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
52
qtask/src/main/java/net/tccn/qtask/QTaskMethod.java
Normal file
52
qtask/src/main/java/net/tccn/qtask/QTaskMethod.java
Normal file
@@ -0,0 +1,52 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
import net.tccn.base.Kv;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class QTaskMethod extends QTaskAbs implements QTask {
|
||||
|
||||
public QTaskMethod(E e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public String getClazz(){
|
||||
String queryId = getE().queryId;
|
||||
return queryId.substring(0, queryId.lastIndexOf("."));
|
||||
}
|
||||
|
||||
public String getMethod(){
|
||||
String queryId = getE().queryId;
|
||||
return queryId.substring(queryId.lastIndexOf(".") + 1);
|
||||
}
|
||||
public Kv getPara() {
|
||||
return getE().para;
|
||||
}
|
||||
|
||||
// execute JAVA method by CLASS AND METHOD
|
||||
@Override
|
||||
public Object execute() {
|
||||
try {
|
||||
Class<?> type = Class.forName(getClazz());
|
||||
Object obj = type.newInstance();
|
||||
|
||||
Method method = type.getMethod(getMethod(), Kv.class);
|
||||
|
||||
return method.invoke(obj, getPara());
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
30
qtask/src/main/java/net/tccn/qtask/QTaskMysql.java
Normal file
30
qtask/src/main/java/net/tccn/qtask/QTaskMysql.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package net.tccn.qtask;
|
||||
|
||||
import net.tccn.E;
|
||||
|
||||
public class QTaskMysql extends QTaskAbs implements QTask {
|
||||
|
||||
private Object mapper;
|
||||
|
||||
public QTaskMysql(E e) {
|
||||
super(e);
|
||||
}
|
||||
|
||||
public String getSQL(){
|
||||
String sql = getE().para.get("sql")+"";
|
||||
return sql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object execute() {
|
||||
|
||||
System.out.println("QTaskMysql.execute: " + getE().queryId);
|
||||
|
||||
/*if ("Map".equalsIgnoreCase(getE().queryType)){
|
||||
// return mapper.findFirst(getSQL()); todo:
|
||||
} else if ("list".equalsIgnoreCase(getE().queryType)){
|
||||
// return mapper.findList(getSQL()); todo:
|
||||
}*/
|
||||
return null;
|
||||
}
|
||||
}
|
||||
27
qtask/src/test/java/RunTest.java
Normal file
27
qtask/src/test/java/RunTest.java
Normal file
@@ -0,0 +1,27 @@
|
||||
import net.tccn.E;
|
||||
import net.tccn.QRuner;
|
||||
import net.tccn.base.Kv;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou at 2019/1/20 12:43.
|
||||
*/
|
||||
public class RunTest {
|
||||
|
||||
public static E A = new E("mysql", "select * from user where userid=#(userid)", "查询用户列表", Kv.of("userid", 1));
|
||||
public static E B = new E("method", "User.say", "user调用", Kv.of("name", "张三").set("age", 13));
|
||||
public static E C = new E("http", "http://127.0.0.1/meta/db_plat_list?platToken=3421432", "查询数据平台列表", Kv.of("abx", "abx111"));
|
||||
|
||||
@Test
|
||||
public void t() {
|
||||
long start = System.currentTimeMillis();
|
||||
Object query = QRuner.query(C);
|
||||
System.out.printf("耗时:%s MS" ,System.currentTimeMillis() - start);
|
||||
System.out.println();
|
||||
|
||||
System.out.println(query);
|
||||
|
||||
|
||||
//System.out.println(query.getClass());
|
||||
}
|
||||
}
|
||||
14
qtask/src/test/java/User.java
Normal file
14
qtask/src/test/java/User.java
Normal file
@@ -0,0 +1,14 @@
|
||||
import net.tccn.base.Kv;
|
||||
|
||||
/**
|
||||
* @author: liangxianyou at 2019/1/20 12:52.
|
||||
*/
|
||||
public class User {
|
||||
|
||||
public String say(Kv kv) {
|
||||
String s = String.format("我叫:%s, 今年:%s岁", kv.get("name"), kv.get("age"));
|
||||
System.out.println(s);
|
||||
|
||||
return s;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user