$treeview $search $mathjax
00001 #ifndef __AIRINV_SVC_AIRINV_SERVICE_HPP 00002 #define __AIRINV_SVC_AIRINV_SERVICE_HPP 00003 00004 // ////////////////////////////////////////////////////////////////////// 00005 // Import section 00006 // ////////////////////////////////////////////////////////////////////// 00007 // STL 00008 #include <string> 00009 // StdAir 00010 #include <stdair/stdair_basic_types.hpp> 00011 #include <stdair/stdair_service_types.hpp> 00012 #include <stdair/basic/JSonCommand.hpp> 00013 #include <stdair/bom/RMEventTypes.hpp> 00014 #include <stdair/bom/BomIDTypes.hpp> 00015 // AirRAC 00016 #include <airrac/AIRRAC_Types.hpp> 00017 // SEvMgr 00018 #include <sevmgr/SEVMGR_Types.hpp> 00019 00021 namespace stdair { 00022 class AirlineFeatureSet; 00023 class STDAIR_Service; 00024 class Inventory; 00025 class JSONString; 00026 struct TravelSolutionStruct; 00027 struct BasLogParams; 00028 struct BasDBParams; 00029 } 00030 00031 namespace AIRINV { 00032 00034 class AIRINV_ServiceContext; 00035 00036 00040 class AIRINV_Service { 00041 public: 00042 // ////////// Constructors and destructors ////////// 00058 AIRINV_Service (const stdair::BasLogParams&, const stdair::BasDBParams&); 00059 00071 AIRINV_Service (const stdair::BasLogParams&); 00072 00088 AIRINV_Service (stdair::STDAIR_ServicePtr_T); 00089 00106 AIRINV_Service (stdair::STDAIR_ServicePtr_T, 00107 SEVMGR::SEVMGR_ServicePtr_T); 00108 00117 void parseAndLoad (const AIRINV::InventoryFilePath&); 00118 00131 void parseAndLoad (const stdair::ScheduleFilePath&, 00132 const stdair::ODFilePath&, 00133 const stdair::FRAT5FilePath&, 00134 const stdair::FFDisutilityFilePath&, 00135 const AIRRAC::YieldFilePath&); 00136 00140 ~AIRINV_Service(); 00141 00142 00143 public: 00144 // /////////// Business Methods ///////////// 00152 void buildSampleBom(); 00153 00157 void clonePersistentBom (); 00158 00164 void buildComplementaryLinks (stdair::BomRoot&); 00165 00171 stdair::RMEventList_T initRMEvents (const stdair::Date_T& iStartDate, 00172 const stdair::Date_T& iEndDate); 00173 00177 void calculateAvailability (stdair::TravelSolutionStruct&); 00178 00187 bool sell (const std::string& iSegmentDateKey, const stdair::ClassCode_T&, 00188 const stdair::PartySize_T&); 00189 00197 bool sell (const stdair::BookingClassID_T&, const stdair::PartySize_T&); 00198 00208 bool cancel (const std::string& iSegmentDateKey, const stdair::ClassCode_T&, 00209 const stdair::PartySize_T&); 00210 00218 bool cancel (const stdair::BookingClassID_T&, const stdair::PartySize_T&); 00219 00223 void takeSnapshots (const stdair::AirlineCode_T&, 00224 const stdair::DateTime_T&); 00225 00229 void optimise (const stdair::AirlineCode_T&, 00230 const stdair::KeyDescription_T&, 00231 const stdair::DateTime_T&); 00232 00233 public: 00234 // //////////////// Export support methods ///////////////// 00235 00245 std::string jsonHandler (const stdair::JSONString&) const; 00246 00259 std::string jsonExportFlightDateList (const stdair::AirlineCode_T& iAirlineCode = "all", 00260 const stdair::FlightNumber_T& iFlightNumber = 0) const; 00271 std::string jsonExportFlightDateObjects (const stdair::AirlineCode_T&, 00272 const stdair::FlightNumber_T&, 00273 const stdair::Date_T& iDepartureDate) const; 00274 00275 public: 00276 // //////////////// Display support methods ///////////////// 00290 std::string list (const stdair::AirlineCode_T& iAirlineCode = "all", 00291 const stdair::FlightNumber_T& iFlightNumber = 0) const; 00292 00302 bool check (const stdair::AirlineCode_T&, const stdair::FlightNumber_T&, 00303 const stdair::Date_T& iDepartureDate) const; 00304 00312 std::string csvDisplay() const; 00313 00325 std::string csvDisplay (const stdair::AirlineCode_T&, 00326 const stdair::FlightNumber_T&, 00327 const stdair::Date_T& iDepartureDate) const; 00328 00329 00330 private: 00331 // /////// Construction and Destruction helper methods /////// 00335 AIRINV_Service (); 00336 00340 AIRINV_Service (const AIRINV_Service&); 00341 00351 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&, 00352 const stdair::BasDBParams&); 00353 00362 stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&); 00363 00367 void initRMOLService(); 00368 00372 void initAIRRACService(); 00373 00377 void initSEVMGRService(); 00378 00387 void addStdAirService (stdair::STDAIR_ServicePtr_T, 00388 const bool iOwnStdairService); 00389 00395 void addSEVMGRService (SEVMGR::SEVMGR_ServicePtr_T, 00396 const bool iOwnSEVMGRService); 00397 00402 void initServiceContext(); 00403 00410 void initAirinvService(); 00411 00415 void finalise(); 00416 00417 00418 private: 00419 // ///////// Service Context ///////// 00423 AIRINV_ServiceContext* _airinvServiceContext; 00424 }; 00425 } 00426 #endif // __AIRINV_SVC_AIRINV_SERVICE_HPP