BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
rdbModel::XercesBuilder Class Reference

#include <XercesBuilder.h>

Inheritance diagram for rdbModel::XercesBuilder:

Public Member Functions

 XercesBuilder ()
virtual ~XercesBuilder ()
virtual unsigned int parseInput (const std::string &inputPath)
virtual int buildRdb ()
 XercesBuilder ()
virtual ~XercesBuilder ()
virtual unsigned int parseInput (const std::string &inputPath)
virtual int buildRdb ()
 XercesBuilder ()
virtual ~XercesBuilder ()
virtual unsigned int parseInput (const std::string &inputPath)
virtual int buildRdb ()
Public Member Functions inherited from rdbModel::Builder
 Builder ()
void setRdb (Rdb *pRdb)
RdbgetRdb ()
 Builder ()
void setRdb (Rdb *pRdb)
RdbgetRdb ()
 Builder ()
void setRdb (Rdb *pRdb)
RdbgetRdb ()

Additional Inherited Members

Protected Attributes inherited from rdbModel::Builder
Rdbm_currentRdb

Detailed Description

This class is a concrete Builder that use the Xerces parser and the DOM functionalities to parse the xml file and build the generic model hierarchy

Author
D.Favretto & R.Giannitrapani

Definition at line 27 of file Calibration/rdbModel/include/rdbModel/Management/XercesBuilder.h.

Constructor & Destructor Documentation

◆ XercesBuilder() [1/3]

rdbModel::XercesBuilder::XercesBuilder ( )

The constructor

Definition at line 28 of file XercesBuilder.cxx.

◆ ~XercesBuilder() [1/3]

virtual rdbModel::XercesBuilder::~XercesBuilder ( )
inlinevirtual

◆ XercesBuilder() [2/3]

rdbModel::XercesBuilder::XercesBuilder ( )

The constructor

◆ ~XercesBuilder() [2/3]

virtual rdbModel::XercesBuilder::~XercesBuilder ( )
inlinevirtual

◆ XercesBuilder() [3/3]

rdbModel::XercesBuilder::XercesBuilder ( )

The constructor

◆ ~XercesBuilder() [3/3]

virtual rdbModel::XercesBuilder::~XercesBuilder ( )
inlinevirtual

Member Function Documentation

◆ buildRdb() [1/3]

int rdbModel::XercesBuilder::buildRdb ( )
virtual

Concrete implementation of pure virtual Builder::buildRdb

Implements rdbModel::Builder.

Definition at line 41 of file XercesBuilder.cxx.

41 {
42 using xmlBase::Dom;
43
44 Manager* man = Manager::getManager();
45
46 if ( m_doc == 0 ) return 0;
47 m_rdb = man->getRdb();
48 DOMElement* docElt = m_doc->getDocumentElement();
49
50 // save attribute information associated with outermost (rdbms) element.
51 m_rdb->m_dbName = Dom::getAttribute( docElt, "dbs" );
52 m_rdb->m_majorVersion = 0;
53 m_rdb->m_minorVersion = 0;
54
55 std::string versionString = Dom::getAttribute( docElt, "SchemaVersion" );
56 if ( !versionString.size() ) { versionString = Dom::getAttribute( docElt, "DTDversion" ); }
57
58 unsigned dotPos = versionString.find( '.' );
59
60 std::string minorStr = std::string( versionString, dotPos + 1 );
61 // versionString.size() - (dotPos+1));
62 versionString.resize( dotPos ); // now contains just major #
63
64 try
65 {
66 m_rdb->m_majorVersion = facilities::Util::stringToInt( versionString );
67 m_rdb->m_minorVersion = facilities::Util::stringToInt( minorStr );
68 } catch ( facilities::WrongType ex )
69 { std::cerr << "rdbModel::XercesBuilder: Bad version string " << std::endl; }
70 m_rdb->m_CVSid = Dom::getAttribute( docElt, "CVSid" );
71 if ( m_rdb->m_majorVersion != SCHEMA_MAJOR_VERSION )
72 {
73 std::cerr << "Schema major version " << m_rdb->m_majorVersion
74 << " doesn't match expected " << SCHEMA_MAJOR_VERSION << std::endl;
75 std::cerr << "Bye for now";
76 std::cerr.flush();
77 exit( 1 );
78 }
79
80 // Get vector of table elements.
81 std::vector<DOMElement*> tables;
82 Dom::getChildrenByTagName( docElt, "table", tables );
83 unsigned int nTable = tables.size();
84 unsigned int processed = 0;
85
86 for ( unsigned int iTable = 0; iTable < nTable; iTable++ )
87 {
88 Table* newTable = buildTable( tables[iTable] );
89
90 if ( newTable )
91 {
92 m_rdb->addTable( newTable );
93 processed++;
94 }
95 }
96 return nTable - processed;
97 }
#define SCHEMA_MAJOR_VERSION
static int stringToInt(const std::string &InStr)
static Manager * getManager()
Definition Manager.cxx:24

◆ buildRdb() [2/3]

virtual int rdbModel::XercesBuilder::buildRdb ( )
virtual

Concrete implementation of pure virtual Builder::buildRdb

Implements rdbModel::Builder.

◆ buildRdb() [3/3]

virtual int rdbModel::XercesBuilder::buildRdb ( )
virtual

Concrete implementation of pure virtual Builder::buildRdb

Implements rdbModel::Builder.

◆ parseInput() [1/3]

unsigned int rdbModel::XercesBuilder::parseInput ( const std::string & inputPath)
virtual

Invoke xml parser to produce DOM (in-memory) representation Concrete implementation of Builder::parseInput

Implements rdbModel::Builder.

Definition at line 30 of file XercesBuilder.cxx.

30 {
31 xmlBase::XmlParser parser;
32
33 parser.doSchema( true );
34
35 // m_doc = parser.parse(filename.c_str(), "rdbms");
36 m_doc = parser.parse( filename.c_str() );
37
38 return ( m_doc == 0 ) ? 0xffffffff : 0;
39 }
DOMDocument * parse(const char *const filename, const std::string &docType=std::string(""))
Parse an xml file, returning document node if successful.
void doSchema(bool doit)
Call this method to turn on schema processing (else it's off).
Definition XmlParser.cxx:87

◆ parseInput() [2/3]

virtual unsigned int rdbModel::XercesBuilder::parseInput ( const std::string & inputPath)
virtual

Invoke xml parser to produce DOM (in-memory) representation Concrete implementation of Builder::parseInput

Implements rdbModel::Builder.

◆ parseInput() [3/3]

virtual unsigned int rdbModel::XercesBuilder::parseInput ( const std::string & inputPath)
virtual

Invoke xml parser to produce DOM (in-memory) representation Concrete implementation of Builder::parseInput

Implements rdbModel::Builder.


The documentation for this class was generated from the following files: