BmnRoot
Loading...
Searching...
No Matches
UniParameter.cxx
Go to the documentation of this file.
1// ----------------------------------------------------------------------
2// UniParameter cxx file
3// Generated 05-11-2015
4// ----------------------------------------------------------------------
5
6#include "UniParameter.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 -----------------------
16UniParameter::UniParameter(UniConnection* db_connect,
17 int parameter_id,
18 TString parameter_name,
19 int parameter_type,
20 bool is_array)
21{
22 connectionDB = db_connect;
23
24 i_parameter_id = parameter_id;
25 str_parameter_name = parameter_name;
26 i_parameter_type = parameter_type;
27 b_is_array = is_array;
28}
29
30// ----- Destructor -------------------------------------------------
32{
33 if (connectionDB)
34 delete connectionDB;
35}
36
37// ----- Creating new parameter in the database ---------------------------
38UniParameter* UniParameter::CreateParameter(TString parameter_name, int parameter_type, bool is_array)
39{
41 if (connDb == nullptr)
42 return nullptr;
43
44 TSQLServer* db_server = connDb->GetSQLServer();
45
46 TString sql = TString::Format("insert into parameter_(parameter_name, parameter_type, is_array) "
47 "values ($1, $2, $3)");
48 TSQLStatement* stmt = db_server->Statement(sql);
49
50 stmt->NextIteration();
51 stmt->SetString(0, parameter_name);
52 stmt->SetInt(1, parameter_type);
53 stmt->SetInt(2, is_array);
54
55 // inserting new parameter to the Database
56 if (!stmt->Process()) {
57 cout << "ERROR: inserting new parameter to the Database has been failed" << endl;
58 delete stmt;
59 delete connDb;
60 return nullptr;
61 }
62
63 delete stmt;
64
65 // getting last inserted ID
66 int parameter_id;
67 TSQLStatement* stmt_last =
68 db_server->Statement("SELECT currval(pg_get_serial_sequence('parameter_','parameter_id'))");
69
70 // process getting last id
71 if (stmt_last->Process()) {
72 // store result of statement in buffer
73 stmt_last->StoreResult();
74
75 // if there is no last id then exit with error
76 if (!stmt_last->NextResultRow()) {
77 cout << "ERROR: no last ID in DB!" << endl;
78 delete stmt_last;
79 return nullptr;
80 } else {
81 parameter_id = stmt_last->GetInt(0);
82 delete stmt_last;
83 }
84 } else {
85 cout << "ERROR: getting last ID has been failed!" << endl;
86 delete stmt_last;
87 return nullptr;
88 }
89
90 int tmp_parameter_id;
91 tmp_parameter_id = parameter_id;
92 TString tmp_parameter_name;
93 tmp_parameter_name = parameter_name;
94 int tmp_parameter_type;
95 tmp_parameter_type = parameter_type;
96 bool tmp_is_array;
97 tmp_is_array = is_array;
98
99 return new UniParameter(connDb, tmp_parameter_id, tmp_parameter_name, tmp_parameter_type, tmp_is_array);
100}
101
102// ----- Get parameter from the database ---------------------------
104{
106 if (connDb == nullptr)
107 return nullptr;
108
109 TSQLServer* db_server = connDb->GetSQLServer();
110
111 TString sql = TString::Format("select parameter_id, parameter_name, parameter_type, is_array "
112 "from parameter_ "
113 "where parameter_id = %d",
114 parameter_id);
115 TSQLStatement* stmt = db_server->Statement(sql);
116
117 // get parameter from the database
118 if (!stmt->Process()) {
119 cout << "ERROR: getting parameter from the database has been failed" << endl;
120
121 delete stmt;
122 delete connDb;
123 return nullptr;
124 }
125
126 // store result of statement in buffer
127 stmt->StoreResult();
128
129 // extract row
130 if (!stmt->NextResultRow()) {
131 cout << "ERROR: parameter was not found in the database" << endl;
132
133 delete stmt;
134 delete connDb;
135 return nullptr;
136 }
137
138 int tmp_parameter_id;
139 tmp_parameter_id = stmt->GetInt(0);
140 TString tmp_parameter_name;
141 tmp_parameter_name = stmt->GetString(1);
142 int tmp_parameter_type;
143 tmp_parameter_type = stmt->GetInt(2);
144 bool tmp_is_array;
145 tmp_is_array = stmt->GetInt(3);
146
147 delete stmt;
148
149 return new UniParameter(connDb, tmp_parameter_id, tmp_parameter_name, tmp_parameter_type, tmp_is_array);
150}
151
152// ----- Get parameter from the database by unique key --------------
154{
156 if (connDb == nullptr)
157 return nullptr;
158
159 TSQLServer* db_server = connDb->GetSQLServer();
160
161 TString sql = TString::Format("select parameter_id, parameter_name, parameter_type, is_array "
162 "from parameter_ "
163 "where lower(parameter_name) = lower('%s')",
164 parameter_name.Data());
165 TSQLStatement* stmt = db_server->Statement(sql);
166
167 // get parameter from the database
168 if (!stmt->Process()) {
169 cout << "ERROR: getting parameter from the database has been failed" << endl;
170
171 delete stmt;
172 delete connDb;
173 return nullptr;
174 }
175
176 // store result of statement in buffer
177 stmt->StoreResult();
178
179 // extract row
180 if (!stmt->NextResultRow()) {
181 cout << "ERROR: parameter was not found in the database" << endl;
182
183 delete stmt;
184 delete connDb;
185 return nullptr;
186 }
187
188 int tmp_parameter_id;
189 tmp_parameter_id = stmt->GetInt(0);
190 TString tmp_parameter_name;
191 tmp_parameter_name = stmt->GetString(1);
192 int tmp_parameter_type;
193 tmp_parameter_type = stmt->GetInt(2);
194 bool tmp_is_array;
195 tmp_is_array = stmt->GetInt(3);
196
197 delete stmt;
198
199 return new UniParameter(connDb, tmp_parameter_id, tmp_parameter_name, tmp_parameter_type, tmp_is_array);
200}
201
202// ----- Check parameter exists in the database ---------------------------
204{
206 if (connDb == nullptr)
207 return -1;
208
209 TSQLServer* db_server = connDb->GetSQLServer();
210
211 TString sql = TString::Format("select 1 "
212 "from parameter_ "
213 "where parameter_id = %d",
214 parameter_id);
215 TSQLStatement* stmt = db_server->Statement(sql);
216
217 // get parameter from the database
218 if (!stmt->Process()) {
219 cout << "ERROR: getting parameter from the database has been failed" << endl;
220
221 delete stmt;
222 delete connDb;
223 return -2;
224 }
225
226 // store result of statement in buffer
227 stmt->StoreResult();
228
229 // extract row
230 if (!stmt->NextResultRow()) {
231 delete stmt;
232 delete connDb;
233 return 0;
234 }
235
236 delete stmt;
237 delete connDb;
238
239 return 1;
240}
241
242// ----- Check parameter exists in the database by unique key --------------
243int UniParameter::CheckParameterExists(TString parameter_name)
244{
246 if (connDb == nullptr)
247 return -1;
248
249 TSQLServer* db_server = connDb->GetSQLServer();
250
251 TString sql = TString::Format("select 1 "
252 "from parameter_ "
253 "where lower(parameter_name) = lower('%s')",
254 parameter_name.Data());
255 TSQLStatement* stmt = db_server->Statement(sql);
256
257 // get parameter from the database
258 if (!stmt->Process()) {
259 cout << "ERROR: getting parameter from the database has been failed" << endl;
260
261 delete stmt;
262 delete connDb;
263 return -2;
264 }
265
266 // store result of statement in buffer
267 stmt->StoreResult();
268
269 // extract row
270 if (!stmt->NextResultRow()) {
271 delete stmt;
272 delete connDb;
273 return 0;
274 }
275
276 delete stmt;
277 delete connDb;
278
279 return 1;
280}
281
282// ----- Delete parameter from the database ---------------------------
283int UniParameter::DeleteParameter(int parameter_id)
284{
286 if (connDb == nullptr)
287 return -1;
288
289 TSQLServer* db_server = connDb->GetSQLServer();
290
291 TString sql = TString::Format("delete from parameter_ "
292 "where parameter_id = $1");
293 TSQLStatement* stmt = db_server->Statement(sql);
294
295 stmt->NextIteration();
296 stmt->SetInt(0, parameter_id);
297
298 // delete parameter from the dataBase
299 if (!stmt->Process()) {
300 cout << "ERROR: deleting parameter from the dataBase has been failed" << endl;
301
302 delete stmt;
303 delete connDb;
304 return -2;
305 }
306
307 delete stmt;
308 delete connDb;
309 return 0;
310}
311
312// ----- Delete parameter from the database by unique key --------------
313int UniParameter::DeleteParameter(TString parameter_name)
314{
316 if (connDb == nullptr)
317 return -1;
318
319 TSQLServer* db_server = connDb->GetSQLServer();
320
321 TString sql = TString::Format("delete from parameter_ "
322 "where lower(parameter_name) = lower($1)");
323 TSQLStatement* stmt = db_server->Statement(sql);
324
325 stmt->NextIteration();
326 stmt->SetString(0, parameter_name);
327
328 // delete parameter from the dataBase
329 if (!stmt->Process()) {
330 cout << "ERROR: deleting parameter from the DataBase has been failed" << endl;
331
332 delete stmt;
333 delete connDb;
334 return -2;
335 }
336
337 delete stmt;
338 delete connDb;
339 return 0;
340}
341
342// ----- Print all 'parameters' ---------------------------------
344{
346 if (connDb == nullptr)
347 return -1;
348
349 TSQLServer* db_server = connDb->GetSQLServer();
350
351 TString sql = TString::Format("select parameter_id, parameter_name, parameter_type, is_array "
352 "from parameter_");
353 TSQLStatement* stmt = db_server->Statement(sql);
354
355 // get all 'parameters' from the database
356 if (!stmt->Process()) {
357 cout << "ERROR: getting all 'parameters' from the dataBase has been failed" << endl;
358
359 delete stmt;
360 delete connDb;
361 return -2;
362 }
363
364 // store result of statement in buffer
365 stmt->StoreResult();
366
367 // print rows
368 cout << "Table 'parameter_':" << endl;
369 while (stmt->NextResultRow()) {
370 cout << "parameter_id: ";
371 cout << (stmt->GetInt(0));
372 cout << ", parameter_name: ";
373 cout << (stmt->GetString(1));
374 cout << ", parameter_type: ";
375 cout << (stmt->GetInt(2));
376 cout << ", is_array: ";
377 cout << (stmt->GetInt(3));
378 cout << "." << endl;
379 }
380
381 delete stmt;
382 delete connDb;
383
384 return 0;
385}
386
387// Setters functions
388int UniParameter::SetParameterName(TString parameter_name)
389{
390 if (!connectionDB) {
391 cout << "CRITICAL ERROR: Connection object is null" << endl;
392 return -1;
393 }
394
395 TSQLServer* db_server = connectionDB->GetSQLServer();
396
397 TString sql = TString::Format("update parameter_ "
398 "set parameter_name = $1 "
399 "where parameter_id = $2");
400 TSQLStatement* stmt = db_server->Statement(sql);
401
402 stmt->NextIteration();
403 stmt->SetString(0, parameter_name);
404 stmt->SetInt(1, i_parameter_id);
405
406 // write new value to the database
407 if (!stmt->Process()) {
408 cout << "ERROR: updating information about parameter has been failed" << endl;
409
410 delete stmt;
411 return -2;
412 }
413
414 str_parameter_name = parameter_name;
415
416 delete stmt;
417 return 0;
418}
419
420int UniParameter::SetParameterType(int parameter_type)
421{
422 if (!connectionDB) {
423 cout << "CRITICAL ERROR: Connection object is null" << endl;
424 return -1;
425 }
426
427 TSQLServer* db_server = connectionDB->GetSQLServer();
428
429 TString sql = TString::Format("update parameter_ "
430 "set parameter_type = $1 "
431 "where parameter_id = $2");
432 TSQLStatement* stmt = db_server->Statement(sql);
433
434 stmt->NextIteration();
435 stmt->SetInt(0, parameter_type);
436 stmt->SetInt(1, i_parameter_id);
437
438 // write new value to the database
439 if (!stmt->Process()) {
440 cout << "ERROR: updating information about parameter has been failed" << endl;
441
442 delete stmt;
443 return -2;
444 }
445
446 i_parameter_type = parameter_type;
447
448 delete stmt;
449 return 0;
450}
451
452int UniParameter::SetIsArray(bool is_array)
453{
454 if (!connectionDB) {
455 cout << "CRITICAL ERROR: Connection object is null" << endl;
456 return -1;
457 }
458
459 TSQLServer* db_server = connectionDB->GetSQLServer();
460
461 TString sql = TString::Format("update parameter_ "
462 "set is_array = $1 "
463 "where parameter_id = $2");
464 TSQLStatement* stmt = db_server->Statement(sql);
465
466 stmt->NextIteration();
467 stmt->SetInt(0, is_array);
468 stmt->SetInt(1, i_parameter_id);
469
470 // write new value to the database
471 if (!stmt->Process()) {
472 cout << "ERROR: updating information about parameter has been failed" << endl;
473
474 delete stmt;
475 return -2;
476 }
477
478 b_is_array = is_array;
479
480 delete stmt;
481 return 0;
482}
483
484// ----- Print current parameter ---------------------------------------
486{
487 cout << "Table 'parameter_'";
488 cout << ". parameter_id: " << i_parameter_id << ". parameter_name: " << str_parameter_name
489 << ". parameter_type: " << i_parameter_type << ". is_array: " << b_is_array << endl;
490
491 return;
492}
493/* END OF GENERATED CLASS PART (SHOULD NOT BE CHANGED MANUALLY) */
494
495bool UniParameter::CheckAndGetParameterID(TSQLServer* db_server,
496 TString parameter_name,
497 enumValueType enum_parameter_type,
498 int& parameter_id)
499{
500 // get parameter object from 'parameter_' table
501 TString sql = TString::Format("select parameter_id, parameter_name, parameter_type "
502 "from parameter_ "
503 "where lower(parameter_name) = lower('%s')",
504 parameter_name.Data());
505 TSQLStatement* stmt = db_server->Statement(sql);
506
507 // get table record from DB
508 if (!stmt->Process()) {
509 cout << "ERROR: getting a record with the parameter from 'parameter_' table has been failed" << endl;
510 delete stmt;
511 return false;
512 }
513
514 stmt->StoreResult();
515
516 // extract row with parameter
517 if (!stmt->NextResultRow()) {
518 cout << "ERROR: the parameter with name '" << parameter_name << "' was not found" << endl;
519 delete stmt;
520 return false;
521 }
522
523 parameter_id = stmt->GetInt(0);
524 int parameter_type = stmt->GetInt(2);
525
526 delete stmt;
527
528 if (parameter_type != enum_parameter_type) {
529 cout << "ERROR: '" << parameter_name << "' parameter has not the same type (type = " << parameter_type
530 << ", but " << enum_parameter_type << " used)" << endl;
531 return false;
532 }
533
534 return true;
535}
static UniConnection * Open()
TSQLServer * GetSQLServer()
static int DeleteParameter(int parameter_id)
delete parameter from the database
static bool CheckAndGetParameterID(TSQLServer *db_server, TString parameter_name, enumValueType enum_parameter_type, int &parameter_id)
static UniParameter * GetParameter(int parameter_id)
get parameter from the database
int SetParameterName(TString parameter_name)
set parameter name of the current parameter
void Print()
print information about current parameter
int SetIsArray(bool is_array)
set is array of the current parameter
static int PrintAll()
print all parameters
virtual ~UniParameter()
int SetParameterType(int parameter_type)
set parameter type of the current parameter
static UniParameter * CreateParameter(TString parameter_name, int parameter_type, bool is_array)
add new parameter to the database
static int CheckParameterExists(int parameter_id)
check parameter exists in the database: 1- true, 0 - false, <0 - database operation error
enumValueType
STL namespace.