// DatasetCreator_t.h #ifndef dset__DatasetCreator_t_H #define dset__DatasetCreator_t_H // David Adams // July 2002 // // Creator for Dataset test class. // This should not be included in any library. // // XML format is // // TestDataset // id = iii-jjj // parent = iii-jjj // // The parent is absent if there is no parent. #include "dataset_base/DatasetCreator.h" #include "dataset_util/XmlElement.h" #include "dataset_base/Dataset_t.h" #include "dataset_base/DatasetRepository.h" namespace { // Creator. const dset::Dataset* create(const XmlElement& ele, dset::DatasetRepository* prep) { assert( ele.name() == "TestDataset" ); // Fetch ID. assert( ele.has_attribute("id")); DatasetId id(ele.attribute("id")); assert( id.is_valid() ); const dset::Dataset* pparent = 0; if ( prep != 0 && ele.has_attribute("parent") ) { DatasetId pid(ele.attribute("parent")); pparent = prep->extract(pid); assert( pparent != 0); } // Fetch content. const XmlElement* pxcon = ele.single_child(dset::Content::xml_name()); assert( pxcon != 0 ); dset::Content con(*pxcon); // Fetch location. const XmlElement* pxloc = ele.single_child(dset::Location::xml_name()); assert( pxloc != 0 ); dset::Location loc(*pxloc); TestDataset* pdst = new TestDataset(id, pparent, con, loc); return pdst; } // Insert creator in table. int stat = dset::DatasetCreator::insert("TestDataset", create); } // end unnamed namespace #endif