#include #include #include #include #include #include #include #include #include using xml = KXMLDOMDocument; class __declspec(dllexport) SqlWatchWin : public xwin { public: //xdwgrid dw_list; xnode m_agentNode; //Agent Condition xtreeview m_exploer; KXMLDOMElement toEle; xml toXml; public: SqlWatchWin(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} public: static SqlWatchWin* CreateInstance(void* implPtr, void* hWnd) { SqlWatchWin* pWin = new SqlWatchWin(implPtr, (HWND)hWnd); return pWin; } int trace(xstring info) { #define EM_SETSEL 0x00B1 #define EM_REPLACESEL 0x00C2 #define EM_SCROLL 0x00B5 #define SB_LINEDOWN 1 xcontrol xc = GetControl(L"output"); SendMessage(xc.GetHWND(), EM_SETSEL, -1, 0); SendMessage(xc.GetHWND(), EM_REPLACESEL, false, (LPARAM)info.c_str()); SendMessage(xc.GetHWND(), EM_SCROLL, SB_LINEDOWN, 0); return 1; } int SetAgent() { xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if (m_agentNode) { SetAgentNode(anode, m_agentNode); } else { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); if (agent) { xstring s = agent.xml(); m_agentNode = SetAgentNode(anode, s); } } return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt, LPARAM param) { //ÖØÖù¤¾ßÌõ SetAgent(); return 1; } xstring getLink(HTREEITEM hItem) { return L"hxerp"; } xstring makeSheet(xstring labels, xstring datas) { xstring ls_sheet = L""; //style ls_sheet += L"\r\n"; ls_sheet += L"\r\n\tfont-facename:ËÎÌå;font-style:normal;font-weight:400;font-size:-21.000000px"; ls_sheet += L"\r\n\tfont-facename:ËÎÌå;font-style:normal;font-weight:bold;font-size:-21.000000px"; ls_sheet += L"\r\n"; //axis ls_sheet += L"\r\n"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n\t\t"; ls_sheet += L"\r\n\t\t"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n\t\t"; ls_sheet += L"\r\n\t\t"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n"; //cell ls_sheet += L"\r\n"; ls_sheet += L"\r\n\tdata/Item"; ls_sheet += L"\r\n\t" + labels + L"\r\n\t"; ls_sheet += L"\r\n\t" + datas + L"\r\n\t"; ls_sheet += L"\r\n"; //report ls_sheet += L"\r\n"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n\t
"; ls_sheet += L"\r\n\t"; ls_sheet += L"\r\n\t<Detail endRow='6' startRow='5'/>"; ls_sheet += L"\r\n\t<Summury endRow='7' startRow='7'/>"; ls_sheet += L"\r\n\t<Footer endRow='8' startRow='8'/>"; ls_sheet += L"\r\n\t<PageFooter endRow='9' startRow='9'/>"; ls_sheet += L"\r\n</report>"; ls_sheet += L"\r\n</sheet>"; return ls_sheet; } int OnProcessUrl(xstring kind, xstring url) { xml x; xaserverarg xarg; xarg.AddArg(L"url", url); xarg.AddArg(L"kind", kind); xaserver::ExecXQuery(GetServerUrl(), L"[service.url.info.xq]", xarg.GetString(), x); alert(x.xml()); return 1; } int FetchVSql() { xsedit xs; xstring content = L""; xs = GetControl(L"sqlcontent"); int start = xs.GetSelectionStart(); int end = xs.GetSelectionEnd(); xs.GetContent(content); if (start != end) { content = content.mid(start, end - start); } xml x; xaserverarg xarg ; xarg.AddArg(L"func", L"fetch-vsql"); xarg.AddArg(L"sql", content.c_str()); xarg.AddArg(L"xquery", L""); xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); if (x) { trace(x.text()); } else trace(L"have a error"); return 1; } int FetchSql() { xsedit xs; xstring content = L""; xs = GetControl(L"sqlcontent"); int start = xs.GetSelectionStart(); int end = xs.GetSelectionEnd(); xs.GetContent(content); if (start != end) { content = content.mid(start, end - start); } xml x ; xaserverarg xarg; xarg.AddArg(L"func", L"fetch-sql"); xarg.AddArg(L"sql", content); xarg.AddArg(L"xquery", L""); xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); if (x) { trace(x.text()); } else trace(L"have a error"); return 1; } xstring GetFolder(xstring file) { int pos = 0; int pos1 = 0; pos = file.find(L"/", pos); while (pos) { pos1 = file.find(L"/", pos + 1); if (pos1 < 0) break; pos = pos1; } if (pos > 0) return file.left(pos); else return L""; } int surePath(xstring base, xstring file) { CreateDirectory(base, nullptr); if (file == L"") return 1; xstring src = file; int pos = src.find(L"/"); while (pos >= 0) { xstring folder = src.left(pos); pos = src.find(L"/", pos + 1); if(src.left(1)==L"/") CreateDirectory(base + folder, __nullptr); else CreateDirectory(base + L"/" + folder, nullptr); } return 1; } int processhxw(xstring base, xstring sfile) { surePath(base, sfile); int ret = DownLoadFile2(sfile, base + sfile); if (ret < 0) { trace(L"\r\n error load:" + sfile + L" " + base + L"/" + sfile); return -1; } xml x ; x.load(base + L"/" + sfile); KXMLDOMNodeList items = x.selectNodes(L"/category/domain/folder[count(@deleted)=0]"); int len = items.length(); for (int i = 0; i < len; i++) { KXMLDOMNode node = items.item(i); xstring src = node.selectSingleNode(L"@src").text(); xstring hDomainGuid = node.selectSingleNode(L"../@guid").text(); xstring hP2Guid = node.selectSingleNode(L"@guid").text(); //if (src.find(L"mh.com") < 0) //if (src.find(L"hxsoft.com") >= 0) { src = src.replace(L"\\", L"/"); processhxd(base + L"/developer", src,hDomainGuid,hP2Guid); } } } int reconnect() { SendMessage(GetFrameWindow().GetHWND(), 0x401, (LPARAM)L"xmAuth", 0); return 1; } int DownLoadObject(xstring ext,xstring dest) { BYTE* pData = NULL; int nLength = 0; int ret = xaserver::ProcessCmd(GetServerUrl(), L"uri.hxsoft.com/xaserver/developer getobject", ext.c_str(), pData, nLength); if (ret > 0) { HANDLE fp1; DWORD nWrite; #define GENERIC_READ (0x80000000L) #define GENERIC_WRITE (0x40000000L) #define FILE_SHARE_READ 0x00000001 #define FILE_SHARE_WRITE 0x00000002 #define CREATE_ALWAYS 2 #define FILE_ATTRIBUTE_NORMAL 0x00000080 fp1 = CreateFileW(dest.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); ::WriteFile(fp1, pData, nLength, &nWrite, NULL); ::CloseHandle(fp1); if (pData)delete pData; } return ret; } int DownLoadFile2(xstring src, xstring dest,xstring ext=L"") { int ret = xaserver::DownLoadFile(GetServerUrl(), src, ext, dest); if (ret < 0) { reconnect(); ret = xaserver::DownLoadFile(GetServerUrl(), src, ext, dest); } if (ret < 0)reconnect(); return ret; } int processprj1(xstring base, xstring path, xstring src, bool processItem) { //xcontrol xc = GetControl(L"frame:output"); //xc.SetText(L"\r\n process: "+path+L"/"+src); trace(L"\r\n base:" + base); surePath(base + L"/" + path, src); int ret = DownLoadFile2(L"/developer/" + path + L"/" + src, base + L"/" + path + L"/" + src); if (ret < 0) { trace(L"\r\nerror load /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); reconnect(); return 1; } trace(L"\r\n prj /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); xml x; if (!x.load(base + L"/" + path + L"/" + src)) { trace(L"\r\nerror load:" + base + L"/" + path + L"/" + src); return 1; } KXMLDOMNodeList items = x.selectNodes(L"//file[count(ancestor-or-self::*/@deleted)=0 ]"); xstring caption = x.documentElement().getAttribute(L"caption");; xstring srcpath = GetFolder(src); if (caption == L"") { trace(L"\r\nerror caption:" + base + L"/" + path + L"/" + src); return 1; } xstring spath = L"/developer/" + path + L"/" + srcpath + L"/" + caption; xstring dpath = base + L"/" + path + L"/" + srcpath + L"/" + caption; surePath(dpath, L""); int len = items.length(); for (int i = 0; i < len; i++) { KXMLDOMNode node = items.item(i); xstring srcItem = L""; xstring id = L""; if (node.selectSingleNode(L"@guid")) id = node.selectSingleNode(L"@guid").text(); if (node.selectSingleNode(L"@src")) srcItem = node.selectSingleNode(L"@src").text(); xstring typ = L""; if (node.selectSingleNode(L"@type")) typ = node.selectSingleNode(L"@type").text(); if (typ == L"tpp")typ = L"code"; xstring values = L""; if (srcItem != L"" && typ != L"") { ret = DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", dpath + L"/" + srcItem); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + srcItem + L"]" + L" " + dpath + L"/" + srcItem); continue; //return 1; } CreateDirectory(base + L"/working", nullptr); CreateDirectory(base + L"/working/code", nullptr); CreateDirectory(base + L"/working/sheets", nullptr); if (id != L"") { if (typ == L"xruler") { CreateDirectory(base + L"/working/" + typ + L"s", nullptr); DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"s/" + id + L".xrl"); } else if (typ == L"serialize") { CreateDirectory(base + L"/working/" + typ, nullptr); DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"/" + id + L".xml"); } else if (typ == L"workflow" || typ == L"worknode" || typ == L"xaction" || typ == L"template" || typ == L"xfile" || typ == L"xquery" || typ == L"entity" || typ == L"xpage") { CreateDirectory(base + L"/working/" + typ + L"s", nullptr); DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"s/" + id + L".xml"); } else { CreateDirectory(base + L"/working/" + typ, nullptr); DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", base + L"/working" + L"/" + typ + L"/" + id); } values = L""; if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); if (values.find(L",L" + typ + L",") < 0) values += L"," + typ + L","; xutil::CacheUrlData(L"object-types", values); values = L""; if (xutil::HasCacheData(typ))values = xutil::GetUrlData(typ); if (values != L"") values += L"\r\n"; values += L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")"; xutil::CacheUrlData(typ, values); } if (typ == L"template") { xml xtempl; if (xtempl.load(base + L"/working" + L"/" + typ + L"s/" + id + L".xml")) { KXMLDOMNodeList nodes = xtempl.selectNodes(L"/xdoc/sheet"); int count = nodes.length(); for (int k = 0; k < count; k++) { KXMLDOMNode tnode = nodes.item(k); xstring content = tnode.xml(); xstring sheetid = L""; xstring sheetcaption = L""; if (node.selectSingleNode(L"@guid")) sheetid = tnode.selectSingleNode(L"@guid").text(); if (node.selectSingleNode(L"@caption")) sheetcaption = tnode.selectSingleNode(L"@caption").text(); xutil::SaveToFile(base + L"/working/sheets/" + sheetid + L".xml", content, L"", L"", (LPTSTR)L""); tnode.Release(); values = L""; if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); if (values.find(L",sheet,L") < 0) values += L",sheet,L"; xutil::CacheUrlData(L"object-types", values); values = L""; xstring str = L""; if (xutil::HasCacheData(L"sheet"))values = xutil::GetUrlData(L"sheet"); str = L"\r\n"; if (id != L"")str += L"T(\"" + srcItem + L"/" + id + L"\",\"" + id + L"\")"; str += L"\r\n"; if (sheetcaption != L"")str += L"T(\"" + srcItem + L"/" + sheetcaption + L"\",\"" + id + L"\")"; values += str; xutil::CacheUrlData(L"sheet", values); } } } if (typ == L"xpage") { xstring srccode = srcItem.replace(L".xpage", L".xss"); srccode = srccode.replace(L".vx", L".xss"); ret = DownLoadFile2(L"dev:code[" + srcItem + L"]", dpath + L"/" + srccode); if (ret < 0) { trace(L"\r\nerror load dev:code[" + srcItem + L"]" + L" " + dpath + L"/" + srccode); continue; //return 1; } if (id != L"") DownLoadFile2(L"dev:code[" + srcItem + L"]", base + L"/working" + L"/code/" + id + L".xss"); values = L""; if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); if (values.find(L",code,L") < 0) values += L",code,L"; xutil::CacheUrlData(L"object-types", values); values = L""; if (xutil::HasCacheData(typ))values = xutil::GetUrlData(typ); if (values != L"") values += L"\r\n"; values += L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")"; xutil::CacheUrlData(L"code", values); } } } trace(L" -- finished"); return 1; } int processprj_xml(xstring base, xstring path, xstring src, bool processItem, xstring hDomainGuid, xstring hP2Guid, xstring hProjectGuid) { //xcontrol xc = GetControl(L"frame:output"); //xc.SetText(L"\r\n process: "+path+L"/"+src); trace(L"\r\n base:" + base); surePath(base + L"/" + path, src); int ret = DownLoadFile2(L"/developer/" + path + L"/" + src, base + L"/" + path + L"/" + src); if (ret < 0) { trace(L"\r\nerror load /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); return 1; } trace(L"\r\n prj /developer/" + path + L"/" + src + L" " + base + L"/" + path + L"/" + src); xml x; if (!x.load(base + L"/" + path + L"/" + src)) { trace(L"\r\nerror load:" + base + L"/" + path + L"/" + src); return 1; } KXMLDOMNodeList items = x.selectNodes(L"//file[count(ancestor-or-self::*/@deleted)=0]"); xstring caption = x.documentElement().getAttribute(L"caption");; xstring srcpath = GetFolder(src); if (caption == L"") { trace(L"\r\nerror caption:" + base + L"/" + path + L"/" + src); return 1; } xstring spath = L"/developer/" + path + L"/" + srcpath + L"/" + caption; xstring dpath = base + L"/" + path + L"/" + srcpath + L"/" + caption; surePath(dpath, L""); int len = items.length(); xaserverarg arg; arg.AddArg(L"root.guid", hP2Guid); arg.AddArg(L"domain.guid", hDomainGuid); arg.AddArg(L"project.guid", hProjectGuid); for (int i = 0; i < len; i++) { KXMLDOMNode node = items.item(i); trace(L"."); xstring srcItem = L""; xstring id = L""; xstring uriItem = L""; if (node.selectSingleNode(L"@guid")) id = node.selectSingleNode(L"@guid").text(); if (node.selectSingleNode(L"@src")) srcItem = node.selectSingleNode(L"@src").text(); if (node.selectSingleNode(L"@uri")) uriItem = node.selectSingleNode(L"@uri").text(); xstring typ = L""; if (node.selectSingleNode(L"@type")) typ = node.selectSingleNode(L"@type").text(); if (typ == L"tpp")typ = L"code"; xstring values = L""; if (srcItem != L"" && typ != L"") { arg.AddArg(L"guid", id); ret = DownLoadObject(arg.GetString(), dpath + L"/" + srcItem); if(ret < 0) ret = DownLoadFile2(L"dev:" + typ + L"[" + uriItem + L"]", dpath + L"/" + srcItem); //ret = DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", dpath + L"/" + srcItem); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + dpath + L"/" + srcItem); continue; //return 1; } CreateDirectory(base + L"/working", nullptr); CreateDirectory(base + L"/working/code", nullptr); CreateDirectory(base + L"/working/sheets", nullptr); if (id != L"") { if (typ == L"xruler") { CreateDirectory(base + L"/working/" + typ + L"s", nullptr); //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"s/"+id+L".xrl"); ret = DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"s/" + id + L".xrl"); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + L"/working" + L"/" + typ + L"s/" + id + L".xrl"); continue; //return 1; } } else if (typ == L"serialize") { CreateDirectory(base + L"/working/" + typ, nullptr); //DownLoadFile2(L"dev:"+typ+L"["+srcItem+L"]",base+L"/working"+L"/"+typ+L"/"+id+L".xml"); ret = DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id + L".xml"); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + L"/working" + L"/" + typ + L"/" + id + L".xml"); continue; //return 1; } } else if (typ == L"workflow" || typ == L"worknode" || typ == L"xaction" || typ == L"template" || typ == L"xfile" || typ == L"xquery" || typ == L"entity" || typ == L"xpage") { CreateDirectory(base + L"/working/" + typ + L"s", nullptr); ret = DownLoadFile2(L"dev:"+typ+L"["+uriItem+L"]",base+L"/working"+L"/"+typ+L"s/"+id+L".xml"); //DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"s/" + id + L".xml"); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + base + L"/working" + L"/" + typ + L"s/" + id + L".xml"); continue; //return 1; } } else if (typ == L"code") { CreateDirectory(base + L"/working/" + typ, nullptr); ret = DownLoadFile2(L"dev:" + typ + L"[" + uriItem + L"]", base + L"/working" + L"/" + typ + L"/" + id + L".xss"); //DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + base + L"/working" + L"/" + typ + L"s/" + id+L".xss"); continue; //return 1; } } else { CreateDirectory(base + L"/working/" + typ, nullptr); ret = DownLoadFile2(L"dev:"+typ+L"["+uriItem+L"]",base+L"/working"+L"/"+typ+L"/"+id); //DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id); if (ret < 0) { trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + base + L"/working" + L"/" + typ + L"s/" + id); continue; //return 1; } } appendto(typ, L"T(\"" + uriItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")[ln]"); } if (typ == L"template") { xml xtempl; if (xtempl.load(base + L"/working" + L"/" + typ + L"s/" + id + L".xml")) { KXMLDOMNodeList nodes = xtempl.selectNodes(L"/xdoc/sheet"); int count = nodes.length(); for (int k = 0; k < count; k++) { KXMLDOMNode tnode = nodes.item(k); xstring content = tnode.xml(); xstring sheetid = L""; xstring sheetcaption = L""; if (tnode.selectSingleNode(L"@guid")) sheetid = tnode.selectSingleNode(L"@guid").text(); if (tnode.selectSingleNode(L"@caption")) sheetcaption = tnode.selectSingleNode(L"@caption").text(); xutil::SaveToFile(base + L"/working/sheets/" + sheetid + L".xml", content, L"", L"", (LPTSTR)L""); appendto(L"sheet", L"T(\"" + uriItem + L"/" + sheetid + L"\",\"" + sheetid + L"\")[ln]"); appendto(L"sheet", L"T(\"" + uriItem + L"/" + sheetcaption + L"\",\"" + sheetid + L"\")[ln]"); } } } if (typ == L"xpage") { xstring srccode = srcItem.replace(L".xpage", L".xss"); srccode = srccode.replace(L".vx", L".xss"); ret = DownLoadFile2(L"dev:code[" + uriItem + L"]", dpath + L"/" + srccode); if (ret < 0) { trace(L"\r\nerror load dev:code[" + uriItem + L"]" + L" " + dpath + L"/" + srccode); continue; //return 1; } if (id != L"") { DownLoadFile2(L"dev:code[" + uriItem + L"]", base + L"/working" + L"/code/" + id + L".xss"); //DownLoadFile2(L"dev:code"+id,base+L"/working"+L"/code/"+id+L".xss"); appendto(L"code", L"T(\"" + uriItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")[ln]"); } } } } trace(L" -- finished"); return 1; } int processhxd(xstring base, xstring sfile,xstring hDomainGuid,xstring hP2Guid) { surePath(base, sfile); trace(L"\r\n" + base + L"/" + sfile); int ret = DownLoadFile2(L"/developer/" + sfile, base + L"/" + sfile); if (ret < 0) { trace((xstring)L"\r\n error load:" + L"/developer/" + sfile + L" " + base + L"/" + sfile); return -1; } xml xhd ; xhd.load(base + L"/" + sfile); KXMLDOMNodeList items = xhd.selectNodes(L"//project[count(@deleted)=0]"); int len = items.length(); for (int i = 0; i < len; i++) { KXMLDOMNode node = items.item(i); xstring hProjectGuid = node.selectSingleNode(L"@guid").text(); xstring src = L""; if (node.selectSingleNode(L"@src")) src = node.selectSingleNode(L"@src").text(); if (src != L"") { xstring path = GetFolder(sfile); src = src.replace(L"\\", L"/"); processprj_xml(base, path, src, true,hDomainGuid,hP2Guid,hProjectGuid); } } return 1; } int Initenv() { xstring values = L""; if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); values = values.replace(L",,", L","); if (values != L"") { int pos = values.find(L",", 0); xstring typ = L""; while (pos >= 0) { int pos1 = values.find(L",", pos + 1); if (pos1 < 0) break; typ = values.mid(pos + 1, pos1 - pos - 1); xutil::CacheUrlData(typ, L""); if (pos1 == values.length())break; pos = pos1; } } return 1; } int Initenv_xml() { toXml.Reset(); toXml.loadXML(L"<root/>"); toEle = toXml.documentElement(); return 1; } int appendto(xstring typ, xstring val) { KXMLDOMElement ele; KXMLDOMDocument doc = toEle.ownerDocument(); KXMLDOMNode node = toEle.selectSingleNode(L"to[@name='" + typ + L"']"); if (!node) { ele = doc.createElement(L"to"); ele.setAttribute(L"name", typ); toEle.appendChild(ele); } else { ele = node; //node.Release(); } KXMLDOMElement t = doc.createElement(L"item"); t.settext(val); ele.appendChild(t); return 1; } int maketo_xml(xstring base) { toXml.save(base + L"/developer/working/index.xml"); //return 1; KXMLDOMNodeList items = toEle.selectNodes(L"to"); int lens = items.length(); xstring typ; xstring val; KXMLDOMNode node; for (int i = 0; i < lens; i++) { node = items.item(i).selectSingleNode(L"@name"); if (node) { typ = node.text(); } val = items.item(i).text(); val = val.replace(L"[ln]", L"\r\n"); xutil::SaveToFile(base + L"/developer/working/" + typ + L".tu", val, L"", L"", (LPTSTR)L""); } return 1; } int maketo(xstring base) { xstring values = L""; xstring tvalue = L""; if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types"); values = values.replace(L",,", L","); trace(values); if (values != L"") { int len = values.length(); int pos = values.find(L",", 0); xstring typ = L""; while (pos >= 0) { int pos1 = values.find(L",", pos + 1); if (pos1 < 0) break; typ = values.mid(pos + 1, pos1 - pos - 1); tvalue = L""; if (xutil::HasCacheData(typ))tvalue = xutil::GetUrlData(typ); xutil::SaveToFile(base + L"/developer/working/" + typ + L".tu", xutil::GetUrlData(typ), L"", L"", (LPTSTR)L""); if (pos1 == len)break; pos = pos1; } } return 1; } int OnExport() { Initenv_xml(); int EM_EXLIMITTEXT = 0x400 + 53; xcontrol xc = GetControl(L"output"); //xcontrol xc = GetControl(L"frame:output"); trace(L"\r\nstart export:"); SendMessage(xc.GetHWND(), EM_EXLIMITTEXT, 0x00100000, 0); int ret = processhxw(L"D:/jrjhome", L"/developer/projects/Projects.xhw"); trace(L"\r\nstart make to"); maketo_xml(L"D:/jrjhome"); trace(L"\r\nfinish export"); return ret; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { xsedit xs; HCURSOR hCursor = xutil::SetCursorWait(); xstring content = L""; int result = 1; if (comdid == L"xmCheckUrl") { xstring url1 = xcontrol(GetControl(L"frame:url")).GetText(); return OnProcessUrl(L"info", url1); } else if (comdid == L"xmExport") { return OnExport(); } else if (comdid == L"xmClearBuffer") { xstring url2 = xcontrol(GetControl(L"frame:url")).GetText(); return OnProcessUrl(L"clearbuffer", url2); } else if (comdid == L"xmFetchSql") { return FetchSql(); } else if (comdid == L"xmFetchVSql") { return FetchVSql(); } else if (comdid == L"xmSqlExec" || comdid == L"xmXQueryExec") { xs = GetControl(L"sqlcontent"); int start = xs.GetSelectionStart(); int end = xs.GetSelectionEnd(); xs.GetContent(content); if (start != end) { content = content.mid(start, end - start); } //alert(content); xml x; xaserverarg xarg ; xarg.AddArg(L"func", L"exec"); if (comdid == L"xmXQueryExec") { xarg.AddArg(L"sql", L""); xarg.AddArg(L"xquery", content); } else { xarg.AddArg(L"sql", content); xarg.AddArg(L"xquery", L""); } xaserver::ExecXQuery(GetServerUrl(), L"[sqlExec.xq]", xarg.GetString(), x); trace(x.xml()); KXMLDOMNodeList n = x.selectNodes(L"data/Item[1]/*"); int len = n.length(); xstring ls_labels = L""; xstring ls_datas = L""; for (int i = 0; i < len; i++) { KXMLDOMElement t = n.item(i); xstring name = t.tagName(); ls_labels += L"\r\n<cell><text>" + name + L"</text></cell>"; ls_datas += L"\r\n<cell group='.' column='" + name + L"'></cell>"; } xstring ls_sheet = makeSheet(ls_labels, ls_datas); xml x1; x1.loadXML(ls_sheet); //trace(ls_sheet); xdwgrid dw_list = GetControl(L"dw_list"); dw_list.SetDataObject(x1); dw_list.Retrieve(x); dw_list.Redraw(); } else if (comdid == L"xmSaveAs") { xdwgrid dw_list1 = GetControl(L"dw_list"); dw_list1.SaveAs(L""); return 1; } else if (comdid == L"xmEntitySel") { xaserverarg arg; OpenWindow(L"dev:xpage[sqlSelect.vx]", arg); xstring str = arg.GetArgString(L"select"); { xs = GetControl(L"sqlcontent"); xs.GetContent(content); int pos = xs.GetSelectionStart(); xstring txt = content.left(pos); txt += str + L"\r\n"; txt += content.right(content.length() - pos + 1); xs.SetContent(txt, L".sql"); } } else if (comdid == L"xmEditFind") { xutil::RestoreCursor(hCursor); xs = GetControl(L"sqlcontent"); xs.OnFindDlg(); } else if (comdid == L"xmEditReplace") { xutil::RestoreCursor(hCursor); xs = GetControl(L"sqlcontent"); xs.OnReplaceDlg(); } else result = 0; xutil::RestoreCursor(hCursor); return result; } int CreateSubTree(HTREEITEM hitem, KXMLDOMNode e) { KXMLDOMNodeList listn = e.selectNodes(L"entity"); int nlen = listn.length(); int i = 0; for (i = 0; i < nlen; i++) { KXMLDOMElement n = listn.item(i); xstring cp = n.getAttribute(L"name"); if (cp) { HTREEITEM pitem = m_exploer.InsertChildItem(hitem, cp, (LPARAM)n, 16); } } return 1; } int setGrid(KXMLDOMElement e, xstring caption) { xml x; xdwgrid grid = GetControl(caption); if (!e.selectSingleNode(L"grid/sheet")) return 0; x.loadXML(e.selectSingleNode(L"grid/sheet").xml()); grid.SetDataObject(x); if (!e.selectSingleNode(L"datas")) { grid.Redraw(); return 0; } x.loadXML(e.selectSingleNode(L"datas").xml()); grid.Retrieve(x); grid.Redraw(); return 1; } xstring getCaption(xstring str) { while (str.find(L"@", 0) > 0) { xstring tmp = str.mid(str.find(L"@", 0) + 1, str.length()); str = tmp; } return str; } int OnDel(HTREEITEM item) { return 1; } int OnRefresh(HTREEITEM item) { while (m_exploer.GetChildItem(item)) m_exploer.DeleteItem(m_exploer.GetChildItem(item)); OnTreeExpand(item); return 1; } KXMLDOMElement OnXQuery(xstring data) { HTREEITEM hItem = m_exploer.GetSelectedItem(); xstring link = getLink(hItem); xml x; xaserverarg arg ; arg.AddArg(L"type", data); arg.AddArg(L"link", link); if (xaserver::ExecXQuery(GetServerUrl(), L"[sqlWatch.xq]", arg.GetString(), x) != 1) { trace(x.xml()); return KXMLDOMElement(); } return x.documentElement(); } int OnOpen(xstring caption, xstring kind) { return 1; } int OnQuery(xstring caption) { if (OnOpen(caption, L"query") == 0) return 0; //KXMLDOMElement e = OnXQuery(L"column@"+caption); KXMLDOMElement e = OnXQuery(L"Entity/Table/Query@" + caption); if (!e) return 0; KXMLDOMNodeList nodes = e.selectNodes(L"columns/column"); int i; int s = nodes.length(); xstring str; str = L"SELECT TOP 500 \r\n"; for (i = 0; i < s; i++) { KXMLDOMElement ele = nodes.item(i); xstring tmp = ele.getAttribute(L"name"); if (i < s - 1) tmp = tmp + L","; str += L"\t" + tmp + L"\r\n"; } //str += L"FROM " + caption; str += L"FROM {qt:Entity('" + caption + L"')} "; xstring content; xsedit xs = GetControl(L"sqlcontent"); xs.GetContent(content); content += L"\r\n" + str; xs.SetContent(content, L".sql"); /*xsedit xs = GetControl(L"sql_"+caption); xs.LoadContent(str,L".sql"); setGrid(e,L"grid_"+caption); */ //trace(e.xml); setGrid(e, L"dw_list"); return 1; } int OnEdit(xstring caption) { /* if(OnOpen(caption,L"edit")==0) return 0; KXMLDOMElement e = OnXQuery(L"edit@"+caption); if(!e) return 0; setGrid(e,L"editgrid_"+caption); */ return 1; } int OnDesign(xstring caption) { if (OnOpen(caption, L"design") == 0) return 0; OpenWindow(L"dev:xpage[SqlTypeFieldMaint.vx]", caption); /* if(OnOpen(caption,L"design")==0) return 0; KXMLDOMElement e = OnXQuery(L"design@"+caption); if(!e) return 0; setGrid(e,L"designgrid_"+caption);*/ return 1; } int OnTreeRClick(TEvent* evt,LPARAM param) { TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh; HTREEITEM item = nmtv.FromItem; xstring data = m_exploer.GetItemData(item); xstring popup; xstring menu = L"<root>"; xstring str = L""; if (data == L"table") { menu += L"<Item>н¨±í</Item>"; menu += L"<Item>н¨·Ö×é</Item>"; menu += L"<Item>-</Item>"; menu += L"<Item>Ë¢ÐÂ</Item>"; menu += L"</root>"; str = m_exploer.PopupMenu(menu); popup = str; } else if (data.left(13) == L"Entity/Table@" && data.find(L"@", 14) < 0) { menu += L"<Item>н¨ÊµÌå</Item>"; menu += L"<Item>Éè¼Æ</Item>"; menu += L"<Item>-</Item>"; menu += L"<Item>´ò¿ªÇ°500ÐÐ</Item>"; menu += L"<Item>±à¼­Ç°200ÐÐ</Item>"; menu += L"<Item>-</Item>"; menu += L"<Item>ÖØÃüÃû</Item>"; menu += L"<Item>Ë¢ÐÂ</Item>"; menu += L"<Item>ɾ³ý</Item>"; menu += L"</root>"; str = m_exploer.PopupMenu(menu); popup = str; } else if (data.left(6) == L"table@" && data.find(L"@", 7) < 0) { menu += L"<Item>н¨±í</Item>"; menu += L"<Item>Éè¼Æ</Item>"; menu += L"<Item>-</Item>"; menu += L"<Item>´ò¿ªÇ°500ÐÐ</Item>"; menu += L"<Item>±à¼­Ç°200ÐÐ</Item>"; menu += L"<Item>-</Item>"; menu += L"<Item>ÖØÃüÃû</Item>"; menu += L"<Item>Ë¢ÐÂ</Item>"; menu += L"<Item>ɾ³ý</Item>"; menu += L"</root>"; str = m_exploer.PopupMenu(menu); popup = str; } else if (data.left(6) == L"group@") { menu += L"<Item>ÖØÃüÃû</Item>"; menu += L"<Item>Ë¢ÐÂ</Item>"; menu += L"<Item>ɾ³ý</Item>"; menu += L"</root>"; str = m_exploer.PopupMenu(menu); popup = str; } else if (data.left(5) == L"view@" || data.left(10) == L"procedure@" || data.left(9) == L"function@") { menu += L"<Item>ÖØÃüÃû</Item>"; menu += L"<Item>ÐÞ¸Ä</Item>"; menu += L"<Item>ɾ³ý</Item>"; menu += L"</root>"; str = m_exploer.PopupMenu(menu); popup = str; } xstring caption = getCaption(data); /*if(popup == L"н¨·Ö×é") OnNewGroup(item); else*/ if (popup == L"ɾ³ý") OnDel(item); else if (popup == L"Ë¢ÐÂ") OnRefresh(item); else if (popup == L"´ò¿ªÇ°500ÐÐ") OnQuery(caption); else if (popup == L"±à¼­Ç°200ÐÐ") OnEdit(caption); else if (popup == L"Éè¼Æ") OnDesign(caption); /*else if(popup == L"н¨±í") { xstring guid = GetGuid(); xstring text = L"Table_" + guid.mid(1,8); OnDesign(text); } else if(popup == L"ÐÞ¸Ä") OnOpen(caption,L"query");*/ return 1; } int OnTreeAdd(HTREEITEM hItem, xstring typ, KXMLDOMElement e) { KXMLDOMNodeList nodes = e.selectNodes(L"*"); int i; int s = nodes.length(); for (i = 0; i < s; i++) { KXMLDOMElement ele = nodes.item(i); xstring name = ele.getAttribute(L"name"); xstring image = ele.getAttribute(L"image"); xstring d = ele.getAttribute(L"data"); xstring c = ele.getAttribute(L"child"); image = L"" + image; if (d == L"") d = typ + L"@" + name; HTREEITEM j = m_exploer.InsertChildItem(hItem, L"" + name, (LPARAM)d.c_str(true), image.toInt()); if (c != L"") { if (c.toInt() > 0)m_exploer.SetItemChild1(j, 1); } else { if (image.toInt() > 9)m_exploer.SetItemChild1(j, 1); } OnTreeAdd(j, d, ele); } return 1; } int OnTreeExpand(HTREEITEM hItem) { xstring typ = m_exploer.GetItemData(hItem); xstring link = getLink(hItem); xml x; xaserverarg arg; arg.AddArg(L"type", typ); arg.AddArg(L"link", link); if (xaserver::ExecXQuery(GetServerUrl(), L"[sqlWatch.xq]", arg.GetString(), x) != 1) { trace(x.xml()); return 0; } KXMLDOMElement e = x.documentElement(); OnTreeAdd(hItem, typ, e); return 1; } int OnTreeExpanding(TEvent* evt, int p) { NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; HTREEITEM hItem = nmtv.itemNew.hItem; if (m_exploer.GetChildItem(hItem)) return 0; OnTreeExpand(hItem); return 1; } int CreateRootTree(xml x) { KXMLDOMNodeList listx = x.selectNodes(L"//group"); int nlen = listx.length(); int i = 0; for (i = 0; i < nlen; i++) { KXMLDOMElement n = listx.item(i); xstring cp = n.getAttribute(L"caption"); if (cp) { HTREEITEM hitem = m_exploer.InsertChildItem( 0, cp, n, 15); trace(xstring((_int64)hitem).c_str()); CreateSubTree(hitem, n); m_exploer.ExpandItemAll(hitem); } } return 1; } int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) { KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); int len = nlist.length(); for (int i = 0; i < len; i++) { KXMLDOMElement e = nlist.item(i); xstring name = e.getAttribute(L"name"); xstring sImage = e.getAttribute(L"image"); xstring data = e.getAttribute(L"data"); int image = 15; if (sImage) image = sImage.toInt(); HTREEITEM h = m_exploer.InsertChildItem(hItem, name, (LPARAM)data.c_str(true), image); m_exploer.SetItemChild(h, 1); ExpandChildFolder(h, e); } return 1; } int InitialFolder() { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_exploer']/initial"); ExpandChildFolder(0, e); return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent) & SqlWatchWin::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&SqlWatchWin::OnSetFocus); AttachEvent(L"tv_exploer", L"TVN_ITEMEXPANDING", (FEvent)&SqlWatchWin::OnTreeExpanding); AttachEvent(L"tv_exploer", L"TVN_RCLICK", (FEvent)&SqlWatchWin::OnTreeRClick); return 1; } int onload() { OnAttachEvent(); m_exploer = GetControl(L"tv_exploer"); xml x; InitialFolder(); //if(xaserver::FetchXml(L"",L"dev:xml[sale.entity.xml]",L"",x)==1)CreateRootTree(x); xsedit xs = GetControl(L"sqlcontent"); xs.SetContent(L"--import 'qx.object.xq'", L".sql"); return 1; } int onloaded() { SetAgent(); return 1; } };