Ejemplo n.º 1
0
        public async Task <HistoryExtract> BuildAsync(
            string componentUid,
            string statusUid,
            DateTime rangeStart,
            DateTime rangeEnd,
            TimeSpan?interval,
            HistoryExtractDataType dataType,
            int maxEntityCount,
            CancellationToken cancellationToken)
        {
            if (componentUid == null)
            {
                throw new ArgumentNullException(nameof(componentUid));
            }
            if (statusUid == null)
            {
                throw new ArgumentNullException(nameof(statusUid));
            }

            var entities = await _repository.GetComponentStatusValues(new ComponentStatusFilter
            {
                ComponentUid   = componentUid,
                StatusUid      = statusUid,
                RangeStart     = rangeStart,
                RangeEnd       = rangeEnd,
                MaxEntityCount = maxEntityCount
            }, cancellationToken).ConfigureAwait(false);

            var historyExtract = new HistoryExtract
            {
                ComponentUid = componentUid,
                StatusUid    = statusUid,
                EntityCount  = entities.Count
            };

            if (dataType == HistoryExtractDataType.Text)
            {
                historyExtract.DataPoints.AddRange(GenerateTextBasedDataPoints(entities, rangeStart, rangeEnd));
            }
            else if (dataType == HistoryExtractDataType.Number)
            {
                historyExtract.DataPoints.AddRange(GenerateNumberBasedDataPoints(entities, rangeStart, rangeEnd, interval));
            }
            else
            {
                throw new NotSupportedException();
            }

            return(historyExtract);
        }
Ejemplo n.º 2
0
        public async Task <HistoryExtract> BuildAsync(
            string path,
            DateTime rangeStart,
            DateTime rangeEnd,
            TimeSpan?interval,
            HistoryExtractDataType dataType,
            int maxEntityCount,
            CancellationToken cancellationToken)
        {
            if (path == null)
            {
                throw new ArgumentNullException(nameof(path));
            }

            var entities = await _repository.Read(new HistoryReadOperation
            {
                Path           = path,
                RangeStart     = rangeStart,
                RangeEnd       = rangeEnd,
                MaxEntityCount = maxEntityCount
            }, cancellationToken).ConfigureAwait(false);

            var historyExtract = new HistoryExtract
            {
                Path        = path,
                EntityCount = entities.Count
            };

            if (dataType == HistoryExtractDataType.Text)
            {
                historyExtract.DataPoints.AddRange(GenerateTextBasedDataPoints(entities, rangeStart, rangeEnd));
            }
            else if (dataType == HistoryExtractDataType.Number)
            {
                historyExtract.DataPoints.AddRange(GenerateNumberBasedDataPoints(entities, rangeStart, rangeEnd, interval));
            }
            else
            {
                throw new NotSupportedException();
            }

            return(historyExtract);
        }
Ejemplo n.º 3
0
        public Task <HistoryExtract> BuildHistoryExtractAsync(string componentUid, string statusUid, DateTime rangeStart, DateTime rangeEnd, TimeSpan?interval, HistoryExtractDataType dataType, int maxRowCount, CancellationToken cancellationToken)
        {
            if (componentUid == null)
            {
                throw new ArgumentNullException(nameof(componentUid));
            }
            if (statusUid == null)
            {
                throw new ArgumentNullException(nameof(statusUid));
            }

            if (_repository == null)
            {
                return(null);
            }

            return(new HistoryExtractBuilder(_repository).BuildAsync(componentUid, statusUid, rangeStart, rangeEnd, interval, dataType, maxRowCount, cancellationToken));
        }
Ejemplo n.º 4
0
        public HistoryExtract BuildHistoryExtract(string componentUid, string statusUid, DateTime rangeStart, DateTime rangeEnd, TimeSpan interval, HistoryExtractDataType dataType)
        {
            var historyExtract = new HistoryExtractBuilder(_repository).Build(componentUid, statusUid, rangeStart, rangeEnd, interval, dataType);

            for (var i = historyExtract.DataPoints.Count - 1; i > 0; i--)
            {
            }

            return(historyExtract);
        }
Ejemplo n.º 5
0
        public HistoryExtract Build(string componentUid, string statusUid, DateTime rangeStart, DateTime rangeEnd, TimeSpan interval, HistoryExtractDataType dataType)
        {
            if (componentUid == null)
            {
                throw new ArgumentNullException(nameof(componentUid));
            }
            if (statusUid == null)
            {
                throw new ArgumentNullException(nameof(statusUid));
            }

            var entities = _repository.GetComponentStatusValues(componentUid, statusUid, rangeStart, rangeEnd);

            var historyExtract = new HistoryExtract
            {
                ComponentUid = componentUid,
                StatusUid    = statusUid,
                EntityCount  = entities.Count
            };

            while (rangeStart <= rangeEnd)
            {
                var dataPoint = new HistoryExtractDataPoint
                {
                    Timestamp = rangeStart
                };

                var entity = entities.FirstOrDefault(e => e.RangeStart <= dataPoint.Timestamp && e.RangeEnd >= dataPoint.Timestamp);
                if (entity != null)
                {
                    if (dataType == HistoryExtractDataType.Number)
                    {
                        dataPoint.Value = Convert.ToDouble(entity.Value, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        dataPoint.Value = entity.Value;
                    }
                }

                historyExtract.DataPoints.Add(dataPoint);

                rangeStart += interval;
            }

            return(historyExtract);
        }