#include <wobject/xstring.hpp>
|
#include <wobject/xwin.hpp>
|
#include <wobject/xaserver.hpp>
|
#include <wobject/xaserverarg.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
#include <xcontrol/xsedit.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
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"<sheet ver='10315' editer='xcell' version='3.0' report='true'>";
|
|
//style
|
ls_sheet += L"\r\n<stylesheet>";
|
ls_sheet += L"\r\n\t<item name='f0'>font-facename:ËÎÌå;font-style:normal;font-weight:400;font-size:-21.000000px</item>";
|
ls_sheet += L"\r\n\t<item name='f1'>font-facename:ËÎÌå;font-style:normal;font-weight:bold;font-size:-21.000000px</item>";
|
ls_sheet += L"\r\n</stylesheet>";
|
|
//axis
|
ls_sheet += L"\r\n<axis>";
|
ls_sheet += L"\r\n\t<col>";
|
ls_sheet += L"\r\n\t\t<item width='28' colend='0'/>";
|
ls_sheet += L"\r\n\t\t<item width='90' colend='64'/>";
|
ls_sheet += L"\r\n\t</col>";
|
ls_sheet += L"\r\n\t<row>";
|
ls_sheet += L"\r\n\t\t<item height='1' rowend='0'/>";
|
ls_sheet += L"\r\n\t\t<item height='24' rowend='64'/>";
|
ls_sheet += L"\r\n\t</row>";
|
ls_sheet += L"\r\n</axis>";
|
|
//cell
|
ls_sheet += L"\r\n<cells>";
|
ls_sheet += L"\r\n\t<row><cell colindex='0'><prestr>data/Item</prestr></cell></row>";
|
ls_sheet += L"\r\n\t<row rowindex='3'>" + labels + L"\r\n\t</row>";
|
ls_sheet += L"\r\n\t<row rowindex='5'>" + datas + L"\r\n\t</row>";
|
ls_sheet += L"\r\n</cells>";
|
|
//report
|
ls_sheet += L"\r\n<report right='0' left='0'>";
|
ls_sheet += L"\r\n\t<PageHeader endRow='1' startRow='1'/>";
|
ls_sheet += L"\r\n\t<Header endRow='2' startRow='2'/>";
|
ls_sheet += L"\r\n\t<Title endRow='4' startRow='3'/>";
|
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();
|
if (src.find(L"mh.com") < 0)
|
{
|
src = src.replace(L"\\", L"/");
|
processhxd(base + L"/developer", src);
|
}
|
}
|
}
|
|
int reconnect()
|
{
|
SendMessage(GetFrameWindow().GetHWND(), 0x401, (LPARAM)L"xmAuth", 0);
|
return 1;
|
}
|
|
int DownLoadFile2(xstring src, xstring dest)
|
{
|
int ret = xaserver::DownLoadFile(GetServerUrl(), src, L"", dest);
|
if (ret < 0)
|
{
|
reconnect();
|
ret = xaserver::DownLoadFile(GetServerUrl(), src, L"", 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(@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();
|
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",L") < 0) values += L",L" + typ + L",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)
|
{
|
//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(@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);
|
trace(L".");
|
|
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();
|
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");
|
DownLoadFile2(L"dev:" + typ + id, 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");
|
DownLoadFile2(L"dev:" + typ + id, 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");
|
DownLoadFile2(L"dev:" + typ + id, 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);
|
DownLoadFile2(L"dev:" + typ + id, base + L"/working" + L"/" + typ + L"/" + id);
|
}
|
appendto(typ, L"T(\"" + srcItem + 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 (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"");
|
|
appendto(L"sheet", L"T(\"" + srcItem + L"/" + sheetid + L"\",\"" + sheetid + L"\")[ln]");
|
appendto(L"sheet", L"T(\"" + srcItem + 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[" + 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");
|
//DownLoadFile2(L"dev:code"+id,base+L"/working"+L"/code/"+id+L".xss");
|
appendto(L"code", L"T(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")[ln]");
|
}
|
}
|
}
|
}
|
trace(L" -- finished");
|
return 1;
|
}
|
|
int processhxd(xstring base, xstring sfile)
|
{
|
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 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);
|
}
|
}
|
return 1;
|
}
|
|
int Initenv()
|
{
|
xstring values = L"";
|
if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types");
|
values = values.replace(L",,L", L",L");
|
if (values != L"")
|
{
|
int pos = values.find(L",L", 0);
|
xstring typ = L"";
|
while (pos >= 0)
|
{
|
int pos1 = values.find(L",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()
|
{
|
if (!toXml)
|
{
|
toXml = xml();
|
}
|
else
|
{
|
if (toEle)toEle.Release();
|
}
|
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", L",L");
|
trace(values);
|
if (values != L"")
|
{
|
int len = values.length();
|
int pos = values.find(L",L", 0);
|
xstring typ = L"";
|
while (pos >= 0)
|
{
|
int pos1 = values.find(L",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",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;
|
}
|
};
|