nbcp.myoql.db.sql.component.SqlParallelQuery.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ktmyoql Show documentation
Show all versions of ktmyoql Show documentation
kotlin orm -- mysql,mongo , just like ktorm
The newest version!
//package nbcp.db.sql.component
//
//import nbcp.base.comm.*
//import nbcp.comm.AsString
//import nbcp.myoql.db.mysql.*
//import java.util.concurrent.Executors
//import java.util.concurrent.Future
//import nbcp.myoql.db.sql.*
///**
// * Created by yuxh on 2019/4/16
// */
//
//class SqlParallelQuery, T : IBaseDbEntity>(var mainEntity: M, var baseQuery: SqlQueryClip, var parallelQueryParam: Map = mapOf()) : SqlBaseQueryClip(mainEntity) {
// override fun toSql(): SingleSqlData {
// return baseQuery.toSql()
// }
//
// override fun toMap(): JsonMap? {
// return baseQuery.toMap();
// }
//
// override fun exists(): Boolean {
// val executor = Executors.newFixedThreadPool(parallelQueryParam.size)
// var resultList = mutableListOf>();
// for (request in parallelQueryParam) {
// resultList.add(executor.submit {
// baseQuery.datasourceName = request.key;
// return@submit baseQuery.exists()
// })
// }
//
// var ret = false;
// var done = false;
// for (result in resultList) {
// if (done) {
// result.cancel(true);
// continue;
// }
//
// ret = result.get()
// if (ret == true) {
// done = true;
// }
// }
//
// return ret;
// }
//
//
// fun count(countQuery: ((SqlQueryClip) -> Unit)? = null): Int {
// val executor = Executors.newFixedThreadPool(parallelQueryParam.size)
// var resultList = mutableListOf>();
// for (request in parallelQueryParam) {
// resultList.add(executor.submit {
// baseQuery.datasourceName = request.key;
// return@submit baseQuery.count(countQuery)
// })
// }
//
// var ret = 0;
// for (result in resultList) {
// ret += result.get()
// }
//
// return ret;
// }
//
//
// fun toListResult(entityClass: Class, idValue: ((R) -> String), sort: Comparator, countQuery: ((SqlQueryClip) -> Unit)? = null): ListResult {
// var skipSum = parallelQueryParam.values.sum();
//
// val executor = Executors.newFixedThreadPool(parallelQueryParam.size)
// var resultList = mutableListOf>>();
// for (request in parallelQueryParam) {
// resultList.add(executor.submit> {
// baseQuery.datasourceName = request.key;
// baseQuery.skip(request.value);
// return@submit baseQuery.toList(entityClass)
// })
// }
//
//
// var meta = linkedMapOf(); //key:id , value:datasource
// var allData = mutableListOf();
//
// var index = -1;
// for (result in resultList) {
// index++;
//
// var r = result.get()
//
// r.forEach {
// meta.put(idValue(it), parallelQueryParam.keys.elementAt(index));
// }
//
// allData.addAll(r);
// }
//
// //仅支持简单的排序. 不是很影响结果.但影响输出的排序. , 使用自定义排序.
// allData.sortWith(sort)
//
// var takeData = allData.take(take);
// var ret = ListResult();
// ret.data = takeData.toMutableList();
//
//
// var parallelQueryResult = parallelQueryParam.values.toMutableList();
// takeData.forEach {
// var id = idValue(it);
// var datasource =meta.get(id).AsString()
// var dataSourceIndex = parallelQueryParam.keys.indexOf(datasource)
// parallelQueryResult[dataSourceIndex] += 1;
// }
//
// if (skipSum == 0) {
// if (ret.data.size < this.take) {
// ret.total = ret.data.size;
// } else {
// ret.total = count(countQuery)
// }
// }
//
// ret.value = parallelQueryResult;
// return ret;
// }
//
//}