This commit is contained in:
zhuangqian 2016-11-25 22:29:17 +08:00
parent c49c4cdc4f
commit 7363fe2bb1
10 changed files with 213 additions and 198 deletions

View File

@ -1,7 +1,7 @@
ENGINE=org.beetl.sql.core.engine.SQLTemplateEngine ENGINE = org.beetl.sql.core.engine.SQLTemplateEngine
DELIMITER_PLACEHOLDER_START=#{ DELIMITER_PLACEHOLDER_START = #{
DELIMITER_PLACEHOLDER_END=} DELIMITER_PLACEHOLDER_END = }
DELIMITER_STATEMENT_START=@ DELIMITER_STATEMENT_START = @
DELIMITER_STATEMENT_END= DELIMITER_STATEMENT_END=
HTML_TAG_SUPPORT = false HTML_TAG_SUPPORT = false
CHARSET= UTF-8 CHARSET= UTF-8
@ -9,12 +9,12 @@ FN.use = org.beetl.sql.core.engine.UseFunction
FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction
FN.text = org.beetl.sql.core.engine.TextFunction FN.text = org.beetl.sql.core.engine.TextFunction
FN.join = org.beetl.sql.ext.JoinFunction FN.join = org.beetl.sql.ext.JoinFunction
FN.isEmpty=org.beetl.sql.ext.EmptyExpressionFunction FN.isEmpty = org.beetl.sql.ext.EmptyExpressionFunction
FN.page=org.beetl.sql.core.engine.PageQueryFuntion FN.page = org.beetl.sql.core.engine.PageQueryFuntion
FN.orm.many=org.beetl.sql.core.orm.ORMManyEntityFunction FN.orm.many = org.beetl.sql.core.orm.ORMManyEntityFunction
FN.orm.single=org.beetl.sql.core.orm.ORMSingleEntityFunction FN.orm.single = org.beetl.sql.core.orm.ORMSingleEntityFunction
TAG.trim= org.beetl.sql.core.engine.TrimTag TAG.trim = org.beetl.sql.core.engine.TrimTag
TAG.pageTag= org.beetl.sql.core.engine.PageQueryTag TAG.pageTag = org.beetl.sql.core.engine.PageQueryTag
ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler
PRODUCT_MODE = false PRODUCT_MODE = false
OFFSET_START_ZERO = false OFFSET_START_ZERO = false

View File

@ -1,7 +1,7 @@
ENGINE=org.beetl.sql.core.engine.SQLTemplateEngine ENGINE = org.beetl.sql.core.engine.SQLTemplateEngine
DELIMITER_PLACEHOLDER_START=#{ DELIMITER_PLACEHOLDER_START = #{
DELIMITER_PLACEHOLDER_END=} DELIMITER_PLACEHOLDER_END = }
DELIMITER_STATEMENT_START=@ DELIMITER_STATEMENT_START = @
DELIMITER_STATEMENT_END= DELIMITER_STATEMENT_END=
HTML_TAG_SUPPORT = false HTML_TAG_SUPPORT = false
CHARSET= UTF-8 CHARSET= UTF-8
@ -9,12 +9,12 @@ FN.use = org.beetl.sql.core.engine.UseFunction
FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction FN.globalUse = org.beetl.sql.core.engine.GlobalUseFunction
FN.text = org.beetl.sql.core.engine.TextFunction FN.text = org.beetl.sql.core.engine.TextFunction
FN.join = org.beetl.sql.ext.JoinFunction FN.join = org.beetl.sql.ext.JoinFunction
FN.isEmpty=org.beetl.sql.ext.EmptyExpressionFunction FN.isEmpty = org.beetl.sql.ext.EmptyExpressionFunction
FN.page=org.beetl.sql.core.engine.PageQueryFuntion FN.page = org.beetl.sql.core.engine.PageQueryFuntion
FN.orm.many=org.beetl.sql.core.orm.ORMManyEntityFunction FN.orm.many = org.beetl.sql.core.orm.ORMManyEntityFunction
FN.orm.single=org.beetl.sql.core.orm.ORMSingleEntityFunction FN.orm.single = org.beetl.sql.core.orm.ORMSingleEntityFunction
TAG.trim= org.beetl.sql.core.engine.TrimTag TAG.trim = org.beetl.sql.core.engine.TrimTag
TAG.pageTag= org.beetl.sql.core.engine.PageQueryTag TAG.pageTag = org.beetl.sql.core.engine.PageQueryTag
ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler ERROR_HANDLER = org.beetl.sql.core.engine.BeetlSQLTemplateExceptionHandler
PRODUCT_MODE = true PRODUCT_MODE = true
OFFSET_START_ZERO = false OFFSET_START_ZERO = false

