This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
k18-ntcs-web-ntc/src/main/java/com/nis/util/ServiceConfigTemplateUtil.java
2019-04-16 16:46:16 +08:00

279 lines
8.4 KiB
Java

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<Node> getServiceNodeList(){
List<Node> nodes = root.selectNodes("service");
return nodes;
}
/**
* 获取业务列表
* @return
*/
public static List<Map<String,Object>> getServiceList(){
List<Map<String,Object>> list =new ArrayList();
List<Element> elements = root.selectNodes("service");
for(Element element:elements){
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
String attributeName = element.attribute(i).getName();
map.put(attributeName, element.attributeValue(attributeName));
}
map.put("cfgList", getServiceCfgList(element));
map.put("userRegionList",getUserRegionList(element));
list.add(map);
}
return list;
}
/**
*
* @return
*/
public static Set<String> getCompileTableName(){
Set<String> result = Sets.newHashSet();
List<Element> 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<Element> 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<Map<String,Object>> getServiceListByFunctionId(Integer functionId){
List<Map<String,Object>> list =new ArrayList();
if(!StringUtil.isEmpty(functionId)) {
List<FunctionServiceDict> serviceList = DictUtils.getFunctionServiceDictList(functionId);
List<String> serviceIdList = new ArrayList();
for (FunctionServiceDict service : serviceList) {
if(!StringUtil.isEmpty(service.getServiceId())) {
serviceIdList.add(service.getServiceId().toString());
}
}
List<Element> elements = root.selectNodes("service");
for(Element element:elements){
String serviceIdC=element.attributeValue("id");
if(!StringUtil.isEmpty(serviceIdC)
&& !StringUtil.isEmpty(serviceIdList)
&& serviceIdList.contains(serviceIdC)) {
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
String attributeName = element.attribute(i).getName();
map.put(attributeName, element.attributeValue(attributeName));
}
map.put("cfgList", getServiceCfgList(element));
map.put("userRegionList",getUserRegionList(element));
list.add(map);
}
}
}
return list;
}
/**
*
* @param serviceId
* @return
*/
public List<Map<String,Object>> getServiceListByServiceId(Integer serviceId){
List<Map<String,Object>> list =new ArrayList();
if(!StringUtil.isEmpty(serviceId)) {
List<Element> elements = root.selectNodes("service");
for(Element element:elements){
String serviceIdC=element.attributeValue("id");
if(!StringUtil.isEmpty(serviceIdC)
&& String.valueOf(serviceId).equals(serviceIdC)) {
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
String attributeName = element.attribute(i).getName();
map.put(attributeName, element.attributeValue(attributeName));
}
map.put("cfgList", getServiceCfgList(element));
map.put("userRegionList",getUserRegionList(element));
list.add(map);
}
}
}
return list;
}
/**
* 获取业务配置列表
* @return
*/
public static List<Map<String,Object>> getServiceCfgList(Element serviceNode){
List<Map<String,Object>> list = new ArrayList();
List<Element> elements = serviceNode.selectNodes("serviceCfg");
for(Element element:elements){
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
map.put(element.attribute(i).getName(), element.attributeValue(element.attribute(i).getName()));
}
list.add(map);
}
return list;
}
/**
* 获取用户自定义域列表
* @return
*/
public static List<Map<String,Object>> getUserRegionList(Element serviceNode){
List<Map<String,Object>> list = new ArrayList();
List<Element> elements = serviceNode.selectNodes("userRegion");
for(Element element:elements){
Map<String,Object> map = new HashMap();
for(int i=0;i<element.attributes().size();i++){
map.put(element.attribute(i).getName(), element.attributeValue(element.attribute(i).getName()));
}
list.add(map);
}
return list;
}
/**
* 根据标签获取配置属性列表
* @param tag,如多层标签,格式为/tag/subTag/...
* @param attribute
* @return
*/
public static List getXmlParamListByTag(String tag,String attribute){
List list =new ArrayList();
List<Element> elements = root.selectNodes(tag);
for(Element element:elements){
list.add(element.attributeValue(attribute));
}
return list;
}
public static Set<String> getAllTableName(){
//Set<String> tableName = getCompileTableName();
Set<String> result = Sets.newHashSet();
List<Map<String, Object>> serviceList = getServiceList();
for (Map<String, Object> serviceNode : serviceList) {
result.add(serviceNode.get("tableName").toString().trim());
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) serviceNode.get("cfgList");
if(cfgList != null) {
for (Map<String, Object> map : cfgList) {
result.add(map.get("tableName").toString().trim());
}
}
}
return result;
}
public static void main(String[] args) {
try {
ServiceConfigTemplateUtil serviceTemplate = new ServiceConfigTemplateUtil();
List<Map<String,Object>> list = serviceTemplate.getServiceListByServiceId(518);
for(Map<String,Object> map :list){
System.out.println("业务配置:"+map.get("id")+","+map.get("functionId")+","+map.get("serviceType")+","+map.get("tableName"));
List<Map<String,Object>> cfgList = (List<Map<String, Object>>) map.get("cfgList");
List<Map<String,Object>> userRegionList = (List<Map<String, Object>>) map.get("userRegionList");
if(cfgList!=null){
for(Map<String,Object> m:cfgList){
System.out.println("cfgList:"+m.get("cfgType")+","+m.get("tableName")+","+m.get("groupReuse")+","+m.get("groupId"));
}
}
if(userRegionList!=null){
for(Map<String,Object> 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();
}
}
}