Changeset 153
- Timestamp:
- 07/01/08 16:34:50 (6 months ago)
- Files:
-
- trunk/dba/dba/xmlarchive.cpp (modified) (2 diffs)
- trunk/dba/dba/xmlistream.cpp (modified) (1 diff)
- trunk/dba/dba/xmlostream.cpp (modified) (2 diffs)
- trunk/dba/dba/xmlostream.h (modified) (2 diffs)
- trunk/dba/test/main.cpp (modified) (2 diffs)
- trunk/dba/test/xmltestcase.cpp (modified) (2 diffs)
- trunk/dba/test/xmltestcase.h (modified) (2 diffs)
- trunk/wxdba/wxdba/xmlarchive.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dba/dba/xmlarchive.cpp
r152 r153 51 51 if (root->name == NULL) 52 52 throw DataException("Root node has no name"); 53 if ( xmlStrcmp(mRootNodeName,root->name))54 throw DataException("Wrong root node name , forgot to call setRootNodeName?");53 if ((mRootNodeName != NULL) && (xmlStrcmp(mRootNodeName,root->name))) 54 throw DataException("Wrong root node name"); 55 55 } else { 56 56 mDocument = xmlNewDoc((const xmlChar*)"1.0"); 57 xmlNodePtr node = xmlNewDocNode(mDocument,NULL,mRootNodeName,NULL); 58 xmlDocSetRootElement(mDocument,node); 57 if (mRootNodeName != NULL) { 58 xmlNodePtr node = xmlNewDocNode(mDocument,NULL,mRootNodeName,NULL); 59 xmlDocSetRootElement(mDocument,node); 60 }; 59 61 }; 60 62 updateEncoding(); 61 mRootNode = mDocument->children; 63 if (mRootNodeName != NULL) { 64 mRootNode = mDocument->children; 65 } else { 66 mRootNode = xmlDocGetRootElement(mDocument); 67 }; 62 68 }; 63 69 … … 73 79 IStream* 74 80 XMLArchive::getInputStream() { 75 return new XMLIStream(mRootNode,mConvSpecs); 81 xmlNodePtr root = xmlDocGetRootElement(mDocument); 82 if (mRootNodeName != NULL) 83 root = root->children; 84 return new XMLIStream(root,mConvSpecs); 76 85 }; 77 86 78 87 OStream* 79 88 XMLArchive::getOutputStream() { 80 return new XMLOStream(m RootNode,mConvSpecs);89 return new XMLOStream(mDocument,mRootNode,mConvSpecs); 81 90 }; 82 91 83 92 XMLIStream 84 93 XMLArchive::getIStream() { 85 XMLIStream ret(mRootNode,mConvSpecs); 86 return ret; 94 xmlNodePtr root = xmlDocGetRootElement(mDocument); 95 if (mRootNodeName != NULL) 96 root = root->children; 97 return XMLIStream(root,mConvSpecs); 87 98 }; 88 99 89 100 XMLOStream 90 101 XMLArchive::getOStream() { 91 XMLOStream ret(m RootNode,mConvSpecs);102 XMLOStream ret(mDocument,mRootNode,mConvSpecs); 92 103 return ret; 93 104 }; trunk/dba/dba/xmlistream.cpp
r150 r153 21 21 mParentNode(pNode) 22 22 { 23 mCurrentNode = findNonTextNode(mParentNode ->children);23 mCurrentNode = findNonTextNode(mParentNode); 24 24 } 25 25 trunk/dba/dba/xmlostream.cpp
r149 r153 16 16 namespace dba { 17 17 18 XMLOStream::XMLOStream(xml NodePtr pNode, const ConvSpec& pSpecs)18 XMLOStream::XMLOStream(xmlDocPtr pDocument, xmlNodePtr pNode, const ConvSpec& pSpecs) 19 19 : OStream(), 20 20 ConvSpecContainer(pSpecs), 21 mDocument(pDocument), 21 22 mParentNode(pNode) 22 23 { 23 mCurrentNode = mParentNode->children;24 24 } 25 25 … … 99 99 break; 100 100 }; 101 xmlAddChild(mParentNode, node); 101 if (mParentNode != NULL) 102 xmlAddChild(mParentNode, node); 103 else 104 xmlDocSetRootElement(mDocument,node); 102 105 return true; 103 106 }; trunk/dba/dba/xmlostream.h
r138 r153 24 24 class XMLOStream : public OStream, public XMLErrorHandler, public ConvSpecContainer { 25 25 public: 26 XMLOStream(xml NodePtr pNode, const ConvSpec& pSpecs);26 XMLOStream(xmlDocPtr pDocument, xmlNodePtr pNode, const ConvSpec& pSpecs); 27 27 virtual void close(); 28 28 virtual void destroy(); … … 43 43 virtual void endMemberChildrenStore(const Storeable& pObject, const ColMemberEntry& pMember); 44 44 private: 45 xmlDocPtr mDocument; 45 46 xmlNodePtr mParentNode; 46 xmlNodePtr mCurrentNode;47 47 48 48 void updateNodeFromVars(xmlNodePtr pNode, mt_class* pTable); trunk/dba/test/main.cpp
r151 r153 144 144 CppUnit::BriefTestProgressListener listener; 145 145 runner.eventManager().addListener(&listener); 146 runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );146 //runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); 147 147 //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::sqlError)); 148 148 //runner.addTest(new CppUnit::TestCaller<PostgresSQLArchiveTestCase>("debug_test",&PostgresSQLArchiveTestCase::sqlError)); … … 150 150 //runner.addTest(new CppUnit::TestCaller<dba_tests::CSVTestCase>("debug_test",&dba_tests::CSVTestCase::manual)); 151 151 //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::transactions_rollback)); 152 //runner.addTest(dba_tests::XMLTestCase::suite());153 //runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::s ublist_tree_load));152 runner.addTest(dba_tests::XMLTestCase::suite()); 153 //runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::simpleOneLoad)); 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
r145 r153 100 100 101 101 void 102 XMLTestCase::simpleOneStore() { 103 const char* result = 104 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 105 "<test_objects i_value=\"1\" f_value=\"1.1\" s_value=\"test\" d_value=\"2008-01-01Z00:00:00\"/>\n" 106 ; 107 { 108 dba::XMLArchive ar; 109 ar.setRootNodeName(NULL); 110 unlink("simpleonestore.xml"); 111 ar.open("simpleonestore.xml"); 112 TestObject obj1(1,1.1,"test",Utils::getDate(2008,1,1,0,0,0)); 113 dba::XMLOStream stream(ar.getOStream()); 114 stream.open(); 115 stream.put(&obj1); 116 } 117 CPPUNIT_ASSERT(compareXML("simpleonestore.xml",result)); 118 }; 119 120 void 102 121 XMLTestCase::storeVar() { 103 122 const char* result = … … 155 174 }; 156 175 }; 176 177 void 178 XMLTestCase::simpleOneLoad() { 179 const char* data = 180 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 181 "<test_objects i_value=\"1\" f_value=\"1.1\" s_value=\"test\" d_value=\"2008-01-01Z00:00:00\"/>\n" 182 ; 183 { 184 std::ofstream file("simpleoneload.xml"); 185 file << data; 186 }; 187 { 188 dba::XMLArchive ar; 189 ar.setRootNodeName(NULL); 190 ar.open("simpleoneload.xml"); 191 TestObject obj1; 192 dba::XMLIStream stream(ar.getIStream()); 193 194 stream.open(obj1); 195 CPPUNIT_ASSERT(stream.getNext(&obj1)); 196 197 TestObject expected(1,1.1,"test",Utils::getDate(2008,1,1,0,0,0)); 198 CPPUNIT_ASSERT(obj1 == expected); 199 }; 200 }; 201 157 202 158 203 void trunk/dba/test/xmltestcase.h
r145 r153 29 29 CPPUNIT_TEST(encodingChange); 30 30 CPPUNIT_TEST(simpleStore); 31 CPPUNIT_TEST(simpleOneStore); 31 32 CPPUNIT_TEST(storeVar); 32 33 CPPUNIT_TEST(emptyLoad); 33 34 CPPUNIT_TEST(simpleLoad); 35 CPPUNIT_TEST(simpleOneLoad); 34 36 CPPUNIT_TEST(varLoad); 35 37 CPPUNIT_TEST(sublist_one_store); … … 53 55 void encodingChange(); 54 56 void simpleStore(); 57 void simpleOneStore(); 55 58 void storeVar(); 56 59 void emptyLoad(); 57 60 void simpleLoad(); 61 void simpleOneLoad(); 58 62 void varLoad(); 59 63 void sublist_one_store(); trunk/wxdba/wxdba/xmlarchive.cpp
r150 r153 12 12 XMLArchive::SetRootNodeName(const wxString& pName) { 13 13 try { 14 mHandle.setRootNodeName(Tools::ConvertToDbStr(pName,GetConversionSpecs().mDbCharset).c_str()); 14 if (pName.empty()) 15 mHandle.setRootNodeName(NULL); 16 else 17 mHandle.setRootNodeName(Tools::ConvertToDbStr(pName,GetConversionSpecs().mDbCharset).c_str()); 15 18 } catch (const dba::Exception& pEx) { 16 19 Exception::Rethrow(pEx);
