首页>代码>spring mvc基于dom4j xml和ini文件操作开发ConfigManger系统管理源码>/ConfigManager/src/com/rayda/configManager/configOpertion/ConfigFileOpertion.java
package com.rayda.configManager.configOpertion;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;  
import com.rayda.util.ConfigReader;
import com.rayda.util.INIOpertion;
import com.rayda.vo.ConfigDBBean;
import com.rayda.vo.ConfigFileBean;
import com.rayda.vo.ProxoolBean;
import com.rayda.vo.iswitchBean;

/**
 * @description 文件配置管理类
 * @project ConfigManager
 * @author shiyang 
 * @date 2015-5-6 上午10:48:41
 * 
 */

public class ConfigFileOpertion {

	public void getFileConfig()
	{
		getConfigFileInfo();
		if(!cfgFileList.isEmpty())
		{
			fileIniMap.clear();
			fileXmlMap.clear();
			//读取FileList中文件,逐一再去读取宿主配置
			for(int i=0;i<cfgFileList.size(); i++)
			{
				ConfigFileBean fileBean =new ConfigFileBean();
				fileBean= cfgFileList.get(i);
				if(fileBean.getFileType().equals("xml"))
				{
					readXmlCfg(fileBean);
				}
				if(fileBean.getFileType().equals("ini"))
				{
				
					readIniCfg(fileBean);
				}
			}
		
			
		}
	}

	public int  alterCfgManagerInfo(String fileName,List<ConfigFileBean> configFileBean,List<ConfigDBBean> configDBBean,String nodeName)
	{
		int rv =0;
		if(nodeName.equals("FileInfo"))
		{
			
			rv=ConfigReader.getInstance().writeCfgManagerFile(xmlFilePath+File.separator+fileName,configFileBean,nodeName);
		}
		else {
			rv=ConfigReader.getInstance().writeDBManagerFile(xmlFilePath+File.separator+fileName,configDBBean,nodeName);
		}
		return rv;
    }
	//修改配置文件中的配置信息
	public int   alterXmlConfigInfo(String fileName, List<iswitchBean> iswitchList,List<ProxoolBean> proxoollist,String nodeName)
	{
		String xmlPath = "";
		int rv =0;
		for (ConfigFileBean configFileBean : cfgFileList) {
		
			if( configFileBean.getFileName().equals(fileName))
			{
				xmlPath = configFileBean.getFilePath();
				break;
			}
			
		}
		if(fileName.equals("proxool.xml"))
		{
			rv=ConfigReader.getInstance().modifyProxoolXml(xmlPath+File.separator+fileName, proxoollist);
		}
		else{
			rv=ConfigReader.getInstance().writeXMLFile(xmlPath+File.separator+fileName,iswitchList,nodeName);
		}
		return rv;
	}
	
	public int  alterCfgManagerProxoolInfo( List<ProxoolBean> proxoolBean)
	{
		int rv =0;
		rv=ConfigReader.getInstance().modifyProxoolXml(xmlFilePath+File.separator+"proxool.xml", proxoolBean);
		return rv;
	}
	public void alterIniConfigInfo(String fileName,Map<String,String> map)
	{
		String xmlPath = "";
		for (ConfigFileBean configFileBean : cfgFileList) {
		
			if( configFileBean.getFileName().equals(fileName))
			{
				xmlPath = configFileBean.getFilePath();
				break;
			}
			
		}

		INIOpertion iniOpertion=new INIOpertion();
		String fileInfo=xmlPath+File.separator+fileName;
		for(Map.Entry<String, String> entry:map.entrySet()){  
			iniOpertion.modifyIni(fileInfo, entry.getKey(), entry.getValue());
		   
		}   
		
		
	}
	//获取配置管理器自身的配置文件信息
	public ArrayList<JSONObject> getCfgManagerFile(String fileName)
	{
		ArrayList<JSONObject> fileInfoMap = new ArrayList<JSONObject>();
		readCfgInfo(fileInfoMap,fileName);
		return fileInfoMap;
	}
	//先获取配置问的配置
    //将配置文件中配置的宿主文件信息解析到cfgFileBean 
	private void getConfigFileInfo() {
		
		cfgFileList.clear();
		String fileName="cfgFileManager.xml";
		ArrayList<JSONObject> fileInfoMap=getCfgManagerFile(fileName);
		readCfgInfo(fileInfoMap,fileName);
		if(!fileInfoMap.isEmpty()){
        for (int i = 0; i < fileInfoMap.size(); i++) {
        	ConfigFileBean configFileBean =new ConfigFileBean();
        	if(!fileInfoMap.get(i).isEmpty())
        	{
             JSONObject fileInfo=fileInfoMap.get(i);
             try {
            	 configFileBean.setFileName(fileInfo.getString("fileName"));
            	 configFileBean.setFilePath(fileInfo.getString("filePath"));
            	 configFileBean.setFileType(fileInfo.getString("fileType"));
            	 cfgFileList.add(configFileBean);
				
			} catch (Exception e) {
				// TODO: handle exception
				return;
			}
        	 
             
        	}
        }
	}

	}
	
