Minor bugfixes
authorEriks Jenkevics <eriks@netxms.org>
Fri, 1 Sep 2017 11:10:31 +0000 (14:10 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Sat, 2 Sep 2017 08:18:40 +0000 (11:18 +0300)
src/server/core/dcst.cpp
src/server/core/dctarget.cpp

index 98d4fca..e8d5cf9 100644 (file)
@@ -429,12 +429,27 @@ Table *QuerySummaryTable(LONG tableId, SummaryTable *adHocDefinition, UINT32 bas
       return NULL;
 
    ObjectArray<NetObj> *childObjects = object->getFullChildList(true, true);
-   Table *tableData = NULL;
+   Table *tableData = NULL, *lastValue = NULL;
+
    if (tableDefinition->getFlags() & SUMMARY_TABLE_TABLE_VALUE)
    {
-      DCObject *o = ((DataCollectionTarget *)childObjects->get(0))->getDCObjectByName(tableDefinition->getTableDciName());
-      if (o != NULL && (o->getType() == DCO_TYPE_TABLE))
-         tableData = tableDefinition->createEmptyResultTable(((DCTable *)o)->getLastValue());
+      for(int i = 0; i < childObjects->size(); i++)
+      {
+         if (((childObjects->get(i)->getObjectClass() == OBJECT_NODE) || (childObjects->get(i)->getObjectClass() == OBJECT_MOBILEDEVICE) ||
+             (childObjects->get(i)->getObjectClass() == OBJECT_SENSOR)) && childObjects->get(i)->checkAccessRights(userId, OBJECT_ACCESS_READ))
+         {
+            DCObject *o = ((DataCollectionTarget *)childObjects->get(i))->getDCObjectByName(tableDefinition->getTableDciName());
+            if (o != NULL && (o->getType() == DCO_TYPE_TABLE))
+            {
+               lastValue = ((DCTable *)o)->getLastValue();
+               if (lastValue != NULL)
+               {
+                  tableData = tableDefinition->createEmptyResultTable(((DCTable *)o)->getLastValue());
+                  break;
+               }
+            }
+         }
+      }
    }
    else
       tableData = tableDefinition->createEmptyResultTable();
index edb4067..3de570e 100644 (file)
@@ -946,6 +946,9 @@ void DataCollectionTarget::getDciValuesSummaryTableValue(SummaryTable *tableDefi
            !_tcscmp(o->getName(), tableDefinition->getTableDciName()))
       {
          lastValue = ((DCTable*)o)->getLastValue();
+         if (lastValue == NULL)
+            continue;
+
          for(int j = 0; j < lastValue->getNumRows(); j++)
          {
             tableData->addRow();
@@ -983,6 +986,7 @@ void DataCollectionTarget::getDciValuesSummaryTableValue(SummaryTable *tableDefi
          }
       }
    }
+   unlockDciAccess();
 }
 
 /**