LiFan
2025-02-13 03ef0b51103c735077c784c7df81ae2bcc1599ab
jrj/xframe/devloper/sqlwatch.cpp
@@ -6,6 +6,7 @@
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xsedit.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <win32/xfile.hpp>
using xml = KXMLDOMDocument;
class __declspec(dllexport) SqlWatchWin : public xwin
{
@@ -238,10 +239,13 @@
      {
         KXMLDOMNode node = items.item(i);
         xstring src = node.selectSingleNode(L"@src").text();
         if (src.find(L"mh.com") < 0)
         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);
            processhxd(base + L"/developer", src,hDomainGuid,hP2Guid);
         }
      }
   }
@@ -252,13 +256,36 @@
      return 1;
   }
   int DownLoadFile2(xstring src, xstring dest)
   int DownLoadObject(xstring ext,xstring dest)
   {
      int ret = xaserver::DownLoadFile(GetServerUrl(), src, L"", 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, L"", dest);
         ret = xaserver::DownLoadFile(GetServerUrl(), src, ext, dest);
      }
      if (ret < 0)reconnect();
      return ret;
@@ -287,7 +314,7 @@
         return 1;
      }
      KXMLDOMNodeList items = x.selectNodes(L"//file[count(@deleted)=0]");
      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"")
@@ -311,6 +338,7 @@
         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"")
         {
@@ -350,7 +378,7 @@
               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";
               if (values.find(L",L" + typ + L",") < 0) values += L"," + typ + L",";
               xutil::CacheUrlData(L"object-types", values);
               values = L"";
@@ -424,7 +452,7 @@
      return 1;
   }
   int processprj_xml(xstring base, xstring path, xstring src, bool processItem)
   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);
@@ -447,7 +475,7 @@
         return 1;
      }
      KXMLDOMNodeList items = x.selectNodes(L"//file[count(@deleted)=0]");
      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"")
@@ -461,6 +489,11 @@
      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);
@@ -468,17 +501,24 @@
         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"")
         {
            ret = DownLoadFile2(L"dev:" + typ + L"[" + srcItem + L"]", dpath + L"/" + srcItem);
            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"[" + srcItem + L"]" + L" " + dpath + L"/" + srcItem);
               trace(L"\r\nerror load dev:" + typ + L"[" + uriItem + L"]" + L" " + dpath + L"/" + srcItem);
               continue;
               //return 1;
            }
@@ -491,28 +531,65 @@
               {
                  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");
                  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");
                  DownLoadFile2(L"dev:" + typ + id, 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);
                  //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");
                  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);
                  //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);
                  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(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")[ln]");
               appendto(typ, L"T(\"" + uriItem + L"\",\"" + id + L"\",\"" + spath + L"/" + srcItem + L"\")[ln]");
            }
            if (typ == L"template")
@@ -528,12 +605,12 @@
                     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();
                     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(\"" + srcItem + L"/" + sheetid + L"\",\"" + sheetid + L"\")[ln]");
                     appendto(L"sheet", L"T(\"" + srcItem + L"/" + sheetcaption + L"\",\"" + sheetid + L"\")[ln]");
                     appendto(L"sheet", L"T(\"" + uriItem + L"/" + sheetid + L"\",\"" + sheetid + L"\")[ln]");
                     appendto(L"sheet", L"T(\"" + uriItem + L"/" + sheetcaption + L"\",\"" + sheetid + L"\")[ln]");
                  }
               }
            }
@@ -541,18 +618,18 @@
            {
               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);
               ret = DownLoadFile2(L"dev:code[" + uriItem + L"]", dpath + L"/" + srccode);
               if (ret < 0)
               {
                  trace(L"\r\nerror load dev:code[" + srcItem + L"]" + L" " + dpath + L"/" + srccode);
                  trace(L"\r\nerror load dev:code[" + uriItem + 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[" + 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(\"" + srcItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")[ln]");
                  appendto(L"code", L"T(\"" + uriItem + L"\",\"" + id + L"\",\"" + spath + L"\"" + srcItem + L"\")[ln]");
               }
            }
         }
@@ -561,7 +638,7 @@
      return 1;
   }
   int processhxd(xstring base, xstring sfile)
   int processhxd(xstring base, xstring sfile,xstring hDomainGuid,xstring hP2Guid)
   {
      surePath(base, sfile);
      trace(L"\r\n" + base + L"/" + sfile);
@@ -575,18 +652,20 @@
      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);
            processprj_xml(base, path, src, true,hDomainGuid,hP2Guid,hProjectGuid);
         }
      }
      return 1;
@@ -596,14 +675,14 @@
   {
      xstring values = L"";
      if (xutil::HasCacheData(L"object-types"))values = xutil::GetUrlData(L"object-types");
      values = values.replace(L",,L", L",L");
      values = values.replace(L",,", L",");
      if (values != L"")
      {
         int pos = values.find(L",L", 0);
         int pos = values.find(L",", 0);
         xstring typ = L"";
         while (pos >= 0)
         {
            int pos1 = values.find(L",L", pos + 1);
            int pos1 = values.find(L",", pos + 1);
            if (pos1 < 0) break;
            typ = values.mid(pos + 1, pos1 - pos - 1);
            xutil::CacheUrlData(typ, L"");
@@ -615,14 +694,7 @@
   }
   int Initenv_xml()
   {
      if (!toXml)
      {
         toXml = xml();
      }
      else
      {
         if (toEle)toEle.Release();
      }
      toXml.Reset();
      toXml.loadXML(L"<root/>");
      toEle = toXml.documentElement();
      return 1;
@@ -678,16 +750,16 @@
      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");
      values = values.replace(L",,", L",");
      trace(values);
      if (values != L"")
      {
         int len = values.length();
         int pos = values.find(L",L", 0);
         int pos = values.find(L",", 0);
         xstring typ = L"";
         while (pos >= 0)
         {
            int pos1 = values.find(L",L", pos + 1);
            int pos1 = values.find(L",", pos + 1);
            if (pos1 < 0) break;
            typ = values.mid(pos + 1, pos1 - pos - 1);
            tvalue = L"";
@@ -937,7 +1009,7 @@
      {
         KXMLDOMElement ele = nodes.item(i);
         xstring tmp = ele.getAttribute(L"name");
         if (i < s - 1) tmp = tmp + L",L";
         if (i < s - 1) tmp = tmp + L",";
         str += L"\t" + tmp + L"\r\n";
      }
      //str += L"FROM " + caption;