diff --git a/conf/application.xml b/conf/application.xml index 6d20863..3d18715 100644 --- a/conf/application.xml +++ b/conf/application.xml @@ -15,7 +15,7 @@ - + diff --git a/src/main/java/net/tccn/service/BaseService.java b/src/main/java/net/tccn/base/BaseService.java similarity index 95% rename from src/main/java/net/tccn/service/BaseService.java rename to src/main/java/net/tccn/base/BaseService.java index ac72539..f4faf8e 100644 --- a/src/main/java/net/tccn/service/BaseService.java +++ b/src/main/java/net/tccn/base/BaseService.java @@ -1,8 +1,5 @@ -package net.tccn.service; +package net.tccn.base; -import net.tccn.base.MetaKit; -import net.tccn.base.TplKit; -import net.tccn.base.X; import org.redkale.convert.json.JsonConvert; import org.redkale.net.http.RestMapping; import org.redkale.service.Service; diff --git a/src/main/java/net/tccn/servlet/BaseServlet.java b/src/main/java/net/tccn/base/BaseServlet.java similarity index 94% rename from src/main/java/net/tccn/servlet/BaseServlet.java rename to src/main/java/net/tccn/base/BaseServlet.java index e7e1202..7245840 100644 --- a/src/main/java/net/tccn/servlet/BaseServlet.java +++ b/src/main/java/net/tccn/base/BaseServlet.java @@ -1,12 +1,9 @@ -package net.tccn.servlet; +package net.tccn.base; import com.arangodb.ArangoDBException; -import net.tccn.base.CfgException; -import net.tccn.base.JBean; -import net.tccn.base.Kv; import net.tccn.base.arango.ArangoSource; -import net.tccn.service.UserService; import net.tccn.user.User; +import net.tccn.user.UserService; import org.redkale.net.http.HttpRequest; import org.redkale.net.http.HttpResponse; import org.redkale.net.http.HttpServlet; @@ -72,7 +69,7 @@ public class BaseServlet extends HttpServlet { super.execute(request, response); } catch (ArangoDBException e) { logger.log(Level.INFO, "arangodb init!", e); - ArangoSource.init(); + ArangoSource.use(); } catch (UnsupportedOperationException e) { e.printStackTrace(); response.finish(JBean.by(-1, e.getMessage())); diff --git a/src/main/java/net/tccn/base/MetaKit.java b/src/main/java/net/tccn/base/MetaKit.java index 99d82f8..63ce4f5 100644 --- a/src/main/java/net/tccn/base/MetaKit.java +++ b/src/main/java/net/tccn/base/MetaKit.java @@ -2,9 +2,9 @@ package net.tccn.base; import lombok.Getter; import net.tccn.base.arango.Doc; -import net.tccn.dbq.jdbc.api.DbAccount; -import net.tccn.dbq.jdbc.api.DbKit; -import net.tccn.dbq.table.Field; +import net.tccn.base.dbq.jdbc.api.DbAccount; +import net.tccn.base.dbq.jdbc.api.DbKit; +import net.tccn.base.dbq.table.Field; import net.tccn.dict.Dict; import net.tccn.meta.*; import net.tccn.plat.DbPlat; diff --git a/src/main/java/net/tccn/base/arango/ArangoSource.java b/src/main/java/net/tccn/base/arango/ArangoSource.java index 474e401..011581e 100644 --- a/src/main/java/net/tccn/base/arango/ArangoSource.java +++ b/src/main/java/net/tccn/base/arango/ArangoSource.java @@ -1,14 +1,19 @@ package net.tccn.base.arango; -import com.arangodb.*; +import com.arangodb.ArangoCollection; +import com.arangodb.ArangoDB; +import com.arangodb.ArangoDatabase; +import com.arangodb.Function; import com.arangodb.entity.DocumentCreateEntity; import com.arangodb.entity.DocumentDeleteEntity; import com.arangodb.entity.MultiDocumentEntity; +import net.tccn.base.PropKit; +import net.tccn.base.X; import javax.persistence.Table; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -16,6 +21,7 @@ import static java.util.Arrays.asList; /** * 管理 数据源连接对象 + * * @author: liangxianyou at 2018/12/15 11:35. */ public class ArangoSource { @@ -24,38 +30,46 @@ public class ArangoSource { private ArangoDB arangoDb; private static Map sources = new HashMap(); - static { - init(); - } - public static void init() { - sources.put("main", new ArangoSource(new ArangoDB.Builder().host("120.24.230.60", 8529).user("root").password("abc123").build())); - sources.put("abc", new ArangoSource(new ArangoDB.Builder().host("192.168.199.135", 8529).user("root").password("root").build())); - } - - public ArangoSource(ArangoDB arangoDb) { + private ArangoSource(ArangoDB arangoDb) { this.arangoDb = arangoDb; } public static ArangoSource use() { return use("main"); } + public static ArangoSource use(String unit) { - if (unit == null || unit.isEmpty()) { - unit = "main"; + if (unit == null || unit.isEmpty() || "main".equals(unit)) { + unit = ""; + } else { + unit = "." + unit; } - return sources.get(unit); + + ArangoSource source = sources.get(unit); + if (source == null) { + String host = PropKit.getProperty("arango.host" + unit); + int port = Integer.parseInt(PropKit.getProperty("arango.port" + unit, "8529")); + String user = PropKit.getProperty("arango.user" + unit); + String password = PropKit.getProperty("arango.passwd" + unit); + + source = new ArangoSource(new ArangoDB.Builder().host(host, port).user(user).password(password).build()); + } + return source; } public ArangoDB arangoDB() { return arangoDb; } + public ArangoDatabase db(String db) { return arangoDb.db(db); } + public ArangoCollection collection(Doc doc) { return collection(doc.getClass()); } + public ArangoCollection collection(Class type) { Table table = type.getAnnotation(Table.class); //createDb(table.catalog()); @@ -70,6 +84,7 @@ public class ArangoSource { logger.log(Level.INFO, "arango database exists"); return true; } + public ArangoCollection createDocument(Doc doc) { Class type = doc.getClass(); Table table = type.getAnnotation(Table.class); @@ -92,92 +107,9 @@ public class ArangoSource { return s.substring(0, 1).toUpperCase() + s.substring(1); }; - private static Map clazzMap = new HashMap<>(); - static { - clazzMap.put(ArrayList.class, new Class[]{List.class, ArrayList.class, String.class}); - clazzMap.put(HashMap.class, new Class[]{Map.class, HashMap.class, String.class}); - clazzMap.put(Long.class, new Class[]{Long.class, Integer.class, long.class, int.class, short.class, String.class}); - clazzMap.put(String.class, new Class[]{String.class}); - } - /** - * 还原 Doc对象 - * @param map - * @param type - * @param - * @return - */ - public T toDoc1(Map map, Class type) { - try { - Doc doc = type.newInstance(); - map.forEach((k, v) -> { - - String methodName = "set" + upFirst.apply(k); - Method method = null; - Class[] clazzs = clazzMap.get(v == null ? null : v.getClass()); - if (clazzs == null) { - doc.set(k, v); - } else { - for (Class clazz : clazzs) { - try { - method = type.getDeclaredMethod(methodName, clazz); - } catch (NoSuchMethodException e) { - } - if (method != null) { - try { - if (v.getClass() == Long.class && clazz != Long.class) {//多种数值类型的处理 - Object _v; - switch (clazz.getSimpleName()) { - case "int": - case "Integer": _v = (int)((long) v); break; - case "short": - case "Short": _v = (short)((long) v); break; - default: _v = v; - } - System.out.println(clazz.getSimpleName()); - method.invoke(doc, _v); - } else { - method.invoke(doc, v); - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - doc.set(k, v); - } catch (InvocationTargetException e) { - e.printStackTrace(); - doc.set(k, v); - } - break; - } - } - } - - if (method == null) { - doc.set(k, v); - } - }); - - return (T) doc; - } catch (Exception e) { - - } - - return null; - } - - private Predicate isEmpty = (x) -> { - if (x == null) - return true; - if (x instanceof List) - return ((List) x).isEmpty(); - if (x instanceof String) - return ((String) x).isEmpty(); - if (x instanceof Map) - return ((Map) x).isEmpty(); - if (x instanceof Collection) - return ((Collection) x).isEmpty(); - return false; - }; /** * Doc 转为查询对象 + * * @param t * @param * @return @@ -205,7 +137,7 @@ public class ArangoSource { private Function orderBuilder = (t) -> { StringBuilder buf = new StringBuilder(); Map order = t.getOrder(); - if (isEmpty.test(order)) { + if (X.isEmpty(order)) { return buf.append(" sort d._key desc"); } buf.append(" sort "); @@ -219,7 +151,7 @@ public class ArangoSource { private Function returnBuilder = (t) -> { StringBuilder buf = new StringBuilder(); - if (isEmpty.test(t.get_Shows())) { + if (X.isEmpty(t.get_Shows())) { return buf.append(" return d"); } @@ -239,6 +171,7 @@ public class ArangoSource { //logger.log(Level.INFO, buf.toString()); return buf.toString(); } + public String parseAql(T t, int offset, int ps) { if (offset < 0) offset = 0; if (ps <= 0) ps = 1000; @@ -251,6 +184,7 @@ public class ArangoSource { //logger.log(Level.INFO, buf.toString()); return buf.toString(); } + //---------------------------------------- //ok public T save(T doc) { @@ -267,7 +201,7 @@ public class ArangoSource { //ok public T getDoc(Object key, Class type) { - return collection(type).getDocument(String.valueOf(key), type); + return collection(type).getDocument(String.valueOf(key), type); } //ok @@ -276,7 +210,7 @@ public class ArangoSource { } //ok - public MultiDocumentEntity> deleteAll(Doc ... docs) { + public MultiDocumentEntity> deleteAll(Doc... docs) { return collection(docs[0]).deleteDocuments(asList(docs)); } diff --git a/src/main/java/net/tccn/base/arango/Doc.java b/src/main/java/net/tccn/base/arango/Doc.java index d2ba2ec..0adb502 100644 --- a/src/main/java/net/tccn/base/arango/Doc.java +++ b/src/main/java/net/tccn/base/arango/Doc.java @@ -43,12 +43,12 @@ public abstract class Doc { this._key = key; } - public Doc set(String k, Object v) { + protected Doc set(String k, Object v) { attr.put(k, v); return this; } - public V get(String k) { + protected V get(String k) { return (V)attr.get(k); } @@ -212,16 +212,17 @@ public abstract class Doc { return findFirst(arangoSource.parseAql(t, 0, 1), (Class) t.getClass()); } public List find() { - return find((T) this, 0, 1000); + int count = count(this); + return find((T) this, 0, count); } public List find(T t) { return find(t, 0, 1000); } - public List find(T t, int offset, int pn) { + public List find(T t, int offset, int ps) { if (t == null) { t = (T) this; } - return find(arangoSource.parseAql(t, offset, pn), (Class)this.getClass()); + return find(arangoSource.parseAql(t, offset, ps), (Class)this.getClass()); } public List find(String aql, Class clazz) { @@ -230,7 +231,7 @@ public abstract class Doc { } catch (ArangoDBException e) { System.out.println(aql); e.printStackTrace(); - ArangoSource.init(); + ArangoSource.use(); } return db.query(aql, clazz).asListRemaining(); } @@ -240,19 +241,19 @@ public abstract class Doc { } catch (ArangoDBException e) { System.out.println(aql); e.printStackTrace(); - ArangoSource.init(); + ArangoSource.use(); } return db.query(aql, clazz).first(); } - public long count() { + public int count() { return count(this); } - public long count(T t) { + public int count(T t) { if (t == null) { t = (T) this; } - return db.query(arangoSource.parseAqlCount(t), long.class).first(); + return db.query(arangoSource.parseAqlCount(t), int.class).first(); } //ok public T findByKey(Object key) { diff --git a/src/main/java/net/tccn/dbq/DbExecutors.java b/src/main/java/net/tccn/base/dbq/DbExecutors.java similarity index 93% rename from src/main/java/net/tccn/dbq/DbExecutors.java rename to src/main/java/net/tccn/base/dbq/DbExecutors.java index 8ae1cd7..ca31451 100644 --- a/src/main/java/net/tccn/dbq/DbExecutors.java +++ b/src/main/java/net/tccn/base/dbq/DbExecutors.java @@ -1,10 +1,10 @@ -package net.tccn.dbq; +package net.tccn.base.dbq; import net.tccn.base.MetaKit; import net.tccn.base.PageBean; -import net.tccn.dbq.fbean.FBean; -import net.tccn.dbq.jdbc.api.DbKit; -import net.tccn.dbq.parser.ParseMysql; +import net.tccn.base.dbq.fbean.FBean; +import net.tccn.base.dbq.jdbc.api.DbKit; +import net.tccn.base.dbq.parser.ParseMysql; import net.tccn.meta.MetaService; import net.tccn.meta.MetaTable; diff --git a/src/main/java/net/tccn/dbq/fbean/DbType.java b/src/main/java/net/tccn/base/dbq/fbean/DbType.java similarity index 78% rename from src/main/java/net/tccn/dbq/fbean/DbType.java rename to src/main/java/net/tccn/base/dbq/fbean/DbType.java index dab08cc..bd6fa87 100644 --- a/src/main/java/net/tccn/dbq/fbean/DbType.java +++ b/src/main/java/net/tccn/base/dbq/fbean/DbType.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; /** * Created by liangxianyou at 2018/12/14 15:34. diff --git a/src/main/java/net/tccn/dbq/fbean/FBean.java b/src/main/java/net/tccn/base/dbq/fbean/FBean.java similarity index 93% rename from src/main/java/net/tccn/dbq/fbean/FBean.java rename to src/main/java/net/tccn/base/dbq/fbean/FBean.java index 49a6a93..1675c53 100644 --- a/src/main/java/net/tccn/dbq/fbean/FBean.java +++ b/src/main/java/net/tccn/base/dbq/fbean/FBean.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; import lombok.Data; diff --git a/src/main/java/net/tccn/dbq/fbean/Filter.java b/src/main/java/net/tccn/base/dbq/fbean/Filter.java similarity index 98% rename from src/main/java/net/tccn/dbq/fbean/Filter.java rename to src/main/java/net/tccn/base/dbq/fbean/Filter.java index bfa8f4d..07e4e9d 100644 --- a/src/main/java/net/tccn/dbq/fbean/Filter.java +++ b/src/main/java/net/tccn/base/dbq/fbean/Filter.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; import lombok.Data; diff --git a/src/main/java/net/tccn/dbq/fbean/FilterType.java b/src/main/java/net/tccn/base/dbq/fbean/FilterType.java similarity index 98% rename from src/main/java/net/tccn/dbq/fbean/FilterType.java rename to src/main/java/net/tccn/base/dbq/fbean/FilterType.java index 094a40a..75fa1ea 100644 --- a/src/main/java/net/tccn/dbq/fbean/FilterType.java +++ b/src/main/java/net/tccn/base/dbq/fbean/FilterType.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; import net.tccn.base.Kv; diff --git a/src/main/java/net/tccn/dbq/fbean/Limit.java b/src/main/java/net/tccn/base/dbq/fbean/Limit.java similarity index 93% rename from src/main/java/net/tccn/dbq/fbean/Limit.java rename to src/main/java/net/tccn/base/dbq/fbean/Limit.java index 92bacb0..7ee40b2 100644 --- a/src/main/java/net/tccn/dbq/fbean/Limit.java +++ b/src/main/java/net/tccn/base/dbq/fbean/Limit.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; import lombok.Data; diff --git a/src/main/java/net/tccn/dbq/fbean/Order.java b/src/main/java/net/tccn/base/dbq/fbean/Order.java similarity index 96% rename from src/main/java/net/tccn/dbq/fbean/Order.java rename to src/main/java/net/tccn/base/dbq/fbean/Order.java index 21f8988..392e716 100644 --- a/src/main/java/net/tccn/dbq/fbean/Order.java +++ b/src/main/java/net/tccn/base/dbq/fbean/Order.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.fbean; +package net.tccn.base.dbq.fbean; import java.util.List; diff --git a/src/main/java/net/tccn/dbq/jdbc/api/DbAccount.java b/src/main/java/net/tccn/base/dbq/jdbc/api/DbAccount.java similarity index 96% rename from src/main/java/net/tccn/dbq/jdbc/api/DbAccount.java rename to src/main/java/net/tccn/base/dbq/jdbc/api/DbAccount.java index 052d16b..0f9d863 100644 --- a/src/main/java/net/tccn/dbq/jdbc/api/DbAccount.java +++ b/src/main/java/net/tccn/base/dbq/jdbc/api/DbAccount.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.jdbc.api; +package net.tccn.base.dbq.jdbc.api; import lombok.Data; import net.tccn.base.arango.Doc; diff --git a/src/main/java/net/tccn/dbq/jdbc/api/DbKit.java b/src/main/java/net/tccn/base/dbq/jdbc/api/DbKit.java similarity index 98% rename from src/main/java/net/tccn/dbq/jdbc/api/DbKit.java rename to src/main/java/net/tccn/base/dbq/jdbc/api/DbKit.java index cffdddd..23d4675 100644 --- a/src/main/java/net/tccn/dbq/jdbc/api/DbKit.java +++ b/src/main/java/net/tccn/base/dbq/jdbc/api/DbKit.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.jdbc.api; +package net.tccn.base.dbq.jdbc.api; import net.tccn.base.X; diff --git a/src/main/java/net/tccn/dbq/jdbc/api/DbSource.java b/src/main/java/net/tccn/base/dbq/jdbc/api/DbSource.java similarity index 96% rename from src/main/java/net/tccn/dbq/jdbc/api/DbSource.java rename to src/main/java/net/tccn/base/dbq/jdbc/api/DbSource.java index f4e9e07..3fc4921 100644 --- a/src/main/java/net/tccn/dbq/jdbc/api/DbSource.java +++ b/src/main/java/net/tccn/base/dbq/jdbc/api/DbSource.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.jdbc.api; +package net.tccn.base.dbq.jdbc.api; import net.tccn.base.IService; diff --git a/src/main/java/net/tccn/dbq/jdbc/api/DbSourceMysql.java b/src/main/java/net/tccn/base/dbq/jdbc/api/DbSourceMysql.java similarity index 99% rename from src/main/java/net/tccn/dbq/jdbc/api/DbSourceMysql.java rename to src/main/java/net/tccn/base/dbq/jdbc/api/DbSourceMysql.java index e20177e..4a431be 100644 --- a/src/main/java/net/tccn/dbq/jdbc/api/DbSourceMysql.java +++ b/src/main/java/net/tccn/base/dbq/jdbc/api/DbSourceMysql.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.jdbc.api; +package net.tccn.base.dbq.jdbc.api; import net.tccn.base.CfgException; import net.tccn.base.Kv; diff --git a/src/main/java/net/tccn/dbq/parser/ParseArango.java b/src/main/java/net/tccn/base/dbq/parser/ParseArango.java similarity index 73% rename from src/main/java/net/tccn/dbq/parser/ParseArango.java rename to src/main/java/net/tccn/base/dbq/parser/ParseArango.java index ad433d1..685712f 100644 --- a/src/main/java/net/tccn/dbq/parser/ParseArango.java +++ b/src/main/java/net/tccn/base/dbq/parser/ParseArango.java @@ -1,6 +1,6 @@ -package net.tccn.dbq.parser; +package net.tccn.base.dbq.parser; -import net.tccn.dbq.fbean.FBean; +import net.tccn.base.dbq.fbean.FBean; /** * Created by liangxianyou at 2018/12/24 15:49. diff --git a/src/main/java/net/tccn/dbq/parser/ParseEs.java b/src/main/java/net/tccn/base/dbq/parser/ParseEs.java similarity index 73% rename from src/main/java/net/tccn/dbq/parser/ParseEs.java rename to src/main/java/net/tccn/base/dbq/parser/ParseEs.java index 0d8a598..32187b5 100644 --- a/src/main/java/net/tccn/dbq/parser/ParseEs.java +++ b/src/main/java/net/tccn/base/dbq/parser/ParseEs.java @@ -1,6 +1,6 @@ -package net.tccn.dbq.parser; +package net.tccn.base.dbq.parser; -import net.tccn.dbq.fbean.FBean; +import net.tccn.base.dbq.fbean.FBean; /** * Created by liangxianyou at 2018/12/24 15:49. diff --git a/src/main/java/net/tccn/dbq/parser/ParseMysql.java b/src/main/java/net/tccn/base/dbq/parser/ParseMysql.java similarity index 91% rename from src/main/java/net/tccn/dbq/parser/ParseMysql.java rename to src/main/java/net/tccn/base/dbq/parser/ParseMysql.java index 98ac500..21760a0 100644 --- a/src/main/java/net/tccn/dbq/parser/ParseMysql.java +++ b/src/main/java/net/tccn/base/dbq/parser/ParseMysql.java @@ -1,7 +1,7 @@ -package net.tccn.dbq.parser; +package net.tccn.base.dbq.parser; import net.tccn.base.*; -import net.tccn.dbq.fbean.*; +import net.tccn.base.dbq.fbean.*; import net.tccn.meta.MetaLink; import net.tccn.meta.MetaService; import net.tccn.meta.MetaTable; @@ -20,20 +20,6 @@ import java.util.stream.Collectors; */ public class ParseMysql implements Parser { - private Predicate isEmpty = (x) -> { - if (x == null) - return true; - if (x instanceof List) - return ((List) x).isEmpty(); - if (x instanceof String) - return ((String) x).isEmpty(); - if (x instanceof Map) - return ((Map) x).isEmpty(); - if (x instanceof Collection) - return ((Collection) x).isEmpty(); - return false; - }; - Predicate> sameDbFun = (kv) -> { String dbPlatId = null; for (MetaTable metaTable : kv.values()) { @@ -78,20 +64,20 @@ public class ParseMysql implements Parser { if (sameDbFun.test(tables) || true) { // where 1=1 and xx=xx StringBuffer bufWhere = new StringBuffer(); - if (!isEmpty.test(filters)) { + if (!X.isEmpty(filters)) { bufWhere.append(Filter.filter(filters, DbType.MYSQL)); } //select a.x, b.y, c.z StringBuffer bufSelect = new StringBuffer(); bufSelect.append("select "); - if ("export".equals(fBean.getType()) && !isEmpty.test(exports)) { + if ("export".equals(fBean.getType()) && !X.isEmpty(exports)) { exports.forEach(x -> { bufSelect.append(x.get("col")).append(" as ").append("'").append(x.get("col")).append("',"); }); bufSelect.deleteCharAt(bufSelect.length() - 1); } - else if ("list".equals(fBean.getType()) && !isEmpty.test(shows)) { + else if ("list".equals(fBean.getType()) && !X.isEmpty(shows)) { shows.forEach(x -> { bufSelect.append(x.get("col")).append(" as ").append("'").append(x.get("col")).append("',"); }); @@ -104,7 +90,7 @@ public class ParseMysql implements Parser { StringBuilder bufFrom = new StringBuilder(); bufFrom.append(" from ").append(metaTable.getCatalog()).append(".`").append(metaTable.getName()).append("` ").append(metaTable.getAlias()); //left join - if (!isEmpty.test(links)) { + if (!X.isEmpty(links)) { links.forEach(x -> { MetaTable rightTable = tables.get(metaTable.getAlias().equals(x.getTables()[0]) ? x.getTables()[1] : x.getTables()[0]); if (rightTable != null) { @@ -122,7 +108,7 @@ public class ParseMysql implements Parser { StringBuffer bufOth = new StringBuffer(); //order by - if (!isEmpty.test(orders)) { + if (!X.isEmpty(orders)) { bufOth.append(" ").append(Order.order(orders, DbType.MYSQL)); } //limit diff --git a/src/main/java/net/tccn/dbq/parser/Parser.java b/src/main/java/net/tccn/base/dbq/parser/Parser.java similarity index 84% rename from src/main/java/net/tccn/dbq/parser/Parser.java rename to src/main/java/net/tccn/base/dbq/parser/Parser.java index edbf64a..0b55d65 100644 --- a/src/main/java/net/tccn/dbq/parser/Parser.java +++ b/src/main/java/net/tccn/base/dbq/parser/Parser.java @@ -1,6 +1,6 @@ -package net.tccn.dbq.parser; +package net.tccn.base.dbq.parser; -import net.tccn.dbq.fbean.FBean; +import net.tccn.base.dbq.fbean.FBean; /** * Db 执行解释层 diff --git a/src/main/java/net/tccn/dbq/qtask/Qtask.java b/src/main/java/net/tccn/base/dbq/qtask/Qtask.java similarity index 95% rename from src/main/java/net/tccn/dbq/qtask/Qtask.java rename to src/main/java/net/tccn/base/dbq/qtask/Qtask.java index f93dc98..04e2a29 100644 --- a/src/main/java/net/tccn/dbq/qtask/Qtask.java +++ b/src/main/java/net/tccn/base/dbq/qtask/Qtask.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.qtask; +package net.tccn.base.dbq.qtask; import lombok.Data; import net.tccn.base.arango.Doc; diff --git a/src/main/java/net/tccn/dbq/table/Column.java b/src/main/java/net/tccn/base/dbq/table/Column.java similarity index 95% rename from src/main/java/net/tccn/dbq/table/Column.java rename to src/main/java/net/tccn/base/dbq/table/Column.java index 4bd3cec..b26bf94 100644 --- a/src/main/java/net/tccn/dbq/table/Column.java +++ b/src/main/java/net/tccn/base/dbq/table/Column.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.table; +package net.tccn.base.dbq.table; import lombok.Data; diff --git a/src/main/java/net/tccn/dbq/table/Field.java b/src/main/java/net/tccn/base/dbq/table/Field.java similarity index 97% rename from src/main/java/net/tccn/dbq/table/Field.java rename to src/main/java/net/tccn/base/dbq/table/Field.java index 1195849..5a4a2a7 100644 --- a/src/main/java/net/tccn/dbq/table/Field.java +++ b/src/main/java/net/tccn/base/dbq/table/Field.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.table; +package net.tccn.base.dbq.table; import lombok.Data; diff --git a/src/main/java/net/tccn/dbq/table/Table.java b/src/main/java/net/tccn/base/dbq/table/Table.java similarity index 96% rename from src/main/java/net/tccn/dbq/table/Table.java rename to src/main/java/net/tccn/base/dbq/table/Table.java index e547d82..f3ebd9f 100644 --- a/src/main/java/net/tccn/dbq/table/Table.java +++ b/src/main/java/net/tccn/base/dbq/table/Table.java @@ -1,4 +1,4 @@ -package net.tccn.dbq.table; +package net.tccn.base.dbq.table; import lombok.Data; diff --git a/src/main/java/net/tccn/dict/DictKit.java b/src/main/java/net/tccn/dict/DictKit.java index 5c5cdd2..bb1e132 100644 --- a/src/main/java/net/tccn/dict/DictKit.java +++ b/src/main/java/net/tccn/dict/DictKit.java @@ -11,9 +11,6 @@ import java.util.*; * @author: liangxianyou */ public final class DictKit { - private static String dcate = "db"; - private static String dataPath; - private static Map kits = new HashMap<>(); private String platToken; private Map> dicts; @@ -32,6 +29,10 @@ public final class DictKit { return dictKit; } + public synchronized void reload() { + this.dicts = MetaKit.getDictData(platToken); + } + // 初始化字典,不同模式下,数据来源不同 private void stop() { @@ -144,7 +145,7 @@ public final class DictKit { Objects.requireNonNull(label, "label 不能为空"); List dicts = getDicts(code); - Optional any = dicts.stream().filter(x -> label.equals(x.get("label"))).findAny(); + Optional any = dicts.stream().filter(x -> label.equals(x.getLabel())).findAny(); return any.isPresent() ? any.get().getValue() : ""; } diff --git a/src/main/java/net/tccn/service/DictService.java b/src/main/java/net/tccn/dict/DictService.java similarity index 90% rename from src/main/java/net/tccn/service/DictService.java rename to src/main/java/net/tccn/dict/DictService.java index 2a6eb32..6ff1b0f 100644 --- a/src/main/java/net/tccn/service/DictService.java +++ b/src/main/java/net/tccn/dict/DictService.java @@ -1,8 +1,7 @@ -package net.tccn.service; +package net.tccn.dict; +import net.tccn.base.BaseService; import net.tccn.base.JBean; -import net.tccn.dict.Dict; -import net.tccn.dict.DictKit; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; diff --git a/src/main/java/net/tccn/servlet/FileServlet.java b/src/main/java/net/tccn/file/FileServlet.java similarity index 95% rename from src/main/java/net/tccn/servlet/FileServlet.java rename to src/main/java/net/tccn/file/FileServlet.java index feefd91..03a8b57 100644 --- a/src/main/java/net/tccn/servlet/FileServlet.java +++ b/src/main/java/net/tccn/file/FileServlet.java @@ -1,5 +1,6 @@ -package net.tccn.servlet; +package net.tccn.file; +import net.tccn.base.BaseServlet; import net.tccn.base.JBean; import net.tccn.base.Kv; import org.redkale.net.http.*; diff --git a/src/main/java/net/tccn/service/_FileService.java b/src/main/java/net/tccn/file/_FileService.java similarity index 97% rename from src/main/java/net/tccn/service/_FileService.java rename to src/main/java/net/tccn/file/_FileService.java index 337b819..6e48bb7 100644 --- a/src/main/java/net/tccn/service/_FileService.java +++ b/src/main/java/net/tccn/file/_FileService.java @@ -1,10 +1,7 @@ -package net.tccn.service; +package net.tccn.file; -import net.tccn.base.ExcelKit; -import net.tccn.base.JBean; -import net.tccn.base.Kv; -import net.tccn.base.MetaKit; -import net.tccn.dbq.table.Field; +import net.tccn.base.*; +import net.tccn.base.dbq.table.Field; import net.tccn.meta.MetaTable; import net.tccn.plat.SysPlat; import org.redkale.net.http.RestMapping; diff --git a/src/main/java/net/tccn/meta/MetaTable.java b/src/main/java/net/tccn/meta/MetaTable.java index 4a1de41..071db42 100644 --- a/src/main/java/net/tccn/meta/MetaTable.java +++ b/src/main/java/net/tccn/meta/MetaTable.java @@ -2,7 +2,7 @@ package net.tccn.meta; import lombok.Data; import net.tccn.base.arango.Doc; -import net.tccn.dbq.table.Field; +import net.tccn.base.dbq.table.Field; import javax.persistence.Table; import java.io.Serializable; @@ -30,7 +30,7 @@ public class MetaTable extends Doc implements Serializable { private Integer hv;//临时 // ------------------------------------------------ - public static MetaTable toAs(net.tccn.dbq.table.Table table) { + public static MetaTable toAs(net.tccn.base.dbq.table.Table table) { List fields = table.getColumns().stream().map(Field::toAs).collect(Collectors.toList()); MetaTable _bean = new MetaTable(); diff --git a/src/main/java/net/tccn/service/MetadataService.java b/src/main/java/net/tccn/meta/MetadataService.java similarity index 99% rename from src/main/java/net/tccn/service/MetadataService.java rename to src/main/java/net/tccn/meta/MetadataService.java index 80d0eff..b9ed253 100644 --- a/src/main/java/net/tccn/service/MetadataService.java +++ b/src/main/java/net/tccn/meta/MetadataService.java @@ -1,10 +1,10 @@ -package net.tccn.service; +package net.tccn.meta; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.Kv; import net.tccn.base.MetaKit; -import net.tccn.dbq.table.Field; -import net.tccn.meta.*; +import net.tccn.base.dbq.table.Field; import net.tccn.plat.SysPlat; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; diff --git a/src/main/java/net/tccn/service/DataService.java b/src/main/java/net/tccn/open/DataService.java similarity index 97% rename from src/main/java/net/tccn/service/DataService.java rename to src/main/java/net/tccn/open/DataService.java index f9ed937..18fd7cd 100644 --- a/src/main/java/net/tccn/service/DataService.java +++ b/src/main/java/net/tccn/open/DataService.java @@ -1,15 +1,14 @@ -package net.tccn.service; +package net.tccn.open; import net.tccn.base.*; -import net.tccn.dbq.DbExecutors; -import net.tccn.dbq.fbean.FBean; +import net.tccn.base.dbq.fbean.FBean; +import net.tccn.base.dbq.*; import net.tccn.dict.DictKit; import net.tccn.meta.MetaService; import org.redkale.net.http.HttpScope; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; -import org.redkale.util.Comment; import java.util.List; import java.util.Map; diff --git a/src/main/java/net/tccn/oth/QtaskTest.java b/src/main/java/net/tccn/oth/QtaskTest.java deleted file mode 100644 index 681b1da..0000000 --- a/src/main/java/net/tccn/oth/QtaskTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.tccn.oth; - -import net.tccn.base.Kv; - -/** - * @author: liangxianyou - */ -public class QtaskTest { - - public Kv abx(Kv kv) { - - return Kv.of("hello", "world").putAll(kv); - } -} diff --git a/src/main/java/net/tccn/service/PlatService.java b/src/main/java/net/tccn/plat/PlatService.java similarity index 92% rename from src/main/java/net/tccn/service/PlatService.java rename to src/main/java/net/tccn/plat/PlatService.java index e2f4afa..c6f893b 100644 --- a/src/main/java/net/tccn/service/PlatService.java +++ b/src/main/java/net/tccn/plat/PlatService.java @@ -1,11 +1,10 @@ -package net.tccn.service; +package net.tccn.plat; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.MetaKit; import net.tccn.base.PageBean; -import net.tccn.dbq.jdbc.api.DbAccount; -import net.tccn.plat.DbPlat; -import net.tccn.plat.SysPlat; +import net.tccn.base.dbq.jdbc.api.DbAccount; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestService; import org.redkale.source.Flipper; diff --git a/src/main/java/net/tccn/service/_DbService.java b/src/main/java/net/tccn/plat/_DbService.java similarity index 94% rename from src/main/java/net/tccn/service/_DbService.java rename to src/main/java/net/tccn/plat/_DbService.java index ed7be05..88d8d44 100644 --- a/src/main/java/net/tccn/service/_DbService.java +++ b/src/main/java/net/tccn/plat/_DbService.java @@ -1,12 +1,13 @@ -package net.tccn.service; +package net.tccn.plat; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.Kv; import net.tccn.base.MetaKit; -import net.tccn.dbq.jdbc.api.DbAccount; -import net.tccn.dbq.jdbc.api.DbKit; -import net.tccn.dbq.table.Column; -import net.tccn.dbq.table.Table; +import net.tccn.base.dbq.jdbc.api.DbAccount; +import net.tccn.base.dbq.jdbc.api.DbKit; +import net.tccn.base.dbq.table.Column; +import net.tccn.base.dbq.table.Table; import net.tccn.meta.MetaTable; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestService; diff --git a/src/main/java/net/tccn/service/_TableService.java b/src/main/java/net/tccn/plat/_TableService.java similarity index 97% rename from src/main/java/net/tccn/service/_TableService.java rename to src/main/java/net/tccn/plat/_TableService.java index ef8b7ba..b960f16 100644 --- a/src/main/java/net/tccn/service/_TableService.java +++ b/src/main/java/net/tccn/plat/_TableService.java @@ -1,9 +1,11 @@ -package net.tccn.service; +package net.tccn.plat; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.Kv; import net.tccn.base.MetaKit; -import net.tccn.dbq.table.Table; +import net.tccn.base.dbq.table.Table; +import net.tccn.file._FileService; import net.tccn.meta.MetaTable; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; diff --git a/src/main/java/net/tccn/service/QtaskService.java b/src/main/java/net/tccn/qtask/QtaskService.java similarity index 93% rename from src/main/java/net/tccn/service/QtaskService.java rename to src/main/java/net/tccn/qtask/QtaskService.java index eb261c0..be9abd3 100644 --- a/src/main/java/net/tccn/service/QtaskService.java +++ b/src/main/java/net/tccn/qtask/QtaskService.java @@ -1,8 +1,8 @@ -package net.tccn.service; +package net.tccn.qtask; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.Kv; -import net.tccn.qtask.TaskKit; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; diff --git a/src/main/java/net/tccn/qtask/Task.java b/src/main/java/net/tccn/qtask/Task.java index b2e192f..2a98aa1 100644 --- a/src/main/java/net/tccn/qtask/Task.java +++ b/src/main/java/net/tccn/qtask/Task.java @@ -2,7 +2,7 @@ package net.tccn.qtask; import lombok.Data; import net.tccn.base.Kv; -import net.tccn.dbq.jdbc.api.DbAccount; +import net.tccn.base.dbq.jdbc.api.DbAccount; /** * |- dbp: 调用谁, 参数, diff --git a/src/main/java/net/tccn/service/_QtaskService.java b/src/main/java/net/tccn/qtask/_QtaskService.java similarity index 93% rename from src/main/java/net/tccn/service/_QtaskService.java rename to src/main/java/net/tccn/qtask/_QtaskService.java index adff7b9..96ce4a2 100644 --- a/src/main/java/net/tccn/service/_QtaskService.java +++ b/src/main/java/net/tccn/qtask/_QtaskService.java @@ -1,17 +1,16 @@ -package net.tccn.service; +package net.tccn.qtask; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.MetaKit; import net.tccn.base.PageBean; -import net.tccn.qtask.TaskEntity; -import net.tccn.qtask.TaskKit; import org.redkale.net.http.RestParam; import org.redkale.net.http.RestService; import org.redkale.source.Flipper; import org.redkale.util.Comment; @RestService(automapping = true) -public class _QtaskService extends BaseService{ +public class _QtaskService extends BaseService { @Comment("qtask列表") public JBean list(TaskEntity task, Flipper flipper, @RestParam(name = "platToken") String token) { diff --git a/src/main/java/net/tccn/qtask/impl/QTaskMysql.java b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java index e364520..40a647d 100644 --- a/src/main/java/net/tccn/qtask/impl/QTaskMysql.java +++ b/src/main/java/net/tccn/qtask/impl/QTaskMysql.java @@ -4,7 +4,7 @@ import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.template.Engine; import com.jfinal.template.Template; import net.tccn.base.MetaKit; -import net.tccn.dbq.jdbc.api.DbKit; +import net.tccn.base.dbq.jdbc.api.DbKit; import net.tccn.qtask.QTask; import net.tccn.qtask.Task; diff --git a/src/main/java/net/tccn/service/UserService.java b/src/main/java/net/tccn/user/UserService.java similarity index 96% rename from src/main/java/net/tccn/service/UserService.java rename to src/main/java/net/tccn/user/UserService.java index e1822d0..a9267bf 100644 --- a/src/main/java/net/tccn/service/UserService.java +++ b/src/main/java/net/tccn/user/UserService.java @@ -1,8 +1,8 @@ -package net.tccn.service; +package net.tccn.user; +import net.tccn.base.BaseService; import net.tccn.base.JBean; import net.tccn.base.MetaKit; -import net.tccn.user.User; import org.redkale.net.http.RestMapping; import org.redkale.net.http.RestService; import org.redkale.net.http.RestSessionid; diff --git a/src/main/resources/META-INF/services/net.tccn.base.dbq.jdbc.api.DbSource b/src/main/resources/META-INF/services/net.tccn.base.dbq.jdbc.api.DbSource new file mode 100644 index 0000000..83f9160 --- /dev/null +++ b/src/main/resources/META-INF/services/net.tccn.base.dbq.jdbc.api.DbSource @@ -0,0 +1 @@ +net.tccn.base.dbq.jdbc.api.DbSourceMysql \ No newline at end of file diff --git a/src/main/resources/META-INF/services/net.tccn.dbq.jdbc.api.DbSource b/src/main/resources/META-INF/services/net.tccn.dbq.jdbc.api.DbSource deleted file mode 100644 index b87bcaa..0000000 --- a/src/main/resources/META-INF/services/net.tccn.dbq.jdbc.api.DbSource +++ /dev/null @@ -1 +0,0 @@ -net.tccn.dbq.jdbc.api.DbSourceMysql \ No newline at end of file diff --git a/src/test/java/RunTest.java b/src/test/java/RunTest.java index 31a5a2c..4586275 100644 --- a/src/test/java/RunTest.java +++ b/src/test/java/RunTest.java @@ -1,8 +1,9 @@ import net.tccn.base.*; -import net.tccn.dbq.fbean.FBean; -import net.tccn.dbq.jdbc.api.DbAccount; -import net.tccn.dbq.jdbc.api.DbKit; -import net.tccn.dbq.parser.ParseMysql; +import net.tccn.base.dbq.fbean.FBean; +import net.tccn.base.dbq.jdbc.api.DbAccount; +import net.tccn.base.dbq.jdbc.api.DbKit; +import net.tccn.base.dbq.parser.ParseMysql; +import net.tccn.dict.Dict; import net.tccn.dict.DictKit; import net.tccn.meta.MetaService; import net.tccn.meta.MetaTable; @@ -22,6 +23,8 @@ import java.io.IOException; import java.lang.reflect.Type; import java.util.*; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.function.BiPredicate; +import java.util.function.Predicate; import static java.util.Arrays.asList; @@ -66,7 +69,7 @@ public class RunTest { System.out.println("list:" + parse[1]); } - @Test + //@Test public void jdbcTest() { //DbAccount jdbcAccount = new DbAccount("jdbc:mysql://192.168.202.11:3306/gxbii_dev", "root", "eversec123098"); DbAccount dbAccount = new DbAccount(); @@ -91,7 +94,7 @@ public class RunTest { System.out.println(int.class);*/ } - @Test + //@Test public void toAsTest() { Date date = Kv.toAs("2019-03-17 12:11:12", Date.class); System.out.println(date); @@ -128,7 +131,7 @@ public class RunTest { System.out.println(kv); } - @Test + //@Test public void upDb$() { /*MetaKit.getMetaServices().forEach(m -> { List shows = new ArrayList<>(); @@ -146,7 +149,7 @@ public class RunTest { } - @Test + //@Test public void findMaxNum() { int xx = asList("1", "5", "3").stream().filter(x -> !x.isEmpty()).mapToInt(x -> { return Integer.parseInt(x) * 2; @@ -166,12 +169,12 @@ public class RunTest { user.save(); } - @Test + //@Test public void t() { System.out.println(MetaKit.nextAlias()); } - @Test + //@Test public void kvTest() { Map map = new HashMap<>(); @@ -186,7 +189,7 @@ public class RunTest { System.out.println(kv); } - @Test + //@Test public void tplTest() { TplKit use = TplKit.use(true); use.addTpl(new File(FileKit.rootPath(), "tpl")); //ok @@ -243,7 +246,7 @@ public class RunTest { } } - @Test + //@Test public void dataToFileTest() { List metaServices = MetaService.dao.find(); @@ -256,7 +259,7 @@ public class RunTest { FileKit.strToFile(convert.convertTo(metaKit), file); } - @Test + //@Test public void readJson() { File file = new File("tmp/MetaService.json"); try { @@ -333,7 +336,7 @@ public class RunTest { } // 通用导出组件测试 - @Test + //@Test public void exportTest() { List list = dbKitTest(); @@ -351,7 +354,7 @@ public class RunTest { } - @Test + //@Test public void switchTest() { String a = "2"; switch (a) { @@ -367,7 +370,7 @@ public class RunTest { System.out.println("end"); } - @Test + //@Test public void exceptionTest() { try { @@ -377,4 +380,251 @@ public class RunTest { } } + /** + * IP区间包含IP数计算,含首尾 + * + * @param startIp 其实ip + * @param endIp 结束ip + * @return + */ + public int ipv4Count(String startIp, String endIp) { + String[] srartArr = startIp.split("[.]"); + String[] endArr = endIp.split("[.]"); + int[] c = new int[4]; + int[] carryOver = {16581375, 65025, 255, 1}; // IP进位数 + + for (int i = 0; i < 4; i++) { + if (!srartArr[i].equals(endArr[i])) { + c[i] = Integer.parseInt(endArr[i]) - Integer.parseInt(srartArr[i]); + } + } + int count = 0; + for (int i = 0; i < c.length; i++) { + if (c[i] != 0) { + count += c[i] * carryOver[i]; + } + } + return (count < 0 ? -count : count) + 1; + } + + //@Test + public void timerTest() { + Timer timer = new Timer(); + + timer.schedule(new TimerTask() { + @Override + public void run() { + System.out.println("run task.."); + } + }, 5000, 2000); + + int[] n = {0}; + timer.schedule(new TimerTask() { + @Override + public void run() { + System.out.println("周期任务 .. " + ++n[0]); + if (n[0] == 2) { + System.out.println("周期任务完成"); + cancel(); + } + } + }, 6000, 1000); + + + try { + Thread.sleep(1000 * 10); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + + //---------------------------- LOCK TEST ----------------------------- + ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); + + ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock(); + ReentrantReadWriteLock.ReadLock readLock = lock.readLock(); + + + int[] n = {0}; + + public String read() { + readLock.lock(); + try { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("read result:" + n[0]); + return n[0] + ""; + } finally { + readLock.unlock(); + } + } + + public void write() { + writeLock.lock(); + try { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + n[0]++; + + } finally { + writeLock.unlock(); + } + } + + //@Test + public void lockTest() { + + new Thread(() -> { + for (int i = 0; i < 50; i++) { + read(); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + new Thread(() -> { + for (int i = 0; i < 50; i++) { + write(); + System.out.println("写入数据次数:--------" + (i + 1)); + try { + Thread.sleep(150); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }).start(); + + new Thread(() -> { + for (int i = 0; i < 50; i++) { + write(); + System.out.println("write:--------" + (i + 1)); + } + }).start(); + + try { + Thread.sleep(1000 * 30); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + + } + + //@Test + public void tx() { + System.out.println(ipv4Count("0.0.0.2", "0.0.0.0")); + } + + Predicate isProvice = (s) -> String.valueOf(s.getValue()).trim().endsWith("0000"); + Predicate isCity = (s) -> !isProvice.test(s) && String.valueOf(s.getValue()).trim().endsWith("00"); + BiPredicate belongProvice = (p, x) -> String.valueOf(x.getValue()).trim().startsWith(String.valueOf(p.getValue()).trim().substring(0, 2)); + + @Test + public void dictTest() { + MetaKit.init(); + System.out.println("-------- 1 -------"); + DictKit dictKit = DictKit.use("ipsm_v4"); + System.out.println(dictKit.getDictLabel("useSubclass", "3")); + System.out.println(dictKit.getDictValue("isp", "广电")); + + + /*List list = dictKit.getDicts("city"); + + list.stream().filter(x -> x.getValue().startsWith("52") && isCity.test(x)).sorted((a, b) -> a.getValue().compareTo(b.getValue())).forEach(x -> { + System.out.println(x); + }); + + + List data = new ArrayList<>(); + list.stream().filter(x -> isProvice.test(x)).sorted((a, b) -> a.getValue().compareTo(b.getValue())).forEach(x -> { + Kv kv = Kv.of("value", x.get("value")).set("label", x.get("label")); + List childs = new ArrayList<>(); + list.stream().filter(y -> y.getValue().startsWith(x.getValue().substring(0,2)) + && isCity.test(y) + ).forEach(y -> { + childs.add(Kv.of("label", y.get("label")).set("value", y.get("value"))); + }); + + childs.forEach(y -> { + List childs2 = new ArrayList<>(); + list.stream().filter(z -> z.getValue().startsWith(String.valueOf(y.get("value")).substring(0, 3)) + && !z.getValue().endsWith("00") + ).forEach(z -> { + childs2.add(Kv.of("label", z.get("label")).set("value", z.get("value"))); + }); + y.set("childs", childs2); + }); + + + kv.set("childs", childs); + data.add(kv); + }); + + FileKit.strToFile(convert.convertTo(data), new File("tmp/city.json"));*/ + + } + + public void dictType() { + + } + + //@Test + public void txx() { + //2400:18c0:0:0:0:0:0:0 + + //System.out.println(Integer.parseInt("2400", 16)); + //System.out.println(Math.pow(2, 32)); + + /*String[] arr = "213123".split(""); + + for (String x : arr) { + System.out.println(x); + }*/ + + + /*for (int i = 1; i < 8; i++) { + String v = "1"; + for (int j = 0; j < i; j++) { + v = ride(v , "65536"); + } + System.out.printf("%s - %s%n", i, v); + }*/ + + /*String ip = "::9"; + + System.out.println(ipv6Num("::1")); + System.out.println(ip);*/ + + + //System.out.println(ipv6Num("2400:18c0:0:0:0:0:0:0")); + + /*for (int x = 0; x < 100; x++) { + for (int y = 0; y < 100; y++) { + long a = Integer.parseInt(IpKit.add(x + "", y + "")); + long b = x + y; + if (a != b) { + System.out.printf("%d + %d = %s, \t %s \n", x, y, a, b); + } else { + System.out.printf("="); + } + } + }*/ + + /*System.out.println(toNum("127.0.0.1")); + + System.out.println(ipCount("0::0:0", "0::0:2"));*/ + + //System.out.println(toNum("254.16.3.56")); + + } }