package com.vci.server.portal.cache;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import com.vci.server.cache.redis.RedisUtil;
|
import com.vci.server.portal.entity.PLActionParamEntity;
|
import com.vci.server.portal.service.PLActionEntityService;
|
import com.vci.server.portal.tools.ServerTool;
|
import com.alibaba.fastjson.JSONObject;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.portal.data.PLActionParam;
|
/**
|
* actionparam缓存
|
* @author zhangxg
|
*
|
*/
|
public class ActionParamCacheUtil extends UICacheBaseUtil<PLActionParam>{
|
private static volatile ActionParamCacheUtil instance = null;
|
|
|
public static void initCache() {
|
try {
|
getInstance().initActionParam();
|
} catch (Throwable e) {
|
e.printStackTrace();
|
}
|
}
|
|
private ActionParamCacheUtil() {
|
super(UICacheNames.ACTIONPARAM, PLActionParam.class);
|
}
|
|
public static ActionParamCacheUtil getInstance() {
|
if (instance == null) {
|
synchronized (ActionParamCacheUtil.class) {
|
if (instance == null) {
|
instance = new ActionParamCacheUtil();
|
}
|
}
|
}
|
|
return instance;
|
}
|
|
@Override
|
public void setObject(PLActionParam obj) {
|
if (obj == null)
|
return;
|
|
String jsonObj = JSONObject.toJSONString(obj);
|
|
RedisUtil.getInstance().hset(getName(), obj.oid, jsonObj);
|
}
|
|
@Override
|
public PLActionParam[] getObjects() {
|
List<PLActionParam> list = getObjectList();
|
|
return list.toArray(new PLActionParam[0]);
|
}
|
|
|
@Override
|
public void delObject(PLActionParam obj) {
|
if (obj == null || StringUtils.isBlank(obj.oid))
|
return;
|
|
RedisUtil.getInstance().hdel(getName(), obj.oid);
|
}
|
|
private void initActionParam() throws VCIError {
|
RedisUtil.getInstance().del(getName());
|
|
List<PLActionParamEntity> paramList = PLActionEntityService.getInstance().getActionParams();
|
|
Map<String, List<String>> mapAct2Param = new HashMap<String, List<String>>();
|
for(int i = 0; i < paramList.size(); i++) {
|
PLActionParamEntity ent = paramList.get(i);
|
PLActionParam actParam = ServerTool.getPLActionParam(ent);
|
|
setObject(actParam);
|
|
List<String> lstParam = mapAct2Param.get(actParam.action);
|
if (lstParam == null) {
|
lstParam = new ArrayList<String>();
|
mapAct2Param.put(actParam.action, lstParam);
|
}
|
lstParam.add(actParam.oid);
|
}
|
|
for (String key : mapAct2Param.keySet()) {
|
List<String> lstParam = mapAct2Param.get(key);
|
RedisUtil.getInstance().hset(getName(), "MAP-" + key, String.join(";", lstParam));
|
}
|
}
|
|
|
public PLActionParam[] getAParamByAction(String actionId) throws VCIError {
|
String temp = RedisUtil.getInstance().hget(getName(), "MAP-" + actionId);
|
if (StringUtils.isBlank(temp))
|
return new PLActionParam[0];
|
|
String items[] = temp.split(";");
|
|
List<PLActionParam> lstParam = new ArrayList<PLActionParam>();
|
for (String item : items) {
|
PLActionParam ap = getObject(item);
|
if (ap != null)
|
lstParam.add(ap);
|
}
|
|
return lstParam.toArray(new PLActionParam[0]);
|
}
|
}
|