package com.vci.server.omd.qt.cache;
|
|
import java.text.DateFormat;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.apache.commons.lang3.StringUtils;
|
import org.hibernate.SQLQuery;
|
import org.hibernate.Session;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.vci.corba.omd.qtm.QTD;
|
import com.vci.corba.omd.qtm.QTInfo;
|
import com.vci.server.base.persistence.dao.HibernateSessionFactory;
|
import com.vci.server.cache.CacheNames;
|
import com.vci.server.cache.redis.RedisUtil;
|
import com.vci.server.omd.qt.dao.impl.QTDaoImpl;
|
import com.vci.server.omd.qt.entity.QTEntity;
|
|
public class QTDServerCacheUtil {
|
|
private DateFormat dFormat = new SimpleDateFormat("yyyy-MM-dd");
|
private static volatile QTDServerCacheUtil instance = null;
|
|
|
public static void initCache() {
|
clearCache();
|
|
getInstance().initQTD();
|
getInstance().initQt();
|
}
|
|
public static void clearCache() {
|
RedisUtil.getInstance().del(CacheNames.QTCACHE);
|
RedisUtil.getInstance().del(CacheNames.QTDCACHE);
|
}
|
|
public static void setQTemplate(QTInfo qt) {
|
if (qt == null)
|
return;
|
|
String jsonObj = JSONObject.toJSONString(qt);
|
|
RedisUtil.getInstance().hset(CacheNames.QTCACHE, qt.qtName.toLowerCase(), jsonObj);
|
}
|
|
public static void setQTD(QTD qtd) {
|
if (qtd == null)
|
return;
|
|
String jsonObj = JSONObject.toJSONString(qtd);
|
|
RedisUtil.getInstance().hset(CacheNames.QTDCACHE, qtd.name.toLowerCase(), jsonObj);
|
}
|
|
|
public static void delQTemplate(String name) {
|
if (StringUtils.isBlank(name))
|
return;
|
|
RedisUtil.getInstance().hdel(CacheNames.QTCACHE, name.toLowerCase());
|
}
|
|
public static void delQTD(String name) {
|
if (StringUtils.isBlank(name))
|
return;
|
|
RedisUtil.getInstance().hdel(CacheNames.QTDCACHE, name.toLowerCase());
|
}
|
|
|
public static QTD getQTD(String name) {
|
String attrObj = RedisUtil.getInstance().hget(CacheNames.QTDCACHE, name.toLowerCase());
|
if (StringUtils.isBlank(attrObj))
|
return null;
|
|
return JSONObject.parseObject(attrObj, QTD.class);
|
}
|
|
public static boolean isExistsQTD(String name) {
|
String json = RedisUtil.getInstance().hget(CacheNames.QTDCACHE, name.toLowerCase());
|
|
if (StringUtils.isBlank(json))
|
return false;
|
return true;
|
}
|
|
public static QTD[] getBizTypeQTDs(String name) {
|
Map<String, String> map = RedisUtil.getInstance().hgetAll(CacheNames.QTDCACHE);
|
List<QTD> lstItem = new ArrayList<QTD>();
|
|
String[] items = map.values().toArray(new String[0]);
|
for (int i = 0; i < items.length; i++) {
|
QTD qtd = JSONObject.parseObject(items[i], QTD.class);
|
if (qtd.btmName.equalsIgnoreCase(name))
|
lstItem.add(qtd);
|
}
|
|
return lstItem.toArray(new QTD[0]);
|
}
|
|
public static QTD[] getLinkTypeQTDs(String name) {
|
Map<String, String> map = RedisUtil.getInstance().hgetAll(CacheNames.QTDCACHE);
|
List<QTD> lstItem = new ArrayList<QTD>();
|
|
String[] items = map.values().toArray(new String[0]);
|
for (int i = 0; i < items.length; i++) {
|
QTD qtd = JSONObject.parseObject(items[i], QTD.class);
|
if (qtd.linkTypeName.equalsIgnoreCase(name))
|
lstItem.add(qtd);
|
}
|
|
return lstItem.toArray(new QTD[0]);
|
}
|
|
|
public static QTD[] getAllQTD() {
|
Map<String, String> map = RedisUtil.getInstance().hgetAll(CacheNames.QTDCACHE);
|
|
List<QTD> lstItem = new ArrayList<QTD>();
|
String[] items = map.values().toArray(new String[0]);
|
for (int i = 0; i < items.length; i++) {
|
lstItem.add(JSONObject.parseObject(items[i], QTD.class));
|
}
|
|
return lstItem.toArray(new QTD[0]);
|
}
|
|
public static QTInfo getQTemplate(String name) {
|
String attrObj = RedisUtil.getInstance().hget(CacheNames.QTCACHE, name.toLowerCase());
|
if (StringUtils.isBlank(attrObj))
|
return null;
|
|
return JSONObject.parseObject(attrObj, QTInfo.class);
|
}
|
|
public static QTInfo[] getObjTypeQTs(String name) {
|
Map<String, String> map = RedisUtil.getInstance().hgetAll(CacheNames.QTCACHE);
|
|
List<QTInfo> lstItem = new ArrayList<QTInfo>();
|
String[] items = map.values().toArray(new String[0]);
|
for (int i = 0; i < items.length; i++) {
|
lstItem.add(JSONObject.parseObject(items[i], QTInfo.class));
|
}
|
|
return lstItem.toArray(new QTInfo[0]);
|
}
|
|
|
public static QTInfo[] getAllQTemplate() {
|
Map<String, String> allVols = RedisUtil.getInstance().hgetAll(CacheNames.QTCACHE);
|
|
List<QTInfo> lstItem = new ArrayList<QTInfo>();
|
String[] items = allVols.values().toArray(new String[0]);
|
for (int i = 0; i < items.length; i++) {
|
lstItem.add(JSONObject.parseObject(items[i], QTInfo.class));
|
}
|
|
return lstItem.toArray(new QTInfo[0]);
|
}
|
|
|
public static boolean isExistsQT(String name) {
|
String json = RedisUtil.getInstance().hget(CacheNames.QTCACHE, name.toLowerCase());
|
|
if (StringUtils.isBlank(json))
|
return false;
|
return true;
|
}
|
|
private QTDServerCacheUtil() {
|
}
|
|
private static QTDServerCacheUtil getInstance() {
|
if (instance == null) {
|
synchronized (QTDServerCacheUtil.class) {
|
if (instance == null) {
|
instance = new QTDServerCacheUtil();
|
}
|
}
|
}
|
|
return instance;
|
}
|
|
private void initQTD() {
|
String sql = "select * from PL_QTEMPLATEDEF t where 1=1";
|
try{
|
Session session = HibernateSessionFactory.getSession();
|
SQLQuery query = session.createSQLQuery(sql);
|
List<?> list = query.list();
|
for(int i = 0; i < list.size(); i++){
|
QTD qtd = new QTD();
|
Object[] obj = (Object[]) list.get(i);
|
qtd.name = (String)obj[0];
|
qtd.creator = (String)obj[1];
|
qtd.createTime = ((Date)obj[2]).getTime();
|
qtd.btmName = (String)obj[3] == null ? "" : (String)obj[3];
|
String abNames = ((String)obj[4]);
|
if(abNames == null || abNames.equals("")){
|
qtd.abNames = new String[0];
|
}else{
|
qtd.abNames = ((String)obj[4]).split(",");
|
}
|
qtd.linkTypeName = (String)obj[5] == null ? "" : (String)obj[5];
|
|
setQTD(qtd);
|
}
|
}catch(Throwable e){
|
e.printStackTrace();
|
//throw getLocalVciError("PLMQTD-00003", e);
|
}
|
}
|
|
private void initQt() {
|
String hsql = "from QTEntity";
|
List<QTEntity> qtEntityList = new QTDaoImpl().findEntities(hsql);
|
//qts = new QTInfo[qtEntityList.size()];
|
for (int i = 0; i < qtEntityList.size(); i++) {
|
QTInfo wapper = getQTWrapper(qtEntityList.get(i));
|
|
setQTemplate(wapper);
|
}
|
}
|
|
|
private QTInfo getQTWrapper(QTEntity qtEntity){
|
if(qtEntity == null){
|
return null;
|
}
|
QTInfo qtWrapper = new QTInfo();
|
|
qtWrapper.qtName = qtEntity.getQtName();
|
qtWrapper.btmName = qtEntity.getBtmName();
|
qtWrapper.creator = qtEntity.getCreator();
|
qtWrapper.createTime = qtEntity.getCreateTime().getTime();
|
qtWrapper.levelFlag = qtEntity.getLevelFlag();
|
String qtUIText = qtEntity.getQtUIText();
|
qtWrapper.qtUIText = (qtUIText == null ? "" : qtUIText);
|
String qtText = qtEntity.getQtText();
|
qtWrapper.qtText = (qtText == null ? "" : qtText);
|
|
return qtWrapper;
|
}
|
|
}
|