private IEnumerable <DecisionModel> FetchAll() { var decisionBuilders = new List <DecisionModelRssItemConverter>(); foreach (Domaine domaine in this._channels) { DomaineRssFeed feed = this._channels.Find(domaine); foreach (RssItem item in feed.GetSomething(channel => channel.Items())) { DecisionModelRssItemConverter builder = decisionBuilders .SingleOrDefault(decisionBuilder => decisionBuilder.DesignatesSameDecision(item)); if (builder == null) { builder = new DecisionModelRssItemConverter(item); decisionBuilders.Add(builder); } builder.Domaines.Add(domaine); } } return(decisionBuilders.Select(builder => builder.BuildModel())); }
public DomaineFeedCollection(IDirectory directory, Uri baseUri) { this._directory = directory; this._baseUri = baseUri; this._cache = DomaineRssFeed.ReadDirectory(directory) .ToDictionary(feed => feed.Domaine, feed => feed); }
private void StoreDecision(DecisionModel decision) { var converter = new DecisionModelRssItemConverter(decision); RssItem item = converter.BuildItem(); this._channels.RemoveAllOccurences(decision); foreach (Domaine decisionDomaine in decision.Domaines) { DomaineRssFeed feed = this._channels.Find(decisionDomaine); feed.DoSomething(channel => { channel.Add(item); }); } }