Go to the documentation of this file.00001 #ifndef __AIRINV_CMD_INVENTORYMANAGER_HPP
00002 #define __AIRINV_CMD_INVENTORYMANAGER_HPP
00003
00004
00005
00006
00007
00008 #include <string>
00009
00010 #include <stdair/stdair_basic_types.hpp>
00011 #include <stdair/bom/RMEventTypes.hpp>
00012 #include <stdair/basic/PartnershipTechnique.hpp>
00013
00014
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
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