Changeset 132

Show
Ignore:
Timestamp:
05/04/08 13:05:46 (8 months ago)
Author:
zork
Message:

store binded vars

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/dba/dba/xmlostream.cpp

    r131 r132  
    4949void 
    5050XMLOStream::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); 
    5756    if (!filter.isNull()) { 
    5857      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()); 
    6059    }; 
    61     current = current->next; 
    62     if (current == NULL) 
     60    member = member->next; 
     61    if (member == NULL) 
    6362      break; 
    6463  }; 
     
    6766void 
    6867XMLOStream::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  }; 
    7078}; 
    7179 
     
    7583  if (mMemberList->mFirst->name == NULL) 
    7684    return false; 
    77   int id = 1; //TODO assign new id here - per file? 
    7885 
    7986  mt_class* current = mMemberList->mFirst; 
    8087  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())); 
    8290  while(current->name != NULL) { 
    8391    updateNodeFromObject(node,*pObject,current); 
  • trunk/dba/test/main.cpp

    r130 r132  
    151151  //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::transactions_rollback)); 
    152152  //runner.addTest(dba_tests::XMLTestCase::suite()); 
    153   runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::simpleStore)); 
     153  runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::storeVar)); 
    154154  //runner.addTest(new CppUnit::TestCaller<OdbcPluginTestCase>("debug_test",&OdbcPluginTestCase::dbConnection)); 
    155155  //runner.addTest(new CppUnit::TestCaller<PostgresSQLArchiveTestCase>("debug_test",&PostgresSQLArchiveTestCase::sqlError)); 
  • trunk/dba/test/xmltestcase.cpp

    r131 r132  
    1313#include "testobject.h" 
    1414#include "dba/fileutils.h" 
     15#include "dba/int_filter.h" 
    1516 
    1617namespace dba_tests { 
     
    8081"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" 
    8182"<dba>\n" 
    82 "  <test_objects id=\"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" 
    8384"</dba>\n"; 
    8485  { 
     
    9495}; 
    9596 
     97void 
     98XMLTestCase::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 
    96119} //namespace 
  • trunk/dba/test/xmltestcase.h

    r130 r132  
    2929      CPPUNIT_TEST(encodingChange); 
    3030      CPPUNIT_TEST(simpleStore); 
     31      CPPUNIT_TEST(storeVar); 
    3132    CPPUNIT_TEST_SUITE_END(); 
    3233  public: 
     
    3940    void encodingChange(); 
    4041    void simpleStore(); 
     42    void storeVar(); 
    4143  private: 
    4244    bool compareXML(const char* pFilename, const char* pData);