$treeview $search $mathjax
AirInv Logo  1.00.1
$projectbrief
$projectbrief
$searchbox

InventoryManager.hpp

Go to the documentation of this file.
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