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.PLPageDefinationEntity; import com.vci.server.portal.service.PLPageDefinationEntityService; import com.vci.server.portal.tools.ServerTool; import com.alibaba.fastjson.JSONObject; import com.vci.corba.common.VCIError; import com.vci.corba.portal.data.PLPageDefination; public class ComponentCacheUtil extends UICacheBaseUtil{ private static volatile ComponentCacheUtil instance = null; public static void initCache() { try { getInstance().initPLPageDefination(); } catch (Throwable e) { e.printStackTrace(); } } private ComponentCacheUtil() { super(UICacheNames.PAGECOMPONENT, PLPageDefination.class); } public static ComponentCacheUtil getInstance() { if (instance == null) { synchronized (ComponentCacheUtil.class) { if (instance == null) { instance = new ComponentCacheUtil(); } } } return instance; } @Override public void setObject(PLPageDefination obj) { if (obj == null) return; String jsonObj = JSONObject.toJSONString(obj); RedisUtil.getInstance().hset(getName(), obj.plOId, jsonObj); } @Override public PLPageDefination[] getObjects() { List list = getObjectList(); return list.toArray(new PLPageDefination[0]); } @Override public void delObject(PLPageDefination obj) { if (obj == null || StringUtils.isBlank(obj.plOId)) return; RedisUtil.getInstance().hdel(getName(), obj.plOId); } // // private void initPLPageDefination() throws Throwable{ // lstPageDef.clear(); // mapTab2PageDefs.clear(); // mapID2PageDef.clear(); // System.gc(); // // List list = PLPageDefinationEntityService.getInstance().getAllPLPageDefinations(); // for(int i = 0; i < list.size(); i++){ // PLPageDefinationEntity obj = list.get(i); // PLPageDefination pageDef = ServerTool.getPLPageDefination(obj); // if(pageDef != null){ // lstPageDef.add(pageDef); // mapID2PageDef.put(pageDef.plOId, pageDef); // // List pageDefinationList = null; // if (mapTab2PageDefs.get(pageDef.plPageContextOId) == null) { // pageDefinationList = new ArrayList(); // mapTab2PageDefs.put(pageDef.plPageContextOId, pageDefinationList); // } else { // pageDefinationList = mapTab2PageDefs.get(pageDef.plPageContextOId); // } // pageDefinationList.add(pageDef); // } // } // } // private void initPLPageDefination() throws Throwable{ RedisUtil.getInstance().del(getName()); List listEnt = PLPageDefinationEntityService.getInstance().getAllPLPageDefinations(); Map> mapTemp = new HashMap>(); for(PLPageDefinationEntity btn : listEnt){ PLPageDefination pageDef = ServerTool.getPLPageDefination(btn); if(pageDef != null){ setObject(pageDef); } List lstTemp = mapTemp.get(pageDef.plTabPageOId); if (lstTemp == null) { lstTemp = new ArrayList(); mapTemp.put(pageDef.plTabPageOId, lstTemp); } lstTemp.add(pageDef.plOId); } for (String key : mapTemp.keySet()) { List lstTemp = mapTemp.get(key); RedisUtil.getInstance().hset(getName(), "MAP-" + key, String.join(";", lstTemp)); } } public PLPageDefination[] getComopnent(String tabId) throws VCIError { String temp = RedisUtil.getInstance().hget(getName(), "MAP-" + tabId); if (StringUtils.isBlank(temp)) return new PLPageDefination[0]; String oids[] = temp.split(";"); List lstObj = new ArrayList(); for (String oid : oids) { PLPageDefination ap = getObject(oid); if (ap != null) lstObj.add(ap); } return lstObj.toArray(new PLPageDefination[0]); } }