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;
|
}
|
}
|