BmnRoot
Loading...
Searching...
No Matches
ElogTrigger.cxx
Go to the documentation of this file.
1// ----------------------------------------------------------------------
2// ElogTrigger cxx file
3// Generated 27-11-2017
4// ----------------------------------------------------------------------
5
6#include "ElogTrigger.h"
7
8#include "TSQLServer.h"
9#include "TSQLStatement.h"
10
11#include <iostream>
12using namespace std;
13
14/* GENERATED CLASS MEMBERS (SHOULD NOT BE CHANGED MANUALLY) */
15// ----- Constructor with database connection -----------------------
16ElogTrigger::ElogTrigger(ElogConnection* db_connect, int trigger_id, TString trigger_info, bool is_active)
17{
18 connectionDB = db_connect;
19
20 i_trigger_id = trigger_id;
21 str_trigger_info = trigger_info;
22 b_is_active = is_active;
23}
24
25// ----- Destructor -------------------------------------------------
27{
28 if (connectionDB)
29 delete connectionDB;
30}
31
32// ----- Creating new trigger in the database ---------------------------
33ElogTrigger* ElogTrigger::CreateTrigger(TString trigger_info, bool is_active)
34{
36 if (connDb == nullptr)
37 return nullptr;
38
39 TSQLServer* db_server = connDb->GetSQLServer();
40
41 TString sql = TString::Format("insert into trigger_(trigger_info, is_active) "
42 "values ($1, $2)");
43 TSQLStatement* stmt = db_server->Statement(sql);
44
45 stmt->NextIteration();
46 stmt->SetString(0, trigger_info);
47 stmt->SetInt(1, is_active);
48
49 // inserting new trigger to the Database
50 if (!stmt->Process()) {
51 cout << "ERROR: inserting new trigger to the Database has been failed" << endl;
52 delete stmt;
53 delete connDb;
54 return nullptr;
55 }
56
57 delete stmt;
58
59 // getting last inserted ID
60 int trigger_id;
61 TSQLStatement* stmt_last = db_server->Statement("SELECT currval(pg_get_serial_sequence('trigger_','trigger_id'))");
62
63 // process getting last id
64 if (stmt_last->Process()) {
65 // store result of statement in buffer
66 stmt_last->StoreResult();
67
68 // if there is no last id then exit with error
69 if (!stmt_last->NextResultRow()) {
70 cout << "ERROR: no last ID in DB!" << endl;
71 delete stmt_last;
72 return nullptr;
73 } else {
74 trigger_id = stmt_last->GetInt(0);
75 delete stmt_last;
76 }
77 } else {
78 cout << "ERROR: getting last ID has been failed!" << endl;
79 delete stmt_last;
80 return nullptr;
81 }
82
83 int tmp_trigger_id;
84 tmp_trigger_id = trigger_id;
85 TString tmp_trigger_info;
86 tmp_trigger_info = trigger_info;
87 bool tmp_is_active;
88 tmp_is_active = is_active;
89
90 return new ElogTrigger(connDb, tmp_trigger_id, tmp_trigger_info, tmp_is_active);
91}
92
93// ----- Get trigger from the database ---------------------------
95{
97 if (connDb == nullptr)
98 return nullptr;
99
100 TSQLServer* db_server = connDb->GetSQLServer();
101
102 TString sql = TString::Format("select trigger_id, trigger_info, is_active "
103 "from trigger_ "
104 "where trigger_id = %d",
105 trigger_id);
106 TSQLStatement* stmt = db_server->Statement(sql);
107
108 // get trigger from the database
109 if (!stmt->Process()) {
110 cout << "ERROR: getting trigger from the database has been failed" << endl;
111
112 delete stmt;
113 delete connDb;
114 return nullptr;
115 }
116
117 // store result of statement in buffer
118 stmt->StoreResult();
119
120 // extract row
121 if (!stmt->NextResultRow()) {
122 cout << "ERROR: trigger was not found in the database" << endl;
123
124 delete stmt;
125 delete connDb;
126 return nullptr;
127 }
128
129 int tmp_trigger_id;
130 tmp_trigger_id = stmt->GetInt(0);
131 TString tmp_trigger_info;
132 tmp_trigger_info = stmt->GetString(1);
133 bool tmp_is_active;
134 tmp_is_active = stmt->GetInt(2);
135
136 delete stmt;
137
138 return new ElogTrigger(connDb, tmp_trigger_id, tmp_trigger_info, tmp_is_active);
139}
140
141// ----- Get trigger from the database by unique key --------------
143{
145 if (connDb == nullptr)
146 return nullptr;
147
148 TSQLServer* db_server = connDb->GetSQLServer();
149
150 TString sql = TString::Format("select trigger_id, trigger_info, is_active "
151 "from trigger_ "
152 "where lower(trigger_info) = lower('%s')",
153 trigger_info.Data());
154 TSQLStatement* stmt = db_server->Statement(sql);
155
156 // get trigger from the database
157 if (!stmt->Process()) {
158 cout << "ERROR: getting trigger from the database has been failed" << endl;
159
160 delete stmt;
161 delete connDb;
162 return nullptr;
163 }
164
165 // store result of statement in buffer
166 stmt->StoreResult();
167
168 // extract row
169 if (!stmt->NextResultRow()) {
170 cout << "ERROR: trigger was not found in the database" << endl;
171
172 delete stmt;
173 delete connDb;
174 return nullptr;
175 }
176
177 int tmp_trigger_id;
178 tmp_trigger_id = stmt->GetInt(0);
179 TString tmp_trigger_info;
180 tmp_trigger_info = stmt->GetString(1);
181 bool tmp_is_active;
182 tmp_is_active = stmt->GetInt(2);
183
184 delete stmt;
185
186 return new ElogTrigger(connDb, tmp_trigger_id, tmp_trigger_info, tmp_is_active);
187}
188
189// ----- Check trigger exists in the database ---------------------------
191{
193 if (connDb == nullptr)
194 return -1;
195
196 TSQLServer* db_server = connDb->GetSQLServer();
197
198 TString sql = TString::Format("select 1 "
199 "from trigger_ "
200 "where trigger_id = %d",
201 trigger_id);
202 TSQLStatement* stmt = db_server->Statement(sql);
203
204 // get trigger from the database
205 if (!stmt->Process()) {
206 cout << "ERROR: getting trigger from the database has been failed" << endl;
207
208 delete stmt;
209 delete connDb;
210 return -2;
211 }
212
213 // store result of statement in buffer
214 stmt->StoreResult();
215
216 // extract row
217 if (!stmt->NextResultRow()) {
218 delete stmt;
219 delete connDb;
220 return 0;
221 }
222
223 delete stmt;
224 delete connDb;
225
226 return 1;
227}
228
229// ----- Check trigger exists in the database by unique key --------------
230int ElogTrigger::CheckTriggerExists(TString trigger_info)
231{
233 if (connDb == nullptr)
234 return -1;
235
236 TSQLServer* db_server = connDb->GetSQLServer();
237
238 TString sql = TString::Format("select 1 "
239 "from trigger_ "
240 "where lower(trigger_info) = lower('%s')",
241 trigger_info.Data());
242 TSQLStatement* stmt = db_server->Statement(sql);
243
244 // get trigger from the database
245 if (!stmt->Process()) {
246 cout << "ERROR: getting trigger from the database has been failed" << endl;
247
248 delete stmt;
249 delete connDb;
250 return -2;
251 }
252
253 // store result of statement in buffer
254 stmt->StoreResult();
255
256 // extract row
257 if (!stmt->NextResultRow()) {
258 delete stmt;
259 delete connDb;
260 return 0;
261 }
262
263 delete stmt;
264 delete connDb;
265
266 return 1;
267}
268
269// ----- Delete trigger from the database ---------------------------
270int ElogTrigger::DeleteTrigger(int trigger_id)
271{
273 if (connDb == nullptr)
274 return -1;
275
276 TSQLServer* db_server = connDb->GetSQLServer();
277
278 TString sql = TString::Format("delete from trigger_ "
279 "where trigger_id = $1");
280 TSQLStatement* stmt = db_server->Statement(sql);
281
282 stmt->NextIteration();
283 stmt->SetInt(0, trigger_id);
284
285 // delete trigger from the dataBase
286 if (!stmt->Process()) {
287 cout << "ERROR: deleting trigger from the dataBase has been failed" << endl;
288
289 delete stmt;
290 delete connDb;
291 return -2;
292 }
293
294 delete stmt;
295 delete connDb;
296 return 0;
297}
298
299// ----- Delete trigger from the database by unique key --------------
300int ElogTrigger::DeleteTrigger(TString trigger_info)
301{
303 if (connDb == nullptr)
304 return -1;
305
306 TSQLServer* db_server = connDb->GetSQLServer();
307
308 TString sql = TString::Format("delete from trigger_ "
309 "where lower(trigger_info) = lower($1)");
310 TSQLStatement* stmt = db_server->Statement(sql);
311
312 stmt->NextIteration();
313 stmt->SetString(0, trigger_info);
314
315 // delete trigger from the dataBase
316 if (!stmt->Process()) {
317 cout << "ERROR: deleting trigger from the DataBase has been failed" << endl;
318
319 delete stmt;
320 delete connDb;
321 return -2;
322 }
323
324 delete stmt;
325 delete connDb;
326 return 0;
327}
328
329// ----- Print all 'triggers' ---------------------------------
331{
333 if (connDb == nullptr)
334 return -1;
335
336 TSQLServer* db_server = connDb->GetSQLServer();
337
338 TString sql = TString::Format("select trigger_id, trigger_info, is_active "
339 "from trigger_");
340 TSQLStatement* stmt = db_server->Statement(sql);
341
342 // get all 'triggers' from the database
343 if (!stmt->Process()) {
344 cout << "ERROR: getting all 'triggers' from the dataBase has been failed" << endl;
345
346 delete stmt;
347 delete connDb;
348 return -2;
349 }
350
351 // store result of statement in buffer
352 stmt->StoreResult();
353
354 // print rows
355 cout << "Table 'trigger_':" << endl;
356 while (stmt->NextResultRow()) {
357 cout << "trigger_id: ";
358 cout << (stmt->GetInt(0));
359 cout << ", trigger_info: ";
360 cout << (stmt->GetString(1));
361 cout << ", is_active: ";
362 cout << (stmt->GetInt(2));
363 cout << "." << endl;
364 }
365
366 delete stmt;
367 delete connDb;
368
369 return 0;
370}
371
372// Setters functions
373int ElogTrigger::SetTriggerInfo(TString trigger_info)
374{
375 if (!connectionDB) {
376 cout << "CRITICAL ERROR: Connection object is null" << endl;
377 return -1;
378 }
379
380 TSQLServer* db_server = connectionDB->GetSQLServer();
381
382 TString sql = TString::Format("update trigger_ "
383 "set trigger_info = $1 "
384 "where trigger_id = $2");
385 TSQLStatement* stmt = db_server->Statement(sql);
386
387 stmt->NextIteration();
388 stmt->SetString(0, trigger_info);
389 stmt->SetInt(1, i_trigger_id);
390
391 // write new value to the database
392 if (!stmt->Process()) {
393 cout << "ERROR: updating information about trigger has been failed" << endl;
394
395 delete stmt;
396 return -2;
397 }
398
399 str_trigger_info = trigger_info;
400
401 delete stmt;
402 return 0;
403}
404
405int ElogTrigger::SetIsActive(bool is_active)
406{
407 if (!connectionDB) {
408 cout << "CRITICAL ERROR: Connection object is null" << endl;
409 return -1;
410 }
411
412 TSQLServer* db_server = connectionDB->GetSQLServer();
413
414 TString sql = TString::Format("update trigger_ "
415 "set is_active = $1 "
416 "where trigger_id = $2");
417 TSQLStatement* stmt = db_server->Statement(sql);
418
419 stmt->NextIteration();
420 stmt->SetInt(0, is_active);
421 stmt->SetInt(1, i_trigger_id);
422
423 // write new value to the database
424 if (!stmt->Process()) {
425 cout << "ERROR: updating information about trigger has been failed" << endl;
426
427 delete stmt;
428 return -2;
429 }
430
431 b_is_active = is_active;
432
433 delete stmt;
434 return 0;
435}
436
437// ----- Print current trigger ---------------------------------------
439{
440 cout << "Table 'trigger_'";
441 cout << ". trigger_id: " << i_trigger_id << ". trigger_info: " << str_trigger_info << ". is_active: " << b_is_active
442 << endl;
443
444 return;
445}
446/* END OF GENERATED CLASS PART (SHOULD NOT BE CHANGED MANUALLY) */
static ElogConnection * Open()
TSQLServer * GetSQLServer()
static int PrintAll()
print all triggers
int SetTriggerInfo(TString trigger_info)
set trigger info of the current trigger
static int CheckTriggerExists(int trigger_id)
check trigger exists in the database: 1- true, 0 - false, <0 - database operation error
static ElogTrigger * GetTrigger(int trigger_id)
get trigger from the database
static int DeleteTrigger(int trigger_id)
delete trigger from the database
void Print()
print information about current trigger
virtual ~ElogTrigger()
static ElogTrigger * CreateTrigger(TString trigger_info, bool is_active)
add new trigger to the database
int SetIsActive(bool is_active)
set is active of the current trigger
STL namespace.