StdAir Logo  1.00.19
C++ Standard Airline IT Object Library
Loading...
Searching...
No Matches
LegCabin.cpp
Go to the documentation of this file.
1// //////////////////////////////////////////////////////////////////////
2// Import section
3// //////////////////////////////////////////////////////////////////////
4// STL
5#include <cassert>
6#include <sstream>
7// StdAir
14
15
16namespace stdair {
17
18 // ////////////////////////////////////////////////////////////////////
19 LegCabin::LegCabin() : _key (DEFAULT_CABIN_CODE), _parent (NULL) {
20 assert (false);
21 }
22
23 // ////////////////////////////////////////////////////////////////////
24 LegCabin::LegCabin (const LegCabin& iLegCabin)
25 : _key (iLegCabin._key), _parent (NULL),
26 _offeredCapacity (iLegCabin._offeredCapacity),
27 _physicalCapacity (iLegCabin._physicalCapacity),
28 _soldSeat (iLegCabin._soldSeat),
29 _committedSpace (iLegCabin._committedSpace),
30 _availabilityPool (iLegCabin._availabilityPool),
31 _availability (iLegCabin._availability),
32 _currentBidPrice (iLegCabin._currentBidPrice),
33 _dcsRegrade (iLegCabin._dcsRegrade),
34 _au (iLegCabin._au),
35 _upr (iLegCabin._upr),
36 _nav (iLegCabin._nav),
37 _gav (iLegCabin._gav),
38 _acp (iLegCabin._acp),
39 _etb (iLegCabin._etb),
40 _staffNbOfBookings (iLegCabin._staffNbOfBookings),
41 _wlNbOfBookings (iLegCabin._wlNbOfBookings),
42 _groupNbOfBookings (iLegCabin._groupNbOfBookings) {
43 }
44
45 // ////////////////////////////////////////////////////////////////////
67
68 // ////////////////////////////////////////////////////////////////////
71
72 // ////////////////////////////////////////////////////////////////////
73 void LegCabin::setCapacities (const CabinCapacity_T& iCapacity) {
74 _offeredCapacity = iCapacity;
75 _physicalCapacity = iCapacity;
77 }
78
79 // ////////////////////////////////////////////////////////////////////
81 const LegDate& lLegDate = BomManager::getParent<LegDate> (*this);
82
83 const MapKey_T oFullKey =
85 return oFullKey;
86 }
87
88 // ////////////////////////////////////////////////////////////////////
89 std::string LegCabin::toString() const {
90 std::ostringstream oStr;
91 oStr << describeKey();
92 return oStr.str();
93 }
94
95 // ////////////////////////////////////////////////////////////////////
96 const std::string LegCabin::displayVirtualClassList () const {
97 std::ostringstream oStr;
98
99 for (VirtualClassList_T::const_iterator itVC = _virtualClassList.begin();
100 itVC != _virtualClassList.end(); ++itVC) {
101 const VirtualClassStruct& lVC = *itVC;
102 oStr << std::endl << "Yield: " << std::fixed << std::setprecision (2)
103 << lVC.getYield()
104 << ", Protection: " << std::fixed << std::setprecision (2)
106 << ", Booking limit: " << std::fixed << std::setprecision (2)
108 }
109
110 return oStr.str();
111 }
112
113 // ////////////////////////////////////////////////////////////////////
118
119 // ////////////////////////////////////////////////////////////////////
121 const unsigned short lAvailabilityPool =
122 static_cast<unsigned short> (std::floor (_availabilityPool));
123
124 if (lAvailabilityPool >= 1) {
125 const unsigned short lBidPriceVectorSize = _bidPriceVector.size();
126 if (lBidPriceVectorSize >= lAvailabilityPool) {
127 _currentBidPrice = _bidPriceVector.at (lAvailabilityPool - 1);
128 }
129 }
130 }
131
132 // ////////////////////////////////////////////////////////////////////
134 const MeanValue_T& iMeanValue,
135 const StdDevValue_T& iStdDevValue) {
136 //
137 const int lYieldLevel =
138 static_cast<int> (std::floor (iYield + 0.5));
139
140 //
141 YieldLevelDemandMap_T::iterator itDemand =
142 _yieldLevelDemandMap.find (lYieldLevel);
143
144 if (itDemand == _yieldLevelDemandMap.end()) {
145 MeanStdDevPair_T lMeanStdDevPair (iMeanValue,iStdDevValue);
146 const bool hasInsertBeenSuccessful = _yieldLevelDemandMap.
147 insert (YieldLevelDemandMap_T::value_type (lYieldLevel,
148 lMeanStdDevPair)).second;
149 assert (hasInsertBeenSuccessful == true);
150
151 } else {
152 //
153 MeanStdDevPair_T& lMeanStdDevPair = itDemand->second;
154 MeanValue_T lMeanValue = iMeanValue + lMeanStdDevPair.first;
155 StdDevValue_T lStdDevValue = iStdDevValue * iStdDevValue + lMeanStdDevPair.second * lMeanStdDevPair.second;
156 lStdDevValue = std::sqrt (lStdDevValue);
157
158 //
159 lMeanStdDevPair = MeanStdDevPair_T (lMeanValue, lStdDevValue);
160 }
161 }
162
163}
164
Handle on the StdAir library context.
const AuthorizationLevel_T DEFAULT_CLASS_AUTHORIZATION_LEVEL
const NbOfBookings_T DEFAULT_CLASS_NB_OF_BOOKINGS
const CommittedSpace_T DEFAULT_COMMITTED_SPACE
const NbOfSeats_T DEFAULT_NULL_BOOKING_NUMBER
std::pair< MeanValue_T, StdDevValue_T > MeanStdDevPair_T
double StdDevValue_T
std::string MapKey_T
Definition key_types.hpp:15
NbOfRequests_T NbOfBookings_T
const Availability_T DEFAULT_AVAILABILITY
const CabinCode_T DEFAULT_CABIN_CODE
const UPR_T DEFAULT_NULL_UPR
const BidPriceVector_T DEFAULT_BID_PRICE_VECTOR
Definition BasConst.cpp:475
const CabinCapacity_T DEFAULT_CABIN_CAPACITY
const CapacityAdjustment_T DEFAULT_NULL_CAPACITY_ADJUSTMENT
const BidPrice_T DEFAULT_BID_PRICE
const OverbookingRate_T DEFAULT_CLASS_OVERBOOKING_RATE
double YieldValue_T
const std::string DEFAULT_KEY_FLD_DELIMITER
static PARENT & getParent(const CHILD &)
const std::string displayVirtualClassList() const
Definition LegCabin.cpp:96
void setAvailabilityPool(const Availability_T &iAvailabilityPool)
Definition LegCabin.hpp:204
NbOfSeats_T _staffNbOfBookings
Definition LegCabin.hpp:456
BidPriceVector_T _bidPriceVector
Definition LegCabin.hpp:424
LegCabin(const Key_T &)
Definition LegCabin.cpp:46
CabinCapacity_T _physicalCapacity
Definition LegCabin.hpp:403
YieldLevelDemandMap_T _yieldLevelDemandMap
Definition LegCabin.hpp:430
NbOfSeats_T _groupNbOfBookings
Definition LegCabin.hpp:462
Availability_T _nav
Definition LegCabin.hpp:444
std::string toString() const
Definition LegCabin.cpp:89
OverbookingRate_T _acp
Definition LegCabin.hpp:450
VirtualClassList_T _virtualClassList
Definition LegCabin.hpp:427
NbOfSeats_T _soldSeat
Definition LegCabin.hpp:406
Availability_T _gav
Definition LegCabin.hpp:447
void updateCurrentBidPrice()
Definition LegCabin.cpp:120
BidPrice_T _currentBidPrice
Definition LegCabin.hpp:418
const CabinCode_T & getCabinCode() const
Definition LegCabin.hpp:56
const std::string describeKey() const
Definition LegCabin.hpp:307
Availability_T _availabilityPool
Definition LegCabin.hpp:412
NbOfSeats_T _wlNbOfBookings
Definition LegCabin.hpp:459
LegCabinKey Key_T
Definition LegCabin.hpp:35
void setCapacities(const CabinCapacity_T &iCapacity)
Definition LegCabin.cpp:73
void addDemandInformation(const YieldValue_T &, const MeanValue_T &, const StdDevValue_T &)
Definition LegCabin.cpp:133
AuthorizationLevel_T _au
Definition LegCabin.hpp:438
CommittedSpace_T _committedSpace
Definition LegCabin.hpp:409
void updateFromReservation(const NbOfBookings_T &)
Definition LegCabin.cpp:114
CabinCapacity_T _offeredCapacity
Definition LegCabin.hpp:400
BomAbstract * _parent
Definition LegCabin.hpp:392
NbOfSeats_T _etb
Definition LegCabin.hpp:453
Availability_T _availability
Definition LegCabin.hpp:415
const MapKey_T getFullerKey() const
Definition LegCabin.cpp:80
CapacityAdjustment_T _dcsRegrade
Definition LegCabin.hpp:435
const std::string describeKey() const
Definition LegDate.hpp:207
const Yield_T & getYield() const
const BookingLimit_T & getCumulatedBookingLimit() const
const ProtectionLevel_T & getCumulatedProtection() const