$treeview $search $mathjax
AirInv Logo  1.00.1
$projectbrief
$projectbrief
$searchbox

FlightRequestStatus.cpp

Go to the documentation of this file.
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 }