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>
分享到:
相关推荐
INI 配置文件的保存和读取 INI 配置文件是一种常见的文件格式,用于存储程序的配置信息。它是一种简单的持久化机制,允许程序在启动时初始化配置信息。INI 文件由多个节(Section)组成,每个节中可以有多个键名...
**SourceInsight 4.0配置文件详解** SourceInsight是一款强大的源代码分析和编辑工具,尤其在编程语言如C/C++、Java、C#等领域中广泛应用。它提供了高效的代码浏览、查找、编辑和理解功能,是软件开发人员提高工作...
在Android开发中,读写配置文件是常见的任务,主要用于存储应用程序的设置、用户偏好或者其他持久化数据。配置文件通常以XML或JSON格式存在,因为它们结构清晰,易于解析。本实例将详细介绍如何在Android中进行读取...
标题中的“proe config配置文件大全”指的是针对Pro/Engineer Wildfire 5.0(简称ProE 5.0)软件的一系列配置文件集合。ProE是一款由PTC公司开发的三维参数化建模软件,广泛应用于产品设计和工程领域。配置文件是...
在C#编程中,配置文件是用于存储应用程序运行时所需的设置和参数的重要工具。这些设置可以包括数据库连接字符串、API密钥、应用路径等。本教程将深入探讨如何使用C#进行配置文件的读写操作,并提供源代码供学习者...
在Linux系统中,C语言作为底层编程的主要工具,其对配置文件的操作往往涉及到繁琐的文件I/O操作。然而,为了简化这一过程,开发者通常会利用特定的库来处理配置文件,比如读取、写入、解析键值对等。本文将深入探讨...
本文将详细讲解海康威视配置文件解码的专业知识,以及如何利用“海康威视配置文件解码专用工具器”进行操作。 首先,了解什么是配置文件。在海康威视的设备中,配置文件通常包含了摄像头、NVR(网络视频录像机)或...
标题中的“Hikvision配置文件解码器.zip”指出,这是一个与解码Hikvision视频监控设备配置文件相关的工具或程序。Hikvision是全球知名的安防监控设备制造商,其产品广泛应用于各种场所,如家庭、商业设施、公共安全...
vSphere 主机配置文件是VMware vSphere虚拟化平台的一个重要组成部分,它允许IT管理员创建、管理和应用配置文件来标准化和自动化vCenter Server中的ESXi主机配置。使用vSphere主机配置文件可以提高效率并减少重复...
标题中的“笔记本颜色配置文件”指的是用于调整笔记本电脑显示屏色彩特性的ICC(International Color Consortium)配置文件。这种文件能够帮助用户校正显示器的色彩表现,确保显示的图像颜色与实际色彩更加接近,...
在LabVIEW中,配置文件是用于存储应用程序设置、参数或状态的关键元素。这些文件通常以.ini或.xml格式存在,允许程序在运行时根据这些配置进行自定义行为。本教程将深入探讨如何在LabVIEW中进行配置文件的写入与读取...
在Linux系统中,C语言开发过程中,经常需要与配置文件打交道,进行读取和写入操作。配置文件通常用于存储程序的设置或用户偏好,使其能够根据不同的环境或需求进行定制。下面我们将深入探讨如何在C语言中实现对配置...
"mac的颜色配置文件",也就是苹果的ICC(International Color Consortium)配色文件,是这个过程中的重要组成部分。 ICC配色文件是一种标准化的方式,用来描述显示器、打印机、扫描仪等设备如何解释和再现颜色。这些...
标题中的“MACBook颜色配置文件Apple-MAC-OS-Color LCD.rar”指的是为苹果MacBook设计的一种特定的颜色配置文件,这种文件通常以ICC(International Color Consortium)格式存在,用于优化显示器的色彩表现,确保...
在Java开发中,配置文件是应用中不可或缺的一部分,它们通常包含系统设置、数据库连接信息、应用参数等。本文将深入探讨如何在Java中实现动态修改配置文件,同时解决中文字符编码问题,使得配置文件的读写更加高效和...
在C++编程中,处理配置文件通常是为了存储和读取应用程序的设置或用户偏好。ini文件是一种常见的配置文件格式,其结构简单,易于理解和操作。本文将深入探讨如何使用C++来读写ini配置文件,主要参考提供的"rwconfig....
本篇将详细探讨"汇川伺服电机 Ethercat配置文件"的相关知识点,以及如何进行有效的配置。 EtherCAT(Ethernet for Control Automation Technology)是一种实时工业以太网协议,它允许高速数据传输和低延迟,非常...
MAC的颜色配置文件,如"MAC.icc",就是这样的一个工具,它专为苹果的Mac系统设计,但也适用于Windows系统,以提供更佳的视觉效果。本文将深入探讨颜色配置文件的工作原理、icc文件的作用以及如何在不同操作系统中...
屏幕色彩配置文件是针对电脑显示器显示颜色不准确问题的一个解决方案,尤其在一些特定型号的联想笔记本,如Y400,可能会出现屏幕偏色现象,比如偏蓝或偏黄。这种情况可能由于硬件出厂设置、驱动程序问题或者操作系统...