Go to the documentation of this file.00001
00002
00003
00004
00005 #include <cassert>
00006 #include <sstream>
00007
00008 #include <stdair/basic/BasConst_BookingClass.hpp>
00009 #include <stdair/bom/TravelSolutionStruct.hpp>
00010 #include <stdair/bom/BomKeyManager.hpp>
00011 #include <stdair/bom/ParsedKey.hpp>
00012
00013 namespace stdair {
00014
00015 TravelSolutionStruct::TravelSolutionStruct() : _chosenFareOption (NULL) {
00016 }
00017
00018
00019 TravelSolutionStruct::~TravelSolutionStruct() {
00020 }
00021
00022
00023 void TravelSolutionStruct::toStream (std::ostream& ioOut) const {
00024 ioOut << describe();
00025 }
00026
00027
00028 void TravelSolutionStruct::fromStream (std::istream& ioIn) {
00029 }
00030
00031
00032 const std::string TravelSolutionStruct::describe() const {
00033 std::ostringstream oStr;
00034
00035
00036 oStr << "Segment path: ";
00037 unsigned short idx = 0;
00038 for (SegmentPath_T::const_iterator lItSegmentPath = _segmentPath.begin();
00039 lItSegmentPath != _segmentPath.end(); ++lItSegmentPath, ++idx) {
00040 if (idx != 0) {
00041 oStr << "-";
00042 }
00043 const std::string& lSegmentPathString = *lItSegmentPath;
00044 const stdair::ParsedKey& lSegmentParsedKey =
00045 stdair::BomKeyManager::extractKeys (lSegmentPathString);
00046 const std::string& lSegmentKey = lSegmentParsedKey.toString();
00047 oStr << lSegmentKey;
00048 }
00049 oStr << " ### ";
00050
00051
00052 if (_chosenFareOption != NULL) {
00053 oStr << "Chosen fare option: " << _chosenFareOption->describe()
00054 << " ## Among: ";
00055 } else {
00056 oStr << "Fare options: ";
00057 }
00058
00059
00060 idx = 0;
00061 for (FareOptionList_T::const_iterator lItFareOption= _fareOptionList.begin();
00062 lItFareOption != _fareOptionList.end(); ++lItFareOption, ++idx) {
00063 if (idx != 0) {
00064 oStr << " , ";
00065 }
00066 const FareOptionStruct& lFareOption = *lItFareOption;
00067 oStr << lFareOption.describe();
00068 }
00069
00070 return oStr.str();
00071 }
00072
00073
00074 const std::string TravelSolutionStruct::display() const {
00075 std::ostringstream oStr;
00076
00077
00078 unsigned short idx = 0;
00079 for (SegmentPath_T::const_iterator itSegPath = _segmentPath.begin();
00080 itSegPath != _segmentPath.end(); ++itSegPath, ++idx) {
00081 if (idx != 0) {
00082 oStr << " ; ";
00083 }
00084 const std::string& lSegmentPathString = *itSegPath;
00085 const stdair::ParsedKey& lSegmentParsedKey =
00086 stdair::BomKeyManager::extractKeys (lSegmentPathString);
00087 const std::string& lSegmentKey = lSegmentParsedKey.toString();
00088 oStr << "[" << idx << "] " << lSegmentKey;
00089 }
00090
00091
00092 oStr << " --- ";
00093 idx = 0;
00094 for (FareOptionList_T::const_iterator itFareOption = _fareOptionList.begin();
00095 itFareOption != _fareOptionList.end(); ++itFareOption, ++idx) {
00096 if (idx != 0) {
00097 oStr << " , ";
00098 }
00099 const FareOptionStruct& lFareOption = *itFareOption;
00100 oStr << lFareOption.display();
00101 }
00102
00103
00104 oStr << " --- ";
00105 idx = 0;
00106 for (ClassAvailabilityMapHolder_T::const_iterator itSegMap =
00107 _classAvailabilityMapHolder.begin();
00108 itSegMap != _classAvailabilityMapHolder.end(); ++itSegMap, ++idx) {
00109 if (idx != 0) {
00110 oStr << " ; ";
00111 }
00112
00113 const ClassAvailabilityMap_T& lClassAvlMap = *itSegMap;
00114 oStr << "[" << idx << "] ";
00115
00116
00117 unsigned short jdx = 0;
00118 for (ClassAvailabilityMap_T::const_iterator itClass = lClassAvlMap.begin();
00119 itClass != lClassAvlMap.end(); ++itClass, ++jdx) {
00120 if (jdx != 0) {
00121 oStr << " ";
00122 }
00123 const ClassCode_T& lClassCode = itClass->first;
00124 const Availability_T& lAvl = itClass->second;
00125 oStr << lClassCode << ":" << lAvl;
00126 }
00127 }
00128
00129 return oStr.str();
00130 }
00131
00132
00133 void TravelSolutionStruct::addSegment (const std::string& iKey) {
00134 _segmentPath.push_back (iKey);
00135 }
00136
00137
00138 void TravelSolutionStruct::
00139 addClassAvailabilityMap (const ClassAvailabilityMap_T& iMap) {
00140 _classAvailabilityMapHolder.push_back (iMap);
00141 }
00142
00143
00144 void TravelSolutionStruct::
00145 addClassYieldMap (const ClassYieldMap_T& iMap) {
00146 _classYieldMapHolder.push_back (iMap);
00147 }
00148
00149
00150 void TravelSolutionStruct::
00151 addBidPriceVector (const BidPriceVector_T& iBpv) {
00152 _bidPriceVectorHolder.push_back (iBpv);
00153 }
00154
00155
00156 void TravelSolutionStruct::
00157 addClassBpvMap (const ClassBpvMap_T& iMap) {
00158 _classBpvMapHolder.push_back (iMap);
00159 }
00160
00161
00162 void TravelSolutionStruct::
00163 addFareOption (const FareOptionStruct& iFareOption) {
00164 _fareOptionList.push_back (iFareOption);
00165 }
00166
00167 }