package com.nis.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.nis.web.service.restful.ConfigRedisServiceimpl; /** * *

Title: ServiceAndRDBIndexReal

*

Description: 业务类型与各个表名的对应关系,业务类型与redisDBIndex的对应关系

*

Company: IIE

* @author rkg * @date 2018年5月30日 * */ public class ServiceAndRDBIndexReal { private static Logger logger = LoggerFactory.getLogger(ServiceAndRDBIndexReal.class); /** * 第一个key是业务类型,第二个key是type(编译配置,分组配置,域配置)value是表名 */ private static Map> sercieNameMap = new HashMap>(); /** * 非maat结构业务类型与表名对应关系,key是业务类型,value是表名 */ private static Map unMaatSercieNameMap = new HashMap(); /** * key是业务类型,value是业务类型对应的redisdbIndex */ private static Map> serviceDBIndexmap = new HashMap>(); /** * key是业务类型,value是业务类型对应的动作(action) */ private static Map serviceActionMap = new HashMap(); static { String unMaatService = Configurations.getStringProperty("unMaatService", ""); if (unMaatService != null && !unMaatService.trim().equals("")) { String[] split = unMaatService.split(";"); for (String str : split) { String[] serviceAction = str.split(":"); serviceActionMap.put(Integer.valueOf(serviceAction[0]), Integer.valueOf(serviceAction[1])); String serviceType = Configurations.getStringProperty(serviceAction[0], ""); if (serviceType != null && !serviceType.trim().equals("")) { String[] typeArrs = serviceType.split(";"); for (String typeStr : typeArrs) { String[] typeArr = typeStr.split(":"); String tableNameArr[] = typeArr[1].split(","); for (String tableName : tableNameArr) { unMaatSercieNameMap.put(Integer.parseInt(serviceAction[0]), tableName.toUpperCase()); } } } } } String service = Configurations.getStringProperty("service", ""); if (service != null && !service.trim().equals("")) { String[] split = service.split(";"); for (String str : split) { String[] serviceAction = str.split(":"); serviceActionMap.put(Integer.valueOf(serviceAction[0]), Integer.valueOf(serviceAction[1])); String type = Configurations.getStringProperty(serviceAction[0], ""); if (type != null && !type.trim().equals("")) { Map typeMap = new HashMap(); String[] typeArrs = type.split(";"); for (String typeStr : typeArrs) { String[] typeArr = typeStr.split(":"); String tableNameArr[] = typeArr[1].split(","); for (String tableName : tableNameArr) { typeMap.put(Integer.parseInt(typeArr[0]), tableName.toUpperCase()); } } sercieNameMap.put(Integer.parseInt(serviceAction[0]), typeMap); } } } String serviceDBIndexs = Configurations.getStringProperty("serviceDBIndex", ""); if (serviceDBIndexs != null && !serviceDBIndexs.trim().equals("")) { String[] serviceDBIndexArr = serviceDBIndexs.split(";"); for (String serviceDBIndexStr : serviceDBIndexArr) { String[] serviceDBIndex = serviceDBIndexStr.split(":"); List redisDbList = new ArrayList(); String[] redisDbArr = serviceDBIndex[1].split(","); for (String redisDbStr : redisDbArr) { redisDbList.add(Integer.valueOf(redisDbStr)); } serviceDBIndexmap.put(Integer.parseInt(serviceDBIndex[0]), redisDbList); } } } /** * 根据业务类型获取这个 * @param service * @return */ public static List getRedisDBByService(Integer service) { List redisIndexList = serviceDBIndexmap.get(service); if (redisIndexList == null) { return null; } return redisIndexList; } /** * 根据业务类型和具体的type获取maat类型对应的表名 * @param service 业务类型 * @param type 10代表是编译配置,11代表是分组配置,12代表是ip类域配置,13代表是数值类配置,14代表是字符串类域配置,15代表是增强字符串类域配置 * @return */ public static String getMaatTableName(int service, int type, String tableName) { Map typeMap = sercieNameMap.get(service); if (typeMap != null && typeMap.size() > 0) { if (tableName == null || tableName.trim().equals("")) { return typeMap.get(type); } else { String tableNames = typeMap.get(type); String[] split = tableNames.split(","); for (String str : split) { if (str.toLowerCase().contains(tableName.toLowerCase())) { return str; } else { logger.error( "未从业务类型和表对应关系中,找到业务类型:{},配置类型:{}表名:{}对应的真实表名",service,type,tableName); } } } } return null; } /** * 根据业务类型获取unmaat配置表名 * @param service * @return */ public static String getUnMaatTableName(int service) { if (unMaatSercieNameMap != null && unMaatSercieNameMap.size() > 0) { return unMaatSercieNameMap.get(service); } return null; } public static Integer getActionByService(Integer service) { return serviceActionMap.get(service); } public static Map> getSercieNameMap() { return sercieNameMap; } public static void setSercieNameMap(Map> sercieNameMap) { ServiceAndRDBIndexReal.sercieNameMap = sercieNameMap; } public static Map> getServiceDBIndexmap() { return serviceDBIndexmap; } public static void setServiceDBIndexmap(Map> serviceDBIndexmap) { ServiceAndRDBIndexReal.serviceDBIndexmap = serviceDBIndexmap; } }