#ifndef CIVSIMULRESULTCACHE_H
#define CIVSIMULRESULTCACHE_H

#include <map>
#include "CivDbConn.h"
#include "CivDbConnection.h"
#include "CivTypes.h"

/**
     模拟结果缓存类
*/
class CivSimulResultCache
{
public:
	/**
	*@brief 缓存节点水质
	*@param quality：存储的值
	*@param interval：模拟第几次
	*@param sNo：本点号
	*/
	void addNodeQuality(float quality, int interval, Str sNo);

	/**
	*@brief 缓存管线水质
	*@param quality：存储的值
	*@param interval：模拟第几次
	*@param sNo：管线编号
	*/
	void addLinkQuality(float quality, int interval, Str sNo);

	/**
	*@brief 缓存节点水力模拟情况
	*@param nodeItem：节点水力结果值
	*/
	void addNodeItems(const NodeResultItem& nodeItem);

	/**
	*@brief 缓存管线水力模拟情况
	*@param linkItem：管线模拟结果
	*/
	void addLinkItems(const LinkResultItem& linkItem);

	/**
	*@brief 释放缓存的结果值
	*/
	void clear();

	/**
	*@brief 缓存数据更新到数据库
	*@param dbConn：数据库连接对象
	*/
	bool updateToDb(CivDbConnection* dbConn);

	bool updateToDb(CivDbConn* dbConn);

	/**
	*@brief 根据时段获取
	*@param time 时段
	*@param nodeItems 节点值集合
	*@param linkItems 管线值集合
	*/
	void getResultByTime(int time, NodeResultItems& nodeItems, LinkResultItems& linkItems);

private:
	std::map<int, NodeResultItems> mNodeItemsMap; // 模拟
	std::map<int, LinkResultItems> mLinkItemsMap; // 计算的
};
#endif // !CIVSIMULRESULTCACHE_H
