7 #include <boost/date_time/date_iterator.hpp>
9 #include <stdair/stdair_basic_types.hpp>
10 #include <stdair/basic/BasConst_Inventory.hpp>
11 #include <stdair/bom/BomManager.hpp>
12 #include <stdair/bom/BomRoot.hpp>
13 #include <stdair/bom/Inventory.hpp>
14 #include <stdair/bom/FlightPeriod.hpp>
15 #include <stdair/bom/SegmentPeriod.hpp>
16 #include <stdair/factory/FacBomManager.hpp>
17 #include <stdair/service/Logger.hpp>
26 void InventoryGenerator::
27 createFlightPeriod (stdair::BomRoot& ioBomRoot,
28 const FlightPeriodStruct& iFlightPeriodStruct) {
30 const stdair::AirlineCode_T& lAirlineCode = iFlightPeriodStruct._airlineCode;
34 stdair::Inventory* lInventory_ptr = stdair::BomManager::
35 getObjectPtr<stdair::Inventory> (ioBomRoot, lAirlineCode);
36 if (lInventory_ptr == NULL) {
37 stdair::InventoryKey lKey (lAirlineCode);
40 &stdair::FacBom<stdair::Inventory>::instance().create (lKey);
41 stdair::FacBomManager::addToListAndMap (ioBomRoot, *lInventory_ptr);
42 stdair::FacBomManager::linkWithParent (ioBomRoot, *lInventory_ptr);
44 assert (lInventory_ptr != NULL);
47 const stdair::PeriodStruct lPeriod (iFlightPeriodStruct._dateRange,
48 iFlightPeriodStruct._dow);
49 const stdair::FlightPeriodKey
50 lFlightPeriodKey (iFlightPeriodStruct._flightNumber, lPeriod);
53 stdair::FlightPeriod* lFlightPeriod_ptr = stdair::BomManager::
54 getObjectPtr<stdair::FlightPeriod> (*lInventory_ptr,
55 lFlightPeriodKey.toString());
56 if (lFlightPeriod_ptr != NULL) {
57 throw stdair::ObjectCreationgDuplicationException (
"");
59 assert (lFlightPeriod_ptr == NULL);
62 lFlightPeriod_ptr = &stdair::FacBom<stdair::FlightPeriod>::
63 instance().create (lFlightPeriodKey);
64 stdair::FacBomManager::addToListAndMap (*lInventory_ptr, *lFlightPeriod_ptr);
65 stdair::FacBomManager::linkWithParent (*lInventory_ptr, *lFlightPeriod_ptr);
68 createSegmentPeriods (*lFlightPeriod_ptr, iFlightPeriodStruct);
72 void InventoryGenerator::
73 createSegmentPeriods (stdair::FlightPeriod& ioFlightPeriod,
74 const FlightPeriodStruct& iFlightPeriodStruct) {
78 for (SegmentStructList_T::const_iterator itSegment = lSegmentList.begin();
79 itSegment != lSegmentList.end(); ++itSegment) {
81 const SegmentStruct& lSegment = *itSegment;
84 const stdair::AirportCode_T& lBoardingPoint = lSegment._boardingPoint;
85 const stdair::AirportCode_T& lOffPoint = lSegment._offPoint;
86 const stdair::SegmentPeriodKey lSegmentPeriodKey (lBoardingPoint,
90 stdair::SegmentPeriod& lSegmentPeriod = stdair::
91 FacBom<stdair::SegmentPeriod>::instance().create (lSegmentPeriodKey);
92 stdair::FacBomManager::addToListAndMap (ioFlightPeriod, lSegmentPeriod);
93 stdair::FacBomManager::linkWithParent (ioFlightPeriod, lSegmentPeriod);