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

StudyStatManager.cpp

Go to the documentation of this file.
00001 // //////////////////////////////////////////////////////////////////////
00002 // Import section
00003 // //////////////////////////////////////////////////////////////////////
00004 // C
00005 #include <assert.h>
00006 // STL
00007 #include <sstream>
00008 #include <limits>
00009 // RMOL Common
00010 #include <rmol/service/Logger.hpp>
00011 #include <rmol/bom/StatAggregatorStruct.hpp>
00012 #include <rmol/bom/StudyStatManager.hpp>
00013 
00014 namespace RMOL {
00015 
00016   // //////////////////////////////////////////////////////////////////////
00017   StudyStatManager::StudyStatManager () {
00018   }
00019   
00020   // //////////////////////////////////////////////////////////////////////
00021   StudyStatManager::~StudyStatManager () {
00022   }
00023   
00024   // //////////////////////////////////////////////////////////////////////
00025   const std::string StudyStatManager::describe() const {
00026     std::ostringstream ostr;
00027     
00028     for (StatAggregatorStructList_T::const_iterator itStatAggregatorStruct =
00029            _statAggregatorStructList.begin();
00030          itStatAggregatorStruct != _statAggregatorStructList.end();
00031          ++itStatAggregatorStruct) {
00032       const StatAggregatorStruct_T& lStatAggregatorStruct =
00033         itStatAggregatorStruct->second;
00034       
00035       ostr << lStatAggregatorStruct.describeCurrentSimu() << std::endl;
00036     }
00037     
00038     return ostr.str();
00039   }
00040   
00041   // //////////////////////////////////////////////////////////////////////
00042   void StudyStatManager::display() const {
00043     
00044     // DEBUG
00045     std::ostringstream ostr;
00046     // Store current formatting flags of the stream
00047     std::ios::fmtflags oldFlags = ostr.flags();
00048     
00049     for (StatAggregatorStructList_T::const_iterator itStatAggregatorStruct =
00050            _statAggregatorStructList.begin();
00051          itStatAggregatorStruct != _statAggregatorStructList.end();
00052          ++itStatAggregatorStruct) {
00053       const StatAggregatorStruct_T& lStatAggregatorStruct =
00054         itStatAggregatorStruct->second;
00055       
00056       ostr << lStatAggregatorStruct.describeCurrentSimu() << std::endl;
00057     }
00058     
00059     // Reset formatting flags of stream
00060     ostr.flags (oldFlags);
00061 
00062     RMOL_LOG_DEBUG (ostr.str());
00063   }
00064 
00065   // //////////////////////////////////////////////////////////////////////
00066   StatAggregatorStruct_T& StudyStatManager::
00067   getStatAggregator(const std::string& iStatAggregatorName) {
00068     StatAggregatorStructList_T::iterator itAggregatorStruct =
00069       _statAggregatorStructList.find (iStatAggregatorName);
00070     
00071     // If the StatAggregatorStruct does not exist, it is created
00072     if (itAggregatorStruct == _statAggregatorStructList.end()) {
00073       StatAggregatorStruct_T lStatAggregatorStruct (*this, iStatAggregatorName);
00074       _statAggregatorStructList.
00075         insert (StatAggregatorStructList_T::
00076                 value_type (lStatAggregatorStruct.describeKey(),
00077                             lStatAggregatorStruct));
00078       itAggregatorStruct =
00079         _statAggregatorStructList.find (iStatAggregatorName);        
00080     }
00081     
00082     return itAggregatorStruct->second;
00083   }
00084   
00085   // //////////////////////////////////////////////////////////////////////
00086   void StudyStatManager::addMeasure (const std::string iStatAggregatorName,
00087                                      const double iMeasureValue) {
00088     // retrieve the corresponding statAggregator or create it
00089     StatAggregatorStruct_T& lStatAggregator =
00090       getStatAggregator(iStatAggregatorName);
00091     
00092     // add new measure
00093     lStatAggregator.addMeasure(iMeasureValue);
00094   }
00095 
00096   
00097   // //////////////////////////////////////////////////////////////////////
00098   const std::string StudyStatManager::describeShortKey() const {
00099     std::ostringstream oStr;
00100     return oStr.str();
00101   }
00102   
00103   // //////////////////////////////////////////////////////////////////////
00104   const std::string StudyStatManager::describeKey() const {
00105     return describeShortKey();
00106   }
00107 
00108   // //////////////////////////////////////////////////////////////////////
00109   std::string StudyStatManager::toString() const {
00110     std::ostringstream oStr;
00111     return oStr.str();
00112   }   
00113 
00114   // //////////////////////////////////////////////////////////////////////
00115   void StudyStatManager::toStream (std::ostream& ioOut) const {
00116     ioOut << toString();
00117   }
00118   
00119   // //////////////////////////////////////////////////////////////////////
00120   void StudyStatManager::fromStream (std::istream& ioIn) {
00121   }
00122   
00123   
00124 }
SourceForge Logo

Generated on Sat Oct 16 19:00:47 2010 for RMOL by Doxygen 1.6.2-20100208