Explorar el Código

HPCC-17062 Return HelpersCount in WsWorkunits.WUInfo

Signed-off-by: wangkx <kevin.wang@lexisnexis.com>
wangkx hace 8 años
padre
commit
1f44787f9d

+ 2 - 1
esp/scm/ws_workunits.ecm

@@ -284,6 +284,7 @@ ESPStruct [nil_remove] ECLWorkunit
     [min_ver("1.50")] int ResourceURLCount;
     [min_ver("1.50")] int DebugValueCount;
     [min_ver("1.50")] int WorkflowCount;
+    [min_ver("1.67")] int HelpersCount;
 };
 
 ESPStruct [nil_remove] WUECLAttribute
@@ -1798,7 +1799,7 @@ ESPresponse [exceptions_inline, nil_remove] WUGetNumFileToCopyResponse
 
 ESPservice [
     auth_feature("DEFERRED"), //This declares that the method logic handles feature level authorization
-    version("1.66"), default_client_version("1.66"),
+    version("1.67"), default_client_version("1.67"),
     noforms,exceptions_inline("./smc_xslt/exceptions.xslt"),use_method_name] WsWorkunits
 {
     ESPmethod [resp_xsl_default("/esp/xslt/workunits.xslt")]     WUQuery(WUQueryRequest, WUQueryResponse);

+ 43 - 27
esp/services/ws_workunits/ws_workunitsHelpers.cpp

@@ -481,15 +481,13 @@ void WsWuInfo::getHelpers(IEspECLWorkunit &info, unsigned long flags)
     try
     {
         IArrayOf<IEspECLHelpFile> helpers;
+        unsigned helpersCount = 2;   //  ECL + Workunit XML are also helpers...
 
         Owned <IConstWUQuery> query = cw->getQuery();
         if(!query)
         {
             ERRLOG("Cannot get Query for this workunit.");
             info.setHelpersDesc("Cannot get Query for this workunit.");
-
-            if (!(flags & WUINFO_IncludeHelpers))
-                return;
         }
         else
         {
@@ -522,14 +520,11 @@ void WsWuInfo::getHelpers(IEspECLWorkunit &info, unsigned long flags)
                 info.setHasArchiveQuery(query->hasArchive());
             }
 
-            if (!(flags & WUINFO_IncludeHelpers))
-                return;
-
             for (unsigned i = 0; i < FileTypeSize; i++)
-                getHelpFiles(query, (WUFileType) i, helpers);
+                getHelpFiles(query, (WUFileType) i, helpers, flags, helpersCount);
         }
 
-        getWorkunitThorLogInfo(helpers, info);
+        getWorkunitThorLogInfo(helpers, info, flags, helpersCount);
 
         if (cw->getWuidVersion() > 0)
         {
@@ -542,6 +537,10 @@ void WsWuInfo::getHelpers(IEspECLWorkunit &info, unsigned long flags)
                 if (!logName.length())
                     continue;
 
+                helpersCount++;
+                if (!(flags & WUINFO_IncludeHelpers))
+                    continue;
+
                 Owned<IEspECLHelpFile> h= createECLHelpFile("","");
                 h->setName(logName.str());
                 h->setType(File_EclAgentLog);
@@ -571,6 +570,10 @@ void WsWuInfo::getHelpers(IEspECLWorkunit &info, unsigned long flags)
                 if (name.length() < 1)
                     continue;
 
+                helpersCount++;
+                if (!(flags & WUINFO_IncludeHelpers))
+                    break;
+
                 Owned<IEspECLHelpFile> h= createECLHelpFile("","");
                 h->setName(name.str());
                 h->setType(File_EclAgentLog);
@@ -586,6 +589,7 @@ void WsWuInfo::getHelpers(IEspECLWorkunit &info, unsigned long flags)
         }
 
         info.setHelpers(helpers);
+        info.setHelpersCount(helpersCount);
     }
     catch(IException* e)
     {
@@ -1060,7 +1064,7 @@ void WsWuInfo::getInfo(IEspECLWorkunit &info, unsigned long flags)
     getWorkflow(info, flags);
 }
 
