AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
AIRINV_Master_Service.hpp
Go to the documentation of this file.
00001 #ifndef __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP
00002 #define __AIRINV_SVC_AIRINV_MASTER_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/stdair_inventory_types.hpp>
00013 #include <stdair/stdair_maths_types.hpp>
00014 #include <stdair/basic/ForecastingMethod.hpp>
00015 #include <stdair/basic/PartnershipTechnique.hpp>
00016 // AirRAC
00017 #include <airrac/AIRRAC_Types.hpp>
00018 
00019 
00021 namespace stdair {
00022   class AirlineFeatureSet;
00023   class Inventory;
00024   class STDAIR_Service;
00025   struct BasLogParams;
00026   struct BasDBParams;
00027   struct SnapshotStruct;
00028   struct RMEventStruct;
00029   struct TravelSolutionStruct;
00030 }
00031 
00032 namespace AIRINV {
00033 
00035   class AIRINV_Master_ServiceContext;
00036 
00037   
00041   class AIRINV_Master_Service {
00042   public:   
00043     // ////////// Constructors and destructors //////////
00059     AIRINV_Master_Service (const stdair::BasLogParams&,
00060                            const stdair::BasDBParams&);
00061 
00073     AIRINV_Master_Service (const stdair::BasLogParams&);
00074 
00090     AIRINV_Master_Service (stdair::STDAIR_ServicePtr_T);
00091 
00100     void parseAndLoad (const stdair::Filename_T& iInventoryFilename);
00101 
00112     void parseAndLoad (const stdair::Filename_T& iScheduleFilename,
00113                        const stdair::Filename_T& iODInputFilename,
00114                        const AIRRAC::YieldFilePath& iYieldFilename);
00115 
00119     ~AIRINV_Master_Service();
00120 
00125     void initSnapshotAndRMEvents (const stdair::Date_T&, const stdair::Date_T&);
00126     
00127 
00128   public:
00129     // /////////// Business Methods /////////////
00137     void buildSampleBom();
00138 
00142     void calculateAvailability (stdair::TravelSolutionStruct&,
00143                                 const stdair::PartnershipTechnique&);
00144 
00153     bool sell (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
00154                const stdair::PartySize_T&);
00164     bool cancel (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
00165                  const stdair::PartySize_T&);
00166 
00170     void takeSnapshots (const stdair::SnapshotStruct&);
00171     
00175     void optimise (const stdair::RMEventStruct&,
00176                    const stdair::ForecastingMethod&,
00177                    const stdair::PartnershipTechnique&);    
00178 
00179 
00180   public:
00181     // //////////////// Export support methods /////////////////
00192     std::string jsonExport (const stdair::AirlineCode_T&,
00193                             const stdair::FlightNumber_T&,
00194                             const stdair::Date_T& iDepartureDate) const;
00195 
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_Master_Service();
00258 
00262     AIRINV_Master_Service (const AIRINV_Master_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     
00294     void addStdAirService (stdair::STDAIR_ServicePtr_T,
00295                            const bool iOwnStdairService);
00296     
00301     void initServiceContext();
00302 
00309     void initSlaveAirinvService();
00310 
00314     void finalise();
00315     
00316 
00317   private:
00318     // ///////// Service Context /////////
00322     AIRINV_Master_ServiceContext* _airinvMasterServiceContext;
00323   };
00324 }
00325 #endif // __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP