transactd 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/BUILD_UNIX-JA +174 -0
  3. data/BUILD_WIN-JA +256 -0
  4. data/CMakeLists.txt +96 -0
  5. data/COPYING +339 -0
  6. data/README +406 -0
  7. data/README-JA +424 -0
  8. data/bin/common/tdclc_32_1_0.dll +0 -0
  9. data/bin/common/tdclc_64_1_0.dll +0 -0
  10. data/build/common/check_for_link_iconv.cmake +73 -0
  11. data/build/common/copyifgreater.cmd +30 -0
  12. data/build/common/copyifgreater.js +290 -0
  13. data/build/common/get_boost_libs.cmake +106 -0
  14. data/build/common/get_ruby_path.cmake +115 -0
  15. data/build/common/options.cmake +127 -0
  16. data/build/common/smart_install.cmake +263 -0
  17. data/build/common/system.cmake +122 -0
  18. data/build/common/transactd.rc.in +52 -0
  19. data/build/common/transactd_cl_common.cmake +101 -0
  20. data/build/common/transactd_cl_output.cmake +93 -0
  21. data/build/common/transactd_common.cmake +237 -0
  22. data/build/common/transactd_required.cmake +28 -0
  23. data/build/swig/ruby/generate.cmake.in +35 -0
  24. data/build/swig/ruby/generate.cmd.in +19 -0
  25. data/build/swig/ruby/ruby.swg +101 -0
  26. data/build/swig/tdcl.i +188 -0
  27. data/build/tdclc/BUILDNUMBER.txt +1 -0
  28. data/build/tdclc/CMakeLists.txt +170 -0
  29. data/build/tdclc/tdclc_32.cbproj +181 -0
  30. data/build/tdclc/tdclc_64.cbproj +205 -0
  31. data/build/tdclcpp/BUILDNUMBER.txt +1 -0
  32. data/build/tdclcpp/CMakeLists.txt +142 -0
  33. data/build/tdclcpp/tdclcpp_bcb_32.cbproj +239 -0
  34. data/build/tdclcpp/tdclcpp_bcb_64.cbproj +304 -0
  35. data/build/tdclrb/BUILDNUMBER.txt +1 -0
  36. data/build/tdclrb/CMakeLists.txt +258 -0
  37. data/build/tdclrb/GEM_VERSION +3 -0
  38. data/build/tdclrb/bldgem/extconf.rb +123 -0
  39. data/build/tdclrb/gem/INSTALLLOG.win32 +9 -0
  40. data/build/tdclrb/gem/Makefile.win32-VS +65 -0
  41. data/build/tdclrb/gem/Makefile.win32-prebuilt +48 -0
  42. data/build/tdclrb/gem/detect.rb +31 -0
  43. data/build/tdclrb/gem/helper.rb +113 -0
  44. data/build/tdclrb/gem/transactd.rb +22 -0
  45. data/build/tdclrb/gem_output.cmake +44 -0
  46. data/source/bzs/db/IBlobBuffer.h +51 -0
  47. data/source/bzs/db/blobBuffer.h +177 -0
  48. data/source/bzs/db/blobStructs.h +85 -0
  49. data/source/bzs/db/engine/mysql/IReadRecords.h +52 -0
  50. data/source/bzs/db/engine/mysql/bookmark.h +195 -0
  51. data/source/bzs/db/engine/mysql/database.cpp +1882 -0
  52. data/source/bzs/db/engine/mysql/database.h +465 -0
  53. data/source/bzs/db/engine/mysql/dbManager.cpp +303 -0
  54. data/source/bzs/db/engine/mysql/dbManager.h +143 -0
  55. data/source/bzs/db/engine/mysql/errorMessage.cpp +75 -0
  56. data/source/bzs/db/engine/mysql/errorMessage.h +43 -0
  57. data/source/bzs/db/engine/mysql/fieldAccess.h +158 -0
  58. data/source/bzs/db/engine/mysql/mydebuglog.cpp +349 -0
  59. data/source/bzs/db/engine/mysql/mydebuglog.h +89 -0
  60. data/source/bzs/db/engine/mysql/mysqlInternal.h +171 -0
  61. data/source/bzs/db/engine/mysql/mysqlThd.cpp +169 -0
  62. data/source/bzs/db/engine/mysql/mysqlThd.h +35 -0
  63. data/source/bzs/db/engine/mysql/percentageKey.h +260 -0
  64. data/source/bzs/db/protocol/ICommandExecuter.h +49 -0
  65. data/source/bzs/db/protocol/hs/hsCommandExecuter.cpp +689 -0
  66. data/source/bzs/db/protocol/hs/hsCommandExecuter.h +228 -0
  67. data/source/bzs/db/protocol/tdap/btrDate.cpp +437 -0
  68. data/source/bzs/db/protocol/tdap/btrDate.h +227 -0
  69. data/source/bzs/db/protocol/tdap/client/bulkInsert.h +127 -0
  70. data/source/bzs/db/protocol/tdap/client/client.cpp +106 -0
  71. data/source/bzs/db/protocol/tdap/client/client.h +292 -0
  72. data/source/bzs/db/protocol/tdap/client/connMgr.cpp +144 -0
  73. data/source/bzs/db/protocol/tdap/client/connMgr.h +82 -0
  74. data/source/bzs/db/protocol/tdap/client/database.cpp +863 -0
  75. data/source/bzs/db/protocol/tdap/client/database.h +118 -0
  76. data/source/bzs/db/protocol/tdap/client/databaseFactory.cpp +100 -0
  77. data/source/bzs/db/protocol/tdap/client/dbDef.cpp +1640 -0
  78. data/source/bzs/db/protocol/tdap/client/dbDef.h +135 -0
  79. data/source/bzs/db/protocol/tdap/client/dllmain.cpp +434 -0
  80. data/source/bzs/db/protocol/tdap/client/errorMessage.cpp +92 -0
  81. data/source/bzs/db/protocol/tdap/client/errorMessage_ja.cpp +98 -0
  82. data/source/bzs/db/protocol/tdap/client/fieldDDF.cpp +174 -0
  83. data/source/bzs/db/protocol/tdap/client/fieldDDF.h +91 -0
  84. data/source/bzs/db/protocol/tdap/client/fileDDF.cpp +140 -0
  85. data/source/bzs/db/protocol/tdap/client/fileDDF.h +86 -0
  86. data/source/bzs/db/protocol/tdap/client/filter.cpp +527 -0
  87. data/source/bzs/db/protocol/tdap/client/filter.h +154 -0
  88. data/source/bzs/db/protocol/tdap/client/indexDDF.cpp +137 -0
  89. data/source/bzs/db/protocol/tdap/client/indexDDF.h +84 -0
  90. data/source/bzs/db/protocol/tdap/client/nsDatabase.cpp +724 -0
  91. data/source/bzs/db/protocol/tdap/client/nsDatabase.h +123 -0
  92. data/source/bzs/db/protocol/tdap/client/nsTable.cpp +899 -0
  93. data/source/bzs/db/protocol/tdap/client/nsTable.h +199 -0
  94. data/source/bzs/db/protocol/tdap/client/request.h +198 -0
  95. data/source/bzs/db/protocol/tdap/client/sharedData.cpp +58 -0
  96. data/source/bzs/db/protocol/tdap/client/sharedData.h +56 -0
  97. data/source/bzs/db/protocol/tdap/client/sqlBuilder.cpp +574 -0
  98. data/source/bzs/db/protocol/tdap/client/sqlBuilder.h +53 -0
  99. data/source/bzs/db/protocol/tdap/client/stringConverter.h +627 -0
  100. data/source/bzs/db/protocol/tdap/client/table.cpp +2613 -0
  101. data/source/bzs/db/protocol/tdap/client/table.h +221 -0
  102. data/source/bzs/db/protocol/tdap/client/trdboostapi.h +1096 -0
  103. data/source/bzs/db/protocol/tdap/client/trdboostapiInternal.h +179 -0
  104. data/source/bzs/db/protocol/tdap/client/trdclcppautolink.h +40 -0
  105. data/source/bzs/db/protocol/tdap/client/trnsctcl.def +11 -0
  106. data/source/bzs/db/protocol/tdap/myDateTime.cpp +500 -0
  107. data/source/bzs/db/protocol/tdap/mysql/characterset.cpp +184 -0
  108. data/source/bzs/db/protocol/tdap/mysql/characterset.h +60 -0
  109. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.cpp +284 -0
  110. data/source/bzs/db/protocol/tdap/mysql/databaseSchema.h +53 -0
  111. data/source/bzs/db/protocol/tdap/mysql/debuglog.cpp +383 -0
  112. data/source/bzs/db/protocol/tdap/mysql/debuglog.h +106 -0
  113. data/source/bzs/db/protocol/tdap/mysql/recordsetReader.h +680 -0
  114. data/source/bzs/db/protocol/tdap/mysql/request.h +202 -0
  115. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.cpp +1020 -0
  116. data/source/bzs/db/protocol/tdap/mysql/tdapCommandExecuter.h +141 -0
  117. data/source/bzs/db/protocol/tdap/tdapRequest.h +190 -0
  118. data/source/bzs/db/protocol/tdap/tdapSchema.cpp +295 -0
  119. data/source/bzs/db/protocol/tdap/tdapSchema.h +558 -0
  120. data/source/bzs/db/protocol/tdap/tdapcapi.h +423 -0
  121. data/source/bzs/db/transactd/appBuilderImple.h +55 -0
  122. data/source/bzs/db/transactd/appModule.cpp +183 -0
  123. data/source/bzs/db/transactd/appModule.h +80 -0
  124. data/source/bzs/db/transactd/connManager.cpp +201 -0
  125. data/source/bzs/db/transactd/connManager.h +60 -0
  126. data/source/bzs/db/transactd/connectionRecord.h +69 -0
  127. data/source/bzs/db/transactd/transactd.cpp +325 -0
  128. data/source/bzs/env/compiler.h +135 -0
  129. data/source/bzs/env/crosscompile.cpp +130 -0
  130. data/source/bzs/env/crosscompile.h +150 -0
  131. data/source/bzs/env/fileopen.h +36 -0
  132. data/source/bzs/env/mbcswchrLinux.cpp +40 -0
  133. data/source/bzs/env/mbcswchrLinux.h +88 -0
  134. data/source/bzs/env/tstring.h +183 -0
  135. data/source/bzs/example/changeSchema.cpp +117 -0
  136. data/source/bzs/example/changeSchema_c.cpp +78 -0
  137. data/source/bzs/example/connection_pool_c.cpp +171 -0
  138. data/source/bzs/example/createDatabase.cpp +305 -0
  139. data/source/bzs/example/createDatabase_c.cpp +202 -0
  140. data/source/bzs/example/deleteRecords.cpp +87 -0
  141. data/source/bzs/example/deleteRecords_c.cpp +57 -0
  142. data/source/bzs/example/dropDatabase.cpp +59 -0
  143. data/source/bzs/example/dropDatabase_c.cpp +34 -0
  144. data/source/bzs/example/insertRecords.cpp +212 -0
  145. data/source/bzs/example/insertRecords_c.cpp +153 -0
  146. data/source/bzs/example/readRecords.cpp +141 -0
  147. data/source/bzs/example/readRecords_c.cpp +107 -0
  148. data/source/bzs/example/updateRecords.cpp +99 -0
  149. data/source/bzs/example/updateRecords_c.cpp +71 -0
  150. data/source/bzs/example/update_with_transaction.cpp +104 -0
  151. data/source/bzs/example/update_with_transaction_c.cpp +80 -0
  152. data/source/bzs/netsvc/client/tcpClient.cpp +226 -0
  153. data/source/bzs/netsvc/client/tcpClient.h +489 -0
  154. data/source/bzs/netsvc/server/IAppModule.h +94 -0
  155. data/source/bzs/netsvc/server/iserver.h +65 -0
  156. data/source/bzs/netsvc/server/serverCpt.cpp +522 -0
  157. data/source/bzs/netsvc/server/serverCpt.h +88 -0
  158. data/source/bzs/netsvc/server/serverPipe.cpp +705 -0
  159. data/source/bzs/netsvc/server/serverPipe.h +96 -0
  160. data/source/bzs/netsvc/server/serverTpool.cpp +416 -0
  161. data/source/bzs/netsvc/server/serverTpool.h +84 -0
  162. data/source/bzs/rtl/benchmark.cpp +96 -0
  163. data/source/bzs/rtl/benchmark.h +65 -0
  164. data/source/bzs/rtl/datetime.cpp +375 -0
  165. data/source/bzs/rtl/datetime.h +53 -0
  166. data/source/bzs/rtl/debuglog.cpp +106 -0
  167. data/source/bzs/rtl/debuglog.h +97 -0
  168. data/source/bzs/rtl/exception.h +116 -0
  169. data/source/bzs/rtl/stl_uty.cpp +35 -0
  170. data/source/bzs/rtl/stl_uty.h +29 -0
  171. data/source/bzs/rtl/stringBuffers.cpp +101 -0
  172. data/source/bzs/rtl/stringBuffers.h +58 -0
  173. data/source/bzs/rtl/strtrim.cpp +135 -0
  174. data/source/bzs/rtl/strtrim.h +46 -0
  175. data/source/bzs/test/tdclatl/bench_tdclatl.js +445 -0
  176. data/source/bzs/test/tdclrb/bench_tdclcpp.rb +375 -0
  177. data/source/bzs/test/tdclrb/prepare.rb +226 -0
  178. data/source/bzs/test/tdclrb/transactd_datetime_spec.rb +172 -0
  179. data/source/bzs/test/tdclrb/transactd_kanjischema_spec.rb +208 -0
  180. data/source/bzs/test/tdclrb/transactd_spec.rb +1536 -0
  181. data/source/bzs/test/transactdBench/transactdBench.cpp +430 -0
  182. data/source/bzs/test/transactdBench/transactdBench2.cpp +342 -0
  183. data/source/bzs/test/trdclengn/test_trdclengn.cpp +2030 -0
  184. data/source/global/tdclatl/Database.cpp +503 -0
  185. data/source/global/tdclatl/Database.h +139 -0
  186. data/source/global/tdclatl/DbDef.cpp +242 -0
  187. data/source/global/tdclatl/DbDef.h +79 -0
  188. data/source/global/tdclatl/Field.cpp +92 -0
  189. data/source/global/tdclatl/Field.h +59 -0
  190. data/source/global/tdclatl/FieldDef.cpp +238 -0
  191. data/source/global/tdclatl/FieldDef.h +87 -0
  192. data/source/global/tdclatl/Flags.cpp +111 -0
  193. data/source/global/tdclatl/Flags.h +55 -0
  194. data/source/global/tdclatl/KeyDef.cpp +51 -0
  195. data/source/global/tdclatl/KeyDef.h +55 -0
  196. data/source/global/tdclatl/KeySegment.cpp +55 -0
  197. data/source/global/tdclatl/Table.cpp +600 -0
  198. data/source/global/tdclatl/Table.h +144 -0
  199. data/source/global/tdclatl/TableDef.cpp +291 -0
  200. data/source/global/tdclatl/TableDef.h +86 -0
  201. data/source/global/tdclatl/TdVersion.cpp +74 -0
  202. data/source/global/tdclatl/TdVersion.h +54 -0
  203. data/source/global/tdclatl/_IDatabaseEvents_CP.h +113 -0
  204. data/source/global/tdclatl/dllmain.cpp +30 -0
  205. data/source/global/tdclatl/dllmain.h +27 -0
  206. data/source/global/tdclatl/keySegment.h +57 -0
  207. data/source/global/tdclatl/resource.h +0 -0
  208. data/source/global/tdclatl/stdafx.cpp +2 -0
  209. data/source/global/tdclatl/stdafx.h +25 -0
  210. data/source/global/tdclatl/targetver.h +4 -0
  211. data/source/global/tdclatl/tdclatl.cpp +68 -0
  212. data/source/global/tdclatl/tdclatl.def +10 -0
  213. data/source/global/tdclatl/tdclatl.idl +1035 -0
  214. data/source/linux/charsetConvert.h +112 -0
  215. data/source/linux/linuxTypes.h +33 -0
  216. data/source/linux/tchar.h +428 -0
  217. data/transactd.gemspec +97 -0
  218. metadata +267 -0
