diff options
| author | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2015-03-20 10:57:03 +0400 |
|---|---|---|
| committer | manzerbredes <loic.guegan_secondary@yahoo.fr> | 2015-03-20 10:57:03 +0400 |
| commit | 45f7cc5d27b338dae1d36c211cc5720c82f3de35 (patch) | |
| tree | 38c356a4e5ba77520e59964f25cde28527e552bd /src/ParserClass/FileManParser.cpp | |
| parent | eb267792cd70a763bf2dcbfce6e7a09251b3913f (diff) | |
Change file architecture
Diffstat (limited to 'src/ParserClass/FileManParser.cpp')
| -rw-r--r-- | src/ParserClass/FileManParser.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/src/ParserClass/FileManParser.cpp b/src/ParserClass/FileManParser.cpp new file mode 100644 index 0000000..57a485a --- /dev/null +++ b/src/ParserClass/FileManParser.cpp @@ -0,0 +1,132 @@ +/** + * @file FileManParser.cpp + * @brief FileManParser class definitions + * @author manzerbredes + * @date 11 Mars 2015 + * + * Contain all implementations of FileManParser class. + * + */ + + +#include "FileManParser.hpp" + + +FileManParser::FileManParser(std::string data){ + + //String to stringstream + (this->dataStream) << data; + + //Create parser + //parser.parse_stream(dataStream); + (this->parser).parse_file("Doxygen/doc.xml"); + + //Retrieve document + this->document=(this->parser).get_document(); + + //Init root Node + this->rootNode=(this->document)->get_root_node(); + + //Init container: + this->initWebsites(); + + + +} + + +std::string FileManParser::getDocument(){ + std::string data=(this->document)->write_to_string(); + return data; +} + + +std::vector<Website>* FileManParser::getWebsites(){ + return this->websites; +} + + + + +//----------------Container part------------------------ +void FileManParser::initWebsites(){ + this->websites=new std::vector<Website>; + + std::vector<xmlpp::Node*> websitesNodeSet=this->rootNode->find("//websites"); + this->websitesNode=websitesNodeSet.at(0); + + std::vector<xmlpp::Node*> websiteNodeSet=this->websitesNode->find("*"); + + for(int i=0;i<websiteNodeSet.size();i++){ + xmlpp::Node* current=websiteNodeSet.at(i); + xmlpp::Element* currentElement=(xmlpp::Element*)current; + + Website newWebsite; + newWebsite.setId(currentElement->get_attribute_value("id")); + + std::vector<xmlpp::Node*> websiteChildren=current->find("*"); + + for(int j=0;j<websiteChildren.size();j++){ + xmlpp::Element* currentChild=(xmlpp::Element*)websiteChildren.at(j); + + std::list<xmlpp::Node*> contentNodes=currentChild->get_children(); + xmlpp::CdataNode* cdataNode=(xmlpp::CdataNode*)contentNodes.front(); + std::string cdataContent=cdataNode->get_content(); + + + if(currentChild->get_name().compare("title")==0){ + newWebsite.setTitle(cdataContent); + } + else if(currentChild->get_name().compare("url")==0){ + newWebsite.setUrl(cdataContent); + } + else if(currentChild->get_name().compare("username")==0){ + newWebsite.setUsername(cdataContent); + } + else if(currentChild->get_name().compare("password")==0){ + newWebsite.setPassword(cdataContent); + } + else if(currentChild->get_name().compare("description")==0){ + newWebsite.setDescription(cdataContent); + } + } + this->websites->push_back(newWebsite); + } +} + + + + + + + + + +void FileManParser::updateParser(){ + this->rootNode->remove_child(this->websitesNode); + + xmlpp::Element* websitesNode=this->rootNode->add_child("websites"); + this->websitesNode=(xmlpp::Node*)websitesNode; + + for(int i=0;i<this->websites->size();i++){ + xmlpp::Element* current=this->websitesNode->add_child("website"); + Website currentWebsite=this->websites->at(i); + + current->set_attribute("id", currentWebsite.getId()); + xmlpp::Element* title=current->add_child("title"); + title->add_child_cdata(currentWebsite.getTitle()); + + xmlpp::Element* url=current->add_child("url"); + url->add_child_cdata(currentWebsite.getUrl()); + + xmlpp::Element* username=current->add_child("username"); + username->add_child_cdata(currentWebsite.getUsername()); + + xmlpp::Element* password=current->add_child("password"); + password->add_child_cdata(currentWebsite.getPassword()); + + xmlpp::Element* description=current->add_child("description"); + description->add_child_cdata(currentWebsite.getDescription()); + + } +} |