	//读取本地的proxool.xml
	public ArrayList<JSONObject>   readProxoolCfgManager()
	{
		ArrayList<JSONObject> fileInfoMap = new ArrayList<JSONObject>();
		ConfigReader.getInstance().parserProxoolXml(xmlFilePath+File.separator+"proxool.xml",
				fileInfoMap);	
		
		return fileInfoMap;
		
	}
	

	private void readXmlCfg(ConfigFileBean configFileBean)
	{
		
		try {
			ArrayList<JSONObject> fileInfoMap = new ArrayList<JSONObject>();
			if(configFileBean.getFileName().equals("proxool.xml"))
			{
				ConfigReader.getInstance().parserProxoolXml(configFileBean.getFilePath()+File.separator+configFileBean.getFileName(),
						fileInfoMap);	
			}
			else{
			ConfigReader.getInstance().readXML(fileInfoMap, configFileBean.getFilePath(), 
					configFileBean.getFileName(),true);
			}
			fileXmlMap.put(configFileBean.getFileName(),fileInfoMap);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	private void readIniCfg(ConfigFileBean configFileBean)
	{
	    Map<Object, Object> iniInfoMap=new HashMap<Object, Object>();
		INIOpertion iniOpertion=new INIOpertion();
		String fileInfo=configFileBean.getFilePath()+File.separator+configFileBean.getFileName();
		iniOpertion.getIniInfo(iniInfoMap, fileInfo);
		fileIniMap.add(iniInfoMap);
	}
	//读取配置配置文件的配置文件
	private void readCfgInfo(ArrayList<JSONObject> fileInfoMap,String fileName)
	{
		try {
			fileInfoMap.clear();
			ConfigReader.getInstance().readXML(fileInfoMap, xmlFilePath, fileName,true);
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public ArrayList<Object> getIniFileInfoMap()
	{
		if(fileIniMap.isEmpty())
		{
			return null;
		}
		return fileIniMap;
	}
	public Map<String,ArrayList<JSONObject>>  getXmlFileInfoMap()
	{
		if(fileXmlMap.isEmpty())
		{
			return null;
		}
		return fileXmlMap;
	}
	
	public List<ConfigFileBean>  getConfigFileList()
	{
		if(cfgFileList.isEmpty())
		{
			return null;
		}
		return cfgFileList;
	}
	public int deleteXMLInfo(String primaryName,String primaryValue,String fileName,String rootNode,String nodeName)
	{
		String xmlPath = "";
		for (ConfigFileBean configFileBean : cfgFileList) {
		
			if( configFileBean.getFileName().equals(fileName))
			{
				xmlPath = configFileBean.getFilePath();
				break;
			}
			
		}
		int rv =ConfigReader.getInstance().deleteXML(primaryName, primaryValue,xmlPath+File.separator+fileName,rootNode,nodeName);
		return rv;
	}
	

	private ArrayList<Object> fileIniMap = new ArrayList<Object>(); //宿主配置文件的信息
	private Map<String,ArrayList<JSONObject>> fileXmlMap = new HashMap<String,ArrayList<JSONObject>>(); //宿主配置文件的信息
	List<ConfigFileBean>  cfgFileList=new ArrayList<ConfigFileBean>();		 //配置宿主配置文件的信息
	private final String xmlFilePath=Thread.currentThread().getContextClassLoader().
			getResource("").getPath()+"config"+File.separator;			 //文件路径

}
最近下载更多
刘卫国  LV6 2021年11月25日
1006640152  LV11 2021年8月4日
xxx煜xxx  LV5 2020年2月6日
zhjwgs  LV15 2019年11月20日
xiaofei025  LV2 2019年10月6日
huangqq  LV6 2019年5月13日
鲨鱼飞飞  LV9 2019年1月5日
身体牛奶  LV1 2018年4月2日
hl2017  LV6 2018年1月26日
chinafjfzlj  LV31 2017年3月22日
最近浏览更多
暮雨2023  LV2 2023年3月20日
微信网友_6248713511227392  LV11 2022年12月5日
atopos12 2022年4月3日
暂无贡献等级
刘卫国  LV6 2021年11月25日
huaua7676  LV30 2021年8月29日
1006640152  LV11 2021年8月3日
1307216718 2021年6月28日
暂无贡献等级
枕花眠 2021年6月2日
暂无贡献等级
秦sir3067683450  LV10 2021年6月2日
dfoabsibff 2021年4月6日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友