#include "XmlFunctionHandler.h"

XmlFunctionHandler::XmlFunctionHandler()
{
	const string strMsg = "MSG";
//FunctionMap.insert(fHandler::value_type( "and",&Functions::and_FuncHandler ) );
endElementHandler.insert(endHandlerMap::value_type("MSG",&XmlFunctionHandler::MSG_EndHandler));
endElementHandler.insert(endHandlerMap::value_type("messagebody",&XmlFunctionHandler::messagebody_EndHandler));
endElementHandler.insert(endHandlerMap::value_type("messageheader",&XmlFunctionHandler::messageheader_EndHandler));
}

void messageid_EndHandler(const string&)
{
// m_MessageFormatObject.set
}

void messagesize_EndHandler(const string&){}
void messageheader_EndHandler(const string&){}
   
void receiver_EndHandler(const string&){}
void messagetype_EndHandler(const string&){}
void messagetext_EndHandler(const string&){}
void login_EndHandler(const string&){}
void password_EndHandler(const string&){}
void messagebody_EndHandler(const string&){}
   
void MSG_EndHandler(const string&){}


void XmlFunctionHandler::startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs)
{
	//cout<<"<"<<XMLString::transcode(localname)<<">"<<endl;	
}

void XmlFunctionHandler::characters(const XMLCh* const chars, const unsigned int length)
{
	cout<<XMLString::transcode(chars)<<endl;
	//m_CharData = XMLString::transcode(chars);
}

void XmlFunctionHandler::endElement ( const XMLCh *const uri, \
									 const XMLCh *const localname,const XMLCh *const qname)  
{
	const string strName = XMLString::transcode(localname);
	/*if (strName.find("messageheader") != -1)
	   void messageheader_EndHandler();
	if (strName.find("messagebody") != -1)
	   void messagebody_EndHandler();
	if (strName.find("MSG") != -1)
	   void MSG_EndHandler();*/
 //if ( (endElementIterator = endElementHandler.find(strName)) != endElementHandler.end()) {
    //  (this->*endElementHandler[strName])(strName); 
   //}
}

void XmlFunctionHandler::comment (  const XMLCh *const chars, \
 const unsigned int length )  
{
	cout<<"comment handler"<<XMLString::transcode(chars)<<endl;
}

void XmlFunctionHandler::endDocument()
{
	cout<<"End Of Document"<<endl;
}

void XmlFunctionHandler::ignorableWhitespace (  const XMLCh *const chars, \
 const unsigned int length )  
{
	cout<<"WhiteSPace"<<XMLString::transcode(chars)<<endl;
}

void XmlFunctionHandler::startEntity (  const XMLCh *const name )
{
	cout<<"Starting Entity.........."<<XMLString::transcode(name)<<endl;
}
  
void XmlFunctionHandler::startDTD (  const XMLCh *const name,\
									 const XMLCh *const publicId,  \
									 const XMLCh *const systemId )  \
{
	cout<<"Starting DTD.........."<<XMLString::transcode(name)<<endl;
}

void XmlFunctionHandler::notationDecl (  const XMLCh *const name,\
										 const XMLCh *const publicId,  \
										 const XMLCh *const systemId )
{
	cout<<"Starting notationDecl.........."<<XMLString::transcode(name)<<endl;
}

void XmlFunctionHandler::processingInstruction (  const XMLCh *const target,  \
											  const XMLCh *const data )
{
	cout<<"Starting processingInstructions.........."<<XMLString::transcode(data)<<endl;
}

void XmlFunctionHandler::setDocumentLocator (  const Locator *const locator)
{
	cout<<"locator processed"<<endl;
	m_LocatorObject=locator;
}

void XmlFunctionHandler::resetDocument()
{
	cout<<"document reseted"<<endl;
}

// ---------------------------------------------------------------------------
//  MemParseHandlers: Overrides of the SAX ErrorHandler interface
// ---------------------------------------------------------------------------
void XmlFunctionHandler::error(const SAXParseException& e)
{
    cout << "\nError at (file " << XMLString::transcode(e.getSystemId())
		 << ", line " << e.getLineNumber()
		 << ", char " << e.getColumnNumber()
         << "): " << XMLString::transcode(e.getMessage()) << endl;
}

void XmlFunctionHandler::fatalError(const SAXParseException& e)
{
    cout << "\nFatal Error at (file " << XMLString::transcode(e.getSystemId())
		 << ", line " << e.getLineNumber()
		 << ", char " << e.getColumnNumber()
         << "): " << XMLString::transcode(e.getMessage()) << endl;
}

void XmlFunctionHandler::warning(const SAXParseException& e)
{
    cerr << "\nWarning at (file " << XMLString::transcode(e.getSystemId())
		 << ", line " << e.getLineNumber()
		 << ", char " << e.getColumnNumber()
         << "): " << XMLString::transcode(e.getMessage())<< endl;
}