@@ -0,0 +1,503 @@
1
+ /*=================================================================
2
+ Copyright (C) 2013 BizStation Corp All rights reserved.
3
+
4
+ This program is free software; you can redistribute it and/or
5
+ modify it under the terms of the GNU General Public License
6
+ as published by the Free Software Foundation; either version 2
7
+ of the License, or (at your option) any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17
+ 02111-1307, USA.
18
+ =================================================================*/
19
+ #include "stdafx.h"
20
+ #include "Database.h"
21
+ #include "DbDef.h"
22
+ #include "Table.h"
23
+ #include "TdVersion.h"
24
+
25
+ using namespace bzs::db::protocol::tdap::client;
26
+
27
+ STDMETHODIMP CDatabase::Open(BSTR Uri, eSchemaType SchemaType, eOpenMode Mode, BSTR Dir, BSTR Ownername, VARIANT_BOOL* Param6)
28
+ {
29
+ *Param6 = m_db->open(Uri, (short)SchemaType, Mode, Dir, Ownername);
30
+ return S_OK;
31
+ }
32
+
33
+ STDMETHODIMP CDatabase::get_DbDef(IDbDef** Value)
34
+ {
35
+
36
+ if (!m_db->dbDef())
37
+ return Error("database is not opened. ", IID_IDatabase);
38
+
39
+ CComObject<CDbDef>* dbDefObj;
40
+ CComObject<CDbDef>::CreateInstance(&dbDefObj);
41
+ if (dbDefObj)
42
+ {
43
+ dbDefObj->m_dbDef = m_db->dbDef();
44
+ m_IsAtatchOK = false;
45
+ IDbDef* dbdef;
46
+ dbDefObj->QueryInterface(IID_IDbDef, (void**)&dbdef);
47
+ _ASSERTE(dbdef);
48
+ *Value = dbdef;
49
+ }else
50
+ *Value = 0;
51
+
52
+
53
+ return S_OK;
54
+ }
55
+
56
+ STDMETHODIMP CDatabase::OpenTable(VARIANT TableID, eOpenMode Mode, VARIANT_BOOL AutoCreate, BSTR OwnerName, BSTR Uri,
57
+ ITable** ret)
58
+ {
59
+
60
+ if (!m_db->dbDef())
61
+ return Error("database is not opened. ", IID_IDatabase);
62
+
63
+ table* tb = NULL;
64
+ if (TableID.vt == VT_BSTR)
65
+ tb = m_db->openTable(TableID.bstrVal, Mode, (bool)AutoCreate, OwnerName, Uri);
66
+ else if ((TableID.vt == VT_I2) || (TableID.vt == VT_I4))
67
+ tb = m_db->openTable(TableID.iVal, Mode, (bool)AutoCreate, OwnerName, Uri);
68
+
69
+ if (tb == NULL)
70
+ return Error("Invalid tableid", IID_IDatabase);
71
+
72
+ CComObject<CTableTd>* ptb;
73
+ CComObject<CTableTd>::CreateInstance(&ptb);
74
+
75
+ if (ptb)
76
+ {
77
+ ptb->m_tb = tb;
78
+ ptb->m_db = m_db;
79
+ tb->setOptionalData((void*)ptb);
80
+ ITable* tb;
81
+ ptb->QueryInterface(IID_ITable, (void**)&tb);
82
+ _ASSERTE(tb);
83
+ *ret = tb;
84
+ m_IsAtatchOK = false;
85
+ }
86
+ else
87
+ *ret = NULL;
88
+
89
+ return S_OK;
90
+ }
91
+
92
+ STDMETHODIMP CDatabase::AtatchDatabase(__int64* nativeDatabase)
93
+ {
94
+ if ((nativeDatabase) && (m_IsAtatchOK))
95
+ {
96
+ bzs::db::protocol::tdap::client::database* nativePtr =
97
+ reinterpret_cast<bzs::db::protocol::tdap::client::database*>(nativeDatabase);
98
+ if (nativePtr)
99
+ {
100
+ Close();
101
+ m_db->release();
102
+ m_db = nativePtr;
103
+ return S_OK;
104
+ }
105
+ return Error("Can not get native database pointer.", IID_IDatabase);
106
+ }
107
+ return Error("Current database is already used.", IID_IDatabase);
108
+
109
+ }
110
+
111
+ STDMETHODIMP CDatabase::get_RootDir(BSTR* Value)
112
+ {
113
+ CComBSTR ret;
114
+ ret = m_db->rootDir();
115
+ *Value = ret.Copy();
116
+
117
+ return S_OK;
118
+ }
119
+
120
+ STDMETHODIMP CDatabase::put_RootDir(BSTR Value)
121
+ {
122
+ m_db->setRootDir(Value);
123
+ return S_OK;
124
+ }
125
+
126
+ STDMETHODIMP CDatabase::get_Stat(eStatus* Value)
127
+ {
128
+ *Value = (eStatus)m_db->stat();
129
+ return S_OK;
130
+ }
131
+
132
+ STDMETHODIMP CDatabase::AbortTrn()
133
+ {
134
+ m_db->abortTrn();
135
+ return S_OK;
136
+ }
137
+
138
+ STDMETHODIMP CDatabase::BeginTrn(eLockType bias)
139
+ {
140
+ m_db->beginTrn((short)bias);
141
+
142
+ return S_OK;
143
+ }
144
+
145
+ STDMETHODIMP CDatabase::EndTrn()
146
+ {
147
+ m_db->endTrn();
148
+ return S_OK;
149
+
150
+ }
151
+
152
+ STDMETHODIMP CDatabase::get_NativeDatabase(__int64** Value)
153
+ {
154
+ *Value = (__int64*)m_db;
155
+ return S_OK;
156
+ }
157
+
158
+ STDMETHODIMP CDatabase::BeginSnapshot()
159
+ {
160
+ m_db->beginSnapshot();
161
+ return S_OK;
162
+ }
163
+
164
+ STDMETHODIMP CDatabase::EndSnapshot()
165
+ {
166
+ m_db->endSnapshot();
167
+ return S_OK;
168
+ }
169
+
170
+ STDMETHODIMP CDatabase::Drop()
171
+ {
172
+ m_db->drop();
173
+ return S_OK;
174
+ }
175
+
176
+ STDMETHODIMP CDatabase::DropTable(BSTR TableName)
177
+ {
178
+ m_db->dropTable(TableName);
179
+
180
+ return S_OK;
181
+ }
182
+
183
+ STDMETHODIMP CDatabase::Create(BSTR URI, int type)
184
+ {
185
+ m_db->create(URI, type);
186
+ return S_OK;
187
+ }
188
+
189
+ STDMETHODIMP CDatabase::Close()
190
+ {
191
+ m_db->close();
192
+ return S_OK;
193
+ }
194
+
195
+ STDMETHODIMP CDatabase::Connect(BSTR URI, VARIANT_BOOL newConnection, VARIANT_BOOL* Value)
196
+
197
+ {
198
+ *Value = m_db->connect(URI, newConnection);
199
+ return S_OK;
200
+ }
201
+
202
+ STDMETHODIMP CDatabase::Disconnect(BSTR URI, VARIANT_BOOL* Param2)
203
+ {
204
+ *Param2 = m_db->disconnect(URI);
205
+ return S_OK;
206
+ }
207
+
208
+ STDMETHODIMP CDatabase::get_EnableTrn(VARIANT_BOOL* Value)
209
+ {
210
+ *Value = m_db->enableTrn();
211
+ return S_OK;
212
+ }
213
+
214
+ STDMETHODIMP CDatabase::GetBtrVersion(int index, ITdVersion** Value)
215
+ {
216
+ if ((index < 0) || (index > 2))
217
+ return Error("Invalid index", IID_IDatabase);
218
+ bzs::db::protocol::tdap::btrVersions vers;
219
+ m_db->getBtrVersion(&vers);
220
+
221
+ CComObject<CTdVersion> *ptb;
222
+ CComObject<CTdVersion>::CreateInstance(&ptb);
223
+ ptb->m_ver = vers.versions[index]; //not refarence. no need the this life time control
224
+ ITdVersion* tdVer;
225
+ ptb->QueryInterface(IID_ITdVersion, (void**)&tdVer);
226
+ _ASSERTE(tdVer);
227
+ *Value = tdVer;
228
+
229
+ return S_OK;
230
+ }
231
+
232
+ STDMETHODIMP CDatabase::IsTransactdUri(BSTR uri, VARIANT_BOOL* Value)
233
+ {
234
+ *Value = m_db->isTransactdUri(uri);
235
+ return S_OK;
236
+ }
237
+
238
+ STDMETHODIMP CDatabase::get_IsUseTransactd(VARIANT_BOOL* Value)
239
+ {
240
+ *Value = m_db->isUseTransactd();
241
+ return S_OK;
242
+ }
243
+
244
+ STDMETHODIMP CDatabase::SetUseTransactd()
245
+ {
246
+ m_db->setUseTransactd();
247
+ return S_OK;
248
+ }
249
+
250
+ STDMETHODIMP CDatabase::get_LocalSharing(VARIANT_BOOL* Value)
251
+ {
252
+ *Value = m_db->localSharing();
253
+ return S_OK;
254
+ }
255
+
256
+ STDMETHODIMP CDatabase::put_LocalSharing(VARIANT_BOOL Value)
257
+ {
258
+ m_db->setLocalSharing(Value);
259
+ return S_OK;
260
+ }
261
+
262
+ STDMETHODIMP CDatabase::get_LockWaitCount(VARIANT_BOOL* Value)
263
+ {
264
+ *Value = m_db->lockWaitCount();
265
+ return S_OK;
266
+ }
267
+
268
+ STDMETHODIMP CDatabase::put_LockWaitCount(VARIANT_BOOL Value)
269
+ {
270
+ m_db->setLockWaitCount(Value);
271
+ return S_OK;
272
+ }
273
+
274
+ STDMETHODIMP CDatabase::get_LockWaitTime(VARIANT_BOOL* Value)
275
+ {
276
+ *Value = m_db->lockWaitTime();
277
+ return S_OK;
278
+ }
279
+
280
+ STDMETHODIMP CDatabase::put_LockWaitTime(VARIANT_BOOL Value)
281
+ {
282
+ m_db->setLockWaitTime(Value);
283
+ return S_OK;
284
+ }
285
+
286
+ STDMETHODIMP CDatabase::get_UseLongFilename(VARIANT_BOOL* Value)
287
+ {
288
+ *Value = m_db->useLongFilename();
289
+ return S_OK;
290
+ }
291
+
292
+ STDMETHODIMP CDatabase::put_UseLongFilename(VARIANT_BOOL Value)
293
+ {
294
+ m_db->setUseLongFilename(Value);
295
+ return S_OK;
296
+ }
297
+
298
+ STDMETHODIMP CDatabase::get_OpenTableCount(short* Value)
299
+ {
300
+ *Value = m_db->openTableCount();
301
+ return S_OK;
302
+ }
303
+
304
+ STDMETHODIMP CDatabase::ReadDatabaseDirectory(BSTR* Value)
305
+ {
306
+ wchar_t tmp[255] =
307
+ {NULL};
308
+ m_db->readDatabaseDirectory(tmp, (uchar_td)255);
309
+ *Value = ::SysAllocString(tmp);
310
+ return S_OK;
311
+ }
312
+
313
+ STDMETHODIMP CDatabase::Rename(BSTR oldUri, BSTR newUri)
314
+ {
315
+ m_db->rename(oldUri, newUri);
316
+ return S_OK;
317
+ }
318
+
319
+ STDMETHODIMP CDatabase::get_Uri(BSTR* uri)
320
+ {
321
+ m_db->uri();
322
+ *uri = ::SysAllocString(m_db->uri());
323
+ return S_OK;
324
+ }
325
+
326
+ STDMETHODIMP CDatabase::TdapErr(OLE_HANDLE hWnd, BSTR* Value)
327
+ {
328
+ if (Value)
329
+ {
330
+ wchar_t tmp[512] =
331
+ {NULL};
332
+ m_db->tdapErr((HWND)hWnd, tmp);
333
+ *Value = ::SysAllocString(tmp);
334
+ }
335
+ else
336
+ m_db->tdapErr((HWND)hWnd);
337
+ return S_OK;
338
+
339
+ }
340
+
341
+
342
+
343
+ STDMETHODIMP CDatabase::Clone(IDatabase** Value)
344
+ {
345
+ CComObject<CDatabase> *ptb;
346
+ CComObject<CDatabase>::CreateInstance(&ptb);
347
+ HRESULT ret = ptb->AtatchDatabase((__int64*)m_db->clone());
348
+ if (ret==S_OK)
349
+ {
350
+ IDatabase* dbPtr;
351
+ ptb->QueryInterface(IID_IDatabase, (void**)&dbPtr);
352
+ _ASSERTE(dbPtr);
353
+ *Value = dbPtr;
354
+ return S_OK;
355
+ }
356
+ return ret;
357
+ }
358
+
359
+ STDMETHODIMP CDatabase::AssignSchemaData(IDbDef* Src, short* Value)
360
+ {
361
+ CDbDef* dbdef = NULL;
362
+ dbdef = dynamic_cast<CDbDef*>(Src);
363
+ _ASSERTE(dbdef);
364
+ m_db->assignSchemaData(dbdef->m_dbDef);
365
+ return S_OK;
366
+ }
367
+
368
+ STDMETHODIMP CDatabase::Continuous(eContinusOpr Op, VARIANT_BOOL inclideRepfile, eContinusStatus* Value)
369
+ {
370
+ *Value = (eContinusStatus)m_db->continuous((char_td)Op, inclideRepfile);
371
+ return S_OK;
372
+ }
373
+
374
+ STDMETHODIMP CDatabase::ConvertTable(short TableIndex, VARIANT_BOOL Turbo, BSTR OwnerName)
375
+ {
376
+ m_db->convertTable(TableIndex, Turbo, OwnerName);
377
+ return S_OK;
378
+ }
379
+
380
+ STDMETHODIMP CDatabase::CopyTableData(ITable* Dest, ITable* Src, VARIANT_BOOL Turbo,int Offset, short KeyNum
381
+ , int MaxSkip, short* Value)
382
+ {
383
+ CTableTd* dest = dynamic_cast<CTableTd*>(Dest);
384
+ CTableTd* src = dynamic_cast<CTableTd*>(Src);
385
+
386
+ _ASSERTE(dest);
387
+ _ASSERTE(dest);
388
+
389
+ *Value = m_db->copyTableData(dest->m_tb, src->m_tb, Turbo, KeyNum, MaxSkip);
390
+ return S_OK;
391
+ }
392
+
393
+ STDMETHODIMP CDatabase::CreateTable(short FileNum, BSTR Uri, VARIANT_BOOL* Value)
394
+ {
395
+ *Value = m_db->createTable(FileNum, Uri);
396
+ return S_OK;
397
+ }
398
+
399
+ STDMETHODIMP CDatabase::ExistsTableFile(short TableIndex, BSTR OwnerName)
400
+ {
401
+ m_db->existsTableFile(TableIndex, OwnerName);
402
+ return S_OK;
403
+
404
+ }
405
+
406
+ STDMETHODIMP CDatabase::GetTableUri(short FileNum, BSTR* Value)
407
+ {
408
+ wchar_t tmp[MAX_PATH]={NULL};
409
+ m_db->getTableUri(tmp, FileNum);
410
+ *Value = ::SysAllocString(tmp);
411
+ return S_OK;
412
+ }
413
+
414
+ STDMETHODIMP CDatabase::get_IsOpened(VARIANT_BOOL* Value)
415
+ {
416
+ *Value = m_db->isOpened();
417
+ return S_OK;
418
+ }
419
+
420
+ STDMETHODIMP CDatabase::get_TableReadOnly(VARIANT_BOOL* Value)
421
+ {
422
+ *Value = m_db->tableReadOnly();
423
+ return S_OK;
424
+ }
425
+
426
+ STDMETHODIMP CDatabase::put_TableReadOnly(VARIANT_BOOL Value)
427
+ {
428
+ m_db->setTableReadOnly(Value);
429
+ return S_OK;
430
+ }
431
+
432
+ STDMETHODIMP CDatabase::SwapTablename(BSTR Uri1, BSTR Uri2)
433
+ {
434
+ m_db->swapTablename(Uri1, Uri2);
435
+ return S_OK;
436
+
437
+ }
438
+
439
+ STDMETHODIMP CDatabase::get_ClientID(short* Value)
440
+ {
441
+ *Value = (short)m_db->clientID();
442
+ return S_OK;
443
+ }
444
+
445
+ STDMETHODIMP CDatabase::get_RefCount(int* Value)
446
+ {
447
+ *Value = m_db->refCount();
448
+ return S_OK;
449
+ }
450
+
451
+ STDMETHODIMP CDatabase::get_TrnsactionFlushWaitStatus(VARIANT_BOOL* Value)
452
+ {
453
+ *Value = database::trnsactionFlushWaitStatus();
454
+ return S_OK;
455
+ }
456
+
457
+ STDMETHODIMP CDatabase::put_ExecCodePage(unsigned int Value)
458
+ {
459
+ database::setExecCodePage(Value);
460
+ return S_OK;
461
+ }
462
+
463
+ STDMETHODIMP CDatabase::get_ExecCodePage(unsigned int* Value)
464
+ {
465
+ *Value = database::execCodePage();
466
+ return S_OK;
467
+ }
468
+
469
+ STDMETHODIMP CDatabase::get_MaxTables(int* Value)
470
+ {
471
+ *Value = database::maxtables ;
472
+ return S_OK;
473
+ }
474
+
475
+
476
+
477
+ void __stdcall onCopyData(database *db, int recordCount, int count, bool &cancel)
478
+ {
479
+ CDatabase* cdb = reinterpret_cast<CDatabase*>(db->optionalData());
480
+ IDatabase* dbPtr = dynamic_cast<IDatabase*>(cdb);
481
+ _ASSERTE(dbPtr);
482
+ VARIANT_BOOL tmp = 0;
483
+ cdb->Fire_OnCopyData(dbPtr, recordCount, count, &tmp);
484
+ if (tmp)
485
+ cancel = true;
486
+ }
487
+
488
+ bool __stdcall onDeleteRecord(database *db, table* tb, bool inkey)
489
+ {
490
+ CDatabase* cdb = reinterpret_cast<CDatabase*>(db->optionalData());
491
+ IDatabase* dbPtr = dynamic_cast<IDatabase*>(cdb);
492
+ _ASSERTE(dbPtr);
493
+
494
+ CTableTd* ctb = reinterpret_cast<CTableTd*>(tb->optionalData());
495
+ ITable* tbPtr = dynamic_cast<ITable*>(ctb);
496
+ _ASSERTE(tbPtr);
497
+
498
+ VARIANT_BOOL tmp = 0;
499
+ cdb->Fire_OnDeleteRecord(dbPtr, tbPtr, &tmp);
500
+ return (tmp != 0);
501
+
502
+ }
503
+
@@ -0,0 +1,139 @@
1
+ #pragma once
2
+ /*=================================================================
3
+ Copyright (C) 2013 BizStation Corp All rights reserved.
4
+
5
+ This program is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU General Public License
7
+ as published by the Free Software Foundation; either version 2
8
+ of the License, or (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
+ 02111-1307, USA.
19
+ =================================================================*/
20
+ #include "resource.h"
21
+ #include "tdclatl_i.h"
22
+ #include <bzs/db/protocol/tdap/client/database.h>
23
+ #include "_IDatabaseEvents_CP.H"
24
+
25
+
26
+
27
+ using namespace ATL;
28
+
29
+ class CDbDef;
30
+
31
+
32
+ void __stdcall onCopyData(bzs::db::protocol::tdap::client::database *db, int recordCount, int count, bool &cancel);
33
+ bool __stdcall onDeleteRecord(bzs::db::protocol::tdap::client::database *db,
34
+ bzs::db::protocol::tdap::client::table* tb, bool inkey);
35
+
36
+
37
+ class ATL_NO_VTABLE CDatabase :
38
+ public CComObjectRootEx<CComSingleThreadModel>,
39
+ public CComCoClass<CDatabase, &CLSID_Database>,
40
+ public IDispatchImpl<IDatabase, &IID_IDatabase, &LIBID_transactd, /* wMajor = */ 1, /* wMinor = */ 0>,
41
+ public IConnectionPointContainerImpl<CDatabase>,
42
+ public CProxy_IDatabaseEvents<CDatabase>
43
+
44
+ {
45
+ bzs::db::protocol::tdap::client::database* m_db;
46
+ bool m_IsAtatchOK;
47
+
48
+ public:
49
+ CDatabase()
50
+ {
51
+ m_db = bzs::db::protocol::tdap::client::database::create();
52
+ m_IsAtatchOK = true;
53
+ m_db->setOptionalData(this);
54
+ m_db->setOnCopyData(onCopyData);
55
+ m_db->setOnDeleteRecord(onDeleteRecord);
56
+ }
57
+
58
+ DECLARE_REGISTRY_RESOURCEID(IDR_DATABASE)
59
+
60
+ BEGIN_COM_MAP(CDatabase)
61
+ COM_INTERFACE_ENTRY(IDatabase)
62
+ COM_INTERFACE_ENTRY(IDispatch)
63
+ COM_INTERFACE_ENTRY(IConnectionPointContainer)
64
+ END_COM_MAP()
65
+
66
+ BEGIN_CONNECTION_POINT_MAP(CDatabase)
67
+ CONNECTION_POINT_ENTRY(__uuidof(_IDatabaseEvents))
68
+ END_CONNECTION_POINT_MAP()
69
+
70
+ DECLARE_PROTECT_FINAL_CONSTRUCT()
71
+
72
+ HRESULT FinalConstruct() {return S_OK;}
73
+
74
+ void FinalRelease(){if (m_db) m_db->release();};
75
+ public:
76
+
77
+ STDMETHOD(Open)(BSTR Uri, eSchemaType SchemaType, eOpenMode Mode, BSTR Dir, BSTR Ownername, VARIANT_BOOL* Param6);
78
+ STDMETHOD(get_DbDef)(IDbDef** Value);
79
+ STDMETHOD(OpenTable)(VARIANT TableID, eOpenMode Mode, VARIANT_BOOL AutoCreate, BSTR OwnerName, BSTR Uri, ITable** ret);
80
+ STDMETHOD(AtatchDatabase)(__int64* nativeDatabase);
81
+ STDMETHOD(get_RootDir)(BSTR* Value);
82
+ STDMETHOD(put_RootDir)(BSTR Value);
83
+ STDMETHOD(get_Stat)(eStatus* Value);
84
+ STDMETHOD(AbortTrn)();
85
+ STDMETHOD(BeginTrn)(eLockType bias);
86
+ STDMETHOD(EndTrn)();
87
+ STDMETHOD(BeginSnapshot)();
88
+ STDMETHOD(EndSnapshot)();
89
+ STDMETHOD(get_NativeDatabase)(__int64** Value);
90
+
91
+ STDMETHOD(Drop)();
92
+ STDMETHOD(DropTable)(BSTR TableName);
93
+ STDMETHOD(Create)(BSTR URI, int type);
94
+ STDMETHOD(Close)();
95
+ STDMETHOD(Connect)(BSTR URI, VARIANT_BOOL newConnection, VARIANT_BOOL* Value);
96
+ STDMETHOD(Disconnect)(BSTR URI, VARIANT_BOOL* Param2);
97
+ STDMETHOD(get_EnableTrn)(VARIANT_BOOL* Value);
98
+ STDMETHOD(GetBtrVersion)(int index, ITdVersion** ver);
99
+
100
+ STDMETHOD(IsTransactdUri)(BSTR uri, VARIANT_BOOL* Value);
101
+ STDMETHOD(get_IsUseTransactd)(VARIANT_BOOL* Value);
102
+ STDMETHOD(SetUseTransactd)(void);
103
+ STDMETHOD(get_LocalSharing)(VARIANT_BOOL* Value);
104
+ STDMETHOD(put_LocalSharing)(VARIANT_BOOL Value);
105
+ STDMETHOD(get_LockWaitCount)(VARIANT_BOOL* Value);
106
+ STDMETHOD(put_LockWaitCount)(VARIANT_BOOL Value);
107
+ STDMETHOD(get_LockWaitTime)(VARIANT_BOOL* Value);
108
+ STDMETHOD(put_LockWaitTime)(VARIANT_BOOL Value);
109
+ STDMETHOD(get_UseLongFilename)(VARIANT_BOOL* Value);
110
+ STDMETHOD(put_UseLongFilename)(VARIANT_BOOL Value);
111
+ STDMETHOD(get_OpenTableCount)(short* Value);
112
+ STDMETHOD(ReadDatabaseDirectory)(BSTR* Value);
113
+ STDMETHOD(Rename)(BSTR oldUri, BSTR newUri);
114
+ STDMETHOD(get_Uri)(BSTR* uri);
115
+ STDMETHOD(TdapErr)(OLE_HANDLE hWnd, BSTR* Value);
116
+ STDMETHOD(Clone)(IDatabase** Value);
117
+ STDMETHOD(AssignSchemaData)(IDbDef* Src, short* Value);
118
+ STDMETHOD(Continuous)(eContinusOpr Op, VARIANT_BOOL inclideRepfile, eContinusStatus* Value);
119
+ STDMETHOD(ConvertTable)(short TableIndex, VARIANT_BOOL Turbo, BSTR OwnerName);
120
+ STDMETHOD(CopyTableData)(ITable* Dest, ITable* Src, VARIANT_BOOL Turbo, int Offset, short KeyNum, int MaxSkip, short* Value);
121
+ STDMETHOD(CreateTable)(short FileNum, BSTR Uri, VARIANT_BOOL* Value);
122
+ STDMETHOD(ExistsTableFile)(short TableIndex, BSTR OwnerName);
123
+ STDMETHOD(GetTableUri)(short FileNum, BSTR* Value);
124
+ STDMETHOD(get_IsOpened)(VARIANT_BOOL* Value);
125
+ STDMETHOD(get_TableReadOnly)(VARIANT_BOOL* Value);
126
+ STDMETHOD(put_TableReadOnly)(VARIANT_BOOL Value);
127
+ STDMETHOD(SwapTablename)(BSTR Uri1, BSTR Uri2);
128
+ STDMETHOD(get_ClientID)(short* Value);
129
+ STDMETHOD(get_RefCount)(int* Value);
130
+ STDMETHOD(get_TrnsactionFlushWaitStatus)(VARIANT_BOOL* Value);
131
+ STDMETHOD(put_ExecCodePage)(unsigned int Value);
132
+ STDMETHOD(get_ExecCodePage)(unsigned int* Value);
133
+ STDMETHOD(get_MaxTables)( int* Value);
134
+
135
+
136
+
137
+ };
138
+
139
+ OBJECT_ENTRY_AUTO(__uuidof(Database), CDatabase)