Changeset 132
- Timestamp:
- 05/04/08 13:05:46 (8 months ago)
- Files:
-
- trunk/dba/dba/xmlostream.cpp (modified) (3 diffs)
- trunk/dba/test/main.cpp (modified) (1 diff)
- trunk/dba/test/xmltestcase.cpp (modified) (3 diffs)
- trunk/dba/test/xmltestcase.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dba/dba/xmlostream.cpp
r131 r132 49 49 void 50 50 XMLOStream::updateNodeFromObject(xmlNodePtr pNode, const Storeable& pObject, mt_class* pTable) { 51 mt_member* current = pTable->firstField; 52 current = pTable->firstField; 53 while(current->name != NULL) { 54 void* member = (char*)&pObject + (int)(current->offset); 55 StoreableFilterBase& filter = *(StoreableFilterBase*)current->func; 56 setFilterPtr(filter,member); 51 mt_member* member = pTable->firstField; 52 while(member->name != NULL) { 53 void* member_ptr = (char*)&pObject + (int)(member->offset); 54 StoreableFilterBase& filter = *(StoreableFilterBase*)member->func; 55 setFilterPtr(filter,member_ptr); 57 56 if (!filter.isNull()) { 58 57 std::string strdata(filter.toString(getConversionSpecs())); 59 xmlNewProp(pNode,(xmlChar*) current->name,(xmlChar*)strdata.c_str());58 xmlNewProp(pNode,(xmlChar*)member->name,(xmlChar*)strdata.c_str()); 60 59 }; 61 current = current->next;62 if ( current== NULL)60 member = member->next; 61 if (member == NULL) 63 62 break; 64 63 }; … … 67 66 void 68 67 XMLOStream::updateNodeFromVars(xmlNodePtr pNode, mt_class* pTable) { 69 //TODO 68 for (VarMap::const_iterator it = mBindings.begin(); it != mBindings.end(); it++) { 69 std::string data; 70 if (!strcmp(it->mTable,pTable->name)) { 71 dba::StoreableFilterBase& filter = *(it->mFilter); 72 data = filter.toString(mConvSpecs); 73 if (!data.empty()) { 74 xmlNewProp(pNode,(xmlChar*)it->mField,(xmlChar*)data.c_str()); 75 }; 76 }; 77 }; 70 78 }; 71 79 … … 75 83 if (mMemberList->mFirst->name == NULL) 76 84 return false; 77 int id = 1; //TODO assign new id here - per file?78 85 79 86 mt_class* current = mMemberList->mFirst; 80 87 xmlNodePtr node = xmlNewNode(NULL, (xmlChar*)current->name); 81 xmlNewProp(node,(xmlChar*)"id",(xmlChar*)(toStr(id).c_str())); 88 //FIXME add configuration for storing id? 89 //xmlNewProp(node,(xmlChar*)"id",(xmlChar*)(toStr(id).c_str())); 82 90 while(current->name != NULL) { 83 91 updateNodeFromObject(node,*pObject,current); trunk/dba/test/main.cpp
r130 r132 151 151 //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::transactions_rollback)); 152 152 //runner.addTest(dba_tests::XMLTestCase::suite()); 153 runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::s impleStore));153 runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::storeVar)); 154 154 //runner.addTest(new CppUnit::TestCaller<OdbcPluginTestCase>("debug_test",&OdbcPluginTestCase::dbConnection)); 155 155 //runner.addTest(new CppUnit::TestCaller<PostgresSQLArchiveTestCase>("debug_test",&PostgresSQLArchiveTestCase::sqlError)); trunk/dba/test/xmltestcase.cpp
r131 r132 13 13 #include "testobject.h" 14 14 #include "dba/fileutils.h" 15 #include "dba/int_filter.h" 15 16 16 17 namespace dba_tests { … … 80 81 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 81 82 "<dba>\n" 82 " <test_objects i d=\"1\" i_value=\"1\" f_value=\"1.1\" s_value=\"test\" d_value=\"2008-01-01Z00:00:00\"/>\n"83 " <test_objects i_value=\"1\" f_value=\"1.1\" s_value=\"test\" d_value=\"2008-01-01Z00:00:00\"/>\n" 83 84 "</dba>\n"; 84 85 { … … 94 95 }; 95 96 97 void 98 XMLTestCase::storeVar() { 99 const char* result = 100 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 101 "<dba>\n" 102 " <test_objects i_value=\"1\" f_value=\"1.1\" s_value=\"test\" d_value=\"2008-01-01Z00:00:00\" binded=\"4\"/>\n" 103 "</dba>\n"; 104 { 105 dba::XMLArchive ar; 106 unlink("simplestore.xml"); 107 ar.open("simplestore.xml"); 108 TestObject obj1(1,1.1,"test",Utils::getDate(2008,1,1,0,0,0)); 109 dba::XMLOStream stream(ar.getOStream()); 110 int binded = 4; 111 stream.bind("test_objects","binded",new dba::Int(binded)); 112 stream.open(); 113 stream.put(&obj1); 114 } 115 CPPUNIT_ASSERT(compareXML("simplestore.xml",result)); 116 }; 117 118 96 119 } //namespace trunk/dba/test/xmltestcase.h
r130 r132 29 29 CPPUNIT_TEST(encodingChange); 30 30 CPPUNIT_TEST(simpleStore); 31 CPPUNIT_TEST(storeVar); 31 32 CPPUNIT_TEST_SUITE_END(); 32 33 public: … … 39 40 void encodingChange(); 40 41 void simpleStore(); 42 void storeVar(); 41 43 private: 42 44 bool compareXML(const char* pFilename, const char* pData);
