From c93be89ea6060537340028c7f012fe8f0e2d2a49 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Wed, 11 Mar 2015 16:12:56 +0400 Subject: Begin parser... --- main.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp index 6b1bf23..9a3b3f1 100644 --- a/main.cpp +++ b/main.cpp @@ -17,10 +17,8 @@ #include //----- class ----- -#include "AESCrypt.hpp" -#include "HASHCrypt.hpp" #include "FileManIOFile.hpp" - +#include "FileManParser.hpp" /** @@ -33,7 +31,30 @@ */ int main(int argc, char *argv[]){ - std::string chaine="It's work !"; + + + + std::string xml="\n\ + \n\ + \n\ + \n\ + \n\ + \n\ + "; + + + FileManParser parser(xml); + + + + //std::cout << std::endl << parser.getData() << std::endl; + + + + + + + /*std::string chaine="It's work !"; std::string key="loic"; AESCrypt aes; @@ -45,7 +66,7 @@ int main(int argc, char *argv[]){ fichier.read(key); if(fichier.isReadable()) - std::cout << fichier.getData(); + std::cout << fichier.getData();*/ return 0; -- cgit v1.2.3 From 41897f295fbaf4d715a6fc099c81d4e15b48e19b Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Wed, 11 Mar 2015 19:53:47 +0400 Subject: Update ParserClass files --- ParserClass/FileManContainer/FileManContainer.cpp | 25 ++++++++++++ ParserClass/FileManContainer/FileManContainer.hpp | 46 +++++++++++++++++++++++ ParserClass/FileManContainer/Website.cpp | 17 +++++++++ ParserClass/FileManContainer/Website.hpp | 11 +++++- ParserClass/FileManParser.cpp | 24 ++++++++++-- ParserClass/FileManParser.hpp | 5 ++- main.cpp | 8 +++- 7 files changed, 128 insertions(+), 8 deletions(-) (limited to 'main.cpp') diff --git a/ParserClass/FileManContainer/FileManContainer.cpp b/ParserClass/FileManContainer/FileManContainer.cpp index e69de29..7f04be4 100644 --- a/ParserClass/FileManContainer/FileManContainer.cpp +++ b/ParserClass/FileManContainer/FileManContainer.cpp @@ -0,0 +1,25 @@ +/** + * @file FileManContainer.cpp + * @brief FileManContainer class definitions + * @author manzerbredes + * @date 11 Mars 2015 + * + * Contain all implementation of FileManContainer class. + * + */ + + +#include "FileManContainer.hpp" + +FileManContainer::FileManContainer(){ +} + + + +void FileManContainer::addWebsite(Website website){ + this->websites.push_back(website); +} + +std::vector FileManContainer::getWebsites(){ + return this->websites; +} diff --git a/ParserClass/FileManContainer/FileManContainer.hpp b/ParserClass/FileManContainer/FileManContainer.hpp index e69de29..d5be276 100644 --- a/ParserClass/FileManContainer/FileManContainer.hpp +++ b/ParserClass/FileManContainer/FileManContainer.hpp @@ -0,0 +1,46 @@ +/** + * @file FileManContainer.hpp + * @brief FileManContainer class definitions + * @author manzerbredes + * @date 11 Mars 2015 + * + * Contain all definitions of FileManContainer class. + * + */ + +#ifndef __FileManContainer__ +#define __FileManContainer__ + +//----- std ----- + +#include +#include + +//----- class ----- +#include "Website.hpp" + + +/** + * @class Website Website.hpp "/ParserClass/FileManContainer/Website.hpp" + * @brief Class for manager all FileMan container (websites etc...) + * @author manzerbredes + * + * + * + */ + +class FileManContainer{ + + public: + FileManContainer(); + + void addWebsite(Website website); + std::vector getWebsites(); + + private: + + std::vector websites; +}; + + +#endif diff --git a/ParserClass/FileManContainer/Website.cpp b/ParserClass/FileManContainer/Website.cpp index 0d25344..0e1a670 100644 --- a/ParserClass/FileManContainer/Website.cpp +++ b/ParserClass/FileManContainer/Website.cpp @@ -11,6 +11,20 @@ #include "Website.hpp" + +Website::Website(){ + boost::uuids::uuid uuid = boost::uuids::random_generator()(); + std::stringstream ss; + ss << uuid; + this->id=ss.str(); +} + + + + +std::string Website::getId(){ + return this->id; +} std::string Website::getTitle(){ return this->title; } @@ -29,6 +43,9 @@ std::string Website::getDescription(){ +void Website::setId(std::string id){ + this->id = id; +} void Website::setTitle(std::string title){ this->title = title; } diff --git a/ParserClass/FileManContainer/Website.hpp b/ParserClass/FileManContainer/Website.hpp index 01c41f9..ceb21ad 100644 --- a/ParserClass/FileManContainer/Website.hpp +++ b/ParserClass/FileManContainer/Website.hpp @@ -27,6 +27,10 @@ */ #include +#include +#include // uuid class +#include // generators +#include // streaming operators etc. @@ -43,10 +47,13 @@ class Website{ public: + Website(); + /** * @brief Containner getters. */ + std::string getId(); std::string getTitle(); std::string getUrl(); std::string getUsername(); @@ -57,6 +64,7 @@ class Website{ /** * @brief Containner setters. */ + void setId(std::string title); void setTitle(std::string title); void setUrl(std::string url); void setUsername(std::string username); @@ -66,7 +74,8 @@ class Website{ private: - std::string title; ///< Title en the website + std::string id; ///< id of the website + std::string title; ///< Title of the website std::string url; ///< Url of the website std::string username; ///< username of the account std::string password; ///< password of the account diff --git a/ParserClass/FileManParser.cpp b/ParserClass/FileManParser.cpp index 00db891..8cc72b5 100644 --- a/ParserClass/FileManParser.cpp +++ b/ParserClass/FileManParser.cpp @@ -41,8 +41,8 @@ FileManParser::FileManParser(std::string data){ -std::vector FileManParser::getWebsites(){ - return this->websites; +FileManContainer FileManParser::getContainer(){ + return this->container; } @@ -64,9 +64,25 @@ void FileManParser::initWebsites(){ std::string TagName=xercesc::XMLString::transcode(current->getNodeName()); if( current->getNodeType() == xercesc::DOMNode::ELEMENT_NODE ) { + Website newWebsite; - std::cout << this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"title"); - std::cout << this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"url"); + newWebsite.setTitle(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"title")); + + newWebsite.setUrl(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"url")); + + newWebsite.setUsername(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"username")); + + newWebsite.setPassword(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"password")); + + newWebsite.setDescription(\ + this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"description")); + + + this->container.addWebsite(newWebsite); } } diff --git a/ParserClass/FileManParser.hpp b/ParserClass/FileManParser.hpp index 88c959e..6a977db 100644 --- a/ParserClass/FileManParser.hpp +++ b/ParserClass/FileManParser.hpp @@ -15,6 +15,7 @@ //----- class ----- #include "Website.hpp" +#include "FileManContainer.hpp" //----- xerces ----- #include @@ -35,7 +36,7 @@ class FileManParser{ - std::vector getWebsites(); + FileManContainer getContainer(); void initWebsites(); @@ -50,7 +51,7 @@ class FileManParser{ xercesc::DOMElement* root; - std::vector websites; ///< contain all websites entries + FileManContainer container; ///< contain all container std::string data; ///< contain data to parse diff --git a/main.cpp b/main.cpp index 9a3b3f1..5b4c74d 100644 --- a/main.cpp +++ b/main.cpp @@ -15,11 +15,13 @@ #include #include +#include //----- class ----- #include "FileManIOFile.hpp" #include "FileManParser.hpp" - +#include "FileManContainer.hpp" +#include "Website.hpp" /** * @fn int main(int argc, char *argv[]) @@ -68,6 +70,10 @@ int main(int argc, char *argv[]){ if(fichier.isReadable()) std::cout << fichier.getData();*/ + FileManContainer container= parser.getContainer(); + std::vector websites= container.getWebsites(); + std::cout << websites.at(1).getId(); + return 0; } -- cgit v1.2.3 From c113e7b5f46a3434f017de3f2c9f83a002b246f1 Mon Sep 17 00:00:00 2001 From: manzerbredes Date: Fri, 13 Mar 2015 15:06:36 +0400 Subject: Update parser --- ParserClass/FileManParser.cpp | 26 +++++++++++++++++++++----- main.cpp | 2 +- 2 files changed, 22 insertions(+), 6 deletions(-) (limited to 'main.cpp') diff --git a/ParserClass/FileManParser.cpp b/ParserClass/FileManParser.cpp index 8cc72b5..66e3c52 100644 --- a/ParserClass/FileManParser.cpp +++ b/ParserClass/FileManParser.cpp @@ -52,36 +52,52 @@ std::string FileManParser::getData(){ return this->data;}; void FileManParser::initWebsites(){ + //Get websites élément xercesc::DOMElement* websitesElement=this->getChildByTagName(this->root, "websites"); + //Make list of website + xercesc::DOMNodeList* websiteList=websitesElement->getChildNodes(); + XMLSize_t websiteCount = websiteList->getLength(); - xercesc::DOMNodeList* nodeList=websitesElement->getChildNodes(); - XMLSize_t nodeCount = nodeList->getLength(); - for(int i=0;iitem(i); + xercesc::DOMNode* current=websiteList->item(i); std::string TagName=xercesc::XMLString::transcode(current->getNodeName()); if( current->getNodeType() == xercesc::DOMNode::ELEMENT_NODE ) { Website newWebsite; + //Get id + XMLCh* idXMLCh=(XMLCh*)((xercesc::DOMElement*)current)->getAttribute((XMLCh*) xercesc::XMLString::transcode("id")); + //Convert id to string from XMLCh + std::string id=xercesc::XMLString::transcode(idXMLCh); + + //Assign id + newWebsite.setId(id); + + //Assign title newWebsite.setTitle(\ this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"title")); + //Assign url newWebsite.setUrl(\ this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"url")); + //Assign username newWebsite.setUsername(\ this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"username")); + //Assign password newWebsite.setPassword(\ this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"password")); + //Assign description newWebsite.setDescription(\ this->getContentOfChild(dynamic_cast< xercesc::DOMElement* >( current ),"description")); - + //Add website to container this->container.addWebsite(newWebsite); } diff --git a/main.cpp b/main.cpp index 5b4c74d..dd455a5 100644 --- a/main.cpp +++ b/main.cpp @@ -72,7 +72,7 @@ int main(int argc, char *argv[]){ FileManContainer container= parser.getContainer(); std::vector websites= container.getWebsites(); - std::cout << websites.at(1).getId(); + std::cout << websites.at(0).getId(); return 0; -- cgit v1.2.3