
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