package com.lolaage.cisvr.sysconf;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.lolaage.cisvr.sysconst.CiSvrConst;
/**
*
*/
/**
* @author huangye
*/
public class CiSvrConfig implements ICiSvrConfig
{
/**
* instance
*/
private static CiSvrConfig instance = null;
/**
* reader
*/
private SAXReader reader;
/**
* document
*/
private static Document document;
/**
* log
*/
private static Log log = LogFactory
.getLog(CiSvrConfig.class);
/**
* @return
*/
public synchronized static CiSvrConfig getInstance()
{
if (null == instance)
{
instance = new CiSvrConfig();
}
return instance;
}
/**
* constructor
*/
public CiSvrConfig()
{
init();
}
/**
* init data
*/
public void init()
{
try
{
reader = new SAXReader();
document = reader.read(new FileInputStream(
CiSvrConst.CI_SVR_CONFIGURATION_FILE));
}
catch (FileNotFoundException e)
{
if (log.isErrorEnabled())
{
log.error("read config file failed." + e);
}
}
catch (DocumentException e)
{
if (log.isErrorEnabled())
{
log.error("read config file failed." + e);
}
}
}
/**
* @param parentNodeName
* @param childNodeName
*/
public String readString(String parentNodeName, String childNodeName)
{
String rslt = "";
Element root = document.getRootElement();
Iterator it = root.elementIterator();
while (it.hasNext())
{
Element child = (Element) it.next();
if (parentNodeName.equalsIgnoreCase(child.getName()))
{
Iterator itr = child.elementIterator();
while (itr.hasNext())
{
Element cd = (Element) itr.next();
if (childNodeName.equalsIgnoreCase(cd.getName()))
{
rslt = cd.getText();
break;
}
}
break;
}
}
return rslt;
}
/**
* @param parentNodeName
* @param childNodeName
*/
public void writeString(String parentNodeName, String childNodeName,String maxEventIdHadHandled) {
Element root = document.getRootElement();
Iterator<?> it = root.elementIterator();
while (it.hasNext()) {
Element child = (Element) it.next();
if (parentNodeName.equalsIgnoreCase(child.getName())) {
Iterator<?> itr = child.elementIterator();
while (itr.hasNext()) {
Element cd = (Element) itr.next();
if (childNodeName.equalsIgnoreCase(cd.getName())) {
cd.setText(maxEventIdHadHandled);
break;
}
}
break;
}
}
FileWriter out;
try {
out = new FileWriter(CONFIG_FILE_NAME);
document.write(out);
out.flush();
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param parentNodeName
* @param childNodeName
* @return
*/
public int readInt(String parentNodeName, String childNodeName)
{
int rslt = 0;
Element root = document.getRootElement();
Iterator it = root.elementIterator();
while (it.hasNext())
{
Element child = (Element) it.next();
if (parentNodeName.equalsIgnoreCase(child.getName()))
{
Iterator itr = child.elementIterator();
while (itr.hasNext())
{
Element cd = (Element) itr.next();
if (childNodeName.equalsIgnoreCase(cd.getName()))
{
rslt = Integer.parseInt(cd.getText());
break;
}
}
break;
}
}
return rslt;
}
/**
* @param parentNodeName
* @param childNodeName
* @return
*/
public double readDouble(String parentNodeName, String childNodeName)
{
double rslt = 0;
Element root = document.getRootElement();
Iterator it = root.elementIterator();
while (it.hasNext())
{
Element child = (Element) it.next();
if (parentNodeName.equalsIgnoreCase(child.getName()))
{
Iterator itr = child.elementIterator();
while (itr.hasNext())
{
Element cd = (Element) itr.next();
if (childNodeName.equalsIgnoreCase(cd.getName()))
{
rslt = Double.parseDouble(cd.getText());
break;
}
}
break;
}
}
return rslt;
}
public static void main(String[] args)
{
// Config config = Config.getInstance();
// String localIp = config.readString(Const.COMMUNICATION, Const.SERVER_IP);
// int listenPort = config.readInt(Const.COMMUNICATION, Const.LISTEN_PORT);
// int retrieveInterval = config
// .readInt(Const.BUSINESS, Const.RETRIEVE_INTERVAL);
//
// System.out.println(Integer.toHexString(retrieveInterval));
}
}
//配置文件
<?xml version="1.0" encoding="UTF-8"?>
<System>
<Communication>
<SvrIp>172.16.1.119</SvrIp>
<SvrLstnPort>6300</SvrLstnPort>
<ThreadQuantity>250</ThreadQuantity>
</Communication>
<Resource>
<!--MAX QUEUE TASK QUANTITY FOR COMMLAYER RESOURCE,DEFAULT 100000 -->
<QueueMaxTaskQuantity4CommLayer>100000</QueueMaxTaskQuantity4CommLayer>
</Resource>
<Business>
<!--unit:second -->
<OffLineOfNotConnectedTime>600</OffLineOfNotConnectedTime>
<WeakSignalOfNotConnectedTime>300</WeakSignalOfNotConnectedTime>
</Business>
<Timer>
<SortOutDataClock>03:00:00</SortOutDataClock>
</Timer>
</System>
分享到:
相关推荐
从给定的文件信息来看,这个压缩包似乎包含了与苹果操作系统中Mac颜色配置文件相关的内容。在苹果的MacOS操作系统中,颜色配置文件是用于确保不同设备间颜色显示一致性的关键组件。这些配置文件能够定义显示设备、...
INI 配置文件的保存和读取 INI 配置文件是一种常见的文件格式,用于存储程序的配置信息。它是一种简单的持久化机制,允许程序在启动时初始化配置信息。INI 文件由多个节(Section)组成,每个节中可以有多个键名...
在Android开发中,读写配置文件是常见的任务,主要用于存储应用程序的设置、用户偏好或者其他持久化数据。配置文件通常以XML或JSON格式存在,因为它们结构清晰,易于解析。本实例将详细介绍如何在Android中进行读取...
在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...
在C#编程中,Windows Forms(Winform)应用程序经常需要与配置文件进行交互,以便存储和检索应用设置。本文将详细讲解如何在Winform中读取和修改配置文件,特别是`appSettings`部分,这对于大多数桌面应用来说是至关...
在C#编程中,配置文件是用于存储应用程序运行时所需的设置和参数的重要工具。这些设置可以包括数据库连接字符串、API密钥、应用路径等。本教程将深入探讨如何使用C#进行配置文件的读写操作,并提供源代码供学习者...
标题中的“Hikvision配置文件解码器.zip”指出,这是一个与解码Hikvision视频监控设备配置文件相关的工具或程序。Hikvision是全球知名的安防监控设备制造商,其产品广泛应用于各种场所,如家庭、商业设施、公共安全...
vSphere 主机配置文件是VMware vSphere虚拟化平台的一个重要组成部分,它允许IT管理员创建、管理和应用配置文件来标准化和自动化vCenter Server中的ESXi主机配置。使用vSphere主机配置文件可以提高效率并减少重复...
本文将详细讲解海康威视配置文件解码的专业知识,以及如何利用“海康威视配置文件解码专用工具器”进行操作。 首先,了解什么是配置文件。在海康威视的设备中,配置文件通常包含了摄像头、NVR(网络视频录像机)或...
**Pore5.0配置文件详解** 在3D建模和产品设计领域,Pro/E(现称为Creo Parametric)是一款广泛使用的软件,其最新版本为Creo 5.0,简称Pore5.0。配置文件对于Pro/E的运行至关重要,它定义了软件的各种参数和设置,...
在LabVIEW中,配置文件是用于存储应用程序设置、参数或状态的关键元素。这些文件通常以.ini或.xml格式存在,允许程序在运行时根据这些配置进行自定义行为。本教程将深入探讨如何在LabVIEW中进行配置文件的写入与读取...
标题中的“MACBook颜色配置文件Apple-MAC-OS-Color LCD.rar”指的是为苹果MacBook设计的一种特定的颜色配置文件,这种文件通常以ICC(International Color Consortium)格式存在,用于优化显示器的色彩表现,确保...
"mac的颜色配置文件",也就是苹果的ICC(International Color Consortium)配色文件,是这个过程中的重要组成部分。 ICC配色文件是一种标准化的方式,用来描述显示器、打印机、扫描仪等设备如何解释和再现颜色。这些...
在C++编程中,处理配置文件通常是为了存储和读取应用程序的设置或用户偏好。ini文件是一种常见的配置文件格式,其结构简单,易于理解和操作。本文将深入探讨如何使用C++来读写ini配置文件,主要参考提供的"rwconfig....
分享BigemapPro地图配置文件
"foobar 均衡器 最强配置文件"指的是在音乐播放软件Foobar2000中使用的高级音频调整工具——均衡器的一种优化设置。Foobar2000是一款深受音乐爱好者喜爱的高质量音频播放器,它支持各种音频格式,并允许用户自定义...
在三维建模软件Creo 3.0中,配置文件(.prf文件)是控制程序行为和用户界面的关键元素。这些文件允许用户根据个人习惯和项目需求定制软件的各个方面,包括显示设置、单位系统、内存分配、启动选项等。本篇文章将详细...
本篇将详细探讨"汇川伺服电机 Ethercat配置文件"的相关知识点,以及如何进行有效的配置。 EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网协议,它允许高速数据传输和低延迟,非常...
在Linux环境下,开发基于Qt框架的应用程序时,我们经常需要处理配置文件,以便保存用户的个性化设置或应用程序的状态信息。`QSettings`是Qt提供的一种强大且便捷的工具,用于读写配置文件。这个例子中,我们将深入...