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_Service.hpp
Go to the documentation of this file.
1 #ifndef __AIRINV_SVC_AIRINV_SERVICE_HPP
2 #define __AIRINV_SVC_AIRINV_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/basic/ForecastingMethod.hpp>
13 #include <stdair/basic/PartnershipTechnique.hpp>
14 #include <stdair/bom/RMEventTypes.hpp>
15 // AirRAC
16 #include <airrac/AIRRAC_Types.hpp>
17 
19 namespace stdair {
20  class AirlineFeatureSet;
21  class STDAIR_Service;
22  class Inventory;
23  struct TravelSolutionStruct;
24  struct BasLogParams;
25  struct BasDBParams;
26 }
27 
28 namespace AIRINV {
29 
31  class AIRINV_ServiceContext;
32 
33 
38  public:
39  // ////////// Constructors and destructors //////////
55  AIRINV_Service (const stdair::BasLogParams&, const stdair::BasDBParams&);
56 
68  AIRINV_Service (const stdair::BasLogParams&);
69 
86  AIRINV_Service (stdair::STDAIR_ServicePtr_T);
87 
96  void parseAndLoad (const stdair::Filename_T& iInventoryFilename);
97 
108  void parseAndLoad (const stdair::Filename_T& iScheduleFilename,
109  const stdair::Filename_T& iODInputFilename,
110  const AIRRAC::YieldFilePath& iYieldFilename);
111 
115  ~AIRINV_Service();
116 
117 
118  public:
119  // /////////// Business Methods /////////////
127  void buildSampleBom();
128 
134  stdair::RMEventList_T initRMEvents (const stdair::Date_T& iStartDate,
135  const stdair::Date_T& iEndDate);
136 
140  void calculateAvailability (stdair::TravelSolutionStruct&,
141  const stdair::PartnershipTechnique&);
142 
151  bool sell (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
152  const stdair::PartySize_T&);
153 
163  bool cancel (const std::string& iSegmentDateKey, const stdair::ClassCode_T&,
164  const stdair::PartySize_T&);
165 
169  void takeSnapshots (const stdair::AirlineCode_T&,
170  const stdair::DateTime_T&);
171 
175  void optimise (const stdair::AirlineCode_T&,
176  const stdair::KeyDescription_T&,
177  const stdair::DateTime_T&,
178  const stdair::ForecastingMethod&,
179  const stdair::PartnershipTechnique&);
180 
181  public:
182  // //////////////// Export support methods /////////////////
193  std::string jsonExport (const stdair::AirlineCode_T&,
194  const stdair::FlightNumber_T&,
195  const stdair::Date_T& iDepartureDate) const;
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 ///////
257  AIRINV_Service ();
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 
289  void initRMOLService();
290 
294  void initAIRRACService();
295 
304  void addStdAirService (stdair::STDAIR_ServicePtr_T,
305  const bool iOwnStdairService);
306 
311  void initServiceContext();
312 
319  void initAirinvService();
320 
324  void finalise();
325 
326 
327  private:
328  // ///////// Service Context /////////
332  AIRINV_ServiceContext* _airinvServiceContext;
333  };
334 }
335 #endif // __AIRINV_SVC_AIRINV_SERVICE_HPP