#include "stdafx.h" #include "DBStoreFile.h" #include "DBStoreBase.h" namespace OTSSQLITE { CString CDBStoreFile::GetFileName() { ASSERT(m_datastorePtr); if (!m_datastorePtr) { return _T(""); } return m_datastorePtr->GetFileName(); } CDBStoreBasePtr CDBStoreFile::GetDatastore() { if (!m_datastorePtr) { m_datastorePtr = CreateNewSQLiteStore(); } ASSERT(m_datastorePtr); return m_datastorePtr; } CGenInfoDBPtr CDBStoreFile::GetGeneralInfoDB() { if (!m_generalInfoTable) { auto datastorePtr = GetDatastore(); if (datastorePtr) { m_generalInfoTable.reset(new CGenInfoDB(datastorePtr)); } } ASSERT(m_generalInfoTable); return m_generalInfoTable; } CString CDBStoreFile::GetFileVersion() { auto generalInfoTable = GetGeneralInfoDB(); if (generalInfoTable && generalInfoTable->IsDBExist()) { return generalInfoTable->GetFileVersion(); } return _T(""); } BOOL CDBStoreFile::Open(LPCTSTR a_sFileName, const BOOL a_bForce /*= TRUE*/) { Close(); auto datastorePtr = GetDatastore(); return datastorePtr->Open(a_sFileName, a_bForce); } BOOL CDBStoreFile::Create(LPCTSTR a_sFileName, const BOOL a_bOverwrite /*= FALSE*/) { Close(); auto datastorePtr = GetDatastore(); if (datastorePtr->Create(a_sFileName, a_bOverwrite)) { return InitFile(); } ASSERT(FALSE); return FALSE; } BOOL CDBStoreFile::IsOpened() { if (m_datastorePtr) { return m_datastorePtr->IsOpened(); } return FALSE; } BOOL CDBStoreFile::InitFile() { auto generalInfoTable = GetGeneralInfoDB(); ASSERT(generalInfoTable); if (!generalInfoTable) { return FALSE; } return generalInfoTable->Init(); } }