Added option to set object status by DCI's 'Ability to use DCI for node status calcul...
authorzev <zev@radensolutions.com>
Mon, 6 Oct 2014 15:24:32 +0000 (18:24 +0300)
committerzev <zev@radensolutions.com>
Mon, 6 Oct 2014 15:24:40 +0000 (18:24 +0300)
24 files changed:
include/nxclapi.h
src/java/netxms-client/src/main/java/org/netxms/client/datacollection/DataCollectionItem.java
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_cs.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_es.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_ru.properties
src/java/netxms-eclipse/DataCollection/OSGI-INF/l10n/bundle_zh_CN.properties
src/java/netxms-eclipse/DataCollection/plugin.xml
src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/OtherOptions.java [moved from src/java/netxms-eclipse/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/NetworkMaps.java with 87% similarity]
src/server/core/agent_policy.cpp
src/server/core/dcitem.cpp
src/server/core/dcobject.cpp
src/server/core/dctable.cpp
src/server/core/dctarget.cpp
src/server/core/netobj.cpp
src/server/include/nms_dcoll.h
src/server/include/nms_objects.h
webui/webapp/DataCollection/OSGI-INF/l10n/bundle.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_cs.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_es.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_ru.properties
webui/webapp/DataCollection/OSGI-INF/l10n/bundle_zh_CN.properties
webui/webapp/DataCollection/plugin.xml
webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/OtherOptions.java [moved from webui/webapp/DataCollection/src/org/netxms/ui/eclipse/datacollection/propertypages/NetworkMaps.java with 87% similarity]

index 53f8890..a58066f 100644 (file)
@@ -734,6 +734,7 @@ enum
 #define DCF_AGGREGATE_ON_CLUSTER    ((UINT16)0x0080)
 #define DCF_TRANSFORM_AGGREGATED    ((UINT16)0x0100)
 #define DCF_NO_STORAGE              ((UINT16)0x0200)
+#define DCF_CALCULATE_NODE_STATUSS  ((UINT16)0x0400)
 
 /**
  * Get cluster aggregation function from DCI flags
index 4cf1f8b..b1639f8 100644 (file)
@@ -33,6 +33,7 @@ public class DataCollectionItem extends DataCollectionObject
        public static final int DCF_RAW_VALUE_OCTET_STRING = 0x0004;
        public static final int DCF_SHOW_ON_OBJECT_TOOLTIP = 0x0008;
        public static final int DCF_AGGREGATE_FUNCTION_MASK = 0x0070;
+   public static final int DCF_CALCULATE_NODE_STATUSS = 0x0400;
        
        // Aggregation functions
        public static final int DCF_FUNCTION_SUM = 0;
@@ -420,4 +421,21 @@ public class DataCollectionItem extends DataCollectionObject
        {
                this.sampleCount = sampleCount;
        }
+       
+         /**
+    * @return State of DCF_CALCULATE_NODE_STATUSS flag
+    */
+   public boolean isUsedForNodeStatusCalculation()
+   {
+      return (flags & DCF_CALCULATE_NODE_STATUSS) != 0;
+   }
+   
+   public void setUsedForNodeStatusCalculation(boolean enable)
+   {
+      if(enable)
+         flags |= DCF_CALCULATE_NODE_STATUSS;
+      else
+         flags &= ~DCF_CALCULATE_NODE_STATUSS;
+   }
+
 }
index 78eec0f..6a958d8 100644 (file)
@@ -20,7 +20,6 @@ page.name.Transformation = Transformation
 page.name.Thresholds = Thresholds
 page.name.Columns = Columns
 page.name.InstanceDiscovery = Instance Discovery
-page.name.NetworkMaps = Network Maps
 page.name.Filter = Filter
 page.name.Cluster = Cluster
 tab.name.LastValues = Last Values
