package com.vci.server.framework.appConfig; import java.util.List; import org.apache.commons.lang3.StringUtils; import org.hibernate.HibernateException; import com.alibaba.fastjson.JSONObject; import com.vci.corba.framework.data.AppConfigDetailInfo; import com.vci.server.base.persistence.dao.HibernateCallback; import com.vci.server.base.persistence.dao.HibernateTemplate; import com.vci.server.cache.CacheNames; import com.vci.server.cache.redis.RedisUtil; public final class AppConfigDetailCatch {//extends BaseCacheTimer { public synchronized static void refreshCache() { clearCatch(); InitCatch(); } public synchronized static void InitCatch() { clearCatch(); List lstDetail = instalGetAppConfigDetails(); for (AppConfigDetail item : lstDetail){ setAppConfig(AppConfigUtils.convertConfigToConfigInfo(item)); } } @SuppressWarnings("unchecked") private static List instalGetAppConfigDetails(){ return (List)new HibernateTemplate().run(new HibernateCallback(){ public Object execute() throws HibernateException { AppConfigDetailDaoImpl impl = new AppConfigDetailDaoImpl(); return impl.loadAll(); } }); } public synchronized static void clearCatch(){ RedisUtil.getInstance().del(CacheNames.APPCONFIGS); } public static void setAppConfig(AppConfigDetailInfo item) { String jsonObj = JSONObject.toJSONString(item); RedisUtil.getInstance().hset(CacheNames.APPCONFIGS, item.key.toLowerCase(), jsonObj); RedisUtil.getInstance().hset(CacheNames.APPCONFIGS, "MAP-" + item.id.toLowerCase(), item.key); } public static void delConfig(String key) { if (StringUtils.isBlank(key)) return; RedisUtil.getInstance().hdel(CacheNames.APPCONFIGS, key.toLowerCase()); } public static void delConfigById(String id) { if (StringUtils.isBlank(id)) return; String key = RedisUtil.getInstance().hget(CacheNames.APPCONFIGS, "MAP-" + id.toLowerCase()); RedisUtil.getInstance().hdel(CacheNames.APPCONFIGS, "MAP-" + id.toLowerCase()); if (StringUtils.isBlank(key)) return; RedisUtil.getInstance().hdel(CacheNames.APPCONFIGS, key.toLowerCase()); } // /** // * 返回全部的 AppConfigDetail 对象 // */ // public List getAppConfigDetails(){ // refreshCache(); // // return _lstDetail; // } // /** // * 根据 ID 返回 AppConfigDetail 对象 // * @param ids AppConfigDetail 对象的 ID 列表 // */ // public synchronized AppConfigDetail getAppConfigDetailById(final String id){ // refreshCache(); // // if (_mapId2Detail.containsKey(id)) // return _mapId2Detail.get(id); // // return null; // } // // /** // * 根据主键获取AppConfigDetail // * @param key // * @return // */ // public AppConfigDetail getAppConfigDetailByKey(final String key){ // refreshCache(); // // if (_mapKey2Detail.containsKey(key)) // return _mapKey2Detail.get(key); // // return null; // } // // public List getAppConfigDetailsByIds(final String[] clsfIds){ // refreshCache(); // // List lstId = Arrays.asList(clsfIds); // // List list = new ArrayList(); // for (AppConfigDetail item : _lstDetail){ // if (lstId.contains(item.getCategoryId())){ // list.add(item); // } // } // // return list; // } // // public List getAppConfigDetailsByCatId(final String clsfId){ // refreshCache(); // // List list = new ArrayList(); // for (AppConfigDetail item : _lstDetail){ // if (item.getCategoryId().equals(clsfId)){ // list.add(item); // } // } // // return list; // } // // public List getAppConfigDetailsByCategory(final String catName){ // refreshCache(); // // AppConfigCategoryService catSrv = new AppConfigCategoryService(new UserEntity()); // AppConfigCategory cat = catSrv.getAppConfigCategoryByName(catName); // if (cat == null) // return new ArrayList(); // // List list = new ArrayList(); // for (AppConfigDetail item : _lstDetail){ // if (item.getCategoryId().equals(cat.getId())){ // list.add(item); // } // } // // return list; // } // // public List getAppConfigDetailsByName(final String name){ // refreshCache(); // // List list = new ArrayList(); // for (AppConfigDetail item : _lstDetail){ // if (item.getName().equals(name)){ // list.add(item); // } // } // // return list; // } }