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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,40 +1,50 @@
#默认配置
ENGINE=org.beetl.core.engine.FastRuntimeEngine
DELIMITER_PLACEHOLDER_START=${
DELIMITER_PLACEHOLDER_END=}
#开始结束标签
DELIMITER_STATEMENT_START=@
DELIMITER_STATEMENT_END=null
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = blade:
HTML_TAG_BINDING_ATTRIBUTE = var
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
MVC_STRICT = FALSE
#资源配置resource后的属性只限于特定ResourceLoader
RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
#classpath 根路径
RESOURCE.root=/WEB-INF/view
#是否检测文件变化
RESOURCE.autoCheck= true
#自定义脚本方法文件的Root目录和后缀
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html
#自定义标签文件Root目录和后缀
RESOURCE.tagRoot = common/_widget
RESOURCE.tagSuffix = tag
##### 扩展 ##############
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
#默认配置
ENGINE=org.beetl.core.engine.FastRuntimeEngine
#开始结束占位符
DELIMITER_PLACEHOLDER_START = ${
DELIMITER_PLACEHOLDER_END = }
#开始结束标签
DELIMITER_STATEMENT_START = @
DELIMITER_STATEMENT_END = null
DIRECT_BYTE_OUTPUT = FALSE
HTML_TAG_SUPPORT = true
HTML_TAG_FLAG = blade:
HTML_TAG_BINDING_ATTRIBUTE = var
NATIVE_CALL = TRUE
TEMPLATE_CHARSET = UTF-8
ERROR_HANDLER = org.beetl.core.ConsoleErrorHandler
NATIVE_SECUARTY_MANAGER= org.beetl.core.DefaultNativeSecurityManager
MVC_STRICT = FALSE
#资源配置resource后的属性只限于特定ResourceLoader
RESOURCE_LOADER=org.beetl.core.resource.ClasspathResourceLoader
#classpath 根路径
RESOURCE.root = /WEB-INF/view
#是否检测文件变化
RESOURCE.autoCheck= true
#自定义脚本方法文件的Root目录和后缀
RESOURCE.functionRoot = functions
RESOURCE.functionSuffix = html
#自定义标签文件Root目录和后缀
RESOURCE.tagRoot = common/_widget
RESOURCE.tagSuffix = tag
##### 扩展 ##############
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>
</list>
</property>
<property name="serializerFeatures">
<!-- <property name="serializerFeatures">
<list>
<!-- 空字段也返回, 不需要的可以注释掉 -->
<!-- <value>WriteMapNullValue</value> -->
<value>WriteMapNullValue</value>
</list>
</property>
</property> -->
<property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"></property>
</bean>
</property>

View File

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