$treeview $search $mathjax
TravelCCM Logo  1.00.2
$projectbrief
$projectbrief
$searchbox

CustomerChoiceModel.hpp

Go to the documentation of this file.
00001 #ifndef __TRAVELCCM_BOM_CUSTOMERCHOICEMODEL_HPP
00002 #define __TRAVELCCM_BOM_CUSTOMERCHOICEMODEL_HPP
00003 
00004 // //////////////////////////////////////////////////////////////////////
00005 // Import section
00006 // //////////////////////////////////////////////////////////////////////
00007 // StdAir
00008 #include <stdair/stdair_service_types.hpp>
00009 #include <stdair/bom/TravelSolutionTypes.hpp>
00010 #include <stdair/basic/PassengerChoiceModel.hpp>
00011 
00013 namespace stdair {
00014   struct BookingRequestStruct;
00015 }
00016 
00017 namespace TRAVELCCM {
00018   
00022   class CustomerChoiceModel {    
00023 
00024   private:
00025     // ////////// Type definitions ////////////
00026     typedef std::map<stdair::PassengerChoiceModel::EN_PassengerChoiceModel, 
00027                      CustomerChoiceModel*> CustomerChoiceModelMap_T;
00028     
00029   private:
00034     static CustomerChoiceModelMap_T& getMap () {
00035       static CustomerChoiceModelMap_T _choiceModelMap;
00036       return _choiceModelMap;
00037     }
00038 
00039   public: 
00043     virtual const stdair::TravelSolutionStruct*
00044     chooseTravelSolution (stdair::TravelSolutionList_T&,
00045                           const stdair::BookingRequestStruct&) const = 0; 
00046 
00047 
00051     static const CustomerChoiceModel* 
00052     create (const stdair::PassengerChoiceModel::EN_PassengerChoiceModel&);   
00053 
00054   public: 
00058     virtual ~CustomerChoiceModel();
00059 
00060   protected:   
00064     CustomerChoiceModel ();
00065 
00069     CustomerChoiceModel 
00070     (const stdair::PassengerChoiceModel::EN_PassengerChoiceModel&);
00071 
00072   };
00073 }
00074 #endif // __TRAVELCCM_BOM_CUSTOMERCHOICEMODEL_HPP