View File

@ -20,6 +20,7 @@ import java.io.OutputStreamWriter;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Map; import java.util.Map;
import com.smallchill.core.toolbox.kit.CharsetKit;
import com.smallchill.core.toolbox.kit.FileKit; import com.smallchill.core.toolbox.kit.FileKit;
/** /**
@ -35,7 +36,7 @@ public abstract class BeetlMaker {
* @param htmlPath html文件保存路径 * @param htmlPath html文件保存路径
*/ */
public static void makeHtml(String tlPath, Map<String, Object> paras, String htmlPath) { public static void makeHtml(String tlPath, Map<String, Object> paras, String htmlPath) {
makeHtml(tlPath, paras, htmlPath, "UTF-8"); makeHtml(tlPath, paras, htmlPath, CharsetKit.UTF_8);
} }
/** /**

View File

@ -1,90 +1,90 @@
/** /**
* Copyright (c) 2011-2015, James Zhan 詹波 (jfinal@126.com). * Copyright (c) 2011-2015, James Zhan 詹波 (jfinal@126.com).
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package com.smallchill.core.toolbox.kit; package com.smallchill.core.toolbox.kit;
import java.security.MessageDigest; import java.security.MessageDigest;
public class HashKit { public class HashKit {
private static java.security.SecureRandom random = new java.security.SecureRandom(); private static java.security.SecureRandom random = new java.security.SecureRandom();
public static String md5(String srcStr){ public static String md5(String srcStr){
return hash("MD5", srcStr); return hash("MD5", srcStr);
} }
public static String sha1(String srcStr){ public static String sha1(String srcStr){
return hash("SHA-1", srcStr); return hash("SHA-1", srcStr);
} }
public static String sha256(String srcStr){ public static String sha256(String srcStr){
return hash("SHA-256", srcStr); return hash("SHA-256", srcStr);
} }
public static String sha384(String srcStr){ public static String sha384(String srcStr){
return hash("SHA-384", srcStr); return hash("SHA-384", srcStr);
} }
public static String sha512(String srcStr){ public static String sha512(String srcStr){
return hash("SHA-512", srcStr); return hash("SHA-512", srcStr);
} }
public static String hash(String algorithm, String srcStr) { public static String hash(String algorithm, String srcStr) {
try { try {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
MessageDigest md = MessageDigest.getInstance(algorithm); MessageDigest md = MessageDigest.getInstance(algorithm);
byte[] bytes = md.digest(srcStr.getBytes("utf-8")); byte[] bytes = md.digest(srcStr.getBytes(CharsetKit.UTF_8));
for (byte b : bytes) { for (byte b : bytes) {
String hex = Integer.toHexString(b&0xFF); String hex = Integer.toHexString(b&0xFF);
if (hex.length() == 1) if (hex.length() == 1)
result.append("0"); result.append("0");
result.append(hex); result.append(hex);
} }
return result.toString(); return result.toString();
} }
catch (Exception e) { catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
private static String toHex(byte[] bytes) { private static String toHex(byte[] bytes) {
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
for (byte b : bytes) { for (byte b : bytes) {
String hex = Integer.toHexString(b&0xFF); String hex = Integer.toHexString(b&0xFF);
if (hex.length() == 1) if (hex.length() == 1)
result.append("0"); result.append("0");
result.append(hex); result.append(hex);
} }
return result.toString(); return result.toString();
} }
/** /**
* md5 128bit 16bytes * md5 128bit 16bytes
* sha1 160bit 20bytes * sha1 160bit 20bytes
* sha256 256bit 32bytes * sha256 256bit 32bytes
* sha384 384bit 48bites * sha384 384bit 48bites
* sha512 512bit 64bites * sha512 512bit 64bites
*/ */
public static String generateSalt(int numberOfBytes) { public static String generateSalt(int numberOfBytes) {
byte[] salt = new byte[numberOfBytes]; byte[] salt = new byte[numberOfBytes];
random.nextBytes(salt); random.nextBytes(salt);
return toHex(salt); return toHex(salt);
} }
} }

View File

