/////////////////////////////////////////////////////////////////////// public AstronomicalData GetAstroData(String woeid, DateTime date) { _logger.Debug("Get astronomy data: {0} @ {1:yyyy-MM-dd}", woeid, date); var geo = _geodata.GetGeoData(woeid); if (geo == null) { return null; } // depending on the fields we end up with in AstroData, we may // not want to cache based on date; e.g. current sun position... // in fact, there may be a case not to cache this at all --jah var ww = new WhenAndWhere { When = date.Date, Where = geo }; AstronomicalData data = null; lock (_cache) { if (Settings.Default.AstroData_CacheEnabled) { data = _cache[ww]; } if (data == null) { data = GetNewData(ww); _cache[ww] = data; } } if (data == null) { _logger.Warn("Update failed: {0}", woeid); } return data; }
/////////////////////////////////////////////////////////////////////// private AstronomicalData GetNewData(WhenAndWhere ww) { _logger.Info("Retrieving current astro data: {0}", ww); AstronomicalData data = null; try { data = GeoNames.GetAstroData(ww.Where, ww.When); _logger.Debug("New data received: {0}", ww); } catch (Exception e) { _logger.Warn(e); } return data; }