ISSummaryManager.cpp

00001 #include "ISSummaryManager.h"
00002 #include "ISSummaryWriter.h"
00003 #include "SctData/TestResult.h"
00004 #include "Sct/SctNames.h"
00005 #include <sstream>
00006 #include <iomanip>
00007 #include <cstdlib>
00008 #include <boost/date_time/posix_time/posix_time.hpp>
00009 
00010 using namespace Sct;
00011 using namespace boost;
00012 using namespace std;
00013 
00014 namespace SctData {
00015     namespace ISTestSummary{
00016     using boost::shared_ptr;
00017 
00018     ISSummaryManager::ISSummaryManager() {}
00019 
00020     ISSummaryManager::~ISSummaryManager() {}
00021 
00022     ISSummaryManager& ISSummaryManager::instance()  {
00023         static ISSummaryManager bertha;
00024         return bertha;
00025     }
00026 
00027     void ISSummaryManager::write(const TestResult& t) {
00028         shared_ptr<const ISSummaryWriter> writer = getWriter(t.getClassName());
00029         writer->write(t);
00030     }
00031     
00032     shared_ptr<const ISSummaryWriter> ISSummaryManager::getWriter(const string& classname) const  {
00033         WriterMap::const_iterator it = theMap.find(classname);
00034         if ( it == theMap.end() ){
00035         cerr << "ISSummaryManager::getWriter no writer for " << classname << endl;
00036         cerr << "known writers:" << endl ;
00037         for (WriterMap::const_iterator it = theMap.begin(); it != theMap.end(); ++it){
00038             cerr << (*it).first << endl;
00039         }
00040         throw InvalidArgumentError( string("ISSummaryManager::getWriter no writer for ") + classname, __FILE__, __LINE__ );
00041         } else {
00042         return (*it).second ;
00043         }
00044     }
00045 
00046     bool ISSummaryManager::addWriter(const string& testname, shared_ptr<ISSummaryWriter> writer) {
00047         if (theMap.find(testname) == theMap.end() ){
00048         theMap[testname] = writer;
00049         return true;
00050         }
00051         return false;
00052     }
00053 
00054     } // end of namespace TestISSummary
00055 } // end of namespace SctData

Generated on Mon Feb 6 14:01:22 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6