#pragma once
#include<string>
#include<set>  
#include "CivInp.h"
#include "CivSimulResultCache.h"

class  CivDbConnection;

/**
* 水力计算类
*/
class  CivHydrCalc
{
public:
	CivHydrCalc(char* uri, std::string netName);
	~CivHydrCalc();

	/**
	 *@brief 水力模拟计算
	 *@inpFile:inp文件
	 *@rptFile: 输出文件
	 *@binOutFile: 二进制输出文件
	 */
	bool hydrSimulation(char* inpFile, char* rptFile, char* binOutFile);

	/**
	 *@brief 水质模拟计算
	 *@inpFile:inp文件
	 *@rptFile: 输出文件
	 *@binOutFile: 二进制输出文件
	 */
	bool qualitySimulation(char* inpFile, char* rptFile, char* binOutFile);

	bool getDataByInterval( char* date, char* interval);

	/**
	*@brief 导出inp文件
	*/
	bool exportInp(char* fileName);

private:
	/**
	*@brief 解析表字段名，按顺序写入
	*@table:表
	*@inp: inp文件对象
	*/
	void assemble(const std::string& table, CivInp& inp);


	/*
	*@brief 获取节点计算结果
	*@time： 时间
	*/
	void getNodeResult(short time);

	/*
	*@brief 获取管线计算结果
	*@time： 时间
	*/
	void getLinkResult(short time);

	/*
	*@brief 获取节点的水质计算结果
	*@time： 时间
	*/
	void getNodeQuality(short time);

	/*
	*@brief 获取管线水值计算结果
	*@time： 时间
	*/
	void getLinkQuality(short time);

private:
	CivDbConnection* mDbConn;
	std::string mNetname;

	CivSimulResultCache mResultCache; // 存储模拟结果缓存类
};