@ -29,7 +29,6 @@ import com.smallchill.core.toolbox.support.WafRequestWrapper;
public class HttpKit { public class HttpKit {
private static PoolingHttpClientConnectionManager cm; private static PoolingHttpClientConnectionManager cm;
private static String EMPTY_STR = ""; private static String EMPTY_STR = "";
private static String UTF_8 = "UTF-8";
private static void init() { private static void init() {
if (cm == null) { if (cm == null) {
@ -85,7 +84,7 @@ public class HttpKit {
public static String post(String url, Map<String, Object> params) throws UnsupportedEncodingException { public static String post(String url, Map<String, Object> params) throws UnsupportedEncodingException {
HttpPost httpPost = new HttpPost(url); HttpPost httpPost = new HttpPost(url);
ArrayList<NameValuePair> pairs = covertParams2NVPS(params); ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8)); httpPost.setEntity(new UrlEncodedFormEntity(pairs, CharsetKit.UTF_8));
return getResult(httpPost); return getResult(httpPost);
} }
@ -97,7 +96,7 @@ public class HttpKit {
} }
ArrayList<NameValuePair> pairs = covertParams2NVPS(params); ArrayList<NameValuePair> pairs = covertParams2NVPS(params);
httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8)); httpPost.setEntity(new UrlEncodedFormEntity(pairs, CharsetKit.UTF_8));
return getResult(httpPost); return getResult(httpPost);
} }

View File

