1.00.26
C++ Standard Airline IT Object Library
Toggle main menu visibility
Loading...
Searching...
No Matches
DBManagerForAirlines.cpp
Go to the documentation of this file.
1
// //////////////////////////////////////////////////////////////////////
2
// Import section
3
// //////////////////////////////////////////////////////////////////////
4
// STL
5
#include <cassert>
6
// SOCI
7
#include <soci/soci.h>
8
#include <soci/mysql/soci-mysql.h>
9
// StdAir
10
#include <
stdair/stdair_basic_types.hpp
>
11
#include <
stdair/stdair_exceptions.hpp
>
12
#include <
stdair/bom/AirlineStruct.hpp
>
13
#include <
stdair/dbadaptor/DbaAirline.hpp
>
14
#include <
stdair/command/DBManagerForAirlines.hpp
>
15
#include <
stdair/service/Logger.hpp
>
16
17
namespace
stdair
{
18
19
// //////////////////////////////////////////////////////////////////////
20
void
DBManagerForAirlines::
21
prepareSelectStatement
(
DBSession_T
& ioSociSession,
22
DBRequestStatement_T
& ioSelectStatement,
23
AirlineStruct
& ioAirline) {
24
25
try
{
26
27
// Instanciate a SQL statement (no request is performed at that stage)
32
33
ioSelectStatement = (ioSociSession.prepare
34
<<
"select iata_code, name "
35
<<
"from airlines "
, soci::into (ioAirline));
36
37
// Execute the SQL query
38
ioSelectStatement.execute();
39
40
}
catch
(std::exception
const
& lException) {
41
throw
SQLDatabaseException
(lException.what());
42
}
43
}
44
45
// //////////////////////////////////////////////////////////////////////
46
void
DBManagerForAirlines::
47
prepareSelectOnAirlineCodeStatement (
DBSession_T
& ioSociSession,
48
DBRequestStatement_T
& ioSelectStatement,
49
const
AirlineCode_T
& iAirlineCode,
50
AirlineStruct
& ioAirline) {
51
52
try
{
53
54
// Instanciate a SQL statement (no request is performed at that stage)
60
61
ioSelectStatement = (ioSociSession.prepare
62
<<
"select iata_code, name "
63
<<
"from airlines "
64
<<
"where iata_code = :airline_code "
,
65
soci::into (ioAirline), soci::use (iAirlineCode));
66
67
// Execute the SQL query
68
ioSelectStatement.execute();
69
70
}
catch
(std::exception
const
& lException) {
71
throw
SQLDatabaseException (lException.what());
72
}
73
}
74
75
// //////////////////////////////////////////////////////////////////////
76
bool
DBManagerForAirlines::
77
iterateOnStatement
(
DBRequestStatement_T
& ioStatement,
78
AirlineStruct
& ioAirline) {
79
bool
hasStillData =
false
;
80
81
try
{
82
83
// Retrieve the next row of Airline object
84
hasStillData = ioStatement.fetch();
85
86
}
catch
(std::exception
const
& lException) {
87
throw
SQLDatabaseException
(lException.what());
88
}
89
90
return
hasStillData;
91
}
92
93
// //////////////////////////////////////////////////////////////////////
94
void
DBManagerForAirlines::updateAirlineInDB
(
DBSession_T
& ioSociSession,
95
const
AirlineStruct
& iAirline) {
96
try
{
97
// Begin a transaction on the database
98
ioSociSession.begin();
99
100
// Retrieve the airline code
101
const
std::string& lAirlineCode = iAirline.
getAirlineCode
();
102
103
// Retrieve the airline name
104
const
std::string& lAirlineName = iAirline.
getAirlineName
();
105
106
// Instanciate a SQL statement (no request is performed at that stage)
107
DBRequestStatement_T
lUpdateStatement =
108
(ioSociSession.prepare
109
<<
"update airlines "
110
<<
"set name = :name "
111
<<
"where iata_code = :iata_code"
,
112
soci::use (lAirlineName), soci::use (lAirlineCode));
113
114
// Execute the SQL query
115
lUpdateStatement.execute (
true
);
116
117
// Commit the transaction on the database
118
ioSociSession.commit();
119
120
// Debug
121
// STDAIR_LOG_DEBUG ("[" << lAirlineCode << "] " << iAirline);
122
123
}
catch
(std::exception
const
& lException) {
124
throw
SQLDatabaseException
(lException.what());
125
}
126
}
127
128
// //////////////////////////////////////////////////////////////////////
129
bool
DBManagerForAirlines::retrieveAirline
(
DBSession_T
& ioSociSession,
130
const
AirlineCode_T
& iAirlineCode,
131
AirlineStruct
& ioAirline) {
132
bool
oHasRetrievedAirline =
false
;
133
134
try
{
135
// Prepare the SQL request corresponding to the select statement
136
DBRequestStatement_T
lSelectStatement (ioSociSession);
137
prepareSelectOnAirlineCodeStatement (ioSociSession, lSelectStatement,
138
iAirlineCode, ioAirline);
139
140
// const bool shouldDoReset = true;
141
bool
hasStillData =
iterateOnStatement
(lSelectStatement, ioAirline);
142
if
(hasStillData ==
true
) {
143
oHasRetrievedAirline =
true
;
144
}
145
146
// Sanity check
147
// const bool shouldNotDoReset = false;
148
hasStillData =
iterateOnStatement
(lSelectStatement, ioAirline);
149
150
// Debug
151
// STDAIR_LOG_DEBUG ("[" << iDocID << "] " << ioAirline);
152
153
}
catch
(std::exception
const
& lException) {
154
throw
SQLDatabaseException
(lException.what());
155
}
156
157
return
oHasRetrievedAirline;
158
}
159
160
}
AirlineStruct.hpp
DBManagerForAirlines.hpp
DbaAirline.hpp
Logger.hpp
stdair_basic_types.hpp
stdair_exceptions.hpp
stdair
Handle on the StdAir library context.
Definition
BasChronometer.cpp:9
stdair::DBRequestStatement_T
soci::statement DBRequestStatement_T
Definition
stdair_db.hpp:23
stdair::AirlineCode_T
std::string AirlineCode_T
Definition
stdair_basic_types.hpp:31
stdair::DBSession_T
soci::session DBSession_T
Definition
stdair_db.hpp:20
stdair::AirlineStruct
Definition
AirlineStruct.hpp:18
stdair::AirlineStruct::getAirlineCode
const AirlineCode_T & getAirlineCode() const
Definition
AirlineStruct.hpp:22
stdair::AirlineStruct::getAirlineName
const std::string & getAirlineName() const
Definition
AirlineStruct.hpp:27
stdair::DBManagerForAirlines::updateAirlineInDB
static void updateAirlineInDB(DBSession_T &, const AirlineStruct &)
Definition
DBManagerForAirlines.cpp:94
stdair::DBManagerForAirlines::prepareSelectStatement
static void prepareSelectStatement(DBSession_T &, DBRequestStatement_T &, AirlineStruct &)
Definition
DBManagerForAirlines.cpp:21
stdair::DBManagerForAirlines::iterateOnStatement
static bool iterateOnStatement(DBRequestStatement_T &, AirlineStruct &)
Definition
DBManagerForAirlines.cpp:77
stdair::DBManagerForAirlines::retrieveAirline
static bool retrieveAirline(DBSession_T &, const AirlineCode_T &, AirlineStruct &)
Definition
DBManagerForAirlines.cpp:129
stdair::SQLDatabaseException
Definition
stdair_exceptions.hpp:181
Generated for StdAir by
1.17.0