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()); }
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, }); }
private List <TimeSeriesUniqueIds> GetChangedTimeSeries(List <TimeSeriesUniqueIds> allChangedTimeSeries) { return(!TimeSeries.Any() ? allChangedTimeSeries : allChangedTimeSeries.Where(ts => TimeSeries.ContainsKey(ts.UniqueId)).ToList()); }