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

io.vertx.up.uca.jooq.util.JqCond Maven / Gradle / Ivy

The newest version!
package io.vertx.up.uca.jooq.util;

import io.horizon.eon.VString;
import io.vertx.core.json.JsonObject;
import io.vertx.up.atom.query.engine.Qr;

import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * @author lang : 2023/4/25
 */
public class JqCond {
    /*
     * For Importing Transfer
     * {
     *     "": false,
     *     "$1": {
     *         "": true
     *     },
     *     "$2": {
     *         "": true
     *     }
     * }
     */
    public static JsonObject compress(final JsonObject queryOr) {
        if (queryOr.containsKey(Qr.KEY_CRITERIA)) {
            queryOr.put(Qr.KEY_CRITERIA, compress(queryOr.getJsonObject(Qr.KEY_CRITERIA)));
            return queryOr;
        } else {
            final Boolean isAnd = queryOr.getBoolean(VString.EMPTY, Boolean.FALSE);
            if (isAnd) {
                // 顶层AND跳过
                return queryOr;
            }

            // 每棵树执行公共部分提取
            /*
             * 双节点计算
                "$66" : {
                  "rltPricecat" : "5fd56c77-ead4-4899-aa8b-f54ec622588b",
                  "rRoomTypeId" : "96bc9581-3ed7-440b-859c-fbd5c1cd77df",
                  "zSigma" : "ENhwBAJPZuSgIAE5EDakR6yrIQbOoOPq",
                  "" : true
                },
                "$67" : {
                  "rltPricecat" : "936052be-7d46-41e8-a0dc-69b2db2fbe30",
                  "rRoomTypeId" : "96bc9581-3ed7-440b-859c-fbd5c1cd77df",
                  "zSigma" : "ENhwBAJPZuSgIAE5EDakR6yrIQbOoOPq",
                  "" : true
                }
             * 结果
                {
                  "rltPricecat,i": [],
                  "rRoomTypeId" : "96bc9581-3ed7-440b-859c-fbd5c1cd77df",
                  "zSigma" : "ENhwBAJPZuSgIAE5EDakR6yrIQbOoOPq",
                  "" : true
                }
             */
            final ConcurrentMap> tree = new ConcurrentHashMap<>();
            for (final String field : queryOr.fieldNames()) {
                final Object conditionJ = queryOr.getValue(field);
                if (conditionJ instanceof final JsonObject json) {
                    
                }
            }
        }
        return queryOr;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy