Atitit.atiDataStoreService v2 新特性
Atitit.atiDataStoreService v2 新特性
1.2. V2 增加了对 $uuid $cur_uid参数的支持1
2.2. ---------atiDataStoreService .js1
1.1. V1 基础实现
1.2. V2 增加了对 $uuid $cur_uid参数的支持
1.3. 增加了fld fun的支持
2. fld fun
2.1. Invoke 简化版全局函数txt2html
cmsPhone4jobusImp/edit.html
<textarea id="copy_content" name="copy_content" style="width:100%; height: 300px;" fun="txt2html">工作日期
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
2.2. ---------atiDataStoreService .js
function merge(metaData,merge_callback_fun)
{
var mp=$("form").serialize();
var fldAppFun=dslUtil.getFldAppFun( mp);
mp=mp+"&$method=com.attilax.urldsl.UrlDsl2SqlStoreService.exe&$callback=page_load_callback&$mod=userMod&$view_store_path=com/attilax/order&$op=insert&"+metaData+"&$fldAppFun="+encodeURIComponent(fldAppFun);
//alert("get post mp:"+mp);
HRE.method="post";
try{
if( arguments.length==1)
HRE.exe(mp,merge_callback);
else
HRE.exe(mp,merge_callback_fun);
}catch(e)
{
showErr(e);
}
}
2.3. dslUtil
var dslUtil={};
dslUtil.getFldAppFun=function(url)
{
var json={};
var keys=urlUtil.getKeys(url);
for(e in keys )
{
var key=keys[e];
key=decodeURIComponent(key);
varkey_for_jq=escapeJquery(key);
//alert(key_for_jq);
var fun=$("#"+key_for_jq).attr("fun");
if(fun)
json[key]=fun;
}
return JSON.stringify(json);
};
2.4. jAva
*/
public class UrlDsl2SqlStoreService extends Dsl2sqlService {
public static Map<String, Function> scriptMapper = Maps.newLinkedHashMap();
{
scriptMapper.put("txt2html", (txt) -> {
return htmlx.txt2html(txt.toString());
});
}
DslUtil.appFldFun(m);
public class DslUtil {
public static void appFldFun(Map m) {
if(m.get("$fldAppFun" )==null || m.get("$fldAppFun" ).toString().trim().length()==0)
return;
String json_str=(String) m.get("$fldAppFun");
Map fldFunMap=AtiJson.fromJson(json_str);
Set<String> st = fldFunMap.keySet();
for (String k : st) {
String script_tag=(String) fldFunMap.get(k);
Function fun=UrlDsl2SqlStoreService.scriptMapper.get(script_tag);
Object v=fun.apply(m.get(k));
m.put(k, v);
}
}
}
3. code
package com.attilax.urldsl;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import com.attilax.anno.Inj;
import com.attilax.html.htmlx;
import com.attilax.io.filex;
import com.attilax.ioc.IocXq214;
import com.attilax.lang.Global;
import com.attilax.lang.MapX;
import com.attilax.net.requestImp;
import com.attilax.sql.Dsl2sqlService;
import com.attilax.sql.SqlService;
import com.attilax.store.OrmStoreService;
import com.attilax.token.TokenService;
import com.attilax.user.NotLoginEx;
import com.attilax.web.ReqX;
import com.google.common.collect.Maps;
import com.google.inject.Inject;
/**
* q317 com.attilax.urldsl.UrlDsl2SqlStoreService
*
* @author Administrator
*
*/
public class UrlDsl2SqlStoreService extends Dsl2sqlService {
public static Map<String, Function> scriptMapper = Maps.newLinkedHashMap();
{
scriptMapper.put("txt2html", (txt) -> {
return htmlx.txt2html(txt.toString());
});
}
@Inject
SqlService sqlSrv;
@Inject
Dsl2sqlService d2sSrv;
@Inject
TokenService tkSrv;
public static void main(String[] args) {
requestImp m = new requestImp();
m.put("$tb", "wxb_good_copy");
// m.put("$tabletype", "view");
// m.put("$view_store_path","com/attilax/order");
m.put("$op", "i");
m.put("copy_title", "copy_title_2005");
Global.req.set(m);
System.setProperty("apptype", "jobus");
// OrmStoreService ormSvr = IocXq214.getBean(OrmStoreService.class);
UrlDsl2SqlStoreService srv = IocXq214
.getBean(UrlDsl2SqlStoreService.class);
// Map m=new HashMap();
System.out.println(srv.exe());
System.out.println("--f");
}
public Object exe() {
HttpServletRequest req = Global.req.get();
tkSrv.setModule(req.getParameter("$utype") + "Mod");
Map m = ReqX.toMap(req);
if (m.get("$table") == null)
m.put("$table", m.get("$tb"));
if (m.get("$op").equals("i"))
m.put("$op", "insert");
Set<String> st = m.keySet();
for (String k : st) {
if (m.get(k).equals("$cur_uid")) {
String getuid = tkSrv.getuid(req);
if (StringUtils.isEmpty(getuid))
throw new NotLoginEx("NotLoginEx");
m.put(k, getuid);
}
if(m.get(k).toString().equals("$uuid"))
{
m.put(k,filex.getUUidName());
}
}
DslUtil.appFldFun(m);
String sql = d2sSrv.dsl2sql(m);
if (StringUtils.isEmpty(sql))
throw new RuntimeException(
" cant convert sql str rzt is null or empty");
return sqlSrv.exe(sql);
}
}
Atitit.atiDataStoreService v2 新特性的更多相关文章
- atitit.atiLinq v2新特性attilax大总结 q326
atitit.atiLinq v2新特性attilax大总结 q326 1. V3规划 (分开sql2obj sql2sql sql2xml)1 2. V2新特性 Url linq的定义1 3. V1 ...
- Atitit. Toast alert loading js控件 atiToast v2新特性
Atitit. Toast alert loading js控件 atiToast v2新特性 1. 连续多个txt追加的原理 var txt = document.createElement(& ...
- Atitit atiMail atiDns新特性 v2 q39
Atitit atiMail atiDns新特性 v2 q39 V1 实现了基础的功能 V2 重构..使用自然语言的方式 c.According_to_the_domain_name(&quo ...
- Atitit opencv版本新特性attilax总结
Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...
- Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compc\Atitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compc\Atitit 操作日
Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc ...
- Atitit.cateService分类管理新特性与设计文档说明v1
Atitit.cateService分类管理新特性与设计文档说明v1 1. V2 新特性规划1 2. 分类管理1 3. 分类增加与修改维护2 4. Js控件分类数据绑定2 1. V2 新特性规划 增加 ...
- Atitit.aticmd v4 新特性q39 添加定时器释放功能
Atitit.aticmd v4 新特性q39 添加定时器释放功能 V1 实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3 stdout stderr统一重新定向 V4 添加定 ...
- Atitit.linux 内核 新特性 新功能
Atitit.linux 内核 新特性 新功能 1. Linux 3.2内核新特性 2012-02-12 22:41:471 1.1. EXT4:支持更大的块2 1.2. BTRFS:更快的数据清理 ...
- Atitit.jquery 版本号新特性attilax总结
Atitit.jquery 版本号新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升.尤其是在ie7下: ...
随机推荐
- [BZOJ4650][NOI2016]优秀的拆分(SAM构建SA)
关于解法这个讲的很清楚了,主要用了设关键点的巧妙思想. 主要想说的是一个刚学的方法:通过后缀自动机建立后缀树,再转成后缀数组. 后缀数组功能强大,但是最令人头疼的地方是模板太难背容易写错.用这个方法, ...
- python基础-协程函数、递归、模块、包等内容
1. 协程函数 1.1 yield基本用法 yield作用 1.把函数的执行结果封装好,即封装__iter__和__next__,即得到一个迭代器 2.与return功能类似,都可以返回值,但不同的是 ...
- 金融应用,计算酬金 Exercise06_11
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:金融应用,计算酬金 * */ public class Exercise06_11 { public static void ...
- Java高级架构师(一)第11节:Mybatis的分页实现
- 连接sqlexpress
sqlexpress在visualstudio安装时可选择安装. 数据源添加 localhost\sqlexpress window身份认证即可.
- linux 账户锁与解锁
,sudo passwd -l user 锁住user帐号,su 已经不能切换到user下. 2,sudo passwd -u user 解锁user帐号,su可以切换到user下. 3,如果不小心把 ...
- asp.net 二级域名(路由方式实现)
自从微软发布 ASP.NET MVC 和routing engine (System.Web.Routing)以来,就设法让我们明白你完全能控制URL和routing,只要与你的application ...
- AtomicInteger类的简单应用
AtomicInteger,一个提供原子操作的Integer的类.在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字.而AtomicIn ...
- RMAN备份恢复 控制文件和归档日志丢失情况
RMAN> backup current controlfile tag='bak_ctlfile' format='/home/oracle/backup/bak_ctl_%U_%T'; al ...
- ylbtech-LanguageSamples-Arrays(数组)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Arrays(数组) 1.A,示例(Sample) 返回顶部 “数组”示例 本示例介绍并 ...