StatusDefNode.cc 1.83 KB
/**
 * StatusDefNode.cc
 *
 *  Created on: 13 jan. 2015
 *      Author: AKKA
 */

#include <sstream>
#include <algorithm>
#include <boost/shared_ptr.hpp>

#include "StatusDefNode.hh"

#include "Config.hh"
#include "Parameter.hh"
#include "ParamInfo.hh"
#include "Constant.hh"

using namespace log4cxx;
using namespace AMDA::Parameters;
using namespace AMDA::XMLConfigurator;

namespace AMDA {
namespace Info {

class StatusInfoNode: public AMDA::XMLConfigurator::NodeCfg {
public:
	void proceed( xmlNodePtr pNode, const AMDA::Parameters::CfgContext& context) {
		LOG4CXX_DEBUG(gLogger, "StatusInfoNode::proceed");

		ParamInfo* pParamInfo =  context.get<ParamInfo*>();

		//Get min value
		xmlChar* value = xmlGetProp(pNode, (const xmlChar *) "minVal");
		double minVal = 0.0;
		if (value != NULL)
		{
			minVal = std::atof((const char*)value);
			xmlFree(value);
		}

		//Get max value
		value = xmlGetProp(pNode, (const xmlChar *) "maxVal");
		double maxVal = 0.0;
		if (value != NULL)
		{
			maxVal = std::atof((const char*)value);
			xmlFree(value);
		}
		else
			maxVal = minVal;

		//Get name
		value = xmlGetProp(pNode, (const xmlChar *) "name");
		std::string name = "";
		if (value != NULL)
		{
			name = std::string((const char*)value);
			xmlFree(value);
		}

		pParamInfo->addStatus(minVal,maxVal,name);
	}
};

StatusDefNode::StatusDefNode() : AMDA::XMLConfigurator::NodeGrpCfg()
{
	getChildList()["status"]=NodeCfgSPtr(new StatusInfoNode);
}

StatusDefNode::~StatusDefNode()
{
}

void StatusDefNode::proceed(xmlNodePtr pNode, const AMDA::Parameters::CfgContext& pContext)
{
	LOG4CXX_DEBUG(gLogger, "StatusDefNode::proceed");

	AMDA::Parameters::CfgContext lContext(pContext);
	ParamInfo* pParamInfo =  pContext.get<ParamInfo*>();
	lContext.push<ParamInfo *>(pParamInfo);

	NodeGrpCfg::proceed(pNode, lContext);
}

}/* namespace Info */
} /* namespace AMDA */