public static IEnumerable <Forecast> Load(Station station, IAbstractDataSource source, IEnumerable <DateTime> validTimeDates) { IEnumerable <Forecast> result = new List <Forecast>(); if (IsSourceDatabaseExists(source, station)) { List <string> patterns = validTimeDates.Select(dt => GetChunkStartMarker(dt)).ToList(); MemoryStream ms = null; string path = GetSourceFilename(source, station); try { ActualizeCache(path); ms = new MemoryStream(cache[path]); using (var sr = new StreamReader(ms)) { result = (ReadAllChunksOfPatterns(sr, patterns)); } } catch (Exception e) { Trace.TraceError("Loading forecast {0}: {1}", path, e.Message); OnLoadingFailed(station, source, validTimeDates, e.Message); } finally { if (ms != null) { ms.Dispose(); } } } return(result); }
public LoadingFailedEventArgs(Station station, IAbstractDataSource source, IEnumerable <DateTime> dates, string message) { this.station = station; this.source = source; this.message = message; this.dates = dates; }
public Weather(Station station, IAbstractDataSource source, IEnumerable <Forecast> forecasts) { Station = station; Source = source; Forecasts = forecasts; FetchedTime = DateTime.Now; }
public static OxyColor OxyColor(this IAbstractDataSource source) { OxyColor res; if (colorsBySource.TryGetValue(source.Id, out res)) { return(res); } return(OxyPlot.OxyColor.FromRgb(1, 1, 1)); }
private void OnFetchingSucceeded(Station station, IAbstractDataSource source, DateTime fetchedTime) { EventHandler <FetchingSucceededEventArgs> handler = this.FetchingSucceeded; if (handler != null) { handler(this, new FetchingSucceededEventArgs(station, source, fetchedTime)); } Interlocked.Increment(ref fetchingsSucceed); }
private void OnFetchingFailed(Station station, IAbstractDataSource source, string message) { EventHandler <FetchingFailedEventArgs> handler = this.FetchingFailed; if (handler != null) { handler(this, new FetchingFailedEventArgs(station, source, message)); } Interlocked.Increment(ref fetchingsFailed); }
public DateTime GetStationLastFetchTime(IAbstractDataSource source, Station station) { Dictionary <string, DateTime> sourceTimes; if (!_lastFetchTimes.TryGetValue(station.Id, out sourceTimes)) { sourceTimes = SourcesDatabase.LoadLastFetchTimes(station); if (sourceTimes.Count == 0) { return(DateTime.MinValue); } else { _lastFetchTimes[station.Id] = sourceTimes; } } return(sourceTimes[source.Id]); }
private void AddDataSeries(ParameterTimeSeries data, IAbstractDataSource source, OxyColor color) { string timeRelation = GetRelationPreposition(data.GroupingTimeKind, true); var lineSerie = new LineSeries { StrokeThickness = 2, Color = color, MarkerType = MarkerType.Circle, MarkerSize = 4, MarkerFill = color, CanTrackerInterpolatePoints = false, TrackerFormatString = source.Name + "\r\n{0}\r\n{1} {2:" + targetDateTimeFormat + "}\r\n{3}: {4} " + ParametersFactory.GetUnit(data.Type), Title = string.Format("{0} {1} {2:" + (source is ForecastDataSource ? groupingDateTimeFormat : groupingDateFormat) + "}", data.Length, timeRelation, data.GroupingTime), Smooth = false, }; for (int i = 0; i < data.Length; i++) { lineSerie.Points.Add(new DataPoint(DateTimeAxis.ToDouble(data.TargetTimes[i]), data.RealValues[i])); } PlotModel.Series.Add(lineSerie); }
private static void OnLoadingFailed(Station station, IAbstractDataSource source, IEnumerable <DateTime> dates, string message) { LoadingFailed(null, new LoadingFailedEventArgs(station, source, dates, message)); }
private static void OnSavingFailed(Station station, IAbstractDataSource source, string message) { SavingFailed(null, new SavingFailedEventArgs(station, source, message)); }
private static string GetSourceFilename(IAbstractDataSource source, Station station) { return(StationsDatabase.GetStationDir(station) + source.Id + filesExtension); }
private static bool IsSourceDatabaseExists(IAbstractDataSource source, Station station) { return(new FileInfo(GetSourceFilename(source, station)).Exists); }
public SavingFailedEventArgs(Station station, IAbstractDataSource source, string message) { this.station = station; this.source = source; this.message = message; }
public LastFetchTimeChangedEventArgs(IAbstractDataSource source, Station station) { this.station = station; this.source = source; }
public FetchingSucceededEventArgs(Station station, IAbstractDataSource source, DateTime time) { this.station = station; this.source = source; this.time = time; }
private static DateTime[] GetValidTimeDates(DateTime date, GivenForecastTimeKind mode, IAbstractDataSource source) { DateTime[] validTimeDates = null; if (mode == GivenForecastTimeKind.Valid || source is RealDataSource) { validTimeDates = new DateTime[1] { date }; } else if (mode == GivenForecastTimeKind.Created) { int daysForward = (int)Math.Ceiling(((ForecastDataSource)source).PredictionDepth.TotalDays); validTimeDates = new DateTime[daysForward]; for (int i = 0; i < daysForward; i++) { validTimeDates[i] = date.AddDays(i); } } else { throw new ArgumentOutOfRangeException("mode", "Unknown kind of given forecast time."); } return(validTimeDates); }