Explorar o código

HPCC-8253 Need to return active status when doing ecl package list

Signed-off-by: Stuart Ort <stuart.ort@lexisnexis.com>
Stuart Ort %!s(int64=12) %!d(string=hai) anos
pai
achega
b203e98899

+ 1 - 2
ecl/ecl-package/ecl-package.cpp

@@ -268,8 +268,7 @@ public:
             for (unsigned i=0; i<num; i++)
             {
                 IConstPackageListMapData& req = pkgMapInfo.item(i);
-                const char *id = req.getId();
-                printf("\nPackage Name = %s\n", id);
+                printf("\nPackage Name = %s  active = %d\n", req.getId(), req.getActive());
                 IArrayOf<IConstPackageListData> &pkgInfo = req.getPkgListData();
 
                 unsigned int numPkgs = pkgInfo.ordinality();

+ 1 - 0
esp/scm/ws_packageprocess.ecm

@@ -98,6 +98,7 @@ ESPstruct PackageListMapData
     string Id;
     string Target;
     ESParray<ESPstruct PackageListData> PkgListData;
+    boolean Active;
 };
 
 ESPresponse [exceptions_inline] ListPackageResponse

+ 13 - 33
esp/services/ws_packageprocess/ws_packageprocessService.cpp

@@ -310,42 +310,22 @@ void listPkgInfo(const char *target, const char *process, IArrayOf<IConstPackage
         throw MakeStringException(PKG_DALI_LOOKUP_ERROR, "Unable to retrieve package information from dali for process %s", (process && *process) ? process : "*");
 
     StringBuffer xpath("PackageMap");
-    if (!target || !*target)
+    if (target && *target)
+        xpath.appendf("[@querySet='%s']", target);
+    Owned<IPropertyTreeIterator> iter = pkgSetRegistry->getElements(xpath.str());
+    ForEach(*iter)
     {
-        Owned<IPropertyTreeIterator> iter = pkgSetRegistry->getElements("PackageMap");
-        ForEach(*iter)
+        IPropertyTree &item = iter->query();
+        const char *id = item.queryProp("@id");
+        if (id)
         {
-            Owned<IEspPackageListMapData> res = createPackageListMapData("", "");
-            IPropertyTree &item = iter->query();
             StringBuffer xpath;
-            const char *id = item.queryProp("@id");
-            if (id)
-            {
-                xpath.append("PackageMap[@id='").append(id).append("']");
-                IPropertyTree *mapTree = root->queryPropTree(xpath);
-                Owned<IEspPackageListMapData> res = createPackageListMapData("", "");
-                getPackageListInfo(mapTree, res);
-                results->append(*res.getClear());
-            }
-        }
-    }
-    else
-    {
-        xpath.appendf("[@querySet='%s']", target);
-        Owned<IPropertyTreeIterator> iter = pkgSetRegistry->getElements(xpath.str());
-        ForEach(*iter)
-        {
-            IPropertyTree &item = iter->query();
-            const char *id = item.queryProp("@id");
-            if (id)
-            {
-                StringBuffer xpath;
-                xpath.append("PackageMap[@id='").append(id).append("']");
-                IPropertyTree *mapTree = root->queryPropTree(xpath);
-                Owned<IEspPackageListMapData> res = createPackageListMapData("", "");
-                getPackageListInfo(mapTree, res);
-                results->append(*res.getClear());
-            }
+            xpath.append("PackageMap[@id='").append(id).append("']");
+            IPropertyTree *mapTree = root->queryPropTree(xpath);
+            Owned<IEspPackageListMapData> res = createPackageListMapData("", "");
+            res->setActive(item.getPropBool("@active"));
+            getPackageListInfo(mapTree, res);
+            results->append(*res.getClear());
         }
     }
 }