AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
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/ForecastingMethod.hpp>
00013 #include <stdair/basic/PartnershipTechnique.hpp>
00014 #include <stdair/bom/RMEventTypes.hpp>
00015 // AirRAC
00016 #include <airrac/AIRRAC_Types.hpp>
00017 
00019 namespace stdair {
00020   class AirlineFeatureSet;
00021   class STDAIR_Service;
00022   class Inventory;
00023   struct TravelSolutionStruct;
00024   struct BasLogParams;
00025   struct BasDBParams;
00026 }
00027 
00028 namespace AIRINV {
00029   
00031   class AIRINV_ServiceContext;
00032 
00033   
00037   class AIRINV_Service {
00038   public:   
00039     // ////////// Constructors and destructors //////////
00055     AIRINV_Service (const stdair::BasLogParams&, const stdair::BasDBParams&);
00056 
00068     AIRINV_Service (const stdair::BasLogParams&);
00069 
00086     AIRINV_Service (stdair::STDAIR_ServicePtr_T);
00087 
00096     void parseAndLoad (const stdair::Filename_T& iInventoryFilename);
00097 
00108     void parseAndLoad (const stdair::Filename_T& iScheduleFilename,
00109                        const stdair::Filename_T& iODInputFilename,
00110                        const AIRRAC::YieldFilePath& iYieldFilename);
00111 
00115     ~AIRINV_Service();
00116     
00117 
00118   public:
00119     // /////////// Business Methods /////////////
00127     void buildSampleBom();
00128 
00134     stdair::RMEventList_T initRMEvents (const stdair::Date_T& iStartDate,
00135                                         const stdair::Date_T& iEndDate);
00136     
00140     void calculateAvailability (stdair::TravelSolutionStruct&,
00141                                 const stdair::PartnershipTechnique&);
00142 
00151     bool sell (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
00152                const stdair::PartySize_T&);
00153 
00163     bool cancel (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
00164                  const stdair::PartySize_T&);
00165 
00169     void takeSnapshots (const stdair::AirlineCode_T&,
00170                         const stdair::DateTime_T&);
00171     
00175     void optimise (const stdair::AirlineCode_T&,
00176                    const stdair::KeyDescription_T&,
00177                    const stdair::DateTime_T&,
00178                    const stdair::ForecastingMethod&,
00179                    const stdair::PartnershipTechnique&);
00180 
00181   public:
00182     // //////////////// Export support methods /////////////////
00193     std::string jsonExport (const stdair::AirlineCode_T&,
00194                             const stdair::FlightNumber_T&,
00195                             const stdair::Date_T& iDepartureDate) const;
00196 
00197   public:
00198     // //////////////// Display support methods /////////////////
00212     std::string list (const stdair::AirlineCode_T& iAirlineCode = "all",
00213                       const stdair::FlightNumber_T& iFlightNumber = 0) const;
00214 
00224     bool check (const stdair::AirlineCode_T&, const stdair::FlightNumber_T&,
00225                 const stdair::Date_T& iDepartureDate) const;
00226 
00234     std::string csvDisplay() const;
00235 
00247     std::string csvDisplay (const stdair::AirlineCode_T&,
00248                             const stdair::FlightNumber_T&,
00249                             const stdair::Date_T& iDepartureDate) const;
00250 
00251 
00252   private:
00253     // /////// Construction and Destruction helper methods ///////
00257     AIRINV_Service ();
00258     
00262     AIRINV_Service (const AIRINV_Service&);
00263 
00273     stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&,
00274                                                    const stdair::BasDBParams&);
00275     
00284     stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&);
00285     
00289     void initRMOLService();
00290     
00294     void initAIRRACService();
00295     
00304     void addStdAirService (stdair::STDAIR_ServicePtr_T,
00305                            const bool iOwnStdairService);
00306     
00311     void initServiceContext();
00312 
00319     void initAirinvService();
00320 
00324     void finalise();
00325     
00326 
00327   private:
00328     // ///////// Service Context /////////
00332     AIRINV_ServiceContext* _airinvServiceContext;
00333   };
00334 }
00335 #endif // __AIRINV_SVC_AIRINV_SERVICE_HPP