-unsigned WsWuInfo::getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IEspECLWorkunit &info)
+unsigned WsWuInfo::getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IEspECLWorkunit &info, unsigned long flags, unsigned& helpersCount)
 {
     unsigned countThorLog = 0;
 
@@ -1113,17 +1117,21 @@ unsigned WsWuInfo::getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IE
                 else
                     fileType.appendf("%s%d", File_ThorLog, countThorLog);
 
-                Owned<IEspECLHelpFile> h= createECLHelpFile("","");
-                h->setName(logName.str());
-                h->setDescription(processName.str());
-                h->setType(fileType.str());
-                if (version >= 1.43)
+                helpersCount++;
+                if (flags & WUINFO_IncludeHelpers)
                 {
-                    offset_t fileSize;
-                    if (getFileSize(logName.str(), NULL, fileSize))
-                        h->setFileSize(fileSize);
+                    Owned<IEspECLHelpFile> h= createECLHelpFile("","");
+                    h->setName(logName.str());
+                    h->setDescription(processName.str());
+                    h->setType(fileType.str());
+                    if (version >= 1.43)
+                    {
+                        offset_t fileSize;
+                        if (getFileSize(logName.str(), NULL, fileSize))
+                            h->setFileSize(fileSize);
+                    }
+                    helpers.append(*h.getLink());
                 }
-                helpers.append(*h.getLink());
 
                 if (version < 1.38)
                     continue;
@@ -1167,16 +1175,20 @@ unsigned WsWuInfo::getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IE
             else
                 fileType.appendf("%s%d", File_ThorLog, countThorLog);
 
-            Owned<IEspECLHelpFile> h= createECLHelpFile("","");
-            h->setName(name.str());
-            h->setType(fileType.str());
-            if (version >= 1.43)
+            helpersCount++;
+            if (flags & WUINFO_IncludeHelpers)
             {
-                offset_t fileSize;
-                if (getFileSize(name.str(), NULL, fileSize))
-                    h->setFileSize(fileSize);
+                Owned<IEspECLHelpFile> h= createECLHelpFile("","");
+                h->setName(name.str());
+                h->setType(fileType.str());
+                if (version >= 1.43)
+                {
+                    offset_t fileSize;
+                    if (getFileSize(name.str(), NULL, fileSize))
+                        h->setFileSize(fileSize);
+                }
+                helpers.append(*h.getLink());
             }
-            helpers.append(*h.getLink());
         }
 
         StringBuffer logDir;
@@ -1678,7 +1690,7 @@ bool WsWuInfo::getFileSize(const char* fileName, const char* IPAddress, offset_t
     return true;
 }
 
-void WsWuInfo::getHelpFiles(IConstWUQuery* query, WUFileType type, IArrayOf<IEspECLHelpFile>& helpers)
+void WsWuInfo::getHelpFiles(IConstWUQuery* query, WUFileType type, IArrayOf<IEspECLHelpFile>& helpers, unsigned long flags, unsigned& helpersCount)
 {
     if (!query)
         return;
@@ -1691,6 +1703,10 @@ void WsWuInfo::getHelpFiles(IConstWUQuery* query, WUFileType type, IArrayOf<IEsp
         if (cur.getType() != type)
             continue;
 
+        helpersCount++;
+        if (!(flags & WUINFO_IncludeHelpers))
+            continue;
+
         cur.getName(name);
         Owned<IEspECLHelpFile> h= createECLHelpFile("","");
         h->setName(name.str());

+ 2 - 2
esp/services/ws_workunits/ws_workunitsHelpers.hpp

@@ -179,7 +179,7 @@ public:
 
     void getWorkflow(IEspECLWorkunit &info, unsigned long flags);
 
-    void getHelpFiles(IConstWUQuery* query, WUFileType type, IArrayOf<IEspECLHelpFile>& helpers);
+    void getHelpFiles(IConstWUQuery* query, WUFileType type, IArrayOf<IEspECLHelpFile>& helpers, unsigned long flags, unsigned& helpersCount);
     void getSubFiles(IPropertyTreeIterator* f, IEspECLSourceFile* eclSuperFile, StringArray& fileNames);
     void getEclSchemaChildFields(IArrayOf<IEspECLSchemaItem>& schemas, IHqlExpression * expr, bool isConditional);
     void getEclSchemaFields(IArrayOf<IEspECLSchemaItem>& schemas, IHqlExpression * expr, bool isConditional);
@@ -199,7 +199,7 @@ public:
         bool forDownload, bool addXMLDeclaration, MemoryBuffer& buf);
     void getWorkunitCpp(const char* cppname, const char* description, const char* ipAddress, MemoryBuffer& buf, bool forDownload);
     void getEventScheduleFlag(IEspECLWorkunit &info);
-    unsigned getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IEspECLWorkunit &info);
+    unsigned getWorkunitThorLogInfo(IArrayOf<IEspECLHelpFile>& helpers, IEspECLWorkunit &info, unsigned long flags, unsigned& helpersCount);
     IDistributedFile* getLogicalFileData(IEspContext& context, const char* logicalName, bool& showFileContent);
 
     IPropertyTree* getWorkunitArchive();