Пример #1
0
        private string GetFilterSummary(TimeSeriesUniqueIdListServiceRequest request)
        {
            var sb = new StringBuilder();

            sb.Append(string.IsNullOrEmpty(request.LocationIdentifier)
                ? "all locations"
                : $"location '{request.LocationIdentifier}'");

            var filters = new List <string>();

            if (request.Publish.HasValue)
            {
                filters.Add($"Publish={request.Publish}");
            }

            if (!string.IsNullOrEmpty(request.Parameter))
            {
                filters.Add($"Parameter={request.Parameter}");
            }

            if (!string.IsNullOrEmpty(request.ComputationIdentifier))
            {
                filters.Add($"ComputationIdentifier={request.ComputationIdentifier}");
            }

            if (!string.IsNullOrEmpty(request.ComputationPeriodIdentifier))
            {
                filters.Add($"ComputationPeriodIdentifier={request.ComputationPeriodIdentifier}");
            }

            if (!string.IsNullOrEmpty(request.ChangeEventType))
            {
                filters.Add($"ChangeEventType={request.ChangeEventType}");
            }

            if (request.ExtendedFilters != null && request.ExtendedFilters.Any())
            {
                filters.Add($"ExtendedFilters={string.Join(", ", request.ExtendedFilters.Select(f => $"{f.FilterName}={f.FilterValue}"))}");
            }

            if (filters.Any())
            {
                sb.Append($" with {string.Join(" and ", filters)}");
            }

            sb.Append(" for ");

            sb.Append(Context.MaximumChangeCount > 0
                ? $"up to {"change".ToQuantity(Context.MaximumChangeCount)}"
                : "changes");

            sb.Append(TimeSeries.Any() ? $" in {TimeSeries.Count}" : " in any");

            sb.Append(" time-series");

            return(sb.ToString());
        }
Пример #2
0
        private TimeSeriesUniqueIdListServiceRequest CreateFilterRequest()
        {
            var locationIdentifier = Context.LocationIdentifier;

            if (!string.IsNullOrEmpty(locationIdentifier))
            {
                var locationDescription = Client.Publish
                                          .Get(new LocationDescriptionListServiceRequest {
                    LocationIdentifier = locationIdentifier
                })
                                          .LocationDescriptions
                                          .SingleOrDefault();

                if (locationDescription == null)
                {
                    throw new ExpectedException($"Location '{locationIdentifier}' does not exist.");
                }

                locationIdentifier = locationDescription.Identifier;
            }

            TimeSeries = Context.TimeSeries.Select(GetTimeSeriesUniqueId)
                         .ToDictionary(
                uniqueId => uniqueId,
                GetTimeSeriesDescription);

            if (TimeSeries.Any())
            {
                var firstTimeSeries = TimeSeries.Values.First();

                if (TimeSeries.Values.All(ts => ts.LocationIdentifier == firstTimeSeries.LocationIdentifier))
                {
                    locationIdentifier = firstTimeSeries.LocationIdentifier;
                }

                if (string.IsNullOrEmpty(Context.Parameter) && TimeSeries.Values.All(ts => ts.Parameter == firstTimeSeries.Parameter))
                {
                    Context.Parameter = firstTimeSeries.Parameter;
                }

                if (!Context.Publish.HasValue && TimeSeries.Values.All(ts => ts.Publish == firstTimeSeries.Publish))
                {
                    Context.Publish = firstTimeSeries.Publish;
                }
            }

            if (!string.IsNullOrEmpty(locationIdentifier) && TimeSeries.Values.Any(ts => ts.LocationIdentifier != locationIdentifier))
            {
                locationIdentifier = null;
            }

            return(new TimeSeriesUniqueIdListServiceRequest
            {
                LocationIdentifier = locationIdentifier,
                ChangeEventType = Context.ChangeEventType?.ToString(),
                Publish = Context.Publish,
                Parameter = Context.Parameter,
                ComputationIdentifier = Context.ComputationIdentifier,
                ComputationPeriodIdentifier = Context.ComputationPeriodIdentifier,
                ExtendedFilters = Context.ExtendedFilters.Any() ? Context.ExtendedFilters : null,
            });
        }
Пример #3
0
 private List <TimeSeriesUniqueIds> GetChangedTimeSeries(List <TimeSeriesUniqueIds> allChangedTimeSeries)
 {
     return(!TimeSeries.Any()
         ? allChangedTimeSeries
         : allChangedTimeSeries.Where(ts => TimeSeries.ContainsKey(ts.UniqueId)).ToList());
 }