@ -135,6 +135,8 @@ public class URLKit {
* @exception ToolBoxException UnsupportedEncodingException * @exception ToolBoxException UnsupportedEncodingException
*/ */
public static String encode(String url, String charset) { public static String encode(String url, String charset) {
if (StrKit.isBlank(url))
return StrKit.EMPTY;
try { try {
return URLEncoder.encode(url, charset); return URLEncoder.encode(url, charset);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
@ -150,6 +152,8 @@ public class URLKit {
* @exception ToolBoxException UnsupportedEncodingException * @exception ToolBoxException UnsupportedEncodingException
*/ */
public static String decode(String url, String charset) { public static String decode(String url, String charset) {
if (StrKit.isBlank(url))
return StrKit.EMPTY;
try { try {
return URLDecoder.decode(url, charset); return URLDecoder.decode(url, charset);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {

View File

@ -38,7 +38,7 @@ import com.smallchill.system.model.OperationLog;
public class BladeLogFactory implements ILog { public class BladeLogFactory implements ILog {
public String[] logPatten() { public String[] logPatten() {
String[] patten = { "login", "logout", "grant", "save", "update", "remove", "del", "delete", "restore" }; String[] patten = { "login", "logout", "grant", "save", "update", "remove", "del", "delete", "restore", "change" };
return patten; return patten;
} }
@ -52,7 +52,8 @@ public class BladeLogFactory implements ILog {
.set("remove", "删除") .set("remove", "删除")
.set("del", "删除") .set("del", "删除")
.set("delete", "删除") .set("delete", "删除")
.set("restore", "还原"); .set("restore", "还原")
.set("restore", "变更");
return rd; return rd;
} }
@ -79,7 +80,7 @@ public class BladeLogFactory implements ILog {
OperationLog log = new OperationLog(); OperationLog log = new OperationLog();
log.setMethod(msg); log.setMethod(msg);
log.setCreatetime(new Date()); log.setCreatetime(new Date());
log.setSucceed((succeed)?"1":"0"); log.setSucceed((succeed) ? "1" : "0");
log.setUserid(Func.toStr(user.getId())); log.setUserid(Func.toStr(user.getId()));
log.setLogname(logName); log.setLogname(logName);
boolean temp = Blade.create(OperationLog.class).save(log); boolean temp = Blade.create(OperationLog.class).save(log);

View File

@ -1,40 +1,50 @@
#默认配置 #默认配置
ENGINE=org.beetl.core.engine.FastRuntimeEngine ENGINE=org.beetl.core.engine.FastRuntimeEngine
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=} #开始结束占位符
#开始结束标签 DELIMITER_PLACEHOLDER_START = ${
DELIMITER_STATEMENT_START=@ DELIMITER_PLACEHOLDER_END = }
DELIMITER_STATEMENT_END=null
DIRECT_BYTE_OUTPUT = FALSE #开始结束标签
HTML_TAG_SUPPORT = true DELIMITER_STATEMENT_START = @
HTML_TAG_FLAG = blade: DELIMITER_STATEMENT_END = null
HTML_TAG_BINDING_ATTRIBUTE = var
NATIVE_CALL = TRUE DIRECT_BYTE_OUTPUT = FALSE
TEMPLATE_CHARSET = UTF-8 HTML_TAG_SUPPORT = true
ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler HTML_TAG_FLAG = blade:
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager HTML_TAG_BINDING_ATTRIBUTE = var
MVC_STRICT = FALSE NATIVE_CALL = TRUE
#资源配置resource后的属性只限于特定ResourceLoader TEMPLATE_CHARSET = UTF-8
RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
#classpath 根路径 NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
RESOURCE.root=/WEB-INF/view MVC_STRICT = FALSE
#是否检测文件变化
RESOURCE.autoCheck= true #资源配置resource后的属性只限于特定ResourceLoader
#自定义脚本方法文件的Root目录和后缀 RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html #classpath 根路径
#自定义标签文件Root目录和后缀 RESOURCE.root = /WEB-INF/view
RESOURCE.tagRoot = common/_widget
RESOURCE.tagSuffix = tag #是否检测文件变化
##### 扩展 ############## RESOURCE.autoCheck= true
TAG.trim= org.beetl.sql.core.engine.TrimTag
## 内置的方法 #自定义脚本方法文件的Root目录和后缀
FN.date = org.beetl.ext.fn.DateFunction RESOURCE.functionRoot = functions
##内置的功能包 RESOURCE.functionSuffix = html
FNP.strutil = org.beetl.ext.fn.StringUtil
##内置的默认格式化函数 #自定义标签文件Root目录和后缀
FTC.java.util.Date = org.beetl.ext.format.DateFormat RESOURCE.tagRoot = common/_widget
## 标签类 RESOURCE.tagSuffix = tag
TAG.include=org.beetl.ext.tag.IncludeTag
##自定义函数 ##### 扩展 ##############
FNP.tool =com.smallchill.common.beetl.BeetlTools TAG.trim= org.beetl.sql.core.engine.TrimTag
## 内置的方法
FN.date = org.beetl.ext.fn.DateFunction
##内置的功能包
FNP.strutil = org.beetl.ext.fn.StringUtil
##内置的默认格式化函数
FTC.java.util.Date = org.beetl.ext.format.DateFormat
## 标签类
TAG.include = org.beetl.ext.tag.IncludeTag
##自定义函数
FNP.tool = com.smallchill.common.beetl.BeetlTools

View File

@ -60,12 +60,11 @@
<value>DisableCircularReferenceDetect</value> <value>DisableCircularReferenceDetect</value>
</list> </list>
</property> </property>
<property name="serializerFeatures"> <!-- <property name="serializerFeatures">
<list> <list>
<!-- 空字段也返回, 不需要的可以注释掉 --> <value>WriteMapNullValue</value>
<!-- <value>WriteMapNullValue</value> -->
</list> </list>
</property> </property> -->
<property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"></property> <property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"></property>
</bean> </bean>
</property> </property>

View File

@ -1,37 +1,38 @@
package com.smallchill.test.beetlsql; package com.smallchill.test.beetlsql;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.beetl.sql.core.ClasspathLoader; import org.beetl.sql.core.ClasspathLoader;
import org.beetl.sql.core.DefaultNameConversion; import org.beetl.sql.core.DefaultNameConversion;
import org.beetl.sql.core.Interceptor; import org.beetl.sql.core.Interceptor;
import org.beetl.sql.core.SQLLoader; import org.beetl.sql.core.SQLLoader;
import org.beetl.sql.core.SQLManager; import org.beetl.sql.core.SQLManager;
import org.beetl.sql.core.db.MySqlStyle; import org.beetl.sql.core.db.MySqlStyle;
import org.junit.Test; import org.junit.Test;
import com.smallchill.core.beetl.ReportInterceptor; import com.smallchill.core.beetl.ReportInterceptor;
import com.smallchill.core.toolbox.kit.CharsetKit;
@SuppressWarnings("rawtypes")
public class BeetlTest { @SuppressWarnings("rawtypes")
public class BeetlTest {
@Test
public void test() { @Test
public void test() {
List<Map> list = getSqlManager().execute("select 'test' t from dual", Map.class, null);
System.out.println(list); List<Map> list = getSqlManager().execute("select 'test' t from dual", Map.class, null);
System.out.println(list);
}
}
public SQLManager getSqlManager() {
MySqlStyle style = new MySqlStyle(); public SQLManager getSqlManager() {
MySqlConnection cs = new MySqlConnection(); MySqlStyle style = new MySqlStyle();
SQLLoader loader = new ClasspathLoader("/beetlsql"); MySqlConnection cs = new MySqlConnection();
SQLManager sql = new SQLManager(style, loader, cs, new DefaultNameConversion(), new Interceptor[] { new ReportInterceptor() }); SQLLoader loader = new ClasspathLoader("/beetlsql");
sql.getSqlLoader().setCharset("UTF-8"); SQLManager sql = new SQLManager(style, loader, cs, new DefaultNameConversion(), new Interceptor[] { new ReportInterceptor() });
sql.getSqlLoader().setAutoCheck(true); sql.getSqlLoader().setCharset(CharsetKit.UTF_8);
return sql; sql.getSqlLoader().setAutoCheck(true);
} return sql;
}
}
}