VoHelper
VoHelper
package com.isoftstone.pcis.policy.core.helper; import com.isoftstone.fwk.dao.CommonDao; import com.isoftstone.fwk.service.BusinessServiceException; import com.isoftstone.fwk.util.BeanTool; import com.isoftstone.fwk.util.SpringUtils; import com.isoftstone.pcis.policy.core.exception.VoManipulateException; import com.isoftstone.pcis.policy.vo.AbstractCvrgVO; import com.isoftstone.pcis.prod.exception.ProductDefinitionException; import com.isoftstone.pcis.prod.service.ProdService; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class VoHelper { public static String VO_TYPE_APP = "App"; public static String VO_TYPE_PLY = "Ply"; public static String ELEMENT_NAME = "Name"; public static String ELEMENT_CAPTION = "Caption"; public static String ELEMENT_NAME_PRODEF = "CNmeEn"; public static String ELEMENT_CAPTION_PRODEF = "CNmeCn"; private static final Log logger = LogFactory.getLog(VoHelper.class); private static String voPkg = "com.isoftstone.pcis.policy.vo"; private static String voUdrPkg = "com.isoftstone.pcis.policy.app.underwrite.vo"; public static Class getVoClass(String componentName, String voType) { String className = voPkg + "." + getVoClassName(componentName, voType); try { return Class.forName(className); } catch (ClassNotFoundException e) { e.printStackTrace(); }return null; } public static Class getAppVoClass(String componentName) { String className = voPkg + "." + getAppVoClassName(componentName); try { return Class.forName(className); } catch (ClassNotFoundException e) { logger.error("Class.forName(" + className + ") 出现异常。"); }return null; } public static Class getPlyVoClass(String componentName) { String className = voPkg + "." + getPlyVoClassName(componentName); try { return Class.forName(className); } catch (ClassNotFoundException e) { logger.error("Class.forName(" + className + ") 出现异常。"); }return null; } public static Class getUdrVoClass(String componentName) { String className = voUdrPkg + "." + getUdrVoClassName(componentName); try { return Class.forName(className); } catch (ClassNotFoundException e) { logger.error("Class.forName(" + className + ") 出现异常。"); }return null; } public static Object createAppEntryVo(String componentName) { Class c = getAppVoClass(componentName); try { if (c != null) { return c.newInstance(); } return null; } catch (InstantiationException e) { logger.error(e.getMessage()); return null; } catch (IllegalAccessException e) { logger.error(e.getMessage()); }return null; } public static Object createPlyEntryVo(String componentName) { Class c = getPlyVoClass(componentName); try { if (c != null) { return c.newInstance(); } return null; } catch (InstantiationException e) { logger.error(e.getMessage()); return null; } catch (IllegalAccessException e) { logger.error(e.getMessage()); }return null; } public static Object createUdrEntryVo(String componentName) { Class c = getUdrVoClass(componentName); try { if (c != null) { return c.newInstance(); } return null; } catch (InstantiationException e) { logger.error(e.getMessage()); return null; } catch (IllegalAccessException e) { logger.error(e.getMessage()); }return null; } public static String getVoClassName(String componentName, String voType) { return voType + componentName + "VO"; } public static String getAppVoClassName(String componentName) { return "App" + componentName + "VO"; } public static String getPlyVoClassName(String componentName) { return "Ply" + componentName + "VO"; } public static String getUdrVoClassName(String componentName) { return "Undr" + componentName + "VO"; } public static String getComponentNameOfVo(Object entry) { String[] pathArray = entry.getClass().getName().split("\\."); String voName = pathArray[(pathArray.length - 1)]; String featureName = null; if ((voName.matches("^App")) || (!voName.matches("VO$"))) featureName = voName.replaceAll("^App", "").replaceAll("VO$", ""); else if ((voName.matches("^Ply")) || (!voName.matches("VO$"))) { featureName = voName.replaceAll("^Ply", "").replaceAll("VO$", ""); } return featureName; } public static void serializePlyVo() { CommonDao dao = (CommonDao)SpringUtils.getSpringBean("commonDao"); } public static boolean hasPkId(Object vo) throws VoManipulateException { try { Map propertyMap = BeanUtils.describe(vo); if (propertyMap.containsKey("CPkId")) { return true; } return false; } catch (Exception e) { throw new VoManipulateException("判断vo是否有CPkId字段时出错", e); } } public static String getOrigPkId(Object vo) throws VoManipulateException { try { String origRowId = BeanUtils.getProperty(vo, "CRowId"); if (origRowId != null) { return origRowId; } return BeanUtils.getProperty(vo, "CPkId"); } catch (Exception e) { throw new VoManipulateException("获得vo[" + vo.getClass().getName() + "]原始id时出错", e); } } public static Long getSeqNoIgnoreException(Object vo) { try { return (Long)PropertyUtils.getProperty(vo, "NSeqNo"); } catch (Exception e) { logger.warn("忽略获得seqno时出错"); }return null; } public static Map<String, Map<String, Object>> compareEntry(Object oldEntry, Object newEntry, Set<String> propSet) throws VoManipulateException { try { propSet.remove("class"); Map diffMap = new HashMap(); for (String propName : propSet) { Object oldValue = PropertyUtils.getProperty(oldEntry, propName); Object newValue = PropertyUtils.getProperty(newEntry, propName); if ((oldValue != null) || (newValue != null)) { if ((oldValue != null) && (newValue != null)) { if ((oldValue instanceof Date)) { if (DateUtils.isSameDay((Date)oldValue, (Date)newValue)) { continue; } } else { if ((oldValue instanceof Double) ? Double.compare(((Double)oldValue).doubleValue(), ((Double)newValue).doubleValue()) == 0 : oldValue.equals(newValue)) { continue; } } } Map diff = new HashMap(); diff.put("old", oldValue); diff.put("new", newValue); diffMap.put(propName, diff); } } return diffMap; } catch (Exception e) { throw new VoManipulateException("比较失败", e); } } public static Map<String, Map<String, Object>> compareEntryEx(Object oldEntry, Object newEntry, Set<String> excludePropSet) throws VoManipulateException { try { Map propMap = BeanUtils.describe(oldEntry); Set propSet = new HashSet(); propSet.addAll((Collection)propMap.keySet()); propSet.removeAll(excludePropSet); return compareEntry(oldEntry, newEntry, propSet); } catch (Exception e) { throw new VoManipulateException("比较失败", e); } } public static Map<String, Map<String, Object>> compareEntry(Object oldEntry, Object newEntry) throws VoManipulateException { try { Map propMap = BeanUtils.describe(oldEntry); Set propSet = new HashSet(); propSet.addAll((Collection)propMap.keySet()); return compareEntry(oldEntry, newEntry, propSet); } catch (Exception e) { throw new VoManipulateException("比较失败", e); } } public static List<String> getKeyNameList(String prodNo, String componentName) throws ProductDefinitionException { try { ProdService prodService = (ProdService)SpringUtils.getSpringBean("prodService"); return prodService.getProdEleNmeEn(prodNo, componentName); } catch (BusinessServiceException e) { throw new ProductDefinitionException("获得保单要素分类关键字异常", e); } } public static List<String> getCoverageKeyNameList(String prodNo, String cvrgNo) throws ProductDefinitionException { try { ProdService prodService = (ProdService)SpringUtils.getSpringBean("prodService"); return prodService.getProdEleNmeEn(prodNo, "Cvrg", cvrgNo); } catch (BusinessServiceException e) { throw new ProductDefinitionException("获得保单要素分类关键字异常", e); } } public static List<Map<String, String>> getKeyNameCaptionMapList(String prodNo, String componentName) throws ProductDefinitionException { try { ProdService prodService = (ProdService)SpringUtils.getSpringBean("prodService"); List elemNameMapList = prodService.getProdEleNme(prodNo, componentName, null); List nameLabelMapList = new ArrayList(); for (Map elemNameMap : elemNameMapList) { String complexName = (String)elemNameMap.get("CNmeEn"); String[] nameSects = complexName.split("\\."); Map nameLabelMap = new HashMap(); nameLabelMap.put(ELEMENT_NAME_PRODEF, nameSects[1]); nameLabelMap.put(ELEMENT_CAPTION_PRODEF, (String)elemNameMap.get(ELEMENT_CAPTION_PRODEF)); nameLabelMap.put(ELEMENT_NAME, nameSects[1]); nameLabelMap.put(ELEMENT_CAPTION, (String)elemNameMap.get(ELEMENT_CAPTION_PRODEF)); nameLabelMapList.add(nameLabelMap); } return nameLabelMapList; } catch (BusinessServiceException e) { throw new ProductDefinitionException("获得保单要素分类关键字异常", e); } } public static List<Map<String, String>> getCoverageKeyNameCaptionMapList(String prodNo, String cvrgNo) throws ProductDefinitionException { try { ProdService prodService = (ProdService)SpringUtils.getSpringBean("prodService"); List elemNameMapList = prodService.getProdEleNme(prodNo, "Cvrg", cvrgNo); List nameLabelMapList = new ArrayList(); for (Map elemNameMap : elemNameMapList) { String complexName = (String)elemNameMap.get("CNmeEn"); String[] nameSects = complexName.split("\\."); Map nameLabelMap = new HashMap(); nameLabelMap.put(ELEMENT_NAME_PRODEF, nameSects[1]); nameLabelMap.put(ELEMENT_CAPTION_PRODEF, (String)elemNameMap.get(ELEMENT_CAPTION_PRODEF)); nameLabelMap.put(ELEMENT_NAME, nameSects[1]); nameLabelMap.put(ELEMENT_CAPTION, (String)elemNameMap.get(ELEMENT_CAPTION_PRODEF)); nameLabelMapList.add(nameLabelMap); } return nameLabelMapList; } catch (BusinessServiceException e) { throw new ProductDefinitionException("获得保单要素分类关键字异常", e); } } public static String getKeyValueAsStr(Object entry, List<String> keyNameList) throws VoManipulateException { try { if ((keyNameList != null) && (!keyNameList.isEmpty())) { String[] elemValues = new String[keyNameList.size()]; for (int i = 0; i < keyNameList.size(); i++) { String attrName = ((String)keyNameList.get(i)).substring( ((String)keyNameList.get(i)).indexOf(".") + 1); String aValue = BeanTool.getAttributeValueAsString(entry, attrName); elemValues[i] = aValue; } return StringUtils.join(elemValues, "-%-"); } if ((entry instanceof AbstractCvrgVO)) { return ((AbstractCvrgVO)entry).getCCvrgNo(); } Long seqNo = getSeqNoIgnoreException(entry); if (seqNo != null) { return seqNo.toString(); } return null; } catch (Exception e) { throw new VoManipulateException("生成要素关键标识描述时异常", e); } } }
VoHelper的更多相关文章
随机推荐
- 跨域利器JSONP(转)
何为跨域?何为JSONP?JSONP技术能实现什么?是否有必要使用JSONP技术? 跨域 就是由于JavaScript同源策略的限制,使得a.com域名下的js无法操作b.com或c.a.com域名下 ...
- quartz的触发器CronTriggerBean 配置
一个Quartz的CronTrigger表达式分为七项子表达式,其中每一项以空格隔开,从左到右分别是:秒,分,时,月的某天,月,星期的某天,年:其中年不是必须的,也就是说任何一个表达式最少需要六项! ...
- android studio sqlite操作代码片段
SQLiteDatabase db;Cursor cur; SimpleCursorAdapter adapter; // 打开或创建数据库db = openOrCreateDatabase(DB ...
- OC获取文件(夹)的代码行数
/* 考察NSString NSArray NSFileManager */ #import <Foundation/Foundation.h> /* 计算单个文件的代码行数 path:文 ...
- 微信 ua
Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, l ...
- java监测方法运行时间/效率方法
前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也 ...
- hadoop-初学者写map-reduce程序中容易出现的问题 3
1.写hadoop的map-reduce程序之前所必须知道的基础知识: 1)hadoop map-reduce的自带的数据类型: Hadoop提供了如下内容的数据类型,这些数据类型都实现了Writab ...
- Python中的sorted函数以及operator.itemgetter函数
operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1,2 ...
- Web Developer可以做得更多
美国雅虎前端工程师Hedger Wang.这位原雅虎奇摩的第一位Web Developer,非常慷慨的与我们分享了他丰富的经验.现身说法,比空洞的理论更有感染力,我们发现现在遇到的很多问题也都是他曾经 ...
- anything vs everything
everything多用于肯定而anything多用于否定和疑问语气 anything 1) 任何事情/东西,可以用在肯定句/否定句/疑问句中.如:You can take anything you ...