Changeset 141
- Timestamp:
- 05/25/08 19:03:51 (8 months ago)
- Files:
-
- trunk/dba/dba/collectionfilter.h (modified) (2 diffs)
- trunk/dba/dba/single.h (modified) (1 diff)
- trunk/dba/dba/stddeque.h (modified) (1 diff)
- trunk/dba/dba/stdlist.h (modified) (1 diff)
- trunk/dba/dba/stdmultiset.h (modified) (1 diff)
- trunk/dba/dba/stdset.h (modified) (1 diff)
- trunk/dba/dba/stdvector.h (modified) (1 diff)
- trunk/dba/dba/xmlistream.cpp (modified) (1 diff)
- trunk/dba/test/main.cpp (modified) (1 diff)
- trunk/dba/test/testobject.h (modified) (1 diff)
- trunk/dba/test/xmltestcase.cpp (modified) (1 diff)
- trunk/dba/test/xmltestcase.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dba/dba/collectionfilter.h
r48 r141 68 68 Filters for lists implements this by adding reference to 69 69 Storeable object returned by create() to contained collection 70 @return pointer to inserted Storeable object 70 71 @see InstanceFilter::put implmementation 71 72 */ 72 virtual voidput() = 0;73 virtual Storeable* put() = 0; 73 74 /** 74 75 Remove all objects from collection … … 169 170 virtual Storeable& create() { return mInstance; }; 170 171 /** 171 Add Storeable object to collection 172 Add Storeable object to collection 172 173 @param pToAdd object to add 174 @return pointer to inserted Storeable object 173 175 */ 174 virtual voidadd(const S& pToAdd) = 0;175 virtual voidput() {176 add(mInstance);176 virtual Storeable* add(const S& pToAdd) = 0; 177 virtual Storeable* put() { 178 return add(mInstance); 177 179 }; 178 180 virtual ~InstanceFilter() {} trunk/dba/dba/single.h
r97 r141 39 39 virtual Storeable& create() { return *mMember; }; 40 40 //iterator is assiging us 41 virtual void put() {};41 virtual Storeable* put() { return mMember; } 42 42 virtual void clear() {}; 43 43 ~Single() {}; trunk/dba/dba/stddeque.h
r134 r141 54 54 }; 55 55 virtual void clear() { (CollectionFilter<std::deque<T> >::mMember)->clear(); }; 56 virtual voidadd(const T& pToAdd) {56 virtual Storeable* add(const T& pToAdd) { 57 57 //std::cerr << "adding obj "<< pToAdd.getId() << " to set " << mMember << std::endl; 58 58 (CollectionFilter<std::deque<T> >::mMember)->push_back(pToAdd); 59 return &((CollectionFilter<std::deque<T> >::mMember)->back()); 59 60 }; 60 61 virtual ~stdDeque() {}; trunk/dba/dba/stdlist.h
r134 r141 54 54 }; 55 55 virtual void clear() { (CollectionFilter<std::list<T> >::mMember)->clear(); }; 56 virtual voidadd(const T& pToAdd) {56 virtual Storeable* add(const T& pToAdd) { 57 57 //std::cerr << "adding obj "<< pToAdd.getId() << " to list " << mMember << std::endl; 58 58 (CollectionFilter<std::list<T> >::mMember)->push_back(pToAdd); 59 return &((CollectionFilter<std::list<T> >::mMember)->back()); 59 60 }; 60 61 virtual ~stdList() {}; trunk/dba/dba/stdmultiset.h
r134 r141 54 54 }; 55 55 virtual void clear() { (CollectionFilter<std::multiset<T> >::mMember)->clear(); }; 56 virtual voidadd(const T& pToAdd) {56 virtual Storeable* add(const T& pToAdd) { 57 57 //std::cerr << "adding obj "<< pToAdd.getId() << " to set " << mSet << std::endl; 58 (CollectionFilter<std::multiset<T> >::mMember)->insert(pToAdd); 58 typename std::multiset<T>::iterator it = (CollectionFilter<std::multiset<T> >::mMember)->insert(pToAdd); 59 return (Storeable*)&(*it); 59 60 }; 60 61 virtual ~stdMultiset() {}; trunk/dba/dba/stdset.h
r134 r141 57 57 }; 58 58 virtual void clear() { (CollectionFilter<std::set<T> >::mMember)->clear(); }; 59 virtual voidadd(const T& pToAdd) {59 virtual Storeable* add(const T& pToAdd) { 60 60 //std::cerr << "adding obj "<< pToAdd.getId() << " to set " << mMember << std::endl; 61 (CollectionFilter<std::set<T> >::mMember)->insert(pToAdd); 61 typename std::pair<typename std::set<T>::const_iterator,bool> p = (CollectionFilter<std::set<T> >::mMember)->insert(pToAdd); 62 return (Storeable*)&(*(p.first)); 62 63 }; 63 64 virtual ~stdSet() {}; trunk/dba/dba/stdvector.h
r134 r141 54 54 }; 55 55 virtual void clear() { (CollectionFilter<std::vector<T> >::mMember)->clear(); }; 56 virtual voidadd(const T& pToAdd) {56 virtual Storeable* add(const T& pToAdd) { 57 57 //std::cerr << "adding obj "<< pToAdd.getId() << " to set " << mMember << std::endl; 58 58 (CollectionFilter<std::vector<T> >::mMember)->push_back(pToAdd); 59 return &((CollectionFilter<std::vector<T> >::mMember)->back()); 59 60 }; 60 61 virtual ~stdVector() {}; trunk/dba/dba/xmlistream.cpp
r139 r141 105 105 CollectionFilterBase* childFilter = member->getFilter(); 106 106 Storeable& child(childFilter->create()); 107 open(child,member->getTableName()); 107 open(child,member->getTableName()); 108 108 109 109 xmlNodePtr node = findNonTextNode(pNode); 110 110 while (node != NULL) { 111 mCurrentNode = node; 112 while(mCurrentNode && (xmlIsBlankNode(mCurrentNode) == 1)) 113 mCurrentNode = mCurrentNode->next; 111 mCurrentNode = findNonTextNode(node); 114 112 applyFilters(&child); 113 114 childFilter->updateRef((char*)pParent + member->getMemberOffset()); 115 Storeable* ref = childFilter->put(); 116 //recursive getChildren can be called only after put() 117 //(on pointer to already added object) 115 118 if (node->children != NULL) 116 getChildren(&child,node->children); 117 118 childFilter->updateRef((char*)pParent + member->getMemberOffset()); 119 childFilter->put(); 119 getChildren(ref,node->children); 120 120 node = setNextNode(node); 121 121 }; 122 122 123 //restore level to fkey node 123 124 if (member->getFKeyName() != NULL) trunk/dba/test/main.cpp
r140 r141 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::sublist_tree_store));152 runner.addTest(dba_tests::XMLTestCase::suite()); 153 //runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::sublist_tree_load)); 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/testobject.h
r139 r141 534 534 return true; 535 535 }; 536 void dump(int pLevel = 0) const { 537 std::cerr << "level:" << pLevel << " i_val: " << i << std::endl; 538 for(std::list<TreeObject>::const_iterator it = mLeafs.begin(); it != mLeafs.end(); it++) 539 it->dump(pLevel+1); 540 }; 536 541 std::list<TreeObject> mLeafs; 537 542 }; trunk/dba/test/xmltestcase.cpp
r140 r141 386 386 387 387 void 388 XMLTestCase::sublist_tree_load() { 389 const char* data = 390 "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 391 "<dba>\n" 392 " <test_objects i_value=\"1\" f_value=\"1\" s_value=\"1\" d_value=\"2008-01-01Z00:00:00\">\n" 393 " <fk_owner>\n" 394 " <test_objects i_value=\"2\" f_value=\"2\" s_value=\"2\" d_value=\"2008-01-01Z00:00:00\">\n" 395 " <fk_owner>\n" 396 " <test_objects i_value=\"3\" f_value=\"3\" s_value=\"3\" d_value=\"2008-01-01Z00:00:00\"/>\n" 397 " </fk_owner>\n" 398 " </test_objects>\n" 399 " </fk_owner>\n" 400 " </test_objects>\n" 401 "</dba>\n"; 402 { 403 std::ofstream file("sublist_tree_load.xml"); 404 file << data; 405 }; 406 { 407 dba::XMLArchive ar; 408 ar.open("sublist_tree_load.xml"); 409 410 dba::XMLIStream stream(ar.getIStream()); 411 TreeObject obj1; 412 stream.get(&obj1); 413 414 //obj1.dump(); 415 416 TreeObject expected(1,1,"1"); 417 TreeObject middle(2,2,"2"); 418 TreeObject last(3,3,"3"); 419 middle.mLeafs.push_back(last); 420 expected.mLeafs.push_back(middle); 421 422 CPPUNIT_ASSERT(obj1 == expected); 423 }; 424 }; 425 426 427 void 388 428 XMLTestCase::sublist_three_simple() { 389 429 const char* result = trunk/dba/test/xmltestcase.h
r140 r141 41 41 CPPUNIT_TEST(sublist_tree_store); 42 42 CPPUNIT_TEST(sublist_three_simple); 43 CPPUNIT_TEST(sublist_tree_load); 43 44 CPPUNIT_TEST_SUITE_END(); 44 45 public: … … 63 64 void sublist_tree_store(); 64 65 void sublist_three_simple(); 66 void sublist_tree_load(); 65 67 private: 66 68 bool compareXML(const char* pFilename, const char* pData);
