package com.vci.server.omd.biztype.cache; import java.io.File; import java.util.ArrayList; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject; import com.vci.common.exception.VciExceptionTool; import com.vci.common.resource.CommonProperties; import com.vci.corba.omd.btm.BtmItem; import com.vci.server.base.exception.ExceptionLocalHandler; import com.vci.server.cache.CacheNames; import com.vci.server.cache.redis.RedisUtil; import com.vci.server.omd.biztype.service.BTMService; import com.vci.corba.common.VCIError; public class BizTypeCacheUtil { private static volatile BizTypeCacheUtil instance = null; private static ArrayList pathList = null; public static void initCache() { clearCache(); try { getInstance().initBTMItem(); getInstance().initImagePaths(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void clearCache() { RedisUtil.getInstance().del(CacheNames.BIZTYPES); } public static void setBizType(BtmItem item) { if (item == null) return; String jsonObj = JSONObject.toJSONString(item); RedisUtil.getInstance().hset(CacheNames.BIZTYPES, item.name.toLowerCase(), jsonObj); } public static void delBizType(String name) { if (StringUtils.isBlank(name)) return; RedisUtil.getInstance().hdel(CacheNames.BIZTYPES, name.toLowerCase()); } private BizTypeCacheUtil() { pathList = new ArrayList(); } private static BizTypeCacheUtil getInstance() { if (instance == null) { synchronized (BizTypeCacheUtil.class) { if (instance == null) { instance = new BizTypeCacheUtil(); } } } return instance; } /** * 初始化BTM * */ private void initBTMItem() throws Exception { BtmItem[] bts = BTMService.getInstance().getAllBtmItem(""); for (int i = 0; i < bts.length; i++) { setBizType(bts[i]); } } /** * 初始化业务类型与数据库一致性检查 * */ private void initImagePaths() throws Exception { String imagePath = CommonProperties.getStringProperty("imagePath"); File imageFolder = new File(imagePath); File[] files = imageFolder.listFiles(); if(files != null && files.length>0){ for (File file : files) { if(file!=null){ String name = file.getName(); pathList.add("images/" + name); } } } } /** * 将服务端image是路径下的文件 , 以images/fileName的形式返回 * * @throws VCIError */ public static String[] getImagePaths() throws VCIError { return getInstance().pathList.toArray(new String[0]); } protected VCIError getLocalVciError(String key, Throwable e) { VCIError error = new VCIError(key, new String[]{VciExceptionTool.getExceptionStr(e), VciExceptionTool.getExceptionDetail(e)}); VCIError rsError = ExceptionLocalHandler.getInstance().getLocalString(error, "PLMBTM"); return rsError; } }