otsdaq  v2_05_02_indev
DOMTreeErrorReporter.cc
1 #include "otsdaq/XmlUtilities/DOMTreeErrorReporter.h"
2 #include "otsdaq/Macros/CoutMacros.h"
3 #include "otsdaq/MessageFacility/MessageFacility.h"
4 
5 #include <iostream>
6 #include <sstream>
7 #include <xercesc/util/XMLString.hpp>
8 
9 using namespace ots;
10 
11 #undef __COUT_HDR__
12 #define __COUT_HDR__ "DOMTreeErrorReporter"
13 
14 //==============================================================================
15 DOMTreeErrorReporter::DOMTreeErrorReporter() {}
16 
17 //==============================================================================
18 DOMTreeErrorReporter::~DOMTreeErrorReporter() {}
19 
20 //==============================================================================
21 void DOMTreeErrorReporter::warning(const xercesc::SAXParseException& ex)
22 {
23  __COUT__ << "Warning!" << std::endl;
24  __THROW__(reportParseException(ex));
25 }
26 
27 //==============================================================================
28 void DOMTreeErrorReporter::error(const xercesc::SAXParseException& ex)
29 {
30  __COUT__ << "Error!" << std::endl;
31  __THROW__(reportParseException(ex));
32 }
33 
34 //==============================================================================
35 void DOMTreeErrorReporter::fatalError(const xercesc::SAXParseException& ex)
36 {
37  __COUT__ << "Fatal Error!" << std::endl;
38  __THROW__(reportParseException(ex));
39 }
40 
41 //==============================================================================
42 void DOMTreeErrorReporter::resetErrors() {}
43 
44 //==============================================================================
45 std::string DOMTreeErrorReporter::reportParseException(const xercesc::SAXParseException& exception)
46 {
47  __SS__ << "\n"
48  << "\tIn file \"" << xercesc::XMLString::transcode(exception.getSystemId()) << "\", line " << exception.getLineNumber() << ", column "
49  << exception.getColumnNumber() << std::endl
50  << "\tMessage: "
51  << xercesc::XMLString::transcode(exception.getMessage())
52  //<< " (check against xsd file)" //RAR commented, has no meaning to me or users..
53  << "\n\n";
54  __COUT__ << "\n" << ss.str() << std::endl;
55  return ss.str();
56 }