7 #if BOOST_VERSION >= 103400
9 #include <boost/foreach.hpp>
10 #endif // BOOST_VERSION >= 103400
35 #if BOOST_VERSION >= 104100
44 pt.put (
"flight_date.airline_code", lAirlineCode);
47 pt.put (
"flight_date.flight_number", lFlightNumber);
50 const std::string& lDepartureDateStr =
51 boost::gregorian::to_simple_string (lFlightDateDate);
52 pt.put (
"flight_date.departure_date", lDepartureDateStr);
53 #endif // BOOST_VERSION >= 104100
56 jsonLegDateExport (pt, iFlightDate);
59 jsonLegCabinExport (pt, iFlightDate);
62 jsonBucketExport (pt, iFlightDate);
65 jsonSegmentDateExport (pt, iFlightDate);
68 jsonSegmentCabinExport (pt, iFlightDate);
71 jsonFareFamilyExport (pt, iFlightDate);
74 jsonBookingClassExport (pt, iFlightDate);
76 #if BOOST_VERSION >= 104100
78 write_json (oStream, pt);
79 #endif // BOOST_VERSION >= 104100
83 void BomJSONExport::jsonLegDateExport (
bpt::ptree& ioPropertyTree,
90 if (BomManager::hasList<LegDate> (iFlightDate) ==
false) {
96 BomManager::getList<LegDate> (iFlightDate);
97 for (LegDateList_T::const_iterator itLD = lLegDateList.begin();
98 itLD != lLegDateList.end(); ++itLD) {
99 const LegDate* lLD_ptr = *itLD;
100 assert (lLD_ptr != NULL);
102 #if BOOST_VERSION >= 104100
108 lLegDateArray.put (
"BoardPoint", lLD_ptr->getBoardingPoint());
110 lLegDateArray.put (
"OffPoint", lLD_ptr->getOffPoint());
112 lLegDateArray.put (
"BoardDate", lLD_ptr->getBoardingDate());
114 lLegDateArray.put (
"OffDate", lLD_ptr->getOffDate());
116 lLegDateArray.put (
"BoardTime", lLD_ptr->getBoardingTime());
118 lLegDateArray.put (
"OffTime", lLD_ptr->getOffTime());
120 lLegDateArray.put (
"Elapsed", lLD_ptr->getElapsedTime());
122 lLegDateArray.put (
"Date_Offset", lLD_ptr->getDateOffset());
124 lLegDateArray.put (
"Time_Offset", lLD_ptr->getTimeOffset());
126 lLegDateArray.put (
"Distance", lLD_ptr->getDistance());
128 lLegDateArray.put (
"Capacity", lLD_ptr->getCapacity());
131 std::ostringstream oStream;
132 oStream <<
"flight_date.leg_" << lLD_ptr->getBoardingPoint();
133 ioPropertyTree.put_child(oStream.str(),lLegDateArray);
135 #endif // BOOST_VERSION >= 104100
140 void BomJSONExport::jsonLegCabinExport (
bpt::ptree& ioPropertyTree,
141 const FlightDate& iFlightDate) {
147 if (BomManager::hasList<LegDate> (iFlightDate) ==
false) {
152 BomManager::getList<LegDate> (iFlightDate);
153 for (LegDateList_T::const_iterator itLD = lLegDateList.begin();
154 itLD != lLegDateList.end(); ++itLD) {
155 const LegDate* lLD_ptr = *itLD;
156 assert (lLD_ptr != NULL);
160 BomManager::getList<LegCabin> (*lLD_ptr);
161 for (LegCabinList_T::const_iterator itLC = lLegCabinList.begin();
162 itLC != lLegCabinList.end(); ++itLC) {
163 const LegCabin* lLC_ptr = *itLC;
164 assert (lLC_ptr != NULL);
166 #if BOOST_VERSION >= 104100
172 lLegCabinArray.put (
"OffedCAP", lLC_ptr->getOfferedCapacity());
174 lLegCabinArray.put (
"PhyCAP", lLC_ptr->getPhysicalCapacity());
176 lLegCabinArray.put (
"RgdADJ", lLC_ptr->getRegradeAdjustment());
178 lLegCabinArray.put (
"AU", lLC_ptr->getAuthorizationLevel());
180 lLegCabinArray.put (
"UPR", lLC_ptr->getUPR());
182 lLegCabinArray.put (
"SS", lLC_ptr->getSoldSeat());
184 lLegCabinArray.put (
"Staff", lLC_ptr->getStaffNbOfSeats());
186 lLegCabinArray.put (
"WL", lLC_ptr->getWLNbOfSeats());
188 lLegCabinArray.put (
"Group", lLC_ptr->getGroupNbOfSeats());
190 lLegCabinArray.put (
"CommSpace", lLC_ptr->getCommittedSpace());
192 lLegCabinArray.put (
"AvPool", lLC_ptr->getAvailabilityPool());
194 lLegCabinArray.put (
"Avl", lLC_ptr->getAvailability());
196 lLegCabinArray.put (
"NAV", lLC_ptr->getNetAvailability());
198 lLegCabinArray.put (
"GAV", lLC_ptr->getGrossAvailability());
200 lLegCabinArray.put (
"ACP", lLC_ptr->getAvgCancellationPercentage());
202 lLegCabinArray.put (
"ETB", lLC_ptr->getETB());
204 lLegCabinArray.put (
"BidPrice", lLC_ptr->getCurrentBidPrice());
207 std::ostringstream oStream;
208 oStream <<
"flight_date"
209 <<
".leg_" << lLD_ptr->getBoardingPoint()
210 <<
".cabin_" << lLC_ptr->toString();
211 ioPropertyTree.put_child (oStream.str(), lLegCabinArray);
213 #endif // BOOST_VERSION >= 104100
219 void BomJSONExport::jsonBucketExport (
bpt::ptree& ioPropertyTree,
220 const FlightDate& iFlightDate) {
226 if (BomManager::hasList<LegDate> (iFlightDate) ==
false) {
232 BomManager::getList<LegDate> (iFlightDate);
233 for (LegDateList_T::const_iterator itLD = lLegDateList.begin();
234 itLD != lLegDateList.end(); ++itLD) {
235 const LegDate* lLD_ptr = *itLD;
236 assert (lLD_ptr != NULL);
240 BomManager::getList<LegCabin> (*lLD_ptr);
241 for (LegCabinList_T::const_iterator itLC = lLegCabinList.begin();
242 itLC != lLegCabinList.end(); ++itLC) {
243 const LegCabin* lLC_ptr = *itLC;
244 assert (lLC_ptr != NULL);
247 if (BomManager::hasList<Bucket> (*lLC_ptr) ==
false) {
252 const BucketList_T& lBucketList = BomManager::getList<Bucket> (*lLC_ptr);
253 for (BucketList_T::const_iterator itBuck = lBucketList.begin();
254 itBuck != lBucketList.end(); ++itBuck) {
255 const Bucket* lBucket_ptr = *itBuck;
256 assert (lBucket_ptr != NULL);
258 #if BOOST_VERSION >= 104100
264 lLegBucketArray.put (
"Yield", lBucket_ptr->getYieldRangeUpperValue());
266 lLegBucketArray.put (
"SI", lBucket_ptr->getSeatIndex());
268 lLegBucketArray.put (
"SS", lBucket_ptr->getSoldSeats());
270 lLegBucketArray.put (
"AV", lBucket_ptr->getAvailability());
273 std::ostringstream oStream;
274 oStream <<
"flight_date"
275 <<
".leg_" << lLD_ptr->getBoardingPoint()
276 <<
".cabin_" << lLC_ptr->toString()
277 <<
".bucket_" << lBucket_ptr->toString();
278 ioPropertyTree.put_child (oStream.str(),lLegBucketArray);
280 #endif // BOOST_VERSION >= 104100
287 void BomJSONExport::jsonSegmentDateExport (
bpt::ptree& ioPropertyTree,
288 const FlightDate& iFlightDate) {
295 if (BomManager::hasList<SegmentDate> (iFlightDate) ==
false) {
300 unsigned short idx = 0;
302 BomManager::getList<SegmentDate> (iFlightDate);
303 for (SegmentDateList_T::const_iterator itSD = lSegmentDateList.begin();
304 itSD != lSegmentDateList.end(); ++itSD, ++idx) {
305 const SegmentDate* lSD_ptr = *itSD;
306 assert (lSD_ptr != NULL);
308 #if BOOST_VERSION >= 104100
314 lSegmentDateArray.put (
"BoardPoint", lSD_ptr->getBoardingPoint());
316 lSegmentDateArray.put (
"OffPoint", lSD_ptr->getOffPoint());
318 lSegmentDateArray.put (
"BoardDate", lSD_ptr->getBoardingDate());
320 lSegmentDateArray.put (
"OffDate", lSD_ptr->getOffDate());
322 lSegmentDateArray.put (
"BoardTime", lSD_ptr->getBoardingTime());
324 lSegmentDateArray.put (
"OffTime", lSD_ptr->getOffTime());
326 lSegmentDateArray.put (
"Elapsed", lSD_ptr->getElapsedTime());
328 lSegmentDateArray.put (
"Date_Offset", lSD_ptr->getDateOffset());
330 lSegmentDateArray.put (
"Time_Offset", lSD_ptr->getTimeOffset());
332 lSegmentDateArray.put (
"Distance", lSD_ptr->getDistance());
335 std::ostringstream oStream;
336 oStream <<
"flight_date.segment_" << lSD_ptr->getBoardingPoint()
337 <<
"_" << lSD_ptr->getOffPoint();
338 ioPropertyTree.put_child(oStream.str(),lSegmentDateArray);
340 #endif // BOOST_VERSION >= 104100
345 void BomJSONExport::jsonSegmentCabinExport (
bpt::ptree& ioPropertyTree,
346 const FlightDate& iFlightDate) {
353 void BomJSONExport::jsonFareFamilyExport (
bpt::ptree& ioPropertyTree,
354 const FlightDate& iFlightDate) {
360 if (BomManager::hasList<SegmentDate> (iFlightDate) ==
false) {
365 unsigned short idx = 0;
367 BomManager::getList<SegmentDate> (iFlightDate);
368 for (SegmentDateList_T::const_iterator itSD = lSegmentDateList.begin();
369 itSD != lSegmentDateList.end(); ++itSD, ++idx) {
370 const SegmentDate* lSD_ptr = *itSD;
371 assert (lSD_ptr != NULL);
375 BomManager::getList<SegmentCabin> (*lSD_ptr);
376 for (SegmentCabinList_T::const_iterator itSC = lSegmentCabinList.begin();
377 itSC != lSegmentCabinList.end(); ++itSC) {
378 const SegmentCabin* lSC_ptr = *itSC;
379 assert (lSC_ptr != NULL);
382 if (BomManager::hasList<FareFamily> (*lSC_ptr) ==
false) {
387 unsigned short ffIdx = 0;
389 BomManager::getList<FareFamily> (*lSC_ptr);
390 for (FareFamilyList_T::const_iterator itFF = lFareFamilyList.begin();
391 itFF != lFareFamilyList.end(); ++itFF, ++ffIdx) {
392 const FareFamily* lFF_ptr = *itFF;
393 assert (lFF_ptr != NULL);
395 #if BOOST_VERSION >= 104100
400 lFFArray.put (
"cabin",lSC_ptr->toString());
402 lFFArray.put (
"code", lFF_ptr->getFamilyCode());
404 lFFArray.put (
"MIN", lSC_ptr->getMIN());
406 lFFArray.put (
"UPR", lSC_ptr->getUPR());
408 lFFArray.put (
"CommSpace", lSC_ptr->getCommittedSpace());
410 lFFArray.put (
"AvPool", lSC_ptr->getAvailabilityPool());
412 lFFArray.put (
"BP", lSC_ptr->getCurrentBidPrice());
414 std::ostringstream oStream;
415 oStream <<
"flight_date.segment_" << lSD_ptr->getBoardingPoint()
416 <<
"_" << lSD_ptr->getOffPoint()
417 <<
".fare_family_" << lFF_ptr->toString();
418 ioPropertyTree.put_child (oStream.str(), lFFArray);
419 #endif // BOOST_VERSION >= 104100
426 void BomJSONExport::jsonBookingClassExport (
bpt::ptree& ioPropertyTree,
427 const BookingClass& iBookingClass,
428 const std::string& iLeadingString) {
435 std::ostringstream oStream;
436 oStream << iLeadingString;
437 oStream <<
".class_" << iBookingClass.toString();
439 #if BOOST_VERSION >= 104100
444 lBookingClassArray.put (
"Subclass", iBookingClass.getSubclassCode());
446 std::ostringstream oAUProtStr;
447 oAUProtStr << iBookingClass.getAuthorizationLevel()
448 <<
" (" << iBookingClass.getProtection()
450 lBookingClassArray.put (
"MIN/AU (Prot)", oAUProtStr.str());
452 lBookingClassArray.put (
"Nego", iBookingClass.getNegotiatedSpace());
454 lBookingClassArray.put (
"NS%", iBookingClass.getNoShowPercentage());
456 lBookingClassArray.put (
"OB%", iBookingClass.getCancellationPercentage());
458 lBookingClassArray.put (
"Bkgs", iBookingClass.getNbOfBookings());
460 lBookingClassArray.put (
"GrpBks (pdg)", iBookingClass.getNbOfGroupBookings());
462 lBookingClassArray.put (
"StfBkgs", iBookingClass.getNbOfStaffBookings());
464 lBookingClassArray.put (
"WLBkgs", iBookingClass.getNbOfWLBookings());
466 lBookingClassArray.put (
"ETB", iBookingClass.getETB());
468 lBookingClassArray.put (
"ClassAvl", iBookingClass.getNetClassAvailability());
470 lBookingClassArray.put (
"SegAvl", iBookingClass.getSegmentAvailability());
472 lBookingClassArray.put (
"RevAvl", iBookingClass.getNetRevenueAvailability());
475 ioPropertyTree.put_child (oStream.str(), lBookingClassArray);
477 #endif // BOOST_VERSION >= 104100
481 void BomJSONExport::jsonBookingClassExport (
bpt::ptree& ioPropertyTree,
482 const FlightDate& iFlightDate) {
484 if (BomManager::hasList<SegmentDate> (iFlightDate) ==
false) {
490 BomManager::getList<SegmentDate> (iFlightDate);
491 for (SegmentDateList_T::const_iterator itSD = lSegmentDateList.begin();
492 itSD != lSegmentDateList.end(); ++itSD) {
493 const SegmentDate* lSD_ptr = *itSD;
494 assert (lSD_ptr != NULL);
497 std::ostringstream oLeadingStr;
499 oLeadingStr <<
"flight_date.segment_" << lSD_ptr->getBoardingPoint()
500 <<
"_" << lSD_ptr->getOffPoint();
504 BomManager::getList<SegmentCabin> (*lSD_ptr);
505 for (SegmentCabinList_T::const_iterator itSC = lSegmentCabinList.begin();
506 itSC != lSegmentCabinList.end(); ++itSC) {
507 const SegmentCabin* lSC_ptr = *itSC;
508 assert (lSC_ptr != NULL);
511 if (BomManager::hasList<FareFamily> (*lSC_ptr) ==
true) {
515 BomManager::getList<FareFamily> (*lSC_ptr);
516 for (FareFamilyList_T::const_iterator itFF = lFareFamilyList.begin();
517 itFF != lFareFamilyList.end(); ++itFF) {
518 const FareFamily* lFF_ptr = *itFF;
519 assert (lFF_ptr != NULL);
521 oLeadingStr <<
".fare_family_" << lFF_ptr->toString();
525 BomManager::getList<BookingClass> (*lFF_ptr);
526 for (BookingClassList_T::const_iterator itBC =
527 lBookingClassList.begin();
528 itBC != lBookingClassList.end(); ++itBC) {
529 const BookingClass* lBC_ptr = *itBC;
530 assert (lBC_ptr != NULL);
533 jsonBookingClassExport (ioPropertyTree, *lBC_ptr,
542 oLeadingStr <<
".fare_family_" << lDefaultFamilyCode ;
546 BomManager::getList<BookingClass> (*lSC_ptr);
547 for (BookingClassList_T::const_iterator itBC =
548 lBookingClassList.begin();
549 itBC != lBookingClassList.end(); ++itBC) {
550 const BookingClass* lBC_ptr = *itBC;
551 assert (lBC_ptr != NULL);
554 jsonBookingClassExport (ioPropertyTree, *lBC_ptr, oLeadingStr.str());