|
|
// RriXMLFile.h: interface for the CRriXMLFile class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_)
#define AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_
#include "LtaStd.h" // Added by ClassView
#include "ProcessFileName.h"
#include "XMLBase.h"
#include "RaidDataStructs.h"
using namespace MSXML;
const LPTSTR STR_ALLITEMS = _T("All"); const LPTSTR STR_NESTEDDIALOG = _T("<nested dialog>");
const _bstr_t BSTR_ROOTTAGTEXT = _T("RRI"); const _bstr_t BSTR_ROOTTAGSTART = _T("<RRI>"); const _bstr_t BSTR_ROOTTAGEND = _T("</RRI>"); const _bstr_t BSTR_TAG_DIALOGINFOSEC = _T("DIALOGINFOSEC"); const _bstr_t BSTR_TAG_MENUINFOSEC = _T("MENUINFOSEC");
// RRI tags
const _bstr_t BSTR_RRITAG_CRCKEY = _T("STR_CRC"); const _bstr_t BSTR_RRITAG_DIALOGINFO = _T("DIALOGINFO"); const _bstr_t BSTR_RRITAG_MENUINFO = _T("MENUINFO"); const _bstr_t BSTR_RRITAG_APP_NAME = _T("APP_NAME"); const _bstr_t BSTR_RRITAG_RES_MODULE = _T("RES_MODULE"); const _bstr_t BSTR_RRITAG_CAPTION = _T("CAPTION"); const _bstr_t BSTR_RRITAG_RES_ID = _T("RES_ID"); const _bstr_t BSTR_RRITAG_CONTROL = _T("CONTROL"); const _bstr_t BSTR_RRITAG_CTRLCLASSNAME = _T("CTRL_CLASS"); const _bstr_t BSTR_RRITAG_CTRLID = _T("CTRL_ID");
const _bstr_t BSTR_QUERY_DIALOGINFO = _T("./DIALOGINFO"); const _bstr_t BSTR_QUERY_DIALOGINFOSEC = _T("./DIALOGINFOSEC"); const _bstr_t BSTR_QUERY_MENUINFO = _T("./MENUINFO"); const _bstr_t BSTR_QUERY_MENUINFOSEC = _T("./MENUINFOSEC"); const _bstr_t BSTR_QUERY_WINDOWINFO = _T("./WINDOWINFO"); const _bstr_t BSTR_QUERY_DIALOG_CRCKEY = _T("DIALOGINFO/STR_CRC"); const _bstr_t BSTR_QUERY_MENU_CRCKEY = _T("MENUINFO/STR_CRC"); const _bstr_t BSTR_QUERY_GET_DIALOGINFO= _T("./DIALOGINFOSEC/DIALOGINFO"); const _bstr_t BSTR_QUERY_GET_MENUINFO = _T("./MENUINFOSEC/MENUINFO");
typedef class CRriXMLTags { public: static _bstr_t GetRootTextXMLTag() { return BSTR_ROOTTAGTEXT ;} static _bstr_t GetRootStartXMLTag() { return BSTR_ROOTTAGSTART ;} static _bstr_t GetRootEndXMLTag() { return BSTR_ROOTTAGEND ;} static _bstr_t GetDialoginfosecXMLTag() { return BSTR_TAG_DIALOGINFOSEC;} static _bstr_t GetMenuinfosecXMLTag() { return BSTR_TAG_MENUINFOSEC ;}
// RRI Tags
static _bstr_t GetRriCrckeyXMLTag() { return BSTR_RRITAG_CRCKEY ;} static _bstr_t GetRriDialoginfoXMLTag() { return BSTR_RRITAG_DIALOGINFO ;} static _bstr_t GetRriMenuinfoXMLTag() { return BSTR_RRITAG_MENUINFO ;} static _bstr_t GetRriAppNameXMLTag() { return BSTR_RRITAG_APP_NAME ;} static _bstr_t GetRriResModuleXMLTag() { return BSTR_RRITAG_RES_MODULE ;} static _bstr_t GetRriCaptionXMLTag() { return BSTR_RRITAG_CAPTION ;} static _bstr_t GetRriResIdXMLTag() { return BSTR_RRITAG_RES_ID ;} static _bstr_t GetRriControlXMLTag() { return BSTR_RRITAG_CONTROL ;} static _bstr_t GetRriCtrlClassNameXMLTag() { return BSTR_RRITAG_CTRLCLASSNAME ;} static _bstr_t GetRriCtrlIDXMLTag() { return BSTR_RRITAG_CTRLID ;}
// RRI queries
static _bstr_t GetQueryDialoginfoXMLTag() { return BSTR_QUERY_DIALOGINFO ;} static _bstr_t GetQueryDialoginfosecXMLTag() { return BSTR_QUERY_DIALOGINFOSEC ;} static _bstr_t GetQueryMenuinfoXMLTag() { return BSTR_QUERY_MENUINFO ;} static _bstr_t GetQueryMenuinfosecXMLTag() { return BSTR_QUERY_MENUINFOSEC ;} static _bstr_t GetQueryWindowinfoXMLTag() { return BSTR_QUERY_WINDOWINFO ;} static _bstr_t GetQueryDialogCrckeyXMLTag() { return BSTR_QUERY_DIALOG_CRCKEY ;} static _bstr_t GetQueryMenuCrckeyXMLTag() { return BSTR_QUERY_MENU_CRCKEY ;} static _bstr_t GetQueryGetDialoginfoXMLTag() { return BSTR_QUERY_GET_DIALOGINFO;} static _bstr_t GetQueryGetMenuinfoXMLTag() { return BSTR_QUERY_GET_MENUINFO ;}
// _bstr_t GetXMLTag() { return ; }
} CRRIXMLTAGS, FAR* LPCRRIXMLTAGS;
typedef CRRIXMLTAGS RXT; //********
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef class LTAPIENTRY CRriNodeInfo { public: CRriNodeInfo(); virtual ~CRriNodeInfo();
IXMLDOMNodePtr GetRriXMLNodePtr();
CLString GetCurRriModuleInfo(CLString& strOutPut); CLString GetCurRriModuleInfo();
public: CLString m_strCRC; CLString m_strAppPath; CLString m_strID; CLString m_strCaption; CLString m_strModule; _bstr_t m_bstrNodeTag; LPARAM m_lParam; IXMLDOMNodePtr m_spRriNode;
} CRRINODEINFO, FAR* LPCRRINODEINFO;
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef std::map<CLString, LPCRRINODEINFO, std::less<CLString> > CRriNodeMap; typedef CRriNodeMap::iterator iterNodeMap; typedef CRriNodeMap::value_type valueNode;
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef std::list<LPCRRINODEINFO> CRriNodeList; typedef CRriNodeList::iterator iterNodeList; typedef CRriNodeList::value_type valueListNode;
#pragma warning(disable : 4275)
//////////////////////////////////////////////////////////////////
typedef class LTAPIENTRY CRriNodeListEx : public CRriNodeList { public: CRriNodeListEx(); virtual ~CRriNodeListEx();
public: } CRRINODELISTEX, FAR* LPCRRINODELISTEX;
//////////////////////////////////////////////////////////////////
typedef class LTAPIENTRY CRriNodeMapEx : public CRriNodeMap { public: CRriNodeMapEx(); virtual ~CRriNodeMapEx();
virtual void CleanUp();
bool InsertRriNode(LPCRRINODEINFO pItem); bool RemoveRriNode(LPCRRINODEINFO pItem); bool RemoveRriNode(CLString strCRC);
iterNodeMap Find(CLString strCRC); bool Erase(CLString strCRC);
bool RemoveAppRriNodes(const CLString& strAppPath); bool GetAppRriNodes(const CLString& strAppPath, CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag());
bool GetRriNodeList(const CLString& strID, const CLString& strCaption, const CLString& strAppPath, const CLString& strModule, CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag()); bool GetRriNodeList(CRriNodeListEx& refRriNodeList, _bstr_t bstrNodeTag = RXT::GetRriDialoginfoXMLTag());
bool IsNodeTag(_bstr_t& bstrNodeTag, LPCRRINODEINFO pItem);
} CRRINODEMAPEX, FAR* LPCRRINODEMAPEX;
#pragma warning(default : 4275)
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
class LTAPIENTRY CRriXMLFile : public CXMLBase { public: CRriXMLFile(); virtual ~CRriXMLFile();
public: void Close(); bool RemoveRriDialogNode(LPCRRINODEINFO pNodeInfo); bool RemoveRriMenuNode(LPCRRINODEINFO pNodeInfo); bool Init(); bool IsInitialized(); bool IsLogging();
bool IsFileAlreadyOpen(const CLString& strFileName); bool RemoveAppNodes(const CLString &strAppPath, _bstr_t bstrTagQuery); bool RemoveRriNode(LPCRRINODEINFO pNodeInfo, CLString strQuery); bool GetNodeData(LPCRRINODEINFO pNodeInfo, IXMLDOMNodePtr spXDN); bool GetDisplayID(CLString& strID, IXMLDOMNodePtr spXDN); bool RemoveAppNodes(const CLString& strAppPath); bool FillRriNodeMap(_bstr_t bstrQuery); bool Clear(bool bSaveDocFirst = true); bool SetXMLFileName(const CLString& strFileName, bool bCreate, bool& bAlreadyOpen);
bool RemoveMenuInfo(IXMLDOMNodePtr spXDN); bool RemoveWindowInfo(IXMLDOMNodePtr spXDN); bool RemoveRriNodes(); bool AddRriNode(IXMLDOMNodePtr spXDN, LPCRRINODEINFO* ppItem); void SetRaidReportData(CRaidReportData* pRaidReportData);
bool SaveCurFile(); bool SaveFile(const CLString& strFileName, bool bSetFileName = true); bool SaveFile(CStdioFile& stdioFile); bool GetRootNode(const _bstr_t &bstrRootNodeTag); bool CreateRootNode(const _bstr_t& bstrRootNodeTag); bool ReadFile(const CLString& strFileName, bool bSetFileName = true); bool CreateXMLFile(const CLString& strFileName);
bool AddResource(const _bstr_t& bstrResource, LPCRRINODEINFO* ppItem );
CRriNodeMapEx& GetRriNodeMap(); private: bool m_bInitialized; CLString m_strXMLFileName; CRriNodeMapEx m_RriNodeMap; CRaidReportData* m_pGlobalRaidReportData; };
#endif // !defined(AFX_RRIXMLFILE_H__6AEA6863_68FC_11D2_879C_00C04F8DA632__INCLUDED_)
|