$treeview $search $mathjax
00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // STL 00005 #include <cassert> 00006 #include <sstream> 00007 // Boost 00008 #include <boost/tokenizer.hpp> 00009 #include <boost/lexical_cast.hpp> 00010 #include <boost/date_time/gregorian/parsers.hpp> 00011 // StdAir 00012 #include <stdair/stdair_exceptions.hpp> 00013 #include <stdair/basic/BasConst_BomDisplay.hpp> 00014 #include <stdair/bom/InventoryKey.hpp> 00015 #include <stdair/bom/FlightDateKey.hpp> 00016 #include <stdair/bom/SegmentDateKey.hpp> 00017 #include <stdair/bom/LegDateKey.hpp> 00018 #include <stdair/bom/ParsedKey.hpp> 00019 #include <stdair/bom/BomKeyManager.hpp> 00020 #include <stdair/service/Logger.hpp> 00021 00022 namespace stdair { 00023 00024 // ////////////// Tokenising support /////////////// 00028 typedef boost::tokenizer<boost::char_separator<char> > Tokeniser_T; 00029 00030 // //////////////////////////////////////////////////////////////////// 00031 ParsedKey BomKeyManager::extractKeys (const std::string& iFullKeyStr) { 00032 ParsedKey oParsedKey; 00033 oParsedKey._fullKey = iFullKeyStr; 00034 00035 // Token-ise the full key string 00036 Tokeniser_T lTokens (iFullKeyStr, DEFAULT_KEY_TOKEN_DELIMITER); 00037 Tokeniser_T::iterator itToken = lTokens.begin(); 00038 00039 // Airline code 00040 if (itToken != lTokens.end()) { 00041 oParsedKey._airlineCode = *itToken; 00042 00043 // Flight number 00044 ++itToken; 00045 if (itToken != lTokens.end()) { 00046 oParsedKey._flightNumber = *itToken; 00047 00048 // Departure date 00049 ++itToken; 00050 if (itToken != lTokens.end()) { 00051 oParsedKey._departureDate = *itToken; 00052 00053 // Origin 00054 ++itToken; 00055 if (itToken != lTokens.end()) { 00056 oParsedKey._boardingPoint = *itToken; 00057 00058 // Destination 00059 ++itToken; 00060 if (itToken != lTokens.end()) { 00061 oParsedKey._offPoint = *itToken; 00062 00063 // Boarding time 00064 ++itToken; 00065 if (itToken != lTokens.end()) { 00066 oParsedKey._boardingTime = *itToken; 00067 } 00068 } 00069 } 00070 } 00071 } 00072 } 00073 00074 return oParsedKey; 00075 } 00076 00077 // //////////////////////////////////////////////////////////////////// 00078 InventoryKey BomKeyManager:: 00079 extractInventoryKey (const std::string& iFullKeyStr) { 00080 ParsedKey lParsedKey = extractKeys (iFullKeyStr); 00081 00082 return lParsedKey.getInventoryKey(); 00083 } 00084 00085 // //////////////////////////////////////////////////////////////////// 00086 FlightDateKey BomKeyManager:: 00087 extractFlightDateKey (const std::string& iFullKeyStr) { 00088 ParsedKey lParsedKey = extractKeys (iFullKeyStr); 00089 00090 return lParsedKey.getFlightDateKey(); 00091 } 00092 00093 // //////////////////////////////////////////////////////////////////// 00094 SegmentDateKey BomKeyManager:: 00095 extractSegmentDateKey (const std::string& iFullKeyStr) { 00096 ParsedKey lParsedKey = extractKeys (iFullKeyStr); 00097 00098 return lParsedKey.getSegmentKey(); 00099 } 00100 00101 // //////////////////////////////////////////////////////////////////// 00102 LegDateKey BomKeyManager:: 00103 extractLegDateKey (const std::string& iFullKeyStr) { 00104 ParsedKey lParsedKey = extractKeys (iFullKeyStr); 00105 00106 return lParsedKey.getLegKey(); 00107 } 00108 }