index 0107b99..07ce2ea 100644 (file)
@@ -1,35 +1,34 @@
-action.label.Apply=&Pou\u017E\u00EDt...
-action.label.ClearData=Vy\u010Distit shroma\u017Ed\u011Bn\u00E1 data
-action.label.CreateDCI=Vytvo\u0159it polo\u017Eku sb\u011Bru dat...
-action.label.CreateDCIs=Vytvo\u0159it polo\u017Eky sb\u011Bru dat...
+action.label.Apply=&Pou\u017e\u00edt...
+action.label.ClearData=Vy\u010distit shroma\u017ed\u011bn\u00e1 data
+action.label.CreateDCI=Vytvo\u0159it polo\u017eku sb\u011bru dat...
+action.label.CreateDCIs=Vytvo\u0159it polo\u017eky sb\u011bru dat...
 action.label.CreateTemplate=Vytvo\u0159it &\u0161ablonu...
 action.label.CreateTemplateGroup=Vytvo\u0159it \u0161ablonu &skupiny...
-action.label.DataCollection=Konfigurace sb\u011Bru dat
-action.label.LastValues=Posledn\u00ED hodnoty
+action.label.DataCollection=Konfigurace sb\u011bru dat
+action.label.LastValues=Posledn\u00ed hodnoty
 action.label.Remove=&Odstranit...
-action.label.SummaryTablesConfig=Souhrnn\u00E1 DCI tabulka
-action.tooltip.Apply=Pou\u017E\u00EDt \u0161ablonu na prvek/prvky
-action.tooltip.Remove=Odstranit \u0161ablonu z prvku/prvk\u016F
-action.tooltip.SummaryTablesConfig=Otev\u0159\u00EDt konfiguraci souhrnn\u00E9 DCI tabulky
-actionSet.label.DataCollection=Ak\u010Dn\u00ED set sb\u011Bru dat
-command.description.SummaryTablesConfig=Otev\u0159\u00EDt konfiguraci souhrnn\u00FDch DCI tabulek
+action.label.SummaryTablesConfig=Souhrnn\u00e1 DCI tabulka
+action.tooltip.Apply=Pou\u017e\u00edt \u0161ablonu na prvek/prvky
+action.tooltip.Remove=Odstranit \u0161ablonu z prvku/prvk\u016f
+action.tooltip.SummaryTablesConfig=Otev\u0159\u00edt konfiguraci souhrnn\u00e9 DCI tabulky
+actionSet.label.DataCollection=Ak\u010dn\u00ed set sb\u011bru dat
+command.description.SummaryTablesConfig=Otev\u0159\u00edt konfiguraci souhrnn\u00fdch DCI tabulek
 command.description.ToggleFilter=P\u0159epnout DCI filtr
 command.label.ShowDCIFilter=Zobrazit DCI &filtr
-command.name.SummaryTablesConfig=Souhrnn\u00E9 DCI tabulky
+command.name.SummaryTablesConfig=Souhrnn\u00e9 DCI tabulky
 command.name.ToggleFilter=P\u0159epnout DCI filtr
-command.tooltip.ShowDCIFilter=Zobrazit/skr\u00FDt DCI filtr
+command.tooltip.ShowDCIFilter=Zobrazit/skr\u00fdt DCI filtr
 page.name.Cluster=Cluster
 page.name.Columns=Sloupce
-page.name.CustomSchedule=Vlastn\u00ED pl\u00E1n
+page.name.CustomSchedule=Vlastn\u00ed pl\u00e1n
 page.name.Filter=Filtr
-page.name.General=Hlavn\u00ED
+page.name.General=Hlavn\u00ed
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=S\u00ED\u0165ov\u00E9 mapy
-page.name.Thresholds=Prahov\u00E9 hodnoty
+page.name.Thresholds=Prahov\u00e9 hodnoty
 page.name.Transformation=Transformace
-tab.name.LastValues=Posledn\u00ED hodnoty
-tab.name.Thresholds=Prahov\u00E9 hodnoty
-view.name.DCISummaryTables=Souhrnn\u00E9 DCI tabulky
-view.name.DataCollection=Konfigurace sb\u011Bru dat
-view.name.LastValues=Posledn\u00ED hodnoty
-view.name.SummaryTable=Souhrnn\u00E1 tabulka
+tab.name.LastValues=Posledn\u00ed hodnoty
+tab.name.Thresholds=Prahov\u00e9 hodnoty
+view.name.DCISummaryTables=Souhrnn\u00e9 DCI tabulky
+view.name.DataCollection=Konfigurace sb\u011bru dat
+view.name.LastValues=Posledn\u00ed hodnoty
+view.name.SummaryTable=Souhrnn\u00e1 tabulka
index bedb5cd..caebc64 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=Custom Schedule
 page.name.Filter=Filter
 page.name.General=General
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=Network Maps
 page.name.Thresholds=Thresholds
 page.name.Transformation=Transformation
 tab.name.LastValues=Last Values
