package com.tpaic.ec.util;
import java.security.Key;
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.regex.Pattern;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.security.Base64Encoder;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.tpaic.auto.client.ec.dto.InsureTemp;
import com.tpaic.auto.client.ec.dto.TempBase;
import com.tpaic.ec.domain.NetPlanDefine;
import com.tpaic.ec.domain.Parameter;
import com.tpaic.tpfa.app.biz.dispatch.DispatchServiceException;
/**
* 公共函数,全是static方法
*
* @author xiemingmei
* @date 2008-9-21
*/
public class CommonFunctions {
protected static final Log logger = LogFactory.getLog(CommonFunctions.class);
private CommonFunctions() {
}
/**
* MD5散列后base64编码 密码经过此该方法编码存进数据库
*
* @param str
* @return
*/
public static String getMd5EncodeString(String str) {
String encode = "666666";
try {
byte[] hash = MessageDigest.getInstance("MD5").digest(str.getBytes());
encode = Base64Encoder.encode(hash);
} catch (Exception e) {
logger.error(e);
}
return encode;
}
/**
* 生成随机密码
*
* @param length
* @return
*/
public static String getRandomString(int length) {
String str = "01234567890123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
StringBuffer sb = new StringBuffer();
Random r = new Random();
int range = str.length();
for (int i = 0; i < length; i++) {
sb.append(str.charAt(r.nextInt(range)));
}
return sb.toString();
}
/**
* 把中文转换为拼音
* @param name
* @return
*/
public static String cnToSpell(String name){
try {
return Spell.converterToFirstSpell(name);
} catch (Exception e) {
logger.debug(e);
}
return name;
}
public static String getRandomPassword(int length) {
String str = "0123456789";
StringBuffer sb = new StringBuffer();
Random r = new Random();
int range = str.length();
for (int i = 0; i < length; i++) {
sb.append(str.charAt(r.nextInt(range)));
}
return sb.toString();
}
public static void main(String[] a) {
System.out.println(getRandomString(6));
}
/**
* 返回SHA-1的散列值
* @param string
* @return
*/
public static String getSHA1String(String string){
try {
MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
return Base64Encoder.encode(sha1.digest(string.getBytes()));
} catch (Exception e) {
logger.error(e);
}
return null;
}
/**
* 生成随机数字(短信、邮件校验码)
*
* @param length
* @return
*/
public static String getRandomNo(int length) {
String str = "0123456789";
StringBuffer sb = new StringBuffer();
Random r = new Random();
int range = str.length();
for (int i = 0; i < length; i++) {
sb.append(str.charAt(r.nextInt(range)));
}
return sb.toString();
}
/**
* DES加密
*
* @param data-明文
* @return 密文
* @throws Exception
*/
public static String encodeDES(String data) throws Exception {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom("tpaic-ec".getBytes()));
Key key = _generator.generateKey();
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] endata = cipher.doFinal(data.getBytes());
String endata2 = new BASE64Encoder().encode(endata);
return endata2;
}
/**
* DES解密
*
* @param endata-密文
* @return 明文
* @throws Exception
*/
public static String decodeDES(String endata) throws Exception {
KeyGenerator _generator = KeyGenerator.getInstance("DES");
_generator.init(new SecureRandom("tpaic-ec".getBytes()));
Key key = _generator.generateKey();
Cipher cipher = Cipher.getInstance("DES");
// 用密钥初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, key);
// 执行解密操作
byte[] bytes = new BASE64Decoder().decodeBuffer(endata);
byte decryptedData[] = cipher.doFinal(bytes);
// 然后将解密后的数据转化成原来的类文件。
return new String(decryptedData);
}
/**
* 验证手机号码
*
* @param phone
* @return
*/
public static boolean validatePhonenumber(String phone) {
return Pattern.matches("^[1]{1}[358]{1}[0-9]{9}$", phone);
}
/**
* 验证邮箱地址
*
* @param email
* @return
*/
public static boolean validateEmail(String email) {
return Pattern.matches("^[_a-z0-9-]+([.][_a-z0-9-]+)*@[a-z0-9-]+([.][a-z0-9-]+)*$", email);
}
/**
* 根据code获取基础参数设置
*
* @param email
* @return Parameter域对象
* @throws DispatchServiceException
*/
public static String getParameterByCode(String paraCode, Map paraMap) throws DispatchServiceException {
Parameter parameter = (Parameter) paraMap.get(paraCode);
return parameter.getParaValue();
}
/**
* 获取投保单号
*
* @param insureTemp
* @return
*/
public static String getApplyPolicyNo(InsureTemp insureTemp) {
String applyPolicyNo = "";
for (int i = 0; i < insureTemp.getTempBaseList().size(); i++) {
if (((TempBase) insureTemp.getTempBaseList().get(i)).getApplyPolicyNo() != null)
applyPolicyNo += ((TempBase) insureTemp.getTempBaseList().get(i)).getApplyPolicyNo() + " ";
}
return applyPolicyNo;
}
/**
* 获取保险产品名称
*
* @param insureTemp
* @return
*/
public static String getProductName(List tempBaseList, Collection planList) {
String productName = "";
String planCode;
for (int i = 0; i < tempBaseList.size(); i++) {
if (((TempBase) tempBaseList.get(i)) != null) {
TempBase tempBase= ((TempBase) tempBaseList.get(i));
planCode = tempBase.getPlanCode();
String planDefineId=tempBase.getPlanDefineId();
if("".equals(productName)){
productName += getProductNameByCode(planDefineId,planCode, planList);
}else{
productName +=","+getProductNameByCode(planDefineId,planCode, planList);
}
}
}
return productName;
}
/**
* 获取网上产品名称
*
* @param planCode
* @return
*/
public static String getProductNameByCode(String planDefineId,String planCode, Collection planList) {
String planName = planCode;
if (StringUtil.isEmptyString(planName)) {
return "";
}
Iterator it = planList.iterator();
NetPlanDefine planDefine;
while (it.hasNext()) {
planDefine = (NetPlanDefine) it.next();
if (planDefineId.equals(planDefine.getPlanDefineId())) {
planName = planDefine.getPlanNetName();
break;
}
}
return planName;
}
}
<%@ page contentType="text/html; charset=GBK" %>
<%@ include file="/WEB-INF/jsp/common/tag_include.jsp" %>
<%
response.reset();
response.setContentType("application/x-download; charset=GBK");
response.setHeader("Content-disposition","attachment; filename="+new String("电子商务日报表".getBytes("GB2312"), "ISO_8859_1") +".xls");
//以上这行设定传送到前端浏览器时的档名为*.xls
%>
<table id="resultList" width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<th rowspan="2">IP浏览城市</th>
<th rowspan="2">IP浏览页面数</th>
<th colspan="2">车险</th>
<th colspan="2">非车险</th>
<th colspan="3">其他</th>
</tr>
<tr>
<th>报价量</th>
<th>签单保费</th>
<th>签单数</th>
<th>签单保费</th>
<th>保单验真次数</th>
<th>赔案查询次数</th>
<th>投保预约次数</th>
</tr>
</table>
package web.basic.util;
import java.sql.SQLException;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import web.basic.dto.MyTablesButtonDto;
import web.basic.pojo.Auditing;
import web.basic.pojo.Button;
import web.basic.pojo.DefaultValue;
import web.basic.pojo.FilterOfTextType;
import web.basic.pojo.MyTable;
import web.basic.pojo.Process;
import web.basic.pojo.ReportForms;
import web.basic.pojo.SortTable;
import web.basic.pojo.TableColumn;
import web.basic.pojo.TableColumnConstraint;
import web.basic.pojo.TextColumnType;
import web.basic.pojo.ValueEpeat;
import web.basic.pojo.Warn;
/**
* 缓存管理器
* @author ex_yixb
*
*/
/**
* @author ex_yixb
*
*/
public class CacheManage {
private static CacheManage cacheManage=new CacheManage();
private int date=60*60*1000; //缓存时间
private Map<String,Date> cacheDate=Collections.synchronizedMap(new HashMap<String,Date>()); //缓存的时间Map
private Map<String,Object> cacheData = Collections.synchronizedMap(new HashMap<String,Object>()); //缓存的数据
/**
* 刷新所有缓存
*/
public void flushAll(){
cacheDate.clear();
}
/**
* 刷新一个缓存
*/
public void flushKey(String key){
cacheDate.remove(key);
}
/**
* 清空缓存
*/
public void clear(){
cacheDate.clear();
cacheData.clear();
}
/**
* 判断缓存是否到期
* @return
*/
private boolean ifCacheDateMature(String key){
Date date = cacheDate.get(key);
if(date==null){
return true;
}
long time =date.getTime()+this.date;
Date curr = new Date();
long currTime = curr.getTime();
if(time<currTime){
return true;
}
return false;
}
/**
* 得到缓存对象
* @return
*/
public static CacheManage getCacheManage() {
return cacheManage;
}
/**
* 得到当前表中所有的列
* @return
* @throws SQLException
*/
public List<TableColumn> getCurrTableAllColumns(Integer myTableId) throws SQLException{
boolean bool=ifCacheDateMature(Constants.CURR_TABLE_ALL_COLUMN);
if(!bool){ // 未到期
Object object = cacheData.get(Constants.CURR_TABLE_ALL_COLUMN);
if(object!=null){
return (List) object;
}
}
//到期
List<TableColumn> list = IbatisSmartDao.queryForList("ec.tableColumn.queryTableColumn",myTableId);
if(myTableId!=null){
cacheData.put(Constants.CURR_TABLE_ALL_COLUMN,list);
cacheDate.put(Constants.CURR_TABLE_ALL_COLUMN,new Date());
}
return list;
}
/**
* 得到当前表
* @return
* @throws SQLException
*/
public MyTable getCurrTable(Integer myTableId) throws SQLException{
boolean bool=ifCacheDateMature(Constants.CURR_TABLE);
if(!bool){ // 未到期
MyTable object = (MyTable) cacheData.get(Constants.CURR_TABLE);
if(object!=null && object.getId()==myTableId && myTableId>0){
return object;
}
}
//到期
Object obj = IbatisSmartDao.queryForObject("ec.myTable.queryObj.id",myTableId);
if(myTableId!=null && myTableId>0){
cacheData.put(Constants.CURR_TABLE,obj);
cacheDate.put(Constants.CURR_TABLE,new Date());
}
return (MyTable) obj;
}
/**
* 得到当前表所有的Text列
* @return
* @throws SQLException
*/
public TextColumnType getCurrTableAllTextColumn(Integer columnId) throws SQLException{
boolean bool=ifCacheDateMature(Constants.CURR_TABLE_ALL_TEXT_COLUMN);
if(!bool){ // 未到期
Map<Integer,TextColumnType> map= (Map<Integer, TextColumnType>) cacheData.get(Constants.CURR_TABLE_ALL_TEXT_COLUMN);
if(map!=null){
TextColumnType text=(TextColumnType) map.get(columnId);
if(text==null){
text=(TextColumnType) IbatisSmartDao.queryForObject("ec.textColumnType.queryTextColumnObj",columnId);
text.setFilterOfTextType((FilterOfTextType) IbatisSmartDao.queryForObject("ec.filterOfTextType.queryFilterObj.columnTypeId",text.getId()));
text.setValueEpeat((ValueEpeat) IbatisSmartDao.queryForObject("ec.valueEpeat.queryValueEpeat.textColumnTypeId",text.getId()));
text.setWarn((Warn) IbatisSmartDao.queryForObject("ec.warn.queryObj.columnId",columnId));
text.setDefaultValue((DefaultValue) IbatisSmartDao.queryForObject("ec.defaultValue.queryObj.columnId",columnId));
text.setAuditing((Auditing) IbatisSmartDao.queryForObject("ec.auditing.queryObj.tableColumnId",columnId));
text.setTableColumnConstraint((TableColumnConstraint) IbatisSmartDao.queryForObject("ec.tableColumnConstraint.queryObj.columnId",columnId));
text.setProcess((Process) IbatisSmartDao.queryForObject("ec.process.queryProcNo",text.getId()));
map.put(columnId, text);
}
return text;
}
}
//到期
HashMap<Integer,TextColumnType> map = new HashMap<Integer,TextColumnType>();
TextColumnType text=(TextColumnType) IbatisSmartDao.queryForObject("ec.textColumnType.queryTextColumnObj",columnId);
text.setFilterOfTextType((FilterOfTextType) IbatisSmartDao.queryForObject("ec.filterOfTextType.queryFilterObj.columnTypeId",text.getId()));
text.setValueEpeat((ValueEpeat) IbatisSmartDao.queryForObject("ec.valueEpeat.queryValueEpeat.textColumnTypeId",text.getId()));
text.setWarn((Warn) IbatisSmartDao.queryForObject("ec.warn.queryObj.columnId",columnId));
text.setDefaultValue((DefaultValue) IbatisSmartDao.queryForObject("ec.defaultValue.queryObj.columnId",columnId));
text.setAuditing((Auditing) IbatisSmartDao.queryForObject("ec.auditing.queryObj.tableColumnId",columnId));
text.setTableColumnConstraint((TableColumnConstraint) IbatisSmartDao.queryForObject("ec.tableColumnConstraint.queryObj.columnId",columnId));
text.setProcess((Process) IbatisSmartDao.queryForObject("ec.process.queryProcNo",text.getId()));
map.put(columnId, text);
if(columnId!=null){
cacheData.put(Constants.CURR_TABLE_ALL_TEXT_COLUMN,map);
cacheDate.put(Constants.CURR_TABLE_ALL_TEXT_COLUMN,new Date());
}
return text;
}
/**
* 清空当前表所有的Text列
*/
public void clearCurrTableAllTextColumn(Integer columnId) throws SQLException{
Map<Integer,TextColumnType> map= (Map<Integer, TextColumnType>) cacheData.get(Constants.CURR_TABLE_ALL_TEXT_COLUMN);
if(map!=null){
map.remove(columnId);
}
}
/**
*得到类别表
*/
public SortTable getCacheSortTable(Integer sortTableId) throws SQLException{
boolean bool=ifCacheDateMature(Constants.SORT_TABLE_ALL);
if(!bool){ // 未到期
Map<Integer,SortTable> map= (Map<Integer, SortTable>) cacheData.get(Constants.SORT_TABLE_ALL);
if(map!=null){
SortTable sortTable=(SortTable) map.get(sortTableId);
if(sortTable==null){
sortTable=(SortTable) IbatisSmartDao.queryForObject("ec.sortTable.querySortTableNo",sortTableId);
map.put(sortTableId, sortTable);
}
return sortTable;
}
}
//到期
HashMap<Integer,SortTable> map = new HashMap<Integer,SortTable>();
SortTable sortTable=(SortTable) IbatisSmartDao.queryForObject("ec.sortTable.querySortTableNo",sortTableId);
map.put(sortTableId, sortTable);
if(sortTableId!=null){
cacheData.put(Constants.SORT_TABLE_ALL,map);
cacheDate.put(Constants.SORT_TABLE_ALL,new Date());
}
return sortTable;
}
/**
* 清空当前类别表
*/
public void clearCacheSortTable(Integer sortTableId) throws SQLException{
Map<Integer,TextColumnType> map= (Map<Integer, TextColumnType>) cacheData.get(Constants.SORT_TABLE_ALL);
if(map!=null){
map.remove(sortTableId);
}
}
/**
* 得到所有的表
* @throws SQLException
*/
public List<MyTable> getAllTable() throws SQLException{
boolean bool=ifCacheDateMature(Constants.ALL_TABLE);
if(!bool){ // 未到期
Object object = cacheData.get(Constants.ALL_TABLE);
if(object!=null){
return (List) object;
}
}
//到期
List<MyTable> list = IbatisSmartDao.queryForList("ec.myTable.queryAll");
cacheData.put(Constants.ALL_TABLE,list);
cacheDate.put(Constants.ALL_TABLE,new Date());
return list;
}
/**
*得到所有的 Button
* @throws SQLException
*/
public List<Button> getAllButton() throws SQLException{
boolean bool=ifCacheDateMature(Constants.ALL_BUTTON);
if(!bool){ // 未到期
Object object = cacheData.get(Constants.ALL_BUTTON);
if(object!=null){
return (List) object;
}
}
//到期
List<Button> list = IbatisSmartDao.queryForList("ec.button.queryAllButton");
cacheData.put(Constants.ALL_BUTTON,list);
cacheDate.put(Constants.ALL_BUTTON,new Date());
return list;
}
/**
* 得到某一个表所有的Button
* @throws SQLException
*/
public List<Button> getCurrTableAllButton(int myTableId) throws SQLException{
boolean bool=ifCacheDateMature(Constants.CURR_TABLE_ALL_BUTTON);
if(!bool){ // 未到期
Object object = cacheData.get(Constants.CURR_TABLE_ALL_BUTTON);
if(object!=null){
return (List) object;
}
}
//到期
List<Button> list = new Vector<Button>();
List<Button> allButton = getAllButton();
List<MyTablesButtonDto> dtos = IbatisSmartDao.queryForList("ec.button.queryTableAllButton",myTableId);
for (Iterator iterator = dtos.iterator(); iterator.hasNext();) {
MyTablesButtonDto myTablesButtonDto = (MyTablesButtonDto) iterator
.next();
Button button =null;
for (Iterator iterator2 = allButton.iterator(); iterator2.hasNext();) {
Button button2 = (Button) iterator2.next();
if(button2.getId()==myTablesButtonDto.getButtonId()){
button2.setIfshow(myTablesButtonDto.getIfshow());
button=button2;
break;
}
}
if(button!=null){
list.add(button);
}
}
cacheData.put(Constants.CURR_TABLE_ALL_BUTTON,list);
cacheDate.put(Constants.CURR_TABLE_ALL_BUTTON,new Date());
return list;
}
/**
*得到所有的 报表
* @throws SQLException
*/
public List<ReportForms> getAllReportForms() throws SQLException{
boolean bool=ifCacheDateMature(Constants.ALL_REPORT_FORMS);
if(!bool){ // 未到期
Object object = cacheData.get(Constants.ALL_REPORT_FORMS);
if(object!=null){
return (List) object;
}
}
//到期
List<ReportForms> list = IbatisSmartDao.queryForList("ec.reportForms.queryAllReportForms");
cacheData.put(Constants.ALL_REPORT_FORMS,list);
cacheDate.put(Constants.ALL_REPORT_FORMS,new Date());
return list;
}
}
分享到:
相关推荐
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
Java到Python的转换工具,如标题“java2python”所示,是编程领域中的一种实用技术,旨在帮助开发者将已有的Java代码转换为Python语言。这种转换对于那些熟悉Java但希望进入Python生态系统,或者想要利用Python特定...
Java2Word是一款基于Java开发的工具,主要用于将Java源代码或者其他文本内容转换成Microsoft Word文档。这个安装包“Java2Word.rar”包含了实现这一功能的所有必要文件,使得用户能够方便地将程序或技术文档导出为...
Java2实用教程第六版是Java编程学习的经典教材之一,它为初学者提供了全面而深入的Java语言知识。这本书的课后习题旨在帮助读者巩固所学的概念,提高编程能力。本资源是该教程第六版的课后习题答案,对于正在自学...
JAVA2核心技术第1卷:基础知识(原书第7版)(PDF中文版)part1(压缩包名:JAVA2核心技术第1卷:基础知识(原书第7版).part1); JAVA2核心技术第1卷:基础知识(原书第7版)(PDF中文版)part2(压缩包名:JAVA2核心技术第1...
java2cpp java转C++ JAVA代码转C++代码的工具。
Java 2 Standard Edition (Java SE) 6 是Java平台的核心版本,主要面向桌面应用和服务器端开发。这个版本包含了丰富的API、工具和技术,为开发者提供了强大的功能和稳定性。"Java 2 SE 6 Documentation"是Java SE 6...
java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版java2图形设计完整版
Java java2d sun 绘图 java绘图,是java2d的所有基本知识都在这里了
Java2编程详解(Special_Edition_Using_Java) Java2编程详解(Special_Edition_Using_Java) Java2编程详解(Special_Edition_Using_Java)
本文提供关于jacob配置的dll文件,java2word的运行安装文件,jacob和java2word整合jar包 ckedtior网页编辑器需要用的jar,以及使用整合后的jar对word进行插入图片、带格式文字段落、和导出word功能源码
《Java2参考大全(第四版)》是一本全面覆盖Java编程语言及库的权威指南,旨在帮助开发者深入理解和熟练运用Java技术。这本书分为四个主要部分,涵盖了从基础语法到高级特性的广泛内容,并且附带有关于Java文档注释的...
Java Security Architecture API Design Implementation
Java 2 Primer Plus 中文版.pdf,此资源来自网上经本人转换为PDF格式
两本经典JAVA教程:JAVA2和JSP&SERVLET J2EE后改名为JAVA2 JSP&SEVLET是JAVA WEB的基础
Java 2实用教程(第三版)实验指导与习题解答 WORD文档
国产加密算法SM2加密解密java代码完整示例。里面有加密解密的示例,生成秘钥的示例,本人亲测有效。默认maven环境编译。若无maven环境,里面也上传了相关依赖jar包。
- 从提供的文件名来看,"java2javascript"可能是一个特定的Java到JavaScript转换工具的名称。它可能包含源代码、配置文件或使用指南,帮助用户进行转换操作。 - 使用此类工具通常需要了解其输入和输出格式,以及...