00001
00002 #ifndef RDBMODEL_XERCESBUILDER_H
00003 #define RDBMODEL_XERCESBUILDER_H
00004
00005 #include "rdbModel/Management/Builder.h"
00006 #include <xercesc/dom/DOMDocument.hpp>
00007 #include <xercesc/dom/DOMElement.hpp>
00008 #include "rdbModel/Tables/Column.h"
00009 #include "rdbModel/Tables/Assertion.h"
00010 namespace rdbModel{
00011
00012 class Table;
00013 class Index;
00014 class Datatype;
00015 class Supersede;
00016 class InterRow;
00017 class InsertNew;
00018 class Query;
00019 class Set;
00026 class XercesBuilder : public Builder {
00027 public:
00028
00032 XercesBuilder();
00033
00034 virtual ~XercesBuilder() {};
00035
00040 virtual unsigned int parseInput(const std::string& inputPath);
00041
00043 virtual int buildRdb();
00044
00045 private:
00046
00047
00048
00050 Table* buildTable(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e);
00051
00053 Column* buildColumn(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,Table* t);
00054
00059 Index* buildIndex(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00060 bool primary, Table* t);
00061
00062 Assertion* buildAssertion(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00063 Table* t);
00064
00065 Assertion::Operator*
00066 buildOperator(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e, Table* t);
00067
00068 Datatype* buildDatatype(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e);
00069 Set* buildSet(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e, Table* t);
00070
00071 InsertNew* buildInsertNew(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00072 Table* t);
00073
00074 InterRow* buildInterRow(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00075 Table* t);
00076
00077 Query* buildQuery(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00078 Table* t);
00079
00080
00081
00082 Supersede* buildSupersede(XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* e,
00083 Table* t);
00084
00085 XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* m_doc;
00086 Rdb* m_rdb;
00087
00088 };
00089 }
00090 #endif //XERCESBUILDER_H
00091
00092
00093
00094
00095
00096
00097