AirInv Logo  0.1.2
C++ Simulated Airline Inventory Management System library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
AIRINV_Master_Service.hpp
Go to the documentation of this file.
1 #ifndef __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP
2 #define __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // STL
8 #include <string>
9 // StdAir
10 #include <stdair/stdair_basic_types.hpp>
11 #include <stdair/stdair_service_types.hpp>
12 #include <stdair/stdair_inventory_types.hpp>
13 #include <stdair/stdair_maths_types.hpp>
14 #include <stdair/basic/ForecastingMethod.hpp>
15 #include <stdair/basic/PartnershipTechnique.hpp>
16 // AirRAC
17 #include <airrac/AIRRAC_Types.hpp>
18 
19 
21 namespace stdair {
22  class AirlineFeatureSet;
23  class Inventory;
24  class STDAIR_Service;
25  struct BasLogParams;
26  struct BasDBParams;
27  struct SnapshotStruct;
28  struct RMEventStruct;
29  struct TravelSolutionStruct;
30 }
31 
32 namespace AIRINV {
33 
36 
37 
42  public:
43  // ////////// Constructors and destructors //////////
59  AIRINV_Master_Service (const stdair::BasLogParams&,
60  const stdair::BasDBParams&);
61 
73  AIRINV_Master_Service (const stdair::BasLogParams&);
74 
90  AIRINV_Master_Service (stdair::STDAIR_ServicePtr_T);
91 
100  void parseAndLoad (const stdair::Filename_T& iInventoryFilename);
101 
112  void parseAndLoad (const stdair::Filename_T& iScheduleFilename,
113  const stdair::Filename_T& iODInputFilename,
114  const AIRRAC::YieldFilePath& iYieldFilename);
115 
120 
125  void initSnapshotAndRMEvents (const stdair::Date_T&, const stdair::Date_T&);
126 
127 
128  public:
129  // /////////// Business Methods /////////////
137  void buildSampleBom();
138 
142  void calculateAvailability (stdair::TravelSolutionStruct&,
143  const stdair::PartnershipTechnique&);
144 
153  bool sell (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
154  const stdair::PartySize_T&);
164  bool cancel (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
165  const stdair::PartySize_T&);
166 
170  void takeSnapshots (const stdair::SnapshotStruct&);
171 
175  void optimise (const stdair::RMEventStruct&,
176  const stdair::ForecastingMethod&,
177  const stdair::PartnershipTechnique&);
178 
179 
180  public:
181  // //////////////// Export support methods /////////////////
192  std::string jsonExport (const stdair::AirlineCode_T&,
193  const stdair::FlightNumber_T&,
194  const stdair::Date_T& iDepartureDate) const;
195 
196 
197  public:
198  // //////////////// Display support methods /////////////////
212  std::string list (const stdair::AirlineCode_T& iAirlineCode = "all",
213  const stdair::FlightNumber_T& iFlightNumber = 0) const;
214 
224  bool check (const stdair::AirlineCode_T&, const stdair::FlightNumber_T&,
225  const stdair::Date_T& iDepartureDate) const;
226 
234  std::string csvDisplay() const;
235 
247  std::string csvDisplay (const stdair::AirlineCode_T&,
248  const stdair::FlightNumber_T&,
249  const stdair::Date_T& iDepartureDate) const;
250 
251 
252  private:
253  // /////// Construction and Destruction helper methods ///////
258 
263 
273  stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&,
274  const stdair::BasDBParams&);
275 
284  stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&);
285 
294  void addStdAirService (stdair::STDAIR_ServicePtr_T,
295  const bool iOwnStdairService);
296 
301  void initServiceContext();
302 
309  void initSlaveAirinvService();
310 
314  void finalise();
315 
316 
317  private:
318  // ///////// Service Context /////////
322  AIRINV_Master_ServiceContext* _airinvMasterServiceContext;
323  };
324 }
325 #endif // __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP