StdAir Logo  0.45.1
C++ Standard Airline IT Object Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BomKeyManager.cpp
Go to the documentation of this file.
1 // //////////////////////////////////////////////////////////////////////
2 // Import section
3 // //////////////////////////////////////////////////////////////////////
4 // STL
5 #include <cassert>
6 #include <sstream>
7 // Boost
8 #include <boost/tokenizer.hpp>
9 #include <boost/lexical_cast.hpp>
10 #include <boost/date_time/gregorian/parsers.hpp>
11 // StdAir
17 #include <stdair/bom/ParsedKey.hpp>
20 
21 namespace stdair {
22 
23  // ////////////// Tokenising support ///////////////
27  typedef boost::tokenizer<boost::char_separator<char> > Tokeniser_T;
28 
29  // ////////////////////////////////////////////////////////////////////
30  ParsedKey BomKeyManager::extractKeys (const std::string& iFullKeyStr) {
31  ParsedKey oParsedKey;
32  oParsedKey._fullKey = iFullKeyStr;
33 
34  // Token-ise the full key string
35  Tokeniser_T lTokens (iFullKeyStr, DEFAULT_KEY_TOKEN_DELIMITER);
36  Tokeniser_T::iterator itToken = lTokens.begin();
37 
38  // Airline code
39  if (itToken != lTokens.end()) {
40  oParsedKey._airlineCode = *itToken;
41 
42  // Flight number
43  ++itToken;
44  if (itToken != lTokens.end()) {
45  oParsedKey._flightNumber = *itToken;
46 
47  // Departure date
48  ++itToken;
49  if (itToken != lTokens.end()) {
50  oParsedKey._departureDate = *itToken;
51 
52  // Origin
53  ++itToken;
54  if (itToken != lTokens.end()) {
55  oParsedKey._boardingPoint = *itToken;
56 
57  // Destination
58  ++itToken;
59  if (itToken != lTokens.end()) {
60  oParsedKey._offPoint = *itToken;
61 
62  // Boarding time
63  ++itToken;
64  if (itToken != lTokens.end()) {
65  oParsedKey._boardingTime = *itToken;
66  }
67  }
68  }
69  }
70  }
71  }
72 
73  return oParsedKey;
74  }
75 
76  // ////////////////////////////////////////////////////////////////////
78  extractInventoryKey (const std::string& iFullKeyStr) {
79  ParsedKey lParsedKey = extractKeys (iFullKeyStr);
80 
81  return lParsedKey.getInventoryKey();
82  }
83 
84  // ////////////////////////////////////////////////////////////////////
86  extractFlightDateKey (const std::string& iFullKeyStr) {
87  ParsedKey lParsedKey = extractKeys (iFullKeyStr);
88 
89  return lParsedKey.getFlightDateKey();
90  }
91 
92  // ////////////////////////////////////////////////////////////////////
94  extractSegmentDateKey (const std::string& iFullKeyStr) {
95  ParsedKey lParsedKey = extractKeys (iFullKeyStr);
96 
97  return lParsedKey.getSegmentKey();
98  }
99 }