package com.vci.server.omd.statepool.cache; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONObject; import com.vci.common.exception.VciExceptionTool; import com.vci.corba.common.VCIError; import com.vci.corba.omd.stm.StatePool; 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.statepool.service.StatePoolService; public class StatePoolServerCacheUtil {// extends BaseCacheTimer{ private static volatile StatePoolServerCacheUtil instance = null; private String[] pathes = null; private StatePoolServerCacheUtil() { } public static void initCache() { try { clearCache(); getInstance().initStatePool(); getInstance().initImagePaths(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void clearCache() { RedisUtil.getInstance().del(CacheNames.LIFESTATES); } public static void setLifeState(StatePool item) { if (item == null) return; String jsonObj = JSONObject.toJSONString(item); RedisUtil.getInstance().hset(CacheNames.LIFESTATES, item.name.toLowerCase(), jsonObj); } public static void delLifeState(String name) { if (StringUtils.isBlank(name)) return; RedisUtil.getInstance().hdel(CacheNames.LIFESTATES, name.toLowerCase()); } private static StatePoolServerCacheUtil getInstance() { if (instance == null) { synchronized (StatePoolServerCacheUtil.class) { if (instance == null) { instance = new StatePoolServerCacheUtil(); } } } return instance; } private void initImagePaths() throws VCIError { try { pathes = StatePoolService.getInstance().getImagePaths(); } catch (Throwable e) { // TODO Auto-generated catch block e.printStackTrace(); throw getLocalVciError("P0010STATE-00009", e); } } /** * 初始化状态池 * */ private void initStatePool() throws Exception { StatePool[] states = StatePoolService.getInstance().getStatePools(); for (int i = 0; i < states.length; i++) { setLifeState(states[i]); } } public static String[] getImagePaths() throws Throwable { return getInstance().pathes; } 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, "PLMSTATE"); return rsError; } }