index 441135e..9b154a2 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\
 page.name.Filter=\u0424\u0438\u043b\u044c\u0442\u0440
 page.name.General=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435
 page.name.InstanceDiscovery=\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430
-page.name.NetworkMaps=\u041a\u0430\u0440\u0442\u044b \u0441\u0435\u0442\u0438
 page.name.Thresholds=\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
 page.name.Transformation=\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445
 tab.name.LastValues=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
index bedb5cd..caebc64 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=Custom Schedule
 page.name.Filter=Filter
 page.name.General=General
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=Network Maps
 page.name.Thresholds=Thresholds
 page.name.Transformation=Transformation
 tab.name.LastValues=Last Values
index 5372d69..04a8a3b 100644 (file)
            </enabledWhen>
         </page>
         <page
-              class="org.netxms.ui.eclipse.datacollection.propertypages.NetworkMaps"
+              class="org.netxms.ui.eclipse.datacollection.propertypages.OtherOptions"
               id="org.netxms.ui.eclipse.datacollection.propertypages.NetworkMaps#110"
-              name="%page.name.NetworkMaps">
+              name="Other options">
            <enabledWhen>
               <instanceof
                     value="org.netxms.client.datacollection.DataCollectionItem">
@@ -33,11 +33,12 @@ import org.netxms.ui.eclipse.tools.WidgetHelper;
  * @author Victor
  *
  */
-public class NetworkMaps extends PropertyPage
+public class OtherOptions extends PropertyPage
 {
        private DataCollectionObjectEditor editor;
        private DataCollectionItem dci;
        private Button checkShowOnTooltip;
+   private Button checkCalculateStatus;
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -59,6 +60,10 @@ public class NetworkMaps extends PropertyPage
       checkShowOnTooltip = new Button(dialogArea, SWT.CHECK);
       checkShowOnTooltip.setText(Messages.get().NetworkMaps_ShowInTooltips);
       checkShowOnTooltip.setSelection(dci.isShowOnObjectTooltip());
+
+      checkCalculateStatus = new Button(dialogArea, SWT.CHECK);
+      checkCalculateStatus.setText("Use this DCI for node status calculation");
+      checkCalculateStatus.setSelection(dci.isUsedForNodeStatusCalculation());
       
                return dialogArea;
        }
@@ -71,6 +76,7 @@ public class NetworkMaps extends PropertyPage
        protected void applyChanges(final boolean isApply)
        {
                dci.setShowOnObjectTooltip(checkShowOnTooltip.getSelection());
+      dci.setUsedForNodeStatusCalculation(checkCalculateStatus.getSelection());
                editor.modify();
        }
 
@@ -101,5 +107,6 @@ public class NetworkMaps extends PropertyPage
        {
                super.performDefaults();
                checkShowOnTooltip.setSelection(false);
+               checkCalculateStatus.setSelection(false);
        }
 }
index 780fe6a..138afe8 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
 ** NetXMS - Network Management System
 ** Copyright (C) 2003-2009 Victor Kirhenshtein
 **
@@ -122,10 +122,9 @@ BOOL AgentPolicy::savePolicyCommonProperties(DB_HANDLE hdb)
 }
 
 
