AirInv Logo  1.00.12
C++ Simulated Airline Inventory Management System Library
Loading...
Searching...
No Matches
FlightRequestStatus.cpp
Go to the documentation of this file.
1// //////////////////////////////////////////////////////////////////////
2// Import section
3// //////////////////////////////////////////////////////////////////////
4// STL
5#include <cassert>
6#include <sstream>
7// StdAir
8#include <stdair/service/Logger.hpp>
9// Airinv
12
13namespace AIRINV {
14
15 // //////////////////////////////////////////////////////////////////////
16 const std::string FlightRequestStatus::_labels[LAST_VALUE] =
17 { "OK", "Not Found", "Internal Error"};
18
19 const std::string FlightRequestStatus::_codeLabels[LAST_VALUE] =
20 { "OK", "NF", "IE" };
21
22
23 // //////////////////////////////////////////////////////////////////////
25 FlightRequestStatus (const EN_FlightRequestStatus& iFlightRequestStatus)
26 : _code (iFlightRequestStatus) {
27 }
28
29 // //////////////////////////////////////////////////////////////////////
30 FlightRequestStatus::FlightRequestStatus (const std::string& iCode) {
31 _code = LAST_VALUE;
32
33 if (iCode == "OK") {
34 _code = OK;
35
36 } else if (iCode == "NF") {
37 _code = NOT_FOUND;
38
39 } else if (iCode == "IE") {
40 _code = INTERNAL_ERROR;
41
42 }
43
44 if (_code == LAST_VALUE) {
45 const std::string& lLabels = describeLabels();
46 STDAIR_LOG_ERROR ("The flight request status '" << iCode
47 << "' is not known. Known flight request status: "
48 << lLabels);
49 throw stdair::CodeConversionException ("The flight request status '"
50 + iCode
51 + "' is not known. Known flight request status: "
52 + lLabels);
53 }
54 }
55
56 // //////////////////////////////////////////////////////////////////////
57 const std::string& FlightRequestStatus::
58 getLabel (const EN_FlightRequestStatus& iCode) {
59 return _labels[iCode];
60 }
61
62 // //////////////////////////////////////////////////////////////////////
63 const std::string& FlightRequestStatus::
65 return _codeLabels[iCode];
66 }
67
68 // //////////////////////////////////////////////////////////////////////
70 std::ostringstream ostr;
71 for (unsigned short idx = 0; idx != LAST_VALUE; ++idx) {
72 if (idx != 0) {
73 ostr << ", ";
74 }
75 ostr << _labels[idx];
76 }
77 return ostr.str();
78 }
79
80 // //////////////////////////////////////////////////////////////////////
85
86 // //////////////////////////////////////////////////////////////////////
87 const std::string FlightRequestStatus::describe() const {
88 std::ostringstream ostr;
89 ostr << _labels[_code];
90 return ostr.str();
91 }
92
93}
const std::string describe() const
static const std::string & getLabel(const EN_FlightRequestStatus &)
EN_FlightRequestStatus getCode() const
static std::string describeLabels()
FlightRequestStatus(const EN_FlightRequestStatus &)
static const std::string & getCodeLabel(const EN_FlightRequestStatus &)