#pragma once
#include<string>
#include<set>  
#include "CivInp.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);

	/**
	*@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 获取运行过程产生的错误
	*/
	std::string getLastError() { return mLastError; }

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


