ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
database_manager.h
1 //===========================================================================
2 #ifndef comfrm_DatabaseManagerH
3 #define comfrm_DatabaseManagerH
4 //===========================================================================
5 // Заготовка модуля DatabaseManager была сгенерирована CASE средством разработки SA2-DE.
6 // Все права защищены. (2015)
7 //
8 // В данном файле представлен исходный текст основного заголовочного файла модуля.
9 //
10 // ======================================= //
11 // Параметры новой разработки.
12 // ======================================= //
13 // Имя комплекса: GCAD (gcd)
14 // Имя решения: GCAD3 (gc3) (прочерк если модуль относится лишь к комплексу)
15 // Имя проекта: Client (cli) (прочерк если модуль относится лишь к решению)
16 // Полный SID: cligc3
17 // Время создания: 17:19:51
18 // Дата создания: 2015-09-27
19 // ======================================= //
20 // ============================================================================================ //
21 // Параметры ревизии(версии):
22 // ============================================================================================ //
23 // [prd]Period: 10/2012
24 // [aut]Author: Антон Першин
25 // [did]DeveloperID: ap
26 // [pid]ProblemID: 00001
27 // [rvs = did.date.pid]Revision: //#ap.2012-10-08.00001
28 // [dsc]Description: Класс для работы с таблицами БД и xdbt-файлами.
29 // [ccm]CodeComment: rvs.{[s]Start | [e]End | []}{[n]New | [o]Old | [d]Develop}
30 // ============================================================================================ //
31 //========================================================================
32 // ДОПОЛНИТЕЛЬНЫЕ ПОДКЛЮЧЕНИЯ (Типы и модули, необходимые для .h - файла)
33 //------------------------------------------------------------------------
34 #include "sqltable.h"
35 #include "tree.h"
36 #include "libtools.h"
37 #include "anymap.h"
38 
39 #include <vector>
40 #include <boost/function.hpp>
41 #include <boost/shared_ptr.hpp>
42 #include <boost/asio.hpp>
43 
44 
45 //========================================================================
46 namespace com {
47  namespace sys {
48  class DatabaseAccess;
49 
56  class MAC_DLLEXPORT DatabaseManager
57  {
58  public:
60  typedef std::function< void (std::shared_ptr<com::sql::SqlTable>) > OnTableReceivedClb;
61 
63  typedef std::function< void (bool) > OnCacheReadyClb;
64 
65  public:
71  DatabaseManager(const std::string& defaultDD, std::unique_ptr<DatabaseAccess> defaultDbAccess,
72  const std::string& user, const std::string& psw, boost::asio::io_service& ioservice);
73  virtual ~DatabaseManager();
74 
76  void requestTable(const std::string& table, OnTableReceivedClb clb, bool isCached = false);
77 
80  void executeSqlRequest(const std::string& request, OnTableReceivedClb clb, const std::string& db = "");
81 
83  std::shared_ptr<com::sql::SqlTable> getTable(const std::string& table);
84 
86  virtual void cacheTables(const std::vector<std::string>& tables, DatabaseManager::OnCacheReadyClb clb);
87 
89  void addDatabase(const std::string& dd, std::unique_ptr<DatabaseAccess> dbAccess);
90 
92  void setDefaultAuth(const std::string& user, const std::string& psw);
93 
94  protected:
95  virtual void processReceivedTable(std::shared_ptr<com::sql::SqlTable> table);
96  virtual void checkCache(DatabaseManager::OnCacheReadyClb clb, const std::vector<std::string>& checkList,
97  std::shared_ptr<com::sql::SqlTable> table);
98  std::tuple<std::string, std::string, std::string> parseTableName(const std::string& table);
99  std::string getFullTableName(const std::string& table);
100 
101  private:
102  void onTableLoaded(OnTableReceivedClb clb, bool isCached, const std::string& dd,
103  std::shared_ptr<com::sql::SqlTable> table);
104  protected:
105  std::map< std::string, std::unique_ptr<DatabaseAccess> > m_databases;
106  std::map< std::string, std::shared_ptr<com::sql::SqlTable> > m_cachedTables;
107  boost::asio::io_service& m_ioservice;
108  std::string m_defaultUser;
109  std::string m_defaultPassword;
110  std::string m_defaultDD;
111  };
112  }
113 }
114 //===========================================================================
115 #endif
116 //===========================================================================
std::function< void(bool) > OnCacheReadyClb
Тип коллбэка на готовность кэширования
Definition: database_manager.h:63
Интерфейс менеджера баз данных
Definition: database_manager.h:56
std::function< void(std::shared_ptr< com::sql::SqlTable >) > OnTableReceivedClb
Тип коллбэка на получение таблицы
Definition: database_manager.h:60