00001
00005
00006
00007
00008
00009 #include <cassert>
00010 #include <sstream>
00011
00012 #include <stdair/basic/BasConst_General.hpp>
00013 #include <stdair/basic/BasConst_DefaultObject.hpp>
00014 #include <stdair/basic/BasConst_Request.hpp>
00015 #include <stdair/basic/BasConst_Inventory.hpp>
00016 #include <stdair/bom/BomRoot.hpp>
00017 #include <stdair/bom/Inventory.hpp>
00018 #include <stdair/bom/FlightDate.hpp>
00019 #include <stdair/bom/LegDate.hpp>
00020 #include <stdair/bom/LegCabin.hpp>
00021 #include <stdair/bom/SegmentDate.hpp>
00022 #include <stdair/bom/SegmentCabin.hpp>
00023 #include <stdair/bom/FareFamily.hpp>
00024 #include <stdair/bom/BookingClass.hpp>
00025 #include <stdair/bom/AirportPair.hpp>
00026 #include <stdair/bom/PosChannel.hpp>
00027 #include <stdair/bom/DatePeriod.hpp>
00028 #include <stdair/bom/TimePeriod.hpp>
00029 #include <stdair/bom/FareFeatures.hpp>
00030 #include <stdair/bom/YieldFeatures.hpp>
00031 #include <stdair/bom/AirlineClassList.hpp>
00032 #include <stdair/bom/BomManager.hpp>
00033 #include <stdair/bom/TravelSolutionStruct.hpp>
00034 #include <stdair/bom/BookingRequestStruct.hpp>
00035 #include <stdair/factory/FacBomManager.hpp>
00036 #include <stdair/factory/FacBom.hpp>
00037 #include <stdair/command/CmdBomManager.hpp>
00038 #include <stdair/service/Logger.hpp>
00039 #include <stdair/bom/OnDDate.hpp>
00040 #include <stdair/bom/SegmentPeriod.hpp>
00041 #include <stdair/bom/FlightPeriod.hpp>
00042
00043 namespace stdair {
00044
00045
00046 void CmdBomManager::buildSampleBom (BomRoot& ioBomRoot) {
00047
00048
00049 STDAIR_LOG_DEBUG ("StdAir is building the BOM tree from built-in "
00050 << "specifications.");
00051
00052
00053
00054 buildSampleInventorySchedule (ioBomRoot);
00055
00056
00057 buildSamplePricing (ioBomRoot);
00058
00059
00060
00061 buildPartnershipsSampleInventoryAndRM (ioBomRoot);
00062
00063
00064 buildPartnershipsSamplePricing (ioBomRoot);
00065
00066 }
00067
00068
00069 void CmdBomManager::buildSampleInventorySchedule (BomRoot& ioBomRoot) {
00070
00071
00072
00073
00074 const InventoryKey lBAKey ("BA");
00075 Inventory& lBAInv = FacBom<Inventory>::instance().create (lBAKey);
00076 FacBomManager::addToListAndMap (ioBomRoot, lBAInv);
00077 FacBomManager::linkWithParent (ioBomRoot, lBAInv);
00078
00079
00080 const InventoryKey lAFKey ("AF");
00081 Inventory& lAFInv = FacBom<Inventory>::instance().create (lAFKey);
00082 FacBomManager::addToListAndMap (ioBomRoot, lAFInv);
00083 FacBomManager::linkWithParent (ioBomRoot, lAFInv);
00084
00085
00086
00087
00088 FlightNumber_T lFlightNumber = 9;
00089 Date_T lDate (2011, 6, 10);
00090 FlightDateKey lFlightDateKey (lFlightNumber, lDate);
00091
00092 FlightDate& lBA9_20110610_FD =
00093 FacBom<FlightDate>::instance().create (lFlightDateKey);
00094 FacBomManager::addToListAndMap (lBAInv, lBA9_20110610_FD);
00095 FacBomManager::linkWithParent (lBAInv, lBA9_20110610_FD);
00096
00097
00098
00099
00100
00101
00102
00103 const AirportCode_T lLHR ("LHR");
00104 const AirportCode_T lSYD ("SYD");
00105 const DateOffset_T l1Day (1);
00106 const DateOffset_T l2Days (2);
00107 const Duration_T l2135 (21, 45, 0);
00108 const Duration_T l0610 (6, 10, 0);
00109 const Duration_T l2205 (22, 05, 0);
00110 SegmentDateKey lSegmentDateKey (lLHR, lSYD);
00111
00112 SegmentDate& lLHRSYDSegment =
00113 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
00114 FacBomManager::addToListAndMap (lBA9_20110610_FD, lLHRSYDSegment);
00115 FacBomManager::linkWithParent (lBA9_20110610_FD, lLHRSYDSegment);
00116
00117
00118 lLHRSYDSegment.setBoardingDate (lDate);
00119 lLHRSYDSegment.setOffDate (lDate + l2Days);
00120 lLHRSYDSegment.setBoardingTime (l2135);
00121 lLHRSYDSegment.setOffTime (l0610);
00122 lLHRSYDSegment.setElapsedTime (l2135);
00123
00124
00125
00126
00127
00128
00129 const AirportCode_T lBKK ("BKK");
00130 const Duration_T l1540 (15, 40, 0);
00131 const Duration_T l1105 (11, 5, 0);
00132 lSegmentDateKey = SegmentDateKey (lLHR, lBKK);
00133
00134 SegmentDate& lLHRBKKSegment =
00135 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
00136 FacBomManager::addToListAndMap (lBA9_20110610_FD, lLHRBKKSegment);
00137 FacBomManager::linkWithParent (lBA9_20110610_FD, lLHRBKKSegment);
00138
00139
00140 lLHRBKKSegment.setBoardingDate (lDate);
00141 lLHRBKKSegment.setOffDate (lDate + l1Day);
00142 lLHRBKKSegment.setBoardingTime (l2135);
00143 lLHRBKKSegment.setOffTime (l1540);
00144 lLHRBKKSegment.setElapsedTime (l1105);
00145
00146
00147
00148
00149
00150
00151 const Duration_T l1705 (17, 5, 0);
00152 const Duration_T l0905 (9, 5, 0);
00153 lSegmentDateKey = SegmentDateKey (lBKK, lSYD);
00154
00155 SegmentDate& lBKKSYDSegment =
00156 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
00157 FacBomManager::addToListAndMap (lBA9_20110610_FD, lBKKSYDSegment);
00158 FacBomManager::linkWithParent (lBA9_20110610_FD, lBKKSYDSegment);
00159
00160
00161 lBKKSYDSegment.setBoardingDate (lDate + l1Day);
00162 lBKKSYDSegment.setOffDate (lDate + l2Days);
00163 lBKKSYDSegment.setBoardingTime (l1705);
00164 lBKKSYDSegment.setOffTime (l1540);
00165 lBKKSYDSegment.setElapsedTime (l0905);
00166
00167
00168
00169
00170
00171
00172 LegDateKey lLegDateKey (lLHR);
00173
00174 LegDate& lLHRLeg = FacBom<LegDate>::instance().create (lLegDateKey);
00175 FacBomManager::addToListAndMap (lBA9_20110610_FD, lLHRLeg);
00176 FacBomManager::linkWithParent (lBA9_20110610_FD, lLHRLeg);
00177
00178
00179 lLHRLeg.setOffPoint (lBKK);
00180 lLHRLeg.setBoardingDate (lDate);
00181 lLHRLeg.setOffDate (lDate + l1Day);
00182 lLHRLeg.setBoardingTime (l2135);
00183 lLHRLeg.setOffTime (l1540);
00184 lLHRLeg.setElapsedTime (l1105);
00185
00186
00187
00188
00189
00190 lLegDateKey = LegDateKey (lBKK);
00191
00192 LegDate& lBKKLeg = FacBom<LegDate>::instance().create (lLegDateKey);
00193 FacBomManager::addToListAndMap (lBA9_20110610_FD, lBKKLeg);
00194 FacBomManager::linkWithParent (lBA9_20110610_FD, lBKKLeg);
00195
00196
00197
00198
00199
00200 lBKKLeg.setOffPoint (lSYD);
00201 lBKKLeg.setBoardingDate (lDate + l1Day);
00202 lBKKLeg.setOffDate (lDate + l2Days);
00203 lBKKLeg.setBoardingTime (l1705);
00204 lBKKLeg.setOffTime (l1540);
00205 lBKKLeg.setElapsedTime (l0905);
00206
00207
00208 FacBomManager::addToListAndMap (lLHRLeg, lLHRSYDSegment);
00209 FacBomManager::addToListAndMap (lLHRLeg, lLHRBKKSegment);
00210 FacBomManager::addToListAndMap (lBKKLeg, lLHRSYDSegment);
00211 FacBomManager::addToListAndMap (lBKKLeg, lBKKSYDSegment);
00212 FacBomManager::addToListAndMap (lLHRSYDSegment, lLHRLeg);
00213 FacBomManager::addToListAndMap (lLHRBKKSegment, lLHRLeg);
00214 FacBomManager::addToListAndMap (lLHRSYDSegment, lBKKLeg);
00215 FacBomManager::addToListAndMap (lBKKSYDSegment, lBKKLeg);
00216
00217
00218
00219
00220 const CabinCode_T lY ("Y");
00221 SegmentCabinKey lYSegmentCabinKey (lY);
00222
00223 SegmentCabin& lLHRBKKSegmentYCabin =
00224 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
00225 FacBomManager::addToListAndMap (lLHRBKKSegment, lLHRBKKSegmentYCabin);
00226 FacBomManager::linkWithParent (lLHRBKKSegment, lLHRBKKSegmentYCabin);
00227
00228
00229
00230
00231
00232 SegmentCabin& lBKKSYDSegmentYCabin =
00233 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
00234 FacBomManager::addToListAndMap (lBKKSYDSegment, lBKKSYDSegmentYCabin);
00235 FacBomManager::linkWithParent (lBKKSYDSegment, lBKKSYDSegmentYCabin);
00236
00237
00238
00239
00240
00241
00242 SegmentCabin& lLHRSYDSegmentYCabin =
00243 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
00244 FacBomManager::addToListAndMap (lLHRSYDSegment, lLHRSYDSegmentYCabin);
00245 FacBomManager::linkWithParent (lLHRSYDSegment, lLHRSYDSegmentYCabin);
00246
00247
00248
00249
00250
00251
00252 LegCabinKey lYLegCabinKey (lY);
00253
00254 LegCabin& lLHRLegYCabin =
00255 FacBom<LegCabin>::instance().create (lYLegCabinKey);
00256 FacBomManager::addToListAndMap (lLHRLeg, lLHRLegYCabin);
00257 FacBomManager::linkWithParent (lLHRLeg, lLHRLegYCabin);
00258
00259
00260
00261
00262
00263 LegCabin& lBKKLegYCabin =
00264 FacBom<LegCabin>::instance().create (lYLegCabinKey);
00265 FacBomManager::addToListAndMap (lBKKLeg, lBKKLegYCabin);
00266 FacBomManager::linkWithParent (lBKKLeg, lBKKLegYCabin);
00267
00268
00269
00280 FacBomManager::addToListAndMap (lLHRLegYCabin, lLHRSYDSegmentYCabin,
00281 lLHRSYDSegmentYCabin.getFullerKey());
00282 FacBomManager::addToListAndMap (lLHRLegYCabin, lLHRBKKSegmentYCabin,
00283 lLHRBKKSegmentYCabin.getFullerKey());
00284 FacBomManager::addToListAndMap (lBKKLegYCabin, lLHRSYDSegmentYCabin,
00285 lLHRSYDSegmentYCabin.getFullerKey());
00286 FacBomManager::addToListAndMap (lBKKLegYCabin, lBKKSYDSegmentYCabin,
00287 lBKKSYDSegmentYCabin.getFullerKey());
00288
00299 FacBomManager::addToListAndMap (lLHRSYDSegmentYCabin, lLHRLegYCabin,
00300 lLHRLegYCabin.getFullerKey());
00301 FacBomManager::addToListAndMap (lLHRBKKSegmentYCabin, lLHRLegYCabin,
00302 lLHRLegYCabin.getFullerKey());
00303 FacBomManager::addToListAndMap (lLHRSYDSegmentYCabin, lBKKLegYCabin,
00304 lBKKLegYCabin.getFullerKey());
00305 FacBomManager::addToListAndMap (lBKKSYDSegmentYCabin, lBKKLegYCabin,
00306 lBKKLegYCabin.getFullerKey());
00307
00308
00309
00310
00311 const FamilyCode_T l1 ("EcoSaver");
00312 FareFamilyKey l1FareFamilyKey (l1);
00313
00314 FareFamily& lLHRBKKSegmentYCabin1Family =
00315 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
00316 FacBomManager::addToListAndMap (lLHRBKKSegmentYCabin,
00317 lLHRBKKSegmentYCabin1Family);
00318 FacBomManager::linkWithParent (lLHRBKKSegmentYCabin,
00319 lLHRBKKSegmentYCabin1Family);
00320
00321
00322
00323
00324
00325
00326 FareFamily& lBKKSYDSegmentYCabin1Family =
00327 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
00328 FacBomManager::addToListAndMap (lBKKSYDSegmentYCabin,
00329 lBKKSYDSegmentYCabin1Family);
00330 FacBomManager::linkWithParent (lBKKSYDSegmentYCabin,
00331 lBKKSYDSegmentYCabin1Family);
00332
00333
00334
00335
00336
00337
00338 FareFamily& lLHRSYDSegmentYCabin1Family =
00339 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
00340 FacBomManager::addToListAndMap (lLHRSYDSegmentYCabin,
00341 lLHRSYDSegmentYCabin1Family);
00342 FacBomManager::linkWithParent (lLHRSYDSegmentYCabin,
00343 lLHRSYDSegmentYCabin1Family);
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353 const ClassCode_T lQ ("Q");
00354 BookingClassKey lQBookingClassKey (lQ);
00355
00356 BookingClass& lLHRBKKSegmentYCabin1FamilyQClass =
00357 FacBom<BookingClass>::instance().create (lQBookingClassKey);
00358 FacBomManager::addToListAndMap (lLHRBKKSegmentYCabin1Family,
00359 lLHRBKKSegmentYCabin1FamilyQClass);
00360 FacBomManager::linkWithParent (lLHRBKKSegmentYCabin1Family,
00361 lLHRBKKSegmentYCabin1FamilyQClass);
00362
00363 FacBomManager::addToListAndMap (lLHRBKKSegmentYCabin,
00364 lLHRBKKSegmentYCabin1FamilyQClass);
00365 FacBomManager::addToListAndMap (lLHRBKKSegment,
00366 lLHRBKKSegmentYCabin1FamilyQClass);
00367
00368
00369
00370
00371
00372
00373
00374 BookingClass& lBKKSYDSegmentYCabin1FamilyQClass =
00375 FacBom<BookingClass>::instance().create (lQBookingClassKey);
00376 FacBomManager::addToListAndMap (lBKKSYDSegmentYCabin1Family,
00377 lBKKSYDSegmentYCabin1FamilyQClass);
00378 FacBomManager::linkWithParent (lBKKSYDSegmentYCabin1Family,
00379 lBKKSYDSegmentYCabin1FamilyQClass);
00380
00381 FacBomManager::addToListAndMap (lBKKSYDSegmentYCabin,
00382 lBKKSYDSegmentYCabin1FamilyQClass);
00383 FacBomManager::addToListAndMap (lBKKSYDSegment,
00384 lBKKSYDSegmentYCabin1FamilyQClass);
00385
00386
00387
00388
00389
00390
00391
00392 BookingClass& lLHRSYDSegmentYCabin1FamilyQClass =
00393 FacBom<BookingClass>::instance().create (lQBookingClassKey);
00394 FacBomManager::addToListAndMap (lLHRSYDSegmentYCabin1Family,
00395 lLHRSYDSegmentYCabin1FamilyQClass);
00396 FacBomManager::linkWithParent (lLHRSYDSegmentYCabin1Family,
00397 lLHRSYDSegmentYCabin1FamilyQClass);
00398
00399 FacBomManager::addToListAndMap (lLHRSYDSegmentYCabin,
00400 lLHRSYDSegmentYCabin1FamilyQClass);
00401 FacBomManager::addToListAndMap (lLHRSYDSegment,
00402 lLHRSYDSegmentYCabin1FamilyQClass);
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412 lFlightNumber = 84;
00413 lDate = Date_T (2011, 3, 20);
00414 lFlightDateKey = FlightDateKey (lFlightNumber, lDate);
00415
00416 FlightDate& lAF084_20110320_FD =
00417 FacBom<FlightDate>::instance().create (lFlightDateKey);
00418 FacBomManager::addToListAndMap (lAFInv, lAF084_20110320_FD);
00419 FacBomManager::linkWithParent (lAFInv, lAF084_20110320_FD);
00420
00421
00422
00423
00424
00425
00426 const AirportCode_T lCDG ("CDG");
00427 const AirportCode_T lSFO ("SFO");
00428 const Duration_T l1040 (10, 40, 0);
00429 const Duration_T l1250 (12, 50, 0);
00430 const Duration_T l1110 (11, 10, 0);
00431 lSegmentDateKey = SegmentDateKey (lCDG, lSFO);
00432
00433 SegmentDate& lCDGSFOSegment =
00434 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
00435 FacBomManager::addToListAndMap (lAF084_20110320_FD, lCDGSFOSegment);
00436 FacBomManager::linkWithParent (lAF084_20110320_FD, lCDGSFOSegment);
00437
00438
00439
00440
00441
00442 lCDGSFOSegment.setBoardingDate (lDate);
00443 lCDGSFOSegment.setOffDate (lDate);
00444 lCDGSFOSegment.setBoardingTime (l1040);
00445 lCDGSFOSegment.setOffTime (l1250);
00446 lCDGSFOSegment.setElapsedTime (l1110);
00447
00448
00449
00450 lLegDateKey = LegDateKey (lCDG);
00451
00452 LegDate& lCDGLeg = FacBom<LegDate>::instance().create (lLegDateKey);
00453 FacBomManager::addToListAndMap (lAF084_20110320_FD, lCDGLeg);
00454 FacBomManager::linkWithParent (lAF084_20110320_FD, lCDGLeg);
00455
00456
00457 lCDGLeg.setOffPoint (lSFO);
00458 lCDGLeg.setBoardingDate (lDate);
00459 lCDGLeg.setOffDate (lDate);
00460 lCDGLeg.setBoardingTime (l1040);
00461 lCDGLeg.setOffTime (l1250);
00462 lCDGLeg.setElapsedTime (l1110);
00463
00464
00465
00466
00467
00468 FacBomManager::addToListAndMap (lCDGLeg, lCDGSFOSegment);
00469 FacBomManager::addToListAndMap (lCDGSFOSegment, lCDGLeg);
00470
00471
00472
00473
00474 SegmentCabin& lCDGSFOSegmentYCabin =
00475 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
00476 FacBomManager::addToListAndMap (lCDGSFOSegment, lCDGSFOSegmentYCabin);
00477 FacBomManager::linkWithParent (lCDGSFOSegment, lCDGSFOSegmentYCabin);
00478
00479
00480
00481
00482
00483
00484 LegCabin& lCDGLegYCabin =
00485 FacBom<LegCabin>::instance().create (lYLegCabinKey);
00486 FacBomManager::addToListAndMap (lCDGLeg, lCDGLegYCabin);
00487 FacBomManager::linkWithParent (lCDGLeg, lCDGLegYCabin);
00488
00489
00490
00491
00492
00493 FacBomManager::addToListAndMap (lCDGLegYCabin, lCDGSFOSegmentYCabin,
00494 lCDGSFOSegmentYCabin.getFullerKey());
00495 FacBomManager::addToListAndMap (lCDGSFOSegmentYCabin, lCDGLegYCabin,
00496 lCDGLegYCabin.getFullerKey());
00497
00498
00499
00500
00501 FareFamily& lCDGSFOSegmentYCabin1Family =
00502 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
00503 FacBomManager::addToListAndMap (lCDGSFOSegmentYCabin,
00504 lCDGSFOSegmentYCabin1Family);
00505 FacBomManager::linkWithParent (lCDGSFOSegmentYCabin,
00506 lCDGSFOSegmentYCabin1Family);
00507
00508
00509
00510
00511
00512
00513
00514
00515 BookingClass& lCDGSFOSegmentYCabin1FamilyQClass =
00516 FacBom<BookingClass>::instance().create (lQBookingClassKey);
00517 FacBomManager::addToListAndMap (lCDGSFOSegmentYCabin1Family,
00518 lCDGSFOSegmentYCabin1FamilyQClass);
00519 FacBomManager::linkWithParent (lCDGSFOSegmentYCabin1Family,
00520 lCDGSFOSegmentYCabin1FamilyQClass);
00521
00522 FacBomManager::addToListAndMap (lCDGSFOSegmentYCabin,
00523 lCDGSFOSegmentYCabin1FamilyQClass);
00524 FacBomManager::addToListAndMap (lCDGSFOSegment,
00525 lCDGSFOSegmentYCabin1FamilyQClass);
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538 const DoWStruct lDoWSrtuct ("1111111");
00539 const Date_T lBA9DateRangeStart (2010, boost::gregorian::Jun, 6);
00540 const Date_T lBA9DateRangeEnd (2010, boost::gregorian::Jun, 7);
00541 const DatePeriod_T lBA9DatePeriod (lBA9DateRangeStart, lBA9DateRangeEnd);
00542 const PeriodStruct lBA9PeriodStruct (lBA9DatePeriod, lDoWSrtuct);
00543
00544 lFlightNumber = FlightNumber_T (9);
00545
00546 FlightPeriodKey lBA9FlightPeriodKey (lFlightNumber, lBA9PeriodStruct);
00547
00548 FlightPeriod& lBA9FlightPeriod =
00549 FacBom<FlightPeriod>::instance().create (lBA9FlightPeriodKey);
00550 FacBomManager::addToListAndMap (lBAInv, lBA9FlightPeriod);
00551 FacBomManager::linkWithParent (lBAInv, lBA9FlightPeriod);
00552
00553
00554
00555
00556 SegmentPeriodKey lLHRSYDSegmentPeriodKey (lLHR, lSYD);
00557
00558 SegmentPeriod& lLHRSYDSegmentPeriod =
00559 FacBom<SegmentPeriod>::instance().create (lLHRSYDSegmentPeriodKey);
00560 FacBomManager::addToListAndMap (lBA9FlightPeriod, lLHRSYDSegmentPeriod);
00561 FacBomManager::linkWithParent (lBA9FlightPeriod, lLHRSYDSegmentPeriod);
00562
00563 lLHRSYDSegmentPeriod.setBoardingTime (l2135);
00564 lLHRSYDSegmentPeriod.setOffTime (l1540);
00565 lLHRSYDSegmentPeriod.setElapsedTime (l1105);
00566 ClassList_String_T lYM ("YM");
00567 lLHRSYDSegmentPeriod.addCabinBookingClassList (lY,lYM);
00568
00569
00570
00571
00572 const Date_T lAF84DateRangeStart (2011, boost::gregorian::Mar, 20);
00573 const Date_T lAF84DateRangeEnd (2011, boost::gregorian::Mar, 21);
00574 const DatePeriod_T lAF84DatePeriod (lAF84DateRangeStart, lAF84DateRangeEnd);
00575 const PeriodStruct lAF84PeriodStruct (lAF84DatePeriod, lDoWSrtuct);
00576
00577 lFlightNumber = FlightNumber_T (84);
00578
00579 FlightPeriodKey lAF84FlightPeriodKey (lFlightNumber, lAF84PeriodStruct);
00580
00581 FlightPeriod& lAF84FlightPeriod =
00582 FacBom<FlightPeriod>::instance().create (lAF84FlightPeriodKey);
00583 FacBomManager::addToListAndMap (lAFInv, lAF84FlightPeriod);
00584 FacBomManager::linkWithParent (lAFInv, lAF84FlightPeriod);
00585
00586
00587
00588
00589 SegmentPeriodKey lCDGSFOSegmentPeriodKey (lCDG, lSFO);
00590
00591 SegmentPeriod& lCDGSFOSegmentPeriod =
00592 FacBom<SegmentPeriod>::instance().create (lCDGSFOSegmentPeriodKey);
00593 FacBomManager::addToListAndMap (lAF84FlightPeriod, lCDGSFOSegmentPeriod);
00594 FacBomManager::linkWithParent (lAF84FlightPeriod, lCDGSFOSegmentPeriod);
00595
00596 lCDGSFOSegmentPeriod.setBoardingTime (l1040);
00597 lCDGSFOSegmentPeriod.setOffTime (l1250);
00598 lCDGSFOSegmentPeriod.setElapsedTime (l1110);
00599 lCDGSFOSegmentPeriod.addCabinBookingClassList (lY,lYM);
00600
00601
00602
00603
00604
00605
00606 OnDString_T lBALHRSYDOnDStr = "BA;9,2010-Jun-06;LHR,SYD";
00607 OnDStringList_T lBAOnDStrList;
00608 lBAOnDStrList.push_back (lBALHRSYDOnDStr);
00609
00610 OnDDateKey lBAOnDDateKey (lBAOnDStrList);
00611 OnDDate& lBA_LHRSYD_OnDDate =
00612 FacBom<OnDDate>::instance().create (lBAOnDDateKey);
00613
00614 FacBomManager::addToListAndMap (lBAInv, lBA_LHRSYD_OnDDate);
00615 FacBomManager::linkWithParent (lBAInv, lBA_LHRSYD_OnDDate);
00616
00617
00618 FacBomManager::addToListAndMap (lBA_LHRSYD_OnDDate, lLHRSYDSegment);
00619
00620
00621 const MeanStdDevPair_T lMean60StdDev6 (60.0, 6.0);
00622 const WTP_T lWTP750 = 750.0;
00623 const WTPDemandPair_T lWTP750Mean60StdDev6 (lWTP750, lMean60StdDev6);
00624 lBA_LHRSYD_OnDDate.setTotalForecast (lY, lWTP750Mean60StdDev6);
00625
00626
00627 OnDString_T lAFLHRSYDOnDStr = "AF;9,2011-Mar-20;CDG,SFO";
00628 OnDStringList_T lAFOnDStrList;
00629 lAFOnDStrList.push_back (lAFLHRSYDOnDStr);
00630
00631 OnDDateKey lAFOnDDateKey (lAFOnDStrList);
00632 OnDDate& lAF_LHRSYD_OnDDate =
00633 FacBom<OnDDate>::instance().create (lAFOnDDateKey);
00634
00635 FacBomManager::addToListAndMap (lAFInv, lAF_LHRSYD_OnDDate);
00636 FacBomManager::linkWithParent (lAFInv, lAF_LHRSYD_OnDDate);
00637
00638
00639 FacBomManager::addToListAndMap (lAF_LHRSYD_OnDDate, lLHRSYDSegment);
00640
00641
00642 lAF_LHRSYD_OnDDate.setTotalForecast (lY, lWTP750Mean60StdDev6);
00643
00644 }
00645
00646
00647 void CmdBomManager::buildDummyInventory (BomRoot& ioBomRoot,
00648 const CabinCapacity_T& iCapacity) {
00649
00650 const InventoryKey lInventoryKey (DEFAULT_AIRLINE_CODE);
00651 Inventory& lInv = FacBom<Inventory>::instance().create (lInventoryKey);
00652 FacBomManager::addToListAndMap (ioBomRoot, lInv);
00653 FacBomManager::linkWithParent (ioBomRoot, lInv);
00654
00655
00656 FlightDateKey lFlightDateKey(DEFAULT_FLIGHT_NUMBER, DEFAULT_DEPARTURE_DATE);
00657 FlightDate& lFlightDate =
00658 FacBom<FlightDate>::instance().create (lFlightDateKey);
00659 FacBomManager::addToListAndMap (lInv, lFlightDate);
00660 FacBomManager::linkWithParent (lInv, lFlightDate);
00661
00662
00663 LegDateKey lLegDateKey (DEFAULT_ORIGIN);
00664 LegDate& lLeg = FacBom<LegDate>::instance().create (lLegDateKey);
00665 FacBomManager::addToListAndMap (lFlightDate, lLeg);
00666 FacBomManager::linkWithParent (lFlightDate, lLeg);
00667
00668
00669 lLeg.setOffPoint (DEFAULT_DESTINATION);
00670 lLeg.setBoardingDate (DEFAULT_DEPARTURE_DATE);
00671 lLeg.setOffDate (DEFAULT_DEPARTURE_DATE);
00672 lLeg.setBoardingTime (Duration_T (14, 0, 0));
00673 lLeg.setOffTime (Duration_T (16, 0, 0));
00674 lLeg.setElapsedTime (Duration_T (8, 0, 0));
00675
00676
00677 LegCabinKey lLegCabinKey (DEFAULT_CABIN_CODE);
00678 LegCabin& lLegCabin = FacBom<LegCabin>::instance().create (lLegCabinKey);
00679 FacBomManager::addToListAndMap (lLeg, lLegCabin);
00680 FacBomManager::linkWithParent (lLeg, lLegCabin);
00681
00682 lLegCabin.setCapacities (iCapacity);
00683 lLegCabin.setAvailabilityPool (iCapacity);
00684
00685
00686 SegmentDateKey lSegmentDateKey (DEFAULT_ORIGIN, DEFAULT_DESTINATION);
00687 SegmentDate& lSegment =
00688 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
00689 FacBomManager::addToListAndMap (lFlightDate, lSegment);
00690 FacBomManager::linkWithParent (lFlightDate, lSegment);
00691
00692
00693 FacBomManager::addToListAndMap (lLeg, lSegment);
00694 FacBomManager::addToListAndMap (lSegment, lLeg);
00695
00696
00697 lSegment.setBoardingDate (DEFAULT_DEPARTURE_DATE);
00698 lSegment.setOffDate (DEFAULT_DEPARTURE_DATE);
00699 lSegment.setBoardingTime (Duration_T (14, 0, 0));
00700 lSegment.setOffTime (Duration_T (16, 0, 0));
00701 lSegment.setElapsedTime (Duration_T (8, 0, 0));
00702
00703
00704 SegmentCabinKey lSegmentCabinKey (DEFAULT_CABIN_CODE);
00705 SegmentCabin& lSegmentCabin =
00706 FacBom<SegmentCabin>::instance().create (lSegmentCabinKey);
00707 FacBomManager::addToListAndMap (lSegment, lSegmentCabin);
00708 FacBomManager::linkWithParent (lSegment, lSegmentCabin);
00709
00710
00711 FacBomManager::addToListAndMap (lLegCabin, lSegmentCabin,
00712 lSegmentCabin.getFullerKey());
00713 FacBomManager::addToListAndMap (lSegmentCabin, lLegCabin,
00714 lLegCabin.getFullerKey());
00715
00716
00717 const FamilyCode_T l1 ("EcoSaver");
00718 FareFamilyKey l1FareFamilyKey (l1);
00719
00720 FareFamily& lSegmentYCabin1Family =
00721 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
00722 FacBomManager::addToListAndMap (lSegmentCabin, lSegmentYCabin1Family);
00723 FacBomManager::linkWithParent (lSegmentCabin, lSegmentYCabin1Family);
00724
00725
00726 const ClassCode_T lQ ("Q");
00727 BookingClassKey lQBookingClassKey (lQ);
00728
00729 BookingClass& lSegmentYCabin1FamilyQClass =
00730 FacBom<BookingClass>::instance().create (lQBookingClassKey);
00731 FacBomManager::addToListAndMap (lSegmentYCabin1Family,
00732 lSegmentYCabin1FamilyQClass);
00733 FacBomManager::linkWithParent (lSegmentYCabin1Family,
00734 lSegmentYCabin1FamilyQClass);
00735
00736 FacBomManager::addToListAndMap (lSegmentCabin, lSegmentYCabin1FamilyQClass);
00737 FacBomManager::addToListAndMap (lSegment, lSegmentYCabin1FamilyQClass);
00738 }
00739
00740
00741 void CmdBomManager::buildSamplePricing (BomRoot& ioBomRoot) {
00742
00743
00744 const AirportPairKey lAirportPairKey (AIRPORT_LHR, AIRPORT_SYD);
00745
00746
00747 AirportPair& lAirportPair =
00748 FacBom<AirportPair>::instance().create (lAirportPairKey);
00749 FacBomManager::addToListAndMap (ioBomRoot, lAirportPair);
00750 FacBomManager::linkWithParent (ioBomRoot, lAirportPair);
00751
00752
00753 const Date_T lDateRangeStart (2011, boost::gregorian::Jan, 15);
00754 const Date_T lDateRangeEnd (2011, boost::gregorian::Dec, 31);
00755 const DatePeriod_T lDateRange (lDateRangeStart, lDateRangeEnd);
00756 const DatePeriodKey lDatePeriodKey (lDateRange);
00757
00758
00759 DatePeriod& lDatePeriod =
00760 FacBom<DatePeriod>::instance().create (lDatePeriodKey);
00761 FacBomManager::addToListAndMap (lAirportPair, lDatePeriod);
00762 FacBomManager::linkWithParent (lAirportPair, lDatePeriod);
00763
00764
00765 const PosChannelKey lPosChannelKey (POS_LHR, CHANNEL_DN);
00766
00767
00768 PosChannel& lPosChannel =
00769 FacBom<PosChannel>::instance().create (lPosChannelKey);
00770 FacBomManager::addToListAndMap (lDatePeriod, lPosChannel);
00771 FacBomManager::linkWithParent (lDatePeriod, lPosChannel);
00772
00773
00774 const Time_T lTimeRangeStart (0, 0, 0);
00775 const Time_T lTimeRangeEnd (23, 0, 0);
00776 const TimePeriodKey lTimePeriodKey (lTimeRangeStart, lTimeRangeEnd);
00777
00778
00779 TimePeriod& lTimePeriod =
00780 FacBom<TimePeriod>::instance().create (lTimePeriodKey);
00781 FacBomManager::addToListAndMap (lPosChannel, lTimePeriod);
00782 FacBomManager::linkWithParent (lPosChannel, lTimePeriod);
00783
00784
00785 const FareFeaturesKey lFareFeaturesKey (TRIP_TYPE_ROUND_TRIP,
00786 NO_ADVANCE_PURCHASE,
00787 SATURDAY_STAY,
00788 CHANGE_FEES,
00789 NON_REFUNDABLE,
00790 NO_STAY_DURATION);
00791
00792
00793 FareFeatures& lFareFeatures =
00794 FacBom<FareFeatures>::instance().create (lFareFeaturesKey);
00795 FacBomManager::addToListAndMap (lTimePeriod, lFareFeatures);
00796 FacBomManager::linkWithParent (lTimePeriod, lFareFeatures);
00797
00798
00799 const YieldFeaturesKey lYieldFeaturesKey (TRIP_TYPE_ROUND_TRIP,
00800 CABIN_Y);
00801
00802
00803 YieldFeatures& lYieldFeatures =
00804 FacBom<YieldFeatures>::instance().create (lYieldFeaturesKey);
00805 FacBomManager::addToListAndMap (lTimePeriod, lYieldFeatures);
00806 FacBomManager::linkWithParent (lTimePeriod, lYieldFeatures);
00807
00808
00809
00810 AirlineCodeList_T lAirlineCodeList;
00811 lAirlineCodeList.push_back (AIRLINE_CODE_BA);
00812 ClassList_StringList_T lClassCodeList;
00813 lClassCodeList.push_back (CLASS_CODE_Y);
00814 const AirlineClassListKey lAirlineClassListKey (lAirlineCodeList,
00815 lClassCodeList);
00816
00817
00818 AirlineClassList& lAirlineClassList =
00819 stdair::FacBom<AirlineClassList>::instance().create (lAirlineClassListKey);
00820
00821 lAirlineClassList.setFare (900);
00822 FacBomManager::addToListAndMap (lFareFeatures, lAirlineClassList);
00823 FacBomManager::linkWithParent (lFareFeatures, lAirlineClassList);
00824
00825
00826 lAirlineClassList.setYield (900);
00827 FacBomManager::addToListAndMap (lYieldFeatures, lAirlineClassList);
00828
00829
00830 FacBomManager::linkWithParent (lYieldFeatures, lAirlineClassList);
00831 }
00832
00833
00834 void CmdBomManager::
00835 buildSampleTravelSolutionForPricing (TravelSolutionList_T& ioTravelSolutionList) {
00836
00837
00838 ioTravelSolutionList.clear();
00839
00840
00841 const std::string lBA9_SegmentDateKey ("BA, 9, 2011-06-10, LHR, SYD, 21:45");
00842
00843
00844 TravelSolutionStruct lTS;
00845 lTS.addSegment (lBA9_SegmentDateKey);
00846
00847
00848 ioTravelSolutionList.push_back (lTS);
00849 }
00850
00851
00852 void CmdBomManager::
00853 buildSampleTravelSolutions (TravelSolutionList_T& ioTravelSolutionList) {
00854
00855
00856 ioTravelSolutionList.clear();
00857
00858
00859 const std::string lBA9_SegmentDateKey ("BA, 9, 2011-06-10, LHR, SYD, 21:45");
00860
00861
00862 TravelSolutionStruct lTS;
00863 lTS.addSegment (lBA9_SegmentDateKey);
00864
00865
00866 const ClassCode_T lClassPath (CLASS_CODE_Q);
00867 const Fare_T lFare (900);
00868 const ChangeFees_T lChangeFee (CHANGE_FEES);
00869 const NonRefundable_T isNonRefundable (NON_REFUNDABLE);
00870 const SaturdayStay_T lSaturdayStay (SATURDAY_STAY);
00871 const FareOptionStruct lFareOption (lClassPath, lFare, lChangeFee,
00872 isNonRefundable, lSaturdayStay);
00873
00874
00875 lTS.addFareOption (lFareOption);
00876
00877
00878
00879 ClassAvailabilityMap_T lClassAvailabilityMap;
00880 const Availability_T lAvl (8);
00881 const bool hasInsertBeenSuccessful = lClassAvailabilityMap.
00882 insert (ClassAvailabilityMap_T::value_type (lClassPath, lAvl)).second;
00883 assert (hasInsertBeenSuccessful == true);
00884
00885 lTS.addClassAvailabilityMap (lClassAvailabilityMap);
00886
00887
00888 ioTravelSolutionList.push_back (lTS);
00889 }
00890
00891
00892 BookingRequestStruct CmdBomManager::buildSampleBookingRequest() {
00893
00894 const AirportCode_T lOrigin (AIRPORT_LHR);
00895
00896
00897 const AirportCode_T lDestination (AIRPORT_SYD);
00898
00899
00900 const CityCode_T lPOS (POS_LHR);
00901
00902
00903 const Date_T lPreferredDepartureDate (2011, boost::gregorian::Jun, 10);
00904
00905
00906 const Duration_T lPreferredDepartureTime (8, 0, 0);
00907
00908
00909 const Date_T lRequestDate (2011, boost::gregorian::May, 15);
00910
00911
00912 const Duration_T lRequestTime (10, 0, 0);
00913
00914
00915 const DateTime_T lRequestDateTime (lRequestDate, lRequestTime);
00916
00917
00918 const CabinCode_T lPreferredCabin (CABIN_ECO);
00919
00920
00921 const PartySize_T lPartySize (3);
00922
00923
00924 const ChannelLabel_T lChannel (CHANNEL_DN);
00925
00926
00927 const TripType_T lTripType (TRIP_TYPE_INBOUND);
00928
00929
00930 const DayDuration_T lStayDuration (DEFAULT_STAY_DURATION);
00931
00932
00933 const FrequentFlyer_T lFrequentFlyerType (FREQUENT_FLYER_MEMBER);
00934
00935
00936 const WTP_T lWTP (DEFAULT_WTP);
00937
00938
00939
00940 const PriceValue_T lValueOfTime (DEFAULT_VALUE_OF_TIME);
00941
00942
00943 BookingRequestStruct oBookingRequest (lOrigin, lDestination, lPOS,
00944 lPreferredDepartureDate,
00945 lRequestDateTime,
00946 lPreferredCabin,
00947 lPartySize, lChannel,
00948 lTripType, lStayDuration,
00949 lFrequentFlyerType,
00950 lPreferredDepartureTime,
00951 lWTP, lValueOfTime);
00952
00953 return oBookingRequest;
00954 }
00955
00956
00957 BookingRequestStruct CmdBomManager::buildSampleBookingRequestForCRS() {
00958
00959 const AirportCode_T lOrigin (AIRPORT_SIN);
00960
00961
00962 const AirportCode_T lDestination (AIRPORT_BKK);
00963
00964
00965 const CityCode_T lPOS (POS_SIN);
00966
00967
00968 const Date_T lPreferredDepartureDate (2010, boost::gregorian::Jan, 30);
00969
00970
00971 const Duration_T lPreferredDepartureTime (10, 0, 0);
00972
00973
00974 const Date_T lRequestDate (2010, boost::gregorian::Jan, 22);
00975
00976
00977 const Duration_T lRequestTime (10, 0, 0);
00978
00979
00980 const DateTime_T lRequestDateTime (lRequestDate, lRequestTime);
00981
00982
00983 const CabinCode_T lPreferredCabin (CABIN_ECO);
00984
00985
00986 const PartySize_T lPartySize (3);
00987
00988
00989 const ChannelLabel_T lChannel (CHANNEL_IN);
00990
00991
00992 const TripType_T lTripType (TRIP_TYPE_INBOUND);
00993
00994
00995 const DayDuration_T lStayDuration (DEFAULT_STAY_DURATION);
00996
00997
00998 const FrequentFlyer_T lFrequentFlyerType (FREQUENT_FLYER_MEMBER);
00999
01000
01001 const WTP_T lWTP (DEFAULT_WTP);
01002
01003
01004
01005 const PriceValue_T lValueOfTime (DEFAULT_VALUE_OF_TIME);
01006
01007
01008 BookingRequestStruct oBookingRequest (lOrigin,
01009 lDestination,
01010 lPOS,
01011 lPreferredDepartureDate,
01012 lRequestDateTime,
01013 lPreferredCabin,
01014 lPartySize, lChannel,
01015 lTripType, lStayDuration,
01016 lFrequentFlyerType,
01017 lPreferredDepartureTime,
01018 lWTP, lValueOfTime);
01019
01020 return oBookingRequest;
01021 }
01022
01023
01024 void CmdBomManager::buildPartnershipsSampleInventoryAndRM (BomRoot& ioBomRoot) {
01025
01026
01027
01028 const InventoryKey lSQKey ("SQ");
01029 Inventory& lSQInv = FacBom<Inventory>::instance().create (lSQKey);
01030 FacBomManager::addToListAndMap (ioBomRoot, lSQInv);
01031 FacBomManager::linkWithParent (ioBomRoot, lSQInv);
01032
01033
01034 const InventoryKey lCXKey ("CX");
01035 Inventory& lCXInv = FacBom<Inventory>::instance().create (lCXKey);
01036 FacBomManager::addToListAndMap (ioBomRoot, lCXInv);
01037 FacBomManager::linkWithParent (ioBomRoot, lCXInv);
01038
01039
01040
01041
01042
01043 FlightNumber_T lFlightNumber = 11;
01044 Date_T lDate (2010, 2, 8);
01045 FlightDateKey lFlightDateKey (lFlightNumber, lDate);
01046
01047 FlightDate& lSQ11_20100208_FD =
01048 FacBom<FlightDate>::instance().create (lFlightDateKey);
01049 FacBomManager::addToListAndMap (lSQInv, lSQ11_20100208_FD);
01050 FacBomManager::linkWithParent (lSQInv, lSQ11_20100208_FD);
01051
01052
01053 FlightNumber_T lMktFlightNumber = 1200;
01054
01055 FlightDateKey lMktFlightDateKey (lMktFlightNumber, lDate);
01056
01057 FlightDate& lSQ1200_20100208_FD =
01058 FacBom<FlightDate>::instance().create (lMktFlightDateKey);
01059 FacBomManager::addToListAndMap (lSQInv, lSQ1200_20100208_FD);
01060 FacBomManager::linkWithParent (lSQInv, lSQ1200_20100208_FD);
01061
01062
01063
01064
01065
01066
01067 const AirportCode_T lSIN ("SIN");
01068 const AirportCode_T lBKK ("BKK");
01069 const DateOffset_T l1Day (1);
01070 const DateOffset_T l2Days (2);
01071 const Duration_T l0820 (8, 20, 0);
01072 const Duration_T l1100 (11, 0, 0);
01073 const Duration_T l0340 (3, 40, 0);
01074 SegmentDateKey lSegmentDateKey (lSIN, lBKK);
01075
01076 SegmentDate& lSINBKKSegment =
01077 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
01078 FacBomManager::addToListAndMap (lSQ11_20100208_FD, lSINBKKSegment);
01079 FacBomManager::linkWithParent (lSQ11_20100208_FD, lSINBKKSegment);
01080
01081
01082 lSINBKKSegment.setBoardingDate (lDate);
01083 lSINBKKSegment.setOffDate (lDate);
01084 lSINBKKSegment.setBoardingTime (l0820);
01085 lSINBKKSegment.setOffTime (l1100);
01086 lSINBKKSegment.setElapsedTime (l0340);
01087
01088
01089 const AirportCode_T lHKG ("HKG");
01090 const Duration_T l1200 (12, 0, 0);
01091 const Duration_T l1540 (15, 40, 0);
01092 const Duration_T l0240 (2, 40, 0);
01093 SegmentDateKey lMktSegmentDateKey (lBKK, lHKG);
01094
01095 SegmentDate& lMktBKKHKGSegment =
01096 FacBom<SegmentDate>::instance().create (lMktSegmentDateKey);
01097 FacBomManager::addToListAndMap (lSQ1200_20100208_FD, lMktBKKHKGSegment);
01098 FacBomManager::linkWithParent (lSQ1200_20100208_FD, lMktBKKHKGSegment);
01099
01100
01101 lMktBKKHKGSegment.setBoardingDate (lDate);
01102 lMktBKKHKGSegment.setOffDate (lDate);
01103 lMktBKKHKGSegment.setBoardingTime (l1200);
01104 lMktBKKHKGSegment.setOffTime (l1540);
01105 lMktBKKHKGSegment.setElapsedTime (l0240);
01106
01107
01108
01109 LegDateKey lLegDateKey (lSIN);
01110
01111 LegDate& lSINLeg = FacBom<LegDate>::instance().create (lLegDateKey);
01112 FacBomManager::addToListAndMap (lSQ11_20100208_FD, lSINLeg);
01113 FacBomManager::linkWithParent (lSQ11_20100208_FD, lSINLeg);
01114
01115
01116 lSINLeg.setOffPoint (lBKK);
01117 lSINLeg.setBoardingDate (lDate);
01118 lSINLeg.setOffDate (lDate);
01119 lSINLeg.setBoardingTime (l0820);
01120 lSINLeg.setOffTime (l1100);
01121 lSINLeg.setElapsedTime (l0340);
01122
01123
01124
01125 FacBomManager::addToListAndMap (lSINLeg, lSINBKKSegment);
01126 FacBomManager::addToListAndMap (lSINBKKSegment, lSINLeg);
01127
01128
01129
01130 const CabinCode_T lY ("Y");
01131 SegmentCabinKey lYSegmentCabinKey (lY);
01132
01133 SegmentCabin& lSINBKKSegmentYCabin =
01134 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01135 FacBomManager::addToListAndMap (lSINBKKSegment, lSINBKKSegmentYCabin);
01136 FacBomManager::linkWithParent (lSINBKKSegment, lSINBKKSegmentYCabin);
01137
01138
01139 SegmentCabin& lMktBKKHKGSegmentYCabin =
01140 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01141 FacBomManager::addToListAndMap (lMktBKKHKGSegment, lMktBKKHKGSegmentYCabin);
01142 FacBomManager::linkWithParent (lMktBKKHKGSegment, lMktBKKHKGSegmentYCabin);
01143
01144
01145
01146
01147 LegCabinKey lYLegCabinKey (lY);
01148
01149 LegCabin& lSINLegYCabin =
01150 FacBom<LegCabin>::instance().create (lYLegCabinKey);
01151 FacBomManager::addToListAndMap (lSINLeg, lSINLegYCabin);
01152 FacBomManager::linkWithParent (lSINLeg, lSINLegYCabin);
01153
01154 CabinCapacity_T lCapacity (100);
01155 lSINLegYCabin.setCapacities (lCapacity);
01156 lSINLegYCabin.setAvailabilityPool (lCapacity);
01157
01169 FacBomManager::addToListAndMap (lSINLegYCabin, lSINBKKSegmentYCabin,
01170 lSINBKKSegmentYCabin.getFullerKey());
01171
01182 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin, lSINLegYCabin,
01183 lSINLegYCabin.getFullerKey());
01184
01185
01186
01187
01188 const FamilyCode_T l1 ("EcoSaver");
01189 FareFamilyKey l1FareFamilyKey (l1);
01190
01191 FareFamily& lSINBKKSegmentYCabin1Family =
01192 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01193 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin,
01194 lSINBKKSegmentYCabin1Family);
01195 FacBomManager::linkWithParent (lSINBKKSegmentYCabin,
01196 lSINBKKSegmentYCabin1Family);
01197
01198
01199 FareFamily& lMktBKKHKGSegmentYCabin1Family =
01200 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01201 FacBomManager::addToListAndMap (lMktBKKHKGSegmentYCabin,
01202 lMktBKKHKGSegmentYCabin1Family);
01203 FacBomManager::linkWithParent (lMktBKKHKGSegmentYCabin,
01204 lMktBKKHKGSegmentYCabin1Family);
01205
01206
01207
01208
01209 BookingClassKey lYBookingClassKey (lY);
01210
01211 BookingClass& lSINBKKSegmentYCabin1FamilyYClass =
01212 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01213 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin1Family,
01214 lSINBKKSegmentYCabin1FamilyYClass);
01215 FacBomManager::linkWithParent (lSINBKKSegmentYCabin1Family,
01216 lSINBKKSegmentYCabin1FamilyYClass);
01217
01218 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin,
01219 lSINBKKSegmentYCabin1FamilyYClass);
01220 FacBomManager::addToListAndMap (lSINBKKSegment,
01221 lSINBKKSegmentYCabin1FamilyYClass);
01222
01223 lSINBKKSegmentYCabin1FamilyYClass.setYield(700);
01224
01225
01226
01227 BookingClass& lMktBKKHKGSegmentYCabin1FamilyYClass =
01228 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01229 FacBomManager::addToListAndMap (lMktBKKHKGSegmentYCabin1Family,
01230 lMktBKKHKGSegmentYCabin1FamilyYClass);
01231 FacBomManager::linkWithParent (lMktBKKHKGSegmentYCabin1Family,
01232 lMktBKKHKGSegmentYCabin1FamilyYClass);
01233
01234 FacBomManager::addToListAndMap (lMktBKKHKGSegmentYCabin,
01235 lMktBKKHKGSegmentYCabin1FamilyYClass);
01236 FacBomManager::addToListAndMap (lMktBKKHKGSegment,
01237 lMktBKKHKGSegmentYCabin1FamilyYClass);
01238
01239 lMktBKKHKGSegmentYCabin1FamilyYClass.setYield(700);
01240
01241
01242
01243
01244 const ClassCode_T lM ("M");
01245 BookingClassKey lMBookingClassKey (lM);
01246
01247 BookingClass& lSINBKKSegmentYCabin1FamilyMClass =
01248 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01249 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin1Family,
01250 lSINBKKSegmentYCabin1FamilyMClass);
01251 FacBomManager::linkWithParent (lSINBKKSegmentYCabin1Family,
01252 lSINBKKSegmentYCabin1FamilyMClass);
01253
01254 FacBomManager::addToListAndMap (lSINBKKSegmentYCabin,
01255 lSINBKKSegmentYCabin1FamilyMClass);
01256 FacBomManager::addToListAndMap (lSINBKKSegment,
01257 lSINBKKSegmentYCabin1FamilyMClass);
01258
01259 lSINBKKSegmentYCabin1FamilyMClass.setYield(500);
01260
01261
01262
01263 BookingClass& lMktBKKHKGSegmentYCabin1FamilyMClass =
01264 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01265 FacBomManager::addToListAndMap (lMktBKKHKGSegmentYCabin1Family,
01266 lMktBKKHKGSegmentYCabin1FamilyMClass);
01267 FacBomManager::linkWithParent (lMktBKKHKGSegmentYCabin1Family,
01268 lMktBKKHKGSegmentYCabin1FamilyMClass);
01269
01270 FacBomManager::addToListAndMap (lMktBKKHKGSegmentYCabin,
01271 lMktBKKHKGSegmentYCabin1FamilyMClass);
01272 FacBomManager::addToListAndMap (lMktBKKHKGSegment,
01273 lMktBKKHKGSegmentYCabin1FamilyMClass);
01274
01275 lMktBKKHKGSegmentYCabin1FamilyMClass.setYield(500);
01276
01277
01278
01279
01280 const InventoryKey lPartnerCXKey ("CX");
01281 Inventory& lPartnerCXInv = FacBom<Inventory>::instance().create (lPartnerCXKey);
01282 FacBomManager::addToListAndMap (lSQInv, lPartnerCXInv);
01283 FacBomManager::linkWithParent (lSQInv, lPartnerCXInv);
01284
01285
01286 lFlightNumber = 12;
01287 lFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01288
01289 FlightDate& lPartnerCX12_20100208_FD =
01290 FacBom<FlightDate>::instance().create (lFlightDateKey);
01291 FacBomManager::addToListAndMap (lPartnerCXInv, lPartnerCX12_20100208_FD);
01292 FacBomManager::linkWithParent (lPartnerCXInv, lPartnerCX12_20100208_FD);
01293
01294 lFlightNumber = 1100;
01295 lMktFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01296
01297 FlightDate& lPartnerCX1100_20100208_FD =
01298 FacBom<FlightDate>::instance().create (lMktFlightDateKey);
01299 FacBomManager::addToListAndMap (lPartnerCXInv, lPartnerCX1100_20100208_FD);
01300 FacBomManager::linkWithParent (lPartnerCXInv, lPartnerCX1100_20100208_FD);
01301
01302
01303 lSegmentDateKey = SegmentDateKey (lBKK, lHKG);
01304
01305 SegmentDate& lPartnerBKKHKGSegment =
01306 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
01307 FacBomManager::addToListAndMap (lPartnerCX12_20100208_FD, lPartnerBKKHKGSegment);
01308 FacBomManager::linkWithParent (lPartnerCX12_20100208_FD, lPartnerBKKHKGSegment);
01309
01310 lPartnerBKKHKGSegment.setBoardingDate (lDate);
01311 lPartnerBKKHKGSegment.setOffDate (lDate);
01312 lPartnerBKKHKGSegment.setBoardingTime (l1200);
01313 lPartnerBKKHKGSegment.setOffTime (l1540);
01314 lPartnerBKKHKGSegment.setElapsedTime (l0240);
01315
01316 lMktSegmentDateKey = SegmentDateKey (lSIN, lBKK);
01317
01318 SegmentDate& lPartnerMktSINBKKSegment =
01319 FacBom<SegmentDate>::instance().create (lMktSegmentDateKey);
01320 FacBomManager::addToListAndMap (lPartnerCX1100_20100208_FD, lPartnerMktSINBKKSegment);
01321 FacBomManager::linkWithParent (lPartnerCX1100_20100208_FD, lPartnerMktSINBKKSegment);
01322
01323 lPartnerMktSINBKKSegment.setBoardingDate (lDate);
01324 lPartnerMktSINBKKSegment.setOffDate (lDate);
01325 lPartnerMktSINBKKSegment.setBoardingTime (l0820);
01326 lPartnerMktSINBKKSegment.setOffTime (l1100);
01327 lPartnerMktSINBKKSegment.setElapsedTime (l0340);
01328
01329
01330 lLegDateKey = LegDateKey (lBKK);
01331
01332 LegDate& lPartnerBKKLeg = FacBom<LegDate>::instance().create (lLegDateKey);
01333 FacBomManager::addToListAndMap (lPartnerCX12_20100208_FD, lPartnerBKKLeg);
01334 FacBomManager::linkWithParent (lPartnerCX12_20100208_FD, lPartnerBKKLeg);
01335
01336 lPartnerBKKLeg.setOffPoint (lHKG);
01337 lPartnerBKKLeg.setBoardingDate (lDate);
01338 lPartnerBKKLeg.setOffDate (lDate);
01339 lPartnerBKKLeg.setBoardingTime (l1200);
01340 lPartnerBKKLeg.setOffTime (l1540);
01341 lPartnerBKKLeg.setElapsedTime (l0240);
01342
01343 FacBomManager::addToListAndMap (lPartnerBKKLeg, lPartnerBKKHKGSegment);
01344 FacBomManager::addToListAndMap (lPartnerBKKHKGSegment, lPartnerBKKLeg);
01345
01346
01347
01348 SegmentCabin& lPartnerBKKHKGSegmentYCabin =
01349 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01350 FacBomManager::addToListAndMap (lPartnerBKKHKGSegment, lPartnerBKKHKGSegmentYCabin);
01351 FacBomManager::linkWithParent (lPartnerBKKHKGSegment, lPartnerBKKHKGSegmentYCabin);
01352
01353 SegmentCabin& lPartnerMktSINBKKSegmentYCabin =
01354 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01355 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegment, lPartnerMktSINBKKSegmentYCabin);
01356 FacBomManager::linkWithParent (lPartnerMktSINBKKSegment, lPartnerMktSINBKKSegmentYCabin);
01357
01358
01359
01360 LegCabin& lPartnerBKKLegYCabin =
01361 FacBom<LegCabin>::instance().create (lYLegCabinKey);
01362 FacBomManager::addToListAndMap (lPartnerBKKLeg, lPartnerBKKLegYCabin);
01363 FacBomManager::linkWithParent (lPartnerBKKLeg, lPartnerBKKLegYCabin);
01364
01365 lCapacity = CabinCapacity_T(999);
01366 lPartnerBKKLegYCabin.setCapacities (lCapacity);
01367 lPartnerBKKLegYCabin.setAvailabilityPool (lCapacity);
01368
01369 FacBomManager::addToListAndMap (lPartnerBKKLegYCabin, lPartnerBKKHKGSegmentYCabin,
01370 lPartnerBKKHKGSegmentYCabin.getFullerKey());
01371 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin, lPartnerBKKLegYCabin,
01372 lPartnerBKKLegYCabin.getFullerKey());
01373
01374
01375
01376 FareFamily& lPartnerBKKHKGSegmentYCabin1Family =
01377 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01378 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin,
01379 lPartnerBKKHKGSegmentYCabin1Family);
01380 FacBomManager::linkWithParent (lPartnerBKKHKGSegmentYCabin,
01381 lPartnerBKKHKGSegmentYCabin1Family);
01382
01383 FareFamily& lPartnerMktSINBKKSegmentYCabin1Family =
01384 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01385 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegmentYCabin,
01386 lPartnerMktSINBKKSegmentYCabin1Family);
01387 FacBomManager::linkWithParent (lPartnerMktSINBKKSegmentYCabin,
01388 lPartnerMktSINBKKSegmentYCabin1Family);
01389
01390
01391
01392 BookingClass& lPartnerBKKHKGSegmentYCabin1FamilyYClass =
01393 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01394 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin1Family,
01395 lPartnerBKKHKGSegmentYCabin1FamilyYClass);
01396 FacBomManager::linkWithParent (lPartnerBKKHKGSegmentYCabin1Family,
01397 lPartnerBKKHKGSegmentYCabin1FamilyYClass);
01398
01399 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin,
01400 lPartnerBKKHKGSegmentYCabin1FamilyYClass);
01401 FacBomManager::addToListAndMap (lPartnerBKKHKGSegment,
01402 lPartnerBKKHKGSegmentYCabin1FamilyYClass);
01403
01404 BookingClass& lPartnerMktSINBKKSegmentYCabin1FamilyYClass =
01405 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01406 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegmentYCabin1Family,
01407 lPartnerMktSINBKKSegmentYCabin1FamilyYClass);
01408 FacBomManager::linkWithParent (lPartnerMktSINBKKSegmentYCabin1Family,
01409 lPartnerMktSINBKKSegmentYCabin1FamilyYClass);
01410
01411 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegmentYCabin,
01412 lPartnerMktSINBKKSegmentYCabin1FamilyYClass);
01413 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegment,
01414 lPartnerMktSINBKKSegmentYCabin1FamilyYClass);
01415
01416 BookingClass& lPartnerBKKHKGSegmentYCabin1FamilyMClass =
01417 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01418 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin1Family,
01419 lPartnerBKKHKGSegmentYCabin1FamilyMClass);
01420 FacBomManager::linkWithParent (lPartnerBKKHKGSegmentYCabin1Family,
01421 lPartnerBKKHKGSegmentYCabin1FamilyMClass);
01422
01423 FacBomManager::addToListAndMap (lPartnerBKKHKGSegmentYCabin,
01424 lPartnerBKKHKGSegmentYCabin1FamilyMClass);
01425 FacBomManager::addToListAndMap (lPartnerBKKHKGSegment,
01426 lPartnerBKKHKGSegmentYCabin1FamilyMClass);
01427
01428 BookingClass& lPartnerMktSINBKKSegmentYCabin1FamilyMClass =
01429 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01430 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegmentYCabin1Family,
01431 lPartnerMktSINBKKSegmentYCabin1FamilyMClass);
01432 FacBomManager::linkWithParent (lPartnerMktSINBKKSegmentYCabin1Family,
01433 lPartnerMktSINBKKSegmentYCabin1FamilyMClass);
01434
01435 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegmentYCabin,
01436 lPartnerMktSINBKKSegmentYCabin1FamilyMClass);
01437 FacBomManager::addToListAndMap (lPartnerMktSINBKKSegment,
01438 lPartnerMktSINBKKSegmentYCabin1FamilyMClass);
01439
01440
01441
01442 FacBomManager::addToListAndMap (lSINBKKSegment, lPartnerMktSINBKKSegment);
01443 lMktBKKHKGSegment.setIsOtherAirlineOperating(true);
01444 FacBomManager::addToListAndMap (lMktBKKHKGSegment, lPartnerBKKHKGSegment);
01445
01446
01447
01448
01449
01450 OnDString_T lSQSINBKKOnDStr = "SQ;11,2010-Feb-08;SIN,BKK";
01451 OnDString_T lMktSQBKKHKGOnDStr = "SQ;1200,2010-Feb-08;BKK,HKG";
01452 OnDStringList_T lOnDStringList;
01453 lOnDStringList.push_back (lSQSINBKKOnDStr);
01454 lOnDStringList.push_back (lMktSQBKKHKGOnDStr);
01455
01456 OnDDateKey lOnDDateKey (lOnDStringList);
01457 OnDDate& lSQ_SINHKG_OnDDate =
01458 FacBom<OnDDate>::instance().create (lOnDDateKey);
01459
01460 FacBomManager::addToListAndMap (lSQInv, lSQ_SINHKG_OnDDate);
01461 FacBomManager::linkWithParent (lSQInv, lSQ_SINHKG_OnDDate);
01462
01463
01464 FacBomManager::addToListAndMap (lSQ_SINHKG_OnDDate, lSINBKKSegment);
01465 FacBomManager::addToListAndMap (lSQ_SINHKG_OnDDate, lMktBKKHKGSegment);
01466
01467
01468 const MeanStdDevPair_T lMean60StdDev6 (60.0, 6.0);
01469 const WTP_T lWTP750 = 750.0;
01470 const WTPDemandPair_T lWTP750Mean60StdDev6 (lWTP750, lMean60StdDev6);
01471 lSQ_SINHKG_OnDDate.setTotalForecast (lY, lWTP750Mean60StdDev6);
01472
01473
01474 CabinClassPair_T lCC_YM1 (lY,lM);
01475 CabinClassPair_T lCC_YM2 (lY,lM);
01476 CabinClassPairList_T lCabinClassPairList;
01477 lCabinClassPairList.push_back(lCC_YM1);
01478 lCabinClassPairList.push_back(lCC_YM2);
01479 const MeanStdDevPair_T lMean20StdDev2 (20.0, 2.0);
01480 const Yield_T lYield850 = 850.0;
01481 const YieldDemandPair_T lYield850Mean20StdDev2 (lYield850, lMean20StdDev2);
01482 lSQ_SINHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield850Mean20StdDev2);
01483
01484 CabinClassPair_T lCC_YY1 (lY,lY);
01485 CabinClassPair_T lCC_YY2 (lY,lY);
01486 lCabinClassPairList.clear();
01487 lCabinClassPairList.push_back(lCC_YY1);
01488 lCabinClassPairList.push_back(lCC_YY2);
01489 const MeanStdDevPair_T lMean10StdDev1 (10.0, 1.0);
01490 const Yield_T lYield1200 = 1200.0;
01491 const YieldDemandPair_T lYield1200Mean10StdDev1 (lYield1200, lMean10StdDev1);
01492 lSQ_SINHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield1200Mean10StdDev1);
01493
01494
01495 lOnDStringList.clear();
01496 lOnDStringList.push_back (lSQSINBKKOnDStr);
01497
01498 lOnDDateKey = OnDDateKey(lOnDStringList);
01499 OnDDate& lSQ_SINBKK_OnDDate =
01500 FacBom<OnDDate>::instance().create (lOnDDateKey);
01501
01502 FacBomManager::addToListAndMap (lSQInv, lSQ_SINBKK_OnDDate);
01503 FacBomManager::linkWithParent (lSQInv, lSQ_SINBKK_OnDDate);
01504
01505
01506 FacBomManager::addToListAndMap (lSQ_SINBKK_OnDDate, lSINBKKSegment);
01507
01508
01509 const WTP_T lWTP400 = 400.0;
01510 const WTPDemandPair_T lWTP400Mean60StdDev6 (lWTP400, lMean60StdDev6);
01511 lSQ_SINBKK_OnDDate.setTotalForecast (lY, lWTP400Mean60StdDev6);
01512
01513
01514 lCabinClassPairList.clear();
01515 lCabinClassPairList.push_back(lCC_YM1);
01516 const MeanStdDevPair_T lMean20StdDev1 (20.0, 1.0);
01517 const Yield_T lYield500 = 500.0;
01518 const YieldDemandPair_T lYield500Mean20StdDev1 (lYield500, lMean20StdDev1);
01519 lSQ_SINBKK_OnDDate.setDemandInformation (lCabinClassPairList, lYield500Mean20StdDev1);
01520
01521 lCabinClassPairList.clear();
01522 lCabinClassPairList.push_back(lCC_YY1);
01523 const Yield_T lYield700 = 700.0;
01524 const YieldDemandPair_T lYield700Mean20StdDev1 (lYield700, lMean10StdDev1 );
01525 lSQ_SINBKK_OnDDate.setDemandInformation (lCabinClassPairList, lYield700Mean20StdDev1);
01526
01527
01528
01529
01530
01531
01532
01533
01534
01535
01536
01537
01538
01539
01540
01541
01542
01543
01544
01545
01546
01547
01548
01549
01550
01551
01552
01553 lFlightNumber = 12;
01554
01555 lFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01556
01557 FlightDate& lCX12_20100208_FD =
01558 FacBom<FlightDate>::instance().create (lFlightDateKey);
01559 FacBomManager::addToListAndMap (lCXInv, lCX12_20100208_FD);
01560 FacBomManager::linkWithParent (lCXInv, lCX12_20100208_FD);
01561
01562
01563 lFlightNumber = 1100;
01564
01565 lMktFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01566
01567 FlightDate& lCX1100_20100208_FD =
01568 FacBom<FlightDate>::instance().create (lMktFlightDateKey);
01569 FacBomManager::addToListAndMap (lCXInv, lCX1100_20100208_FD);
01570 FacBomManager::linkWithParent (lCXInv, lCX1100_20100208_FD);
01571
01572
01573
01574
01575
01576
01577
01578 lSegmentDateKey = SegmentDateKey (lBKK, lHKG);
01579
01580 SegmentDate& lBKKHKGSegment =
01581 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
01582 FacBomManager::addToListAndMap (lCX12_20100208_FD, lBKKHKGSegment);
01583 FacBomManager::linkWithParent (lCX12_20100208_FD, lBKKHKGSegment);
01584
01585
01586 lBKKHKGSegment.setBoardingDate (lDate);
01587 lBKKHKGSegment.setOffDate (lDate);
01588 lBKKHKGSegment.setBoardingTime (l1200);
01589 lBKKHKGSegment.setOffTime (l1540);
01590 lBKKHKGSegment.setElapsedTime (l0240);
01591
01592
01593 lMktSegmentDateKey = SegmentDateKey (lSIN, lBKK);
01594
01595 SegmentDate& lMktSINBKKSegment =
01596 FacBom<SegmentDate>::instance().create (lMktSegmentDateKey);
01597 FacBomManager::addToListAndMap (lCX1100_20100208_FD, lMktSINBKKSegment);
01598 FacBomManager::linkWithParent (lCX1100_20100208_FD, lMktSINBKKSegment);
01599
01600
01601 lMktSINBKKSegment.setBoardingDate (lDate);
01602 lMktSINBKKSegment.setOffDate (lDate);
01603 lMktSINBKKSegment.setBoardingTime (l0820);
01604 lMktSINBKKSegment.setOffTime (l1100);
01605 lMktSINBKKSegment.setElapsedTime (l0340);
01606
01607
01608
01609 lLegDateKey = LegDateKey (lBKK);
01610
01611 LegDate& lBKKLeg = FacBom<LegDate>::instance().create (lLegDateKey);
01612 FacBomManager::addToListAndMap (lCX12_20100208_FD, lBKKLeg);
01613 FacBomManager::linkWithParent (lCX12_20100208_FD, lBKKLeg);
01614
01615
01616 lBKKLeg.setOffPoint (lHKG);
01617 lBKKLeg.setBoardingDate (lDate);
01618 lBKKLeg.setOffDate (lDate);
01619 lBKKLeg.setBoardingTime (l1200);
01620 lBKKLeg.setOffTime (l1540);
01621 lBKKLeg.setElapsedTime (l0240);
01622
01623
01624
01625
01626
01627 FacBomManager::addToListAndMap (lBKKLeg, lBKKHKGSegment);
01628 FacBomManager::addToListAndMap (lBKKHKGSegment, lBKKLeg);
01629
01630
01631
01632 SegmentCabin& lBKKHKGSegmentYCabin =
01633 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01634 FacBomManager::addToListAndMap (lBKKHKGSegment, lBKKHKGSegmentYCabin);
01635 FacBomManager::linkWithParent (lBKKHKGSegment, lBKKHKGSegmentYCabin);
01636
01637
01638 SegmentCabin& lMktSINBKKSegmentYCabin =
01639 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01640 FacBomManager::addToListAndMap (lMktSINBKKSegment, lMktSINBKKSegmentYCabin);
01641 FacBomManager::linkWithParent (lMktSINBKKSegment, lMktSINBKKSegmentYCabin);
01642
01643
01644
01645 LegCabin& lBKKLegYCabin =
01646 FacBom<LegCabin>::instance().create (lYLegCabinKey);
01647 FacBomManager::addToListAndMap (lBKKLeg, lBKKLegYCabin);
01648 FacBomManager::linkWithParent (lBKKLeg, lBKKLegYCabin);
01649
01650 lCapacity = CabinCapacity_T(100);
01651 lBKKLegYCabin.setCapacities (lCapacity);
01652 lBKKLegYCabin.setAvailabilityPool (lCapacity);
01653
01654
01655 FacBomManager::addToListAndMap (lBKKLegYCabin, lBKKHKGSegmentYCabin,
01656 lBKKHKGSegmentYCabin.getFullerKey());
01657 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin, lBKKLegYCabin,
01658 lBKKLegYCabin.getFullerKey());
01659
01660
01661
01662 FareFamily& lBKKHKGSegmentYCabin1Family =
01663 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01664 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin,
01665 lBKKHKGSegmentYCabin1Family);
01666 FacBomManager::linkWithParent (lBKKHKGSegmentYCabin,
01667 lBKKHKGSegmentYCabin1Family);
01668
01669
01670 FareFamily& lMktSINBKKSegmentYCabin1Family =
01671 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01672 FacBomManager::addToListAndMap (lMktSINBKKSegmentYCabin,
01673 lMktSINBKKSegmentYCabin1Family);
01674 FacBomManager::linkWithParent (lMktSINBKKSegmentYCabin,
01675 lMktSINBKKSegmentYCabin1Family);
01676
01677
01678
01679
01680
01681 BookingClass& lBKKHKGSegmentYCabin1FamilyYClass =
01682 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01683 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin1Family,
01684 lBKKHKGSegmentYCabin1FamilyYClass);
01685 FacBomManager::linkWithParent (lBKKHKGSegmentYCabin1Family,
01686 lBKKHKGSegmentYCabin1FamilyYClass);
01687
01688 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin,
01689 lBKKHKGSegmentYCabin1FamilyYClass);
01690 FacBomManager::addToListAndMap (lBKKHKGSegment,
01691 lBKKHKGSegmentYCabin1FamilyYClass);
01692
01693 lBKKHKGSegmentYCabin1FamilyYClass.setYield(700);
01694
01695
01696
01697 BookingClass& lMktSINBKKSegmentYCabin1FamilyYClass =
01698 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01699 FacBomManager::addToListAndMap (lMktSINBKKSegmentYCabin1Family,
01700 lMktSINBKKSegmentYCabin1FamilyYClass);
01701 FacBomManager::linkWithParent (lMktSINBKKSegmentYCabin1Family,
01702 lMktSINBKKSegmentYCabin1FamilyYClass);
01703
01704 FacBomManager::addToListAndMap (lMktSINBKKSegmentYCabin,
01705 lMktSINBKKSegmentYCabin1FamilyYClass);
01706 FacBomManager::addToListAndMap (lMktSINBKKSegment,
01707 lMktSINBKKSegmentYCabin1FamilyYClass);
01708
01709 lMktSINBKKSegmentYCabin1FamilyYClass.setYield(700);
01710
01711
01712
01713 BookingClass& lBKKHKGSegmentYCabin1FamilyMClass =
01714 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01715 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin1Family,
01716 lBKKHKGSegmentYCabin1FamilyMClass);
01717 FacBomManager::linkWithParent (lBKKHKGSegmentYCabin1Family,
01718 lBKKHKGSegmentYCabin1FamilyMClass);
01719
01720 FacBomManager::addToListAndMap (lBKKHKGSegmentYCabin,
01721 lBKKHKGSegmentYCabin1FamilyMClass);
01722 FacBomManager::addToListAndMap (lBKKHKGSegment,
01723 lBKKHKGSegmentYCabin1FamilyMClass);
01724
01725 lBKKHKGSegmentYCabin1FamilyMClass.setYield(500);
01726
01727
01728
01729 BookingClass& lMktSINBKKSegmentYCabin1FamilyMClass =
01730 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01731 FacBomManager::addToListAndMap (lMktSINBKKSegmentYCabin1Family,
01732 lMktSINBKKSegmentYCabin1FamilyMClass);
01733 FacBomManager::linkWithParent (lMktSINBKKSegmentYCabin1Family,
01734 lMktSINBKKSegmentYCabin1FamilyMClass);
01735
01736 FacBomManager::addToListAndMap (lMktSINBKKSegmentYCabin,
01737 lMktSINBKKSegmentYCabin1FamilyMClass);
01738 FacBomManager::addToListAndMap (lMktSINBKKSegment,
01739 lMktSINBKKSegmentYCabin1FamilyMClass);
01740
01741 lMktSINBKKSegmentYCabin1FamilyMClass.setYield(500);
01742
01743
01744
01745
01746 const InventoryKey lPartnerSQKey ("SQ");
01747 Inventory& lPartnerSQInv = FacBom<Inventory>::instance().create (lPartnerSQKey);
01748 FacBomManager::addToListAndMap (lCXInv, lPartnerSQInv);
01749 FacBomManager::linkWithParent (lCXInv, lPartnerSQInv);
01750
01751
01752 lFlightNumber = 11;
01753 lFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01754
01755 FlightDate& lPartnerSQ11_20100208_FD =
01756 FacBom<FlightDate>::instance().create (lFlightDateKey);
01757 FacBomManager::addToListAndMap (lPartnerSQInv, lPartnerSQ11_20100208_FD);
01758 FacBomManager::linkWithParent (lPartnerSQInv, lPartnerSQ11_20100208_FD);
01759
01760 lFlightNumber = 1200;
01761 lMktFlightDateKey = FlightDateKey (lFlightNumber, lDate);
01762
01763 FlightDate& lPartnerSQ1200_20100208_FD =
01764 FacBom<FlightDate>::instance().create (lMktFlightDateKey);
01765 FacBomManager::addToListAndMap (lPartnerSQInv, lPartnerSQ1200_20100208_FD);
01766 FacBomManager::linkWithParent (lPartnerSQInv, lPartnerSQ1200_20100208_FD);
01767
01768
01769 lSegmentDateKey = SegmentDateKey (lSIN, lBKK);
01770
01771 SegmentDate& lPartnerSINBKKSegment =
01772 FacBom<SegmentDate>::instance().create (lSegmentDateKey);
01773 FacBomManager::addToListAndMap (lPartnerSQ11_20100208_FD, lPartnerSINBKKSegment);
01774 FacBomManager::linkWithParent (lPartnerSQ11_20100208_FD, lPartnerSINBKKSegment);
01775
01776 lPartnerSINBKKSegment.setBoardingDate (lDate);
01777 lPartnerSINBKKSegment.setOffDate (lDate);
01778 lPartnerSINBKKSegment.setBoardingTime (l0820);
01779 lPartnerSINBKKSegment.setOffTime (l1100);
01780 lPartnerSINBKKSegment.setElapsedTime (l0340);
01781
01782 lMktSegmentDateKey = SegmentDateKey (lBKK, lHKG);
01783
01784 SegmentDate& lPartnerMktBKKHKGSegment =
01785 FacBom<SegmentDate>::instance().create (lMktSegmentDateKey);
01786 FacBomManager::addToListAndMap (lPartnerSQ1200_20100208_FD, lPartnerMktBKKHKGSegment);
01787 FacBomManager::linkWithParent (lPartnerSQ1200_20100208_FD, lPartnerMktBKKHKGSegment);
01788
01789 lPartnerMktBKKHKGSegment.setBoardingDate (lDate);
01790 lPartnerMktBKKHKGSegment.setOffDate (lDate);
01791 lPartnerMktBKKHKGSegment.setBoardingTime (l1200);
01792 lPartnerMktBKKHKGSegment.setOffTime (l1540);
01793 lPartnerMktBKKHKGSegment.setElapsedTime (l0240);
01794
01795
01796 lLegDateKey = LegDateKey (lSIN);
01797
01798 LegDate& lPartnerSINLeg = FacBom<LegDate>::instance().create (lLegDateKey);
01799 FacBomManager::addToListAndMap (lPartnerSQ11_20100208_FD, lPartnerSINLeg);
01800 FacBomManager::linkWithParent (lPartnerSQ11_20100208_FD, lPartnerSINLeg);
01801
01802 lPartnerSINLeg.setOffPoint (lBKK);
01803 lPartnerSINLeg.setBoardingDate (lDate);
01804 lPartnerSINLeg.setOffDate (lDate);
01805 lPartnerSINLeg.setBoardingTime (l0820);
01806 lPartnerSINLeg.setOffTime (l1100);
01807 lPartnerSINLeg.setElapsedTime (l0340);
01808
01809 FacBomManager::addToListAndMap (lPartnerSINLeg, lPartnerSINBKKSegment);
01810 FacBomManager::addToListAndMap (lPartnerSINBKKSegment, lPartnerSINLeg);
01811
01812
01813
01814 SegmentCabin& lPartnerSINBKKSegmentYCabin =
01815 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01816 FacBomManager::addToListAndMap (lPartnerSINBKKSegment, lPartnerSINBKKSegmentYCabin);
01817 FacBomManager::linkWithParent (lPartnerSINBKKSegment, lPartnerSINBKKSegmentYCabin);
01818
01819 SegmentCabin& lPartnerMktBKKHKGSegmentYCabin =
01820 FacBom<SegmentCabin>::instance().create (lYSegmentCabinKey);
01821 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegment, lPartnerMktBKKHKGSegmentYCabin);
01822 FacBomManager::linkWithParent (lPartnerMktBKKHKGSegment, lPartnerMktBKKHKGSegmentYCabin);
01823
01824
01825
01826 LegCabin& lPartnerSINLegYCabin =
01827 FacBom<LegCabin>::instance().create (lYLegCabinKey);
01828 FacBomManager::addToListAndMap (lPartnerSINLeg, lPartnerSINLegYCabin);
01829 FacBomManager::linkWithParent (lPartnerSINLeg, lPartnerSINLegYCabin);
01830
01831 lCapacity = CabinCapacity_T(999);
01832 lPartnerSINLegYCabin.setCapacities (lCapacity);
01833 lPartnerSINLegYCabin.setAvailabilityPool (lCapacity);
01834
01835 FacBomManager::addToListAndMap (lPartnerSINLegYCabin, lPartnerSINBKKSegmentYCabin,
01836 lPartnerSINBKKSegmentYCabin.getFullerKey());
01837 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin, lPartnerSINLegYCabin,
01838 lPartnerSINLegYCabin.getFullerKey());
01839
01840
01841
01842 FareFamily& lPartnerSINBKKSegmentYCabin1Family =
01843 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01844 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin,
01845 lPartnerSINBKKSegmentYCabin1Family);
01846 FacBomManager::linkWithParent (lPartnerSINBKKSegmentYCabin,
01847 lPartnerSINBKKSegmentYCabin1Family);
01848
01849 FareFamily& lPartnerMktBKKHKGSegmentYCabin1Family =
01850 FacBom<FareFamily>::instance().create (l1FareFamilyKey);
01851 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegmentYCabin,
01852 lPartnerMktBKKHKGSegmentYCabin1Family);
01853 FacBomManager::linkWithParent (lPartnerMktBKKHKGSegmentYCabin,
01854 lPartnerMktBKKHKGSegmentYCabin1Family);
01855
01856
01857
01858
01859 BookingClass& lPartnerSINBKKSegmentYCabin1FamilyYClass =
01860 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01861 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin1Family,
01862 lPartnerSINBKKSegmentYCabin1FamilyYClass);
01863 FacBomManager::linkWithParent (lPartnerSINBKKSegmentYCabin1Family,
01864 lPartnerSINBKKSegmentYCabin1FamilyYClass);
01865
01866 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin,
01867 lPartnerSINBKKSegmentYCabin1FamilyYClass);
01868 FacBomManager::addToListAndMap (lPartnerSINBKKSegment,
01869 lPartnerSINBKKSegmentYCabin1FamilyYClass);
01870
01871 BookingClass& lPartnerMktBKKHKGSegmentYCabin1FamilyYClass =
01872 FacBom<BookingClass>::instance().create (lYBookingClassKey);
01873 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegmentYCabin1Family,
01874 lPartnerMktBKKHKGSegmentYCabin1FamilyYClass);
01875 FacBomManager::linkWithParent (lPartnerMktBKKHKGSegmentYCabin1Family,
01876 lPartnerMktBKKHKGSegmentYCabin1FamilyYClass);
01877
01878 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegmentYCabin,
01879 lPartnerMktBKKHKGSegmentYCabin1FamilyYClass);
01880 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegment,
01881 lPartnerMktBKKHKGSegmentYCabin1FamilyYClass);
01882
01883 BookingClass& lPartnerSINBKKSegmentYCabin1FamilyMClass =
01884 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01885 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin1Family,
01886 lPartnerSINBKKSegmentYCabin1FamilyMClass);
01887 FacBomManager::linkWithParent (lPartnerSINBKKSegmentYCabin1Family,
01888 lPartnerSINBKKSegmentYCabin1FamilyMClass);
01889
01890 FacBomManager::addToListAndMap (lPartnerSINBKKSegmentYCabin,
01891 lPartnerSINBKKSegmentYCabin1FamilyMClass);
01892 FacBomManager::addToListAndMap (lPartnerSINBKKSegment,
01893 lPartnerSINBKKSegmentYCabin1FamilyMClass);
01894
01895 BookingClass& lPartnerMktBKKHKGSegmentYCabin1FamilyMClass =
01896 FacBom<BookingClass>::instance().create (lMBookingClassKey);
01897 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegmentYCabin1Family,
01898 lPartnerMktBKKHKGSegmentYCabin1FamilyMClass);
01899 FacBomManager::linkWithParent (lPartnerMktBKKHKGSegmentYCabin1Family,
01900 lPartnerMktBKKHKGSegmentYCabin1FamilyMClass);
01901
01902 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegmentYCabin,
01903 lPartnerMktBKKHKGSegmentYCabin1FamilyMClass);
01904 FacBomManager::addToListAndMap (lPartnerMktBKKHKGSegment,
01905 lPartnerMktBKKHKGSegmentYCabin1FamilyMClass);
01906
01907
01908 FacBomManager::addToListAndMap (lBKKHKGSegment, lPartnerMktBKKHKGSegment);
01909 lMktSINBKKSegment.setIsOtherAirlineOperating(true);
01910 FacBomManager::addToListAndMap (lMktSINBKKSegment, lPartnerSINBKKSegment);
01911
01912
01913
01914
01915
01916 OnDString_T lMktCXSINBKKOnDStr = "CX;1100,2010-Feb-08;SIN,BKK";
01917 OnDString_T lCXBKKHKGOnDStr = "CX;12,2010-Feb-08;BKK,HKG";
01918 lOnDStringList.clear();
01919 lOnDStringList.push_back (lMktCXSINBKKOnDStr);
01920 lOnDStringList.push_back (lCXBKKHKGOnDStr);
01921
01922 lOnDDateKey = OnDDateKey(lOnDStringList);
01923 OnDDate& lCX_SINHKG_OnDDate =
01924 FacBom<OnDDate>::instance().create (lOnDDateKey);
01925
01926 FacBomManager::addToListAndMap (lCXInv, lCX_SINHKG_OnDDate);
01927 FacBomManager::linkWithParent (lCXInv, lCX_SINHKG_OnDDate);
01928
01929
01930 FacBomManager::addToListAndMap (lCX_SINHKG_OnDDate, lMktSINBKKSegment);
01931 FacBomManager::addToListAndMap (lCX_SINHKG_OnDDate, lBKKHKGSegment);
01932
01933
01934 lCX_SINHKG_OnDDate.setTotalForecast (lY, lWTP750Mean60StdDev6);
01935
01936
01937 lCabinClassPairList.clear();
01938 lCabinClassPairList.push_back(lCC_YM1);
01939 lCabinClassPairList.push_back(lCC_YM2);
01940 lCX_SINHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield850Mean20StdDev2);
01941
01942 lCabinClassPairList.clear();
01943 lCabinClassPairList.push_back(lCC_YY1);
01944 lCabinClassPairList.push_back(lCC_YY2);
01945 lCX_SINHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield1200Mean10StdDev1);
01946
01947
01948
01949
01950
01951
01952
01953
01954
01955
01956
01957
01958
01959
01960
01961
01962
01963
01964
01965
01966
01967
01968
01969
01970 lOnDStringList.clear();
01971 lOnDStringList.push_back (lCXBKKHKGOnDStr);
01972
01973 lOnDDateKey = OnDDateKey(lOnDStringList);
01974 OnDDate& lCX_BKKHKG_OnDDate =
01975 FacBom<OnDDate>::instance().create (lOnDDateKey);
01976
01977 FacBomManager::addToListAndMap (lCXInv, lCX_BKKHKG_OnDDate);
01978 FacBomManager::linkWithParent (lCXInv, lCX_BKKHKG_OnDDate);
01979
01980
01981 FacBomManager::addToListAndMap (lCX_BKKHKG_OnDDate, lBKKHKGSegment);
01982
01983
01984 lCX_BKKHKG_OnDDate.setTotalForecast (lY, lWTP400Mean60StdDev6);
01985
01986
01987 lCabinClassPairList.clear();
01988 lCabinClassPairList.push_back(lCC_YM2);
01989 lCX_BKKHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield500Mean20StdDev1);
01990
01991 lCabinClassPairList.clear();
01992 lCabinClassPairList.push_back(lCC_YY2);
01993 const YieldDemandPair_T lYield700Mean10StdDev1 (lYield700, lMean10StdDev1 );
01994 lCX_BKKHKG_OnDDate.setDemandInformation (lCabinClassPairList, lYield700Mean10StdDev1);
01995
01996
01997
01998
01999
02000
02001
02002
02003 const DoWStruct lDoWSrtuct ("1111111");
02004 const Date_T lDateRangeStart (2010, boost::gregorian::Feb, 8);
02005 const Date_T lDateRangeEnd (2010, boost::gregorian::Feb, 9);
02006 const DatePeriod_T lDatePeriod (lDateRangeStart, lDateRangeEnd);
02007 const PeriodStruct lPeriodStruct (lDatePeriod,lDoWSrtuct);
02008
02009 lFlightNumber = FlightNumber_T (11);
02010
02011 FlightPeriodKey lFlightPeriodKey (lFlightNumber, lPeriodStruct);
02012
02013 FlightPeriod& lSQ11FlightPeriod =
02014 FacBom<FlightPeriod>::instance().create (lFlightPeriodKey);
02015 FacBomManager::addToListAndMap (lSQInv, lSQ11FlightPeriod);
02016 FacBomManager::linkWithParent (lSQInv, lSQ11FlightPeriod);
02017
02018
02019
02020
02021 SegmentPeriodKey lSegmentPeriodKey (lSIN, lBKK);
02022
02023 SegmentPeriod& lSINBKKSegmentPeriod =
02024 FacBom<SegmentPeriod>::instance().create (lSegmentPeriodKey);
02025 FacBomManager::addToListAndMap (lSQ11FlightPeriod, lSINBKKSegmentPeriod);
02026 FacBomManager::linkWithParent (lSQ11FlightPeriod, lSINBKKSegmentPeriod);
02027
02028 lSINBKKSegmentPeriod.setBoardingTime (l0820);
02029 lSINBKKSegmentPeriod.setOffTime (l1100);
02030 lSINBKKSegmentPeriod.setElapsedTime (l0340);
02031 ClassList_String_T lYM ("YM");
02032 lSINBKKSegmentPeriod.addCabinBookingClassList (lY,lYM);
02033
02034
02035
02036
02037 lFlightNumber = FlightNumber_T (12);
02038
02039 lFlightPeriodKey = FlightPeriodKey(lFlightNumber, lPeriodStruct);
02040
02041 FlightPeriod& lCX12FlightPeriod =
02042 FacBom<FlightPeriod>::instance().create (lFlightPeriodKey);
02043 FacBomManager::addToListAndMap (lCXInv, lCX12FlightPeriod);
02044 FacBomManager::linkWithParent (lCXInv, lCX12FlightPeriod);
02045
02046
02047
02048
02049 lSegmentPeriodKey = SegmentPeriodKey (lBKK, lHKG);
02050
02051 SegmentPeriod& lBKKHKGSegmentPeriod =
02052 FacBom<SegmentPeriod>::instance().create (lSegmentPeriodKey);
02053 FacBomManager::addToListAndMap (lCX12FlightPeriod, lBKKHKGSegmentPeriod);
02054 FacBomManager::linkWithParent (lCX12FlightPeriod, lBKKHKGSegmentPeriod);
02055
02056 lBKKHKGSegmentPeriod.setBoardingTime (l1200);
02057 lBKKHKGSegmentPeriod.setOffTime (l1540);
02058 lBKKHKGSegmentPeriod.setElapsedTime (l0240);
02059 lBKKHKGSegmentPeriod.addCabinBookingClassList (lY,lYM);
02060
02061 }
02062
02063
02064 void CmdBomManager::buildPartnershipsSamplePricing (BomRoot& ioBomRoot) {
02065
02067
02068
02069
02070
02071 AirportPairKey lAirportPairKey ("SIN", "BKK");
02072
02073
02074 AirportPair& lSINBKKAirportPair =
02075 FacBom<AirportPair>::instance().create (lAirportPairKey);
02076 FacBomManager::addToListAndMap (ioBomRoot, lSINBKKAirportPair);
02077 FacBomManager::linkWithParent (ioBomRoot, lSINBKKAirportPair);
02078
02079
02080 const Date_T lDateRangeStart (2010, boost::gregorian::Jan, 15);
02081 const Date_T lDateRangeEnd (2010, boost::gregorian::Dec, 31);
02082 const DatePeriod_T lDateRange (lDateRangeStart, lDateRangeEnd);
02083 const DatePeriodKey lDatePeriodKey (lDateRange);
02084
02085
02086 DatePeriod& lSINBKKDatePeriod =
02087 FacBom<DatePeriod>::instance().create (lDatePeriodKey);
02088 FacBomManager::addToListAndMap (lSINBKKAirportPair, lSINBKKDatePeriod);
02089 FacBomManager::linkWithParent (lSINBKKAirportPair, lSINBKKDatePeriod);
02090
02091
02092 PosChannelKey lPosChannelKey ("SIN","IN");
02093
02094
02095 PosChannel& lSINPosChannel =
02096 FacBom<PosChannel>::instance().create (lPosChannelKey);
02097 FacBomManager::addToListAndMap (lSINBKKDatePeriod, lSINPosChannel);
02098 FacBomManager::linkWithParent (lSINBKKDatePeriod, lSINPosChannel);
02099
02100
02101 const Time_T lTimeRangeStart (0, 0, 0);
02102 const Time_T lTimeRangeEnd (23, 0, 0);
02103 const TimePeriodKey lFareTimePeriodKey (lTimeRangeStart,
02104 lTimeRangeEnd);
02105
02106
02107 TimePeriod& lSINBKKFareTimePeriod =
02108 FacBom<TimePeriod>::instance().create (lFareTimePeriodKey);
02109 FacBomManager::addToListAndMap (lSINPosChannel, lSINBKKFareTimePeriod);
02110 FacBomManager::linkWithParent (lSINPosChannel, lSINBKKFareTimePeriod);
02111
02112
02113 const FareFeaturesKey lFareFeaturesKey (TRIP_TYPE_ONE_WAY,
02114 NO_ADVANCE_PURCHASE,
02115 SATURDAY_STAY,
02116 CHANGE_FEES,
02117 NON_REFUNDABLE,
02118 NO_STAY_DURATION);
02119
02120
02121 FareFeatures& lSINBKKFareFeatures =
02122 FacBom<FareFeatures>::instance().create (lFareFeaturesKey);
02123 FacBomManager::addToListAndMap (lSINBKKFareTimePeriod, lSINBKKFareFeatures);
02124 FacBomManager::linkWithParent (lSINBKKFareTimePeriod, lSINBKKFareFeatures);
02125
02126
02127 AirlineCodeList_T lSQAirlineCodeList;
02128 lSQAirlineCodeList.push_back ("SQ");
02129
02130 ClassList_StringList_T lYClassCodeList;
02131 lYClassCodeList.push_back ("Y");
02132 const AirlineClassListKey lSQAirlineYClassListKey (lSQAirlineCodeList,
02133 lYClassCodeList);
02134
02135 ClassList_StringList_T lMClassCodeList;
02136 lMClassCodeList.push_back ("M");
02137 const AirlineClassListKey lSQAirlineMClassListKey (lSQAirlineCodeList,
02138 lMClassCodeList);
02139
02140
02141 AirlineClassList& lSQAirlineYClassList =
02142 stdair::FacBom<AirlineClassList>::instance().create (lSQAirlineYClassListKey);
02143 lSQAirlineYClassList.setFare(700);
02144 FacBomManager::addToListAndMap (lSINBKKFareFeatures, lSQAirlineYClassList);
02145 FacBomManager::linkWithParent (lSINBKKFareFeatures, lSQAirlineYClassList);
02146
02147 AirlineClassList& lSQAirlineMClassList =
02148 stdair::FacBom<AirlineClassList>::instance().create (lSQAirlineMClassListKey);
02149 lSQAirlineMClassList.setFare(500);
02150 FacBomManager::addToListAndMap (lSINBKKFareFeatures, lSQAirlineMClassList);
02151 FacBomManager::linkWithParent (lSINBKKFareFeatures, lSQAirlineMClassList);
02152
02153
02154
02155
02156 lAirportPairKey = AirportPairKey ("BKK", "HKG");
02157
02158
02159 AirportPair& lBKKHKGAirportPair =
02160 FacBom<AirportPair>::instance().create (lAirportPairKey);
02161 FacBomManager::addToListAndMap (ioBomRoot, lBKKHKGAirportPair);
02162 FacBomManager::linkWithParent (ioBomRoot, lBKKHKGAirportPair);
02163
02164
02165
02166
02167
02168 DatePeriod& lBKKHKGDatePeriod =
02169 FacBom<DatePeriod>::instance().create (lDatePeriodKey);
02170 FacBomManager::addToListAndMap (lBKKHKGAirportPair, lBKKHKGDatePeriod);
02171 FacBomManager::linkWithParent (lBKKHKGAirportPair, lBKKHKGDatePeriod);
02172
02173
02174 lPosChannelKey = PosChannelKey("BKK","IN");
02175
02176
02177 PosChannel& lBKKPosChannel =
02178 FacBom<PosChannel>::instance().create (lPosChannelKey);
02179 FacBomManager::addToListAndMap (lBKKHKGDatePeriod, lBKKPosChannel);
02180 FacBomManager::linkWithParent (lBKKHKGDatePeriod, lBKKPosChannel);
02181
02182
02183
02184
02185
02186 TimePeriod& lBKKHKGFareTimePeriod =
02187 FacBom<TimePeriod>::instance().create (lFareTimePeriodKey);
02188 FacBomManager::addToListAndMap (lBKKPosChannel, lBKKHKGFareTimePeriod);
02189 FacBomManager::linkWithParent (lBKKPosChannel, lBKKHKGFareTimePeriod);
02190
02191
02192
02193
02194
02195 FareFeatures& lBKKHKGFareFeatures =
02196 FacBom<FareFeatures>::instance().create (lFareFeaturesKey);
02197 FacBomManager::addToListAndMap (lBKKHKGFareTimePeriod, lBKKHKGFareFeatures);
02198 FacBomManager::linkWithParent (lBKKHKGFareTimePeriod, lBKKHKGFareFeatures);
02199
02200
02201 AirlineCodeList_T lCXAirlineCodeList;
02202 lCXAirlineCodeList.push_back ("CX");
02203
02204 const AirlineClassListKey lCXAirlineYClassListKey (lCXAirlineCodeList,
02205 lYClassCodeList);
02206
02207 const AirlineClassListKey lCXAirlineMClassListKey (lCXAirlineCodeList,
02208 lMClassCodeList);
02209
02210
02211 AirlineClassList& lCXAirlineYClassList =
02212 stdair::FacBom<AirlineClassList>::instance().create (lCXAirlineYClassListKey);
02213 lCXAirlineYClassList.setFare(700);
02214 FacBomManager::addToListAndMap (lBKKHKGFareFeatures, lCXAirlineYClassList);
02215 FacBomManager::linkWithParent (lBKKHKGFareFeatures, lCXAirlineYClassList);
02216
02217 AirlineClassList& lCXAirlineMClassList =
02218 stdair::FacBom<AirlineClassList>::instance().create (lCXAirlineMClassListKey);
02219 lCXAirlineMClassList.setFare(500);
02220 FacBomManager::addToListAndMap (lBKKHKGFareFeatures, lCXAirlineMClassList);
02221 FacBomManager::linkWithParent (lBKKHKGFareFeatures, lCXAirlineMClassList);
02222
02223
02224
02225
02226 lAirportPairKey = AirportPairKey ("SIN", "HKG");
02227
02228
02229 AirportPair& lSINHKGAirportPair =
02230 FacBom<AirportPair>::instance().create (lAirportPairKey);
02231 FacBomManager::addToListAndMap (ioBomRoot, lSINHKGAirportPair);
02232 FacBomManager::linkWithParent (ioBomRoot, lSINHKGAirportPair);
02233
02234
02235
02236
02237
02238 DatePeriod& lSINHKGDatePeriod =
02239 FacBom<DatePeriod>::instance().create (lDatePeriodKey);
02240 FacBomManager::addToListAndMap (lSINHKGAirportPair, lSINHKGDatePeriod);
02241 FacBomManager::linkWithParent (lSINHKGAirportPair, lSINHKGDatePeriod);
02242
02243
02244 lPosChannelKey = PosChannelKey("SIN","IN");
02245
02246
02247 PosChannel& lOnDSINPosChannel =
02248 FacBom<PosChannel>::instance().create (lPosChannelKey);
02249 FacBomManager::addToListAndMap (lSINHKGDatePeriod, lOnDSINPosChannel);
02250 FacBomManager::linkWithParent (lSINHKGDatePeriod, lOnDSINPosChannel);
02251
02252
02253
02254
02255
02256 TimePeriod& lSINHKGFareTimePeriod =
02257 FacBom<TimePeriod>::instance().create (lFareTimePeriodKey);
02258 FacBomManager::addToListAndMap (lOnDSINPosChannel, lSINHKGFareTimePeriod);
02259 FacBomManager::linkWithParent (lOnDSINPosChannel, lSINHKGFareTimePeriod);
02260
02261
02262
02263
02264
02265 FareFeatures& lSINHKGFareFeatures =
02266 FacBom<FareFeatures>::instance().create (lFareFeaturesKey);
02267 FacBomManager::addToListAndMap (lSINHKGFareTimePeriod, lSINHKGFareFeatures);
02268 FacBomManager::linkWithParent (lSINHKGFareTimePeriod, lSINHKGFareFeatures);
02269
02270
02271 AirlineCodeList_T lSQ_CXAirlineCodeList;
02272 lSQ_CXAirlineCodeList.push_back ("SQ");
02273 lSQ_CXAirlineCodeList.push_back ("CX");
02274
02275 ClassList_StringList_T lY_YClassCodeList;
02276 lY_YClassCodeList.push_back ("Y");
02277 lY_YClassCodeList.push_back ("Y");
02278 const AirlineClassListKey lSQ_CXAirlineYClassListKey (lSQ_CXAirlineCodeList,
02279 lY_YClassCodeList);
02280
02281 ClassList_StringList_T lM_MClassCodeList;
02282 lM_MClassCodeList.push_back ("M");
02283 lM_MClassCodeList.push_back ("M");
02284 const AirlineClassListKey lSQ_CXAirlineMClassListKey (lSQ_CXAirlineCodeList,
02285 lM_MClassCodeList);
02286
02287
02288 AirlineClassList& lSQ_CXAirlineYClassList =
02289 stdair::FacBom<AirlineClassList>::instance().create (lSQ_CXAirlineYClassListKey);
02290 lSQ_CXAirlineYClassList.setFare(1200);
02291 FacBomManager::addToListAndMap (lSINHKGFareFeatures, lSQ_CXAirlineYClassList);
02292 FacBomManager::linkWithParent (lSINHKGFareFeatures, lSQ_CXAirlineYClassList);
02293
02294 AirlineClassList& lSQ_CXAirlineMClassList =
02295 stdair::FacBom<AirlineClassList>::instance().create (lSQ_CXAirlineMClassListKey);
02296 lSQ_CXAirlineMClassList.setFare(850);
02297 FacBomManager::addToListAndMap (lSINHKGFareFeatures, lSQ_CXAirlineMClassList);
02298 FacBomManager::linkWithParent (lSINHKGFareFeatures, lSQ_CXAirlineMClassList);
02299
02300
02302
02303
02304
02305
02306
02307
02308 lPosChannelKey = PosChannelKey(DEFAULT_POS, DEFAULT_CHANNEL);
02309
02310
02311 PosChannel& lRAC_SINBKKPosChannel =
02312 FacBom<PosChannel>::instance().create (lPosChannelKey);
02313 FacBomManager::addToListAndMap (lSINBKKDatePeriod, lRAC_SINBKKPosChannel);
02314 FacBomManager::linkWithParent (lSINBKKDatePeriod, lRAC_SINBKKPosChannel);
02315
02316
02317 const TimePeriodKey lYieldTimePeriodKey (lTimeRangeStart,
02318 lTimeRangeEnd);
02319
02320
02321 TimePeriod& lSINBKKYieldTimePeriod =
02322 FacBom<TimePeriod>::instance().create (lYieldTimePeriodKey);
02323 FacBomManager::addToListAndMap (lRAC_SINBKKPosChannel, lSINBKKYieldTimePeriod);
02324 FacBomManager::linkWithParent (lRAC_SINBKKPosChannel, lSINBKKYieldTimePeriod);
02325
02326
02327 const YieldFeaturesKey lYieldFeaturesKey (TRIP_TYPE_ONE_WAY,
02328 CABIN_Y);
02329
02330
02331 YieldFeatures& lSINBKKYieldFeatures =
02332 FacBom<YieldFeatures>::instance().create (lYieldFeaturesKey);
02333 FacBomManager::addToListAndMap (lSINBKKYieldTimePeriod, lSINBKKYieldFeatures);
02334 FacBomManager::linkWithParent (lSINBKKYieldTimePeriod, lSINBKKYieldFeatures);
02335
02336
02337
02338
02339
02340 AirlineClassList& lRAC_SQAirlineYClassList =
02341 stdair::FacBom<AirlineClassList>::instance().create (lSQAirlineYClassListKey);
02342 lRAC_SQAirlineYClassList.setYield(700);
02343 FacBomManager::addToListAndMap (lSINBKKYieldFeatures, lRAC_SQAirlineYClassList);
02344 FacBomManager::linkWithParent (lSINBKKYieldFeatures, lRAC_SQAirlineYClassList);
02345
02346 AirlineClassList& lRAC_SQAirlineMClassList =
02347 stdair::FacBom<AirlineClassList>::instance().create (lSQAirlineMClassListKey);
02348 lRAC_SQAirlineMClassList.setYield(500);
02349 FacBomManager::addToListAndMap (lSINBKKYieldFeatures, lRAC_SQAirlineMClassList);
02350 FacBomManager::linkWithParent (lSINBKKYieldFeatures, lRAC_SQAirlineMClassList);
02351
02352
02353
02354
02355
02356
02357
02358
02359
02360 PosChannel& lRAC_BKKHKGPosChannel =
02361 FacBom<PosChannel>::instance().create (lPosChannelKey);
02362 FacBomManager::addToListAndMap (lBKKHKGDatePeriod, lRAC_BKKHKGPosChannel);
02363 FacBomManager::linkWithParent (lBKKHKGDatePeriod, lRAC_BKKHKGPosChannel);
02364
02365
02366
02367
02368
02369 TimePeriod& lBKKHKGYieldTimePeriod =
02370 FacBom<TimePeriod>::instance().create (lYieldTimePeriodKey);
02371 FacBomManager::addToListAndMap (lRAC_BKKHKGPosChannel, lBKKHKGYieldTimePeriod);
02372 FacBomManager::linkWithParent (lRAC_BKKHKGPosChannel, lBKKHKGYieldTimePeriod);
02373
02374
02375
02376
02377
02378 YieldFeatures& lBKKHKGYieldFeatures =
02379 FacBom<YieldFeatures>::instance().create (lYieldFeaturesKey);
02380 FacBomManager::addToListAndMap (lBKKHKGYieldTimePeriod, lBKKHKGYieldFeatures);
02381 FacBomManager::linkWithParent (lBKKHKGYieldTimePeriod, lBKKHKGYieldFeatures);
02382
02383
02384
02385
02386
02387 AirlineClassList& lRAC_CXAirlineYClassList =
02388 stdair::FacBom<AirlineClassList>::instance().create (lCXAirlineYClassListKey);
02389 lRAC_CXAirlineYClassList.setYield(700);
02390 FacBomManager::addToListAndMap (lBKKHKGYieldFeatures, lRAC_CXAirlineYClassList);
02391 FacBomManager::linkWithParent (lBKKHKGYieldFeatures, lRAC_CXAirlineYClassList);
02392
02393 AirlineClassList& lRAC_CXAirlineMClassList =
02394 stdair::FacBom<AirlineClassList>::instance().create (lCXAirlineMClassListKey);
02395 lRAC_CXAirlineMClassList.setYield(500);
02396 FacBomManager::addToListAndMap (lBKKHKGYieldFeatures, lRAC_CXAirlineMClassList);
02397 FacBomManager::linkWithParent (lBKKHKGYieldFeatures, lRAC_CXAirlineMClassList);
02398
02399
02400
02401
02402
02403
02404
02405
02406
02407 PosChannel& lRAC_SINHKGChannel =
02408 FacBom<PosChannel>::instance().create (lPosChannelKey);
02409 FacBomManager::addToListAndMap (lSINHKGDatePeriod, lRAC_SINHKGChannel);
02410 FacBomManager::linkWithParent (lSINHKGDatePeriod, lRAC_SINHKGChannel);
02411
02412
02413
02414
02415
02416 TimePeriod& lSINHKGYieldTimePeriod =
02417 FacBom<TimePeriod>::instance().create (lYieldTimePeriodKey);
02418 FacBomManager::addToListAndMap (lRAC_SINHKGChannel, lSINHKGYieldTimePeriod);
02419 FacBomManager::linkWithParent (lRAC_SINHKGChannel, lSINHKGYieldTimePeriod);
02420
02421
02422
02423
02424
02425 YieldFeatures& lSINHKGYieldFeatures =
02426 FacBom<YieldFeatures>::instance().create (lYieldFeaturesKey);
02427 FacBomManager::addToListAndMap (lSINHKGYieldTimePeriod, lSINHKGYieldFeatures);
02428 FacBomManager::linkWithParent (lSINHKGYieldTimePeriod, lSINHKGYieldFeatures);
02429
02430
02431
02432
02433
02434 AirlineClassList& lRAC_SQ_CXAirlineYClassList =
02435 stdair::FacBom<AirlineClassList>::instance().create (lSQ_CXAirlineYClassListKey);
02436 lRAC_SQ_CXAirlineYClassList.setYield(1200);
02437 FacBomManager::addToListAndMap (lSINHKGYieldFeatures, lRAC_SQ_CXAirlineYClassList);
02438 FacBomManager::linkWithParent (lSINHKGYieldFeatures, lRAC_SQ_CXAirlineYClassList);
02439
02440 AirlineClassList& lRAC_SQ_CXAirlineMClassList =
02441 stdair::FacBom<AirlineClassList>::instance().create (lSQ_CXAirlineMClassListKey);
02442 lRAC_SQ_CXAirlineMClassList.setYield(850);
02443 FacBomManager::addToListAndMap (lSINHKGYieldFeatures, lRAC_SQ_CXAirlineMClassList);
02444 FacBomManager::linkWithParent (lSINHKGYieldFeatures, lRAC_SQ_CXAirlineMClassList);
02445
02446 }
02447
02448 }
02449