#include "dbxml/DbXml.hpp" #include #include #include #include using namespace DbXml; // exception handling omitted for clarity int main(void) { u_int32_t env_flags = DB_CREATE | // If the environment does not // exist, create it. DB_INIT_LOCK | // Initialize the locking subsystem DB_INIT_LOG | // Initialize the logging subsystem DB_INIT_MPOOL | // Initialize the cache DB_INIT_TXN; // Initialize transactions; std::string envHome("/data2/export/testEnv"); DbEnv myEnv(0); try { myEnv.open(envHome.c_str(), env_flags, 0); } catch(DbException &e) { std::cerr << "1) Error opening database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } catch(std::exception &e) { std::cerr << "2) Error opening database environment: " << envHome << std::endl; std::cerr << e.what() << std::endl; } // Do BDB XML work here // Open an XmlManager. XmlManager myManager; //myManager.removeContainer("/data/export/EPEC_txikia_node.bdbxml"); XmlContainer myContainer = myManager.createContainer("/data2/export/EPEC_fsak.bdbxml" ); myManager.setDefaultContainerType(XmlContainer::NodeContainer); XmlUpdateContext theContext = myManager.createUpdateContext(); myContainer.addIndex("adibidea","fs","node-element-presence-none",theContext); //agian default index-en bat sartu beharko litzateke nodo bakoitzerako DIR * directory; struct dirent * entry; int i = 0; int luzera; char document[100]; directory = opendir("."); //. eta .. kentzeko entry = readdir (directory); entry = readdir (directory); while ((entry = readdir (directory))){ std::cout << i << " datu basea eguneratzen..." << std::endl; std::string fitxIzena ="/data/fsak/"; fitxIzena += entry->d_name; if (strstr(entry->d_name,"osatu")){ printf("osatu haurkitu delako ateratzen da. %s\n",entry->d_name); continue; } luzera=strlen(entry->d_name)-4; strncpy(document,entry->d_name,luzera); document[luzera]='\0'; std::string docName = document; std::string documentName = entry->d_name; std::string docType; std::string zatiak[15]; std::cout << "fitx izena: " << fitxIzena << " \ndokumentu izena: " << docName << std::endl; char * cstr,*p; cstr = new char [documentName.size()+1]; strcpy (cstr, docName.c_str()); p=strtok(cstr,"."); while (p != NULL){ //printf("%s\n",p); docType = p; std::cout << "\t docType = " <