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{ 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 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 paramList = PLActionEntityService.getInstance().getActionParams(); Map> mapAct2Param = new HashMap>(); for(int i = 0; i < paramList.size(); i++) { PLActionParamEntity ent = paramList.get(i); PLActionParam actParam = ServerTool.getPLActionParam(ent); setObject(actParam); List lstParam = mapAct2Param.get(actParam.action); if (lstParam == null) { lstParam = new ArrayList(); mapAct2Param.put(actParam.action, lstParam); } lstParam.add(actParam.oid); } for (String key : mapAct2Param.keySet()) { List 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 lstParam = new ArrayList(); for (String item : items) { PLActionParam ap = getObject(item); if (ap != null) lstParam.add(ap); } return lstParam.toArray(new PLActionParam[0]); } }