00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <sstream> 00007 // StdAir 00008 #include <stdair/service/Logger.hpp> 00009 // Airinv 00010 #include <airinv/AIRINV_Types.hpp> 00011 #include <airinv/FlightRequestStatus.hpp> 00012 00013 namespace AIRINV { 00014 00015 // ////////////////////////////////////////////////////////////////////// 00016 const std::string FlightRequestStatus::_labels[LAST_VALUE] = 00017 { "OK", "Not Found", "Internal Error"}; 00018 00019 const std::string FlightRequestStatus::_codeLabels[LAST_VALUE] = 00020 { "OK", "NF", "IE" }; 00021 00022 00023 // ////////////////////////////////////////////////////////////////////// 00024 FlightRequestStatus:: 00025 FlightRequestStatus (const EN_FlightRequestStatus& iFlightRequestStatus) 00026 : _code (iFlightRequestStatus) { 00027 } 00028 00029 // ////////////////////////////////////////////////////////////////////// 00030 FlightRequestStatus::FlightRequestStatus (const std::string& iCode) { 00031 _code = LAST_VALUE; 00032 00033 if (iCode == "OK") { 00034 _code = OK; 00035 00036 } else if (iCode == "NF") { 00037 _code = NOT_FOUND; 00038 00039 } else if (iCode == "IE") { 00040 _code = INTERNAL_ERROR; 00041 00042 } 00043 00044 if (_code == LAST_VALUE) { 00045 const std::string& lLabels = describeLabels(); 00046 STDAIR_LOG_ERROR ("The flight request status '" << iCode 00047 << "' is not known. Known flight request status: " 00048 << lLabels); 00049 throw stdair::CodeConversionException ("The flight request status '" 00050 + iCode 00051 + "' is not known. Known flight request status: " 00052 + lLabels); 00053 } 00054 } 00055 00056 // ////////////////////////////////////////////////////////////////////// 00057 const std::string& FlightRequestStatus:: 00058 getLabel (const EN_FlightRequestStatus& iCode) { 00059 return _labels[iCode]; 00060 } 00061 00062 // ////////////////////////////////////////////////////////////////////// 00063 const std::string& FlightRequestStatus:: 00064 getCodeLabel (const EN_FlightRequestStatus& iCode) { 00065 return _codeLabels[iCode]; 00066 } 00067 00068 // ////////////////////////////////////////////////////////////////////// 00069 std::string FlightRequestStatus::describeLabels() { 00070 std::ostringstream ostr; 00071 for (unsigned short idx = 0; idx != LAST_VALUE; ++idx) { 00072 if (idx != 0) { 00073 ostr << ", "; 00074 } 00075 ostr << _labels[idx]; 00076 } 00077 return ostr.str(); 00078 } 00079 00080 // ////////////////////////////////////////////////////////////////////// 00081 FlightRequestStatus::EN_FlightRequestStatus FlightRequestStatus:: 00082 getCode() const { 00083 return _code; 00084 } 00085 00086 // ////////////////////////////////////////////////////////////////////// 00087 const std::string FlightRequestStatus::describe() const { 00088 std::ostringstream ostr; 00089 ostr << _labels[_code]; 00090 return ostr.str(); 00091 } 00092 00093 }