package xtools.boot.core.holder;

import xtools.base.config.BaseParams;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * <p>Title : CommonHolder</p>
 * <p>Description : CommonHolder</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/1/31 21:20
 */
public class CommonHolder implements BaseParams {

    /**
     * Mvc通用信息
     */
    private static final ScopedValue<Map<String, Object>> COMMON_INFO = ScopedValue.newInstance();

    /**
     * 获取通用信息 Holder
     *
     * @return 通用信息
     */
    public static ScopedValue<Map<String, Object>> getScoped() {
        return COMMON_INFO;
    }

    /**
     * 创建通用信息
     *
     * @return 通用信息
     */
    public static Map<String, Object> create() {
        return new HashMap<>(16);
    }

    /**
     * 获取通用信息
     *
     * @return 通用信息
     */
    public static Map<String, Object> get() {
        if (!COMMON_INFO.isBound()) {
            return null;
        }
        return COMMON_INFO.get();
    }

    /**
     * 设置通用信息
     *
     * @param key   Key
     * @param value Value
     */
    public static void set(String key, Object value) {
        Map<String, Object> map = get();
        if (Objects.nonNull(map)) {
            map.put(key, value);
        }
    }

    /**
     * 获取通用信息
     *
     * @param key Key
     * @return Value
     */
    public static Object get(String key) {
        Map<String, Object> map = get();
        if (Objects.nonNull(map)) {
            return map.get(key);
        }
        return null;
    }

    /**
     * 获取通用信息
     *
     * @param key Key
     * @return Value
     */
    public static boolean getBoolean(String key) {
        Map<String, Object> map = get();
        if (Objects.nonNull(map) && map.get(key) instanceof Boolean value) {
            return value;
        }
        return false;
    }

}
