#ifndef CIVSIMULRESULTCACHE_H
#define CIVSIMULRESULTCACHE_H

#include <map>
#include <vector>
#include "CivSimuResStruct.h"

using namespace std;

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

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

	
	void addNodeChlorine(float quality, int interval, const string& sNo);

	void addLinkChlorine(float quality, int interval, const string& sNo);

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

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

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

	bool save(const string& uri);

	void getPipesSnsByQuality(std::vector<std::vector<std::string>>&);

	void getAllNodeCoords(const std::string& uri,NodeCoords& nodeCoords);
	void getAllPipeCoords(const std::string& uri,PipeCoords& pipeCoords);
	void getNodeItemByInterval(int time, NodeResultItems& nodeItem);
	void getPipeItemByInterval(int time, LinkResultItems& linkItem);
	void getCodeToSnMap(const string& uri);

private:
	map<int, NodeResultItems> mNodeItemsMap; // 模拟
	map<int, LinkResultItems> mLinkItemsMap; // 计算的
	map<int, TankResultItems> mTankItemsMap;

	map<string, string> mNodeCodeSnMap;
	map<string, string> mLineCodeSnMap;
};
#endif // !CIVSIMULRESULTCACHE_H
