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

com.jladder.web.WebScope Maven / Gradle / Ivy

package com.jladder.web;

import com.jladder.data.Record;
import com.jladder.datamodel.IDataModel;
import com.jladder.lang.Strings;
import com.jladder.lang.func.Tuple2;

public class WebScope {


    /**
     * 映射请求域的数据连接
     * @param conn 连接器名称
     * @param tableName 模型名称
     */
    public static Tuple2 mappingConn(String conn, String tableName){
        if (Strings.isBlank(tableName)) return new Tuple2(false);
        if (Strings.isBlank(conn)) conn = "defaultDatabase";
        if(WebContext.isWeb()){
            Object value = WebContext.getAttribute("_webscope_conn_table" + tableName+"_");
            if(value==null){
                value = WebContext.getAttribute("_webscope_conn_conn" + conn+"_");
            }
            return value==null?new Tuple2(false):new Tuple2(true, value.toString());
        }else{
            Record dt = local.get();
            if(dt==null)return new Tuple2<>(false);;
            Object value = dt.get("_webscope_conn_table" + tableName+"_");
            if(value==null){
                value = WebContext.getAttribute("_webscope_conn_conn" + conn+"_");
            }
            return value==null? new Tuple2<>(false): new Tuple2<>(true, value.toString());
        }
    }

    private static ThreadLocal local = new ThreadLocal<>();

    /**
     *
     * @param dm
     * @param name
     * @return
     */
    public static IDataModel mappingConn(IDataModel dm, String name){
        if (dm == null) return null;
        if (Strings.isBlank(name)) name = dm.getName();
        Tuple2 ret = mappingConn(dm.getConn(), name);
        if (ret.item1) dm.setConn(ret.item2);
        return dm;
    }


    public static void SetDataModelConn(String tableName, String conn) {
        if(Strings.isBlank(tableName))return;
        if(Strings.isBlank(conn))return;
        setValue("conn_table" + tableName+"_",conn);
    }
    public static void setConn(String new_conn) {
        if(Strings.isBlank(new_conn))return;
        setConn(new_conn,"defaultDatabase");
    }
    public static void setConn(String new_conn,String old_conn) {
        setValue("conn_conn" + old_conn +"_",new_conn);
    }
    /**
     * 设置配置值
     * @param name 选项名称
     * @param value 数值
     * @return
     */
    protected static boolean setValue(String name, Object value){
        try {
            if(WebContext.isWeb()){
                WebContext.setAttribute("_webscope_"+name,value);
            }else{
                Record dt = local.get();
                if(dt==null) {
                    local.set(new Record("_webscope_"+name,value));
                    return true;
                }
                local.get().put("_webscope_"+name,value);
            }
            return true;
        }catch (Exception e){
            return false;
        }
    }
    /**
     * 设置配置值
     * @param option 选项
     * @param value 数值
     * @return
     */
    public static boolean setValue(WebScopeOption option, Object value){
        return setValue(option.getName(),value);
    }

    protected static  T getValue(String name){
        if(WebContext.isWeb()){
            return (T)WebContext.getAttribute("_webscope_"+name);
        }else{
            Record dt = local.get();
            if(dt==null)return null;
            return (T)dt.get("_webscope_"+name);
        }
    }

    public static   T getValue(WebScopeOption option){
        return getValue(option.getName());
    }

    /**
     * 获取作用域选项值
     * @param option 选项
     * @param dvalue 默认值
     * @return
     */
    public static Object getValue(WebScopeOption option,Object dvalue){
        Object v = getValue(option.getName());
        return v==null?dvalue:v;
    }

    public static boolean ignoreRequestLog(){
        return setValue(WebScopeOption.IgnoreRequestLog,true);
    }

    public static void put(WebScopeOption option,boolean value){
        setValue(option,value);
    }

    public static Boolean get(WebScopeOption option,boolean dvalue){
        return (Boolean)getValue(option,dvalue);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy