RMOL Logo Get Revenue Management Optimisation Library at SourceForge.net. Fast, secure and Free Open Source software downloads

RMOL_ServiceContext.cpp

Go to the documentation of this file.
00001 // //////////////////////////////////////////////////////////////////////
00002 // Import section
00003 // //////////////////////////////////////////////////////////////////////
00004 // C
00005 #include <assert.h>
00006 // RMOL
00007 #include <rmol/basic/BasConst_RMOL_Service.hpp>
00008 #include <rmol/field/FldYieldRange.hpp>
00009 #include <rmol/field/FldDistributionParameters.hpp>
00010 #include <rmol/bom/Demand.hpp>
00011 #include <rmol/bom/Bucket.hpp>
00012 #include <rmol/bom/BucketHolder.hpp>
00013 #include <rmol/factory/FacSupervisor.hpp>
00014 #include <rmol/factory/FacDemand.hpp>
00015 #include <rmol/factory/FacBucket.hpp>
00016 #include <rmol/factory/FacBucketHolder.hpp>
00017 #include <rmol/command/FileMgr.hpp>
00018 #include <rmol/service/RMOL_ServiceContext.hpp>
00019 
00020 namespace RMOL {
00021 
00022   // //////////////////////////////////////////////////////////////////////
00023   RMOL_ServiceContext::
00024   RMOL_ServiceContext (const ResourceCapacity_T iResourceCapacity) :
00025     _bucketHolder (NULL), _capacity (iResourceCapacity) {
00026     init (iResourceCapacity);
00027   }
00028   
00029   // //////////////////////////////////////////////////////////////////////
00030   RMOL_ServiceContext::RMOL_ServiceContext () : 
00031     _bucketHolder (NULL), _capacity (DEFAULT_RMOL_SERVICE_CAPACITY) {
00032     init (DEFAULT_RMOL_SERVICE_CAPACITY);
00033   }
00034   
00035   // //////////////////////////////////////////////////////////////////////
00036   RMOL_ServiceContext::RMOL_ServiceContext (const RMOL_ServiceContext&) :
00037     _bucketHolder (NULL), _capacity (DEFAULT_RMOL_SERVICE_CAPACITY) {
00038     init (DEFAULT_RMOL_SERVICE_CAPACITY);
00039   }
00040 
00041   // //////////////////////////////////////////////////////////////////////
00042   RMOL_ServiceContext::~RMOL_ServiceContext() {
00043   }
00044 
00045   // //////////////////////////////////////////////////////////////////////
00046   void RMOL_ServiceContext::init (const ResourceCapacity_T iResourceCapacity) {
00047     _bucketHolder = &FacBucketHolder::instance().create (iResourceCapacity);
00048   }
00049 
00050   // //////////////////////////////////////////////////////////////////////
00051   void RMOL_ServiceContext::addBucket (const double iYieldRange, 
00052                                        const double iDemandMean,
00053                                        const double iDemandStandardDev) {
00054     const FldYieldRange aYieldRange (iYieldRange);
00055     const FldDistributionParameters aDistribParams (iDemandMean, 
00056                                                     iDemandStandardDev);
00057     Demand& aDemand = 
00058       FacDemand::instance().create (aDistribParams, aYieldRange);
00059     Bucket& aBucket = FacBucket::instance().create (aYieldRange, aDemand);
00060 
00061     assert (_bucketHolder != NULL);
00062     FacBucketHolder::instance().addBucket (*_bucketHolder, aBucket);
00063   }
00064 
00065   // //////////////////////////////////////////////////////////////////////
00066   void RMOL_ServiceContext::
00067   readFromInputFile (const std::string& iInputFileName) {
00068     assert (_bucketHolder != NULL);
00069     FileMgr::readAndProcessInputFile (iInputFileName, *_bucketHolder);
00070   }
00071 
00072 }
SourceForge Logo

Generated on Sun Jun 14 23:33:59 2009 for RMOL by Doxygen 1.5.8