/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Calibration/xmlBase/xmlBase-00-00-03/src/XmlErrorHandler.cxx

Go to the documentation of this file.
00001 // $Header: /bes/bes/BossCvs/Calibration/xmlBase/src/XmlErrorHandler.cxx,v 1.1.1.1 2005/10/17 06:10:27 maqm Exp $
00002 // author:  J. Bogart
00003 
00004 #include "xmlBase/XmlErrorHandler.h"
00005 #include "xmlBase/Dom.h"
00006 #include "facilities/Util.h"
00007 #include <string>
00008 
00009 namespace xmlBase {
00010   using XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException;
00011   using XERCES_CPP_NAMESPACE_QUALIFIER XMLString;
00012 
00013   void XmlErrorHandler::warning(const SAXParseException&) {
00014     m_nWarning++;
00015   }
00016 
00017   void XmlErrorHandler::error(const SAXParseException& toCatch) {
00018     char* charSyst = XMLString::transcode(toCatch.getSystemId());
00019     std::string systemId(charSyst);
00020     //    std::string systemId(Dom::transToChar(toCatch.getSystemId()));
00021     XMLString::release(&charSyst);
00022     char* charMsg = XMLString::transcode(toCatch.getMessage());
00023     std::string msg(charMsg);
00024     XMLString::release(&charMsg);
00025 
00026     std::string line;
00027     facilities::Util::itoa((int)toCatch.getLineNumber(), line);
00028     std::string col;
00029     facilities::Util::itoa((int)toCatch.getColumnNumber(), col);
00030 
00031     m_nError++;
00032 
00033     std::string errMsg("Error at file \"");
00034     errMsg += systemId + "\", line " + line + ",column " + col;
00035     errMsg += "\n Message: " + msg;
00036     if (m_throwErrors) {
00037       throw ParseException(errMsg);
00038     } else {
00039       std::cerr << errMsg << "\n\n";
00040     }
00041   }
00042 
00043   void XmlErrorHandler::fatalError(const SAXParseException& toCatch) {
00044 
00045     // getMessage returns type XMLCh*
00046 
00047     char* charMsg = XMLString::transcode(toCatch.getMessage());
00048     std::string msg(charMsg);
00049     XMLString::release(&charMsg);
00050 
00051     m_nFatal++;
00052 
00053     if (!(toCatch.getSystemId()) ) {
00054       std::string errMsg("Fatal XML parse error: no such file \n Message: ");
00055       errMsg += msg;
00056       if (m_throwErrors) {
00057         throw ParseException(errMsg);
00058       } else {
00059         std::cerr << errMsg << "\n\n";
00060       }
00061     }
00062     else {
00063       char* charSyst = XMLString::transcode(toCatch.getSystemId());
00064       std::string systemId(charSyst);
00065       XMLString::release(&charSyst);
00066 
00067       std::string line; 
00068       facilities::Util::itoa((int)toCatch.getLineNumber(), line);
00069       std::string col; 
00070       facilities::Util::itoa((int)toCatch.getColumnNumber(), col);
00071       std::string errMsg("Fatal error at file \"");
00072       errMsg += systemId + "\", line " + line + ",column " + col;
00073       errMsg += "\n Message: " + msg;
00074 
00075       if (m_throwErrors) {
00076         throw ParseException(errMsg);
00077       } else {
00078         std::cerr << errMsg << "\n\n";
00079       }
00080     }
00081   }
00082   void XmlErrorHandler::resetErrors() {
00083     m_nWarning = m_nError = m_nFatal = 0;
00084   }
00085 }

Generated on Tue Nov 29 22:57:57 2016 for BOSS_7.0.2 by  doxygen 1.4.7