📄 nwgcmlhandler.cpp
字号:
**************************************************************/
ERR CNWGCMLHandler::GetFormatDetails(MSXML::IXMLDOMNode* pNode, CFormat& format,CPtrList* pDataList,CPtrList* pDataTypeList)
{
MSXML::IXMLDOMNamedNodeMap* pNodeMap = NULL;
MSXML::IXMLDOMNode* pChildNode = NULL;
MSXML::IXMLDOMNodeList* pChildNodeList;
LPTSTR pVal = NULL;
CDataType* pdataType;
CDataList* pdataObj;
pNodeMap = GetAllAttributes(pNode);
if(pNodeMap)
{
GetAttributeValue(pNodeMap,TAG_NAME,pVal);
if(pVal){
format.SetName(CString(pVal));
if(CString(_T("fmt4")) == _T("fmt4"))
int kkk = 0;
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_PLUGIN,pVal);
if(pVal){
format.SetPlugin(CString(pVal));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_DLGNAME,pVal);
if(pVal){
format.SetDialog(CString(pVal));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_INPUTMODE,pVal);
if(pVal){
format.SetInputMode(CString(pVal));
DELETE_MEM_ARR(pVal);
}
if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
{
CVar var;
long iListSize = GetListSize(pChildNodeList);
CObjectSearch<CDataType> objectSearch;
while(iListSize)
{
GetNextNode(pChildNodeList,pChildNode);
pVal = GetAttributeValue(pChildNode,TAG_NAME);
if(pVal)
{
var.SetName(pVal);
DELETE_MEM_ARR(pVal);
}
pVal = GetAttributeValue(pChildNode,TAG_TYPE);
if(pVal)
{
if(objectSearch.GetObject(pDataTypeList,CString(pVal),&pdataType)==SUCCESS)
{
var.SetDataType(*pdataType);
}
DELETE_MEM_ARR(pVal);
}
pVal = GetAttributeValue(pChildNode,TAG_COUNT);
if(pVal)
{
var.SetCount(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
pVal = GetAttributeValue(pChildNode,TAG_VALUESIZE);
if(pVal)
{
var.SetValueSize(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
pVal = GetAttributeValue(pChildNode,TAG_DESCRIPTION);
if(pVal)
{
var.SetDescription(CString(pVal));
DELETE_MEM_ARR(pVal);
}
format.AddVariable(var);
RELEASE_OBJECT(pChildNode);
--iListSize;
}
RELEASE_OBJECT(pChildNodeList);
}
GetAttributeValue(pNodeMap,TAG_DATALISTNAME,pVal);
if(pVal){
CObjectSearch<CDataList> dataSearch;
if(dataSearch.GetObject(pDataList,pVal,&pdataObj)==SUCCESS)
{
format.SetDataList(*pdataObj);
}
DELETE_MEM_ARR(pVal);
}
RELEASE_OBJECT(pNodeMap)
}
return SUCCESS;
}
/**************************************************************
FUNCTION NAME : GetIncomingMessageList
PURPOSE : Return a list of all Incoming messages objects to the upper layer
INPUT PARAMETERS : nil
OUTPUT PARAMETERS : nil
RETURNS : CPtrList*
REMARKS : This function looks for all the incoming messages in the XML.
Makes objects of these incoming messages and returns a list of
objects.
**************************************************************/
CPtrList* CNWGCMLHandler::GetIncomingMessageList()
{
MSXML::IXMLDOMNodeList* pNodeList;
MSXML::IXMLDOMNode* pNode;
UINT16 iCount = 0;
INT32 nTotalNodes = 0;
CPtrList* pPtrList = NULL;
CIncomingMsg* pIncomingMessage = NULL;
if(GetTotalNodesOfType(TAG_INCOMINGMSG,pNodeList,&nTotalNodes) == SUCCESS)
{
while(nTotalNodes)
{
if(!pPtrList)
ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
pNodeList->nextNode(&pNode);
ALLOCATE_MEM(pIncomingMessage,CIncomingMsg);
GetIncomingMessageDetails(pNode,*pIncomingMessage);
pPtrList->AddTail(pIncomingMessage);
--nTotalNodes;
RELEASE_OBJECT(pNode);
}
}
return pPtrList;
}
/**************************************************************
FUNCTION NAME : GetOutGoingMessageList
PURPOSE : Return a list of all Outgoing messages objects to the upper layer
INPUT PARAMETERS : nil
OUTPUT PARAMETERS : nil
RETURNS : CPtrList*
REMARKS : This function looks for all the outgoing messages in the XML.
Makes objects of these outgoing messages and returns a list of
objects.
**************************************************************/
CPtrList* CNWGCMLHandler::GetOutGoingMessageList()
{
MSXML::IXMLDOMNodeList* pNodeList;
MSXML::IXMLDOMNode* pNode;
UINT16 iCount = 0;
INT32 nTotalNodes = 0;
CPtrList* pPtrList = NULL;
COutgoingMessage* pOutgoingMessage = NULL;
if(GetTotalNodesOfType(TAG_OUTGOINGMSG,pNodeList,&nTotalNodes) == SUCCESS)
{
while(nTotalNodes)
{
if(!pPtrList)
ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
pNodeList->nextNode(&pNode);
ALLOCATE_MEM(pOutgoingMessage,COutgoingMessage);
GetOutgoingMessageDetails(pNode,*pOutgoingMessage);
pPtrList->AddTail(pOutgoingMessage);
--nTotalNodes;
RELEASE_OBJECT(pNode);
}
}
return pPtrList;
}
/**************************************************************
FUNCTION NAME : GetAsyncMessageList
PURPOSE : Return a list of all Async messages objects to the upper layer
INPUT PARAMETERS : nil
OUTPUT PARAMETERS : nil
RETURNS : CPtrList*
REMARKS : This function looks for all the Async messages in the XML.
Makes objects of these Async messages and returns a list of
objects.
**************************************************************/
CPtrList* CNWGCMLHandler::GetAsyncMessageList()
{
MSXML::IXMLDOMNodeList* pNodeList;
MSXML::IXMLDOMNode* pNode;
UINT16 iCount = 0;
INT32 nTotalNodes = 0;
CPtrList* pPtrList = NULL;
CAsyncMessageSeq* pMessageSeq = NULL;
if(GetTotalNodesOfType(TAG_ASYNCMSGSEQ,pNodeList,&nTotalNodes) == SUCCESS)
{
while(nTotalNodes)
{
if(!pPtrList)
ALLOCATE_MEM_ARR(pPtrList,CPtrList,10);
pNodeList->nextNode(&pNode);
ALLOCATE_MEM(pMessageSeq,CAsyncMessageSeq);
GetAsyncMessageDetails(pNode,*pMessageSeq);
pPtrList->AddTail(pMessageSeq);
--nTotalNodes;
RELEASE_OBJECT(pNode);
}
}
return pPtrList;
}
/**************************************************************
FUNCTION NAME : GetAsyncMessageDetails
PURPOSE : Gets the AsyncMessage informationn object from DOM node
INPUT PARAMETERS : MSXML::IXMLDOMNode*
OUTPUT PARAMETERS : CAsyncMessageSeq
RETURNS : ERR
REMARKS : This function creates a CAsyncMessageSeq object out of the DOM node
and passes the object as an output paramater
**************************************************************/
ERR CNWGCMLHandler::GetAsyncMessageDetails(MSXML::IXMLDOMNode* pNode, CAsyncMessageSeq& message)
{
ERR err = FAILURE;
MSXML::IXMLDOMNode* pChildNode = NULL;
MSXML::IXMLDOMNodeList* pChildNodeList;
MSXML::IXMLDOMNamedNodeMap* pNodeMap = NULL;
LPTSTR pVal = NULL;
pNodeMap = GetAllAttributes(pNode);
if(pNodeMap)
{
GetAttributeValue(pNodeMap,TAG_ID,pVal);
if(pVal){
message.SetMessageId(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_NAME,pVal);
if(pVal){
message.SetMessageName(CString(pVal));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_APPID,pVal);
if(pVal){
message.SetAppId(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
RELEASE_OBJECT(pNodeMap)
}
if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
{
long iListSize = GetListSize(pChildNodeList);
while(iListSize)
{
GetNextNode(pChildNodeList,pChildNode);
pVal = GetAttributeValue(pChildNode,TAG_ID);
if(pVal)
{
message.AddMessage(_ttoi(pVal));
DELETE_MEM_ARR(pVal);
}
RELEASE_OBJECT(pChildNode);
--iListSize;
}
RELEASE_OBJECT(pChildNodeList);
}
return err;
}
/**************************************************************
FUNCTION NAME : GetIncomingMessageDetails
PURPOSE : Gets the Incoming message informationn object from DOM node
INPUT PARAMETERS : MSXML::IXMLDOMNode*
OUTPUT PARAMETERS : CIncomingMsg
RETURNS : ERR
REMARKS : This function creates a CIncomingMsg object out of the DOM node
and passes the object as an output paramater
**************************************************************/
ERR CNWGCMLHandler::GetIncomingMessageDetails(MSXML::IXMLDOMNode* pNode, CIncomingMsg& message)
{
ERR err = FAILURE;
MSXML::IXMLDOMNode* pChildNode = NULL;
MSXML::IXMLDOMNodeList* pChildNodeList;
LPTSTR pval = NULL;
if((err = GetMessageDetails(pNode,message)) == SUCCESS)
{
if(GetAllChildren(pNode,pChildNodeList) == SUCCESS)
{
long iListSize = GetListSize(pChildNodeList);
while(iListSize)
{
GetNextNode(pChildNodeList,pChildNode);
pval = GetAttributeValue(pChildNode,TAG_ID);
if(pval)
{
message.AddResponseMessageId(_ttoi(pval));
DELETE_MEM_ARR(pval);
}
pval = GetAttributeValue(pChildNode,TAG_INPUT_RESPONSE_SEQ);
if(pval)
{
message.AddAsyncSeqId(_ttoi(pval));
DELETE_MEM_ARR(pval);
}
RELEASE_OBJECT(pChildNode);
--iListSize;
}
RELEASE_OBJECT(pChildNodeList);
}
}
return err;
}
/**************************************************************
FUNCTION NAME : GetOutgoingMessageDetails
PURPOSE : Gets the Outgoing message informationn object from DOM node
INPUT PARAMETERS : MSXML::IXMLDOMNode*
OUTPUT PARAMETERS : COutgoingMessage
RETURNS : ERR
REMARKS : This function creates a COutgoingMessage object out of the DOM node
and passes the object as an output paramater
**************************************************************/
ERR CNWGCMLHandler::GetOutgoingMessageDetails(MSXML::IXMLDOMNode* pNode, COutgoingMessage& message)
{
ERR err = FAILURE;
if((err = GetMessageDetails(pNode,message)) == SUCCESS)
{
}
return err;
}
/**************************************************************
FUNCTION NAME : GetMessageDetails
PURPOSE : Gets the message informationn object from DOM node
INPUT PARAMETERS : MSXML::IXMLDOMNode*
OUTPUT PARAMETERS : CMessage
RETURNS : ERR
REMARKS : This function creates a CMessage object out of the DOM node
and passes the object as an output paramater
**************************************************************/
ERR CNWGCMLHandler::GetMessageDetails(MSXML::IXMLDOMNode* pNode, CMessage& message)
{
MSXML::IXMLDOMNamedNodeMap* pNodeMap = NULL;
LPTSTR pVal = NULL;
pNodeMap = GetAllAttributes(pNode);
if(pNodeMap)
{
GetAttributeValue(pNodeMap,TAG_ID,pVal);
if(pVal){
message.SetMessageId(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_NAME,pVal);
if(pVal){
message.SetMessageName(CString(pVal));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_APPID,pVal);
if(pVal){
message.SetAppId(_ttoi(CString(pVal)));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_FORMATNAME,pVal);
if(pVal){
message.SetFormat(CString(pVal));
DELETE_MEM_ARR(pVal);
}
GetAttributeValue(pNodeMap,TAG_PLUGIN,pVal);
if(pVal){
message.SetPluginName(CString(pVal));
DELETE_MEM_ARR(pVal);
}
//get response mode auto / manual
GetAttributeValue(pNodeMap,TAG_RESPONSE,pVal);
if(pVal){
message.SetResponseMode(CString(pVal));
DELETE_MEM_ARR(pVal);
}
}
RELEASE_OBJECT(pNodeMap);
return SUCCESS;
}
/**************************************************************
FUNCTION NAME : FreeAll
PURPOSE : Frees the DOM memory
INPUT PARAMETERS : nil
OUTPUT PARAMETERS : nil
RETURNS : void
REMARKS : nil
**************************************************************/
void CNWGCMLHandler::FreeAll()
{
if(m_pXMLDomDocument)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -