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

AIRINV_Service.hpp

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