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
00006
00007
00008 #include <string>
00009
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
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
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
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
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
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
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
00322 AIRINV_Master_ServiceContext* _airinvMasterServiceContext;
00323 };
00324 }
00325 #endif // __AIRINV_SVC_AIRINV_MASTER_SERVICE_HPP