SimCRS Logo  0.1.1
C++ Simulated Travel-Oriented Distribution System Library
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
SIMCRS_Service.hpp
Go to the documentation of this file.
1 #ifndef __SIMCRS_SVC_SIMCRS_SERVICE_HPP
2 #define __SIMCRS_SVC_SIMCRS_SERVICE_HPP
3 
4 // //////////////////////////////////////////////////////////////////////
5 // Import section
6 // //////////////////////////////////////////////////////////////////////
7 // StdAir
8 #include <stdair/stdair_basic_types.hpp>
9 #include <stdair/stdair_service_types.hpp>
10 #include <stdair/basic/ForecastingMethod.hpp>
11 #include <stdair/basic/PartnershipTechnique.hpp>
12 #include <stdair/bom/TravelSolutionTypes.hpp>
13 // SimFQT
14 #include <simfqt/SIMFQT_Types.hpp>
15 // AIRRAC
16 #include <airrac/AIRRAC_Types.hpp>
17 // SimCRS
18 #include <simcrs/SIMCRS_Types.hpp>
19 
21 namespace stdair {
22  struct BasLogParams;
23  struct BasDBParams;
24  struct BookingRequestStruct;
25  struct CancellationStruct;
26  struct SnapshotStruct;
27  struct RMEventStruct;
28 }
29 
30 namespace SIMCRS {
31 
33  class SIMCRS_ServiceContext;
34 
35 
39  class SIMCRS_Service {
40  public:
41  // ////////////////// Constructors and Destructors //////////////////
58  SIMCRS_Service (const stdair::BasLogParams&, const stdair::BasDBParams&,
59  const CRSCode_T&);
60 
73  SIMCRS_Service (const stdair::BasLogParams&, const CRSCode_T&);
74 
91  SIMCRS_Service (stdair::STDAIR_ServicePtr_T, const CRSCode_T&);
92 
93 
105  void parseAndLoad (const stdair::Filename_T& iScheduleInputFilename,
106  const stdair::Filename_T& iODInputFilename,
107  const AIRRAC::YieldFilePath& iYieldInputFilepath,
108  const SIMFQT::FareFilePath& iFareInputFilepath);
109 
116  void initSnapshotAndRMEvents (const stdair::Date_T& iStartDate,
117  const stdair::Date_T& iEndDate);
118 
122  ~SIMCRS_Service();
123 
124 
125  public:
126  // /////////////// Business Methods /////////////////
131  stdair::TravelSolutionList_T
132  calculateSegmentPathList (const stdair::BookingRequestStruct&);
133 
137  void fareQuote (const stdair::BookingRequestStruct&,
138  stdair::TravelSolutionList_T&);
139 
143  void calculateAvailability (stdair::TravelSolutionList_T&,
144  const stdair::PartnershipTechnique&);
145 
149  bool sell (const stdair::TravelSolutionStruct&, const stdair::PartySize_T&);
150 
154  void takeSnapshots (const stdair::SnapshotStruct&);
155 
159  bool playCancellation (const stdair::CancellationStruct&);
160 
164  void optimise (const stdair::RMEventStruct&,
165  const stdair::ForecastingMethod&,
166  const stdair::PartnershipTechnique&);
167 
177  void buildSampleBom ();
178 
198  void buildSampleTravelSolutions (stdair::TravelSolutionList_T&);
199 
230  stdair::BookingRequestStruct
231  buildSampleBookingRequest (const bool isForCRS = false);
232 
233 
234  public:
235  // //////////////// Export support methods /////////////////
246  std::string jsonExport (const stdair::AirlineCode_T&,
247  const stdair::FlightNumber_T&,
248  const stdair::Date_T& iDepartureDate) const;
249 
250 
251  public:
252  // //////////////// Display support methods /////////////////
260  std::string csvDisplay() const;
261 
269  std::string csvDisplay (const stdair::TravelSolutionList_T&) const;
270 
271 
272  private:
273  // /////// Construction and Destruction helper methods ///////
277  SIMCRS_Service();
278 
283 
293  stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&,
294  const stdair::BasDBParams&);
295 
305  stdair::STDAIR_ServicePtr_T initStdAirService (const stdair::BasLogParams&);
306 
310  void initAIRSCHEDService();
311 
315  void initSIMFQTService();
316 
320  void initAIRINVService();
321 
330  void addStdAirService (stdair::STDAIR_ServicePtr_T,
331  const bool iOwnStdairService);
332 
339  void initServiceContext (const CRSCode_T&);
340 
345  void initSimcrsService();
346 
350  void finalise();
351 
352 
353  private:
354  // ///////// Service Context /////////
358  SIMCRS_ServiceContext* _simcrsServiceContext;
359  };
360 }
361 #endif // __SIMCRS_SVC_SIMCRS_SERVICE_HPP