00001 #include "SerializableWrappers.h"
00002 #include "Sct/ISSerializableWrapper.h"
00003 #include "Sct/IOManager.h"
00004
00005 #include <sstream>
00006
00007 namespace SctArchiving{
00008
00009 void Sct::ISSerializableWrapper<TestData>::constructUniqueID() const{
00010 std::ostringstream uniqueid;
00011 uniqueid << getWrappedObject()->runNumber << "."
00012 << getWrappedObject()->startScanNumber << "."
00013 << getWrappedObject()->testName;
00014 m_uniqueID=uniqueid.str();
00015 }
00016
00017 void Sct::ISSerializableWrapper<SequenceData>::constructUniqueID() const{
00018 std::ostringstream uniqueid;
00019 uniqueid << getWrappedObject()->runNumber << "."
00020 << getWrappedObject()->startScanNumber << "."
00021 << getWrappedObject()->sequenceName;
00022 m_uniqueID=uniqueid.str();
00023 }
00024
00025 #ifdef IS_SERIALIZABLE_BUG
00026 #warning Here is a bug fix for online versions before 00-21-02
00027 void SequenceDataStreamer::read(Sct::IStream& in, Sct::Streamable& ob, const Sct::IOManager& manager) const{
00028 Sct::ISSerializableWrapper<SequenceData>& wrapper = dynamic_cast <Sct::ISSerializableWrapper<SequenceData>& > ( ob );
00029 SequenceData& seq = *wrapper.getWrappedObject();
00030 in >> seq.sequenceName >> seq.runNumber >> seq.startScanNumber >> seq.nTests;
00031 if ( seq.testNames_size != 0 ) delete[] seq.testNames;
00032 in.get( &seq.testNames, seq.testNames_size );
00033 in >> (int&)seq.status >> seq.startTime >> seq.endTime;
00034 if ( seq.modules_size != 0 ) delete[] seq.modules;
00035 in.get( &seq.modules, seq.modules_size );
00036 in >> seq.version;
00037 wrapper.constructUniqueID();
00038 }
00039
00040 void TestDataStreamer::read(Sct::IStream& in, Sct::Streamable& ob, const Sct::IOManager& manager) const{
00041 Sct::ISSerializableWrapper<TestData>& wrapper = dynamic_cast <Sct::ISSerializableWrapper<TestData>& > ( ob );
00042 TestData& td = *wrapper.getWrappedObject();
00043 in >> td.testName >> td.runNumber >> td.nScans >> td.startScanNumber >> td.testVariable;
00044 if ( td.testPoints_size != 0 ) delete[] td.testPoints;
00045 in.get( &td.testPoints, td.testPoints_size );
00046 in >> (int&)td.status >> td.startTime >> td.endTime;
00047 if ( td.modules_size != 0 ) delete[] td.modules;
00048 in.get( &td.modules, td.modules_size );
00049 in >> td.version;
00050 wrapper.constructUniqueID();
00051 }
00052
00053 static bool dummy1 = Sct::IOManager::addToMap("SequenceData" , std::auto_ptr<Sct::Streamer>(new SequenceDataStreamer() ) ) ;
00054
00055 static bool dummy2 = Sct::IOManager::addToMap("TestData", std::auto_ptr<Sct::Streamer>(new TestDataStreamer() ) ) ;
00056 #else
00057
00058
00059 static bool dummy1 = Sct::IOManager::addToMap("SequenceData" , std::auto_ptr<Sct::Streamer>(new Sct::ISStreamerWrapper<SequenceData>() ) ) ;
00060 static bool dummy2 = Sct::IOManager::addToMap("TestData", std::auto_ptr<Sct::Streamer>(new Sct::ISStreamerWrapper<TestData>() ) ) ;
00061
00062 #endif
00063
00064 }