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; + } +}