$treeview $search $mathjax
00001 #ifndef __AIRINV_CMD_INVENTORYMANAGER_HPP 00002 #define __AIRINV_CMD_INVENTORYMANAGER_HPP 00003 00004 // ////////////////////////////////////////////////////////////////////// 00005 // Import section 00006 // ////////////////////////////////////////////////////////////////////// 00007 // STL 00008 #include <string> 00009 // STDAIR 00010 #include <stdair/stdair_basic_types.hpp> 00011 #include <stdair/bom/RMEventTypes.hpp> 00012 #include <stdair/bom/BomIDTypes.hpp> 00013 // SEvMgr 00014 #include <sevmgr/SEVMGR_Types.hpp> 00015 00016 // Forward declarations 00017 namespace stdair { 00018 class BomRoot; 00019 class Inventory; 00020 class FlightDate; 00021 class SegmentDate; 00022 class SegmentCabin; 00023 class EventQueue; 00024 struct TravelSolutionStruct; 00025 } 00026 00027 namespace AIRINV { 00028 00029 // //////////////// Type definitions //////////////// 00030 typedef std::map<const stdair::Date_T, 00031 stdair::SegmentCabin*> DepartureDateSegmentCabinMap_T; 00032 typedef std::map<const std::string, 00033 DepartureDateSegmentCabinMap_T> SimilarSegmentCabinSetMap_T; 00034 00036 class InventoryManager { 00037 friend class AIRINV_Master_Service; 00038 friend class AIRINV_Service; 00039 00040 private: 00042 static void initSnapshotEvents (SEVMGR::SEVMGR_ServicePtr_T, 00043 const stdair::Date_T&, 00044 const stdair::Date_T&); 00045 00047 static void initRMEvents (const stdair::Inventory&, stdair::RMEventList_T&, 00048 const stdair::Date_T&, const stdair::Date_T&); 00049 00051 static void addRMEventsToEventQueue (SEVMGR::SEVMGR_ServicePtr_T, 00052 stdair::RMEventList_T&); 00053 00055 static void calculateAvailability (const stdair::BomRoot&, 00056 stdair::TravelSolutionStruct&); 00057 00059 static void calculateAvailabilityByAU (stdair::TravelSolutionStruct&); 00060 00062 static void calculateAvailabilityByRAE (stdair::TravelSolutionStruct&); 00063 00068 static void calculateAvailabilityByIBP (stdair::TravelSolutionStruct&); 00069 00076 static void calculateAvailabilityByProtectiveIBP (stdair::TravelSolutionStruct&); 00077 00079 static bool sell (stdair::Inventory&, const std::string& iSegmentDateKey, 00080 const stdair::ClassCode_T&, const stdair::PartySize_T&); 00081 00083 static bool sell (const stdair::BookingClassID_T&, 00084 const stdair::PartySize_T&); 00085 00087 static bool cancel (stdair::Inventory&, const std::string& iSegmentDateKey, 00088 const stdair::ClassCode_T&, const stdair::PartySize_T&); 00089 00091 static bool cancel (const stdair::BookingClassID_T&, 00092 const stdair::PartySize_T&); 00093 00095 static void takeSnapshots (const stdair::Inventory&, 00096 const stdair::DateTime_T&); 00097 00099 static void updateBookingControls (stdair::FlightDate&); 00100 00102 static void recalculateAvailability (stdair::FlightDate&); 00103 00104 public: 00107 static void createDirectAccesses (const stdair::BomRoot&); 00108 static void createDirectAccesses (const stdair::BomRoot&, 00109 stdair::Inventory&); 00110 static void createDirectAccesses (const stdair::BomRoot&, 00111 stdair::Inventory&, stdair::FlightDate&); 00112 static void createDirectAccesses (stdair::SegmentDate&); 00113 00116 static void createPartnerAccesses (const stdair::BomRoot&, 00117 stdair::Inventory&); 00118 static void createPartnerAccesses (stdair::FlightDate&); 00119 static void createPartnerAccesses (const stdair::BomRoot&, 00120 stdair::Inventory&, stdair::FlightDate&); 00121 00122 00125 static void buildSimilarSegmentCabinSets (const stdair::BomRoot&); 00126 static void buildSimilarSegmentCabinSets (stdair::Inventory&); 00127 static void buildSegmentSnapshotTable (stdair::Inventory&, 00128 const stdair::TableID_T&, 00129 const DepartureDateSegmentCabinMap_T&); 00130 00131 00133 static void setDefaultBidPriceVector (stdair::BomRoot&); 00134 static void setDefaultBidPriceVector (stdair::Inventory&); 00135 00137 static void initialiseYieldBasedNestingStructures (const stdair::BomRoot&); 00138 00140 static void initialiseListsOfUsablePolicies (const stdair::BomRoot&); 00141 00142 private: 00144 InventoryManager() {} 00145 InventoryManager(const InventoryManager&) {} 00147 ~InventoryManager() {} 00148 }; 00149 00150 } 00151 #endif // __AIRINV_CMD_INVENTORYMANAGER_HPP