commit bcab7700430d8c566603dad591c49a5cd4c4e19c
Author: lxyer <237809796@qq.com>
Date: Mon Jan 21 11:10:50 2019 +0800
.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9b1ddc0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+/target/
+.project
+.classpath
+/.settings/
+/.externalToolBuilders/
+/bin/
+*.iml
+.idea/
+/.idea/
+/out/
+/tmp/
+/libs/
\ No newline at end of file
diff --git a/qtask/.gitignore b/qtask/.gitignore
new file mode 100644
index 0000000..9b1ddc0
--- /dev/null
+++ b/qtask/.gitignore
@@ -0,0 +1,12 @@
+/target/
+.project
+.classpath
+/.settings/
+/.externalToolBuilders/
+/bin/
+*.iml
+.idea/
+/.idea/
+/out/
+/tmp/
+/libs/
\ No newline at end of file
diff --git a/qtask/pom.xml b/qtask/pom.xml
new file mode 100644
index 0000000..1068371
--- /dev/null
+++ b/qtask/pom.xml
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+
+ net.tccn
+ qtask
+ 1.0
+
+
+
+
+ junit
+ junit
+ RELEASE
+ test
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/qtask/src/main/java/net/tccn/E.java b/qtask/src/main/java/net/tccn/E.java
new file mode 100644
index 0000000..3f5bf1d
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/E.java
@@ -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;
+ }
+
+
+}
diff --git a/qtask/src/main/java/net/tccn/QRuner.java b/qtask/src/main/java/net/tccn/QRuner.java
new file mode 100644
index 0000000..b254e7d
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/QRuner.java
@@ -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;
+ }
+}
diff --git a/qtask/src/main/java/net/tccn/base/Kv.java b/qtask/src/main/java/net/tccn/base/Kv.java
new file mode 100644
index 0000000..757e036
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/base/Kv.java
@@ -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 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 set(K k, V v){
+ put(k, v);
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/qtask/src/main/java/net/tccn/qtask/QTask.java b/qtask/src/main/java/net/tccn/qtask/QTask.java
new file mode 100644
index 0000000..6109236
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTask.java
@@ -0,0 +1,9 @@
+package net.tccn.qtask;
+
+import net.tccn.E;
+
+public interface QTask {
+ E getE();
+
+ Object execute();
+}
diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java b/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java
new file mode 100644
index 0000000..b228c4a
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTaskAbs.java
@@ -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;
+ }
+}
diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskEs.java b/qtask/src/main/java/net/tccn/qtask/QTaskEs.java
new file mode 100644
index 0000000..1f4f3f2
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTaskEs.java
@@ -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;
+ }
+}
diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java b/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java
new file mode 100644
index 0000000..419ffb5
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTaskHttp.java
@@ -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;
+ }
+}
diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java b/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java
new file mode 100644
index 0000000..59fb8ef
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTaskMethod.java
@@ -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;
+ }
+
+}
diff --git a/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java b/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java
new file mode 100644
index 0000000..1b20718
--- /dev/null
+++ b/qtask/src/main/java/net/tccn/qtask/QTaskMysql.java
@@ -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;
+ }
+}
diff --git a/qtask/src/test/java/RunTest.java b/qtask/src/test/java/RunTest.java
new file mode 100644
index 0000000..a303465
--- /dev/null
+++ b/qtask/src/test/java/RunTest.java
@@ -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());
+ }
+}
diff --git a/qtask/src/test/java/User.java b/qtask/src/test/java/User.java
new file mode 100644
index 0000000..a5f2356
--- /dev/null
+++ b/qtask/src/test/java/User.java
@@ -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;
+ }
+}