00001 #include "TestDisplayer.h" 00002 #include "DisplayManager.h" 00003 00004 #include "SctData/TestResult.h" 00005 #include "Sct/IS/IOManagerIS.h" 00006 #include "Sct/SctNames.h" 00007 #include "Sct/LogicErrors.h" 00008 #include "SummaryWriter/SummaryManager.h" 00009 #include "Sct/Archive/IOManagerArchiveFile.h" 00010 #include "Sct/Archive/IONameArchiveFile.h" 00011 00012 #include <TCanvas.h> 00013 00014 using namespace Sct; 00015 using namespace Sct::IS; 00016 using namespace SctData; 00017 using namespace boost; 00018 00019 namespace SctDataDisplay { 00020 00021 bool TestDisplayer::inList = DisplayManager::addGeneric(shared_ptr<GenericDisplayer>(new TestDisplayer)); 00022 00023 shared_ptr<DisplayData> TestDisplayer::display(shared_ptr<const Sct::Serializable> ob, const DisplayInfo& info, std::ostream& os) { 00024 shared_ptr<TestDisplayData> data (new TestDisplayData); 00025 shared_ptr<const TestResult> tr = dynamic_pointer_cast<const TestResult>(ob); 00026 if (!tr) throw InvalidArgumentError("TestDisplayer::display called but argument is not a TestResult", __FILE__, __LINE__); 00027 00028 printSummaryString(*tr, os); 00029 displayTestResult(*tr, *data, info, os); 00030 00031 return data; 00032 } 00033 00034 void TestDisplayer::displayTestResult(const TestResult& result, TestDisplayData& data, const DisplayInfo& info, std::ostream& os) { 00035 displayAllRaws(result, data, info, os); 00036 } 00037 00038 00039 00040 bool TestDisplayer::canDisplay(const Sct::Serializable& ob) { 00041 const TestResult* tr = dynamic_cast<const TestResult*>(&ob); 00042 if (tr != 0) return true; 00043 return false; 00044 } 00045 00046 00047 00048 void TestDisplayer::displayAllRaws(const TestResult& result, TestDisplayData& data, const DisplayInfo& info, std::ostream& os) { 00049 unsigned int runNumber = result.getRunNumber(); 00050 string moduleName = result.getModuleName(); 00051 for (unsigned int i=0; i<result.getNScans(); ++i) { 00052 unsigned int scanNumber = result.getScanNumberAt(i); 00053 00054 shared_ptr<Serializable> ob; 00055 try { 00056 string isName = SctNames::getEventDataName() + ".SctData::RawScanResult." + (string)ResultHeader::getUniqueID(runNumber, scanNumber, moduleName); 00057 ob = IOManagerIS::instance().read(isName); 00058 }catch (IoException&e){ 00059 } 00060 if (!ob.get()){ 00061 Sct::Archive::IONameArchiveFile namearch((string)result.getUniqueID(), result.getClassName()); 00062 ob=Sct::Archive::IOManagerArchiveFile::instance().read(namearch.getIOName()); 00063 } 00064 data.otherData.push_back(DisplayManager::display(ob, info, os)); 00065 } 00066 } 00067 00068 void TestDisplayer::printSummaryString(const TestResult& result, std::ostream& os) { 00069 if (DisplayManager::batchMode()){ 00070 SctData::TestSummary::SummaryManager::instance().write(result, os); 00071 } 00072 } 00073 00074 }