#pragma once
#include<string>
#include<vector>
#include<map>
#include "pandaDbManager.h"

#include "CivConnection.h"


class PANDADBMANAGER_API CivHydrTableHelper
{
public:

	explicit CivHydrTableHelper(const std::string& uri);
	~CivHydrTableHelper();

	bool mainTain();

	void getCodeToSn(const std::string& code, std::string& sn);
private:
	void updateAssem(const std::string& table, const std::string& filed, const std::string& prefix);
	bool topoMaintain();
	bool unTopoMaintain();
	bool unTopoTable(const std::string& table, const std::vector<std::string>& fields);
	/**
	*@brief 维护线图层与点图层表之间的拓扑维护关系
	*@param lineTable 线图层表
	*@param pointTable 点图层表
	*@param linesn 线图层字段
	*@param pointSn 点图层字段
	*@param code 线图层标识
	*/
	bool topoMainTable(const std::string& lineTable,
		const std::string& pointTable,
		const std::string& linesn,
		const std::string& pointSn,
		const std::string& code);
	/**
	 *@brief 拓扑维护阀门，需要特殊处理
	 */
	bool topoValve(const std::string& sn,const std::string& fromcode,const std::string& tocode );

	bool topoLikelyPipe(const std::string& pipeTable, const std::string& nodeTable, 
		const std::string& filed, const std::string& tocode);
private:
	std::vector<std::string> mNecessTables;
	std::map<std::string, std::string> mNeedTableMap;
	std::string mErrInfo;

	CivConnection* mConn;
};
