AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
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/basic/PartnershipTechnique.hpp>
00013 
00014 // Forward declarations
00015 namespace stdair {
00016   class BomRoot;
00017   class Inventory;
00018   class FlightDate;
00019   class SegmentDate;
00020   class SegmentCabin;
00021   class EventQueue;
00022   struct TravelSolutionStruct;
00023 }
00024 
00025 namespace AIRINV {
00026 
00027   // //////////////// Type definitions ////////////////
00028   typedef std::map<const stdair::Date_T,
00029                    stdair::SegmentCabin*> DepartureDateSegmentCabinMap_T;
00030   typedef std::map<const std::string,
00031                    DepartureDateSegmentCabinMap_T> SimilarSegmentCabinSetMap_T;
00032 
00034   class InventoryManager {
00035     friend class AIRINV_Master_Service;
00036     friend class AIRINV_Service;
00037 
00038   private:
00040     static void initSnapshotEvents (const stdair::Date_T&, 
00041                                     const stdair::Date_T&,
00042                                     stdair::EventQueue&);
00043     
00045     static void initRMEvents (const stdair::Inventory&, stdair::RMEventList_T&,
00046                               const stdair::Date_T&, const stdair::Date_T&);
00047 
00049     static void addRMEventsToEventQueue (stdair::EventQueue&,
00050                                          stdair::RMEventList_T&);
00051     
00053     static void calculateAvailability (const stdair::BomRoot&,
00054                                        stdair::TravelSolutionStruct&,
00055                                        const stdair::PartnershipTechnique&);
00056     
00058     static void calculateAvailabilityByAU (stdair::TravelSolutionStruct&);
00059 
00061     static void calculateAvailabilityByRAE (stdair::TravelSolutionStruct&);
00062     
00067     static void calculateAvailabilityByIBP (stdair::TravelSolutionStruct&);
00068 
00075     static void calculateAvailabilityByProtectiveIBP (stdair::TravelSolutionStruct&);
00076 
00078     static bool sell (stdair::Inventory&, const std::string& iSegmentDateKey,
00079                       const stdair::ClassCode_T&, const stdair::PartySize_T&);
00080 
00082     static bool cancel (stdair::Inventory&, const std::string& iSegmentDateKey,
00083                         const stdair::ClassCode_T&, const stdair::PartySize_T&);
00084 
00086     static void takeSnapshots (const stdair::Inventory&,
00087                                const stdair::DateTime_T&);
00088 
00090     static void updateBookingControls (stdair::FlightDate&);
00091 
00092   public:
00095     static void createDirectAccesses (const stdair::BomRoot&);
00096     static void createDirectAccesses (stdair::Inventory&);
00097     static void createDirectAccesses (stdair::FlightDate&);
00098     static void createDirectAccesses (stdair::SegmentDate&);
00099 
00100 
00103     static void buildSimilarSegmentCabinSets (const stdair::BomRoot&);
00104     static void buildSimilarSegmentCabinSets (stdair::Inventory&);
00105     static void buildGuillotineBlock (stdair::Inventory&,
00106                                       const stdair::GuillotineNumber_T&,
00107                                       const DepartureDateSegmentCabinMap_T&);
00108 
00109 
00111     static void setDefaultBidPriceVector (stdair::BomRoot&);
00112     static void setDefaultBidPriceVector (stdair::Inventory&);
00113     
00114   private:
00116     InventoryManager() {}
00117     InventoryManager(const InventoryManager&) {}
00119     ~InventoryManager() {}
00120   };
00121 
00122 }
00123 #endif // __AIRINV_CMD_INVENTORYMANAGER_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines