All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nbcp.myoql.db.sql.component.SqlParallelQuery.kt Maven / Gradle / Ivy

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy