package com.nis.util; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import com.beust.jcommander.internal.Sets; import com.nis.domain.FunctionServiceDict; import jersey.repackaged.com.google.common.collect.Lists; @SuppressWarnings("all") public class ServiceConfigTemplateUtil { private static final Logger logger = Logger.getLogger(ServiceConfigTemplateUtil.class); private static Node root; static { if(root == null) {//2018年12月28日11:37:50 fang 改为只加载一次,且方法改为 static SAXReader reader = new SAXReader(); org.dom4j.Document document = null; String configPath = "/service/service_config.xml"; InputStream is = null; try { is = ServiceConfigTemplateUtil.class.getResourceAsStream(configPath); document = reader.read(is); root = document.getRootElement(); } catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); } finally { if(is != null ){ try { is.close(); } catch (IOException e) { } } } } } /** * 配置文件内容 * @return */ public ServiceConfigTemplateUtil(){ } /** * 获取业务节点列表 * @return */ public static List getServiceNodeList(){ List nodes = root.selectNodes("service"); return nodes; } /** * 获取业务列表 * @return */ public static List> getServiceList(){ List> list =new ArrayList(); List elements = root.selectNodes("service"); for(Element element:elements){ Map map = new HashMap(); for(int i=0;i getCompileTableName(){ Set result = Sets.newHashSet(); List elements = root.selectNodes("service"); for(Element element:elements){ String ev = element.attribute("tableName").getStringValue(); if(StringUtils.isNotBlank(ev)) { result.add(ev.toLowerCase()); } } return result; } /** * 根据类名 获取对应的 表名 * @param className * @return */ public static String getCfgTableNameByClassName(String className) { if(className == null) return null; List elements = root.selectNodes("service"); for(Element element:elements){ String ev = element.attribute("tableName").getStringValue(); String cn = element.attribute("className").getStringValue(); if(className.equalsIgnoreCase(cn)) { return ev.toLowerCase(); } } return null; } /** * * @param functionId * @return */ public static List> getServiceListByFunctionId(Integer functionId){ List> list =new ArrayList(); if(!StringUtil.isEmpty(functionId)) { List serviceList = DictUtils.getFunctionServiceDictList(functionId); List serviceIdList = new ArrayList(); for (FunctionServiceDict service : serviceList) { if(!StringUtil.isEmpty(service.getServiceId())) { serviceIdList.add(service.getServiceId().toString()); } } List elements = root.selectNodes("service"); for(Element element:elements){ String serviceIdC=element.attributeValue("id"); if(!StringUtil.isEmpty(serviceIdC) && !StringUtil.isEmpty(serviceIdList) && serviceIdList.contains(serviceIdC)) { Map map = new HashMap(); for(int i=0;i> getServiceListByServiceId(Integer serviceId){ List> list =new ArrayList(); if(!StringUtil.isEmpty(serviceId)) { List elements = root.selectNodes("service"); for(Element element:elements){ String serviceIdC=element.attributeValue("id"); if(!StringUtil.isEmpty(serviceIdC) && String.valueOf(serviceId).equals(serviceIdC)) { Map map = new HashMap(); for(int i=0;i> getServiceCfgList(Element serviceNode){ List> list = new ArrayList(); List elements = serviceNode.selectNodes("serviceCfg"); for(Element element:elements){ Map map = new HashMap(); for(int i=0;i> getUserRegionList(Element serviceNode){ List> list = new ArrayList(); List elements = serviceNode.selectNodes("userRegion"); for(Element element:elements){ Map map = new HashMap(); for(int i=0;i elements = root.selectNodes(tag); for(Element element:elements){ list.add(element.attributeValue(attribute)); } return list; } public static void main(String[] args) { try { ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil(); List> list = serviceTemplate.getServiceListByServiceId(518); for(Map map :list){ System.out.println("业务配置:"+map.get("id")+","+map.get("functionId")+","+map.get("serviceType")+","+map.get("tableName")); List> cfgList = (List>) map.get("cfgList"); List> userRegionList = (List>) map.get("userRegionList"); if(cfgList!=null){ for(Map m:cfgList){ System.out.println("cfgList:"+m.get("cfgType")+","+m.get("tableName")+","+m.get("groupReuse")+","+m.get("groupId")); } } if(userRegionList!=null){ for(Map n:userRegionList){ System.out.println("userRegionList:"+n.get("regionKey")+","+n.get("regionColumn")+","+n.get("handleType")); } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }