#pragma once #include "DBBase.h" #include "OTSParticle.h" #include "OTSSegment.h" namespace OTSSQLITE { using namespace OTSDATA; using namespace OTSSQLITE; class __declspec(dllexport) CSegmentDB { public: CSegmentDB(CDBStoreBasePtr a_datastore); ~CSegmentDB(); COTSFeaturePtr GetFeatureById(const long a_nXrayId, const long a_nFieldId, const long a_nSegmentSize); COTSParticleList& GetParticleInfoList(const BOOL a_bForce = FALSE); BOOL SaveFeature(const COTSParticleList& a_ParticleList); BOOL SaveFeature(const COTSParticlePtr a_pParticle); BOOL DeleteFeatureById(const long a_nFieldId, const long a_nXrayId); virtual CDBTableBasePtr GetTableInfo() ; bool GetAllSegmentsRecord(std::map < std::vector , COTSSegmentsList>& mapSegments); virtual BOOL Init(const BOOL a_bClean = FALSE) ; virtual BOOL CreateTable(const BOOL a_bForce = FALSE) ; virtual BOOL DeleteTable() ; virtual BOOL RemoveAllRows() ; virtual BOOL IsDBExist() ; virtual CDBStoreBasePtr GetDatastore() ; virtual CDBQueryBasePtr GetTableQuery(LPCTSTR a_sOrderColumnName = nullptr) ; protected: BOOL ReadParticleInfoList(); COTSParticleList ReadParticleInfoList(CDBQueryBasePtr a_query); COTSParticlePtr ReadParticleInfo(CDBQueryBasePtr a_query); CDBQueryBasePtr GetQueryById(const long a_nXrayId, const long a_nFieldId, const long a_nSegmentId, const long a_nSegmentNum); CDBQueryBasePtr GetQueryOfAllRecord(); protected: CDBTableBasePtr m_tableInfo; COTSFeaturePtr m_pFeature; COTSParticleList m_listParticle; private: CDBBasePtr myDB; }; typedef std::shared_ptr __declspec(dllexport) CSegmentDBPtr; }