Ejemplo n.º 1
0
        protected ObjectColor GetColor(IMetricTypeCacheReadObject metricType, IMetricCacheReadObject metric, double?value)
        {
            var conditionRed    = metric.ConditionRed ?? metricType.ConditionRed;
            var conditionYellow = metric.ConditionYellow ?? metricType.ConditionYellow;
            var conditionGreen  = metric.ConditionGreen ?? metricType.ConditionGreen;

            var color = metric.ElseColor ?? metricType.ElseColor ?? ObjectColor.Gray;

            var parameters = new[] { new KeyValuePair <string, double?>("value", value) };

            if (ConditionChecker.Check(parameters, conditionRed))
            {
                color = ObjectColor.Red;
            }
            else if (ConditionChecker.Check(parameters, conditionYellow))
            {
                color = ObjectColor.Yellow;
            }
            else if (ConditionChecker.Check(parameters, conditionGreen))
            {
                color = ObjectColor.Green;
            }

            return(color);
        }
Ejemplo n.º 2
0
 public static MetricInfo GetMetricInfo(
     IMetricCacheReadObject metric,
     IMetricTypeCacheReadObject metricType,
     IBulbCacheReadObject bulb)
 {
     if (metric == null)
     {
         return(null);
     }
     if (metricType == null)
     {
         throw new ArgumentNullException("metricType");
     }
     if (bulb == null)
     {
         throw new ArgumentNullException("bulb");
     }
     return(new MetricInfo()
     {
         ComponentId = metric.ComponentId,
         SystemName = metricType.SystemName,
         Value = metric.Value,
         BeginDate = metric.BeginDate,
         ActualDate = metric.ActualDate,
         Status = bulb.Status
     });
 }
Ejemplo n.º 3
0
        protected IBulbCacheReadObject UpdateEnableOrDisableStatusData(IMetricCacheReadObject metric)
        {
            var statusService         = Context.BulbService;
            IBulbCacheReadObject data = null;
            var processDate           = DateTime.Now;

            if (metric.CanProcess)
            {
                var unknownSignal = BulbSignal.CreateUnknown(metric.AccountId, processDate);
                data = statusService.SetSignal(metric.StatusDataId, unknownSignal);
            }
            else
            {
                var disableSignal = BulbSignal.CreateDisable(metric.AccountId, processDate);
                data = statusService.SetSignal(metric.StatusDataId, disableSignal);
            }
            //Context.ComponentService.CalculateAllStatuses(metric.AccountId, metric.ComponentId);
            return(data);
        }
Ejemplo n.º 4
0
        public void EnableMetric(Guid accountId, Guid metricId)
        {
            var cache = new AccountCache(accountId);
            IMetricCacheReadObject metricRead = null;

            // изменим метрику
            using (var metric = cache.Metrics.Write(metricId))
            {
                metricRead    = metric;
                metric.Enable = true;
                metric.BeginSave();
            }

            // обновим колбаски
            var statusService = Context.BulbService;
            var processDate   = DateTime.Now;
            var unknownSignal = BulbSignal.CreateUnknown(accountId, processDate);
            var data          = statusService.SetSignal(metricRead.StatusDataId, unknownSignal);

            Context.ComponentService.CalculateAllStatuses(accountId, metricRead.ComponentId);
            // return data;
        }
Ejemplo n.º 5
0
        public void DisableMetric(Guid accountId, SetMetricDisableRequestData requestData)
        {
            if (requestData == null)
            {
                throw new ArgumentNullException("requestData");
            }
            var metricId = requestData.MetricId;
            var cache    = new AccountCache(accountId);
            IMetricCacheReadObject metricRead = null;

            // изменим метрику
            using (var metric = cache.Metrics.Write(metricId))
            {
                metricRead            = metric;
                metric.Enable         = false;
                metric.DisableToDate  = requestData.ToDate;
                metric.DisableComment = requestData.Comment;
                metric.BeginSave();
            }

            // обновим колбаски
            UpdateEnableOrDisableStatusData(metricRead);
        }
Ejemplo n.º 6
0
        protected IMetricCacheReadObject GetActualMetricInternal(IMetricCacheReadObject metric, DateTime processDate)
        {
            if (metric == null)
            {
                throw new ArgumentNullException("metric");
            }

            // обновим галочку "включено"
            if (metric.Enable == false &&
                metric.DisableToDate.HasValue &&
                metric.DisableToDate < processDate)
            {
                using (var metricWrite = AllCaches.Metrics.Write(metric))
                {
                    metricWrite.Enable = true;
                    metricWrite.BeginSave();
                    metric = metricWrite;
                }
            }

            var statusService = Context.BulbService;
            var data          = statusService.GetRaw(metric.AccountId, metric.StatusDataId);

            // если надо выключить
            if (metric.CanProcess == false && data.Status != MonitoringStatus.Disabled)
            {
                UpdateEnableOrDisableStatusData(metric);
                return(metric);
            }

            // если надо включить
            if (metric.CanProcess && data.Status == MonitoringStatus.Disabled)
            {
                UpdateEnableOrDisableStatusData(metric);
                return(metric);
            }

            // если значение актуально, вернем его сразу
            if (data.Actual(processDate))
            {
                return(metric);
            }

            // значение метрики не актуальное
            // сохраняем пробел
            using (var metricWrite = AllCaches.Metrics.Write(metric))
            {
                var metricType = AllCaches.MetricTypes.Read(new AccountCacheRequest()
                {
                    AccountId = metric.AccountId,
                    ObjectId  = metric.MetricTypeId
                });
                processDate = metricWrite.ActualDate; // чтобы НЕ было пробела
                var actualDate    = EventHelper.InfiniteActualDate;
                var noSignalColor = metricWrite.NoSignalColor ?? metricType.NoSignalColor ?? ObjectColor.Red;
                var status        = MonitoringStatusHelper.Get(noSignalColor);
                SetMetricValue(metricType, metricWrite, null, processDate, actualDate, status, "Нет сигнала", false);
                metricWrite.BeginSave();
                return(metric);
            }
        }