-//
-// Save to database
-//
-
+/**
+ * Save to database
+ */
 BOOL AgentPolicy::SaveToDB(DB_HANDLE hdb)
 {
        LockData();
index e3a2505..68635c2 100644 (file)
@@ -653,7 +653,7 @@ void DCItem::updateFromMessage(CSCPMessage *pMsg, UINT32 *pdwNumMaps, UINT32 **p
  *
  * @return true on success
  */
-bool DCItem::processNewValue(time_t tmTimeStamp, void *originalValue)
+bool DCItem::processNewValue(time_t tmTimeStamp, void *originalValue, bool *updateStatus)
 {
        static int updateRawValueTypes[] = { DB_SQLTYPE_VARCHAR, DB_SQLTYPE_VARCHAR, DB_SQLTYPE_INTEGER, DB_SQLTYPE_INTEGER };
        static int updateValueTypes[] = { DB_SQLTYPE_INTEGER, DB_SQLTYPE_INTEGER, DB_SQLTYPE_VARCHAR };
@@ -688,6 +688,15 @@ bool DCItem::processNewValue(time_t tmTimeStamp, void *originalValue)
 
    m_dwErrorCount = 0;
 
+   if(isStatusDCO() && (m_dwCacheSize == 0 || ((UINT32)*pValue != (UINT32)*m_ppValueCache[0])))
+   {
+      *updateStatus = true;
+   }
+   else
+   {
+      *updateStatus = false;
+   }
+
    m_prevRawValue = rawValue;
    m_tPrevValueTimeStamp = tmTimeStamp;
 
index a027cb6..d246720 100644 (file)
@@ -916,8 +916,9 @@ void DCObject::updateFromTemplate(DCObject *src)
  *
  * @return true on success
  */
-bool DCObject::processNewValue(time_t nTimeStamp, void *value)
+bool DCObject::processNewValue(time_t nTimeStamp, void *value, bool *updateStatus)
 {
+   *updateStatus = false;
    return false;
 }
 
index 7c50d4a..c8d9ef3 100644 (file)
@@ -301,8 +301,9 @@ bool DCTable::deleteAllData()
  *
  * @return true on success
  */
-bool DCTable::processNewValue(time_t nTimeStamp, void *value)
+bool DCTable::processNewValue(time_t nTimeStamp, void *value, bool *updateStatus)
 {
+   *updateStatus = false;
    lock();
 
    // Normally m_pNode shouldn't be NULL for polled items, but who knows...
@@ -459,7 +460,7 @@ bool DCTable::transform(Table *value)
    {
       if (m_transformationScript->getErrorCode() == NXSL_ERR_EXECUTION_ABORTED)
       {
-         DbgPrintf(6, _T("Transformation script for DCI \"%s\" [%d] on node %s [%d] aborted"), 
+         DbgPrintf(6, _T("Transformation script for DCI \"%s\" [%d] on node %s [%d] aborted"),
             m_szDescription, m_dwId, (m_pNode != NULL) ? m_pNode->Name() : _T("(null)"), (m_pNode != NULL) ? m_pNode->Id() : 0);
       }
       else
index 4d11038..5083614 100644 (file)
@@ -367,9 +367,14 @@ UINT32 DataCollectionTarget::getThresholdSummary(CSCPMessage *msg, UINT32 baseId
  */
 bool DataCollectionTarget::processNewDCValue(DCObject *dco, time_t currTime, void *value)
 {
+   bool updateState;
        lockDciAccess(false);
-       bool result = dco->processNewValue(currTime, value);
+       bool result = dco->processNewValue(currTime, value, &updateState);
        unlockDciAccess();
+       if(updateState)
+       {
+      calculateCompoundStatus(FALSE);
+   }
    return result;
 }
 
@@ -672,3 +677,33 @@ bool DataCollectionTarget::isEventSource()
 {
    return true;
 }
+
+/**
+ * Returns most critical status of DCI used for
+ * status calculation
+ */
+int DataCollectionTarget::getMostCriticalDCIStatus()
+{
+   int status = -1;
+   lockDciAccess(false);
+   // Check if that item exists
+   for(int i = 0; i < m_dcObjects->size(); i++)
+       {
+               DCObject *curr = m_dcObjects->get(i);
+      if (curr->isStatusDCO() && (curr->getType() == DCO_TYPE_ITEM) &&
+          curr->hasValue() && (curr->getStatus() == ITEM_STATUS_ACTIVE))
+      {
+         if(Type() == OBJECT_CLUSTER && !curr->isAggregateOnCluster())
+            continue; //Calculated only on thows that are agregated on cluster
+
+         ItemValue *value = ((DCItem *)curr)->getInternalLastValue();
+         if(value != NULL && (INT32)*value >= -1 && (INT32)*value < 5)
+            status = max(status, (INT32)*value);
+         delete value;
+      }
+       }
+   unlockDciAccess();
+   status = (status == -1) ? STATUS_UNKNOWN : status;
+
+   return status;
+}
index 73de122..cb4a62e 100644 (file)
@@ -659,13 +659,18 @@ const TCHAR *NetObj::dbgGetParentList(TCHAR *szBuffer)
 void NetObj::calculateCompoundStatus(BOOL bForcedRecalc)
 {
    UINT32 i;
-   int iMostCriticalAlarm, iMostCriticalStatus, iCount, iStatusAlg;
+   int iMostCriticalAlarm, iMostCriticalStatus, mostCriticalDCI, iCount, iStatusAlg;
    int nSingleThreshold, *pnThresholds, iOldStatus = m_iStatus;
    int nRating[5], iChildStatus, nThresholds[4];
 
    if (m_iStatus != STATUS_UNMANAGED)
    {
       iMostCriticalAlarm = GetMostCriticalStatusForObject(m_dwId);
+      if(Type() == OBJECT_NODE || Type() == OBJECT_MOBILEDEVICE || Type() == OBJECT_CLUSTER || Type() == OBJECT_ACCESSPOINT)
+      {
+         DataCollectionTarget *target = (DataCollectionTarget *)this;
+         mostCriticalDCI = target->getMostCriticalDCIStatus();
+      }
 
       LockData();
       if (m_iStatusCalcAlg == SA_CALCULATE_DEFAULT)
@@ -750,6 +755,19 @@ void NetObj::calculateCompoundStatus(BOOL bForcedRecalc)
          }
       }
 
+      //If DCI status is calculated for object apply DCI object's statud
+      if(mostCriticalDCI != STATUS_UNKNOWN)
+      {
+         if (m_iStatus == STATUS_UNKNOWN)
+         {
+            m_iStatus = mostCriticalDCI;
+         }
+         else
+         {
+            m_iStatus = max(m_iStatus, mostCriticalDCI);
+         }
+      }
+
       // Query loaded modules for object status
       ENUMERATE_MODULES(pfCalculateObjectStatus)
       {
index 32498c7..703d604 100644 (file)
@@ -242,7 +242,7 @@ public:
    virtual void deleteFromDB();
    virtual bool loadThresholdsFromDB();
 
-   virtual bool processNewValue(time_t nTimeStamp, void *value);
+   virtual bool processNewValue(time_t nTimeStamp, void *value, bool *updateStatus);
    virtual void processNewError();
 
        virtual bool hasValue();
@@ -264,6 +264,7 @@ public:
        WORD getSnmpPort() { return m_snmpPort; }
    bool isShowOnObjectTooltip() { return (m_flags & DCF_SHOW_ON_OBJECT_TOOLTIP) ? true : false; }
    bool isAggregateOnCluster() { return (m_flags & DCF_AGGREGATE_ON_CLUSTER) ? true : false; }
+       bool isStatusDCO() {return (m_flags & DCF_CALCULATE_NODE_STATUSS) ? true : false; }
    int getAggregationFunction() { return DCF_GET_AGGREGATION_FUNCTION(m_flags); }
    Template *getNode() { return m_pNode; }
 
@@ -364,7 +365,7 @@ public:
        void filterInstanceList(StringMap *instances);
        void expandInstance();
 
-   virtual bool processNewValue(time_t nTimeStamp, void *value);
+   virtual bool processNewValue(time_t nTimeStamp, void *value, bool *updateStatus);
    virtual void processNewError();
 
        virtual bool hasValue();
@@ -560,7 +561,7 @@ public:
    virtual BOOL saveToDB(DB_HANDLE hdb);
    virtual void deleteFromDB();
 
-   virtual bool processNewValue(time_t nTimeStamp, void *value);
+   virtual bool processNewValue(time_t nTimeStamp, void *value, bool *updateStatus);
    virtual void processNewError();
 
    virtual void createMessage(CSCPMessage *pMsg);
index 3949ac1..682e295 100644 (file)
@@ -810,6 +810,7 @@ public:
    virtual void unbindFromTemplate(UINT32 dwTemplateId, BOOL bRemoveDCI);
 
    virtual bool isEventSource();
+   int getMostCriticalDCIStatus();
 };
 
 /**
index 78eec0f..6a958d8 100644 (file)
@@ -20,7 +20,6 @@ page.name.Transformation = Transformation
 page.name.Thresholds = Thresholds
 page.name.Columns = Columns
 page.name.InstanceDiscovery = Instance Discovery
-page.name.NetworkMaps = Network Maps
 page.name.Filter = Filter
 page.name.Cluster = Cluster
 tab.name.LastValues = Last Values
index 0107b99..7801234 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=Vlastn\u00ED pl\u00E1n
 page.name.Filter=Filtr
 page.name.General=Hlavn\u00ED
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=S\u00ED\u0165ov\u00E9 mapy
 page.name.Thresholds=Prahov\u00E9 hodnoty
 page.name.Transformation=Transformace
 tab.name.LastValues=Posledn\u00ED hodnoty
index bedb5cd..caebc64 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=Custom Schedule
 page.name.Filter=Filter
 page.name.General=General
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=Network Maps
 page.name.Thresholds=Thresholds
 page.name.Transformation=Transformation
 tab.name.LastValues=Last Values
index 441135e..9b154a2 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=\u041d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\
 page.name.Filter=\u0424\u0438\u043b\u044c\u0442\u0440
 page.name.General=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435
 page.name.InstanceDiscovery=\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430
-page.name.NetworkMaps=\u041a\u0430\u0440\u0442\u044b \u0441\u0435\u0442\u0438
 page.name.Thresholds=\u041f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
 page.name.Transformation=\u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445
 tab.name.LastValues=\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f
index bedb5cd..caebc64 100644 (file)
@@ -24,7 +24,6 @@ page.name.CustomSchedule=Custom Schedule
 page.name.Filter=Filter
 page.name.General=General
 page.name.InstanceDiscovery=Instance Discovery
-page.name.NetworkMaps=Network Maps
 page.name.Thresholds=Thresholds
 page.name.Transformation=Transformation
 tab.name.LastValues=Last Values
index 5372d69..04a8a3b 100644 (file)
            </enabledWhen>
         </page>
         <page
-              class="org.netxms.ui.eclipse.datacollection.propertypages.NetworkMaps"
+              class="org.netxms.ui.eclipse.datacollection.propertypages.OtherOptions"
               id="org.netxms.ui.eclipse.datacollection.propertypages.NetworkMaps#110"
-              name="%page.name.NetworkMaps">
+              name="Other options">
            <enabledWhen>
               <instanceof
                     value="org.netxms.client.datacollection.DataCollectionItem">
@@ -33,11 +33,12 @@ import org.netxms.ui.eclipse.tools.WidgetHelper;
  * @author Victor
  *
  */
-public class NetworkMaps extends PropertyPage
+public class OtherOptions extends PropertyPage
 {
        private DataCollectionObjectEditor editor;
        private DataCollectionItem dci;
        private Button checkShowOnTooltip;
+   private Button checkCalculateStatus;
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -59,6 +60,10 @@ public class NetworkMaps extends PropertyPage
       checkShowOnTooltip = new Button(dialogArea, SWT.CHECK);
       checkShowOnTooltip.setText(Messages.get().NetworkMaps_ShowInTooltips);
       checkShowOnTooltip.setSelection(dci.isShowOnObjectTooltip());
+
+      checkCalculateStatus = new Button(dialogArea, SWT.CHECK);
+      checkCalculateStatus.setText("Use this DCI for node status calculation");
+      checkCalculateStatus.setSelection(dci.isUsedForNodeStatusCalculation());
       
                return dialogArea;
        }
@@ -71,6 +76,7 @@ public class NetworkMaps extends PropertyPage
        protected void applyChanges(final boolean isApply)
        {
                dci.setShowOnObjectTooltip(checkShowOnTooltip.getSelection());
+      dci.setUsedForNodeStatusCalculation(checkCalculateStatus.getSelection());
                editor.modify();
        }
 
@@ -101,5 +107,6 @@ public class NetworkMaps extends PropertyPage
        {
                super.performDefaults();
                checkShowOnTooltip.setSelection(false);
+               checkCalculateStatus.setSelection(false);
        }
 }